我下载了最新版的ANTLR - 4.2.2(antlr-4.2.2-complete.jar) 当我使用它为语法文件Java.g4生成解析器时,它会打印出一些警告,例如: “Java.g4:525:16:规则'表达式'在无法识别的位置包含'assoc'终端选项”
文件已生成但未编译
以前的版本运行正常。
怎么了?
答案 0 :(得分:11)
<assoc>
现在应该移到“表达式”的左侧。
必须始终将其放置在周围|
:
请看这里:https://theantlrguy.atlassian.net/wiki/display/ANTLR4/Left-recursive+rules
...
| expression '&&' expression
| expression '||' expression
| expression '?' expression ':' expression
|<assoc=right> expression
( '='
| '+='
| '-='
| '*='
| '/='
| '&='
| '|='
| '^='
| '>>='
| '>>>='
| '<<='
| '%='
)
expression