0

我对表达式有一些规则:

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

我可以使用 for ex. 来指定“+”运算符的关联性<assoc=right>,但是如何指定表达式 like2 < 2 < 2应该是无效的?

4

1 回答 1

0

回答这个问题比较晚,但是,...

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

exp:
    numeric |
    boolean

boolean:
    numeric '<' numeric;

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

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

于 2013-11-24T19:39:53.033 回答