ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:346.38KB ,
资源ID:25469865      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25469865.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理 作业标准答案.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理 作业标准答案.docx

1、编译原理 作业标准答案编译原理第一次作业参考答案 一、 下列正则表达式定义了什么语言(用尽可能简短的自然语言描述)?1. b*(ab*ab*)*所有含有偶数个a的由a和b组成的字符串.2. c*a(a|c)*b(a|b|c)* | c*b(b|c)*a(a|b|c)* 答案一:所有至少含有1个a和1个b的由a,b和c组成的字符串.答案二:所有含有子序列ab或子序列ba的由a,b和c组成的字符串.说明:答案一要比答案二更好,因为用自然语言描述是为了便于和非专业的人员交流,而非专业人员很可能不知道什么是“子序列”,所以相比较而言,答案一要更“自然”.二、 设字母表=a,b,用正则表达式(只使用a,

2、b,|,*,+,?)描述下列语言:1. 不包含子串ab的所有字符串.b*a*2. 不包含子串abb的所有字符串.b*(ab?)*3. 不包含子序列abb的所有字符串.b*a*b?a*注意:关于子串(substring)和子序列(subsequence)的区别可以参考课本第119页方框中的内容.()/ ()/ ()/ ()/ ()/ ()/ ()/ ()/编译原理第二次作业参考答案 一、 考虑以下NFA:1. 这一NFA接受什么语言(用自然语言描述)?所有只含有字母a和b,并且a出现偶数次或b出现偶数次的字符串.2. 构造接受同一语言的DFA.答案一(直接构造通常得到这一答案):答案二(由NFA

3、构造DFA得到这一答案):二、 正则语言补运算3. 画出一个DFA,该DFA恰好识别所有不含011子串的所有二进制串.4. 画出一个DFA,该DFA恰好识别所有不含011子串的所有二进制串. 规律:构造语言L的补语言L的DFA,可以先构造出接受L的DFA,再把这一DFA的接受状态改为非接受状态,非接受状态改为接受状态,就可以得到识别L的DFA.说明:在上述两题中的D状态,无论输入什么符号,都不可能再到达接受状态,这样的状态称为“死状态”. 在画DFA时,有时为了简明起见,“死状态”及其相应的弧(上图中的绿色部分)也可不画出.5. 再证明:对任一正则表达式R,一定存在另一正则表达式R,使得L(R

4、)是L(R)的补集.证明:根据正则表达式与DFA的等价性,一定存在识别语言L(R)的DFA. 设这一DFA为M,则将M的所有接受状态改为非接受状态,所有非接受状态改为接受状态,得到新的DFA M. 易知M识别语言L(R)的补集. 再由正则表达式与DFA的等价性知必存在正则表达式R,使得L(R)是L(R)的补集.三、 设有一门小小语言仅含z、o、/(斜杠)3个符号,该语言中的一个注释由/o开始、以o/结束,并且注释禁止嵌套.1. 请给出单个正则表达式,它仅与一个完整的注释匹配,除此之外不匹配任何其他串. 书写正则表达式时,要求仅使用最基本的正则表达式算子(,|,*,+,?).参考答案一:/o(o

5、*z|/)*o+/思路:基本思路是除了最后一个o/,在注释中不能出现o后面紧跟着/的情况;还有需要考虑的是最后一个o/之前也可以出现若干个o.参考答案二(梁晓聪、梁劲、梁伟斌等人提供):/o/*(z/*|o)*o/2. 给出识别上述正则表达式所定义语言的确定有限自动机(DFA). 你可根据问题直接构造DFA,不必运用机械的算法从上一小题的正则表达式转换得到DFA.()/ ()/ ()/ ()/ ()/ ()/ ()/ ()/ 编译原理第三次作业参考答案 一、 考虑以下DFA的状态迁移表,其中0,1为输入符号,AH代表状态:01ABABACCDBDDAEDFFGEGFGHGD其中A为初始状态,D

6、为接受状态,请画出与此DFA等价的最小DFA,并在新的DFA状态中标明它对应的原DFA状态的子集. 说明:有些同学没有画出状态H,因为无法从初始状态到达状态H. 从实用上讲,这是没有问题的. 不过,如果根据算法的步骤执行,最后是应该有状态H的.二、 考虑所有含有3个状态(设为p,q,r)的DFA. 设只有r是接受状态. 至于哪一个状态是初始状态与本问题无关. 输入符号只有0和1. 这样的DFA总共有729种不同的状态迁移函数,因为对于每一状态和每一输入符号,可能迁移到3个状态中的一个,所以总共有36=729种可能. 在这729个DFA中,有多少个p和q是不可区分的(indistinguisha

7、ble)?解释你的答案.解:考虑对于p和q,在输入符号为0时的情况,在这种情况下有5种可能使p和q无法区分:p和q在输入0时同时迁移到r(1种可能),或者p和q在输入0时,都迁移到p或q(4种可能). 类似地,在输入符号为1时,也有5种可能使p和q无法区分. 如果再考虑r的迁移,r的任何迁移对问题没有影响. 于是r在输入0和输入1时各有3种可能的迁移,总共有3*3=9种迁移. 因此,总共有5*5*9=225个DFA,其中p和q是不可区分的.三、 证明:所有仅含有字符a,且长度为素数的字符串组成的集合不是正则语言.证明:用反证法.假设含有素数个a的字符串组成的集合是正则语言,则必存在一个DFA接

8、受这一语言,设此DFA为D. 由于D的状态数有限,而素数有无限多个,所以必存在两个不同的素数p和q(设p aABe = aAbcBe = abbcBe = abbcde2. 用最右推导(rightmost derivation)推导出句子abbcde.S = aABe = aAde = aAbcde = abbcde3. 画出句子abbcde对应的分析树(parse tree).三、 考虑以下文法:S aSbS aSS 1. 这一文法产生什么语言(用自然语言描述)?所有n个a后紧接m个b,且n=m的字符串.2. 证明这一文法是二义的.对于输入串aab,有如下两棵不同的分析树3. 写出一个新的文

9、法,要求新文法无二义且和上述文法产生相同的语言.答案一:S aSb | TT aT | 答案二:S TST aT | S aSb | ()/ ()/ ()/ ()/ ()/ ()/ ()/编译原理第五次作业参考答案 一、 考虑以下文法:S aTUV | bVT U | UUU | bVV | cV写出每个非终端符号的FIRST集和FOLLOW集.FIRST(S)=a, b FIRST(T)=, b FIRST(U)= , b FIRST(V)=, cFOLLOW(S)=$ FOLLOW(T)= b, c, $ FOLLOW(U)= b, c, $ FOLLOW(V)=b, c , $二、 考虑

10、以下文法:S (L) | aL L, S | S1. 消除文法的左递归.S (L) | aL SLL ,SL | 2. 构造文法的LL(1)分析表.FIRST(S) = (, a FIRST(L) = (, a FIRST(L) = , FOLLOW(S) = $, , ) FOLLOW(L) = ) FOLLOW(L) = )NON-TERMINALINPUT SYMBOL()a,$SS (L)S aLL SLL SLLL L ,SL3. 对于句子(a, (a, a),给出语法分析的详细过程(参照课本228页的图4.21).MATCHEDSTACKINPUTACTIONS$(a, (a, a

11、)$(L)$(a, (a, a)$output S (L)(L)$a, (a, a)$(SL)$a, (a, a)$output L SL(aL)$a, (a, a)$output S a(aL)$, (a, a)$(a,SL)$, (a, a)$output L ,SL(a,SL)$(a, a)$(a,(L)L)$(a, a)$output S (L)(a,(L)L)$a, a)$(a,(SL)L)$a, a)$output L SL(a,(aL)L)$a, a)$output S a(a,(aL)L)$, a)$(a,(a,SL)L)$, a)$output L ,SL(a,(a,SL)L

12、)$a)$(a,(a,aL)L)$a)$output S a(a,(a,aL)L)$)$(a,(a,a)L)$)$output L (a,(a,a)L)$)$(a,(a,a)$)$output L (a,(a,a)$三、 考虑以下文法:S aSbS | bSaS | 这一文法是否是LL(1)文法?给出理由.这一文法不是LL(1)文法,因为S有产生式S ,但FIRST(S) = a, b, , FOLLOW(S) = a, b,因而FIRST(S)FOLLOW(S). 根据LL(1)文法的定义知这一文法不是LL(1)文法.()/ ()/ ()/ ()/ ()/ ()/ ()/ ()/编译原理第六

13、次作业参考答案 一、 考虑以下文法:(0) E E(1) E E+T(2) E T(3) T TF(4) T F(5) F F*(6) F a(7) F b1. 写出每个非终端符号的FIRST集和FOLLOW集. FIRST(E)= FIRST(E)= FIRST(T)= FIRST(F)=a, b FOLLOW(E)=$ FOLLOW(E)=+, $ FOLLOW(T)=+, $, a, b FOLLOW(F)= +, *, $, a, b2. 构造识别这一文法所有活前缀(viable prefixes)的LR(0) 自动机(参照课本4.6.2节图4.31).3. 构造这一文法的SLR分析表

14、(参照课本4.6.3节图4.37).STATEACTIONGOTOab+*$ETF0s4s51231s6accept2s4s5r2r273r4r4r4s8r44r6r6r6r6r65r7r7r7r7r76s4s5937r3r3r3s8r38r5r5r5r5r59s4s5r1r174. 给出SLR分析器识别输入串a+ab*的过程(参照课本4.6.4节图4.38)STACKSYMBOLSINPUTACTION(1)0a+ab*$shift(2)04a+ab*$reduce by Fa(3)03F+ab*$reduce by TF(4)02T+ab*$reduce by ET(5)01E+ab*$s

15、hift(6)016E+ab*$shift(7)0164E+ab*$reduce by Fa(8)0163E+Fb*$reduce by TF(9)0169E+Tb*$shift(10)01695E+Tb*$reduce by Fb(11)01697E+TF*$shift(12)016978E+TF*$reduce by FF*(13)01697E+TF$reduce by TTF(14)0169E+T$reduce by EE+T(15)01E$accept()/ ()/ ()/ ()/ ()/ ()/ ()/ ()/ 编译原理第八次作业参考答案 一、 考虑以下语法制导定义(Syntax D

16、irected Definition):语法规则语义规则S ABCDS.val = A.val + B.val + C.val + D.valA gBaA.val = B.val * 5B B1bB.val = B1.val * 2B bB.val = 2C C1cC.val = C1.val * 3C cC.val = 3D dD.val = 1对于输入串gbbabbccd构造带注释的分析树(annotated parse tree).最终答案:34二、 以下文法定义了二进制浮点数常量的语法规则: S L.L | LL LB | BB 0 | 1试给出一个S属性的语法制导定义,其作用是求出该

17、二进制浮点数的十进制值,并存放在开始符号S相关联的一个综合属性value中。例如,对于输入串101.101,S的value属性值结果应该是5.625。要求在编写语法制导定义时,不得改写文法!参见05级期末考答案.三、 选做课本Exercise 5.3.2和Exercise 5.3.3中的一题.Exercise 5.3.2产生式语义规则EE1+TE.expr = E1.expr + + + T.exprE.op = +ETE.expr = T.exprE.op = T.opTT1*Fif (T1.op = +) if (F.op = +) T.expr = ( + T1.expr + ) + *

18、 + ( + F.expr + )else T.expr = ( + T1.expr + ) + * + F.exprelse if (F.op = +) T.expr = T1.expr + * + ( + F.expr + )T.op = *T-FT.expr = F.exprT.op = F.opF (E)F.expr = E.exprF.op = E.opFletterF.expr = letter.lexvalF.op = nExercise 5.3.3产生式语义规则EE1+TE.expr = E1.expr + + + T.exprE.deri = E1.deri + + + T.deriETE.expr = T.exprE.deri = T.deriTT1*FT.expr = T1.expr +* +F.exprT.deri = ( + T1.expr +* +F.deri + + + T1.deri + * + F.expr + )T-FT.expr = F.exprT.deri = F.deriF (E)F.expr = E.exprF.deri = ( + E.deri + )FidF.expr = idF.deri = 0FxF.expr = x.valF.deri = 1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1