如何在 antlr4 中禁用运算符关联性



我对表达式有一些规则:

e:
  e '*' e |
  e '+' e |
  e '<' e |
  '2';

我可以指定"+"运算符的关联性,例如使用 <assoc=right>,但是我如何指定像 2 < 2 < 2 这样的表达式应该无效?

回答这个问题很晚,但是,...

最好的处理方法似乎是将表达式拆分为两个位,一个布尔表达式和一个数值表达式

exp:
    numeric |
    boolean
boolean:
    numeric '<' numeric;
numeric:
    numeric '*' numeric |
    numeric '+' numeric |
    2;

这将允许类似1 + 2 < 3但不允许1 < 2 < 3

最新更新