ch8-1_语法制导概述-中间代码8.1-8.3_(张素琴).ppt

ch8-1_语法制导概述-中间代码8.1-8.3_(张素琴).ppt

ch8-1_语法制导概述-中间代码8.1-8.3_(张素琴).ppt

* 中间语言有四种形式: 逆波兰表示(后缀式) 三元式(三地址码)和树型表示 四元式 8.3.1 逆波兰表示 运算对象写在前,运算符在后,ab+,也称为后缀式。后缀式表示源程序的自然层次结构(表达式的计算次序),例如: a+b*c 后缀表示为abc*+ (a+b)*c后缀表示为ab+c* a:=b * c+b * -d后缀表示为abc*bd-*+:= 适合翻译表达式,不适合翻译控制语句。 * 表达式a*(b+c/d)# 运算对象入左边栈 运算符入 下边栈 出栈 逆波兰表示 abcd/+* 如果运算符栈顶元素的优先级大于或等于表达式中当前运算符的优先级,则栈顶元素退栈往左去,否则表达式中的当前运算符进运算符栈。最后左边是波兰表示。 运算符栈# 表达式的逆波兰表示的翻译过程 * 每遇左括号进运算符栈,起间隔作用,使括号内的运算符不与左括号之前的运算符比较优先级; 括号内的子表达式处理如上所述; 每遇到相匹配的右括号,结束括号内的子表达式的波兰表示形成过程,并且左右匹配的括号出栈,但是不进入波兰表示。 * 8.3.2 三地址代码表示 一般形式 x:=y op z 相应于a:=b*c+b*d三地址码表示: 三元式: (1) (*, b, c) (2) (*, b, d) (3) (+, (1), (2)) (4) (:

文档评论(0)

1亿VIP精品文档

相关文档