2023年12月20日发(作者:)

一、画图( 每题参考分值5分 )

1、设有布尔表达式文法G【B】: B→B or T | T

T→T and F | F

F→not F | (B) | true | false

给出句型 true and not false or F的语法树,以及所有直接短语、句柄。

正确答案:

直接短语:true

false

F

句 柄 :true

2、设有基本块: t1=3*A

t2=2*C

t3=t1+t2

t4=t3十5

t5=2*C

t6=3*A

t7=t6+t5

M=t7-1

N=t4-M

1.画出DAG图;

2.假设只有M,N在基本块后面还要被引用,请写出优化后的代码序列。

正确答案:

答:

DAG:

优化后的代码

1. t1=3*A

2. t2=2*C

3. t3=t1+t2

4. t4=t3+5

5. M=t3-1

6. N=t4-M

3、设有布尔表达式文法G【B】: B→B or T | T

T→T and F | F

F→not F | (B) | true | false

给出句子 ( true or false)and not false的推导和语法树。

正确答案:

解:

B T T and F F and F (B)and F (B or T)and F

(T or T)and F

(true or F)and F

(F or T)and F (true or T)and F

(true or false )and F

( true or false)and not false (true or false )and not F

4、将赋值语句x=a * b+c *(d+e * f / g)*h 翻译为相应的逆波兰式和四元式

正确答案:

答:

逆波兰式: x a b * c d e f * g / + * h * + =

四元式:⑴ (*,a, b,t1)

⑵ (*,e, f,t2)

⑶(/,t2, g,t3)

⑷(+,d, t3,t4)

⑸(*,c,t4,t5)

⑹(*,t5,h, t6)

⑺(+,t1, t5, t6)

(8)(=,t6, ,x)

5、构造下面文法的预测分析表(LL(1)分析表)

G【】: →begin d ; X end

X →d ; X | s Y

Y →; s Y | 

正确答案:

答:

分析表(每个2分,共10分)

begin

P

d

s

end

#

P begin

d

;X end

X

X

X

Y

YsY

6、将语句 if x > 2 and x < 20 then y = x * 10 else y = x + 6 表示为相应的四元式。

d

;XsY

;Ye

正确答案:

⑴ (j>,x,2, ⑶ )

⑵ (j, _, _,⑻ )

⑶ (j<,x,20,⑸ )

⑷ (j, _, _,⑻ )

⑸ (*, x, 10,t1 )

四元式:

⑹(=, t1, _,y )

⑺(j, _, _,⑽ )

⑻(+, x, 6,t2 )

⑼(=, t2, _, y )

⑽ …

7、设有文法G【S】:S  aBc|bAB A  aAb|b B  b|ε

构造其LL(1)分析表。

正确答案:

答:

