一,语法制导定义
属性文法
是在上下文无关文法的基础上为每个文法符号(终结符或非终结符)配备若干个相关的“值”(称为属性)
文法表示
三元组:A=(G,V,F)
G:是一个上下文无关文法。
V:有穷的属性集,每个属性与文法的一个终结符或非终结符相连,这些属性代表与文法符号相关信息,如它的类型,值,代码序列,符号表内容等等。属性与变量一样,可以进行计算和传递。属性加工的过程即语义处理的过程。
F:关于属性的属性断言或一组属性的计算规则(称为语义规则)。断言或语义规则与一个产生式相联,只引用该产生式左端或右端的终结符或非终结符相联的属性。
属性分类
综合属性:用于“自下而上”传递信息。
在语法树上,一个结点的综合属性的值,由其子节点的属性值确定。
继承属性:用于“自上而下”传递信息
在语法树上,一个结点的继承属性由此结点的父节点和/或兄弟结点的某些属性值确定。
终结符只有综合属性,它由词法分析器提供。
非终结符既可有综合属性也可有继承属性,但文法开始符号的继承属性作为属性计算前的初始值。
二,S属性定义的自下而上计算
语法树:语法分析树的浓缩表示,算符和关键字是作为内部节点
语法制导翻译可以基于分析树,也可以基于语法树
构造语法树的语法制导定义
S属性的自下而上
n是结束符号
三,L属性定义的自上而下计算
翻译方案:语法制导翻译翻译方案的语义动作放在{}内,且可以插到产生式的任何地方