编译原理之符号表

上传人:xiao****1972 文档编号:245201877 上传时间:2024-10-07 格式:PPT 页数:28 大小:334.11KB
返回 下载 相关 举报
编译原理之符号表_第1页
第1页 / 共28页
编译原理之符号表_第2页
第2页 / 共28页
编译原理之符号表_第3页
第3页 / 共28页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第9章 符号表,9.1 符号表的作用和地位,9.2 符号的主要属性及作用,9.3 符号表的组织,9.,4,符号表的管理,在编译程序中符号表用来存放语言程序中出现的有关标识符的,属性信息,,符号表中所登记的信息在编译的不同阶段都要用到。,在语义分析中,符号表所登记的内容将用于,语义检查,(如检查一个名字的使用和原先的说明是否一致)和产生中间代码。,在目标代码生成阶段,当对符号名进行地址分配时,符号表是,地址分配的依据,。对一个多遍扫描的编译程序,不同遍所用的符号表也往往各有不同。因为每遍所关心的信息各有差异。,9.1 符号表的作用和地位,9.2 符号的主要属性及作用,几种通常都是需要的。,1 符号名,2 符号的类型,3 符号的存储类别,4 符号的作用域及可视性,5 符号变量的存储分配信息,6 符号的其它属性()数组内情向量;,()记录结构型的成员信息;()函数及过程的形参。,对符号表的操作,创建符号表,:,在编译开始时或进入一个分程序,插入表项,:,在遇到新的标识符声明时进行,查询表项,:,在引用声明过的标识符时进行,修改表项,:,在获得新的语义值信息时进行,删除一个或一组无用的项,释放符号表的空间,:,在编译结束前或退出一个分程序,9.3,符号表的组织,多张表:把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表,.,一张表:把所有语言中的符号都组织在一张符号表中。组成一张包括了所有属性的庞大的符号表,.,“折衷”组表:是根据符号属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性,.,9.3.1,符号表的总体组织,9.3.2,符号表项的排列,符号表作为一个多元组,表中元组的排列组织是构造符号表的重要成分。,在编译程序的整个工作过程中,符号表被频繁地用来建立表项,查找表项,填充和引用表项的属性。,因此表项的排列组织对该系统运行的效率起着十分重要的作用。,在编译程序中,符号表项的组织传统上采用三种构造方法。即线性法,二分法及散列法。,符号表项的组织,线性法,二分法,散列法,.,.,a.,.b.,.a.,.d.,.c.,.b.,.,线性表,排序组织及二分法,散列组织,杂凑函数,多次散列,9.3.3,关键字域的组织,符号表的关键字域(段)就是符号本身,如保留字、标识符名称等。,等长关键字域(段)符号表,不等长关键字段符号表-采用关键字池的索引结构。,9.3.4,其它域的组织,等长属性值域组织,可以取相应的数据类型表达属性值.,用指针或指针链来构造符号之间关系的属性,有函数,func1(para1,para2,para3),func2(),设有一个结构,struct tag1,.member1,.member2,struct tag2,.member3,.member4,.,.member5,member6,member7,stv;,不等长属性值域的组织,符号表的某些属性值是不等长的,例如内情向量(数组的维数、每维的元素个数)属性值是典型的不等长属性值.,对于不等长属性值的属性域,一般不把所有属性值都存放在符号表项的某个域内,而另设相关空间存放属性值.,设有下列两个数组,array1(subscript1,subscript2),array2(subscript3,subscript4,subscript5,subscript6),9.3.5,下推链域的组织,在程序语言的结构中,分程序的分层结构允许同名标识符具有的生命周期发生重叠。,为实现这种同名标识符的语义功能,符号表中需要设立下推链的组织。,设有一个程序如下:,.,int i;.(1),.,func().(2),.,float i;.(3),.,.(4),int i5;.(5),.,.(6),int i;.(7),.,.i.(8),.i.(9),9.4,符号表的管理,符号表的初始化,符号表的表长渐增,符号表的表长固定,符号的登录,是否登录,登录位置,符号的查找,符号表中分程序结构层次的管理,9.4.4,分程序结构的符号表管理,对于具有分程序型结构的语言程序,不同层次分程序中定义的标识符号具有不同的作用域和不同的可视性规则。,通常对于具有分程序结构的语言可用两种方式组织它们的符号表:,一是对每个分程序建立一个独立的分表结构的符号表;,一是把各分程序符号组织在一张单表结构的符号表中,分表结构的组织管理,其基本思想是,每当编译程序扫描到一个分程序结构开始时,为该分程序建立一张符号表,在该分程序中定义的标识符,都被登录在该符号表中。,当编译程序扫描到一个分程序的结束时,编译程序释放为该分程序所建立的符号表。这种符号表的分表结构与源程序的分程序层次结构一一对应,单表结构的组织管理,其基本思想是,所有分程序中定义的标识符都集中在单张符号表中。为了实现分程序构造中标识符的作用域和可视性规则的要求,在符号表中可设立一个属性域用来登录符号所在分程序的层次,进入分程序时,层次要增加一层.在退出一个分程序时,层次降低一层,且需要把符号表中,所有在退出的分程序中登录的符号项清除。,作业:,符号表的用是什么?,符号表的组织方式有哪几种?,如何建立和查找符号表?,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!