第六章语义分析与目标代码生成 6.1概况 6.1.1语义分析的概念 6.1.2属性文法 属性文法的引进 1属性 是在语法规则制导下,通过对语义规则的 2属性文法计算,完成对输入符号串的翻译。在使用语法 3语法制导定义规则进行推导或归约的同时又使用这些语义规 4翻译方案 则来指导翻译与最终产生目标代码 5语法制导的翻译
6.1 概况 6.1.1 语义分析的概念 6.1.2 属性文法 一、属性文法的引进 1.属性 2.属性文法 3.语法制导定义 4.翻译方案 5.语法制导的翻译 第六章 语义分析与目标代码生成 是在语法规则制导下,通过对语义规则的 计算,完成对输入符号串的翻译。在使用语法 规则进行推导或归约的同时又使用这些语义规 则来指导翻译与最终产生目标代码
第六章语义分析与目标代码生成 例6.2某程序设计语言说明部分的语法制导定义。 6.1概况 重写规则 语义规则 D: =TL L. in: =T type T∷:=int T type: = integer 6.1.1语义分析的概念:fot T. type: real L: =L, id addtype (id. entry, L in) 6.1.2属性文法 L: = id addtype(id entry, L. in 属性文法的引进 1属性 T T type =real L in=real 2属性文法 float L float L in=real 13 3语法制导定义 4翻译方案 id L in=real 12 5语法制导的翻译 id
6.1 概况 6.1.1 语义分析的概念 6.1.2 属性文法 一、属性文法的引进 1.属性 2.属性文法 3.语法制导定义 4.翻译方案 5.语法制导的翻译 第六章 语义分析与目标代码生成 例 6.2 某程序设计语言说明部分的语法制导定义。 重写规则 语义规则 D::=TL T::=int T::=float L::=L1 ,id L::=id L.in:=T.type T.type:=integer T.type:=real L1 .in:=L.in addtype(id.entry,L.in) addtype(id.entry,L.in)
第六章语义分析与目标代码生成 6.1概况 综合属性:一个结点相应文法符号的属性之值 通过语法分析树中它的子结点的属性之值来计算 61语义分析的概念继承属性:一个结点相应文法符号的属性之值 通过语法分析树中它的兄弟结点与父结点的相应 6.1.2属性文法 文法符号的属性之值来计算。 D 属性文法的引进 1属性 T T type=real in-rea 2属性文法 float L float Lin=real 3语法制导定义 4翻译方案 id L in=real 12 5语法制导的翻译 id
6.1 概况 6.1.1 语义分析的概念 6.1.2 属性文法 一、属性文法的引进 1.属性 2.属性文法 3.语法制导定义 4.翻译方案 5.语法制导的翻译 第六章 语义分析与目标代码生成 综合属性:一个结点相应文法符号的属性之值 通过语法分析树中它的子结点的属性之值来计算; 继承属性:一个结点相应文法符号的属性之值 通过语法分析树中它的兄弟结点与父结点的相应 文法符号的属性之值来计算
第六章语义分析与目标代码生成 6.1概况 翻译过程: 1)分析输入符号串,建立语法分析树; 2)从语法分析树得到描述结点属性间 6语义分析的概念依赖关系的依赖图,由此依赖图得到 语义规则的计算次序; 6.1.2属性文法 3)进行语义规则计算,得到翻译结果。 D 属性文法的引进 1属性 T T type=real in-rea 2属性文法 float L float Lin=real 3语法制导定义 4翻译方案 id L in=real 12 5语法制导的翻译 id
6.1 概况 6.1.1 语义分析的概念 6.1.2 属性文法 一、属性文法的引进 1.属性 2.属性文法 3.语法制导定义 4.翻译方案 5.语法制导的翻译 第六章 语义分析与目标代码生成 翻译过程: 1)分析输入符号串,建立语法分析树; 2)从语法分析树得到描述结点属性间 依赖关系的依赖图,由此依赖图得到 语义规则的计算次序; 3)进行语义规则计算,得到翻译结果
第六章语义分析与目标代码生成 6.1概况 6.1.1语义分析的概念 定义6.1一个属性文法AG是一个四元组 612属性文法(,A,RO,其中: G是压缩了的上下文无关文法(,V,P,Z); 属性文法的引进A是有穷属性集; 语法制导定义R是有穷属性规则集;C是有穷条件集 AG=(G,AR,C 1属性文法的形式描述 2属性的分类 3依赖图 4计算次序
6.1 概况 6.1.1 语义分析的概念 6.1.2 属性文法 一、属性文法的引进 二、语法制导定义 1.属性文法的形式描述 2.属性的分类 3.依赖图 4.计算次序 第六章 语义分析与目标代码生成 定义6.1 一个属性文法AG是一个四元组 (G,A,R,C),其中: G是压缩了的上下文无关文法(VN,VT,P,Z); A是有穷属性集; R是有穷属性规则集;C是有穷条件集。 AG=(G,A,R,C)