В правиле expr : expr '<' expr | ...;
синтаксический анализатор ANTLR будет принимать выражения вида 1 < 2 < 3
(и строить левоассоциативные деревья, соответствующие скобкам (1 < 2) < 3
.
Вы можете указать ANTLR рассматривать операторы как правоассоциативные, например.
expr : expr '<'<assoc=right> expr | ...;
для получения деревьев синтаксического анализа 1 < (2 < 3)
.
Однако во многих языках реляционные операторы неассоциативны, т. е. выражение 1 < 2 < 3
запрещено. Это можно указать в YACC и его производных.
Можно ли это также указать в ANTLR? Например, как expr : expr '<'<assoc=no> expr | ...;
Мне пока не удалось найти что-то в книге ANTLR4.