一.属性文法
1.属性文法 :是在上下文无关文法的基础上为每个文法符号(终结符或非终结符)配备若干个相关的“值”(称为属性)。
属性 :代表与文法符号相关的信息,和变量一样,可以进行计算和传递。
2.属性的分类
综合属性:用于“自下而上”传递信息;在语法树中,一个结点的综合属性的值,由其子结点的属性值确定
继承属性:用于“自上而下”传递信息;在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定
3.语义规则
属性计算的过程即是语义处理的过程
4.语义规则所描述的工作
包括:属性计算 静态语义检查 符号表操作 代码生成
二.基于属性文法的处理方法
1.基于属性文法的处理过程
输入串->语法树->依赖图->语义规则计算次序->计算结果
这种由源程序的语法结构所驱动的处理办法就是语法制导翻译法
2.依赖图
在一颗语法树中的结点的继承属性和综合属性之间的相互依赖关系可以用称作依赖图的一个有向图来描述。
3.树遍历的属性计算方法(常用的遍历方法是深度优先,从左到右的遍历方法)