【精品】实验三语义分析.doc

【精品】实验三语义分析.doc

ID:49410812

大小:58.00 KB

页数:11页

时间:2020-03-02

【精品】实验三语义分析.doc_第1页
【精品】实验三语义分析.doc_第2页
【精品】实验三语义分析.doc_第3页
【精品】实验三语义分析.doc_第4页
【精品】实验三语义分析.doc_第5页
资源描述:

《【精品】实验三语义分析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三语义分析一、实验目的采用各种设计方法实现语义分析和中间代码生成。二、实验内容用C语言或者其他的高级语方作为宿主语言完成C语言的语义分析和中间代码生成。三、实验环境VC++6.0四、实验原理三地址码的几种常见指令1.X=YOPZ的赋值指令,其中OP是一个双目运算符或逻辑运算符。2.X=Y的复制指令3.无条件转移指令GOTOL把下步要执行的带有标号L的三地址指令4.IFXGOTOL或IFFALSEXGOTOL的条件转移指令。5.IFXRELOPYGOTOL的条件转移指令。五、运行结果分析结果正确:Pleaseinputco

2、deandendwithcharacter9:wegina:=3*2*5;x:=/c;endttk;2=3+tla=t2±3=a+bt4=t3/cx=t4puccessPressAnykeytocontinue分析结果出错:c「MC:Docu>entsandSettingsAdMinistrator桌面Debugliyanling.exe*Pleaseinputcodeandendwithcharacter9U9•begina:=5*6*7;b=*b;tttl=5*6t2=tl+7a=t2lac

3、kJ=:9Pressanykeytocontinue六、程序实现#include#includestructfchar^result;char*agl;char*op;char*ag2;}quad[20];charprog[80],token[8];charch;intsyn,p,m,n;intkk=O;intk=0;intschain=O;char*numtab[6]=r‘beginTifTthenTwhileTdoTen

4、8];p=(char*)malloc(8);k++;itoa(k,m,10);strcpy(p+l,m);p[O]='t';return(p);voidemit(char*result,char*agl,char*op,char*ag2){inti;i=O;while(quad[i].result!=NULL)quad[i].result=result;quad[i].agl=agl;quad[i].op=op;quad[i].ag2=ag2;printf(n%s=%s%s%sn,quad[i].result,quad[

5、i].agl,quad[i].op,quad[i].ag2);}intscaner(charprog[]){inti;for(m=0;m<8;m++)token[m]=NULL;m=0;ch=prog[p++];while(ch==f')ch=prog[p++];if((ch>=,a,)&&(chv二'z')){while(((ch>=!a!)&&(ch<=,z,))ll((ch>=,0,)&&(chv=9))){token[m++]=ch;ch=prog[p++];}token[m++]=,,;n=0;for(i=0;

6、i<6;i++)if(strcmp(token,numtab[i])==0)switch(i)case0:syn=l;n++;break;case1:syn=2;n++;break;case2:syn=3;n++;break;case3:syn=4;n++;break;case4:syn=5;n++;break;case5:syn=6;n++;break;}if(n==0)syn=10;p—;}elseif(ch>=,0'&&chv=9){n=0;while(ch>='0'&&chv='9‘){n=n*10+(ch-,0,)

7、;ch=prog[p++];}syn=l1;p—;}elseswitch(ch){case!<*:token[m++]=ch;ch=prog[p++];if(ch==,>,){token[++m]=ch;syn=22;}elseif(ch==*=){token[++m]=ch;syn=21;}else{p-;syn=20;}break;case、':token[m]=ch;ch=prog[p++];if(ch===f){token[++m]=ch;syn=24;}else{p—;syn=23;}break;casetoken

8、[m]=ch;syn=13;break;caser:token[m]=ch;syn=14;break;casetoken[m]=ch;syn=15;break;case7':token[m]=ch;syn=16;break;casetoken[m++]=ch;ch=prog[p++];if

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。