2014-04-29 60 views
4

我下載了最新版本的ANTLR-4.2.2(antlr-4.2.2-complete.jar) 當我用它來爲語法文件Java.g4生成解析器時打印我像一些警告: 「Java.g4:525:16:規則‘表達’包含無法識別的位置的‘assoc命令’終端選」antlr 4.2.2輸出到控制檯警告(157)

文件生成,但沒有編譯

以前版本工作正常。

怎麼了?

回答

11

<assoc>現在應該移動左「表達」的。

必須始終放在右周邊|

看吧:https://theantlrguy.atlassian.net/wiki/display/ANTLR4/Left-recursive+rules

... 
| expression '&&' expression 
    | expression '||' expression 
    | expression '?' expression ':' expression 
    |<assoc=right> expression 
     ( '=' 
     | '+=' 
     | '-=' 
     | '*=' 
     | '/=' 
     | '&=' 
     | '|=' 
     | '^=' 
     | '>>=' 
     | '>>>=' 
     | '<<=' 
     | '%=' 
     ) 
     expression