《符号表与错误处理》PPT课件

《符号表与错误处理》PPT课件

ID:45582698

大小:258.50 KB

页数:47页

时间:2019-11-15

《符号表与错误处理》PPT课件_第1页
《符号表与错误处理》PPT课件_第2页
《符号表与错误处理》PPT课件_第3页
《符号表与错误处理》PPT课件_第4页
《符号表与错误处理》PPT课件_第5页
资源描述:

《《符号表与错误处理》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章符号表与错误处理8.1符号表8.2错误处理8.1符号表8.1.1符号表的作用8.1.2符号表的组织8.1.3分程序结构语言的符号表建立8.1.4常用符号表结构8.1.1符号表的作用一、作用:词法分析阶段:建立符号表,查找符号表;语法分析阶段:获取单词属性信息;语义分析时:符号表中的信息可以用于语义检查;代码优化时:用符号表提供的信息选出恰当的代码进行优化;目标代码生成时:编译程序将依据符号表中的符号名来分配目标地址。8.1.1符号表的作用二、内容:名字(标识符):相关信息:名字的种属(常数、变量、数组、

2、标号等)名字的类型特征给此名字分配的存储单元地址、与此名语义有关的其它信息等8.1.1符号表的作用三、基本操作:(1)判断一个给定的名字是否在表中;(2)在表中填入新的名字;(3)对给定的名字访问它在表中的有关信息;(4)对给定的名字填入或更新它在表中的某些信息;(5)从表中删去一个或一组无用的项。8.1符号表8.1.1符号表的作用8.1.2符号表的组织8.1.3分程序结构语言的符号表建立8.1.4常用符号表结构8.1.2符号表的组织直接方式间接方式按标识符的种属组织符号表8.1.2符号表的组织一、直接方式直

3、接填入源程序中定义的标识符及相关信息,各栏的长度固定。8.1.2符号表的组织二、间接方式:1、单独设置一个字符串数组来存放所有的标识符2、在符号表的名字栏中设置指针和整数值三、按标识符的种属组织符号表如简单变量名表、数组名表、过程名表等。例如,下面的函数:intf(inta,intb){intc;if(a>b)c=1;elsec=0;returnc;}8.1.2符号表的组织图8-3按标识符种属组织的各种符号表(a)简单变量名表;(b)常数表;(c)函数入口名表符号表信息栏的组织方式固定信息内容:适合名字栏中的

4、标识符按种属分类;仅记录信息存放地址:适合符号表的名字不分种属;符号表外另设一组存储空间,并在符号表信息栏中放一指针来指向这个存储空间始址图8-4记录数组内情向量的符号表8.1符号表8.1.1符号表的作用8.1.2符号表的组织8.1.3分程序结构语言的符号表建立8.1.4常用符号表结构8.1.3分程序结构语言的符号表建立采用分层建立和处理符号表的方式(PASCAL程序)方法:(1)在分程序首部扫描到标识符时,查本层符号表,登记一项。(2)在分程序的语句中扫描到标识符时,查本层及其外层符号表。8.1.3分程序结

5、构语言的符号表建立一、符号表的组织方式分层组织符号表的登记项,使各分程序的符号表登记项连续地排列在一起。(2)建立“分程序表”,记录各层分程序符号表的有关信息。登记项由三个字段组成:OUTERN:指明该分程序的直接外层分程序的编号;COUNT:记录该分程序符号表登记项的个数;POINTER:指向该分程序符号表的起始位置。8.1.3分程序结构语言的符号表建立二、符号表的构建设置一个临时工作栈。每进入分程序,就在分程序表中登记一项,并使之成为当前的分程序。当扫描到定义性出现的标识符时,将名字及其有关信息填入临时工

6、作栈的顶部,把当前分程序相应登记项的COUNT值加1。当分程序结束时,将临时工作栈中的本层分程序全部登记项移至正式的符号表中,退出本层分程序。重复步骤(2)--(4),直至扫描完整个源程序为止。例8.1一示意性源程序如下:(1)PROGRAMPP(input,output);(2)COUNTnorw=13;(3)VARll,kk:integer;(4)word:ARRAY[1..norw]OFchar;(5)PROCEDUREgetsym;(6)VARi,j:integer;(7)PROCEDUREgetch

7、;(8)BEGINEND;{getch}(9)BEGIN(10)j:=1;kk:=i+j(11)END;{getsym}(12)BEGIN(13)END.{pp}回答以下问题:(1)画出“扫描到getsym过程体之前”的栈符号表;(2)画出“扫描完getsym过程说明(即扫描完END;{getsym})”时的栈符号表。[解答]假定所有的名字在数据区中都只需要一个单元。图8-5“扫描到getsym过程体之前”的栈符号表图8-6“扫描完getsym过程说明”的栈符号表8.1符号表8.1.1符号表的作用8.1.2符

8、号表的组织8.1.3分程序结构语言的符号表建立8.1.4常用符号表结构8.1.4常用符号表结构1.线性符号表2.有序符号表3.散列符号表8.1.4常用符号表结构1.线性符号表按标识符出现的先后次序建立符号表,查找效率较低.2.有序符号表把标识符按照一定的顺序进行排列。采用折半查找法,不适合动态查找符号表8.1.4常用符号表结构2.有序符号表二叉排序树结构8.1.4常用符号表结构3.散列符号表适用于边

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

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

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