编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc 联系客服

发布时间 : 星期六 文章编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc更新完毕开始阅读43a89276dc3383c4bb4cf7ec4afe04a1b171b0f2

《编译原理》期末试题(四)

一、简述编译程序的工作过程。(10)

编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的,就其过程而言,一般可以划分为五个工作阶段:①词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;②语法分析,根据语言的语法规则,把单词符号串分解成各类语法单位;③语义分析与中间代码产生,即对各类语法单位,分析其汉一并进行初步翻译;④代码优化,以期产生更高效的代码;⑤目标代码生成,把中间代码变换成特定机器上的低级语言指令形式。

二、构造下列正规式相应的DFA(用状态转换图表示)(15) (1) 1(0 | 1)*1

0,1 (2) 0*10*10*10*1 (3) letter(letter | digit)*

(1)

(2)

(3)

1 0 0 2 0 1 1 2 1 3 0 0 1 3 4 1 5 1 letter letter 1 2 digit 三、给出下面语言的相应文法:(15)

L1={an bn | n≥1} L2={anbm+nam | n≥1,m≥0}

G1:

A→aAb |ab

G1: S→AB

A→aAb | ab B→bBa | ε

四、对下面的文法G:

S→a | b | (T) T→T,S | S

(1) 消去文法的左递归,得到等价的文法G2;

(2) 判断文法G2是否LL(1)文法,如果是,给出其预测分析表。(15) G2:

S→a | b | (T)

T→ ST’

T’→,S T’ | ε G2是LL(1)文法。 S T T’ a S→a b S→b ( ) , # S→(T) T→ ST’ T→ ST’ T→ ST’ T’→ ε T’→,S T’ 五、设有文法G[A]:

A→BCc | gDB

B→bCDE |ε C→DaB | ca D→dD |ε E→gAf | c

(1) 计算该文法的每一个非终结符的FIRST集和FOLLOW集; (2) 试判断该文法是否为LL(1)文法。(15) A B C D E FIRST A,b,c,d,g b A,c,d D C,g FOLLOW A,c,d C,d,g A,b,c,g 是LL(1)文法。

六、对表达式文法G:

E → E+T | T T → T*F | F F → (E) | I

(1)造各非终结符的FIRSTVT和LASTVT集合; (2)构造文法的算符优先关系表。(15)

FIRSTVT LASTVT

E T F

算符优先关系表 + + * I ( ) # > > > < > < *,+,(,i *,(,i (,i *,+,),i *,),i ),i * < > > < > < I < < < < ( < < < < ) > > > = > # > > > > = 七、有定义二进制整数的文法如下:

L →LB | B B →0 | 1

构造一个翻译模式,计算该二进制数的值(十进制的值)。(15) 引入L、B的综合属性val,翻译模式为: S →L {print(L.val)}

L →L1B {L.val= L1.val*2+B.val} L →B {L.val= B.val} B →0 {B.val=0} B →1 {B.val=1}

《编译原理》期末试题(五)

一、单项选择题(共10小题,每小题2分,共20分)

1.语言是

A.句子的集合 B.产生式的集合 C.符号串的集合 D.句型的集合 2.编译程序前三个阶段完成的工作是 A.词法分析、语法分析和代码优化 B.代码生成、代码优化和词法分析

C.词法分析、语法分析、语义分析和中间代码生成 D.词法分析、语法分析和代码优化

3.一个句型中称为句柄的是该句型的最左

A.非终结符号 B.短语 C.句子 D.直接短语 4.下推自动机识别的语言是

A.0型语言 B.1型语言 C.2型语言 D.3型语言

5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即

A. 字符 B.单词 C.句子 D.句型 6.对应Chomsky四种文法的四种语言之间的关系是 A.L0?L1?L2?L3 B.L3?L2?L1?L0 C.L3=L2?L1?L0 D.L0?L1?L2=L3 7.词法分析的任务是

A.识别单词 B.分析句子的含义 C.识别句子 D.生成目标代码 8.常用的中间代码形式不含

A.三元式 B.四元式 C.逆波兰式 D.语法树 9. 代码优化的目的是

A.节省时间 B.节省空间

C.节省时间和空间 D.把编译程序进行等价交换 10.代码生成阶段的主要任务是 A.把高级语言翻译成汇编语言 B.把高级语言翻译成机器语言

C.把中间代码变换成依赖具体机器的目标代码 D.把汇编语言翻译成机器语言

二、填空题(本大题共5小题,每小题2分,共10分)

1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。 2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。

3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。

4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配)方案和(动态存储分配)方案。