编译原理第八章作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
E E - a × E c + b E +
- E d a +
E + b c
问题: 、 的四元式不能省, 问题:1、第2个a+b的四元式不能省,删除时代码优化所作的 个 的四元式不能省 工作; 工作; 2、三元式内引用的序号和三元是式前面的序号不一致。 、三元式内引用的序号和三元是式前面的序号不一致。
第8章 中间源自文库码生成 章
1、给出下面表达式的逆波兰式(后缀式) 、给出下面表达式的逆波兰式(后缀式) (1)、a * (−b + c ) (2)、¬A ∨ ¬(C ∨ ¬D) (3)、a + b * (c + d / e)
ab @ c + *
A¬CD¬ ∨ ¬ ∨
abcde / + * +
问题: 、 问题:1、最好别随便调换两个操作数的先后顺序 2、逆波兰式已经定义了运算的先后顺序, 、逆波兰式已经定义了运算的先后顺序, 不需要再加(),()不允许出现在逆波兰式里。 (),()不允许出现在逆波兰式里 不需要再加(),()不允许出现在逆波兰式里。
四元式序列 (1) (+ , a , b, (2) (@ , t1 , ~ , (3) (+ , c , d , (4) (* , t2 , t3 , (5) (+ , a , b , (6) (+ , t5 , c , (7) (- , t4 , t6 , 作业中的问题: 作业中的问题:
t 1) t 2) t 3) t 4) t 5) t 6) t 7)
1、没有生成序号;为了和-(减号)区别,负号用 、没有生成序号;为了和 (减号)区别,负号用@ 2、生成顺序的问题:必须按语法成分的实际处理顺序 、生成顺序的问题: 生成 3、中间代码生成之后,再进行优化,所以 不能省略 、中间代码生成之后,再进行优化,所以(5)不能省略
练习: 练习: 将while A>B do if C<D then X:=Y+Z else X:=Y*Z 转化成四元式序列;假设当前的 转化成四元式序列;假设当前的nextstat=100
第2题 请将表达式 题 请将表达式-(a+b)*(c+d)-(a+b+c)分别表示成三 分别表示成三 元式和四元式序列 E
三元式序列 (1) ( + , a , (2) ( @ , (1) , (3) ( + , c , (4) ( * , (2) , (5) ( + , a , (6) ( + , (5) , (7) ( - , (4) , b ) ~ ) d ) (3) ) b ) c ) (6) )