我有一个 antlr 语法,它的规则如下:
rule:
ID (COMMA ID)*
;
其中 ID 是用于匹配典型变量名称的词法分析器规则,逗号是匹配逗号的词法分析器规则。所以规则匹配一个或多个逗号分隔的变量
我想创建一棵看起来像这样的树:
ITEM
ID
ITEM
ID
....
其中 ITEM 是我在找到的每个 ID 前面插入的虚构节点。
我将如何用树重写语法做这样的事情?
通常,如果我想收集我会使用的所有 id
rule:
ID (COMMA ID)* -> ^(ITEM ID+)
;
但这会产生树:
ITEM
ID
ID
....
如果它作为实现语言和 ANTLR 3.1.3 很重要,我正在使用 C#