我有一个类似规则的antlr语法:
rule:
ID (COMMA ID)*
;
其中ID是用于匹配典型变量名称的词法分析器规则,逗号是与逗号匹配的词法分析器规则。因此规则匹配一个或多个逗号分隔变量
我想创建一个看起来像这样的树:
ITEM
ID
ITEM
ID
....
其中ITEM是我在每个找到的ID前插入的虚构节点。
如何使用树重写语法进行此类操作?
通常,如果我想收集所有ID,我只会使用
rule:
ID (COMMA ID)* -> ^(ITEM ID+)
;
但这会生成树:
ITEM
ID
ID
....
我正在使用C#,如果它与实现语言和ANTLR 3.1.3
一样重要答案 0 :(得分:1)
在提出问题后我很快意识到了。
要获得树形状,我需要使用重写语法,如下所示:
rule:
ID (COMMA ID)* -> ^(ITEM ID)+
;