编译原理练习及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章练习题(绪论)
一、选择题
1.编译程序是一种常用的B软件。
A) 应用B) 系统C) 实时系统D) 分布式系统
2.编译程序生成的目标代码程序 B 是可执行程序。
A) 一定B) 不一定
3.编译程序的大多数时间是花在 D 上。
A) 词法分析B) 语法分析C) 出错处理D) 表格管理4.将编译程序分成若干“遍”将 B 。
A)提高编译程序的执行效率;
B)使编译程序的结构更加清晰,提高目标程序质量;
C)充分利用内存空间,提高机器的执行效率。
5.编译程序各个阶段都涉及到的工作有 D 。
A) 词法分析B) 语法分析C) 语义分析D) 表格管理6.词法分析的主要功能是 C 。
A) 识别字符串B) 识别语句C) 识别单词D) 识别标识符
7.若某程序设计语言允许标识符先使用后说明,则其编译程序就必须A 。
A) 多遍扫描B) 一遍扫描
8.编译方式与解释方式的根本区别在于 B 。
A) 执行速度的快慢B) 是否生成目标代码
C) 是否语义分析
9.多遍编译与一遍编译的主要区别在于D。
A)多遍编译是编译的五大部分重复多遍执行,而一遍编译是五大部分只执行一
遍;
B)一遍编译是对源程序分析一遍就立即执行,而多遍编译是对源程序重复多遍
分析再执行;
C)多遍编译要生成目标代码才执行,而一遍编译不生成目标代码直接分析执
行;
D)多遍编译是五大部分依次独立完成,一遍编译是五大部分交叉调用执行完
成。
10.编译程序分成“前端”和“后端”的好处是 D
A)便于移植
B)便于功能的扩充
C)便于减少工作量
D)以上均正确
第二章练习题(文法与语言)
1、直接推导、+推导、*推导
2、句型和句子, 文法定义(搞清楚)G=(VT,VN,S,P)
3、语言的形式定义: L(G[S])={x | S -> x 且x∈VT*}
若L是无穷的,则G一定是递归的
4、最左推导、最右推导(规范推导)
5、归约、规范归约
6、递归:规则递归、文法递归
(1) A->BA,B->CA,…
(2) A->B,B->CA,…
7、文法的等价性:G1=G2
8.(1)每棵子树的叶子组成一个短语;
(2)每棵简单子树的叶子组成一个直接短语;简单子树:只有单层分支的子树
(3)最左边简单子树的叶子是句柄
一个句型不一定只对应一棵唯一的语法树。
如果一个文法存在某个句子对应二棵不同的语法树或者二个不同的最左
(右)推导,则这个文法是二义性的
9. 归约是推导的逆过程。即:将句型中的某一子串用一串非终结符代替的过程。
若有A -> a,则XAY -> XaY,于是X aY -> XAY。
称规范(最右)推导的逆过程为规范归约(先归约最左那一串(不是一个)符号)。
规范归约:先归约最左那一串(不是一个)符号。
10.1)文法的开始符一定写在文法的前面(第一条规则式中);
2)ε是表示空符号串,不是终结符;
3)L是语言,不要用作非终结符;
4)文法的完整表示是G=(VT,VN,S,P)
一、选择题
1.文法 G 产生的 D 的全体是该文法描述的语言。
A.句型
B. 终结符集
C. 非终结符集
D. 句子
2.若文法 G 定义的语言是无限集,则文法必然是 A
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-> AM |εM->0|A|ε
A-> 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
6.Ex1:设∑={a, b},试设计一个文法G,定义语言L={a2n,b2n | n≥1}解:G[A]:A->B|D
B->aa|aBa
D->bb|bDb
7.Ex3:设计一个表示所有标识符I 的文法。
解:G[I]:I->L|ILD
L->a | b | c…… z | A | B | C…… | Z |ε
D->1 | 2 | 3…… | 9 | ε
8.设G[E]:E->E+E|E*E|(E)|i,试证明符号串( i * i + i )是文法G[E]的一个句子
证明:从E出发,只要证明符号串x = ( i * i + i ) 对于文法G[E] 存在一个推导。E->(E)->(E+E)->(E*E+E)->(i*E+E)-> (i*i+E)-> (i * i + i )以上从文法的开始符E -> ( i * i + i ),所以符号串( i * i + i )是G[E]的一个句子。
9.Ex:已知: S -> AB
A -> Aa | bB
B -> a | Sb ,给出句子babaab的最左、最右推导
解:最左:S=>AB=>bBB=>baB=>baSb =>baABb=>babBBb=>babaBb=>babaab 最右:S=>AB=>ASb=>AABb=>AAab =>AbBab=>Abaab=>bBbaab=>babaab
归约:babaab=>bBbaab=>Abaab =>AbBab=>AAab=>AABb=>Asb=>AB=>S
10.已知L={ai bj ck | i=j 或j=k, i,j,k>=0}
求:文法G
解:S->AB|DC , A->aAb |ε, B->cB |ε, D->aD |ε, C->bCc |ε
11.已知L={x x -1 | x∈{a,b}+ },若x=ab,则x-1=ba,求文法G。
解:因为x={a,b}+={a,b,ab,ba,aa,bb,……}