编译原理练习题及答案

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

第一章练习题(绪论)

一、选择题

1.编译程序是一种常用的软件。

A) 应用B) 系统C) 实时系统D) 分布式系统

2.编译程序生成的目标代码程序是可执行程序。

A) 一定B) 不一定

3.编译程序的大多数时间是花在上。

A) 词法分析B) 语法分析C) 出错处理D) 表格管理4.将编译程序分成若干“遍”将。

A)提高编译程序的执行效率;

B)使编译程序的结构更加清晰,提高目标程序质量;

C)充分利用内存空间,提高机器的执行效率。

5.编译程序各个阶段都涉及到的工作有。

A) 词法分析B) 语法分析C) 语义分析D) 表格管理6.词法分析的主要功能是。

A) 识别字符串B) 识别语句C) 识别单词D) 识别标识符7.若某程序设计语言允许标识符先使用后说明,则其编译程序就必须。

A) 多遍扫描B) 一遍扫描

8.编译方式与解释方式的根本区别在于。

A) 执行速度的快慢B) 是否生成目标代码

C) 是否语义分析

9.多遍编译与一遍编译的主要区别在于。

A)多遍编译是编译的五大部分重复多遍执行,而一遍编译是五大部

分只执行一遍;

B)一遍编译是对源程序分析一遍就立即执行,而多遍编译是对源程

序重复多遍分析再执行;

C)多遍编译要生成目标代码才执行,而一遍编译不生成目标代码直

接分析执行;

D)多遍编译是五大部分依次独立完成,一遍编译是五大部分交叉调

用执行完成。

10.编译程序分成“前端”和“后端”的好处是

A)便于移植

B)便于功能的扩充

C)便于减少工作量

D)以上均正确

第二章练习题(文法与语言)

一、选择题

1.文法 G 产生的 (1) 的全体是该文法描述的语言。

A.句型

B. 终结符集

C. 非终结符集

D. 句子

2.若文法 G 定义的语言是无限集,则文法必然是 (2) A递归的 B 上下文无关的 C 二义性的 D 无二义性的

3. Chomsky 定义的四种形式语言文法中, 0 型文法又称为(A)文法;

1 型文法又称为(C)文法;

2 型语言可由(G) 识别。

A 短语结构文法

B 上下文无关文法

C 上下文有关文法

D 正规文法

E 图灵机

F 有限自动机

G 下推自动机

4.一个文法所描述的语言是(A);描述一个语言的文法是(B)。

A 唯一的

B 不唯一的

C 可能唯一,也可能不唯一

二、构造文法以生成下列语言:

1.{a n b n︱n≥0}

G=({S},{a,b},S,P),其中P = { S→ | aSb }

2.{a n b m︱n,m≥1}

G=({S,A,B},{a,b},S,P),

其中P = { S→ AB,A→a︱aA,B→b︱bB}

3.{a n , b m︱n,m≥1}

G=({S,A,B},{a,b},S,P),

其中P = { S→ A | B,A→a︱aA,B→b︱bB}

4. L = {w | w是不含两个相邻1的0、1串} G=({S , A},{0,1},S,P),

其中P = { S→0 | 1 | 0S | 1A, A→ 0S︱0 } 5.能被5整除的整数集合。

G[S]: S→FNC

F→+ | - | ε

C→0 | 5

N→AN |ε

A→0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

以下更准确:

G[S]: S→FC |FNMC

F→+ | - | ε

C→0 | 5

N→1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

M→AM |ε

A→0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

第四章练习题(词法分析)

一、设语言L是由奇数个a和偶数(可以是0)个b组成的符号串之集。

1.构造识别L的DFA;

一、1.

2. 给出定义L的正规文法;

2.S=aA|bB

A=aS|bC

B=bS|aC

C=bA|aB

(其它习题见本章课件)

第五章练习题(自上而下语法分析)

1、已知文法G(E)

E→T | E+T

T→F | T * F

F→(E) | i

(1) 给出句型(T * F+i)的最右推导及画出语法树;

(2) 给出句型(T * F+i)的短语、素短语。

1)最右推导:

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

2)句型T*F+i 的短语:

T*F+i

T*F

i

素短语:T*F

i

2、给出文法G[S]:

S -> aSb | P

P -> bPc | bQc

Q -> Qa | a

1)它是Chomsky哪一型文法?

2)它是不是LL(1)文法?若不是,求消除左递归、提取公共左因子

后的文法G’。

3)证明所有(a)左递归、(b)由公共左因子的文法均不是LL(1)文法。

4)G’是不是LL(1)文法,试用预测分析表证实。

1)2型文法

2)不是LL(1)文法, 转换:

G’[S]:

S -> aSb | P

P -> bK

K -> Pc | Qc

Q -> aW

W -> aW |ε

3) LL(1)为从上往下推导,若存在左递归,即形如P->P 的产生式,则面对FIRST(P)的符号,会反复用P->P…进行往下推导,无法终止,故左递归文法不是LL(1)文法。

有公共左因子的文法存在形如P->aβ|aγ的产生式,那么,当面对属于FIRST(a)的终结符时,无法确定用P->aβ还是用P-> aγ匹配,也就是说存在多重入口,所以有公共左因子的文法不是LL(1)文法。

4)

FIRST(S)={a, b}, FIRST(P)={b} , FIRST(K)={b, a}, FIRST(Q)={a}, FIRST(W)={a,ε} ;

FOLLOW(S)={#, b} , FOLLOW(P)={#, b, c}=FOLLOW(K),

相关文档
最新文档