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

时间:2013-11-10 08:41:35

标签: antlr4

我对表达式有一些规则:

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

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

1 个答案:

答案 0 :(得分:0)

回答这个问题的时间相当晚,但是......

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

exp:
    numeric |
    boolean

boolean:
    numeric '<' numeric;

numeric:
    numeric '*' numeric |
    numeric '+' numeric |
    2;

这将允许1 + 2 < 3但不包括1 < 2 < 3