词法分析实验报告.docVIP

  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文档。上传文档
查看更多
《编译原理》课程 实验报告 题目 词法分析 专业 华侨大学09软件工程 班级 1班 学号 姓名 日期 2012-4-5 源码下载地址: http://www.gxp.cc/file-1179505.html 实验题目 词法分析 实验环境(操作系统,开发语言) 操作系统:Windows 7 开发语言:JAVA语言 开发工具:MyEclipse8.5 调试环境:JDK-1.7.0 实验内容(实验要求) 根据用户输入的正规式,使用Thompson算法构建NFA 利用子集法,从NFA构造DFA 最小化DFA 根据用户输入的字符串,模拟字符串的识别过程 实验过程及主要的数据结构 程序流程图 开始 开始 用户输入正规式 正规式有效? 处理正规式(加’.’, 为字符添加优先级) 构造NFA 构造DFA 最小化DFA 用户输入字符串 显示识别结果 提示错误信息 结束 数据结构 正规式处理过程 正规式存储结构ArrayList(ArrayList是实现了基于动态数组的数据结构) 正规式元素结构:ExpressionItem;类图如下 例:正规式(a|b)*ab经过处理后的结构如下: true.2falsea-1true.2true true . 2 false a -1 true . 2 true * 3 true ) 4 false b -1 true | 1 false a -1 true ( 0 false b -1 NFA结构 正规式“a|b”的邻接表结构 55 5 1 0 2 4 3 a b # # # # 正规式“a|b”的邻接表结构 字符集 字符集charList 状态表 states Id=0 edgeList 4 终态集endStates 5 初态startState value=a next=1 a b Id=1 edgeList Id=2 edgeList Id=3 edgeList Id=4 edgeList Id=5 edgeList nulll value=b next=3 value=# next=5 value=# next=0 value=# next=5 value=# next=2 Edge NFA结构代码实现 public class NFA { private ArrayListCharactercharList;//输入字符集 private ArrayListNFAStateNode states;//状态集 private NFAStateNode startState;//开始状态 private ArrayListNFAStateNode endStates;//结束状态集 /**内部类:存放一个正规式的开始与结束状态*/ class StatePair{ private NFAStateNode startState; private NFAStateNode endState; StatePair(NFAStateNode start,NFAStateNode end){ this.startState=start; this.endState=end; } } } NFA状态节点结构代码实现 public class NFAStateNode { static int stateNum=0; private int id; private ArrayListEdgeNFAStateNode edgeList; public NFAStateNode(){ edgeList=new ArrayListEdgeNFAStateNode(); id=stateNum++; } } NFA或DFA图的边Edge结构代码实现 public class EdgeT { private T next; private char value; public Edge(T next,char value){ this.next=next; this.value=value; } } DFA数据结构 DFA结构代码实现 public class DFA { private ArrayListCharactercharList;//输入字符集 private DFAStateNode startState;//开始状态 private ArrayListDFAStateNod

文档评论(0)

封样的男子245 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档