第6章- 属性文法和语法制导翻译

一.课程内容

1.属性文法:

是在上下文无关文法的基础上为每个文法符号配备若干个相关的“值”。分为综合属性和继承属性

2.综合属性:

用于“自下而上”传递信息,在语法树中,一个结点的综合属性的值,由其子结点的属性值确定。

3.继承属性:

用于“自上而下”传递信息。在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定。

4.属性的计算次序

   一个有向非循环图的拓扑序是图中结点的任何顺序m1,m2,…mk,使得边必须是从序列中前面的结点指向后面的结点。也就是说,如果mi®mj是mi到mj的一条边,那么在序列中mi必须出现在mj之前。

5.抽象语法树:

从语法树中去掉对翻译不必要的信息,而获得更有效的源程序中间表示。

6.一遍扫描的处理方法:

与树遍历的属性计算方法不同,一遍扫描的处理方法是在语法分析的同时计算属性值,而不是语法分析构造语法树之后进行属性的计算,而且无需构造实际的语法树。

7.属性文法的自下而上计算:

  S—属性文法,它只含有综合属性。

  综合属性可以在分析符号串的同时由自上而下的分析器来构造

  分析器可以保存与栈中文法符号有关的综合属性值

  每当进行归约时,新的属性值就由栈中正在归约的产生式右边符号的属性值来计算

  可以通过扩充分析器中的栈来存放这些综合属性值

8.S-属性文法的翻译器通常可借助于LR分析器实现

翻译模式:

翻译模式是语法制导定义的一种便于翻译的书写形式。其中属性与文法符号相对应,语义规则或语义动作用花括号{}括起来,可被插入到产生式右部的任何合适的位置上。

9. L-属性文法的自顶向下翻译

     属性的计算次序受分析方法所限定的分析树结点建立次序的限制
      分析树的结点是自左向右生成
      如果属性信息是自左向右流动,那么就有可能在分析的同时完成属性计算

       S属性文法包含于L属性文法

二.课后习题:


三.课后总结:

感觉这章学的不够扎实,还有很多需要巩固,像L文法的翻译,抽象语法树这部分还要加强学习。课后题也有不会的,还好有室友的指导,让我明白了许多。需要的是多练习,再实践中理解。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页