词法分析器设计.doc

词法分析器设计.doc

ID:59130971

大小:230.00 KB

页数:27页

时间:2020-09-12

词法分析器设计.doc_第1页
词法分析器设计.doc_第2页
词法分析器设计.doc_第3页
词法分析器设计.doc_第4页
词法分析器设计.doc_第5页
资源描述:

《词法分析器设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机专业软件类课程实验报告课程名称:编译原理实验题目:词法分析器设计实验小组成员:实验小组组长:任课教师:专业名称:计算机科学与技术班级名称:计科1班实验起止时间:2014-5-8~2014-5-15一、实验目的1、要求设计交互界面,能输入能转换能输出,形式和风格自定。2、设计一个词法分析程序,理解词法分析器实现的原理,掌握程序设计语言中的各类单词的词法分析方法,加深对词法分析原理的理解。二、实验内容1、对给定的程序通过词法分析器能够识别一个个单词符号,并以三元式(单词行号,单词符号的属性值,单词符号类别)显示。如果有错误,统计总共有多少个错误,并且将每个错

2、误所在行号,以及属于哪种错误显示出来。2.本程序自行规定:(1)关键字"program","example","const","var","interger","begin","void","String","System","out","println","end","if","else","for","char","to","do","then"(2)运算符"=","<=","++",":","

3、","*","+","%","-","/"(3)界符";","{","}","(",")",","(4)标识符以字母或下划线开头的字符串表示(5)常量用数字表示(

4、6)空格、回车、换行符跳过3、在屏幕上显示如下:(1)Token表中显示:1program保留字1example保留字1;界符2const保留字2k标识符2=运算符2200常量(2)错误信息显示:2errors42a格式不正确4034不能以0开头三、实验需求1、界面部分:需要对文件有打开、保存、另存为的功能;对文本有撤销、剪切、复制、粘贴、复制、删除、全选的功能2、词法分析器:对读入的程序一个字符一个字符的进行词法分析,识别出一个个单词符号,并以三元式(单词行号,单词符号的属性值,单词符号类别)显示。如果有错误,统计总共有多少个错误,并且将每个错误所在行号,以

5、及属于哪种错误显示出来。四、主要数据结构介绍使用三个数组分别来存放关键字、运算符、界符,凡是不属于这三个数组的所有合法字符串当做标识符处理,凡是不属于这三个数组的所有合法数字当做常量处理,其余情况则进行出错处理五、主要模块算法介绍1、对输入的程序进行处理:空格、回车、换行符跳过,并按照";"、"="、","、":"等符号将字符串切割开来,同时对字符串使用toCharArray()转换成单个字符,求出切割符号在字符串中的位置,并将它们与切割好的字符串重新组合,使它们与输入程序相同2、对第一步得到的字符串数组进行一个一个的检查,如果字符串在table1中,则表明是

6、运算符,将状态标记为1;如果字符串在table2中,则表明是保留字,将状态标记为2;如果字符串在table3中,则表明是界符,将状态标记为33、如果对当前的字符串不在这三个数组中,且数字序列又是合法的,则表明是常量,将状态标记为4;如果对当前的字符串不在这三个数组中,且字符序列又是合法的,则表明是标识符,将状态标记为54、如果对当前的输入不满足前5个状态,且字符序列不是以下划线、字母开头,则表明输入的格式不正确,将状态标记为6;如果对当前的输入不满足前5个状态,且字符序列是以0开头的数字序列,则表明输入的常量是以0开头的,这是非法格式,将状态标记为75、将最终

7、的结果打印输出到文本框中六、程序实现环境及使用说明本次实验采用Eclipse进行代码的编写、编译及运行;编写语言为java语言;程序的运行环境为jdk1.8;系统为windows 8.1七、实验测试用例设计说明1、正常的测试,这种情况下不会报错programexample;constk=2;vara:interger;beginend2、错误的测试,这个例子中含有非法标识符和非法常量的错误programexample;constk=2a,c=300,d=034;vara:interger;beginend八、实验结果测试情况九、小组对实验结果的自我评价通过这次

8、实验,我对词法分析器有了一定的了解,进一步的巩固了这部分的知识。懂得了词法分析器的工作原理。在编程过程中,遇到了不少的问题,在同学的帮助下,问题一步一步的得到了解决。先从实现最简单的扫描和输出,再实现扫描的范围扩大和输出的结果更加具体,虽然词法分析器的功能实现了,但是对于小数不能进行较好的分析。在算法上虽然是弄懂了词法分析器,但具体实现起来还有一些不足。由于编程能力和时间的不足,这个分析器还有待完善,没有把双目运算符考虑进来。对于出错处理也考虑得不够周到。望老师多多指教。十、任课教师对实验结果的评分源码FrameView.javapackageview;imp

9、ortjava.awt.BorderL

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

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

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