欢迎来到天天文库
浏览记录
ID:30365219
大小:18.59 KB
页数:8页
时间:2018-12-29
《编译原理词法分析器实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划编译原理词法分析器实验报告 曲阜师范大学实验报告 计算机系XX年级软件工程一班组日期XX年10月17日星期日 姓名 陈金金同组者姓名 课程编译原理成绩 实验名称:教师签章词法分析器 一、实验目的: 1·掌握词法分析的原理。 2·熟悉保留字表等相关的数据结构与单词的分类方法。 3·掌握词法分析器的设计与调试。 二、实验内容: 根据编译中的分词原理,编写一个词法分析程序: 1.输入:任意一个C语言程序的源
2、代码。 2.处理:对输入进行分析,分离出保留字、标识符、常量、算符和界符。 3.输出:对应的二元式。 三、实验要求: 1.任选C/C++/Java中的一种高级程序语言编程完成词法分析器。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 2.词法分析器应以教材所述分词原理为依据,使用恰当的数据结构和方法,结构清晰、高效。 四、实验环境:
3、WindowsXp操作系统,J2SE,Eclipse集成开发环境 五、实验分析: 将源代码作为长字符串进行读入,之后通过switch语句,及状态转换图进行词素识别,并对识别的词素进行分类整理以二元式的形式输出。 六、实验过程: 1、建立词法分析器界面,很简单:输入框,输出框,执行分析按钮,清空按钮,退出程序按钮。主要的地方是,考虑mvc开发模式,为model及controller提供接口。实现界面如下所示: 2、核心代码的编写,考虑到需要进行词素的匹配,创建符号表类SymTable。提供两个变量,分别存放如下内容: 并提供方
4、法insert(),lookUp(),分别负责标志符的插入和查找。 3.、根据语法规则书写状态转换图,并用switch语句实现: 需要注意的地方是,begin和forward两个指针的移动: 通过swith语句识别词素,并在符号表中进行匹配,匹配成功,则返回相应的记号,否则返回id。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 七、实验结
5、论: 实验过程还算顺利,遇到的一系列问题都得到比较好的解决,当然分析器还有很大的改进空间,这里只是简单的实现了词素的识别及简单的判断。下一步的目标是完成界符后注释的判断,几种特殊运算符在不同的上下文中会有不同的含义,瑞和进行判断。例外一个附加功能就是利用浏览的形式直接从文件中读取源文件进行源代码获取,且分析信息可以另存为文本文件。 编译原理实验报告 词法分析器 学院:计算机科学与技术 时间:XX/6/9 一、问题描述 选择计算机高级程序语言之一——C语言,运用恰当的词法分析技术线路,设 计和实现其对应的词法分析器 提示
6、:技术线路选择如下两种之一: 正则式→NFA→DFA→minDFA→程序设计 或正则文法→NFA→DFA→minDFA→程序设计。 要求:分析器输出结果存入到磁盘文件中,具有出错处理功能。 二、系统分析目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 编译原理涉及词法分析,语法分析,语义分析及优化设计等各方面。词法分析阶段是编译过程的第一个
7、阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。从左到右逐个字符对构成源程序的字符串进行扫描,依据词法规则,识别出一个一个的标记,把源程序变为等价的标记串序列。执行词法分析的程序称为词法分析器,也称为扫描器。本次实验,我选择用C++来实现这个词法分析器。 程序语言的单词符号一般分为以下六种:关键字、标识符、常量、运算符、界符、字符串 词法分析程序所输出的单词符号常常采用以下二元式表示:,单词的种别是语法分
8、析所需要的信息,而单词自身的值是编译其他阶段需要的信息。 单词的种别可以用整数编码表示,比如标识符编码为1,程序最后输出的形式应为: 关键字int标识符t_val(1,t_val)常量+2(3,+2)其
此文档下载收益归作者所有