文档库 最新最全的文档下载
当前位置:文档库 › 编译原理2011期末考试试卷答案

编译原理2011期末考试试卷答案

编译原理2011期末考试试卷答案
编译原理2011期末考试试卷答案

2011~ 2012 学年第 1 学期期末考试试卷答案

《编译原理》(共 4 页)

(考试时间: 2011 年 12 月 25 日)

一、选择题(每题 1 分,共 10 分)

1.B

2.D

3.A

4.D

5.D

6.C

7.B

8.C

9.D 10.B

二、简答题(每题 5 分,共 20 分)

1.何谓二义性文法?试举一例说明。

答:若文法G 的一个句子对应有两棵或两棵以上不同的推导树,则称该句子是

二义性的。产生二义性句子的文法称为二义性文法,否则该文法是无二义性的。

例子:给定文法G[] :

*||a|b

考察句子 ab*,它有两棵不同的推导树,如下所示:

*

a

*

b a b

a

2.通过合并 LR(1) 文法中的同心状态得到的

LALR(1) 文法可能会产生哪些冲突?一定不会产生哪些冲突?为什么?

答:可能会产生归约 -归约冲突,一定不会产生移进 -归约冲突。

因为在对 LR(1) 合并同心集合时,有可能将原本没有冲突的同心集的项目集

合并后造成一些归约项目向前搜索符集合的交集不是空,产生归约-归约冲突。但是由于文法本身已经是LR(1) 文法,因此可知,在项目集中一定不存在移进 -归约冲突,也就是移进项目要求输入的终结符和任意归约项目的向前搜索符集合的交集都是空集。这样,在将同心集合并之后,移进项目要求输入的终结符和归约项目的向前搜索符集合的交集也还是空集。

3.自顶向下的预测分析方法为什么不能分析具有左递归的文法?

答:在自顶向下的语法分析技术中,要解决的问题是根据当前输入符号判断将识

别符号以及非终结符号替换成哪条规则的右部,若文法具有左递归,则在分析过程中,无法判断替换的规则,造成无穷递归求解过程。

4.设 G=(V N,V T, P,)是上下文无关文法,产生式集合P 中任意一个产生式应具有什么样的形式?若G 是正则文法呢?

答:上下文无关文法的产生式形式为:

A →α,其中, A ∈ V N,α∈( V N∪V T)*

正则文法产生式形式为:

N,a∈V T

A→,或→ (右线性文法)其中,A,B ∈V

aBA a

A→Ba,或 A → a(左线性文法)其中, A,B ∈ V N, a∈V T

三、推导题(共70 分)

1.对于文法 G[S]:

S→ aAcB|Bd A →AaB|c B→bScA|b

(1)求句型 aAaBcbbdcc 和 aAcbBdcc 的句柄。(2)写出句子 acabcbbdcc的最左推导过程( 15 分)

2.构造一个 NFA,

(1)接受字母表 {a,b,d} 上的正规式 b*(ad|d)(b|ab)+

描述的集合。 (5 分)

(2)将(1)中的 NFA 转换为等价的 DFA(5 分)

(3)将(2)中的 DFA 转换为最小状态 DFA(写出步骤) (5 分)

3. 给出如下程序段的三地址代码。(10 分)

z := 3;

while( j< 10)

{

j := x +1;

x := x+1 ;

m: = x+1;

if( x <10)

y:= A[i] +m

else y:= A[i] -m

n := z + 10;

}

答:

z:=3

Label Ltest

t1:= j<10

fjump t1 Lend1

j := x +1

x := x+1

m: = x+1

t2:= x<10

fjump t2 Lfalse

y:= A[i] +m

jump Lend2

Label Lfalse

y:= A[i]-m

Lable Lend2

n := z + 10

jump Ltest

Label Lend1

4. 用自底向上的语法分析方法分析数学公式编排预处理器EQN 中的文法G[E] :

E→E sub E sup E

E→E sub E

E→E sup E

E→{E}

E→c

对于上述二义性文法G[E] ,给出如下规则

(1)E→ E sub E sup E是特例产生式。

(2)sub 和 sup 具有相同的优先级

(3)sub 和 sup 的结合顺序都是右结合的。给出上述文法的语法分析表。(30 分)

相关文档