编译原理一些习题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第2章形式语言基础

2.2 设有文法G[N]: N -> D | ND

D -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

(1)G[N]定义的语言是什么?

(2)给出句子0123和268的最左推导和最右推导。

解答:

(1)L(G[N])={(0|1|2|3|4|5|6|7|8|9)+} 或L(G[N])={α| α为可带前导0的正整数}

(2)

0123的最左推导:N ⇒ ND ⇒ NDD ⇒ NDDD ⇒ DDDD ⇒ 0DDD ⇒ 01DD ⇒ 012D ⇒ 0123 0123的最右推导:N ⇒ ND ⇒ N3 ⇒ ND3 ⇒ N23 ⇒ ND23 ⇒ N123 ⇒ D123 ⇒ 0123

268的最左推导:N ⇒ ND ⇒ NDD ⇒ DDD ⇒ 2DDD ⇒ 26D ⇒ 268

268的最右推导:N ⇒ ND ⇒ N8 ⇒ ND8 ⇒ N68 ⇒ D68 ⇒ 268

2.4 写一个文法,使其语言是奇数的集合,且每个奇数不以0开头。

解答:

首先分析题意,本题是希望构造一个文法,由它产生的句子是奇数,并且不以0开头,也就是说它的每个句子都是以1、3、5、7、9中的某个数结尾。如果数字只有一位,则1、3、5、7、9就满足要求,如果有多位,则要求第1位不能是0,而中间有多少位,每位是什么数字(必须是数字)则没什么要求,因此,我们可以把这个文法分3部分来完成。分别用3个非终结符来产生句子的第1位、中间部分和最后一位。引入几个非终结符,其中,一个用作产生句子的开头,可以是1-9之间的数,不包括0,一个用来产生句子的结尾,为奇数,另一个则用来产生以非0整数开头后面跟任意多个数字的数字串,进行分解之后,这个文法就很好写了。

N -> 1 | 3 | 5 | 7 | 9 | BN

B -> 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | B0

2.7 下面文法生成的语言是什么?

G1:

S->AB

A->aA| εB->bc|bBc G2:

S->aA|a A->aS

解答:

B ⇒ bc

B ⇒ bBc⇒ bbcc

B ⇒ bBc⇒ bbBcc ⇒ bbbccc

……

A ⇒ε

A ⇒ aA ⇒ a

A ⇒ aA ⇒ aaA ⇒ aa

……

∴S ⇒ AB ⇒ a m b n c n , 其中m≥0,n≥1即L(G1)={ a m b n c n | m≥0,n≥1} S ⇒ a

S ⇒ aA ⇒ aaS ⇒ aaa

S ⇒ aA ⇒ aaS ⇒ aaaA ⇒aaaaS ⇒ aaaaa ……

∴S ⇒ a2n+1 , 其中n≥0

即L(G2)={ a2n+1 | n≥0}

2.11 已知文法G[S]: S->(AS)|(b)

A->(SaA)|(a)

请找出符号串(a)和(A((SaA)(b)))的短语、简单短语和句柄。

解答:

S

( A S ) ( a )( b ) 因为S 不能⇒ (a),

所以(a)不是文法的句型。

没有短语、直接短语和句柄。

S

( A S )

( A S ) ( S a A ) ( b ) 因为S ⇒ (AS) ⇒(A(AS)) ⇒ (A((SaA)S)) ⇒(A((SaA)(b))),

所以(A((SaA)(b)))是文法的句型。

短语:(A((SaA)(b))),((SaA)(b)),(SaA),(b)

直接短语:(SaA),(b)

句柄:(SaA)

第3章自动机基础

3.1 构造下列正规式相应的DFA。

(2) (a|b)*(aa|bb)(a|b)*

解答:

NFA:

NFA化为DFA:

a b

{1} {1,3} {1,4} + {1}

{1,3} {1,2,3} {1,4} {2}

{1,4} {1,3} {1,2,4} {3}

{1,2,3} {1,2,3} {1,2,4} - {4}

{1,2,4} {1,2,3} {1,2,4} - {5}

a

+ a a

③ b -

b

最小化DFA:初始划分:{1,2,3},{4,5} 最终划分:{1},{2},{3},{4,5} 这样,状态4与状态5等价,将4和5合并:

+

b

3.2 将下图中的(a)和(b)分别确定化和最小化。

解答:

(a) NFA 化为DFA : a b {0} {0,1} {1}

+-{1} {0,1} {0,1} {1} - {2} {1} {0}

{3}

a

±① b 最小化DFA :{1,2},{3}

(b) 本身为DFA ,最小化DFA : {0,1},{2,3,4,5} {0,1},{2,4},{3,5}

3.4 给出文法G[S],构造相应最小的DFA 。 S->aS|bA|b A->aS

解: 原文法等价于:S->aS|bA|bB A->aS B->ε NFA :令 ①-S, ②-A, ③-B

③-

NFA 化为DFA :

a b

{1} {1} {2,3} +{1} {2,3} {1} - {2}

(a)

-

(b)

a a

相关文档
最新文档