词法分析器实验报告(共9页).docx
《词法分析器实验报告(共9页).docx》由会员分享,可在线阅读,更多相关《词法分析器实验报告(共9页).docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上词法分析器实验报告班级: 姓名:郭金龙 学号:一、 问题描述设计并实现C语言的词法分析程序,要求如下。(1)、可以识别出用C语言编写的源程序中的每个单词符号,并以记号的形式输出每个单词符号。(2)、可以识别并读取源程序中的注释。(3)、可以统计源程序汇总的语句行数、单词个数和字符个数,其中标点和空格不计算为单词,并输出统计结果(4)、检查源程序中存在的错误,并可以报告错误所在的行列位置。(5)、发现源程序中存在的错误后,进行适当的恢复,使词法分析可以继续进行,通过一次词法分析处理,可以检查并报告源程序中存在的所有错误。实验要求:方法1:采用C/C+作为实现语言,手工编
2、写词法分析程序。方法2:通过编写LEX源程序,利用LEX软件工具自动生成词法分析程序二、算法思想及实现首先从主题上来看是一个大概的字符/字符串匹配过程,然后在这其中细化到分类包括标识符,关键字,标点符号,数字等等。这其中在计算一下几个方面的时候比较简单:(1) 行数:每次读到回车的时候行数加一(2) 单词数:在读标识符和关键字的时候每读到一个计数器加一(3) 字符数:除了标点符号和空格以外,每读到一个字符都计数器加一剩下的在判断各种符号的时候以及是否是关键字和标识符的时候,在程序中严格遵守书上给的流程图如下并且输出形式也严格按照书上给的表格如下:三、 设计描述主要说说这其中几个比较关键的地方(
3、1) 首先要判断是否读到文件末尾,如果是的话要跳出并关闭文件,否则会导致内存泄露(2) 考虑需要超前判断的几个字符包括,=等等,这下如果读到第一个字符而下一个字符不是预想中的字符时候要指针回退一个字符,但是要考虑到如果这个字符是在文件末尾的话会出现循环的情况,这也是其中的一个问题(3) 关键字的判断上,首先要定义一个关键字数组或者容器,然后通过token里面临时存储的字符串来进行匹配,最后如果匹配成功或者失败要有相应的措施并且每次匹配后一定要清空token。四、 源程序#include #include#includeusing namespace std;string keyword13=b
4、egin,end,if,then,else,while,write,read,do, call,const,char,until;int main() int i=0;/循环计数器int rol=1;/计算行数int word_num=0;/计算单词个数int character=0;/计算字符个数int temp100;/标记出错的行数int err=0; char c; string token; ifstream infile(d:1.txt,ios:in); while(!infile.eof() infile.get(c); if(infile.eof()break;if(c=n)r
5、ol+; else if(c=) character+; infile.get(c); if(c=) character+; cout) character+; coutendl; else cout) character+; infile.get(c); if(c=) character+; coutendl; else coutendl; if(!infile.eof() infile.seekg(-1, ios:cur);/指针向前一位 continue; else if(c=:) infile.get(c); if(c=) coutendl; else coutendl; if(!in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析器 实验 报告
限制150内