在规则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 书中找到任何内容。