编译原理期末A试卷答案

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

黄冈师范学院

2012—2013学年度第一学期期末试卷参考答案

考试课程:编译原理考核类型:考试A卷

考试形式:闭卷出卷教师:牛冀平

考试专业:计算机科学与技术,软件工程

考试班级:计科201001班,软件201001班

一、填空(每空0.5分,共 10分)

1、编译程序的功能是是对(高级语言)进行翻译,使之生成目标代码。

2、编译程序的工作过程一般划分为5个阶段:(词法分析)、语法分析、语义分析与中间代码生成,(代码优化)及目标代码生成。另外还有表格管理和(出错处理)。

3、一个上下文无关文法所含四个组成部分是一组终结符号、一组(非终结符号)、一个开始符号、(一组产生式)。

4、设G是一个给定的文法,S是文法的开始符号,如果S=> x(其中x∈V*),则称x 是文法的一个(句型)。

5、规范归约中的可归约串是指句柄,算符优先分析中的可归约串是指(最左素短语)。

6、在编译过程中,可采用的中间代码形式有()、()、()等。(三元式、间接三元式、四元式、逆波兰式、抽象语法树)(任选三个即可)

7、语法分析最常用的两类方法是(自上而下)和(自下而上)分析法。

8、表达式(a+b)*c的后缀表达式为(ab+c*)。

9、符号表的结构一般有(线性表)、(有序表)、(散列表或哈希表)等。

分别使用的查找方法有(顺序查找)、(折半查找)和(哈希法查找)

10、代码优化的目的是(减少代码的时空开销)。

11、寄存器是CPU内部的(存储单元),其访问时间小于CPU对内存的访问时间。

12、如果一个句子存在两棵不同的语法树就说明该句子是(二义性)的。

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

1、文法的开始符号经多步推导产生的文法符号序列(仅包含终结符)是文法的(D )。

A.短语

B.句柄

C.句型

D.句子

2、构造编译程序应掌握(D)。

A.源程序

B.目标语言

C.编译方法

D.以上三项都是

1页

2页 3、不属于循环优化的主要方法的是(B ) 。

A.强度削弱

B.删除无用赋值

C.删除归纳变量

D.代码外提

4、使用(A ) 可以定义一个程序的含义。

A.语义规则

B.词法规则

C.产生规则

D.左结合规则

5、优化可生成(D ) 的目标代码。

A .运行时间较短

B .占用存储空间较小

C .运行时间短但占用内存空间大

D .运行时间短且占用存储空间小

6、有文法G :E →E*T|T , T →T+i|i ,则输入串1+2*8+6按该文法G 归约,其值为(B )。

A.23

B.42

C.30

D.17

7、编译技术中描述单词符号的形成规则的常用工具有( D )。

A .正规文法

B .正规式

C .有穷自动机

D .以上都是

8、编译技术中常用( B )描述程序语言的语法。

A .正规文法

B .上下文无法文法

C .属性文法

D .上下文有关文法

9、词法分析器的输出结果是( C )。

A .单词的种别编码

B .单词在符号表中的位置

C .单词的种别编码和自身值

D .单词自身值

10、以下( B )不是DFA 的组成部分。

A .有穷字母表

B .初始状态集合

C .终止状态集合

D .有限状态集合

三、简答题(每题10分,共50分)

1、有文法G[S]:S →SA|A A →a|b 写出句子aba 的最左推导和最右推导。 解: 句子aba 的最左推导为:S =>SA=>SAA=>AAA=>aAA=>abA=>aba (5分)

句子aba 的最右推导为:S =>SA=>Sa=>SAa=>Sba=>Aba=>aba (5分)

2、一正规表达式为:b (b|a )| a (b|a (b|a )) ,写出上述正规式对应的DFA 和状态装换矩阵。

解答:正规式对应的DFA 为: (5分)

状态矩阵为: (5分) 状态\字符 a b X

1 3 1

2 Y Y X 1 2 3

a

a a

b b b

b a DFA

2 Y Y

3 Y Y

Y - -

3、设G[E]: E->T|E+T|E-T, T->F|T*F|T/F , F->(E)|i

证明E+T*i*i+i 是该文法的句型

解答:

E => E+T => E+T+T => E+T*F+T => E+T*F*F+T => E+T*i*F+T

=> E+T*i*i+T => E+T*i*i+F => E+T*F*i+i (5分)或E => E+T => E+F => E+i =>E+T+i=> E+T*F+i => E+T*i+i => E+T*F*i+i => E+T*i*i+i (5分)即,E=>* E+T*i*i+i,所以是该文法的句型。

4、下面的文法是否是左递归的?如果是,该如何消除?

E→E+T|T

T→T*F|F

F→(E)|id

解答:E T 存在左递归,可以用以下等价文法消除左递归 E→TE’(2分)

E’→+TE’|ε(2分)

T→FT’(2分)

T’→*FT’|ε(2分)

F→(E)|id (2分)

5、设有文法G[S]:S→S/S|S-S|(S)|a,该文法是否有二义性?为什么?解答:有.

该文法存在句子: a/a-a。(5分)

该句子存在两颗不同的语法树,如图:(5分)

四、解答题(共30分)

1、对于下面的程序:

Program main

procedure p(x,y,z)

begin

y:=y+1;

z:=z+x;

end;

begin

a:=2; b:=3;

3页

相关文档
最新文档