总结:编译原理--第二章 一个简单的语法制导翻译器

第二章  一个简单的语法制导翻译器

本章主要介绍的语法制导翻译技术。

  • 构造一个语法制导翻译器要从源语言的文法开始。一个文法描述了程序的层次结构。文法的定义使用了称为终结符号的基本符号和称为非终结符号的变量符号。这些符号代表了语言的构造。一个文法的规则,即产生式,由一个作为产生式头或产生式左部的非终结符被指派为开始符号。
  • 在描述一个翻译器时,在程序构造中附加属性是非常有用的。属性是指与一个程序构造关联的任何量值。因为程序构造是使用文法符号来表示的,因此属性的概念也被扩展到文法符号上。属性的例子包括与一个表示数字的终结符号 num 相关联的整数值,或与一个表示标识符的终结符号 id 相关联的字符串。
  • 语法分析器从输入中逐个读取字符,并输出一个词法单元的流,其中语法单元由一个终结符号以及以属性值形式出现的附加信息组成。
  • 语法分析要解决的问题是指出如何从一个文法的开始符号推导出一个给定的终结符号串。推导的方法是反复将某个非终结符替换为它的某个产生式的体。从概念上讲,语法分析器会创建一棵语法分析树。该树的根结点的标号为一个终结符号或空串 。语法分析树推导出由它的叶子结点从左到右组成的终结符号串。
  • 使用被称为预测语法分析法的自顶向下方法可以手工建立高效的语法分析器。预测分析器有对应于每个非终结符的子过程。该过程的过程体模拟流这个非终结符号的各个产生式。只要在输入流中向前看一个符号,就可以无二义地确定该过程体中的控制流。
  • 语法制导翻译通过在文法中添加规则或程序片段来完成。本章中,只考虑了综合属性。任意结点 x 上的一个综合属性的值只取决于 x 的子结点上的属性值。语法制导定义将规则和产生式相关联,这些规则用于计算属性值。语法制导的翻译方案在产生式体中嵌入了称为语义动作的程序片段。这些语义动作按照语法分析中产生式的使用顺序执行。
  • 语法分析的结果是源代码的一种中间表示形式,称为中间代码。
  • 符号表是存放有关标识符的信息的数据结构。当分析一个标识符的声明的时候,该标识符的信息被放入符号表中。当在后来使用这个标识符时,比如它作为一个表达式的因子使用时,语义动作将从符号表中获取这些信息。

希望我的总结可以帮助大家,感谢阅读我的博客!

猜你喜欢

转载自blog.csdn.net/weixin_42558631/article/details/81204589
今日推荐