编译原理陈意云_课后答案2.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 | T T - TF | F F - 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)

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

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

1亿VIP精品文档

相关文档