6

I downloaded latest release of ANTLR - 4.2.2 (antlr-4.2.2-complete.jar) When I use it to generate parsers for grammar file Java.g4 it prints me some warnings like: "Java.g4:525:16: rule 'expression' contains an 'assoc' terminal option in an unrecognized location"

Files was generated but didn't compile

Previous version works fine.

Whats wrong?

  • This problem (with the `Java.g4` file that comes with the source code zip file for the book [The Definitive ANTLR 4 Reference](https://pragprog.com/titles/tpantlr2/the-definitive-antlr-4-reference/) (The Pragmatic Bookshelf, January 2013)) persists, amazingly enough, deep into 2022. There are also pretty ugly lines in the example code and deprecation warnings. That book needs a "revised edition". – David Tonhofer Aug 11 '22 at 21:01

1 Answers1

14

The <assoc> should now be moved left of the "expression".

It must be placed always right to the surrounding |:

Look here: https://theantlrguy.atlassian.net/wiki/display/ANTLR4/Left-recursive+rules

 ...
 |   expression '&&' expression
    |   expression '||' expression
    |   expression '?' expression ':' expression
    |<assoc=right>   expression
        (   '='
        |   '+='
        |   '-='
        |   '*='
        |   '/='
        |   '&='
        |   '|='
        |   '^='
        |   '>>='
        |   '>>>='
        |   '<<='
        |   '%='
        )
        expression
Onur
  • 5,017
  • 5
  • 38
  • 54