朱航宇-20112878-编译原理合设计重点.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文档。上传文档
查看更多
编译原理合设计 指导教师:李宏芒 专业班级:信安11-1 姓 名:朱航宇 学 号 一.课程设计目的 《编译原理》是计算机专业的一门重要的专业课程,其中包含大量软件设计思想。大家通过课程设计,实现一些重要的算法,或设计一个完整的编译程序模型,能够进一步加深理解和掌握所学知识,对提高自己的软件设计水平具有十分重要的意义。 二.课程设计内容 (12,13题:12题 DFA 状态最少化的程序实现和13题 把NFA确定化为DFA 的算法实现,合并为一题,将NFA确定化为DFA,再将DFA化简即最小化。) 我在选择课程设计题目时,只选择了12题DFA的最小化。但由于12题工作量较小同时为了提高我的编程能力我将13题NFA确定化为DFA,将这两题合并为一题,即NFA确定化到最小化的实现。NFA的确定化和DFA的最小化主要是为了更好地使用状态转换图构造词法分析程序和词法分析程序的自动生成。设计并实现将NFA确定化为DFA的子集构造算法以及DFA的最小化,从而更好地理解有限自动机之间的等价性,掌握词法分析器自动产生器的构造技术。 三.设计要求设计的基本原理 5.2各模块设计 1.有限自动机状态转换结构的定义和状态信息的输入输出 有限状态机的状态结点,边和终结符(即输入字符)均定义为字符串,利用 C++标准模板库string中的函数来实现定义和后续操作,以方便实现和简化 程序。具体如下程序片段: string NODE; //结点集合 string CHANGE; //终结符集合 int N; //NFA边数 struct edge { //状态图的边,包含一条边的起点,终点和终结符 string first; string change; string last; }; struct chan { //状态转换矩阵集合 string ltab; //状态子集I string jihe[MAXS]; //状态子集Ix };∑={ a1 , … , ak },构造一张表,此表的每一行含有k+1列。置该表 的首行首列为ε_Closure(X)。一般而言,如果某一行的第一列的状态子 集已经确定,记为I,那么置该行的i+1列为Iai(i=1, … ,k)。然后检查该 行上的所有状态子集,看它们是否已在表的第一列出现,将未曾出现者 填入到后面空行的第一列,为方便比较,在构造状态子集过程中,可对 子集中的元素进行排序。重复上述过程,直到出现在第i+1(i=1, … ,k) 列上的所有状态子集都已经在第一列上出现。因为M的状态子集的个数 是有限的,所以上述过程必定在有限步内终止。按照构造此表的方法思 想用程序实现有限自动机M状态子集的构造,然后对上表中第一列的个 各状态子集重命名得到一个新的状态转换矩阵,该状态装换矩阵对应一个与NFA M等价的DFA M’。 例如下图为一个非确定有限自动机的状态转换图 上面的状态转换图按照子集法生成下表的状态转换矩阵 I Ia Ib {X,5,1} {5,3,1} {5,4,1} {5,3,1} {5,3,1,2,6,Y} {5,4,1} {5,4,1} {5,3,1} {5,4,1,2,6,Y} {5,3,1,2,6,Y} {5,3,1,2,6,Y} {5,4,1,6,Y} {5,4,1,6,Y} {5,3,1,6,Y} {5,4,1,2,6,Y} {5,4,1,2,6,Y} {5,3,1,6,Y} {5,4,1,2,6,Y} {5,3,1,6,Y} {5,3,1,2,6,Y} {5,4,1,6,Y} 对上表中第一列的各状态子集重命名 {X,5,1} = 0;5,3,1} = 1;{5,4,1} = 2;{5,3,1,2,6,Y} = 3;{5,4,1,6,Y} = 4; {5,4,1,2,6,Y} = 5;{5,3,1,6,Y} = 6 则重命名之后上表转化为如下表的状态转换矩阵,该转换矩阵对 S a b 0 1 2 1 3 2 2 1 5 3 3 4 4 6 5 5 6 5 6 3 4 该表的状态转换矩阵对映一个与上述NFA M等价的未化简的DFA M’,其中终态为3,4,5,6。其状态转换图如下所示 3.DFA的最小化,采用等价状态划分的方法 对DFA的化简任然要用到上述的Ia函数,对DFA M的状态集S进行划分的步骤是:首先把S的终态和非终态分开,分成两个子集,形成基本划分

文档评论(0)

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

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

1亿VIP精品文档

相关文档