编译原理实验-词法分析器_第1页
编译原理实验-词法分析器_第2页
编译原理实验-词法分析器_第3页
编译原理实验-词法分析器_第4页
编译原理实验-词法分析器_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译原理实验-词法分析器编译原理实验-词法分析器编译原理实验-词法分析器资料仅供参考文件编号:2022年4月编译原理实验-词法分析器版本号:A修改号:1页次:1.0审核:批准:发布日期:洛阳理工学院实验报告院部计算机系班级B150402学号姓名课程名称编译原理实验日期实验名称词法分析器成绩实验目的:加深对词法分析过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析;能够使自己编写的程序对简单的程序片段进行词法分析。实验条件:装有Windows操作系统,MicrosoftVisualC++。实验内容:自定义一种程序设计语言,或选择已有的一种高级语言(C语言),编制它的词法分析程序。实验要求:1.对单词的构成规则有明确的定义2.编写的程序能够正确识别源程序中的单词符号3.识别出的单词以<种别码,值>的形式保存在符号表中4.词法分析中源程序和分析后的符号表均保存在.txt文件中5.有一定的检查错误的能力。遇到错误时可显示“Error”,然后跳过错误部分继续显示。6.实验报告包括以下内容(1)编程思路、流程图、源代码(2)上机调试时发现的问题,以及解决的过程(3)所使用的测试数据及结果(4)心得体会实验步骤1.给出目标语言的所有单词符号及种别编码、单词符号的状态转换图。2.依次读入源程序,对源程序进行单词切分和识别,直到源程序结束。3.对正确的单词,按照它的种别以<种别码,值>的形式保存在符号表中。4.对不正确的单词,做出错误处理。实验内容:1.编程思路:、实现预处理功能源程序中可能包含有对程序执行无意义的符号,要求将其剔除。首先编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据);然后编制一个预处理子程序,去掉输入串中的回车符、换行符和跳格符等编辑性文字;把多个空白符合并为一个;去掉注释。、实现词法分析功能输入:所给文法的源程序字符串。输出:将每个单词或数字以及他对应的种别码和类型输出到文件中。具体实现时,可以将单词的二元组用结构进行处理。、待分析的C语言子集的词法1)关键字"char","int","if","else","var","return","break","do","while","for","double","float","short"2)运算符和界符+-*/<<><=>>==;()[]\|&{}\\#3)空格由空白、制表符和换行符组成空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。、各种单词符号对应的种别码表1各种单词符号的种别码单词符号种别码char1int2if3else4var5return6break7do8while9for10double11float12short13标识符14数字15符号16-40、词法分析程序的主要算法思想算法的基本任务是从文件中读出字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到的单词符号的第一个字符的种类,拼出相应的单词符号,并输出到文件中。2.流程图:主程序流程图是是否输入串结束输入编译后的文件名调用分析子程序结束开始输入打开的文件名关闭文件文件为空是输入串结束是主函数流程图分析函数流程图否否否是否是符号字母数字否是返回0变量初始化忽略空格是否文件结束获取一个单词获取数字在文件中写入当前单词以及对应的关键字种别码获取一个完整符号返回开始在文件中写入当前单词以及对应的符号种别码在文件中写入当前单词以及对应的符号种别码在文件中写入当前单词以及标识符种别码12将当前单词添加到标识符表中存在于数字表存在于标识符表存在于符号表存在于关键字表是将当前数字添加到数字表中将当前符号添加到符号表中是分析函数流程图3.源代码:#include<>#include<>#include<>#include<>#include<>inti,row=0,line=0;chara[1000];机调试时发现的问题,以及解决的过程:1)文件读取错误。运行程序后,输入文件路径后,显示“打开词法分析输入文件有错”。解决:我看了下程序,没发现什么明显错误,然后看了文件名,也是对的,点开文件属性,发现文件名显示的是,意识到机房电脑默认没显示后缀,自己起名字的时候多加了一个.txt;2)运行过程中强行停止。解决:检查了一下程序,发现关键字表数组下标溢出,后来改了循环的条件。3)运行不能正常停止。解决:MS-DOS命令窗口未关闭的时候,检查输出文件是否存在,发现存在但是打开为空,然后关闭运行窗口后再打开发现输出结果已经写入了文件,只是没有执行fclose()所以打开后看不到内容。4)某些关键字被作为标识符输出。解决:检查程序发现关键字表不够完整,所以不能输出不存在于关键字表中的种别码,然后完善了关键字表。5)单词、数字、符号重复出现时,序号不一致。解决:增加了一个标识符表、数字表以及符号表,判断过词性时,先判断一下是否存在于其词性表中,然后在输出。5.所使用的测试数据及结果:测试数据:运行效果输出结果实验总结:通过这次实验,我利用C语言做出了词性分析的程序,理解了该知识点以及学科之间的融合渗透,全面系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论