1 / 11
文档名称:

编译原理 词法分析器 实验报告.doc

格式:doc   大小:286KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理 词法分析器 实验报告.doc

上传人:花双韵芝 2024/3/25 文件大小:286 KB

下载得到文件列表

编译原理 词法分析器 实验报告.doc

相关文档

文档介绍

文档介绍:该【编译原理 词法分析器 实验报告 】是由【花双韵芝】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【编译原理 词法分析器 实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。词法分析器实验报告实验目的:设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。功能描述:该程序要实现的是一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示 “Error!”,然后跳过错误部分继续进行)设计思想:设计该词法分析器的过程中虽然没有实际将所有的状态转移表建立出来,但是所用的思想是根据状态转移表实现对单词的识别。首先构造一个保留字表,然后,每输入一个字符就检测应该进入什么状态,并将该字符连接到d串后继续输入,如此循环,最后根据所在的接受状态以及保留字表识别单词。符号表:记号类别属性值ws--const保留字1var保留字1call保留字1begin保留字1if保留字1while保留字1do保留字1odd保留字1end保留字1then保留字1procedure保留字1=运算符2<运算符2<=运算符2<>运算符2>运算符2>=运算符2*运算符2+运算符2-运算符2/运算符2:= 运算符ident 标识符number 常数( 分隔符) 分隔符; 分隔符, 分隔符. 分隔符状态转换图:①标识符及保留字:letterordigittStart letter23455555number:+|-digit6012345Edigit③关系操作符:start<=(<=,2)>(<>,2)other=*(<,2)(=,2)>:=(>=,2)other*(>,2)=(:=,2)④分隔符:;start(;,5)(),.((,5)(),5)⑤算术运算符:start(,,5)(.,5)+(+,2)-(-,2)*/(*,2)(/,2)使用环境:Windowsxp下的visualc++程序测试:input1:inta,b;a=b+2;input2:while(a>=0)do7x=x++23;end;input3:begin:x:=9ifx>0thenx:=x+1;whilea:=0dob:=2*x/3,c:=a;end;output1:output2:output3:3,int1,while1,begin3,a5,(errorline15,,3,a3,x3,b2,>=2,:=5,;4,04,93,a5,)1,if2,=1,do3,x3,berrorline32,>2,+2,=4,04,23,x1,then5,;2,+3,x4,+232,:=5,;3,x1,end2,+5,;4,15,;1,while3,a2,:=4,01,do3,b2,:=4,22,*3,c5,;3,x2,:=2,/3,a4,35,;5,,1,end测试结果与预期结果一致源程序代码:#include<>#include<>voidmain(){inti=0,j,k=0,state=1,f=0,linenum=1;chara[11][10]={"const","var","call","begin","if","while","do","odd","end","then","procedure"};charb,d[40]={"\0"};freopen("","r",stdin);freopen("","w",stdout);b=getchar();while(b!=EOF)/*判断所输入字符是否为结束符 */{if(b==''||b=='\n'||b=='\t')/* 滤过空格、换行等分隔符号 */{if(b='\n')linenum++;b=getchar();}elseif((b>='a'&&b<='z')||(b>='A'&&b<='Z'))/*识别标识符以及保留字*/{d[i++]=b;b=getchar();while((b>='a'&&b<='z')||(b>='A'&&b<='Z')||(b>='0'&&b<='9')){d[i++]=b;b=getchar();}for(j=0;j<11;j++)/*查询保留字表确定该单词是否是保留字 */{if(strcmp(d,a[j])==0){printf("1,%s\n",d);k=1;break;}}if(k==0)/*在保留字表中没有查到该单词,是标识符 */printf("3,%s\n",d);for(j=0;j<=i;j++)d[j]='\0';i=0;k=0;}elseif(b>='0'&&b<='9')/*识别常数*/{d[i++]=b;b=getchar();while(f!=1){switch(state){case1:if(b>='0'&&b<='9'){state=1;d[i++]=b;b=getchar();}elseif(b=='.') {state=2;d[i++]=b;b=getchar();}elseif(b=='E'){state=4;d[i++]=b;b=getchar();}elsestate=7;break;case2:if(b>='0'&&b<='9'){state=3;d[i++]=b;b=getchar();}elsestate=8;break;case3:if(b>='0'&&b<='9'){state=3;d[i++]=b;b=getchar();}elseif(b=='E'){state=4;d[i++]=b;b=getchar();}elsestate=7;break;case4:if(b=='+'||b=='-'){state=5;d[i++]=b;b=getchar();}elseif(b>='0'&&b<='9'){state=6;d[i++]=b;b=getchar();}elsestate=8;break;case5:if(b>='0'&&b<='9'){state=6;d[i++]=b;b=getchar();}elsestate=8;break;case6:if(b>='0'&&b<='9'){state=6;d[i++]=b;b=getchar();}elsestate=7;break;case7:f=1;break;case8:f=1;break;}}if(state==7&&(b<'a'||b>'z')&&(b<'A'||b>'Z'))printf("4,%s\n",d);elseif(state==7&&(b>='a'&&b<='z')||(b>='A'&&b<='Z'))/*数字后接字母的出错控制*/{while((b>='a'&&b<='z')||(b>='A'&&b<='Z')){d[i++]=b;b=getchar();}printf("errorline%d\n",linenum);}elseprintf("errorline%d\n",linenum);for(j=0;j<=i;j++)d[j]='\0';i=0;f=0;state=1;}elseif(b=='<')/*识别'<'、'<='和'<>'*/{d[i++]=b;b=getchar();if(b=='='||b=='>'){d[i++]=b;b=getchar();printf("2,%s\n",d);for(j=0;j<=i;j++)d[j]='\0';i=0;}else{printf("2,%s\n",d);for(j=0;j<=i;j++)d[j]='\0';i=0;}}elseif(b=='>')/*识别'>'和'>='*/{d[i++]=b;b=getchar();if(b=='='){d[i++]=b;b=getchar();printf("2,%s\n",d);for(j=0;j<=i;j++)d[j]='\0';i=0;}else{printf("2,%s\n",d);for(j=0;j<=i;j++)d[j]='\0';i=0;}}elseif(b==':')/*识别':='*/{d[i++]=b;b=getchar();if(b=='='){d[i++]=b;b=getchar();}printf("2,%s\n",d);elseprintf("errorline%d\n",linenum);for(j=0;j<=i;j++)d[j]='\0';i=0;}elseif(b=='*'||b=='+'||b=='-'||b=='/'||b=='=')/*识别运算符*/{printf("2,%c\n",b);}b=getchar();elseif(b=='('||b==')'||b==','||b==';'||b=='.')/*识别分隔符*/{printf("5,%c\n",b);b=getchar();}else

