实验三 分析调试语义分析程序

实验三 分析调试语义分析程序
实验三 分析调试语义分析程序

实验三分析调试语义分析程序

3.1实验类型

验证型实验。6学时(2学时分析理解语义及代码生成程序、2学时分析理解抽象机模拟程序、2学时调试、测试前面两个程序)

3.2实验目的

通过分析调试TEST语言的语义分析和中间代码生成程序,加深对语法制导翻译思想的理解,掌握将语法分析所识别的语法范畴变换为中间代码的语义翻译方法。

3.3背景知识

3.3.1属性文法

属性文法A=(G,V,F),其中:

G:一个上下文无关文法,属性文法的基础。

V:有穷的属性集,每个属性与一个文法符号相关联,这些属性代表与文法符号相关的语义信息,如:类型、地址、值、代码、符号表内容等等。属性与变量一样,可以进行计算和传递,属性加工的过程即语义处理的过程,属性加工与语法分析同时进行。

属性有两类:

综合属性:归约型属性,用于“自下而上”传递信息。

继承属性:推导型属性,用于“自上而下”传递信息。

F:关于属性的属性断言或一组属性的计算规则(称为语义规则)。断言或语义规则与一个产生式相联,引用该产生式左端或右端的终结符或非终结符相关联的属性。

3.3.2属性翻译文法

属性翻译文法以上下文无关文法为基础,为每个文法符号引进一组属性(语义值),对文法的每个产生式都配备一组与之相关联的属性计算规则(语义规则)而得到的文法。或者说:符号具有属性并带有属性求值规则的翻译文法称为属性翻译文法

其具体定义如下:

1)文法的每个终结符、非终结符和动作符号都可以有一个有穷的属性集。

2)每个非终结符和动作符号属性可分为综合属性和继承属性。

3)继承属性的求值规则:

①开始符号的继承属性具有初始值。

②对产生式左部的非终结符,其继承属性则继承前面产生式中该符号已有的继承属性值。

③右部的符号,其继承属性由产生式中其它符号属性值进行计算。

4)综合属性的求值规则:

①终结符号的综合属性具有指定的初始值。在具体实现中,初始值由由词法分析程序提供。

②产生式右部的非终结符号的综合属性值,则取后面以该非终结符号为产生式左部时求得的综合属性值。

③产生式的左部的非终结符号的综合属性值,由产生式中左部或右部的某些符号的属性值进行计算。

④给定一动作符号,其综合属性值用该动作符号的其它属性值进行计算。

3.3.3 L-属性文法

一个属性文法称为L-属性文法,如果对于每个产生式A→X1X2…X n,满足:

1.右部符号X i(1≦i≦n)的继承属性之值,仅依赖于X1,X2,…,X i-1的任意属性或A的继承

属性;

2.左部符号A的综合属性之值仅依赖于A的继承属性或(和)右部符号X i(1≦i≦n)的任意

属性;

3.对一动作符号而言,其综合属性之值是以该动作符号的继承属性或产生式右部的任意属

性为变元的函数。

3.3.4 S-属性文法

一个属性文法称为S-属性文法,当且仅当满足如下条件:

1.所有非终结符只具有综合属性;

2.在一个产生式中,每一个符号的各个综合属性的定义互不依赖;

3.在一个产生式中,若某个文法符号X具有继承属性,则此继承属性之值仅依赖于该产

生式右部且位于X左边的符号之属性。

3.3.5语法制导翻译的基本思想

为每个产生式配上一个语义子程序(该子程序描述一个产生式所对应的翻译工作。这些工作包括:生成中间代码,查填符号表,检查和报错,修改编译程序某些工作变量的值等)。在语法分析过程中,每当一个产生式用于匹配或归约时,就调用该产生式所对应的语义子程序,以完成翻译任务。

3.4实验内容

1、分析调试教材上附录D的语义及代码生成程序,增加功能:检查变量是否赋初值,对没

赋初值的变量引用时报告语义错误;

2、熟悉教材上TEST语言抽象机的指令系统;

3、分析调试教材上附录E的TEST抽象机模拟器程序;

4、对下列TEST语言代码进行编译,得到中间代码并在抽象机上运行,要求能得到正确的

输出结果。

{

int sum;

int product;

int i;

int a;

for ( i =1; i<10; i + i =1)

{

read a;

sum = sum +a;

product = product*a;

}

write sum;

write product;

}

注:键盘输入时,依次输入1, 2, 3, 4, 5, 6, 7, 8, 9, 10

3.5实验思考

1、语义及代码生成程序中的符号表管理方案存在什么问题?提出改进方案。

2、你是如何检查变量是否赋初值的?给出你的处理方案。

3、给出产生式中所添加的动作含义。

4、抽象机模拟程序是如何处理语句标号的?

3.6 实验报告要求

1、反映调试分析过程,突出对代码的修改;

2、展现实验结果;

3、回答所有实验思考问题。

相关文档
最新文档