在AST rewrite rule with " * +" in antlr处出现关于使用分组技术的AST重写规则的问题。 。ANTLR中复杂的AST重写规则
我有在ANTLR AST发生故障,再次:)这里是我的ANTLR代码:现在
start : noun1+=n (prep noun2+=n (COMMA noun3+=n)*)*
-> ^(NOUN $noun1) (^(PREP prep) ^(NOUN $noun2) ^(NOUN $noun3)*)*
;
n : 'noun1'|'noun2'|'noun3'|'noun4'|'noun5';
prep : 'and'|'in';
COMMA : ',';
,与输入: “名1和名2,noun3在noun4,noun5”,我得到了以下意外的AST:
与 “解析树” 在ANLRwork比较:
我认为$ noun3变量持有“COMMA noun3 + = n”中所有“n”的列表。因此,AST解析器^(NOUN $名词3)*将绘制所有“n”而不用说其中“n”实际上属于“准备”。
还有什么办法,可以使盲分离Blind在“(^(PREP PREP)^(名词$名2)^(名词$ noun3))”。我想要做的就是AST必须在ANTLRwork中使用“Parse Tree”精确绘制,而不使用标记COMMA。
感谢您的帮助!
非常感谢!这真的很健康 –