因为FOLLOW(B)=FIRST(c)∪FOLLOW(S)={c,#}

分析表

S

A

B

8、对于下述文法G【A】: A→cAb | cAd | ε

1.构造识别其规范句型所有活前缀的DFA;

2.说明该文法是何种LR文法,并给出其相应的LR分析表。

a

SaBc

AaAb

b

S bAB

Ab

Bb

Bε

c

Bε

#

正确答案:

解:将文法拓广为:

G’[A’]: (0) A’ →A (1) A→cAb (2) A→cAd (3)A→ε

DFA

因为上述DFA的I0、I2状态集中有移进-归约冲突,

所以该文法不是LR(0)文法。

对于I0、I2中:

归约项目A→• 移进项目A→• cAb和A→• cAd

而:{ c} ∩ FOLLOW(A)= {c} ∩ { b,d,#} =Φ

所以可用SLR(1)方法解决I0、I2的冲突。

所以该文法是SLR(1)文法。

分析表(6分,每行1分)

ACTION

b

c

d

#

GOTO

A

1

0

r3

S2

r3

r3

1

acc

3

2

r3

S2

r3

r3

3

S4

4

r1

5

r2

S5

r1

r1

r2

r2

9、将语句if x > y then x:=10 else x:= x + y 翻译为相应四元式。

正确答案:

解:四元式:

⑴ (j>,x, y,⑶ )

⑵ (j, _, _,⑸ )

⑶ (:=,10,_, x )

⑷ (j, _, _,⑺ )

⑸(+, x, y,t1 )

⑹(:=, t1, _,x )

10、设文法G【S】: S→a | b |(T)

T→T,S | S

1. 改写文法,消除其文法中的直接左递归;

2.证明改写后的文法是LL(1)文法,并且构造其预测分析表。

正确答案:

答:

改写文法: S→a | b |(T)

T→S T’ S→,ST’| ε

分析表

a

S

T

T’

b

(

)

#

a

ST’

b

ST’

(T)

ST’

,ST’

e

二、单选( 每题参考分值2.5分 )

11、编译过程中,词法分析阶段的任务是 。

A.

识别表达式

B.

识别语言单词

C.

识别语句

D.

识别程序

错误:【B】

12、一个文法G是四元组,分别是:非终结符,终结符,开始符号,以及 。

A.

句子

B.

句型

C.

单词

D.

产生式

错误:【D】

13、LR语法分析栈中存放的状态是识别文法规范句型 的DFA状态。

A.

前缀

B.

活前缀

C.

句柄

D.

LR(0)项目

错误:【B】

14、堆式动态分配申请和释放存储空间遵守

原则。

A.

先申请先释放

B.

先申请后释放

C.

后申请先释放

D.

任意申请和释放

错误:【D】

15、循环优化是指对 中的代码进行优化。

A.

循环

B.

函数

C.

基本块

D.

整个程序

错误:【A】

16、过程的DISPLAY表中记录了 。

A.

过程的嵌套层次

B.

过程的连接数据

C.

过程的返回地址

D.

过程的入口地址

错误:【A】

17、有文法G[S]:S→aA|a|bB A→aS B→aB|bS 则____为L(G)中的句子。

A.

abab

B.

aababab

C.

abaa

D.

baaba

错误:【A】

18、无符号常数的识别与拼数工作通常在 阶段完成。

A.

语法分析

B.

语义分析

C.

词法分析

D.

代码优化

错误:【C】

19、正规表达式最适合描述 。

A.

语法

B.

语义

C.

词法

D.

程序变换

错误:【C】

20、中缀表达式a+b*(c+d)的逆波兰表示是____。

A.

abcd+*+

B.

ab+cd*+

C.

abc+*d+

D.

a+bc*d+

错误:【A】

21、对应Chomsky四种文法的四种语言之间的关系是 。

A.

L0L1L2L3

B.

L3L2L1L0

C.

L3=L2L1L0

D.

L0L1L2=L3

错误:【B】

22、词法分析器的输出结果是 。

A.

单词的种别码

B.

单词组符号表中的位置

C.

单词的种别码和单词的自身值

D.

单词的自身值

错误:【C】

23、____文法不是LL(1)的。

A.

递归

B.

右递归

C.

2型

D.

含有公共左因子的

错误:【D】

24、有文法G=({S},{a},{ S→SaS,S→ },S),该文法是____。

A.

LL(1)文法

B.

二义性文法

C.

算符优先文法

D.

SLR(1)文法

错误:【B】

25、自底向上语法分析法的原理是____。

A.

“移进——推导法”

B.

“最左推导法”

C.

“移进——归约法”

D.

“推导——归约法”

错误:【C】

26、设有如图所示的有穷自动机。其中状态①为初态,状态⑤为终态。假设digit代表数字0到9。则下述实数中 可被该有穷自动机接受。

A.

+123

B.

一1.

C.

6

D.

一11.47

错误:【D】

27、在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是 。

A.

终结符集

B.

非终结符集

C.

字母表

D.

状态集

错误:【A】

28、设G是一个给定的文法,S是文法的开始符号,如果S法G的一个____。

x(其中x∈V*),则称x是文A.

候选式

B.

句型

C.

产生式

D.

单词

错误:【B】

29、编译程序的语法分析器接受以____为单位的输入,并产生有关信息供以后各阶段使用。

A.

表达式

B.

产生式

C.

单词

D.

语句

错误:【C】

30、语言是 。

A.

句子的集合

B.

产生式的集合

C.

符号串的集合

D.

句型的集合

错误:【A】

31、在规范归约中,用 来刻划可归约串。

A.

直接短语

B.

句柄

C.

最左素短语

D.

素短语

错误:【B】

32、文法G【S】=({b},{S,B},S,{S→b│bB,B→bS}),该文法所描述的语言____。

A.

L(G[S])={b2i+1│i≥0}

B.

L(G[S])={b2i+1│i≥1}

C.

L(G[S])={bi│i≥0}

D.

L(G[S])={b2i│i≥0}

错误:【A】

33、在产生式中,符号“→”(“::=”)表示 。

A.

等于

B.

恒等于

C.

取决于

D.

定义为

错误:【D】

34、一个句型最左边的 称为该句型的句柄。

A.

短语

B.

素短语

C.

规范短语

D.

直接短语

错误:【D】

35、在编译程序常用的语法分析方法中,算符优先分析法属于 分析方法。

A.

自左至右

B.

自上而下

C.

自下而上

D.

自右向左

错误:【C】

36、四元式之间的联系是通过 实现的。

A.

指示器

B.

临时变量

C.

符号表

D.

程序变量

错误:【B】

37、程序基本块是指____。

A.

一个子程序

B.

一个仅有一个入口和一个出口的语句

C.

一个没有嵌套的程序段

D.

一组顺序执行的程序段,仅有一个入口和一个出口

错误:【D】

38、 算符优先文法G【S】: EE+T,T(E)|i 则关于优先级的判断正确的是____。

A.

+ •> (

B.

( •> (

C.

+ •> )

D.

( •> )

错误:【C】

39、不能被如下状态转换图识别的句子是 。

A.

a0b

B.

a1010b

C.

b00b

D.

ab

错误:【D】

40、代码优化时所依据的是 。

A.

等价变换规则

B.

词法规则

C.

语法规则

D.

语义规则

错误:【A】

41、FORTRAN语言中的存储分配策略是 。

A.

时钟分配策略

B.

最佳分配策略

C.

静态存储分配策略

D.

动态存储分配策略

错误:【C】

42、若a为终结符,则A→α·aβ是 项目。

A.

归约

B.

移进

C.

接收

D.

待约

错误:【B】

43、如果在文法G中存在一个句子,当其满足下列条件____时,则称该文法是二义性文法。

A.

该句子的最右推导唯一

B.

该句子有两个不同的最左推导

C.

该句子对应的语法树唯一

D.

该句子的最左推导和最右推导相同

错误:【B】

44、在状态转换图中,结点代表____,用圆圈表示。

A.

输入缓冲区

B.

向前搜索

C.

字符串

D.

状态

错误:【D】

45、算符优先分析法从左到右扫描输入串,当栈顶出现 时进行归约。

A.

素短语

B.

直接短语

C.

句柄

D.

最左素短语

错误:【D】

46、一个确定的有穷自动机DFA是一个 。

A.

五元组(K,Σ,f,S,Z)

B.

四元组(VN, VT,P,S)

C.

四元组(K,Σ,f,S)

D.

三元组(VN, VT,P)

错误:【A】

47、编译程序使用 区别标识符的作用域。

A.

说明标识符的过程或函数名

B.

说明标识符的过程或函数的静态层次

C.

说明标识符的过程或函数的动态层次

D.

标识符的行数

错误:【B】

48、活动记录中的连接数据不包含____。

A.

老SP

B.

返回地址

C.

形式单元

D.

全局DISPLAY地址

错误:【C】

49、基本块内的优化为_____。

A.

代码外提,删除归纳变量

B.

删除多余运算,删除无用赋值

C.

强度削弱,代码外提

D.

循环展开,循环合并

错误:【B】

50、文法G[S]:S→ab│aSb ,该文法所描述的语言____。

A.

L(G[S])={ anbn

│n≥0}

B.

L(G[S])={ ambn│m,n≥0}

C.

L(G[S])={ anbn│n≥1}

D.

L(G[S])={ ambn│m,n≥1}

错误:【C】