哈工大编译原理习题及答案 联系客服

发布时间 : 星期四 文章哈工大编译原理习题及答案更新完毕开始阅读68851b05bed5b9f3f90f1ca1

? ?

5.证:因为是左递归文法,所以必存在左递归的非终结符A,及形如A→α|β的产生式,且αT* Ad.

则first(Ad) ∩first(β)≠φ,从而

first(α) ∩first(β)≠φ,即文法不满足LL(1)文法条件。得证。

?

6.证:LL(1)文法的分析句子过程的每一步,永远只有唯一的分析动作可进行。现在,假设LL(1)文法G是二义性文法,则存在句子α,它有两个不同的语法树。即存在着句子α有两个不同的最左推导。从而可知,用LL(1)方法进行句子α的分析过程中的某步中,存在两种不同的产生式替换,且均能正确进行语法分析,即LL(1)分析动作存在不确定性。与LL(1)性质矛盾。所以,G不是LL(1)文法。 ?

7.解:

(1)D产生式两个候选式fD和f的first集交集不为空,所以不是LL(1)的。 (2)此文法具有左递归性,据第5题结论,不是LL(1)的。

?

8.解:

(1)消除左递归性,得:

S→bZ11|aZ21A→bZ12|aZ22Z11→bZ11|εZ12→bZ12 Z21→bZ11|aZ21Z22→bZ12|aZ22|ε

消除无用产生式得:S→bZ11|aZ21Z11→bZ11|εZ21→bZ11|aZ21 此文法已满足LL(1)文法的三个条件,

所以 G’[S]: S→bZ11|aZ21Z11→bZ11|εZ21→bZ11|aZ21 (2) G’文法的各非终结符的FIRST 集和FOLLOW集:

产生式 S→bZ11 →aZ21 Z11→bZ11 →ε Z21→bZ11 →aZ21

LL(1)分析表为: S Z11 Z21

? (1)

产生式 S→SaB →bB A→S →a B→Ac a aZ21 aZ21 9.解:

FIRST 集 {b} {a} {b} {ε} {b} {a}

FOLLOW集 {#}

{#}

{#}

b bZ11 bZ11 bZ11

# ε

first集 {b}

follow集 {#,a,c}

{b} {b}

{c}

{a} {a,b}

{#,a,c}

(2)将S→SaB | bB改写为S→bBS’,S’ →aBS’|ω,可验证,新文法是LL(1)的。

? ?

10.解:

1)为方便书写,记:<布尔表达式>为A,<布尔因子>为B,<布尔二次量>为C,<布尔初等量>为D,原文法可以简化为:

A→A∨B | B B→B∧C | CC→┐D | DD→(A) | true | false, 显然,文法含有左递归,消去后等价LL(1)文法为: A→BA’ A’ →∨BA’|ω B→CB’,

B’ →∧CB’|ωC→┐D|DD→(A)| true|false

(2)略

?

证:若LL(1)文法G有形如B→aAAb的产生式,且AT+ε及AT*ag,根据FIRST集FOLLOW集的构造算法可知,FIRST(A)中一切非ε加到FOLLOW(A)中,则a∈FOLLOW(A);又因为a∈FIRST(ag),所以两集合相交非空,因此,G不是LL(1)文法;与前提矛盾,假设不成立,得证。 ? (1) S A ( a) b S = = A = < = < ( = = < < < <

a > = < > >

> ) > > >> > b > >

不是简单优先文法。 (2)

S RT ( )∧ a, S > = R = T > ( < =< < < < ) > > ∧ > > a > > , < = < < < 是简单优先文法。 (3) S R (a , ) S = < < R > > ( = < < a > >

解:

, = < < ) > >

是简单优先文法。

o 首先消去无用产生式Z→E, Z→E+T

S Z T# i () S Z = = T > > # = < < < I > > ( = < < < ) > >

化简后的文法是简单优先文法;

?

S A / a

=

解:

S

<

< > >

> >

A

/ > =

= A >

A和/之间同时有关系=和<,所以不是简单优先文法;

?

提示:分析教材中给出的算法,选择一种合适的表示给定文法的方法(尽量简单),使得对文法的输入比较简单的同时(需要把输入转化为计算机语言表示,这种转化应该尽量简单),能够比较简单地构造3个基本关系矩阵(=,LEAD和LAST)。 ?

证明:设xjxj+1...xi是满足条件xj-1xi+1的最左子串。由=关系的定义,可知xjxj+1...xi必出现在某产生式的右部中。又因xj-1

解:为描述方便,用符号表示各非终结符:D=<变量说明>,L=<变量表>, V= <变量>,T=<类型>,a=VAR,则消去V,并采用分层法改写文法,得到:D→aW:T;W→LL→L,i|iT→r|n|b|c

其全部简单优先关系是: