当前位置:  开发笔记 > 编程语言 > 正文

使用二进制前缀,中缀和后缀运算符解析表达式

如何解决《使用二进制前缀,中缀和后缀运算符解析表达式》经验,为你挑选了0个好方法。

是否有可能解析一个表达式(没有歧义),它可以包含二进制前缀,二进制中缀和二进制后缀运算符(让我们假设所有符号都不同),它们之间具有优先权?例如:

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

(第二个是我在这种情况下需要的).我不能真正使用现有的解析器生成器或固定语法来操作数,因为运算符是动态加载的.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有