下载此文档

编译原理电子课件教案-第8章-语法制导翻译和中间代码生成.pptx


文档分类:IT计算机 | 页数:约97页 举报非法文档有奖
1/97
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/97 下载此文档
文档列表 文档介绍
1
第8章语法制导翻译和中间代码生成
语义分析概述
属性文法
S-属性文法的自下而上翻译
L-属性文法的自上而下翻译
中间代码的形式
简单赋值语句的翻译
控制结构的翻译
本章内容
2
1 语义分析的作用
词法分析和语法分析只检查了源程序的拼写、结构是否正确,但是对程序内部的逻辑含义并未考虑。
要判断语义是否正确,必须依靠语义分析。
语义分析概述
3
1 语义分析的作用
在第5章和第7章,我们介绍了自顶向下和自底向上的语法分析方法。程序设计语言的大多数语法现象属于上下文无关文法(CFG),已经有了很成熟的形式化描述方法和语法分析器的自动生成工具。重点讨论了LL和LR语法分析方法。

LL和LR文法均是非歧义文法,且是上下文无关的。意味着要对编程语言进行确定的自顶向下或自底向上语法分析,必须保证编程语言是严格的上下文无关语言(CFL)。
语义分析概述
4
随着语言形式定义技术的发展,人们证实,任何一种编程语言都不可能完全用CFG生成。编程语言中更重要的一面,是附着于语言结构上的语义(上下文相关特性)。语义揭示了程序本身的涵义。一个语法上正确的句子,语义不一定正确。
应用最广的语义分析方法是语法制导翻译。其基本思想是:将语言结构的语义以属性的形式赋予代表此结构的文法符号。在语法分析推导或归约的每一步,通过语义规则完成对属性的计算,以实现语义处理。
语义分析概述
5
编程语言的语法和语义之间并没有明确界限,语义可完成CFG无法描述的特性。
如:标识符先声明后引用的语法规定,可用简单的抽象语言来说明:L={WcW|W∈(a|b)*},第一个W是标识符的声明,第二个W代表它的引用。这不是一个上下文无关语言,无法用前面章节介绍的语法分析方法来处理。
再如:L={dm|n≥0,m≥0},它是检查过程声明的形参个数和过程引用的实参个数应该一致的问题的抽象。an 和dm代表两个过程调用的实参表。
实参和形参个数的一致性检查也是放在语义分析阶段完成。
语义分析概述
6
L={ww|w∈{a,b}*}的文法
S→aSA|bSB|aa|bb|aCA|bCB
aB→Ba
bB→Bb
aA→Aa
bA→Ab
CA→Ca|a
CB→Cb|b
非CFL的文法
7
第8章语法制导翻译和中间代码生成
(静态语义)—语义检查
主要进行一致性检查和越界检查。
上下文相关性
类型匹配
类型转换
例:Program P();
Var rate: real;
procedure initial;

position := initial+rate*60
/*error*/ /*error*/ /*warning*/
,执行真正的翻译(翻译成中间代码或直接生成实际目标代码)—语义处理
说明语句:将其中定义的名字及属性记录在符号表中,以便进行存储分配
执行语句:生成语义上等价的中间代码。
2 语义分析任务
8
第8章语法制导翻译和中间代码生成
在语法分析中,根据每个产生式所对应的语义子程序(语义规则描述的动作)进行翻译的方法称为语法制导翻译(syntax-directed translation)。
在描述语义动作时,需要赋予每个文法符号X(非终极符和终极符)以各种不同的“值”,统称为属性值。属性可以是类型、地址、值、符号表内容等,, 。
语法制导翻译是目前大多数编译程序普遍采用的一种技术,本书就是采用这种方法,来完成语义分析。并采用属性文法描述编程语言的语义。
3 语法制导定义
9
第8章语法制导翻译和中间代码生成
语法制导定义是对上下文无关文法的推广,其中每个文法符号都有一个相关的属性集。如果把分析树中的一个结点(对应某文法符号)看成一条记录,那么一个属性就相当于记录中一个域的名字。
属性间的约束用相应产生式的语义规则来描述。
属性分为两类:
1 综合属性
2 继承属性
3 语法制导定义
10
第8章语法制导翻译和中间代码生成
一个结点的综合属性值是从其子结点的综合属性值计算得来的,综合属性用于自下而上传递信息;而继承属性则是由语法树中该结点的父结点和位于其左边的兄弟结点的属性值计算出来的,继承属性用于自上而下传递信息。
(1)非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性。
(2)终结符只有综合属性,它们由词法分析程序提供。
我们将每个结点都带有属性值的语法分析树称为注释分析树。计算结点属性值的相关活动称为注释或装饰语法树。
3 语法制导定义

编译原理电子课件教案-第8章-语法制导翻译和中间代码生成 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数97
  • 收藏数0 收藏
  • 顶次数0
  • 上传人3346389411
  • 文件大小613 KB
  • 时间2018-06-23