最近更新

电子考勤方案 8页

交际教学法在高中英语语法教学中的应用研究的.. 2页

亚麻纤维复合材料的研究的开题报告 2页

井地联合一致性反褶积方法研究的开题报告 2页

互联网金融扩张中商业银行服务模式的创新研究.. 2页

云南省粮食生产可持续发展研究的开题报告 2页

二氧化碳咸水层封存的多场耦合过程数值分析的.. 2页

西北大学-经济管理学院-2024-2024学年第1学期.. 43页

长期跑步对人有什么好处 4页

重难点解析重庆市彭水一中物理八年级下册期末.. 22页

重难点解析湖南湘潭市电机子弟中学物理八年级.. 21页

重难点解析河北石家庄市第二十三中物理八年级.. 19页

2024年小学庆六一儿童节的活动总结范文(通用.. 11页

2024年小学寒假通知书教师评语-教师评语 12页

重难点解析四川内江市第六中学物理八年级下册.. 21页

重难点解析北京市第十五中学物理八年级下册期.. 21页

2024年小学大队委的竞选稿 22页

重庆市实验中学物理八年级下册期末考试专题训.. 21页

湖南省长沙2024年中考模拟生物试卷含答案 11页

推销与谈判论文范文通用13篇 31页

工作录取通知书模板 7页

全民终身学习活动周讲话稿 13页

丰城市资源循环利用产业基地招商优惠政策 6页

六项纪律生活会个人发言提纲 2页

党支部增补委员的选票 2页

法律事务专业(专科) 4页

CA6140车床法兰盘工艺规程及夹具设计答辩PPT 24页

隧道工程风险评估因素识别表 31页