编译原理--符号表实验报告
时间:2025-04-04
时间:2025-04-04
编译原理--符号表实验报告
山东大学威海分校信息工程学院软件工程系 编号: 信息工程学院软学号件工程专业
任课教师 贺红 指导教师贺红
实验地点 电子楼101 实验时间 2010-5-7 实验名称 自学第八章――符号表
同 组 人
预习报告(对实验主要内容的认识) 得分 姓名 谭鑫 院系
1、符号表的组织与作用
2、整理与查找
3、名字的作用范围
4、符号表的内容
实验内容(问题,思路,程序,结果) 得分
编译原理--符号表实验报告
1、什么是符号表?符号表有哪些重要作用?
答:编译过程中编译程序需要不断洪和反复查证出现在源程序中各种名字的属性和特征等有关信息。这些信息通常记录在一张或几张符号表中。符号表的每一项包含两部分:一部分是名字(标识符)一部分是此名字的有关信息。每个名字的有关信息一般指种属(如简单变量、数组、过程等)实、布尔等)等等。
作用:在编译的各个分析阶段,每当遇到一个名字都要查找符号表。如果发现一个新名字,或者发现已有名字的新信息,则要修改符号表,填入新名字和新信息。符号表中所登记的信息在编译的不同阶段都要用到。符号表所登记的内容将用于语义检查(如检查一个名字的使用和原先的说明是否一致)和产生中间代码。在目标代码生成阶段,符号表是地址分配的依据。对于一个多遍扫描的编译程序,不同遍所用的符号表也往往各有不同。
2、符号表的表项常包括哪些部分?各描述什么?
答:符号表的表项常包括名字栏和信息栏两部分。
名字栏描述的是名字,由于查填符号表一般是通过匹配名字来襀的,名字栏也称为主栏,主栏的内容称为关键字。
信息栏包含许多子栏和标志位,用来记录相应名字的种种不同属性。
3、符号有的组织方式有哪些?它的组织取决于哪些因素?
答:符号表的组织方式有两种:
① 让各栏所占的存储单元的长度都是固定的。
② 专门开辟一个信息表区,称为数组信息表(或内情向量表),将数组的
有关信息全部存入此表中。在符号表的地址栏中存入符号表与内情向量表连接的入口地址(即指针)。
它的组织取决于对存储空间利用率的考虑。例如,有些语言规定标识符的长度不得超过8个字符,则可采用第一种组织方式。而有许多语言对标识符的长度几乎不加限制,或者说,标识符的长度范围甚宽,则可采用第二种组织方式。
4、给出自适应线性表的查、填算法(注意修改自适应链)。
答:(1)从词法分析器中读出要查找的单词。
(2)并将链头指向刚才查到的那个项。若未找到,则前往(3)。
(3)填入新项,让链头指向填入的新项。
重复(1)~(3)步,直至所有单词均分析完毕。
编译原理--符号表实验报告
5、设计一个算法,它将按字典顺序输出二叉树上各结点的名字。
答:(1)将第一个碰到的名字作为“根”结点,它的左右指示器均置为null (2)将新结点与根结点的值作比较,小者放在右枝上,大者放在左枝上。如果根结点的左(右)枝已成子树,则转至(3)。
(3)让新结点与子树作比较,方法同(2)。
重复(1)~(3)步,直至新结点插入时成为叶子结点为止转至(4)。
(4)从叶子结点由右向左,由下至上输出各结点的名字。
一、符号表的组织和作用
1.1符号表的作用
一张符号表的每一项(或称入口)白喊两大栏(或称区段、字域),即名字栏和信息栏。
信息栏包含许多子栏和标志位,用来记录相应名字的种种不同属性,由于查填符号表一般是通过匹配名字来实现的,因此,名字栏也称主栏。主栏的内容称为关键字。
符号表中的每一项都是关于名字的说明。因此所保存的关于名字的信息取决与名字的用途,所以各表项的格式不一定统一。对每一项可以用一个记录表示。为了使表中的每个记录格式统一,可以在记录中设置指针,把某些信息放在表的外边,用指针指向存放另外信息的空间。
在整个编译期间,对于符号表的操作大致可归纳为五类:
对给定名字,查询名字是否已在表中;
往表中填入一个新的名字;
对给定名字,访问它的某些信息;
对给定名字,填写或更新它的某些信息;
删除一个或一组无用的项。
不同种类的表格所涉及的操作往往也是不同的。上述五个方面只是一些基本的共同操作。
2.2符号表的组织形式
总体组织和表项属性信息组织
第一种: 把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表
第二种: 把所有语言中的符号都组织在一张符号表中。组成一张包括了所有属性的庞大的符号表
第三种折衷方式是根据符号属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性。
编译程序按名字的不同种属分别使用许多符号表,如常数表、变量名表、过程名表等等。
SUBROUTINE INCWAP(M,N)
编译原理--符号表实验报告
10 K=M+1
M=M+4
N=K
RETURN
下一篇:高中历史事件时间表