编译原理实验报告-语义分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理课程实验报告实验3:语义分析
图2-1
本程序根据之前两个实验的结果进一步进行语义分析,主要是通过在第二个实验句法分析过程中添加语义分析功能完成的。
在代码编写之前,我将程序的功能模块分为界面及主控程序,实体类和工具类三大部分。
MyCompiler是整个程序运行的入口,是主控程序;ComplierFrame完成程序的界面,以及界面里事件的响应;Token是词法分析中词法单元的实体类;ErrorToken是错误的词法单元实体类;Symbol是句法分析中符号的实体类;Production是产生式的实体类;ErrorProduction是句法分析中产生错误的时候使用的产生式实体类;Id是标示符实体类,保存了语义分析后的标识符表;Node是语法分析树的节点类,帮助完成语法分析树的构造;LL类使用LL(1)分析法完成句法分析,同时完成语义分析;MyScanner完成了词法分析。
图2-2
得分
三、详细设计及实现
要求:对如下工作进行展开描述
(1)核心数据结构的设计
本程序使用了两个新的实体类,分别是Id和Node。
Id是标识符,里面也包含了该标识符在本程序中存储的地址和长度等信息。Id的属性如下:
private String name; //名
private String type;//基本类型
private int offset;//起始地址
private int length;//长度
开始
输入
词法分析
读入Token
尝试匹配
是否错误存储错误记录,处理栈顶与Token 序列
是否为语义符号
存储产生式,处理栈顶与Token 序列
判断动作符号执行语义动作
是否读到Token
末尾
打印结果
结束
分析结果以及错误报告:
图4-1 标识符表:
图4-2