当前位置:文档之家› 编译原理测试及答案三

编译原理测试及答案三

编译原理测试及答案三
编译原理测试及答案三

编译原理测试及答案三

一、 单选题(每题2分,共20分)

1.在使用高级语言编程时,首先可通过编译程序发现源程序的全部______错误和部分语义

错误。

A.语法

B.语义

C. 语用

D.运行

2. 一个语言的文法是_____。

A .惟一的

B .不惟一的 C.个数有限的

3. 字母表是 {0, 1},写出以01 结尾的所有串的正规式是( )。 A. (0|1)*01 B .0*1*01 C.1*0*01 D. (01)*

4. 设有文法G[S]:S::=S*S|S+S|(S)|a ,该文法_______二义性文法。 A.是 B.不是 C.无法判断 D.可能

5. 一个句型的最左直接短语称为该句型的_______。 A.句型 B.短语 C.简单短语 D.句柄

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

A.输入缓冲区

B.向前搜索

C.状态

D.字符串

7、正则式的“|”读作______。

A.并且 B 或者 C.连接 D.闭包

8、E->TE' E'->+TE'|ε T->FT' T'->*FT'|ε F-> (E)|id

FOLLOW(F)=______,FIRST(T')= {*,ε} A.{*,+} B. {#,)} C.{+,#,)} D.{*, +, #, )}

9、高级语言编译程序常用的语法分析方法中,递归下降分析法属于_____ 分析方法。 可选项有;

A. 自左至右

B.自上而下

C.自下而上

D.自右向左

10、连接编译器的前端和后端的接口是: ( )

A.TINY 语言

B. 中间语言

C.上下文无关语言

D. 中间语言

二、 判断题(每题2分,共10分,对的打√,错的打×)

1. 简单算术表达式文法中值是继承属性。

( ) 2、可识别语言}1|{ n c a n

n

的一个上下文无关文法G(S):S->aSc|ε (

)

3. LEX是用来生成词法分析程序的程序。()

4. LL(1)文法都不是二义性的。()

5. LR(0)文法不一定是SLR(1)文法。()

三、填空题(每空2分,共10分)

1、是编程语言结构的任意特性。其典型例子有:变量的数据类型和表达式的值。

2. 写出你所了解的两种中间语言表达:和。

3. 表达式-a+b*(c-d)对应的逆波兰式是。

4.标识符的正则表达式为。

四、简答题(每题6分,共30分)

1.简述编译的有哪几个阶段?各阶段的作用是什么?

2. 将正则表达式a b | a 翻译为N FA。

3. 已知表达式文法G(E):

E → E+T|T

T → T*F | F

F → (E) | i

试设计属性文法计算表达式的值。(设值属性为val)

4.将下面的算术表达式翻译成四元式。

2+(3+(4+5))

5. 程序的执行方式主要有哪两种?请各举1例。

五、综合题(每题15分,共30分)

1.对文法G[S]

S→a|∧|(T)

T→T,S|S

(1)对文法G进行改写消去左递归。

(2)经改写后的文法是否是LL(1)的?给出它的预测分析表。

2. 已知文法

A→aAd|aAb|ε

分别构造LR(0)分析表和SLR(1)分析,并判断该文法是否是LR(0)文法,是否SLR(1)文法。

编译原理答案

一、单选题(每题2分,共20分)

1 2 3 4 5 6 7 8 9 10

A B A A D C B D B B

二、判断题(每题2分,共10分,对的打√,错的打×)

1 2 3 4 5

××√√√

三、填空题(每空2分,共10分)

1.属性

2. 三地址码DAG

3. a-bcd*+

4. letter(letter|digit)*

四、简答题(每题6分,共30分)

1. 编译程序的工作一般分为五个阶段:

(1)词法分析:对源程序字符流进行扫描和分解,识别出一个个单词符号。

(2)语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。

(3)语义分析和中间代码产生:检查源程序的语义错误(如:变量是否定义、类型是否正确等),并收集代码生成阶段要用到的类型信息。对各类不同语法范畴按

语言的语义进行初步翻译。

(4)优化:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。

(5)目标代码产生:把中间代码变换成特定机器上的目标代码。

2. 将正则表达式a b | a 翻译为N FA。

3. 已知表达式文法G(E):

E → E+T|T

T → T*F | F

F → (E) | i

试设计属性文法计算表达式的值。(设值属性为val,i在词法分析的值存在其lexval属性中)

解:

语法规则语义规则

E → E1+T E.val=E1.val+T.val

E → T E.val=T.val

T → T1*F T.val=T1.val+F.val

T → F T.val=F.val

F → (E) F.val=E.val

F → i F.val=i.lexval

相关主题
文本预览
相关文档 最新文档