我对表达式有一些规则:
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
。