1.后缀表达式(逆波兰式)
我们平时写的算术表达式都算中缀表达式,运算符号在式子中间,
(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。
与前缀表达式(例:+ 3 4)或后缀表达式(例:3 4 +)相比,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。
与前缀或后缀记法不同的是,中缀记法中括号是必需的。计算过程中必须用括号将操作符和对应的操作数括起来,用于指示运算的次序。
然后
后缀表达式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行
软考真题:
算术表达式“(a-b)*(c+d)”的后缀式是()。
a b - c d + *
是不是感觉so easy。。哼,这只是一个开始 -_-。
2.三地址码:也称为四元式,它和上面的逆波兰式都是编译过程中生成中间代码的一种表现形式,为什么要生成中间代码呢,大概是为了兼容性还有代码优化吧。
三地址码:操作符 操作数1 操作数2 操作结果。
(0-0 大概专业书没有好看的吧 0-0 没有最难看只有更难看 -_-)
表达式语法树后缀形式,只需要对树进行后序遍历即可,后序遍历的结果,后序遍历就是左右根节点这样遍历。(不明白 -_- )
二叉树进行后序遍历,得出结果与该后缀表达式一致的则为与其等价的语法树。
(软考真 敷衍 希望软考老师不要看见这句话 -_- 大家牢牢记住下面这个式子,不管是后缀表达式还是语法树 它最少出现了2次了)
1 对于后缀表达式a b c - + d *(其中,-、+、*表示二元算术运算减、加、乘),与该后缀式等价的语法树为(23)。
与算术表达式“(a+(b-c))*d“ 对应的树是(21)。
看了语法树的表达式以后都不能好好学二叉树了,,,遇见语法树题目,大家跟着感觉走吧,剩下就是什么自动机了,,,,还有文法表达式。。
知道了0型文法,1型文法,2型文法,3型文法概念,有用么,没有很大用。0-0 气死了 不搞明白文法,自动机…… 暂时不玩别的 了,这个(垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾)*
如果你想了解文法 形式语言 自动机可以看看这个:第10章 第十一章 第十二章
有用么,,我只能说我又知道了一点点,那些编译原理书对新人太不友好了,一上来就是各种符号,还有图,树,各种数学推导大概以为我们都知道吧,我们要是知道还看你们干嘛,真是zz,,