欢迎来到天天文库
浏览记录
ID:12326161
大小:741.50 KB
页数:23页
时间:2018-07-16
《编辑原理_语义分析实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、语义分析实验报告姓名学号***专业软件工程班级1301目录语义分析实验报告1一、实验目的2二、流程图21、main()函数22、scaner()函数33、*factor()函数44、*term()函数65、*expression()函数76、statement()函数87、yucu()函数98、lrparser()函数10二、分析语义子程序11四、写出调试过程11一、老师给的调试例子:11(1)正确调试过程11二、其他测试例子12(1)正确调试过程12(2)错误调试过程一13(3)错误调试过程二14五、源代码15一、实验目的掌握语义分析器的设计和
2、开发方法,掌握将语法分析所学识别的语法成分变换成为中间代码的语义翻译方法,加深对语义分析原理的理解。二、流程图1、main()函数2、scaner()函数3、*factor()函数4、*term()函数5、*expression()函数6、statement()函数7、yucu()函数8、lrparser()函数三、写出调试过程(1)正确调试过程1.文件内容如下2.调试结果如下:先输出文件中的内容,然后进行词法分析词法分析成功后,进行语法和语义分析并输出三地址码二、其他测试例子(1)正确调试过程1.文件内容如下2.调试结果如下:先输出文件中的内容
3、,然后进行词法分析词法分析成功后,进行语法和语义分析并输出三地址码(2)错误调试过程一1.文件内容如下2.调试结果如下:先输出文件中的内容,然后进行词法分析词法分析成功后,进行语法和语义分析并输出三地址码(3)错误调试过程二1.文件内容如下2.调试结果如下:先输出文件中的内容,然后进行词法分析词法分析成功后,进行语法和语义分析并输出三地址码五、源代码#include#include#include#include#includestructquad{/
4、/四元式charresult[12];charag1[12];charop[12];charag2[12];};structquadquad[30];intcount=0;char*expression(void);charprog[200],token[9];charch;intsyn,p,m,n,sum=0;intkk=0,k=0;char*rwtab[6]={"function","if","then","while","do","endfunc"};voidscaner(){m=0;for(n=0;n<8;n++)token[n]='
5、';ch=prog[p++];while(ch=='')ch=prog[p++];if((ch>='a'&&ch<='z')
6、
7、(ch>='A'&&ch<='Z')){while((ch>='a'&&ch<='z')
8、
9、(ch>='A'&&ch<='Z')
10、
11、(ch>='0'&&ch<='9')){token[m++]=ch;ch=prog[p++];}token[m++]=' ';p--;syn=10;for(n=0;n<6;n++){if(strcmp(token,rwtab[n])==0){syn=n+1;break;}}/*endoff
12、or*/}elseif(ch>='0'&&ch<='9'){sum=0;while(ch>='0'&&ch<='9'){sum=sum*10+ch-'0';ch=prog[p++];}p--;syn=11;}elseswitch(ch){case'<':m=0;token[m++]=ch;ch=prog[++p];if(ch=='='){syn=22;token[m+1]=ch;}else{syn=20;ch=prog[--p];}break;case'>':m=0;token[m++]=ch;ch=prog[++p];if(ch=='='){s
13、yn=24;token[m++]=ch;}else{syn=23;ch=prog[--p];}break;case'=':m=0;token[m++]=ch;ch=prog[++p];if(ch=='='){syn=25;token[m++]=ch;}else{syn=18;ch=prog[--p];}break;case'!':m=0;token[m++]=ch;ch=prog[++p];if(ch=='='){syn=22;token[m++]=ch;}else{syn=-1;ch=prog[--p];}break;case'+':syn=1
14、3;token[0]=ch;break;case'-':syn=14;token[0]=ch;break;case'*':syn=15;
此文档下载收益归作者所有