c_minus语言词法分析器的设计

c_minus语言词法分析器的设计

ID:12460551

大小:103.00 KB

页数:5页

时间:2018-07-17

c_minus语言词法分析器的设计_第1页
c_minus语言词法分析器的设计_第2页
c_minus语言词法分析器的设计_第3页
c_minus语言词法分析器的设计_第4页
c_minus语言词法分析器的设计_第5页
资源描述:

《c_minus语言词法分析器的设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一:词法分析程序的设计与实现姓名:专业班级:学号:一、实验目的设计一个简单的词法分析器,从而进一步加深对词法分析器工作原理的理解。二.、实验内容编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。三、实验要求根据PL/0语言文法,编制词法分析程序GETSYM完成以下功能:1)从键盘读入数据,分析出一个单词。2)返回单词种别(用整数表示),3)返回单词属性(不同的属性可以放在不同的全局变量中)。四.、实验步骤1. 采用C语言,设计GETSYM,实现该算法2. 编制测试程序(主函数main)。3. 调试

2、程序:输入一组单词,检查输出结果。五.、实验设计分析1.词法的正规式描述S=aA

3、aA=(aA

4、dA)}(a

5、d)2.变换后的正规文法S→aAS→aA→aAA→dAA→aA→d3.词法分析程序的程序代码#include"stdafx.h"#include#includeusingnamespacestd;#defineMAX17charch='';stringkey[17]={"const","long","float","double","void","main","if","else

6、","then","break","int","char","include","for","while","printf","scanf"};intIskey(stringc){//关键字判断inti;for(i=0;i='a'))

7、

8、((c<='Z')&&(c>='A')))return1;elsereturn0;}intIsL

9、etter1(charc){//判断是否为a~f字母if(((c<='f')&&(c>='a'))

10、

11、((c<='F')&&(c>='A')))return1;elsereturn0;}intIsDigit(charc){//判断是否为数字if(c>='0'&&c<='9')return1;elsereturn0;}voidscan(FILE*fpin){stringarr="";while((ch=fgetc(fpin))!=EOF){arr="";if(ch==''

12、

13、ch=='t'

14、

15、ch==''){}else

16、if(IsLetter(ch)

17、

18、ch=='_'){arr=arr+ch;ch=fgetc(fpin);while(IsLetter(ch)

19、

20、IsDigit(ch)){if((ch<='Z')&&(ch>='A'))ch=ch+32;arr=arr+ch;ch=fgetc(fpin);}fseek(fpin,-1L,SEEK_CUR);if(Iskey(arr)){cout<

21、ntflag=0;if(ch=='0'){arr=arr+ch;ch=fgetc(fpin);if(ch>='0'&&ch<='7'){while(ch>='0'&&ch<='7'){flag=1;arr=arr+ch;ch=fgetc(fpin);}}elseif(ch=='x'

22、

23、ch=='X'){flag=2;arr=arr+ch;ch=fgetc(fpin);while(IsDigit(ch)

24、

25、IsLetter1(ch)){arr=arr+ch;ch=fgetc(fpin);}}elseif(ch==''

26、

27、ch

28、==','

29、

30、ch==';'){cout<

31、t十进制整数"<

32、':case'/':cout<

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

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

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