属性文法举例一 简单计算器 ■用语义规则描述表达式求值。 ■该属性文法描述如下: 产生式 语义规则(属性计算规则) 1.L→En print(E.val)(虚属性) 2.E→E1+T E.vaD:=E1.val+T.val 非终结符设有 3.E→T E.val:=T.val 综合属性,代 4.T→T1*F( ①.va):=T1.val*p.val 表表达式的值 5.T→F T.val:F.val 6.F→(E) F.val:=E.val 终结符i设有综 7.F→i F.val:i.lexval 合属性,其值由 词法分析器提供 2025/4/2 6
2025/4/2 6 属性文法举例——简单计算器 用语义规则描述表达式求值。 该属性文法描述如下: 产生式 语义规则(属性计算规则) 1. L→En print( E .val ) (虚属性) 2. E→E1+T E.val:=E1.val+T.val 3. E→T E.val:=T.val 4. T→T1*F T.val:=T1.val*F.val 5. T→F T.val:=F.val 6. F→(E) F.val:=E.val 7. F→i F.val:=i.lexval 非终结符设有 综合属性,代 表表达式的值 终结符i设有综 合属性,其值由 词法分析器提供
属性文法定义p161 ■属性文法是Knuth在1968年提出的。 ■属性文法的特点: ◆是一种接近形式化的语义描述方法。 ◆每个文法符号有相应的属性V一一属性集合 0代表与文法符号相关的信息: 0例如类型、值、代码序列等。 ◆每个产生式配有相应的语义规则F一一规则集合 0作用:计算属性的规则,可以产生代码、在符号表中存 放信息、给出错误信息或执行任何其它动作,实现翻译; 0形式:b:=f(C1,c2,.,ck)。 ■属性文法:三元组A=(G,V,F) ◆在上下文无关文法的基础上,把每个文法符号和 组属性相关联,并给产生式附加以语义规则。 2025/4/2 节目录 ☒) 7
2025/4/2 7 属性文法定义 p161 属性文法是Knuth在1968年提出的。 属性文法的特点: 是一种接近形式化的语义描述方法。 每个文法符号有相应的属性 V——属性集合 Ø 代表与文法符号相关的信息; Ø 例如类型、值、代码序列等。 每个产生式配有相应的语义规则 F——规则集合 Ø 作用:计算属性的规则,可以产生代码、在符号表中存 放信息、给出错误信息或执行任何其它动作,实现翻译; Ø 形式:b:=f(c1,c2,.,ck)。 属性文法:三元组A=(G,V,F) 在上下文无关文法的基础上,把每个文法符号和 一组属性相关联,并给产生式附加以语义规则。 节目录
属性分类p162 产生式A→a语义规则b:=f(c1,c2,.,ck) ■综合属性用于“自下而上”传递信息 ◆b是A的综合属性,C1,c2,.,Ck是右边文法符号的属性 ◆从其子结点的属性值计算出来的 ◆终结符只有综合属性,由词法分析器提供 ◆例如E.valT.valF.val ■纟 继承属性用于“自上而下”传递信息 ◆b是右边某个文法符号的继承属性,C1,c2,.,Ck是A或右边 任何文法符号的属性 ·从其兄弟结点和父结点的属性值计算出来 ◆开始符号的继承属性作为属性计算前初值 ◆例如L.in ■非终结符既可有综合属性也可有继承属性,一般对于 出现在产生式右边的继承属性和出现在产生式左边 的综合属性都必须提供一个计算规则 2025142 节目绿可
2025/4/2 8 属性分类 p162 产生式 A→α 语义规则 b:=f(c1,c2,.,ck) 综合属性 用于“自下而上”传递信息 b是A的综合属性, c1,c2,.,ck是右边文法符号的属性 从其子结点的属性值计算出来的 终结符只有综合属性,由词法分析器提供 例如 E.val T.val F.val 继承属性 用于“自上而下”传递信息 b是右边某个文法符号的继承属性, c1,c2,.,ck是A或右边 任何文法符号的属性 从其兄弟结点和父结点的属性值计算出来 开始符号的继承属性作为属性计算前初值 例如 L .in 非终结符既可有综合属性也可有继承属性,一般对于 出现在产生式右边的继承属性和出现在产生式左边 的综合属性都必须提供一个计算规则 节目录
语法制导翻译法 ■由源程序的语法结构所驱动的处理办法 ■为文法中每个产生式配上一组语义规则,并 且在语法分析的同时执行这些语义规则,完 成相应的语义处理 ■问题:何时执行语义规则? ◆每当用一个产生式推导或归约时,就执行对应 的语义规则 202514/2 节目绿☑)9
2025/4/2 9 语法制导翻译法 由源程序的语法结构所驱动的处理办法 为文法中每个产生式配上一组语义规则,并 且在语法分析的同时执行这些语义规则,完 成相应的语义处理 问题:何时执行语义规则? 每当用一个产生式推导或归约时,就执行对应 的语义规则 节目录
例3*5+4n的语 显示19 法树与属性计算 E.val=19 依赖关系p164 ⑧ 拓扑排序 E1 val=15 十 T.val=4 自下而上 ⑤↑ ⑦↑ T.val=15 F.val=4 ⑥t TL val=3 F.val=5 i.lexval=4 ②It ®t F.val=3 i.lexval=5 ①f 依赖图 i.lexval=3 225IA 10
2025/4/2 10 ① 例 3*5+4n的语 法树与属性计算 L .val=3 E n E1 + T T T1 * F F i i F .val=3 .val=5 i .val=15 .val=15 .val=4 .val=4 .val=19 显示19 .lexval=3 .lexval=5 .lexval=4 依赖关系p164 拓扑排序 自下而上 依赖图 ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