ある規則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-book で何かを見つけることができませんでした。