编译原理实验报告-语义分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档