贵州大学【习题答案】第03章 词法分析.docVIP

贵州大学【习题答案】第03章 词法分析.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文档。上传文档
查看更多
《编译原理》课后练习参考答案 第03章 词法分析 课后练习参考答案 第03章 词法分析 1. 写出正规式a a|b * ε| .|_ a|b a|b * 相应的正规文法。 【解】 引入开始符号S,构造S→a a|b *ε| .|_ a|b a|b * , a a|b *ε| .|_ a|b a|b * a a|b *|a a|b *. a a|b *|b a|b * |a a|b *_ a a|b *|b a|b * aA|aC 引入非终结符A,B, C * A→ a|b * →ε| a|b + →ε| a|b a|b * →ε| a|b A C→ a|b *. a a|b *|b a|b * | a|b *_ a a|b *|b a|b * → ε| a|b a|b * . a a|b *|b a|b * | ε| a|b a|b * _ a a|b *|b a|b * →. a a|b *|b a|b * | a|b a|b *. a a|b *|b a|b * |_ a a|b *|b a|b * | a|b a|b * _ a a|b *|b a|b * →.B|_B |aC|bC B→ a|b a|b * → aA|bA 得到正规文法G[S]: S→aA|aC A→aA|bA|ε C→aC|bC|.B|_B B→aA|bA 2. 给定正规式:0 0|1 *1 1 写出相应的正规文法。 2 画出相应的状态转移图。 【解】 1 引入非终结符S, A S → 0 0|1 *1 →0A A → 0|1 *1→ ε| 0|1 + 1→1| 0|1 + 1→1| 0|1 0|1 *1→1| 0A|1A 得到正规文法G[S]: S 0A A 0A|1A|1 2 第一问中给出的G[S]是一个右线性文法。 按照由右线性正规文法构造状态转换图的方法构造相应的状态转移图如下: 《编译原理》课后练习参考答案 第03章 词法分析 3. 给定文法G[Z]: S0U | 1V U 1S | 1 V 0S | 0 1 请构造该文法的状态转换图 2 利用所得的状态转换图判别符号串100101和100111是否该文法的句子。 【解】 1 增加一个终态Z,得到该文法对应的状态转换图如下: 2 对符号串100101的识别过程经历了状态S、V、S、U、S、U、Z,终止于终止状态Z,所 以100101是此文法的句子。 对符号串100111的识别过程经历了状态S、V、S、U、S、V识别出10011后,在状态V无法进一步识别,所以100111不是此文法的句子。 4. 给出描述包含奇数个1或奇数个0的二进制数串的正规表达式。 【解】 本题求二进制串,并且要求包含奇数个0或奇数个1,由于0和1都可以在二进制串中任何地方出现,所以本题只需要考虑包含奇数个0的字符串,另外一种情况可以类似求得。 由于只关心0的个数的奇偶数,我们可以把二进制串分成多段来考虑: 第1段为二进制串的开始到第1个0为止,这一段包含1个0,并且0的前面有0或多个1。 对于剩下的二进制串按照每段包含两个0的方式去划分,即以0开始,以0结尾,中间 可以有0个或多个1。 如果一个二进制串被这样划分完后,剩下的部分如果全部是全1串(这些全1串在前面划分的串之间或最后),则该二进制串就具有奇数个0。 所以包含奇数个0的二进制串可以这样描述: 以第1段 1* 开始,后面由全1串 1* 以及包含两个0的串 01*0 组成, ********* 其正规表达式为:10 1 | 010 ,本题的解答则是:10 1 | 010 | 01 0 | 101 。 5. 请给出接受{0,1}上不含子串010的所有串的正规表达式和DFA。 【解】 本题有两种解题思路,一种是直接构造一个满足条件的状态转换图,然后根据状态转换图求正规表达式。另一种方法是分析题意直接写出满足条件的正规表达式。 《编译原理》课后练习参考答案 第03章 词法分析 方法1: 直接写出满足条件的状态转换图。在状态转换图中引入3个状态,初始状态S(也是终止状态),表示当前读入的串中不包含子串010,并且最后读入的字符是1或没读入任何字符。初始状态读入字符0后进入一个新的状态A,状态A表示当前读入的串中不包含子串010,并且最后读入的字符是0。状态A如果读入字符1后进入新状态B,状态B表示当前读入的串中不包含子串010,并且最后读入的字符是01,状态B不接受字符0。然后用0、1连接各状态就构造出了满足条件的状态转换图,如下所示。然后根据状态转换图来求正规表达式,这里就不详细说明了。 方法2: 直接写出满足条件的正规表达式。考虑满足条件

文档评论(0)

小小紫色星 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档