在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。
感謝您的幫助!
非常感謝!這真的很健康 –