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