词法分析实验报告(共8页).docx
《词法分析实验报告(共8页).docx》由会员分享,可在线阅读,更多相关《词法分析实验报告(共8页).docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上词法分析器一、实验目的:通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。二、实验要求(1,”main”)(5,”(“)(5,”)“)(5,”“)(1,”int”)(2,”a”)(5,”,”)(2,”b”)(5,”;”)(2,”a”)(4,”=”)(3,”10”)(5,”;”)(2,”b”)(4,”=”)(2,”a”
2、)(4,”+”)(3,”20”)(5,”;”)(5,”“)如源程序为C语言。输入如下一段:main()int a,b;a = 10; b = a + 20;#要求输出如右图。要求:1、将单词分为五种识别关键字:main、if、int、for、while、do、return、break、continue;单词种别码为1。标识符;单词种别码为2。常数为无符号整形数;单词种别码为3。运算符包括:+、-、*、/、=、=、=、!= ;单词种别码为4。分隔符包括:,、;、(、); 单词种别码为5。2、使用一符一种的分法关键字、运算符和分界符可以每一个均为一种标识符和常数仍然一类一种三、实验内容1、功能描述
3、改程序是一个实现词法分析的功能,能识别5种单词,其他单词报错。2、程序结构描述int IsKey(char *Word)关键字匹配函数,查询是否为关键字,若是,返回值为1,否则为0。int IsAlpha(char c) 查看是否为字母,若是,返回值为1,否则为0。int IsNum(char c) 查看是否为数字,若是,返回值为1,否则为0。void scanner(FILE *fp) 扫描函数,扫描程序中的字符串并调用上述三种函数检查是否是字母、数字,是否是关键字,并输出。fseek(fp,-1,1) 回退一个字符。fgetc(fp) 从数据流中区下一个字符。fopen 文件打开函数,返回
4、指向文件第一个字符的指针四、实验结果测试内容为main()int a,b;a = 10;b = a + 20;#结果测试代码为void main()int a,b;if(a = 10;)b += 20;c=%;#结果为测试代码main()int a,b;if(a = 10)b += 20;c=%;return 0;#结果五、实验过程记录1、因为用到回退函数fseek(),而以前没有用过这个函数,所以开始时很苦恼,不知道如何回退一个字符,后来问了同学,才明白原来有这么一个函数,顿时豁然开朗。2、本次试验中word20保存字符串时,不能正确保存,总是出错,原因是while(IsNum(ch)|Is
5、Alpha(ch) Wordi=ch;i+;ch=fgetc(fp); 中,i+与Wordi=ch;次序不对,后来多次思索,发现问题。六、实验总结本次实验花了将近一个下午才完成。在纸上设计的时间大约40分钟,剩下的时间是录入和调试。本次实验使我认识到,一段时间搁置,不编程序,水平会下降,好多有关c语言的知识会忘掉,所以以后我会经常写写程序。另外,通过本次实验,我又进一步加深对词法分析原理的理解。总的来说,获益匪浅!附录#include#include#include#include#include Char*Key9=void,main,int,if,then,else,return,brea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析 实验 报告
限制150内