欢迎来到天天文库
浏览记录
ID:55987817
大小:1.76 MB
页数:11页
时间:2020-03-15
《词法分析报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.《编译原理》课程实验报告题目词法分析器的设计与实现专业软件工程班级20122012学号2012201225姓名杨帆指导教师曹雪哈尔滨工程大学软件学院2015年5月实验1:词法分析一、实验目的1.巩固对词法分析的基本功能和原理的认识。2.能够应用自动机的知识进行词法分析。3.理解并处理词法分析中的异常和错误。二、实验内容11精选WORD文档交流!.要求:对如下工作进行展开描述(1)给出语言的词法规则描述<字母>→a…z
2、A…Z<标识符>→<字母>
3、<数字>
4、<字母><数字><关键字>→while
5、do
6、break
7、if
8、goto
9、contin
10、ue<数字>→0
11、1
12、2
13、3
14、4
15、5
16、6
17、7
18、8
19、9<单界符>→<
20、>
21、:
22、*
23、/
24、+
25、-
26、=
27、;
28、)
29、(
30、#
31、<双界符>→:=
32、==
33、>=
34、<=
35、<>(2)针对这种单词的状态转换图和程序框图11精选WORD文档交流!.11精选WORD文档交流!.状态转换图程序框图(3)核心数据结构的设计单词符号种别编码单词符号种别编码-2-16#0:17while1:=18do2>20if3<>21continue4<=22goto5<23break6>=24标识符10=25数字11;26*13(27/14)28+1511精选WORD文档交流!.(
36、4)错误处理A.输入的字符串为数字,数字大于32767,在对应的数字段显示”Errorinrowa!”(a为字符串的队列号)。B.输入的字符不在定义中,输出结果会显示”Errorinrowa!”(a为字符串的队列号)。三、实验结果要求:将实验获得的结果进行描述,基本内容包括:(1)针对某测试程序输出其词法分析结果;(2)输出针对此测试程序对应的词法错误报告;(3)输出针对此测试程序对应的符号表。注:其中的测试样例自行产生。A.代码及分析代码:#include"iostream"usingnamespacestd;charprog[100],t
37、oken[20];charch;intsyn,p,m=0,n,row,sum=0;char*rwtab[6]={"while","do","if","continue","goto","break"};voidscaner(){for(n=0;n<8;n++)token[n]=NULL;ch=prog[p++];while(ch==''){ch=prog[p];p++;}if((ch>='a'&&ch<='z')
38、
39、(ch>='A'&&ch<='Z')){m=0;while((ch>='0'&&ch<='9')
40、
41、(ch>='a'&&ch<=
42、'z')
43、
44、(ch>='A'&&ch<='Z')){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;11精选WORD文档交流!.}}elseif((ch>='0'&&ch<='9')){{sum=0;while((ch>='0'&&ch<='9')){sum=sum*10+ch-'0';ch=prog[p++];}}p--;syn=11;if(sum>32767)
45、syn=-1;}elseswitch(ch){case'<':m=0;token[m++]=ch;ch=prog[p++];if(ch=='>'){syn=21;token[m++]=ch;}elseif(ch=='='){syn=22;token[m++]=ch;}else{syn=23;p--;}break;case'>':m=0;token[m++]=ch;ch=prog[p++];if(ch=='='){11精选WORD文档交流!.syn=24;token[m++]=ch;}else{syn=20;p--;}break;case':'
46、:m=0;token[m++]=ch;ch=prog[p++];if(ch=='='){syn=18;token[m++]=ch;}else{syn=17;p--;}break;case'*':syn=13;token[0]=ch;break;case'/':syn=14;token[0]=ch;break;case'+':syn=15;token[0]=ch;break;case'-':syn=16;token[0]=ch;break;case'=':syn=25;token[0]=ch;break;case';':syn=26;token
47、[0]=ch;break;case'(':syn=27;token[0]=ch;break;11精选WORD文档交流!.case')':syn=28;token[0
此文档下载收益归作者所有