编译原理实验-词法分析器(共11页).doc
《编译原理实验-词法分析器(共11页).doc》由会员分享,可在线阅读,更多相关《编译原理实验-词法分析器(共11页).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上洛阳理工学院实验报告院部计算机系班级B学号姓名课程名称编译原理实验日期2018.6.4实验名称词法分析器成绩实验目的:加深对词法分析过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析;能够使自己编写的程序对简单的程序片段进行词法分析。实验条件:装有Windows操作系统,Microsoft Visual C+ 6.0。实验内容:自定义一种程序设计语言,或选择已有的一种高级语言(C语言),编制它的词法分析程序。实验要求:1.对单词的构成规则有明确的定义2.编写的程序能够正确识别源程序中的单词符号3.识别出的单词以的形式保存在符号表中4.词法分析
2、中源程序和分析后的符号表均保存在.txt文件中5.有一定的检查错误的能力。遇到错误时可显示“Error”,然后跳过错误部分继续显示。6. 实验报告包括以下内容(1)编程思路、流程图、源代码(2)上机调试时发现的问题,以及解决的过程(3)所使用的测试数据及结果(4)心得体会实验步骤1.给出目标语言的所有单词符号及种别编码、单词符号的状态转换图。2.依次读入源程序,对源程序进行单词切分和识别,直到源程序结束。3.对正确的单词,按照它的种别以的形式保存在符号表中。4.对不正确的单词,做出错误处理。实验内容:1.编程思路:1.1、实现预处理功能源程序中可能包含有对程序执行无意义的符号,要求将其剔除。首
3、先编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据);然后编制一个预处理子程序,去掉输入串中的回车符、换行符和跳格符等编辑性文字;把多个空白符合并为一个;去掉注释。 1.2、实现词法分析功能输入:所给文法的源程序字符串。输出:将每个单词或数字以及他对应的种别码和类型输出到文件中。具体实现时,可以将单词的二元组用结构进行处理。1.3、待分析的C语言子集的词法1)关键字 char,int,if,else,var ,return,break,do,while,for,double,float,short2)运算符和界符 + - * / = = ; ( )
4、| & #3)空格由空白、制表符和换行符组成空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。1.4、各种单词符号对应的种别码表1 各种单词符号的种别码单词符号种别码char1int2if3else4var5return6break7do8while9for10double11float12short13标识符14数字15符号16-401.5、 词法分析程序的主要算法思想算法的基本任务是从文件中读出字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到的单词符号的第一个字符的种类,拼出相应的单词符号,并输出到文件中。2.流程图:2.1主程序流程图是否输入
5、串结束输入编译后的文件名调用分析子程序结束开始输入打开的文件名关闭文件文件为空?是输入串结束是主函数流程图2.2分析函数流程图否否是否是符号字母数字否是返回0变量初始化忽略空格是否文件结束获取一个单词获取数字在文件中写入当前单词以及对应的关键字种别码获取一个完整符号返回开始在文件中写入当前单词以及对应的符号种别码在文件中写入当前单词以及对应的符号种别码在文件中写入当前单词以及标识符种别码12将当前单词添加到标识符表中存在于数字表存在于标识符表存在于符号表存在于关键字表是将当前数字添加到数字表中将当前符号添加到符号表中是分析函数流程图3.源代码:#include#include#include#
6、include#includeint i, row = 0, line = 0;char a1000; /程序int number1000100; /常数表char mark1005; /标识符表FILE *fin,*fout;/词法分析int wordanalysis() if (ai = A&ai =a&ai= A&ai = 0 & ai =a&ai=z) wordn+ = ai+; wordn = 0; i-; /判断该标识符是否为关键字 for (n = 0; n 100; n+) if (strcmp(word, keyWordn) = 0) fprintf(fout,%st(%d)
7、t关键字n, keyWordn, n + 1); return 3; /判断该标识符是否存在标识符表中 int m = 0; if (line != 0) int q = 0; while (q= 0 & ai = 0 & ai = 9) xn+ = ai+; xn = 0; i-; int num = atoi(x); /将字符串转换成int型 /判断该常数是否存在于常数表中 if (row != 0) int y; for (y = 0; y 1000; y+) int w = numbery0; sum = 0; int d; for (d = 1; d 0; n-) /将二进制保存于常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实验 词法 分析器 11
限制150内