- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理陈意云_课后答案2
luanj@mail.ustc.edu.cn 编译原理习题课(2) 栾 俊 luanj@mail.ustc.edu.cn * 3.1 考虑文法 S - (L)|a L - L,S|S(a) 建立句子(a,(a,a))和(a,((a,a),(a,a)))的分析树(b) 为(a)的两个句子构造最左推导(c) 为(a)的两个句子构造最右推导(d) 这个文法产生的语言是什么 3.1 (续) - (a,(a,a)) S =(L) =(L,S) =(S,S) =(a,S) =(a,(L)) =(a,(L,S)) =(a,(S,S))=(a,(a,S)) =(a,(a,a)) 3.1 (续) - (a,((a,a),(a,a))) S =(L) =(L,S) =(S,S) =(a,S) =(a,(L)) =(a,(L,S)) =(a,(S,S))=(a,((L),S)) =(a,((L,S),S)) =(a,((S,S),S)) =(a,((a,S),S)) =(a,((a,a),S)) =(a,((a,a),(L))) =(a,((a,a),(L,S))) =(a,((a,a),(S,S))) =(a,((a,a),(a,S))) =(a,((a,a),(a,a))) 3.1 (续) 描述的语言: 括号匹配的串,串中的各项由”,”隔开,项可以是括号匹配的子串或a 3.2 考虑文法 S - aSbS|bSaS|ε(a) 为句子abab构造两个不同的最左推导,以说明此文法二义(b) 为abab构造对应的最右推导(c) 为abab构造对应的分析树(d) 这个文法产生的语言是什么 3.2 (续) (1) S=aSbS=abS=abaSbS=ababS=abab(2) S=aSbS=abSaSbS=abaSbS=ababS=abab S=aSbS=aSb=abSaSb= abSab =abab (2) 3.4 文法 R-R’|’R | RR | R* | (R) | a | b产生字母表(a, b)上所有不含ε的正规式该文法是二义的(a) 证明该文法产生字母表{a,b}上的所有正规式(b) 为该文法写一个等价的非二义文法。(c) 按照上面的两个文法构造ab|b*a的分析树 3.4 (续) 证明该文法产生字母表{a,b}上的所有正规式证明:1)该文法产生的串是字母表{a,b}上的正规式R-a和R-b产生a,b,而a,b是{a,b}上的符号,因此是正规式。若R1,R2产生正规式α,β则: R-R1R2产生正规式αβ R-R1|R2产生正规式α|β R-R1* 产生正规式α* R-(R1)产生正规式 (α) 2)字母表{a,b}上的所有正规式都可由此文法产生字母表{a,b}上的任一正规式(其中α,β为正规式)必为以下形式之一:αβ,可由R-RR产生α|β,可由R-R|R产生α*,可由R-R*产生 (α),可由R-(R)产生 a,可由R-a产生 b,可由R-b产生因而,该文法产生字母表{a,b}上的所有正规式 3.4 (续) 该文法没有体现运算符 |、*、() 、并置的优先级,因而是二义的。 R=R|R= a|R =a|R*=a|b*R=R*=R|R*=a|R*=a|b* E - E’|’T | TT - TF | FF - F* | (E) | a | b E=E|T=E|F=E|F*=E|b*=T|b*=F|b*=a|b* 3.4 (续) - ab|b*a 二义的 非二义的 3.5 下面的条件语句文法 stmt-if expr then stmt | matched_stmt matched_stmt - if expr then matched_stmt else stmt | other试图消除悬空else的二义性。请证明此文法仍是二义的。 3.5 (续) 由于matched_stmt不能保证then和else的配对,因而存在二义性 句型if expr then if expr then matched_stmt else if expr then matched_stmt else stmt存在两个不同的最左推导 期望的是: if expr then if expr then matched_stmt else if expr then matched_stmt else stmt 3.5 (续) 一种推导,和期望的不一样 stmt = match
文档评论(0)