讲稿第8章 语法制导翻译和中间代码生成.docVIP

  • 2
  • 0
  • 约6.21千字
  • 约 15页
  • 2018-07-07 发布于河北
  • 举报

讲稿第8章 语法制导翻译和中间代码生成.doc

讲稿第8章 语法制导翻译和中间代码生成.doc

第 PAGE 15 页 共 NUMPAGES 15 页第8章 语法制导翻译和中间代码生成(3学时,15分钟)编译程序的任务是把源程序翻译成目标程序,这个目标程序必须和源程序的语义等同,也就是说,它们的语法结构可以不同,但表达的结果应完全相同。通常,在语法分析过程中,每当一个产生式获得匹配(自上而下分析)或用于归约(自下而上分析)时,就执行相应于该产生式的语义子程序进行语义处理,这个过程就是语法制导翻译。编译中的语义处理是指两个功能:第一,审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义,也称为静态语义检查或静态审查。动态语义检查需要生成相应的目标代码,在运行时进行。静态语义检查主要涉及以下几个方面:(1)类型检查,如参与运算的操作数及类型应相容。(2)控制流检查,用以保证控制语句有合法的转向点。如C语言中不允许goto转入case语句流;break语句需要寻找包含它的最小switch、while或for语句方可找到转向点,否则出错。(3)一致性检查,如在相同作用域中标识符只能说明一次、case语句的标号不能相同等。第二,如果静态语义正确,语义处理的工作是要执行真正的翻译,即生成程序的一种中间表示形式(中间代码),或者直接生成实际的目标代码。虽然源程序可以直接翻译为目标语言代码,但是通常编译程序还是采用了独立于机器的、复杂性介于源语言与机器语言之间的中间语言。这

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档