网站大量收购独家精品文档,联系QQ:2885784924

华南师范大学 编译原理期末复习整理 pdf例题.doc

华南师范大学 编译原理期末复习整理 pdf例题.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华南师范大学 编译原理期末复习整理 pdf例题

正则表达式: 例2.1 在仅由字母表中的3个字符组成的简单字母表∑={a, b, c}中,考虑在这个字母表上的仅包括一个b的所有串的集合。 ( a | c )* b ( a | c )* 例2.2 在与上面相同的字母表中,如果集合是包括了最多一个b的所有串。 ( a | c )* b? ( a | c )* DFA: 例2.6 串中仅有一个b的集合的正则表达式对应的DFA为? 例2.8 科学表示法的数字常量的正则表达式为: nat = [0-9]+ signedNat = (+|-)? nat number = signedNat(“.” nat)? (E signedNat)? 如何画对应的DFA? 解:先设digit = [0-9],sig = (+|-),得: 例2.9 非嵌套注释的DFA描述。Pascal注释{ ( ~} )* }对应的DFA为: C注释 /* ...( */不同时出现 )... */ 的DFA为: NFA: 例2.12 根据Thompson方法将正则表达式 ab|a转换为NFA。 例2.13 利用Thompson方法画出正则表达式letter(letter| digit)*对应的NFA。 例2.14 与正则表达式a*相对应的NFA为: NFA转DFA: 例2.15 将下面的NFA转换为DFA: 解: 例2.16 将下面的NFA转换为DFA: 解: 例2.17 正则表达式letter(letter| digit)*对应的NFA转换成DFA: 解: DFA最小化: 例2.18 将与正则表达式letter(letter| digit)*相对应的DFA最小化:(08级的大三第二学期考这道) 解:状态转换表为 letter digit {1} {2,3,4,5,7,10} {2,3,4,5,7,10} {4,5,6,7,9,10} {4,5,7,8,9,10} {4,5,6,7,9,10} {4,5,6,7,9,10} {4,5,7,8,9,10} {4,5,7,8,9,10} {4,5,6,7,9,10} {4,5,7,8,9,10} 最小化DFA为: 例2.19 将下面与正则表达式(a| ε) b*对应的DFA进行最小化。 解:状态转换表为 a b {1} {2} {3} {2} {3} {3} {3} 最小化DFA为: 词法分析代码: state := 1; {start} while state = 1 or 2 do case state of 1: case input character of letter: advance the input; state := 2; else state := ... {error or other}; end case; 2: case input character of letter, digit: advance the input; state := 2; {actually unnecessary} else state := 3; end case; end case; end while; if state = 3 then accept else error; state := 1; {start} while state = 1, 2, 3 or 4 do case state of 1: case input character of “/”: advance the input; state := 2; else state := ... ; {error or other} end case; 2: case input character of “*”: advance the input; state := 3; else state := ... ; {error or other} end case; 3: case input character of “*”: advance the input; state := 4; else advance the input; {and stay in state 3} end case; 4: case input character of “/” : advance the input; state := 5; “*”: advance the input; {and stay in state 4} else advance the input; state := 3; end case; en

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档