在规则中expr : expr '<' expr | ...;
,ANTLR解析器将接受类似的表达式1 < 2 < 3(并构造与关联括号相对应的左关联树)(1 < 2) < 3.
您可以告诉ANTLR将运算符视为右关联,例如
expr : expr '<'<assoc=right> expr | ...;
Run Code Online (Sandbox Code Playgroud)
产生解析树1 < (2 < 3).
然而,在许多语言中,关系运算符非缔合,即,表达1 < 2 < 3被禁止.这可以在YACC及其派生中指定.
它也可以在ANTLR中指定吗?例如,asexpr : expr '<'<assoc=no> expr | ...;
到目前为止,我无法在ANTLR4书中找到任何内容.
antlr4 ×1