我正在使用antlr 'org.antlr:antlr4:4.9.2'
并遇到“悬空的其他”歧义问题;请参阅以下语法IfStat.g4
。
// file: IfStat.g4
grammar IfStat;
stat : 'if' expr 'then' stat
| 'if' expr 'then' stat 'else' stat
| expr
;
expr : ID ;
ID : LETTER (LETTER | [0-9])* ;
fragment LETTER : [a-zA-Z] ;
WS : [ \t\n\r]+ -> skip ;
我针对输入测试了这个语法"if a then if b then c else d"
。正如预期的那样,它被解析为“if a then (if b then c else d)”。ANTLR4 如何解决这种歧义?