哈尔滨工业大学《编译原理》Lab2:杨文昊的符号表与散列表实现
需积分: 0 64 浏览量
更新于2024-08-05
收藏 417KB PDF 举报
本篇实验报告是哈尔滨工业大学计算学部春季学期《编译原理》课程中关于Lab2语义分析的作业,作者杨文昊(学号1190303027)完成了部分内容。实验的核心知识点集中在符号表的设计和实现上。
首先,亮点一涉及符号表的实现,采用散列表数据结构。散列表构建算法利用哈希函数计算键值,将符号(如变量或函数名)映射到内存的特定位置,提高了查找和插入操作的效率。如果遇到哈希冲突,通过链表解决,确保了数据的正确存储。
亮点二进一步细化了符号表的设计,将变量和函数分开存储,以varTable和funcTable两个表进行管理。变量存储在varTable中,每个变量的结构体还包含一个额外的FieldList_链接,用于记录其相关的类型信息。而函数表funcTable同样通过FieldList_链接处理参数。这种分离设计有助于优化存储空间并方便维护。
亮点三展示了选做部分的完成情况,包括函数不仅可以定义,还可以声明,以及对结构类型的等价性检查。结构体类型的处理与实验指导略有不同,不仅存储基本类型和数组的基本信息,还包括结构体的名字和FieldList,这些信息通过链接结构体单元来组织。
编译与运行阶段,重点再次强调了符号表的散列表实现,确保了程序的高效执行。同时,通过一系列接口函数如initTable、insertTable、insertFunc、insertParam等,实现了符号表的创建、更新和查询功能。
在结构体的处理上,与指导书中不同的是,除了基本的name和FieldList,还包含了结构体的内部域定义,如基本类型、数组类型信息和结构体类型。此外,还提到一个名为hashEqual的辅助函数,用于在符号表中处理结构体类型的链接。
这篇实验报告展示了作者对编译原理中符号表管理技术的深入理解和应用,特别是通过散列表优化存储和查找,以及对不同类型数据的有效组织。这是一份实用且理论与实践相结合的优秀学习成果。
2023-08-29 上传
2023-06-03 上传
2024-10-18 上传
2024-10-18 上传
2024-10-18 上传
2024-10-18 上传
苏采
- 粉丝: 17
- 资源: 300
最新资源
- 磁性吸附笔筒设计创新,行业文档精选
- Java Swing实现的俄罗斯方块游戏代码分享
- 骨折生长的二维与三维模型比较分析
- 水彩花卉与羽毛无缝背景矢量素材
- 设计一种高效的袋料分离装置
- 探索4.20图包.zip的奥秘
- RabbitMQ 3.7.x延时消息交换插件安装与操作指南
- 解决NLTK下载停用词失败的问题
- 多系统平台的并行处理技术研究
- Jekyll项目实战:网页设计作业的入门练习
- discord.js v13按钮分页包实现教程与应用
- SpringBoot与Uniapp结合开发短视频APP实战教程
- Tensorflow学习笔记深度解析:人工智能实践指南
- 无服务器部署管理器:防止错误部署AWS帐户
- 医疗图标矢量素材合集:扁平风格16图标(PNG/EPS/PSD)
- 人工智能基础课程汇报PPT模板下载