深圳大学编译原理实验报告蔡树彬实验二.docVIP

深圳大学编译原理实验报告蔡树彬实验二.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深圳大学编译原理实验报告蔡树彬实验二

深 圳 大 学 实 验 报 告 课程名称: 编译原理 实验项目名称: 词法分析技术及其应用 学院: 计算机与软件学院 专业: 软件工程 指导教师: 蔡树彬 报告人 学号: 实验时间: 2015年11月4日至12月30日 实验报告提交时间: 2015年12月31日 教务处制 实验目的与要求: 目的:针对状态矩阵、NFA、DFA、正规式、确定化算法、最小化算法、Thompson算法等词法分析应用问题,设计并实现相应的解决方案,通过设计FA相关类族,以及实现前述几个重要的算法,既加深对抽象的词法、自动机、正规式等形式语言理论基础概念的理解与掌握,也加强对面向对象程序编写能力和计算思维的培养。 要求: 第一部分: 无符号数的识别及DFA的应用 这部分又分为2个小实验 输入:一个文本文件(源代码文件) 输出:将源代码中的无符号数识别出来并输出到另一个文件中 示例:如果输入是“123*abc+def/99.2+9.9E+c”,那么输出是:(数字, 123),(其它,*abc+def/),(数字,99.2),(其它,+),(异常,9.9E+c) 说明:其它是非数字打头的字符串;异常是数字打头,但最后却是不符合定义的无符号数。 假设:用字符“ABCDEFGHIJK”(大写)分别表示数字0..9和.、E、+、-,那么,字符串“BCLD”表示数字“12E3”=12000; 输入:一个文本文件 输出:将隐藏在文本文件中的有效无符号数识别出来。 示例:如果输入是“BCD*abc+def/JJKC+JKJL+c”,那么输出是:(数字, 123)、(数字,99.2),无效(异常)的无符号数不输出 第二部分:DFA/NFA的读写及确定化、最小化算法 这部分又分为3个小实验 输入:一个文本文件(格式自定义) 输出:读入文件中的DFA/NFA,创建对应的DFA/NFA对象,再写回另一文件中。 示例:如果输入是“f(S,a)=A, f(A,b)=B, {B}” //假设默认开始状态是S, 那么输出是:K={S,A,B};Σ={a,b};f(S,a)=A, f(A,b)=B;S;Z={B} 输入:上一实验输出的NFA文件 输出:将读入的NFA进行确定化后,输出结果,需要考虑有/无(的情况。 输入:上一实验输出的DFA文件 输出:将读入的DFA进行最小化后,输出结果。 第三部分:正规式及其应用 这部分又分为3个小实验 Thompson方法的实现 输入:一个正规式 处理:创建与正规式对应的NFA对象,再将NFA对象写回文件,格式与前述实验相同,使得能够读回; 示例:如果输入是“a*b”,那么输出是:K={A , B , C , D , E , F};Σ={a, b};f(A,()=B, f(B,a)=C, f(C, ()=B, f(C, ()=D, f(A, ()=D, f(D, ()=E, f(E, b)=F;A;Z={F} 说明:优先级处理可用栈或递归,思路见算符优先分析法。概要来说,判断当前运算符与下一个运算符间的优先级,当前(下一个则计算(产生NFA),否则入栈或递归。 从正规式到DFA 将上述实验与前述实验连接起来,使得读入一个正规式文件,能输出一个DFA。正规式文件格式自定,通常每行一个正规式。 示例:如果正规式文件包括2行,每行分别是“a”和“b”,那么,输出的DFA实际上是“a | b”对应的DFA。 字符串的识别 输入:一个正规式文件和一个字符串文件 输出:判断字符串文件中的每个字符串,能否被正规式对应的DFA所识别 其次,再给每个正规式增加一个类别,识别到给定字符串符合某个特定正规式时,输出该类别。 示例:如果输入 a* 类A b 类B 那么对字符串aaa输出:aaa,类A 方法、步骤: 要完成本实验,依据实验要求进行分解,需要完成的实验步骤是: 如何识别无符号数? 如何判断一个输入的字符串中,包括无符号数字?如何判断无符号数的开始?中间字符及结束? 首先定义一个数组,逐个判断输入的字符串中的字符是否属于数组,根据无符号数定义和状态转移图的字符串从如果‘d’,’·’,’E’,’+/-’

文档评论(0)

335415 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档