是否可以解析可以包含二进制前缀、二进制中缀和二进制后缀运算符(假设所有符号都不同)的表达式(没有歧义),并且它们之间具有优先级?例如:
a = 2 3 post+
b = pre+ 2 3*4
Thena
等于 5,因为=
它的优先级低于后缀post+
运算符,并且b
是14
. 我知道您可以使用运算符优先级解析或分流场来解析中缀表示的表达式,但这个问题对我来说似乎要复杂得多。
编辑:
允许使用括号,并且运算符的前后变化具有与中缀相同的优先级。
我想推出一个手写算法。
编辑2:
我所说的优先级是指消耗多少。例如这个:
a = 2 3 post+
可能导致这些 AST-s:
'=' has higher precedence than 'post+':
post+
/ \
= 3
/ \
a 2
'post+' has higher precedence than '=':
=
/ \
a post+
/ \
2 3
(第二个是我在这种情况下需要的)。我不能真正使用现有的解析器生成器或操作数的固定语法,因为运算符是动态加载的。