毕业设计 词法分析器 生成工具 摘要与目录下载

weixin_39820835 2019-07-15 11:30:20
本科毕业设计
简单词法分析器生成工具的设计和实现
摘  要
本文描述一个简单的词法分析器生成工具的设计和实现过程。该词法分析器生成工具的功能是,它能根据给定的正则表达式构造出语言识别器。该语言识别器能够判断输入的句子是否是给定的正则表达式所描述的语言的句子,并在文件或标准输出中显示、保存所识别句子的信息。构造语言识别器的过程为:首先,从词法分析器生成工具读入正则表达式,将该正则表达式转换成等价的不确定的有限自动机,从而构造出确定的有限自动机,然后构造出确定的有限自动机的状态转换表,词法分析器生成工具利用该状态转换表生成语言识别器的C语言源文件,编译链接该C语言源文件即可生成语言识别器。在实现过
相关下载链接://download.csdn.net/download/quheDiegooo/3236668?utm_source=bbsseo
...全文
31 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
本科毕业设计 简单词法分析器生成工具的设计和实现 摘  要 本文描述一个简单的词法分析器生成工具的设计和实现过程。该词法分析器生成工具的功能是,它能根据给定的正则表达式构造出语言识别器。该语言识别器能够判断输入的句子是否是给定的正则表达式所描述的语言的句子,并在文件或标准输出中显示、保存所识别句子的信息。构造语言识别器的过程为:首先,从词法分析器生成工具读入正则表达式,将该正则表达式转换成等价的不确定的有限自动机,从而构造出确定的有限自动机,然后构造出确定的有限自动机的状态转换表,词法分析器生成工具利用该状态转换表生成语言识别器的C语言源文件,编译链接该C语言源文件即可生成语言识别器。在实现过程中,本文用语法分析器生成工具Bison来扫描正则表达式自动的来构造不确定的有限自动机 目 录 1 引言 1 2 基本概念 3 2.1 正则表达式 3 2.2 确定的有限自动机(DFA)和非确定的有限自动机(NFA) 3 2.3 产生式 5 3语言识别器生成工具的实现 6 3.1 实现的算法 7 3.1.1 由正则表达式构造NFA--Thompson构造法 8 3.1.2 LR语法分析法自动构造NFA 11 3.1.3 子集构造法 14 3.1.4 语言识别器的识别算法 16 3.2 数据结构 17 3.2.1 NFA的存储结构 17 3.2.2 DFA的存储结构 19 3.2.3 状态转换表的存储结构 20 3.3本章内容小结 20 4 编译运行及其性能 21 5 总结 24 参考文献 25 需要的联系请:QQ506425246
------- 基于 Python 的词法和LR(1)文法分析器 ## 总体说明 * 编程语言:Python 2.7.11 * 编程平台:Ubuntu16.04 * 编程环境:sublime * 完成的内容:实现了 3型文法的词法分析器和2 型文法的LR(1)语法分析器。 * 测试文法:一个类C语言的文法 * 测试程序:一个类C语言的程序。 ## 文件说明 本程序共涉及7个文件, 现将其说明如下: lexical_analyze.py 词法分析程序 syntax_analyze.py 语法分析程序 nfa_and_dfa.py 定义了 nfa 和 dfa 类以及其节点 lex_grammar.txt 词法文法文件 syn_grammar.txt 语法文法文件 source.cc 待分析的类C程序 token_table.data 词法分析输出的token表 ## 词法文法说明 我构造了一个3型文法作为程序读入的词法的文法,为了简化读入操作,我将课本上的 ->(推出符)换成了 ‘:’, ‘:’的左侧是产生式的左部, 右侧是产生式的右部, 并且将空产生式的右部的埃普西隆用 $ 来代替。 我将token的类型大体分成了 identifier、limiter、operator、number、string 等五类, 并每一类设计了表达式和推导过程。 ## 语法文法说明 直到开始写文法我才直到这个课设最难的是文法的构造, 自己YY了很久也没能设计出一个让自己满意且可用的文法, 所以中从 http://www.nongnu.org/hcb/ 这里参考了一下,最后写出来了一个2型文法。 跟词法的文法, 这里用 ‘:’ 来代替课本上的 –> 并且用 ‘$’ 来代替埃普西隆空产生式右部。 ## 词法分析器说明 词法分析器接受一个3型文法, 接受3型文法后会分析其终结符和非终结符, 分析方法是: 对于非终结符, 很明显, 所有在产生式左部的符号都是非终结符, 那么终结符就是所有的符号集合与非终结符集合的差集.分析完终结符和非终结符之后根据课本算法构造 NFA, 然后根据课本的算法构造 DFA,至此文法的处理工作结束。 接下来分析待分析的程序, 对于读入的程序, 将每个字符一次输入到 DFA 里面,当 DFA 不能接受某个字符的时候判断当前状态是否是一个终结状态, 如果是则token分析成功, 否则词法分析失败。 ## 语法分析器说明 语法分析器首先读入要分析的2型文法, 然后求出文法的终结符和非终结符, 求法与上面相同, 之后要求出每个文法符号的 first集,终结符的first 集是他本身,非终结符的 first 集的求解过程是一个记忆化搜索的过程。 然后为文法添加拓展的 S’->S,# 在此基础上进行拓展形成项目集 I0, 然后对项目集I0 进行推广, 同时构建 LR(1) 分析表。 有了 LR(1) 分析表后接下来的过程我们只需要一个一个的将词法分析生成的token读入到程序里面放在分析表中寻找移进或者归约操作即可, 如果最后的状态是 acc 则文法符合要求, 如果最后无法得到 acc,或者在分析表中找不到相应的操作, 则语法错误。 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

12,795

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