标识符的作用.ppt_第1页
标识符的作用.ppt_第2页
标识符的作用.ppt_第3页
标识符的作用.ppt_第4页
标识符的作用.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

符号表,标识符的作用:声明部分:定义了各种对象及对应的属性和使用规则。程序体:对所定义的对象进行各种操作。,$id,idname,Idname,AttributeIR,必要性Token:新表符号表(种类、类型等信息):,有关符号表的操作:添加、作用域删除、查询处理符号表的模块:定义符号表数据结构定义符号表上的操作,符号表,符号表的作用:为语义检查和代码生成提供标识符的语义信息。标识符的处理思想:遇到定义性标识符时,在符号表中填写被定义标识符的符号项;当遇到使用性标识符时,用该标识符查符号表求得其属性。,标识符的特点,标识符的作用域:标识符有效的最大程序段嵌套作用域规则:当存在标识符的嵌套声明时,最近定义的属性为标识符的当前属性局部化单位:允许有声明的程序段,P:,Varx,y,z,Varx,m,n,x:=1;m:=x+1;,y:=x+1;,x:=0;,Q:,符号表的种类:全局符号表、局部符号表符号表的操作特点:在声明部分,定义标识符,要加入符号表在表达式或语句中,使用标识符,应查表查其属性。每个标识符在其作用域结束后,要删掉该属性表项体现嵌套作用规则和局部化,符号表处理技术,基本表组织结构:线性表结构:顺序查表法二叉树结构:平分查表法Hash表结构:散列查表法,符号表的局部化处理,思想:确定在某个程序点处有效的所有标识符属性表项。即每个局部化单位能确定其符号表。方法:二叉式局部符号表散列式全局符号表嵌套式局部符号表,二叉式局部符号表,组织结构:每个局部化单位构造一个符号表,每个符号表采用二叉树结构。具体实现:用栈(Scope)来保存活跃的局部化单位的符号表地址进入局部化区:创建一个新的空符号表,其地址压入scope栈遇定义性标识符:其属性加入当前栈顶符号表遇使用性标识符:从栈顶符号表依次往下查找退出局部化区:删掉栈顶符号表,二叉式局部符号表例子,1BEGINA:int;2BEGINA:real;3BEGINA:bool;A:=falseEND;A:=0.55;END;A:=100END,散列式全局符号表,组织结构:整个程序用一个符号表,采用外拉链散列表具体实现:符号表的局部化:嵌套作用域规则:设置计数器标记局部化单位:n:=0进入局部化单位:n:=n+1;定义性标识符:hash(Key)=pos;放入最前面位置使用性标识符:hash(Key)=pos;第一个遇到的退出局部化单位:删除局部化单位编号为n的标识符;n:=n-1;,散列式全局符号表例,1BEGINA:int;2BEGINA:real;3BEGINA:bool;A:=falseEND;A:=0.55;END;A:=100END,嵌套式局部符号表,组织结构:整个程序一个表,采用线性组织方式,用栈记录每个局部化单位符号表的头地址。具体实现:进入局部化单位:登记符号表头地址;level:=level+1;Scopelevel:=top;定义性标识符:登记标识符属性到符号表中;使用性标识符:从本层依次往下查;退出局部化单位:关闭本层符号表;top:=top+1;SymbTabletop:=(0,Scopelevel-1);level:=level-1;,嵌套式局部符号表例,ProcP()VARi,j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论