北邮 编译原理 词法分析

北邮 编译原理 词法分析

ID:12603988

大小:87.42 KB

页数:27页

时间:2018-07-18

北邮 编译原理 词法分析_第1页
北邮 编译原理 词法分析_第2页
北邮 编译原理 词法分析_第3页
北邮 编译原理 词法分析_第4页
北邮 编译原理 词法分析_第5页
资源描述:

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

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

2、并报告源程序中存在的所有错误。实验要求:方法1:采用C/C++作为实现语言,手工编写词法分析程序。方法2:通过编写LEX源程序,利用LEX软件工具自动生成词法分析程序。算法思路:首先通过遍历,统计行号和字符数,并记录所有的注释。其次,再次读取,利用一个字符数组作为buffer保存一行的数据,在对其中的数据进行处理,完成之后再读下一行,跳过注释。对于整行数据的处理,依靠空格将其分成单个单词再具体处理。对于查错问题实在是一个难题,只能根据一些规则判定有错并记录。程序源代码://假设源程序存在相对路径下名为data.c/*N

3、ame:词法分析程序Author:李睿Date:23/10/1300:40Description:题目:词法分析程序的设计与实现。(1)、可以识别出用C语言编写的源程序中的每个单词符号,并以记号的形式输出每个单词符号。(2)、可以识别并读取源程序中的注释。(3)、可以统计源程序汇总的语句行数、单词个数和字符个数,其中标点和空格不计算为单词,并输出统计结果(4)、检查源程序中存在的错误,并可以报告错误所在的行列位置。(5)、发现源程序中存在的错误后,进行适当的恢复,使词法分析可以继续进行,通过一次词法分析处理,可以检查并

4、报告源程序中存在的所有错误。实验要求:方法1:采用C/C++作为实现语言,手工编写词法分析程序。方法2:通过编写LEX源程序,利用LEX软件工具自动生成词法分析程序。*/#include#include#include#include#includeusingnamespacestd;constintMAX_INPUT_BUFFER=512;//默认输入缓存区ifstreamfile;//打开文件vectorkeywo

5、rd;//预先记录关键字vectorcomment;//存储注释vectorid;//记录标示符vectorpre;//预处理文件intsum_char=0;//字符数intsum_word=0;//单词数intsum_line=0;//行数intcurrent_line=0;//当前行数boolin_comment=false;//标识此行是否在注释中charbuffer[MAX_INPUT_BUFFER];//缓存区intbig_bracket=0;//大括号ints

6、mall_bracket=0;//小括号voidinit(void)//初始化关键字{keyword.clear();keyword.push_back("auto");keyword.push_back("break");keyword.push_back("case");keyword.push_back("char");keyword.push_back("const");keyword.push_back("continue");keyword.push_back("default");keyword.push

7、_back("do");keyword.push_back("double");keyword.push_back("else");keyword.push_back("enum");keyword.push_back("extern");keyword.push_back("float");keyword.push_back("for");keyword.push_back("goto");keyword.push_back("if");keyword.push_back("int");keyword.push_ba

8、ck("long");keyword.push_back("register");keyword.push_back("return");keyword.push_back("short");keyword.push_back("signed");keyword.push_back("static");keyword.push_b

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

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

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