编译原理考试习题及答案
编译原理习题及答案(整理后)
第一章
1、将编译程序分成若干个“遍”就是为了。
a.提高程序得执行效率
b.使程序得结构更加清晰
c.利用有限得机器内存并提高机器得执行效率
d.利用有限得机器内存但降低了机器得执行效率
2、构造编译程序应掌握。
a.源程序b.目标语言
c.编译方法d.以上三项都就是
3、变量应当。
a.持有左值b.持有右值
c.既持有左值又持有右值d.既不持有左值也不持有右值
4、编译程序绝大多数时间花在上。
a.出错处理b.词法分析
c.目标代码生成d.管理表格
5、不可能就是目标代码。
a.汇编指令代码b.可重定位指令代码
c.绝对指令代码d.中间代码
6、使用可以定义一个程序得意义。
a.语义规则b.语法规则
c.产生规则d.词法规则
7、词法分析器得输入就是。
a.单词符号串b.源程序
c.语法单位d.目标程序
8、中间代码生成时所遵循得就是- 。
a.语法规则b.词法规则
c.语义规则d.等价变换规则
9、编译程序就是对。
a.汇编程序得翻译b.高级语言程序得解释执行
c.机器语言得执行d.高级语言得翻译
10、语法分析应遵循。
a.语义规则b.语法规则
c.构词规则d.等价变换规则
二、多项选择题
1、编译程序各阶段得工作都涉及到。
a.语法分析b.表格管理c.出错处理
d.语义分析e.词法分析
2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成
d.语义检查e.目标代码生成
三、填空题
1、解释程序与编译程序得区别在于。
2、编译过程通常可分为5个阶段,分别就是、语法分析、代码优化与目标代码生成。
3、编译程序工作过程中,第一段输入就是,最后阶段得输出为程序。
编译原理复习题及参考答案
中南大学网络教育课程考试复习题及参考答案
编译原理
一、判断题:
1.一个上下文无关文法的开始符,可以是终结符或非终结符。 ( )
2.一个句型的直接短语是唯一的。 ( )
3.已经证明文法的二义性是可判定的。 ( )
4.每个基本块可用一个DAG表示。 ( )
5.每个过程的活动记录的体积在编译时可静态确定。 ( )
6.2型文法一定是3 型文法。 ( )
7.一个句型一定句子。 ( )
8.算符优先分析法每次都是对句柄进行归约。 ( )
9.采用三元式实现三地址代码时,不利于对中间代码进行优化。 ( )
10.编译过程中,语法分析器的任务是分析单词是怎样构成的。 ( )
11.一个优先表一定存在相应的优先函数。 ( )
12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( )
13.递归下降分析法是一种自下而上分析法。 ( )
14.并不是每个文法都能改写成 LL(1)文法。 ( )
15.每个基本块只有一个入口和一个出口。 ( )
16.一个 LL(1)文法一定是无二义的。 ( )
17.逆波兰法表示的表达试亦称前缀式。 ( )
18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( )
19.正规文法产生的语言都可以用上下文无关文法来描述。 ( )
20.一个优先表一定存在相应的优先函数。 ( )
21.3型文法一定是 2型文法。 ( )
22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。 ( )
二、填空题:
1.( )称为规范推导。
2.编译过程可分为(),(),(),()和()五个阶段。
编译原理考试练习题
2019年春季《编译原理》在线作业
一、单选题(共 30 道试题,共 60 分。)V 1. 如果一个编译程序能产生不同于其宿主机的机器代码,则称它为:()
A. 诊断编译程序
B. 优化编译程序
C. 交叉编译程序
D. 可变目标编译程序
正确答案:C 满分:2 分
2. 对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是()
A. A.a:=f(X.x,Y.y)
B. Y.y:=f(A.a,Y.y)
C. Y.y:=f(X.x)
D. A.a:=f(Y.y)
正确答案:C 满分:2 分
3. 表达式作为实在参数可以传递给被调用的过程,替换过程体中的()
A. 局部变量
B. 形式参数
C. 全局变量
D. 实在参数
正确答案:B 满分:2 分
4. 为了便于优化处理,三地址代码可以表示成()
A. 三元式
B. 四元式
C. 后缀式
D. 间接三元式
正确答案:D 满分:2 分
5. 程序语言的单词符号一般可以分为5种,下面()不需要超前搜索
A. 关键字
B. 标识符
C. 常数
D. 算符和界符
正确答案:D 满分:2 分
6. 在编译过程中,符号表的主要作用是()
A. 帮助错误处理
B. 辅助语法错误的检查
C. 辅助语义的正确性检查
D. 辅助代码生成
E. 辅助对目标程序的优化
正确答案:B 满分:2 分
7. LR语法分析栈中存放的状态是识别()的DFA状态
A. 前缀
B. 可归前缀
C. 项目
D. 句柄
正确答案:B 满分:2 分
8. Fortran语言的编译程序采用()分配策略
A. 静态
B. 最佳
C. 堆式动态
D. 栈式动态
正确答案:A 满分:2 分
(完整版)编译原理复习题及答案
编译原理复习题及答案
一、选择题
1.一个正规语言只能对应(B)
A 一个正规文法
B 一个最小有限状态自动机
2.文法G[A]:A→εA→aB B→Ab B→a是(A)
A 正规文法
B 二型文法
3.下面说法正确的是(A)
A 一个SLR(1)文法一定也是LALR(1)文法
B 一个LR(1)文法一定也是LALR(1)文法
4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A)
A 必要条件
B 充分必要条件
5.下面说法正确的是(B)
A 一个正规式只能对应一个确定的有限状态自动机
B 一个正规语言可能对应多个正规文法
6.算符优先分析与规范归约相比的优点是(A)
A 归约速度快
B 对文法限制少
7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B)
A 则可能存在移进/归约冲突
B 则可能存在归约/归约冲突
C 则可能存在移进/归约冲突和归约/归约冲突
8.下面说法正确的是(A)
A Lex是一个词法分析器的生成器
B Yacc是一个语法分析器
9.下面说法正确的是(A)
A 一个正规文法也一定是二型文法
B 一个二型文法也一定能有一个等价的正规文法
10.编译原理是对(C)。
A、机器语言的执行
B、汇编语言的翻译
C、高级语言的翻译
D、高级语言程序的解释执行
11.(A)是一种典型的解释型语言。
A.BASIC B.C C.FORTRAN D.PASCAL
12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。
A. 编译器
B. 汇编器
C. 解释器
D. 预处理器
13.用高级语言编写的程序经编译后产生的程序叫(B)
编译原理习题(含历年专业考试题)
设有文法 G[S] : S → SAS|b A → bSb|b 试构造一个与其等价的算符文法。
经分析可知G[S]产生的句子为奇数个b,其正规 式为b(bb)*,由此得到NFA,
令S对应状态X, A对应状态Y, B对应状态1,我们得到改写 的文法G‘[S]为: G’[S]:S→bA|b A→bB B→bA|b 对文法G‘[S]求FIRSTOP集与LASTOP集如下: FIRSTOP(S)={b};FIRSTOP(A)={b};FIRSTOP(B)={b}; LASTOP(S)={b};LASTOP(A)={b}; LASTOP(B)={b} 。 由于文法G’[S]只存在形如P→...aR...的产生式,则: 由S→bA得b<FIRSTOP(A),即b<b; 由A→bB得b<FIRSTOP(B),即b < b; 由于终结符对(b,b)仅满足一种优先关系,故为算符优先文 法。
编译原理
第一章---第六章补充
例1
文法 G[P] 及相应翻译方案为: P → bQb {print: ” 1 ” } Q → cR {print: ” 2 ” } Q → a {print: ” 3 ” } R → Qad (print: ” 4 ” } ( 1) 该文法是不是算符优先文法,请构造算符 优先关系表证实之。 (2) 输入串为 bcccaadadadb 时,该翻译方案的输 出是什么。
《编译原理》期末考试复习题2023年修改整理
《编译原理》期末考试复习题
一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)
×1.计算机高级语言翻译成低级语言只有解释一种方式。()
×2.在编译中进行语法检查的目的是为了发觉程序中所有错误。()
√3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。 ()
×4.正则文法其产生式为 A->a , A->Bb, A,B∈VN , a 、 b∈VT 。 ()
√5.每个文法都能改写为 LL(1) 文法。 ()
√6.递归下降法允许任一非终极符是直接左递归的。 ()
×7.算符优先关系表不一定存在对应的优先函数。 ()
×8.自底而上语法分析方法的要紧问题是候选式的抉择。 ()
×9.LR 法是自顶向下语法分析方法。 ()
×10.简单优先文法允许任意两个产生式具有相同右部。 ()
三、填空题(每空1分,共10分)
1.编译程序的工作过程一般能够划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本时期,同时还会伴有__ ___和 ___ _。
表格治理出错处理_
2.若源程序是用高级语言编写的,__ __是机器语言程序或汇编程序,则其翻译程序称为 __ __ 。
_目标程序 _编译程序
3.编译方式与解释方式的全然区别在于__ __。
是否生成目标代码_
4.对编译程序而言,输入数据是__ __, 输出结果是__ ___。
_源程序 目标程序
5.产生式是用于定义__ __的一种书写规则。
_语法成分
6.语法分析最常用的两类方法是___ __和__ __分析法。
编译原理期末考试习题及答案
编译原理期末考试习题及答案
⼀、填空题|(每题4分,共20分)
1. 乔母斯基定义的3型⽂法(线性⽂法)产⽣式形式 A→Ba|a,或A→aB|a,A,B∈Vn, a,b∈Vt 。
2.语法分析程序的输⼊是单词符号,其输出是语法单位。
3 型为 B → .aB 的LR(0)项⽬被称为移进项⽬,型为 B → a.B 的LR(0)
项⽬被称为待约项⽬,
4.在属性⽂法中⽂法符号的两种属性分别为继承属性和综合属性。
5、运⾏时存贮管理⽅案有静态存储分配、动态存储分配和堆式存储分配和⽅案。⼆.已知⽂法 G(S)
(1) E → T | E+T
(2) T → F | F*F
(3) F →(E)| i
(1)写出句型(T*F+i)的最右推到并画出语法树。(4分)
(2)写出上述句型的短语,直接短语和句柄。(4分)
答:(1)最右推到(2分)
E ==> T ==>
F ==> (E) ==> (E+T) ==> (E+F) ==> (E+i) ==> (T+i) ==> (T*F+i)
(2) 语法树(2分)
(3)(4分)
短语:(T*F+i),T*F+i ,T*F , i
直接短语:T*F , i
句柄:T*F
三. 证明⽂法G(S) :S → SaS |ε是⼆义的。(6分)
答:句⼦aaa对应的两颗语法树为:
因此,⽂法是⼆义⽂法
四.给定正规⽂法G(S):
(1) S → Sa | Ab |b
(2) A → Sa
请构造与之等价的DFA。(6分)
答:对应的NFA为:(6分)
五. 构造识别正规语⾔b*a(bb*a)*b* 最⼩的DFA(要求写出求解过程)。(15分)答:(1)对应的NFA(5分)
编译原理复习题有答案版
1、给出下面语言的相应文法。L1={a n b n c i|n≥1,i≥0}
答案:S→AB|B
A→a|aA
B→bBc|bc
2.给出下面语言的相应文法
L1={a n b n c m d m| m,n≥1,n为奇数,m为偶数}。
答案:文法G(S):S→AC
A→aaAbb/ab
C→ccCcc/cc
3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。
(要求:先将正规式转化为NFA,再将NFA确定化,最小化)
(一)相应的正规式为(a|b)*ab(a|b)*
(二)①与此正规式对应的NFA为
答案;在自己写的纸上
4、对下面的文法G:
E→TE’E’→+E|εT→FT’T’→T|ε
F→PF’F’→*F’|εP→(E)|a|b|∧
(1)证明这个文法是LL(1)的。
考虑下列产生式:
E’ ->E|ε
T’ ->T|ε
F’ ->*F’ |ε
P ->(E) |∧a|b
FIRST(+E)∩FIRST(ε)={+}∩{ε}=φ
FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ
FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ
FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ
FIRST(*F')∩FIRST(ε)={*}∩{ε}=φ
FIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ
FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ
所以,该文法式LL(1)文法.
编译原理习题及答案
( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 10.× 22.√
) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 11.
二、填空题: 2.编译过程可分为 ( 词法分析) , (语法分析) , (语义分析与中间代码生成 ) , (优化)和(目标 代码生成 )五个阶段。 3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是( 二义性的 4.从功能上说,程序语言的语句大体可分为( 5.语法分析器的输入是( 单词符号 6.扫描器的任务是从( 源程序中 执行性 )语句和(说明性 ) 。 ) 。 ) ,其输出是( 语法单位 )中识别出一个个( 单词符号 ) 。 )语句两大类。
2. 考虑文法 G[S]: S → (T) | a+S | a T → T,S | S 消除文法的左递归及提取公共左因子。 解:消除文法 G[S]的左递归: S→(T) | a+S | a T→ST′ T′→,ST′| ε 提取公共左因子: S→(T) | aS′ S′→+S | ε T→ST′ T′→,ST′| ε 3. 试为表达式 w+(a+b)*(c+d/(e-10)+8) 写出相应的逆波兰表示。 解: w a b + c d e 10 - / + 8 + * + 4. 按照三种基本控制结构文法将下面的语句翻译成四元式序列: while (A<C ∧ B<D) { if (A ≥ 1) C=C+1; else while (A ≤ D) A=A+2; }。 解:该语句的四元式序列如下(其中 E1、E2 和 E3 分别对应 A<C∧B<D、A≥1 和 A≤D,并且关系运算符 优先级高): 100 (j<,A,C,102) 101 (j,_,_,113) 102 (j<,B,D,104) 103 (j,_,_,113) 104 (j=,A,1,106) 105 (j,_,_,108) 106 (+, C, 1, C)
编译原理习题及答案(整理后)
第一章
1、将编译程序分成若干个“遍”是为了。
b.使程序的结构更加清晰2、构造编译程序应掌握。
a.源程序b.目标语言
c.编译方法
3、变量应当。
c.既持有左值又持有右值4、编译程序绝大多数时间花在上。
d.管理表格
5、不可能是目标代码。
d.中间代码
6、使用可以定义一个程序的意义。
a.语义规则
7、词法分析器的输入是。
b.源程序
8、中间代码生成时所遵循的是- 。
c.语义规则
9、编译程序是对。d.高级语言的翻译
10、语法分析应遵循。
c.构词规则
二、多项选择题
1、编译程序各阶段的工作都涉及到。
b.表格管理c.出错处理2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成e.目标代码生成
三、填空题
1、解释程序和编译程序的区别在于是否生成目标程序。
2、编译过程通常可分为5个阶段,分别是词法分析、
语法分析中间代码生成、代码优化和目标代码生成。 3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。
4、编译程序是指将源程序程序翻译成目标语言程序的程序。一、单项选择题
1、文法G:S→xSx|y所识别的语言是。
a. xyx
b. (xyx)*
c.
x n yx n(n≥0) d. x*yx*
2、文法G描述的语言L(G)是指。
a. L(G)={α|S+⇒α , α∈V T*}
b. L(G)={α|S*⇒α, α∈V T*}
c. L(G)={α|S*⇒α,α∈
(V T∪V N*)} d. L(G)={α|S+⇒α, α∈(V T∪V N*)}
3、有限状态自动机能识别。
a. 上下文无关文法
(完整版)编译原理习题及答案(整理后)
2、对无二义性文法来说,一棵语法树往往代表了 。
a. 多种推导过程
b. 多种最左推导过程
c.一种最左推导过程
d.仅一种推导过程 e.一种最左推导过程
3、如果文法 G 存在一个句子,满足下列条件 之一时,则称该文法是二义文法。
a. 该句子的最左推导与最右推导相同
b. 该句子有两个不同的最左推导
c. 该句子有两棵不同的最右推导
。
a.语法分析
b.表格管理
c.出错处理
d.语义分析
e.词法分析
2、编译程序工作时,通常有
阶段。
a.词法分析
b.语法分析
c.中间代码生成
d.语义检查
e.目标代码生成
三、填空题
1、解释程序和编译程序的区别在于
。
2、编译过程通常可分为 5 个阶段,分别是
、语法分析
、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是
,最后阶段的输出为
程序。
4、编译程序是指将
程序翻译成
程序的程序。
单选解答
1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选 b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选 d。
3、对编译而言,变量既持有左值又持有右值,故选 c。
4、编译程序打交道最多的就是各种表格,因此选 d。
编译原理与技术 - 习题集(含答案)
编译原理与技术 - 习题集(含答案)
《编译原理与技术》课程习题集
西南科技大学成人、网络教育学院版权所有
习题
【说明】:本课程《编译原理与技术》(编号为03002)共有简答题,计算题1,计算题2,问答与作图题,计算题3,计算题4,计算题5等多种试题类型,其中,本习题集中有[简答题]等试题类型未进入。
一、计算题1 1. 已知NFA M
1、将NFA M确定化为DFA M;
2、求DFA M的正规式; 2. 已知正规式:
a+b(b|ab)*
1、求等价的NFA;
2、求等价的DFA; 3. 已知正规式((ε|a)b*)*
1、求等价的NFA;
2、将NFA确定化
3、若所求DFA可最小化,则求其最小化DFA;若无,说明原因。 4. 写出字母表? = {a, b}上语言L = {w | w中a的个数是偶数}的正规式,并画出
接受该语言的最简DFA。
5. 有文法 G[S] :
第 1 页共 26 页
S → aC | aA A → aC C → bC |b
1、求等价的NFA;
2、求等价的DFA;
二、计算题2 6. 将文法G[S]:
S→aA A→AS|Bc B→Bi|i
1、消除左递归;
2、证明该文法消除左递归后是LL(1)文法?
3、给出相应的LL(1)分析表。
7. 已知文法G(S):
E→aTb|iE|i T→TE|E
1、提公因子和消除左递归;
2、计算每个非终结符的FIRST和FOLLOW;
3、证明该文法是否为LL(1)文法?
8. 已知文法G(S)为:
E → E or T | T T → T and
F | F
F → not F | ( E ) | true | false 1、对文法消除左递归;
编译原理练习题及答案
第一章练习题(绪论)
一、选择题
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) 的全体是该文法描述的语言。
编译原理习题及答案(整理后)
第一章
1、将编译程序分成若干个“遍”是为了。
b.使程序的结构更加清晰
2、构造编译程序应掌握。
a.源程序b.目标语言
c.编译方法
3、变量应当。
c.既持有左值又持有右值
4、编译程序绝大多数时间花在上。
d.管理表格
5、不可能是目标代码。
d.中间代码
6、使用可以定义一个程序的意义。
a.语义规则
7、词法分析器的输入是。
b.源程序
8、中间代码生成时所遵循的是- 。
c.语义规则
9、编译程序是对。
d.高级语言的翻译
10、语法分析应遵循。
c.构词规则
二、多项选择题
1、编译程序各阶段的工作都涉及到。
b.表格管理c.出错处理
2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成e.目标代码生成
三、填空题
1、解释程序和编译程序的区别在于是否生成目标程序。
2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。
4、编译程序是指将源程序程序翻译成目标语言程序的程序。
一、单项选择题
1、文法G:S→xSx|y所识别的语言是。
a. xyx
b. (xyx)*
c. x n yx n(n≥0)
d. x*yx*
2、文法G描述的语言L(G)是指。
a. L(G)={α|S+⇒α , α∈V T*}
b. L(G)={α|S*⇒α, α∈V T*}
c. L(G)={α|S*⇒α,α∈(V T∪V N*)}
d. L(G)={α|S+⇒α, α∈(V T∪V N*)}
3、有限状态自动机能识别。
a. 上下文无关文法
编译原理习题及答案(整理后)
编译原理习题及答案(整理后)
第⼀章
1、将编译程序分成若⼲个“遍”是为了。
b.使程序的结构更加清晰
2、构造编译程序应掌握。
a.源程序b.⽬标语⾔
c.编译⽅法
3、变量应当。
c.既持有左值⼜持有右值
4、编译程序绝⼤多数时间花在上。
d.管理表格
5、不可能是⽬标代码。
d.中间代码
6、使⽤可以定义⼀个程序的意义。
a.语义规则
7、词法分析器的输⼊是。
b.源程序
8、中间代码⽣成时所遵循的是- 。
c.语义规则
9、编译程序是对。
d.⾼级语⾔的翻译
10、语法分析应遵循。
c.构词规则
⼆、多项选择题
1、编译程序各阶段的⼯作都涉及到。
b.表格管理c.出错处理
2、编译程序⼯作时,通常有阶段。
a.词法分析b.语法分析c.中间代码⽣成e.⽬标代码⽣成
三、填空题
1、解释程序和编译程序的区别在于是否⽣成⽬标程序。
2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码⽣成、代码优化和⽬标代码⽣成。
3、编译程序⼯作过程中,第⼀段输⼊是源程序,最后阶段的输出为标代码⽣成程序。
4、编译程序是指将源程序程序翻译成⽬标语⾔程序的程序。
⼀、单项选择题
1、⽂法G:S→xSx|y所识别的语⾔是。
a. xyx
b. (xyx)*
c. x n yx n(n≥0)
d. x*yx*
2、⽂法G描述的语⾔L(G)是指。
a. L(G)={α|S+?α , α∈V T*}
b. L(G)={α|S*?α, α∈V T*}
c. L(G)={α|S*?α,α∈(V T∪V N*)}
d. L(G)={α|S+?α, α∈(V T∪V N*)}
3、有限状态⾃动机能识别。
编译原理习题集与答案解析(整理后)
第一章
1、将编译程序分成若干个“遍”是为了。
a.提高程序的执行效率
b.使程序的结构更加清晰
c.利用有限的机器内存并提高机器的执行效率
d.利用有限的机器内存但降低了机器的执行效率
2、构造编译程序应掌握。
a.源程序b.目标语言
c.编译方法d.以上三项都是
3、变量应当。
a.持有左值b.持有右值
c.既持有左值又持有右值d.既不持有左值也不持有右值4、编译程序绝大多数时间花在上。
a.出错处理b.词法分析
c.目标代码生成d.管理表格
5、不可能是目标代码。
a.汇编指令代码b.可重定位指令代码
c.绝对指令代码d.中间代码
6、使用可以定义一个程序的意义。
a.语义规则b.语法规则
c.产生规则d.词法规则
7、词法分析器的输入是。
a.单词符号串b.源程序
c.语法单位d.目标程序
8、中间代码生成时所遵循的是- 。
a.语法规则b.词法规则
c.语义规则d.等价变换规则
9、编译程序是对。
a.汇编程序的翻译b.高级语言程序的解释执行
c.机器语言的执行d.高级语言的翻译
10、语法分析应遵循。
a.语义规则b.语法规则
c.构词规则d.等价变换规则
二、多项选择题
1、编译程序各阶段的工作都涉及到。
a.语法分析b.表格管理c.出错处理
d.语义分析e.词法分析
2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成
d.语义检查e.目标代码生成
三、填空题
1、解释程序和编译程序的区别在于。
2、编译过程通常可分为5个阶段,分别是、语法分析、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是,最后阶段的输出为程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
0
3,Y,4,2
(1) 正规式 1(0|1)*101 DFA:
0
2 04
0
0 11
10 1 0
13 15
1
CH.3.练习题7(P64.)
7. 构造下列正规式相应的DFA。 (1) 1(0|1)*101 解2: 正规式对应的NFA:
01
1
1 12
0
031 4
0
0 11
DFA: 03
1
0 10
2 14
2020/4/6
1
6
7. 构造下列正规式相应的NFA。(P64.)
(2) 1(1010*|1 (010)*1)*0
1010*
X 1 1ε 2 ε 3 0 Y
1 (010)*1
4 051 6
1
0*
X 1 1ε 2 ε 3 0 Y
1
7 (010)* 8 1
2020/4/6
7
7. 构造下列正规式相应的NFA。(P64.)
2020/4/6
2
CH.3.练习题7(P64.)
7. (1) 1(0|1)*101 构造DFA。 解1: 正规式对应的NFA:
1
X 1 1ε 3 ε 2 1 4 0 5 1 Y
0
2020/4/6
3
(1) 正规式 1(0|1)*101 DFA:
0
3,2
0
1
x
1,3,2
1
1
3,4,2
1
0
0 1
3,5,2
0 1
0 0
1
11
程序设计语言
Chapter 2.高级语言及 其语法描述
CH.2.练习题6(P36.)
6.令文法G6为: N → D|ND D → 0|1|2|3|4|5|6|7|8|9
(1) G6的语言L(G6)是什么? 注意:集合的写法不正确 解:L(G6)={0,1,2,3,4,5,6,7,8,9}+ ={09数字构成的所有数字串,可以0开头}
8. 令文法为
(1) 给出 i+i*i、i*(i+i)的最左推导
E → T|E+T|E-T 和最右推导。
T → F|T*F|T/F
F → (E)|i
解:此处仅以 i*(i+i) 为例给出答案
最左推导
E T T*F F*F i*F i*(E) i*(E+T) i*(T+T) i*(F+T) i*(i+T) i*(i+F ) i*(i+i)
(2) 给出句子0127、34和568的最左和最右推导。 注意:1)步骤,和 + 的区别;2) 不能写为→ 解:0127的最左推导:NNDNDDNDDDDDDD 0DDD01DD012D0127 0127的最右推导:NNDN7ND7N27ND27 N127D1270127
13
CH.2.练习题8(P36.)
T → F|T*F|T/F F → (E)|i
注意:树枝和符号均不可随意增减!
i-i-i 的语法树 E
E -T
E-T F
T
Fi
F
i
i
i+i+i 的语法树 E
E+T
E +T F
T
Fi
F
i
i
i+i*i 的语法树
E E +T T T* F FF i ii
15
CH.2.练习题9(P36.)
9. 证明下面的文法是二义的: S → iSeS|iS|i
010
1
8
7. (2) 1(1010*|1 (010)*1)*0的NFA。
4 0 5 1 6ε 9 0
1
ε
X 1 1ε 2 ε 3 0 Y
1
7 ε 10
ε 0
1
8
0 12 1 11
CH.3.练习题14(P64.)
(1) 正规式: (10|0)*
(2) NFA:
0
X ε 1εY
1
0
2
确定化:
DFA:
1.令文法G1为:E→E+T|T T→T*F|F F→(E)|i
证明E+T*F是它的一个句型,指出这个句型的所有短 语、直接短语和句柄。
证明1: ∵存在从开始符号E出发到E+T*F
的推导: E E+T E+T*F
语法树
∴E+T*F是G1的一个句型。
E
短语: E+T*F是句型相对于非终结符E的短
证明2: ∵可构造出E+T*F的语法树,如右
图所示, ∴E+T*F是G1的一个句型。
语法树
证明3: (也可用归约来证明) E
(概念熟悉后,短语、直接短语和句柄可直接列出
(2) 1(1010*|1 (010)*1)*0
1
4
05
0*
1
6
X 1 1ε 2 ε 3 0 Y
1
7 (010)* 8
1
4 0 5 1 6ε
0
9
1
ε
X 1 1ε 2 ε 3 0 Y
1
7
ε
10 ε
010
1
8
2020/4/6
8
4 0 5 1 6ε 9 0
1
ε
X 1 1ε 2 ε 3 0 Y
1
7
ε
wk.baidu.com
10 ε
0
01
0
1
0
1
2
2020/4/6
10
CH.3.练习题14(P64.)
(1) 正规式: (10|0)*
(2) NFA:
0
X ε 1εY
1
0
2
DFA: 0
0
1 1
2020/4/6
0
1
0
2
构造一个DFA,它接受 S= {0,1}上所有满足如下条件 的字符串:每个1都有0直 接跟在右边。
DFA:(最简)
语; T*F是句型相对于非终结符T的短语。 E + T
直接短语: T*F是句型相对于规则T→T*F的 直接短语
T*F
句柄: T*F
2020/4/6
18
CH.5.练习题1(P133.)
1.令文法G1为:E→E+T|T T→T*F|F F→(E)|i
证明E+T*F是它的一个句型,指出这个句型的所有短 语、直接短语和句柄。
证明: 因为存在句子 iiiei, 它对应两棵不同的语法树,如 右图: 所以该文法是二义文法。
说明:按定义只要能给出一 个反例即可,iiiei不是唯一 的反例。
2020/4/6
S iS
i S eS ii
S
i S eS i Si
i
16
程序设计语言
Chapter 5.自下而上 语法分析
CH.5.练习题1(P133.)
程序设计语言
Chapter 3.词法分析
CH.3.练习题8(P64.)
8. 给出下面的正规表达式。
(1) 以01结尾的二进制数串; 正规式 (0|1)*01
(2) 能被5整除的十进制整数; 允许任意0开头: (0|1|2|3|4|5|6|7|8|9)*(0|5) 不允许0开头(0本身除外):
(0|5)|(1|2|3|…|9)(0|1|2|3|…|9)*(0|5)
最右推导
E T T*F T*(E) T*(E+T) T*(E+F) T*(E+i) T*(T+i) T*(F+i) T*(i+i) F*(i+i) i*(i+i)
14
CH.2.练习题8(P36.)
8. 令文法为
(2) 给出 i+i+i、i+i*i和i-i-i的语法树。
E → T|E+T|E-T