- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理教程第四版答案
【篇一:编译原理教程课后习题答案——第三章】
完成下列选择题:
文法 g:s→xsx|y 所识别的语言是
a. xyx b. (xyx)*
c. xnyxn(n≥0) d. x*yx*
最左推导和最右推导对应的语法树必定相同
最左推导和最右推导对应的语法树可能不同
最左推导和最右推导必定相同
可能存在两个不同的最左推导,但它们对应的语法树相同
采用自上而下分析,必须。
a. 消除左递 a. 必有 ac 归 b. 消除右递归
c. 消除回溯 d. 提取公共左因子
设 a、b、c 是文法的终结符,且满足优先关系 ab 和 bc,则。
b. 必有 ca
c. 必有 bad. a~c 都不一定成立
在规范归约中,用
a. 直接短语 b. 句柄
c. 最左素短语 d. 素短语
a. 归约 b. 移进
c. 接受 d. 待约
a. lalr 文法 b. lr(0)文法
c. lr(1)文法 d. slr(1)文法
(8) 同心集合并有可能产生新的冲突。
a. 归约 b. “移进”/“移进”
c.“移进”/“归约” d. “归约”/“归约”
【解答】 (1) c (2) a (3) c (4) d (5) b (6) b (7) d (8) d
令文法 g[n]为g[n]: n→d|nd d→0|1|2|3|4|5|6|7|8|9
g[n]的语言 l(g[n])是什么?
给出句子 0127、34 和 568 的最左推导和最右推导。
【解答】
g[n]的语言 l(g[n])是非负整数。
最左推导: nndnddnddddddd0ddd01dd012d0127 nnddd3d34
nndnddddd5dd56d568
最右推导: nndn7nd7n27nd27n127d1270127 nndn4d434
nndn8nd8n68d68568
已知文法 g[s]为 s→asb|sb|b,试证明文法 g[s]为二义文法。
【解答】 由文法 g[s]:s→asb|sb|b,对句子 aabbbb 可对应如图3-1 所示的两棵语法树。
ss asbsb asbasb sbasb bb
图 3-1 句子 aabbbb 对应的两棵不同语法树
因此,文法 g[s]为二义文法(对句子 abbb 也可画出两棵不同语法树)。
sassas sas??sas
(a)(b)
图 3-2 句子 aa 对应的两棵不同的语法树由图 3-2 可知,文法 g[s]为二义文法。
按指定类型,给出语言的文法。
(1) l={aibj|j>i≥0}的上下文无关文法;
(3) 由相同个数 a 和 b 组成句子的无二义文法。
【解答】 (1) 由l={aibj|j>i≥0}知,所求该语言对应的上下文无关文法首先应有 s→asb 型产生式,以保证 b 的个数不少于 a 的个数;其次,还需有 s→sb 或 s→b 型的产生式,用以保证 b 的个数多于 a 的个数。因此,所求上下文无关文法 g[s]为
g[s]:s→asb|sb|b
由图 3-3 可直接得到正规文法g[s]:s→aa|bba→as|bc|b 图 3-3 习题 3.5 的
我们用一个非终结符 a 代表一个 a(即有 a→a),用一个非终结符b 代表一个 b(即有 b→b);为了保证 a 和 b 的个数相同,则在出现一个 a 时应相应地出现一个 b,出现一个 b 时则相应出现一个 a。假定已推导出 ba,如果下一步要推导出连续两个 b 时,则应有
babbaa。也即为了保证 b 和a 的个数一致,应有 a→baa;同理有b→abb。此外,为了保证递归地推出所要求的 ab 串,应有 s→abs 和 s→bas。由此得到无二义文法 g[s]为
a→baa|a b→abb|b
有文法 g[s]: s→aacb|bd a→aab|c
b→bsca|b
试求句型 aaabcbbdcc 和 aacbbdcc 的句柄;
写出句子 acabcbbdcc 的最左推导过程。
【解答】 (1) 分别画出对应句型 aaabcbbdcc 和aacbbdcc 的语法树如图 3-4 的(a)、
s(b)所示。saacb
aacb aabbsca
bscabdc 图 3-4 习题 3.6 的语法树
bdc b (a )(b ) (a) aaabcbbdcc; (b) aacbbdcc 对树(a),直接短语有 3 个:aab、b 和 c,而 aab 为最左直接短语(即为句柄)。对树(b), 直接短语有两个:bd 和 c,而 bd 为最左直接短语。
能否不画出语法树,而直接由定义(即在句型中)寻找满足某个产生式的候选式这样一个最左子串(即句柄)呢?例如,对句型 aaabcbbdcc, 我们可以由左至右扫描找到第一个子串 aab,它恰好是满足 a
文档评论(0)