第5章 语法制导翻译及中间代码生成.pptVIP

  • 1
  • 0
  • 约6.81千字
  • 约 45页
  • 2019-01-12 发布于湖北
  • 举报
第五章 语义分析和中间代码的表示 语义分析的概念 语法制导翻译方法 属性文法 几种常见的中间代码表示 第一节 语义分析的概念 语义分析:即审查每个语法成分的静态语义。 在早期的一些编译程序中,是在语法分析的基础上根据源程序中各语法成份的语义,直接产生机器语言或汇编语言形式的目标代码。 现在的编译系统一般都将经过语法分析的源程序先翻译为某种形式的中间语言代码,然后再将其翻译为目标代码。 优点: 使编译程序各组成部分功能更单一; 使得编译程序的逻辑结构更为清晰,从而使编译程序更易于编写与调整;同时为代码优化和程序的可移植性提供了条件 在语义分析时也要进行语义检查,编译时的语 义检查是静态语义检查,包括: 类型检查,如参与运算的操作数的类型应相容。 控制流检查,用以保证控制语句有合法的转向点。如C语言中不允许goto语句转入case语句流。 一致性检查,如case语句的标号不能相同。 第二节 语法制导翻译 对文法中的每个产生式都附加一个语义动作或语义子程序,在语法分析过程中,每当需要使用一个产生式进行推导或归约,语法分析程序除执行相应的语法分析动作外,还要执行相应的语义动作或调用相应的语义子程序。 这种模式实际上是对前后文无关文法的一种扩充。 第三节 属性文法 产生式的语义是由组成该产生式的文法符号的语义所决定的。 我们可将这些语义以“属性”的形式附加到各个文法符号

文档评论(0)

1亿VIP精品文档

相关文档