编译原理实验报告 4 实验四 语义分析实验报告一、 程序调试过程(一)、语法调试过程,经过格式调整后,对程序进行调试,发现没有错误。(二)、逻辑调试过程 在完成语法调试过程后,根据实验参考资料提供的输入,得到如下输出结果:这与实验参考资料里面提供的输出结果不符,因此说明存在逻辑错误。这一输出结果显示程序只是完成了词法分析,并没成功完成语法分析和语义分析,同时没有输出符合要求的三地址指令。对程序做了如下修改:1、While(ch= )改为while(ch= |ch=n|ch=t)2、char*expression(void);char prog200,token8; 改为char*expression(void);char prog200,token9;3、void scaner() m=0; for(n=0;n8;n+) tokenn=0;改为void scaner() m=0;for(n=0;n9;n+) tokenn=0;token数组的最小大小应该设置为9,因为在rwtab数组中的6个关键字中最大长度是8,而在字符串的结尾有一个结束标记0,因此token数组的实际大小要比最大字符串的大小至少大1,即为9(8+1)。实验结果:二、流程图