《编译原理》课程简介 (50).pdf
《《编译原理》课程简介 (50).pdf》由会员分享,可在线阅读,更多相关《《编译原理》课程简介 (50).pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理 C O M P I L A T I O N P RIN C IP LE 第七章 语义分析和中间代码产生7.2 中间代码形式7.2 中间代码形式源程序源程序词法分析器词法分析器语法分析器语法分析器语义分析器语义分析器中间代码生成器中间代码生成器代码优化器代码优化器代码生成器代码生成器目标程序目标程序出错管理器出错管理器符号表管理器符号表管理器7.2 中间代码形式中间代码:n介乎源语言与目标代码之间,比源语言简单,比目标代码复杂。n区分编译器的前端与后端,方便提出针对新机器的编译器。n可以设计针对中间代码的优化器。7.2 中间代码形式n何谓中间代码p源程序的一种内部表示,不依赖目标机的结
2、构,易于机械生成目标代码的中间表示。n为什么要此阶段?p逻辑结构清楚;利于不同目标机上实现同一种语言;利于进行与机器无关的优化;这些内部形式也能用于解释。n中间代码的几种形式p逆波兰式、三地址代码(包括三元式、间接三元式、四元式)等等。7.2 中间代码形式v逆波兰表示法n逆波兰表示法又称后缀式,它把运算量写在前面,而把运算符写在后面。n一般来说,一个K目运算符(K=1)Q,其K个运算量为e1,ek,则它们进行Q运算的逆波兰表示式为e1e2ekQn特点:只要知道每个运算符的目数,无论从哪端开始扫描,均能对后缀表达式进行唯一正确的分解。7.2 中间代码形式v后缀式的计算n自左至右扫描后缀式,每碰到
3、运算量就把它推进栈;每碰到k目运算符就把它作用于栈顶的k项,并用结果替换这k项。.返回值和参数控制链访问链和机器状态局部数据临时数据栈返回值和参数控制链访问链和机器状态局部数据临时数据base_sptop_sp8484442462n最大优点:便于计算机处理表达式。例:(8 4)+2的后缀表示是8 4 2+7.2 中间代码形式v语法制导生成后缀式n 设E.CODE 表示构成E的后缀式符号串,|表示两串相连。语义动作可写成:产生式语义动作 EE(1)OP E(2)E.CODE:=E(1).CODE|E(2).CODE|OPE(E(1)E.CODE:=E(1).CODE Eid E.CODE:=id
4、 n例:(a+b)*c d 的后缀式 a+b的后缀式为ab+,(a+b)的后缀式为ab+,(a+b)*c的后缀式为ab+c*(a+b)*c-d的后缀式为ab+c*d-后缀表达式不需要括号。7.2 中间代码形式v三地址代码n 三地址代码由下面的一般形式的语句构成:x:=y op zn其中,x、y、z为名字、常量或编译时产生的临时变量;op代表运算符号如逻辑运算符等。n表达式x+y*z翻译成的三地址语句序列是t1:=y*z t2:=x+t1 .返回值和参数控制链访问链和机器状态局部数据临时数据t1,t2是 临时变量栈中,存放在局部数据的下面7.2 中间代码形式n例:a:=(-b+c*d)+c*d三
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 编译原理课程简介 50 编译 原理 课程 简介 50
限制150内