1 / 23
文档名称:

编译原理电子课件教案-第9章-符号表.pptx

格式:pptx   大小:199KB   页数:23页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理电子课件教案-第9章-符号表.pptx

上传人:3346389411 2018/6/23 文件大小:199 KB

下载得到文件列表

编译原理电子课件教案-第9章-符号表.pptx

文档介绍

文档介绍:第9章符号表管理技术
在编译的各个阶段经常要收集、使用出现在源程序中的各种信息,通常把这些信息用一些表格进行记录、存储和管理,如常量表、数组信息表等等,这些表统称为符号表。
符号表的作用∶
保存各类标识符的属性
检查语义的正确性
作为目标代码生成阶段地址分配的依据
符号表的作用是通过插入和检索符号表中记录的标识符属性来实现的。这些属性(如名字、类型、维数等)在声明语句中可直接找到,有些可根据程序中标识符出现的上下文间接地获得。
在编译时,源程序中每出现一次标识符,就要与符号表打一次交道,主要工作是查表和存取操作,因此,与符号表的交互占据了大量的编译时间。所以,如何有效地操作符号表直接影响编译的效率。
符号表的作用∶检查语义的正确性
上下文敏感成分的分析实质上是语法分析的内容。但我们的语法分析是以上下文无关文法为基础的,没有考虑上下文敏感成分的处理,所以必须在语义分析时加以考虑。
属于上下文敏感的语法规定包括:
标识符通常先定义后使用,但在同一个块中,标识符不应重复定义;
实参表中的实参个数与类型必须与相应形参表中的形参个数与类型一致;
表达式中运算对象的类型必须与运算符相容,等等。
第9章符号表管理技术
符号表的作用∶作为目标代码生成阶段地址分配的依据。
对于变量标识符,在目标代码生成时需要确定其存储分配的位置。主要依据符号变量的存储类别及被定义的位置来确定。
第9章符号表管理技术
何时建立和访问符号表
有的编译程序中,符号表在词法分析阶段创建,符号表此时只含有标识符的名字,其它属性要在语义分析阶段填入。
当从源程序中识别出一个标识符时,就以此名字查符号表,若表中尚无此登记项,则将该名字列入表中。
语法分析阶段只检查源程序语法的正确性,一般不使用符号表。
符号表可在词法分析时创建,也可在语义分析时创建。
何时建立和访问符号表
有的编译程序,只在语义分析时才创建符号表。在语义分析阶段,遇到声明语句时会根据标识符的类别、名字属性创建符号表记录。同时对源程序代码需要检查语义的正确性。
在符号表中记录的标识符的属性信息会在代码生成阶段用于产生目标代码的指令序列。
因此,直到语义分析和代码生成阶段,许多与变量有关的属性才能够相继填入符号表。
总之,如果在词法分析阶段创建符号表,只能在符号表中将标识符的名字填入符号表,而其他属性则要在语义分析和代码生成阶段填入。如果在语义分析阶段创建符号表,那么与符号表打交道的就仅局限于语义分析和代码生成部分。
符号表的组织和内容
符号表的管理程序应该具有快速查找、快速删除、易于使用、易于维护的特点。符号表具体包含哪些内容,属性的种类和多少在一定程度上取决于程序设计语言的性质。
符号表基本上都是由一些表项组成的二维表格,每个表项可分为两部分:
第一部分是名字域,用来存放符号的名字;
第二部分是属性域,用来记录与该名字相对应的各种属性和特征。
符号表的组织和内容
几种主要属性通常是需要的。




(目标地址)

符号表管理技术
名字:名字必须常驻在表中,因为它是在语义分析和代码生成中识别一个具体标识符的依据。在符号表的组织中,一个要解决的重要问题是标识符长度的可变问题。对标识符名字的处理要考虑语言中对标识符长度的规定是定长还是不定长。根据标识符的定义特点,通常采用的存储方法有两种:
①定长存贮方法,即为标识符名字域规定一个宽度,标识符按左对齐方式存放在其中,特点是简单且存取速度快,缺点是空间利用率低,标识符长度不能超过名字域的宽度。
②集中存贮方法,即开辟一个存放所有标识符的缓冲区,而在标识符名字域中只存放标识符在缓冲区中的偏移地址和标识符的长度。特点是存贮效率高,标识符无长度限制,但存取效率低。
ComputerX1FORM1
名字位置
名字长度
其它属性
1
8
9
2
17
5


图1 集中存贮方法符号表
目标地址:标识符主要作为变量名字。程序中每个变量都必须有一个相应的目标地址,该地址是为该变量分配的内存地址(可能是相对的)。
当声明一个变量时,就要为该变量分配内存地址,并将其分配的地址填入符号表中。当该变量在程序的其它处被引用时,可以从符号表中查询该地址,并填入存取该变量值的目标代码中。
对于采用静态存储分配的语言(如FORTRAN),分配的地址是按连续的顺序分配的。
对于采用动态存储分配的语言,每个程序块内的变量连续分配,这是一个相对地址,运行时还要根据该程序块分配的数据区的起始地址和变量的相对地址计算出变量的绝对内存地址。
如果标识符表示的是函数名或子程序名,则目

最近更新

面向古代汉语的句本位句法分析研究的开题报告.. 2页

2024年普通高考工作方案(精选7篇) 20页

面向冷库门应用的永磁同步电机调速控制系统研.. 2页

面向产品质量改进的多目标稳健性设计优化的开.. 2页

面向云的数据安全存储与查询方法研究开题报告.. 2页

2024年普通员工辞职申请书(集合15篇) 20页

2024年普通员工辞职报告合集 19页

2024年普通员工辞职信员工离职辞职信 4页

面向RFID的隐私安全性研究与协议设计中期报告.. 2页

面向IP宽带城域网的网络优化与流量监控研究的.. 2页

2024年普通员工年终工作总结 39页

2024年普通员工个人述职报告(合集15篇) 37页

非铂催化剂的合成与性能研究的开题报告 2页

非自反空间中的极大单调算子与自对偶凸泛函的.. 2页

非病理性近视黄斑区视网膜结构和功能改变的临.. 2页

2024年晨景记叙文 3页

2024年晚自习迟到检讨书15篇 28页

2024年晚安正能量问候语 15页

2024年晚会计划书(集锦14篇) 62页

非匹配不确定非线性系统自适应模糊控制的开题.. 2页

2024年晚上跑步到底好不好 6页

间歇性导尿术-课件 29页

非肝硬化性门脉高压的诊断要点课件 37页

2024年晋升主管演讲稿 21页

2024年春雷周记(通用14篇) 11页

青藏高原南部湖泊表层沉积孢粉组合的环境意义.. 2页

青花菜对重金属铅、镉吸收与积累特性研究的开.. 2页

2024年春运安全大检查工作总结范文(通用15篇.. 68页

哈师大附中2024届高三第三次模拟考试英语试卷.. 11页

孕妇学校艾梅乙培训课件 32页