编译原理课件06符号表的组织与管理.ppt
《编译原理课件06符号表的组织与管理.ppt》由会员分享,可在线阅读,更多相关《编译原理课件06符号表的组织与管理.ppt(92页珍藏版)》请在三一办公上搜索。
1、第6章 符号表的组织与管理,6.1 符号表的作用6.2 符号表的组织6.3 符号表的建立和查找本章小结,知识结构,6.1 符号表的作用,一.符号表作用存放语言程序中出现的有关标识符的属性信息。编译程序护理标识符时主要涉及两部分信息:标识符本身与标识符相关的信息,如标识符的类型、种属、作用域等等,二.符号表的功能,收集有关标识符的属性,并在符号表中建立符号的相应属性信息例如:int A;float B5;上下文语义的合法性检查的依据:检查标识符属性在上下文中的一致性和合法性例如,在C语言中同一个标识符可作引用说明和定义说明int i3,5;/定义说明iextern float i;/引用说明i,
2、例如:int i3,5;float i4,2;int i3,5;,3.作为目标代码生成阶段地址分配的依据除语言中规定的临时分配存储的变量i外,每个符号变量在目标代码生成时需要确定其在存储分配的位置(主要是相对位置)符号变量由它被定义的存储类别或被定义的位置来确定首先要确定其被分配的区域其次是根据变量出现的次序而有关区域的标志及相对位置都是作为该变量的语义信息被收集在该变量的符号表属性中,符号的主要属性及作用,语言符号可分为:关键字符号、操作符符号、标识符符号1.符号名:标识符:变量的名字、函数的名字、过程的名字通常把一个标识符在符号表中的位置的整数值称之为该标识符的内部代码在经过分析处理的语言
3、程序中标识符不再是一个字符串而是一个整数值,2.符号的类型:除过程标识符之外函数和变量标识符都具有数据类型属性对于函数的数据类型指的是该函数值的数据类型。基本数据类型有整型、实型、字符型、逻辑型及位组型等,符号的类型属性是在语言程序中该符号的定义中得到变量符号的类型属性决定了该变量的数据在存储空间的存储格式,还决定了该变量上可以施加的运算操作例如t*2n、a+b,3.符号的存储类别:一种是用关键字指定,例如在FORTRAN中用COMMAN来定义公共存储区变量,用SAVE来定义函数或过程的内部静态存储变量,在C语言中用static定义是属于文件的静态存储变量或属性函数内部的静态存储变量,用reg
4、ist定义使用寄存器存储的变量,另一种方式是根据定义变量说明在程序中的位置来决定,例如在C语言中,在函数体外默认存储类关键字所定义的变量是外部变量,即程序的公共存储变量,而在函数体内默认存储类关键字所定义的变量是内部变量,即属性该函数所独有的私有存储变量,4.符号的作用域及可视性:一个符号变量在程序中起作用的范围,称为它的作用域一般来说,定义该符号的位置及存储类关键字决定了该符号的作用域C语言中一个外部变量的作用域是整个程序FORTRAN语言中的公共变量的作用域并不是整个语言程序,而仅是那些定义说明了它所在公共块的函数及过程。除非程序中所有函数及过程中全部说明了该公共块时,该公共变量的作用域才
5、是整个程序,C语言中,函数外说明的定义的静态变量的作用域是定义该静态变量的文件,而在函数内部定义的静态变量与FORTRAN的SAVE变量一样,其作用域仅仅是该变量定义所在的函数或过程中一般来说,一个变量的作用域就是该变量可以出现的场合,也就是说在某个变量作用域范围内该变量是可引用的,这就是变量可视性的作用域规则。但是变量可视性不仅仅取决于它的作用域,还有两种情况影响到一个变量的可视性,(1)函数的形式参数:通常函数的形式参数是作为函数的内部变量处理的。例如:int a;int func(a,b)float a;int b;a/引用float a,上例改写为:int a;int func(a,b
6、)float a;int b;a/引用float a:a/引用int a,(2)复合语句分程序结构:在一个函数中可以建立一个程序块,该程序块中有自己的说明部分和执行部分,且这程序块还可以具层次的嵌套结构,例如:int a;char a;float a;a/引用char a;符号表属性中除了需要符号的存储类别之外还需要表示该符号在程序结构上被定义的层次,5.符号变量的存储分配信息:根据符号变量的存储类别定义及它们出现的位置和次序来确定每一个变量应分配的存储区及在该区中的具体位置,(1)静态存储区:该存储区单元经定义分配后成为静态单元,即在整个语言程序运行过程中是不可改变的。作静态分配的符号变量是
7、具有整个程序运行过程的生命周期。分为:公共静态区、若干个局部静态区,(2)动态存储区:根据变量的局部定义和分程序结构,编译程序设置动态存储区来适应这些局部变量的生存和消亡。通常在符号表中存放具体位置的信息是按该变量的存储区类分别依出现先后的次序排列下相对该存储区表头的相对位移量来表示的,例如,对于外部量(C语言为例):int a;float b;struct cc int d;float e;c;,其中a,b,c是3个外部量,d,e是结构分量,则在符号表中,这5个变量项有关存储位置的属性信息如图9.1所示:,6.符号的其他属性:(1)数组内情向量:包括数组类型、维数、各维的上下界、数组首地址(
8、2)记录结构型的成员信息:成员及成员排列次序确定结构型变量存储分配时所占空间的尺寸及确定该结构成员的位置(3)函数及过程的形参:每个函数或过程的形参个数、形参的排列次序及每个形参的类型都体现了调用该函数或过程属性。有关函数及过程的形参属性信息用来作调用过程的匹配处理和语义检查,6.2 符号表的组织,一.符号表的总体组织第1种:按照属性种类完全相同的那些符号组织在一起优点:每个符号表中存放符号的属性个数和结构完全相同缺点:一个编译程序将同时管理若干个符号表,增加了总体管理的工作量和复杂度,第2种:把所有语言中的符号都组织在一张符号表中优点:总体管理非常集中单一,且不同种类符号的共同属性可一致地管
9、理和处理缺点:增加了符号表管理的复杂度,假设有下列3类符号及其所需之属性:,第1种组织方法得到三张符号表如图9.2所示:,第2种组织方法得到一张符号表如图9.3所示:,第3种:折中方式是根据符号属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性按折中方式重新组织上例中的3类符号,可构成2张符号表如图9.4所示:,属性值3、4合并后如图9.5所示:,二.符号表项的排列1.线性组织:这种方法规定符号表中表项按它的符号被扫描到的先后顺序登录,例如,有一程序中出现符号的情况如下:abadcb,则符号表中表项排列将如图9.6所示:h表示该符号表之表头,是表的开始位置p表示该符号表的表
10、项是符号表当前的结束位置,2.排序组织及二分法:排序组织的符号表,就是在符号表中的表项按其符号的字符代码串(可以看成一个整数值)的值的大小从大到小(或从小到大)排列的关于排序表的表项建立及符号查找,通常采用“二分法”,对上述例子中的符号出现情况按排序组织得到的符号表将如图9.7所示:,3.散列组织:一个符号在散列表中的位置,是由对该符号进行某种函数操作(杂凑函数)所得到的函数值来确定的假设选定杂凑函数fhash,对符号代码值杂凑运算之后得到杂凑值是Vhash,可表示为:Vhash=fhash()设符号的散列位置Lhash则有:Lhash=mod(Vhash,N),其中N为散列表的表长一个具有符
11、号代码值为Vsymbol的表项散列如图9.8:,散列冲突:不同符号散列到同一表项位置的现象解决办法:表长N取一个素数、多次散列杂凑函数的选取是构造散列表的关键目前编译程序中,一般采用对符号代码的位操作作为杂凑函数,见得最多的是符号代码的字符段叠加或加权叠加以及符号代码的对折或多折等位操作,三.关键字域的组织在编译程序中,符号表的关键字域就是符号本身,它可以是语言的保留字,操作符号或标识符(包括变量名、函数名、记录结构标志等)规定外部规则的目的是考虑到操作系统、汇编程序及其需要联系的系统之间的匹配,而规定内部规则的目的是考虑到编译程序本身对标识符的识别和区分,比如上述C语言的关键字段长度可以是3
12、2个(其中31个是存放名字,余下一个是存放字符串结束标志,这是C语言处理所需要的),如图9.9所示:,既要保证关键字段的等长,又要减少甚至消除冗余,采用关键字池的索引结构是可取的例如,一组标识符:anexemplarof key-wordsfield,关键字段的组织结构如图9.10所示:,四.其他域的组织1.等长属性值域组织:可以取相应的数据类型表达属性值表示该符号布尔性质的属性域,可用1个bit位来表示,也可用1个布尔量表示:defined 1表示已定义defined 0表示没定义defined true 表示已定义defined false表示没定义表示符号的基本数据类型可以用3个bit位
13、来表示,也可用 1个整型量来表示(C语言为例):,data-type 3个bit位 char 0 0 0 short 0 0 1int 0 1 0 long 0 1 1unsigned 1 0 0 float 1 0 1double 1 1 0,data-type 整型值char 0 short 1int 2 long 3unsigned 4 float 5double 6,若一个函数是无参的,则该函数符号项中“函数形参”指针域值为“空”,若某个形式参数是它所属函数的最后一个形式参数,则该形参符号项中“函数形参”指针域值为“空”例如,有函数:func1(para1,para2,para3)fu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课件 06 符号 组织 管理
链接地址:https://www.31ppt.com/p-6599853.html