2012-03-05 170 views
9

语言语法树的输入是之一:渲染在浏览器

(1)树的括号内表示与诸如标记内部节点:

(S (N John) (VP (V hit) (NP (D the) (N ball)))) 

与输出:

enter image description here

(是否虚线以及标题是否存在并不重要)

或输入可以是:

(2)上的话一个包围没有标签,例如:

((John) ((hit) ((the) (ball)))) 

具有输出与上述相同的(没有内部标签。此时,正好树结构)。

输入的另一个组件是树是否标记为(1)或未标记为(2)。


我的问题:什么是呈现在JavaScript浏览器这些树的最佳方式(发展最快的时间)?一切都应该发生在客户端。

我想象一个简单的界面只有一个文本框(和一个单选按钮,指定它是否是一个标记的树),更改时,触发树渲染(如果输入没有任何语法错误)。

回答

4

实际上有服务器端库将括号内的表示转换为树,phpsyntaxtree
您可以使用javascript图形库(如jsdraw2d)重新实现它们,或使用HTML5画布在JavaScript上滚动您。

10 Best Javascript Drawing and Canvas Libraries

+0

谢谢,这是一个很棒的链接!这是我想要的几乎完美的替代品。我只是希望它也接受括号而不是方括号的输入。 – dsg 2012-03-06 07:31:41

9

我不知道该策略是做什么用的计算器自插头。如果这是违反规定,我很抱歉。

你见过我的解决方案吗? mshang.ca/syntree

这不完全是你想要的,但如果它有帮助,你可以自由地偷取code

+2

这太棒了。除括号外,你能否接受括号作为成分的标记?例如:我希望能够使用'(S(NP This)(VP(V is)(^ NP a wug)))'来渲染示例树。 – dsg 2012-03-09 20:36:17

+0

我不打算这样做,因为我不想介绍太多特殊字符。我认为方括号是语言学的常态。但是,我鼓励您分解项目并根据需要进行修改。 – mshang 2012-03-10 14:30:41

+0

到目前为止,您的解决方案是有帮助的,stackoverflow与此 – 2012-04-08 14:26:49