编译原理实验报告 语义分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
编译原理课程实验报告实验3:语义分析
. .
. .
.
.
要求:对如下工作进行展开描核心数据结构的设(1
Nod本程序使用了两个新的实体类,分别I的属性I是标识符里面也包含了该标识符在本程序中存储的地址和长度等信息I下/privat String name;
/基本类privat String type/起始地privatin offset/长in length privat/该数组各维的长publi List
的属性如下Nod是语法生成树的节点Nod
节点/privat String nam父节/privat Node fathe/子节publi List
Map
使用哈希表这是因为各个节点的属性不是统一的的类型是哈Ma其atrribut以方便地创建、使用属性
主要功能函数说(2
因为语义分析过程与语法分析同步进此次试验的语义分析部分并没有新的功能函数
文法符号匹配的过程中,插入语义的,代码都是在第二次第二次实验的基础上,LL(l的功能发作代码。所以,只有句法分析函analysis(List
(3程序核心部分的程序流程图.
.
是否否
是否
是
3-1
图四、实验结果及分析得分
.
.
要求:对实验结果进行描述和分析,基本内容包括针对一测试程序输出其语义分析结果输出针对此测试程序对应的语义错误报告输出针对此测试程序经过语义分析后的符号表对实验结果进行分析注:其中的测试样例需先用已编写的词法分析程序进行处理
测试程序void main () {
double d;
int a[2][3];
d = 0;
a[0][1] = 2;
if (d == 0) {
a[0][1] = d;
}
else {
a[1][1] = 0;
}
while (a[0][1]<3) {
++a[0][1];
}
}
分析结果以及错误报告:. .
4-1 图
标识符表:
4-2
图
实验结果分析:. .
.