Postfix (Polish Notation) 后缀表达式的转换

本文介绍了后缀表达式(也称波兰表达式)的概念,并详细阐述了从中缀表达式转为后缀表达式的算法。通过示例解释了算法过程,并指出后缀表达式在编译器中对于生成汇编代码的重要性,是编译器设计的基础步骤之一。
摘要由CSDN通过智能技术生成

我的编译器之旅 (1):

写在最前面:

研究编译原理纯粹是我的个人爱好。

大概1年半前的1个暑假,闲着在家没事做,读了1部分龙书,然后自己写了个Regular Expression(正则表达式)的分析器,有点类似Lex,根据定义的Regular Expression在内存中构建相对应的DFA。C++写的,今天看来那个时候的代码很幼稚。不过这对复习和巩固了词法分析起了很大帮助,由于自己动手写过,所以很多东西现在想来还可以很容易的推导出来。还好词法分析东西不多,最近一直在做语法分析器,也是自己的兴趣所好,感觉比较复杂。Biason和Yacc都是很不错的语法生成器。 编译器的Front-end主要就是这2部分,Back-end比较复杂。在MS的Training上也被我偶尔听到,VC++的back-end差不多已经10年没有修改过了。MS的Pheonix(凤凰)计划也正在推进中。很多学校加入了研究,如果这个成功那MS的地位将更加不可动摇了。好了不说那么多了,回忆开始。。。。。。

今天的主题是Post-order(后缀国内应该这样称呼吧)。先回顾一下Tree(树),遍历树的顺序一般有3种: Pre-order, In-order, Post-order国内应该分别称为:前缀,中缀,后缀。以二叉树为例, 对应它们的访问顺序分别为:VLR, LVR, LRV, 如果L代表左子树,V代表节点,R代表右子树的话。所以很容易看出一个表达式的正常顺序为LVR也就是中缀。如果我们以后缀的方式遍历树,那么我们最后得到的便是Post-order 也称 Polish Notation (波兰表达式).

算法 (1):

 输入中缀表达式

 输出后缀表达式

操作符Stack

如果字符是操作符(比如:+ - * /)则推入Stack。

(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值