我对表达式有一些规则:
e:
e '*' e |
e '+' e |
e '<' e |
'2';
我可以使用<assoc=right>
来指定'+'运算符的关联性,但是如何指定像2 < 2 < 2
这样的表达式应该无效?
答案 0 :(得分:0)
回答这个问题的时间相当晚,但是......
处理的最佳方法似乎是将表达式拆分为两位,布尔表达式和数值表达式
exp:
numeric |
boolean
boolean:
numeric '<' numeric;
numeric:
numeric '*' numeric |
numeric '+' numeric |
2;
这将允许1 + 2 < 3
但不包括1 < 2 < 3
。