SyntetNode + [Node]在treetop中的含义是什么? (红宝石)

时间:2012-04-12 23:17:21

标签: ruby treetop

我已经使用treetop定义了一个语法,并且大多数值都解析得很好,但有些看起来像

Response+Isupport1 offset=0, "...orted by this server" (host,space1,space2,nickname,space3):

......和......

...
SyntaxNode+Isupport0 offset=52, "WATCH=128 " (token,space):
    SyntaxNode+Token0 offset=52, "WATCH=128" (parameter,equals,value):
    ...

SyntaxNode + [Node]是什么意思?如何修复它才能正常工作?因为现在,这些节点具有SyntaxNode类,而不是Token类(这使它们成为通用类并且不符合我的需要)。

据我所知,定义(token space)+是造成这种情况的原因(不明白为什么)。

1 个答案:

答案 0 :(得分:0)

你的问题非常不完整,这可能就是为什么它没有得到解答,但作为编写产生上述显示的检查实现的人,我可能会解释清楚。 Treetop创建SyntaxNodes(或者如果您要求,则创建不同类的实例),然后使用包含您的代码的mixin模块对它们进行扩充。您可以将多个模块混合到一个节点中,因为只调用一个子规则的规则可以将新模块添加到该子规则返回的节点。每种类型都包含一个以{开头的代码块,您将获得一个新模块。每条检查线末尾的带括号的有趣方法列表来自这些混合。

但是,至于为什么你的语法不起作用,你必须用你的输入和预期的解析结果向我们展示才能得到答案。