第09章语义和代码生成题稿.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* S.P O.P 语义分析及生成中间代码程序 代码生成程序 代码优化程序 语法分析程序 词法分析程序 错 误 处 理 符 号 表 管 理 * 第九章 语义分析和代码生成 教学目标 明确语义分析的任务 了解中间代码的几种形式 掌握波兰后缀表示法、常用语句的四元式表示、抽象机代码表示 * 9.1 语义分析的概念 9.2 中间代码 9.3 声明的处理 9.4 表达式语句 9.5 if语句 9.6 while语句 9.7 for循环语句 9.8 write语句 9.9 read语句 9.10 过程调用和返回 9.11 语义分析及代码生成实现 9.12 错误处理 教学内容 * 9.1 语义分析的概念 编译最终目的是把源程序翻译成目标代码。 词法分析,语法分析: 程序语言    中间代码    目标代码 翻译 翻译 源代码 词法分析 识别单词 语法分析 单词 识别句子 语义分析和中间代码生成技术: * 考虑下段程序: { int a; int b; char a,c; d=a+b; } 错误提示(VC6编译): (5) : error C2371: a : redefinition; different basic types (3) : see declaration of a‘ (6) : error C2065: d : undeclared identifier 第3行语句char a,c;为声明语句,单看这一行没有语法错误,但和上一行语句比较,发现变量a属于重复定义。 第4行语句为表达式语句,单看这一行也没有错误,但查询前面的声明语句,发现变量d没有声明。 * 9.1 语义分析的概念 语义分析主要借助符号表记录的信息来实现语义分析动作。常见的语义分析动作有: 1) 对表达式中的操作数进行类型的一致性检查。 2) 分析由语法分析所识别出来的语句的意义并作相应的语义处理。 如:(1)int a; char b; a=a+b; (2)int *p; p=(int *)malloc(2); 如:(1)int a; char b; a=a+b; * 9.2 中间代码 中间代码:一种介于源语言和目标语言之间的中间语言形式 生成中间代码的目的 (1)便于优化 (2)便于移植 语言1 语言2 … 语言N 机器1 机器2 … 机器M 中间代码 N×M N+M * 9.2 中间代码 常见的中间代码: (1)波兰后缀表示(逆波兰式)(掌握) (2)N-元表示 (2-1)三元式(掌握) (2-2)四元式(掌握) (2-3)抽象机代码 (3)栈式抽象机及其汇编指令 * 9.2.1 波兰后缀表示 中缀表示           波兰后缀表示 a+b ab+ a+b*c abc*+ (a+b)*c ab+c* a:=b*c+b*d abc*bd*+:= F*3.1416*R*(H+R) F3.1416*R*HR+* 波兰后缀表示(逆波兰式)多应用于表达式类的语言结构,也能够通过操作符的扩充来表示其他的语言结构。 * 9.2.2 N-元表示:三元式 三元式的每条指令只有3个域。 三元式的一般表示如下: 操作符,操作数1,操作数2 如算术表达式X+Y,可用一个三元式(+,X,Y)来描述。三元式的第一个域是操作符(+),第二和第三个域分别是两个操作数(Y和Z)。 三元式的缺点是优化较困难。 * 9.2.2 N-元表示:三元式 例如,表达式 W*X+(Y+Z) 可用如下三元式序列表示: (1) *,W, X (2) +,Y, Z (3) +,(1),(2) * 9.2.2 N-元表示:三元式 例如,条件语句if (XY)Z=X;else Z=Y+1; 可以用如下三元式序列表示: (1) -,X,Y (2) BMZ,(1),(5) (3) =,Z,X (4) BR, ,(7) (5) +,Y,1 (6) =,Z,(5) (7) … BMZ表示零转移 BR表示无条件转移 * 9.2.2 N-元表示:四元式 四元式是另一种N-元表示。 该表示法的形式如下: 操作符,操作数1,操作数2,结果 其中,操作数1和操作数2是运算数; 结果表示操作符操作的结果,该结果通常是一临时变量,在以后可以由编译程序分配给一个寄存器或者一个主存地址。 四元式的优点是便于进行优化处理。 * 9.2.2 N-元表示:四元式 例如,表达式 (A+B)*(C+D)-E 能够由

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档