编译原理课件(hdu)CHAPTER 7(Symbol Table).ppt

编译原理课件(hdu)CHAPTER 7(Symbol Table).ppt

ID:51593425

大小:171.50 KB

页数:23页

时间:2020-03-25

编译原理课件(hdu)CHAPTER 7(Symbol Table).ppt_第1页
编译原理课件(hdu)CHAPTER 7(Symbol Table).ppt_第2页
编译原理课件(hdu)CHAPTER 7(Symbol Table).ppt_第3页
编译原理课件(hdu)CHAPTER 7(Symbol Table).ppt_第4页
编译原理课件(hdu)CHAPTER 7(Symbol Table).ppt_第5页
资源描述:

《编译原理课件(hdu)CHAPTER 7(Symbol Table).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Chapter7SymbolTable符号表的作用符号的主要属性符号表的组织符号表的管理符号表有多种(如保留字表、运算符表、常数表等),在这里主要关注标识符表,标识符表用来记录标识符的特征属性§7.1符号表的作用粗略地说,编译的分析阶段收集和更新符号表中的信息,综合阶段从符号表中获取信息2符号表的作用:收集标识符的属性信息,如类型信息语义检查的依据,如类型检查代码生成时地址分配的依据相对位置OFFSET存储区域标志(如C语言中的extern、static)目标代码生成之后,符号表就无用了3§7.2符号的主要属性标识符名是一个变量、函数或过

2、程的唯一标识,在符号表中符号名作为表项的唯一区别,一般不允许重名标识符的类型过程无类型函数、变量有数据类型4标识符的存储类别Fortran语言COMMON—公共存储区SAVE—函数或过程内部静态存储区C语言Static—文件或函数内部的静态存储Regist—寄存器存储5标识符的存储类别往往决定变量的作用域变量的作用域:一个变量在程序中起作用的范围如:(1)inta(2)intfunc(a,b)(3)floata;(4)intb(5){…(6)…a…(7)…(8)}在(6)这一点上,不处于inta的作用域,而是floata的作用域,引用的是

3、floata,而不是inta6标识符的存储分配信息如OFFSET数组的内情向量维数及每维的长度记录型变量的成员信息成员所占总空间及成员排列顺序函数或过程的形参形参个数、排列次序、形参类型7§7.3符号表的组织总体组织符号不同,属性信息不同有的差别大,如保留字和变量标识符有的差别较大,如变量符号和函数符号有的差别较小,如不同的变量标识符(简单变量和数组、记录)8编译程序对符号表的总体组织方式有三种:1、属性相同的符号组织在一起空间效率高,但表多,难管理2、所有符号组织在一张表中只有一张表,管理集中统一,但管理复杂,空间开销大3、根据属性相似

4、程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性9单张符号表的组织线性方式用一个线性表来存储符号信息,线性表中的每一个元素是一个记录,包含一个符号的属性信息具体实现可以是数组、链表等线性表又可分为有序和无序,各有优缺点10散列方式用一个散列表来存储符号信息,散列表中的每一个元素是一个记录,包含一个符号的属性信息散列函数h(s):s是符号,返回一个0—m-1的整数,n是符号个数,m是散列表的大小,一般n>=m例子:见P434图7.3411§7.4符号表的管理符号表的初始化初始化方法与符号表的组织方式有关线性方式:置表尾和表头的

5、位置相同散列方式:清除表中的所有表项值符号的查找无序线性表:顺序查找有序线性表:折半查找散列表:散列查找12符号的登录先查找,再登录无序线性表:在线性表尾部增加一个表项有序线性表:将增加的表项插入到线性表的相应位置散列表:根据散列函数寻找插入位置13嵌套过程或分程序结构中符号表的管理对于具有嵌套过程或分程序结构的语言,不同层次程序中定义的标识符有不同的作用域和可视性规则一般有两种组织符号表的方式,一是为每个过程或分程序建立独立的符号表;一是把各分程序符号组织在一张符号表中141、分表结构编译程序在扫描到嵌套过程或分程序的开始时,建立一张对

6、应的符号表2、单表结构在符号表中设立一个属性域用来登录符号所在分程序的层次15用下推链来组织同名标识符:下推链组织要求在进入一个内层分程序并发生重名标识符定义时,将当前符号表中外层的该符号表项下推到下推链中而在符号表被下推的表项处建立内层的同名标识符表项,退出分程序时,恢复下推链下推链中存放的是嵌套分程序中同名标识符的外层定义属性,这种结构不但符合作用域规则,也实现了可视性规则16例子:{inta;floatb,d;{intc;floata;{intd;floatc;{floatd;…a=b+c+d;…}c=a+d;}}}12345171

7、.a1int…b1float…d1float…c2int………182.a2float…b1float…d1float…c2int………a1int…193.a2floatb1float…d3int…c3float………a1int…d1float…c2int…204.a2float…b1float…d4float…c3float………a1int…d3int…c2int…d1float…215.a2floatb1float…d3int…c3float………a1int…d1float…c2int…22TheEnd!23

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。