北邮编译原理-词法分析文档和程序

北邮编译原理-词法分析文档和程序

ID:12798321

大小:652.64 KB

页数:12页

时间:2018-07-19

北邮编译原理-词法分析文档和程序_第1页
北邮编译原理-词法分析文档和程序_第2页
北邮编译原理-词法分析文档和程序_第3页
北邮编译原理-词法分析文档和程序_第4页
北邮编译原理-词法分析文档和程序_第5页
资源描述:

《北邮编译原理-词法分析文档和程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验报告班级:2011211314姓名:oneseven学号:一.题目:词法分析程序设计与实现二.实验内容:设计并实现C语言的词法分析程序,要求如下。(1)可以识别出用C语言编写的源程序中的每个单词符号,并以记号的形式输出每个单词符号。(2)可以识别并读取源程序中的注释。(3)可以统计源程序中的语句行数、单词个数和字符个数,其中标点和空格不计算为单词,并输出统计结果。(4)检查源程序中存在的非法字符错误,并可以报告错误所在的行列位置。三.实现要求:采用C/C++作为实现语言,手工编写词法分析程序。四.实现功能:基本完成了实验内容中要求

2、的所有功能。(1)识别出源程序中的每个单词符号,并以记号的形式输出每个单词符号(2)识别并读取源程序中的注释(3)统计源程序中的语句行数、单词个数和字符个数(4)检查源程序中存在的非法字符错误,并可以报告错误所在的行列位置。注:本程序未把注释中的单词符号,“”中的单词符号统计在单词个数中。单词个数只包括了标示符,关键字,无符号数。五.实验原理:1.词法分析程序的功能: 输入源程序,输出单词符号的记号形式,如图所示:词法分析器源程序à词法分析器à单词符号的记号形式2.处理过程:每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词

3、,直至整个源程序全部扫描完毕,并形成相应的单词串形式的源程序。 六.代码#include#include#include#includeusingnamespacestd;stringkeyword[32]={"auto","break","case","char","const",//关键字"continue","default","do","double","else","extern","enum","float","for","goto","if","in

4、t","long","return","register","static","short","signed","unsigned","struct","switch","sizeof","typedef","union","volatile","void","while"};intcolumn=0,row=1,character=0,word=0;ifstreaminf("test.txt",ios::in);charc;intfind_key(stringword)//匹配关键字{for(inti=0;i<32;i++)if(ke

5、yword[i].compare(word)==0)return1;return0;}voidchoice(){while(c==''

6、

7、c==''

8、

9、c=='t')//不计空白符{if(c==''){row++;column=0;//row清零,重新计数另一行}c=inf.get();column++;}return;}voidget()//读取字符{character++;c=inf.get();column++;return;}intprocess(){stringstr="";if(inf.fail())cout<<

10、"请创建test.txt并输入程序"<

11、

12、isdigit(c)

13、

14、c=='_'){str+=c;get();}if(c

15、=='@'

16、

17、c=='?'

18、

19、c=='$'

20、

21、c=='#'){inttag=column;while(isalpha(c)

22、

23、isdigit(c)

24、

25、c=='_'

26、

27、c=='@'

28、

29、c=='?'

30、

31、c=='$'

32、

33、c=='#'){str+=c;get();}outf<

34、(30)<

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

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

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