2018年编译原理期中测试答案1

  • 格式:doc
  • 大小:249.00 KB
  • 文档页数:5

下载文档原格式

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

2018年11月编译原理期中测试

一、概念题:(每题 分,共 30 分)

1、请写出由下列文法所确定的语言。(16分)

(1)G1: S →10S01 S →aA A →bA A →a 解:

n

m n n m n m

n n n n n n n

a a

b A ab abA aA S S S S )01()10()01()10()01()10()01()10()01()10(010*********⇒⇒⇒⇒⇒⇒⇒

所以语言{n

m

n

a a

b )01()10(} n>=0,m>=0

(2)G2: S →aSS S →a

2、解

:1

2*+⇒⇒⇒⇒⇒⇒n a S aaaaaaa aaSSaSS S aaaaa

aaSSS S aaa

S

所以语言{ 1

2+n a

} n>=0

(3)G3:S → aSb|c 解:

(4)G4: S->D|SD D->0|1|2|3|4|5|6|7|8|9 解:

2、已知语言L ,试构造相应文法。(6分)

构造产生语言 }1,0|{≥≥n m b d c a n m m n 的文法。

答:S → aAb | aSb A →ε | cAd

3、已知文法 G[S] 为 S → aSb|Sb|b ,试证明文法 G[S] 为二义文法。(8分) 解:一个文法,如果存在某个句子有不只一棵语法分析树与之对应,那么称这个 文法是二义性文法。句子aabbbb 有两棵语法树。如下图:

二、简答题:(每题分,共 70 分)

1、给定文法G[S]:bQ

aA

S|

→; b

bB

aA

A|

|

→;aQ

bD

B|

→;

b

bD

aQ

Q|

|

→;aA

bB

D|

→;bF

aB

E|

→; b

aE

bD

F|

|

构造相应的最小的DFA (必须给出中间构造过程)。(15分)

解:先构造其NFA:

用子集法将NFA确定化:

将S、A、Q、BZ、DZ、D、B重新命名,分别用0、1、2、3、4、5、6表示。因为3、4中含有z,所以它们为终态。

令P

P1=({0,5, 6},{1,2},{3,4})再用b进行分割:

P2=({0},{5, 6},{1,2},{3,4})再用a、b 进行分割,仍不变。再令{0}为A,{1,2}为B,{3,4}为C,{5,6}为D。最小化为上右图。

2、构造一个正规式,它接受S={a,b,c}上符合以下规则的字符串:串内至多包含一个 a.(5分)

(b|c)* | (b|c)*a(b|c)*

3、设文法G(S):(15分)

S → S+aF | aF | +aF

F → *aF | *a

(1) 消除左递归和回溯; (2) 构造相应的FIRST和FOLLOW集合;

(3) 构造预测分析表

答:

(1)消除左递归(2分)和回溯(2分):

S→aFS' | +aFS'

S'→+aFS' | ε

F→*aF'

F'→F | ε

(2)构造FIRST集合(1分)构造FOLLOW集合(2分)

FIRST(S)={a,+} FOLLOW(S)={$}

FIRST(S')={+,ε} FOLLOW(S')={$} FIRST(F)={*} FOLLOW(F)={+,$}

FIRST(F')={*,ε) FOLLOW(F')={+,$} (3)构造预测分析表(3分)

-

a + * $ S S→aFS' S→+aFS'

- - S' - S'→+aFS'

- S'→ε F - - F→*aF' - F'

-

F'→ε

F'→F

F'→ε

4、已知文法a

aT T aT

aT aT S S S G ++→→|*||*:)(

(1) 给出句型aT a a a ++*的最左推导并画出语法树;

(2) 写出上述句型的所有短语,直接短语、句柄和最左素短语。(10分) 解:(1)句型aT a a a ++*的最左推导为:

aT a a a aT a a aT aT aT S S ++⇒+⇒⇒⇒****,语法树如下图:

(2)短语:a +,a a +,aT +,aT a a a ++* 直接短语:a +, aT + 句柄:a +

最左素短语:a +

5、文法εε

ε||||:)(d D eT Db B Ba T TB M M G →→→→是否是LL(1)的,说明理由。(列出FIRST 和FOLLOW

集)(10分)(76页3.4)

解:计算文法的FIRST 集合和FOLLOW 集合:

FIRST(M)={a,b,e,d,ε} FIRST(T)={a,b,e,d,ε} FIRST(B)={b,e,d,ε} FIRST(D)={d,ε}

FOLLOW(M)={#} FOLLOW(T)={a,b,e,d,#} FOLLOW(B)={a,#} FOLLOW(D)={b} 检查文法的所有产生式,我们可以得出: (1)该文法不含左递归;

(2)该文法中每一个非终结符M,T,B,D 的各个产生式的候选首符集两两不相交;

(3)该文法的非终结符T,B 和D ,他们都有ε候选式,而且

φ≠=},,,{)()(d e b a T FOLLOW T FIRST I

所以该文法不是LL(1)文法。

6、已知文法S S A A a

A S S G ||)(:)(+→→

(1)求出该文法所有非终结符的FIRSTVT 集、LASTVT 集。 (2)构造该文法的算符优先关系表(15分) 100页 例4.3 解:FIRSTVT(S)={a,(} FIRSTVT(A)={+,a,(} LASTVT(S)={a,)} LASTVT(A)={+,a,)}