词法分析器实验报告.docx

词法分析器实验报告.docx

ID:52452453

大小:690.93 KB

页数:9页

时间:2020-03-27

词法分析器实验报告.docx_第1页
词法分析器实验报告.docx_第2页
词法分析器实验报告.docx_第3页
词法分析器实验报告.docx_第4页
词法分析器实验报告.docx_第5页
资源描述:

《词法分析器实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、词法分析器实验报告班级:2011211312姓名:郭金龙学号:2011211445一、问题描述设计并实现C语言的词法分析程序,要求如下。(1)、可以识别出用C语言编写的源程序中的每个单词符号,并以记号的形式输出每个单词符号。(2)、可以识别并读取源程序中的注释。(3)、可以统计源程序汇总的语句行数、单词个数和字符个数,其中标点和空格不计算为单词,并输出统计结果(4)、检查源程序中存在的错误,并可以报告错误所在的行列位置。(5)、发现源程序中存在的错误后,进行适当的恢复,使词法分析可以继续进行,通过一次词法分析处理,可

2、以检查并报告源程序中存在的所有错误。实验要求:方法1:采用C/C++作为实现语言,手工编写词法分析程序。方法2:通过编写LEX源程序,利用LEX软件工具自动生成词法分析程序二、算法思想及实现首先从主题上来看是一个大概的字符/字符串匹配过程,然后在这其中细化到分类包括标识符,关键字,标点符号,数字等等。这其中在计算一下几个方面的时候比较简单:(1)行数:每次读到回车的时候行数加一(2)单词数:在读标识符和关键字的时候每读到一个计数器加一(3)字符数:除了标点符号和空格以外,每读到一个字符都计数器加一剩下的在判断各种符号

3、的时候以及是否是关键字和标识符的时候,在程序中严格遵守书上给的流程图如下并且输出形式也严格按照书上给的表格如下:三、设计描述主要说说这其中几个比较关键的地方(1)首先要判断是否读到文件末尾,如果是的话要跳出并关闭文件,否则会导致内存泄露(2)考虑需要超前判断的几个字符包括<>,<=,>=等等,这下如果读到第一个字符而下一个字符不是预想中的字符时候要指针回退一个字符,但是要考虑到如果这个字符是在文件末尾的话会出现循环的情况,这也是其中的一个问题(3)关键字的判断上,首先要定义一个关键字数组或者容器,然后通过token里

4、面临时存储的字符串来进行匹配,最后如果匹配成功或者失败要有相应的措施并且每次匹配后一定要清空token。四、源程序#include#include#includeusingnamespacestd;stringkeyword[13]={"begin","end","if","then","else","while","write","read","do","call","const","char","until"};intmain(){inti=0;//循环计数器

5、introl=1;//计算行数intword_num=0;//计算单词个数intcharacter=0;//计算字符个数inttemp[100];//标记出错的行数interr=0;charc;stringtoken;ifstreaminfile("d:\1.txt",ios::in);while(!infile.eof()){infile.get(c);if(infile.eof())break;if(c==''){rol++;}elseif(c=='<'){character++;infile.get(c)

6、;if(c=='='){character++;cout<<""<'){character++;cout<<""<"<'){character++;infile.get(c);if(c=='='){character++;

7、cout<<""<"<"<"<

8、inue;}elseif(c=='='){character++;cout<<""<"<"<

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

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

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