- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
编译原理复习题⽬集答案
第4章词法分析
重点内容:正规式转化为DFA
a、正规式-NFA
b、NFA-DFA(⼦集法)
c、DFA化简(分割法)
题⽬1:课件例题:
a、为R=(a|b)*(aa|bb)(a|b)*构造NFA
b、从NFA构造DFA的算法
c、化简
题⽬2:
4.7例1:构造正规式相应的DFA:1(0|1)*101
按照以下三步:
(1)由正规表达式构造转换系统(NFA)
(2)由转换系统(NFA)构造确定的有穷⾃动机DFA
(3)DFA的最⼩化
答:(1)构造与1(0|1)*101等价的NFA
(2)将NFA转换成DFA:采⽤⼦集法,即DFA的每个状态对应NFA的⼀个状态集合:
除X,A外,重新命名其他状态:
1、将M的状态分成⾮终态和终态集{X,A,B,C}和{D}。
2、寻找⼦集中不等价状态{X,A,B,C}={X},{A,B}{C}={X}{A}{B}{C},⽆需合并。最后⽣成
DFA:
题⽬3:⾃习、书本练习4.7,参考答案见《z4书本练习4.7.doc》已知⽂法G[S]:
S→aA|bQA→aA|bB|bB→bD|aQQ→aQ|bD|bE→aB|bFF→bD|aE|b1、构由于不可到达,去除E、F相关的多余产⽣式
2、由新的G[S]构造NFA如下
5、使⽤分割法化简以上DFAG:
5.1令G={(0,1,3,4,6),(2,5)}//分别为⾮终态和终态集
5.2由{0,1,3,4,6}a={1,3},{0,1,3,4,6}b={3,2,5,6,4}
将{0,1,3,4,6}划分为{0,4,6}{1,3},得G={(0,4,6),(1,3),(2,5)}
5.3由{0,4,6}b={3,6,4},将之划分为{0},{4,6},得G={(0),(4,6),(1,3),(2,5)}
5.4观察后,G中状态不可再分,为最⼩化DFA。
6、分别⽤0,4,1,2代表各状态,DFA状态转换图如下:
造相应的最⼩的DFA
第5章⾃顶向下的语法分析
重点内容:LL(1)⽂法
a、去除左递归
b、LL(1)⽂法的判定(first、follow、select集)
c、预测分析表
d、使⽤栈和预测分析表对输⼊串的分析
题⽬1:课件例题:消除左递归+判定+分析
算术表达式⽂法G
E→E+T│T
T→T*F│F
F→(E)│I
d、分析输⼊串i+i*i#
(1)消除G的左递归得到⽂法G‘
E→TE
E→+TE│ε
T→FT
T→*FT│ε
F→(E)│i
(2)求出每个产⽣式的select集,G’是LL(1)⽂法
SELECT(E→TE)={(,i}SELECT(E→+TE)={+}SELECT(E→ε)={),#}SELECT(T→FT)={(,i}SELECT(T→*FT)={*
}SELECT(T→ε)={+,),#}SELECT(F→(E))={(}SELECT(F→i)={i}
(3)依照选择集合把产⽣式填⼊分析表
注:表中空⽩处为出错
题⽬2:作业、习题5.1:消除左递归+判定+分析
G[S]:S-a|^|(T)T-T,S|S
d、分析输⼊串(a,a)#
⽂法G[S]:S-a|^|(T),T-T,S|S
(1)给出对(a,(a,a))的最左推导
(2)改写⽂法,去除左递归
(3)判断新⽂法是否LL1⽂法,如是,给出其预测分析表
(4)给出输⼊串(a,a)#的分析过程,判断其是否⽂法G的句⼦。答:(1)对(a,(a,a))的最左推导为:
S=(T)
=(T,S)
=(S,S)
=(a,S)
=(a,(T))
=(a,(T,S))
=(a,(S,S))
=(a,(a,S))
=(a,(a,a))
(2)改写⽂法为:
FIRST(→,SN)={,}
FIRST(→ε)={ε}
FOLLOW(N)={)}
由于SELECT(N→,SN)∩SELECT(N→ε)={,}∩{)}=?
所以⽂法是LL(1)的。
(3)预测分析表:
可见输⼊串(a,a)#是⽂法的句⼦。
题⽬3:复习、书本5.6例1:判定+分析
G[S]:S→aH,H→aMd|d,M→Ab|ε,A→aM|ed、分析输⼊串aaabd#
(1)判断G[S]是否为LL(1)⽂法;若是,构造其预测
文档评论(0)