- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章符号表的组织与
第6章 符号表的组织与管理 本章内容概要: 符号表的作用 符号表的组织 符号表的建立与查找 第6章 符号表的组织与管理 什么是符号表? 6.1 符号表的作用 6.1.1符号表的组成 第一部分是名字栏,其内容为标识符名,也称为主栏。一个标识符可以是变量名,函数名,过程名等。由若干个非空格字符串组成,且通常情况下在整个程序中唯一。 第二个部分是与名字有关的信息栏,每个信息栏又包括若干子栏和标志位,用来标记标识符的不同特征 6.1.2符号表上的操作 (1)往表中填入一个新标识符。 (2)对给定标识符, 1.查找它是否已在表中。 2.访问它的某些信息。 3.网表中填入更新某些信息。 (3)更新或者删除一个或一组无用的项。 6.1.3符号表的作用 (1)当编译程序扫描到语言程序中标识符的说明部分时,根据说明语句的功能,符号表应能记录标识符的相关信息。 例如,某语言程序中具有如下说明语句: int x,y[10]; float w; 编译程序首先检查符号表,看符号表的名字栏是有已有x,y,w,若没有,将其顺序写入名字栏,并在信息栏依次写每个标识符的特征。如X是一个整型简单变量等。 6.1.3符号表的作用 (2)符号表内容为上下文语义的合法性检查提供依据。 例如:在C语言中有以下说明语句 int a[2,3]; float a[4,5]; int a[2,3]; 通过查询符号表,说明a依据在符号表中被登陆为一个具有2*3个元素的整型数组,接着扫描到float a[4,5]时,发现A已经在符号表中,此时检测a重定义错误,继续扫描到第2个int a[2,3]时,再次出现a已在符号表中,发现a第2次重定义冲突。 6.1.3符号表的作用 (3)生成目标代码时,符号表中的内容又是编译程序分配存储地址的依据。 根据符号表中关于符号和信息的说明,编译程序可以分别将符号表中的符号名安排在不同的存储区域,如公共区,静态存储区,动态存储区等。 6.2 符号表的组织 按照处理对象的特点,符号表的组织方式一般可以分为直接方式和间接方式。 直接方式——指在符号表中直接填入源程序中定义的标识符及其相关信息,如图6.1所示。 6.2 符号表的组织 间接方式——指单独设置一个字符串数组,其中存放所有标识符,在符号表的名字栏中设置两项内容:指针和整数,指针指向标识符在数组中的位置,整数值表示标识符的长度。如图6.2表示符号表的间接组织方式。 6.2 符号表的组织 另一类组织方式是按标识符的种属,如简单变量、数组、过程名。 按标识符种属组织的各种符号表见课本P133 符号表信息栏的组织方式 符号表信息栏的组织方式分为两类: (1) 固定信息内容 (2)仅记载信息地址 符号表的组织 如果名字栏中的标识符按种属分类,由于同类标识符具有的基本特征一致,可以将这些信息一一记录在信息栏中。 如果符号表中名字不分种属,由于不同种属的标识符特征不一致,他们所需存储的信息也不一直,不容易确定一个特定长度的空间统一安排,可以在表外设一组存储空间,在信息栏设一个指针,指向表外存储空间的地址。 符号表的组织 设置符号表时注意事项: 考虑标识符在源程序中的不同作用域。作用域不同,信息栏的内容也不同。 符号表中也能体现哪些标识符可以使用,哪些标识符不能用。 符号表的实现方法: 实现符号表的一种简洁而又实用的方法是链式表结构。 6.3 符号表的建立和查找 建立符号表可以用不同的数据结构: 线性表 搜索树(二叉搜索树、AVL树、B树) 散列表 …… 线性表 线性表——是一种基本的数据结构,能提供3种基本的操作,并且易于实现。表的大小是线性的,其查找和删除的效率比较稳定,因此这种方式很实用。 特点: 线性表中每一项的先后顺序可以按先来先服务的原则排列。 若线性表中含有n项名字和信息,查找其中一次的平均比较次数为n/2,查询效率低。但结构简单且节省空间。 二分查找和二叉树 为了提高查找速度,符号表中的表项按符号的代码串的值(可以作为一个整数值)从小到大或者从大到小排列。 二分查找——每次查找后,范围就减少1/2,下一次继续查找,若未找到,仍将查找范围一分为二。 至多比较1+log2 n次 缺点:花费时间和空间 二分查找和二叉树 二叉树——符号表的每一项都是一个节点p,每个结点有左、右两个分支,分别用两个指针P.left,P.Right来表示。名字栏的内容作为结点的值,用P.val表示,如图所示: 二分查找和二叉树 组成二叉树的原则: 左分支的
您可能关注的文档
最近下载
- 第15章量子物理-效应.pptx VIP
- 精品解析:浙江省杭州市余杭区2024-2025学年八年级10月月考语文试题(原卷版).docx VIP
- 镧热还原法年产35吨稀土金属钐的工艺设计.docx VIP
- 镧热还原法年产25吨稀土金属钐的工艺设计.docx VIP
- 2024年江西省南昌市保安员上岗资格证考试题库及答案(真题) .pdf VIP
- 2025年北师大版一年级数学上册月考试卷含答案.doc VIP
- 劳动教案(全册)五年级上册——人民出版社(表格式).pdf VIP
- 2025年部编版七年级 语文(上下全册)字词拼音及解释 .pdf VIP
- 安全标识中英文可直接打印.doc VIP
- 退役士兵驾驶技能培训服务投标方案(技术标).pdf VIP
文档评论(0)