词法分析器的设计与实现

词法分析器的设计与实现

ID:18235211

大小:186.00 KB

页数:12页

时间:2018-09-15

词法分析器的设计与实现_第1页
词法分析器的设计与实现_第2页
词法分析器的设计与实现_第3页
词法分析器的设计与实现_第4页
词法分析器的设计与实现_第5页
资源描述:

《词法分析器的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《编译原理》课程实验报告实验题目:某种简单程序语言的词法分析器的设计与实现专业:计算机科学与技术班级:11060341学号:11060341姓名:实验目的:设计一个词法分析程序,理解词法分析器实现的原理,掌握程序设计语言中的各类单词的词法分析方法,加深对词法分析原理的理解。实验任务:词法分析是从左向右扫描每行源程序的符号,拼成单词,换成统一的二元式(单词种别,单词符号的属性值)表示。对给定的程序通过词法分析器识别一个个单词符号,并以二元式(单词种别,单词符号的属性值)显示,本程序则是通过对给定程序段分析后以单词符号和文字提示显示)实验流程:程序清单:#include

2、ostream>#include#includeusingnamespacestd;intk=0;structword{charname[10];intkind;}word[1000];charkey[35][10]={"scanf","short","int","long","float","double","char","struct","union","printf","typedef","const","unsigned","signed","extern","register","static","volatile","voi

3、d","if","else","switch","case","for","do","while","goto","continue","break","default","sizeof","return","include","bool"};boolcmp(chara[]){inti;for(intk=0;k<35;k++){if(strcmp(a,key[k])==0)return1;}return0;}intmain(){#ifdefLOCALfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#en

4、difintp,q,flag;chara[1000],b[10],ch;while(gets(a)){p=0;intlen=strlen(a);while(p='a'&&ch<='z')

5、

6、(ch>='A'&&ch<='Z')

7、

8、ch=='_'){flag=0;q=0;while((ch>='a'&&ch<='z')

9、

10、(ch>='A'&&ch<='Z')

11、

12、ch=='_'

13、

14、(ch>='0'&&ch<='9')){if((ch>=

15、'0'&&ch<='9')

16、

17、ch=='_')flag=1;b[q++]=ch;p++;ch=a[p];}if(flag==1){strcpy(word[k].name,b);word[k++].kind=1;}elseif(flag==0){if(ch=='''

18、

19、ch=='"'){strcpy(word[k].name,b);word[k++].kind=2;}elseif(cmp(b)==1){strcpy(word[k].name,b);word[k++].kind=3;}else{strcpy(word[k].name,b);word[k++].kind=1

20、;}}}elseif((ch>='0'&&ch<='9')

21、

22、ch=='-'){intt=p-1;if(a[t]>='0'&&a[t]<='9'

23、

24、a[t]>='a'&&a[t]<='z'

25、

26、a[t]>='A'&&a[t]<='Z'){p++;ch=a[p];if(ch=='-'

27、

28、ch=='='){b[0]='-';b[1]=ch;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];}else{b[0]='-';strcpy(word[k].name,b);word[k++].kind=5;}}else{q=0;b[q+

29、+]=ch;p++;ch=a[p];while((ch>='0'&&ch<='9')

30、

31、ch=='.'){b[q++]=ch;p++;ch=a[p];}strcpy(word[k].name,b);word[k++].kind=2;}}elseif(ch=='('

32、

33、ch==')'

34、

35、ch=='['

36、

37、ch==']'

38、

39、ch=='{'

40、

41、ch=='}'

42、

43、ch==','

44、

45、ch==';'

46、

47、ch==':'

48、

49、ch=='''

50、

51、ch=='"')//ch=='('

52、

53、ch==')'

54、

55、ch=='['

56、

57、ch==']'

58、

59、ch=='{'

60、

61、c

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

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

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