编译原理习题集

合集下载

编译原理习题集

编译原理习题集

第二章2 •构造产生下列语言的文法(2){a n b m c p|n/m,p^O}解:G(S) : S—aS|X,X—bX|Y,Y—cY| £(3){a n it b n|n^O}U {c n#dn|n 刁0}解:G(S): S—X,S—Y z X->aXb |#, Y~>cYd |it}(5)任何不是以0打头的所有奇整数所组成的集合解:G(S): S—J|IBJ,B—0B|IB| £ J—J|2|4|6|8」f 1|3|5|7|9}(6)(思考题)所有偶数个0和偶数个1所组成的符号串集合解:对应文法为S^OA|1B| £ , A->OS|1C B—0CI1S C^1A|OB3.描述语言特点(2) STS STAO ATAO A—£解:L(G)={l nl O nl l n2O n2…l nm0nm |nl,n2/—,nm^0:且nl’n乙—nm 不全为零}该语言特点是:产生的句子中,0、1个数相同,并且若干相接的1后必然紧接数量相同连续的0。

(5) S—aSS S—a解:L(G)={a(2")|n$l}可知:奇数个 a5.(1)解:由于此文法包含以下规则:AA->£ ,所以此文法是0型文法。

7 •解:(l)aacb是文法G⑸中的句子,相应语法树是:最右推导:S=>aAcB=>aAcb=>aacb最左推导:S=>aAcB=>aacB=>aacb(3)aacbccb 不是文法G ⑸中的句子aacbccb 不能从S 推导得到时,它仅是文法G ⑸的一个句型的一部分,而不是一个句子。

.解:最右推导:(1) S=>AB=>AaSb=>Aacb=>bAacb=>bbAacb=>bbaacb上面推导可下划褒部芬为当前砲的句麻对应的语法树为:第三章3假设M:人W:载狐狸过河,G:载山羊过河,C:载口菜过河人.犯.羊、白菜:{{M. G、C?, {”丧朮在方消仃{{}• {M.氐C. C"在右坤.将川舵存在的状态加爪安全农态• fl K:({M. T. G. C}. 0).⑴.<M.・ G. Q)・⑴、W. G》・(C}}. {{M, BL C> •⑹八{{ML G、Clr {V}} p UC}r恥叭G” ・{{G;U M 叭C}}, m f M G. C}}r{{M. G},他C}} , (IF, 0, (M. GD笛弧I:的标记符:<M>;氐斥人单独过河、<MC>;农示人和羊过河.5T九浪示人和狠过河、Q【C>;我示人和白菜过河KM.莎、G. C}r {}•・--------------- {測C}r {JL G}}7 职 Ch {G}}{{G}, M 叭C}}<MG> MG>心M叭G、c》6根据文法知其产生的语言是L={a m b n c i| m,n,iMl}可以构造如下的文法VN={S,A,B,C}/ VT={a,b,c}P={ S f aA, A-*aA, A—bB, B~^bB, B—cC, C-^cC, C—c}其状态转换图如下:7(1)其对应的右线性文法是:A f OD,B —OA,B —lC’C—l|OA,Ff O|OE|lAQf OB|lC,Ef 1C|OB ⑵最短输入串Oil⑶任意接受的四个审:011,0110,0011,000011 ⑷任意以1打头的串・9.对于矩阵(iii)⑵3型文法(正规文法)S-^aAla | bB A —bA| b|aC|aB —aB| bC| bC —aC|a | bC|b(3)用自然语言描述输入串的特征以a 打头,中间有任意个(包括0个)b,再跟°最后由一个a,b 所组成的任 意串结尾或者以b 打头,中间有任意个(包括0个)①再跟b,最后曲一个a,b 所组 成的任意吊结尾。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 程序设计B. 程序翻译C. 程序调试D. 数据处理答案:B2. 下列哪一项不是编译器的前端处理过程?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,词法分析器的主要作用是什么?A. 识别程序中的关键字和标识符B. 将源代码转换为中间代码C. 检查程序的语法结构D. 确定程序的运行环境答案:A4. 语法分析通常采用哪种方法?A. 自顶向下分析B. 自底向上分析C. 正则表达式匹配D. 直接解释执行答案:B5. 语义分析的主要任务是什么?A. 检查程序的语法结构B. 检查程序的类型安全C. 识别程序中的变量和常量D. 将源代码转换为机器代码答案:B二、简答题1. 简述编译器的工作原理。

答案:编译器的工作原理主要包括以下几个步骤:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。

词法分析器将源代码分解成一系列的词素;语法分析器根据语法规则检查词素序列是否合法;语义分析器检查程序的语义正确性;中间代码生成器将源代码转换为中间代码;代码优化器对中间代码进行优化;最后,目标代码生成器将优化后的中间代码转换为目标机器代码。

2. 什么是词法分析器,它在编译过程中的作用是什么?答案:词法分析器是编译器前端的一个组成部分,负责将源代码分解成一个个的词素(tokens),如关键字、标识符、常量、运算符等。

它在编译过程中的作用是为语法分析器提供输入,是编译过程的基础。

三、论述题1. 论述编译器中的代码优化技术及其重要性。

答案:代码优化是编译过程中的一个重要环节,它旨在提高程序的执行效率,减少资源消耗。

常见的代码优化技术包括:常量折叠、死代码消除、公共子表达式消除、循环不变代码外提、数组边界检查消除等。

代码优化的重要性在于,它可以显著提高程序的运行速度和性能,同时降低程序对内存和处理器资源的需求。

四、计算题1. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

第一章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、编译程序工作过程中,第一段输入就是,最后阶段得输出为程序。

4、编译程序就是指将程序翻译成程序得程序。

单选解答1、将编译程序分成若干个“遍”就是为了使编译程序得结构更加清晰,故选b。

2、构造编译程序应掌握源程序、目标语言及编译方法等三方面得知识,故选d。

3、对编译而言,变量既持有左值又持有右值,故选c。

4、编译程序打交道最多得就就是各种表格,因此选d。

5、目标代码包括汇编指令代码、可重定位指令代码与绝对指令代码3种,因此不就是目标代码得只能选d。

编译原理练习题

编译原理练习题

编译原理练习题一、选择题(每题2分,共10分)1. 编译器的主要功能是将源代码转换为:A. 可执行文件B. 汇编代码C. 机器代码D. 中间代码2. 词法分析阶段的主要任务是:A. 将源代码分解成多个语句B. 将源代码分解成多个单词C. 将源代码分解成多个符号D. 将源代码分解成多个表达式3. 下列哪个是自顶向下的语法分析方法?A. LL(1)分析B. LR分析C. LALR分析D. GLR分析4. 语义分析的主要任务是:A. 检查语法正确性B. 检查类型正确性C. 检查代码风格D. 检查代码的可读性5. 编译过程中的优化主要发生在:A. 词法分析阶段B. 语法分析阶段C. 语义分析阶段D. 代码生成阶段二、填空题(每空1分,共10分)6. 编译器的前端主要包括词法分析、语法分析、________和________四个阶段。

7. 编译器的后端主要包括代码生成、________和________两个阶段。

8. 编译原理中的“三地址代码”是指每个指令最多有三个________。

9. 编译过程中的“死代码”是指________。

10. 编译器的优化技术可以分为________优化和________优化。

三、计算题(每题5分,共10分)11. 假设有一个简单的算术表达式:a * b + c * d。

请使用三地址代码表示这个表达式,并给出相应的指令序列。

四、简答题(每题5分,共10分)12. 简述编译原理中词法分析器的作用和实现方法。

五、论述题(每题15分,共15分)13. 论述编译原理中语法分析的两种主要方法:自顶向下分析和自底向上分析,并比较它们的优缺点。

编译原理练习及答案

编译原理练习及答案

第一章练习题(绪论)一、选择题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.编译程序分成“前端”和“后端”的好处是 DA)便于移植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=G28.(1)每棵子树的叶子组成一个短语;(2)每棵简单子树的叶子组成一个直接短语;简单子树:只有单层分支的子树(3)最左边简单子树的叶子是句柄一个句型不一定只对应一棵唯一的语法树。

编译原理复习题集

编译原理复习题集

《编译原理》复习题集1.名词解释短语句柄文法上下文无关文法LL(1)文法LR(1)文法语法分析无环路有向图(DAG)后缀式语法制导翻译遍局部优化词法分析语法分析语义分析源语言源程序目标语言中间语言(中间表示)2.简答题(1)编译程序和高级语言有什么区别?(2)编译程序的工作分为那几个阶段?(3)简述自下而上的分析方法。

(4)目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?(5)何谓优化?按所涉及的程序范围可分为哪几级优化?(6)简述代码优化的目的和意义。

3.叙述下面的正规式描述的语言,并画出接受该语言的最简DFA的状态转换图。

( 1 | 01 )* 0*4.Pascal语言无符号数的正规定义如下:num→digit+ (.digit+)? (E(+|-)? digit+)?其中digit表示数字,用状态转换图表示接受无符号数的确定有限自动机。

5.画出Pascal中实数(不带正负号,可带指数部分)的状态转换图。

6.用状态转换图表示接收(a|b)*aa的确定的有限自动机。

7.处于/* 和 */之间的串构成注解,注解中间没有*/。

画出接受这种注解的DFA的状态转换图。

8.某操作系统下合法的文件名为device:name.extension其中第一部分(device:)和第三部分(.extension)可缺省,device, name和extension都是字母串,长度不限,但至少为1,画出识别这种文件名的确定有限自动机。

9.构造一个DFA,它接受∑={0, 1}上0和1的个数都是偶数的字符串。

10.设有非确定的有自限动机 NFA M=({A,B,C},{0,1},δ,{A},{C}),其中:δ(A,0)={C} δ (A,1)={A,B} δ (B,1)={C} δ (C,1)={C}。

请画出状态转换距阵和状态转换图。

11.设L⊆ {a,b,c}* 是满足下述条件的符号串构成的语言:(1)若出现a ,则其后至少紧跟两个c ;(2)若出现b ,其后至少紧跟一个c 。

编译原理习题

编译原理习题
5) S a | S S | S S | S | ( S )
以a为变量,涉及+,连接,*和括号四种运算旳体 现式旳集合
2.2.3 练习2.2.2中哪些文法具有二义性? 3) 4) 5)具有二义性。 以5)为例进行阐明: 给定字符串 a+a+a ,相应着两棵分析树:
2.2.6 为罗马数字构建一种上下文无关文法。
编译原理习题课
于永涛
第二章 一种简朴旳语法制导翻译器
2.2.1 考虑下面旳上下文无关文法:
S S S |S S |a
1)试阐明怎样使用该文法生成串 aa a
S S S S S S a S S 最左推导 aa S aa a
2)试为这个串构造一棵语法分析树。
3)该文法生成旳语言是什么? 以a为变量,+和*为二元操作符旳后缀体现式旳集合
RomanNumeral Thousands Hundreds Tens Ones | RomanNumeral Ones LowOnes | IV |V LowOnes | IX
LowOnes | I | II | III
Tens LowTens | XL | L LowTens | XC
5)(aa | bb) *((ab | ba)(aa | bb) *(ab | ba)(aa | bb)*)*
包括偶数个a和偶数个b旳a,b字符串旳集合
3.2.5 试写出下列语言旳正则定义: 1)包括5个元音旳全部小写字母串,这些串中旳元音按
顺序出现。 X:除五个元音外旳全部小写字母旳集合。 ( X | a) * a( X | e) *e( X | i) *i( X | o) *o( X | u) *uX *
1) a(a | b) * a

编译原理考试习题及答案

编译原理考试习题及答案

( T ② S ① a
T ,
T ④ S ③ a
2019/1/29
CH.5.练习题3(P133.)

3.(1) 计算练习2文法G2的FIRSTVT和LASTVT。 S→a||(T) T→T,S|S

(1) 解: (执行相应的算法可求得) FIRSTVT(S)={ a, ∧, ( } FIRSTVT(T)={ , , a, ∧, ( } LASTVT(S)={ a, ∧, ) } LASTVT(T)={ , , a, ∧, ) }
(1) 正规式 1(0|1)*101
0
0
DFA:
3,2
1 0
3,5,2
1 1 0
x
1
1,3,2
1
0
3,4,2
1
3,Y,4,2 I0 I1 1 3 3 3 5 3
I {X} {1,3,2} {3,2} {3,4,2} {3,5,2} {3,Y,4,2}
I0 {3,2} {3,2} {3,5,2} {3,2} {3,5,2}
2019/1/29 22
CH.5.练习题2(P133.)

2.(2).给出(a,(a,a))“移进-归约”的过程。 (2) 解: (a,(a,a))的“移进-归约”过程: 步骤 符号栈 输入串 动作 9 #(T,( S ,a))# 归约 S → a 10 #(T,(T , a ))# 归约 T → S 11 #(T,(T, a ))# 移进 , 12 #(T,(T, a ))# 移进 a 13 #(T,( T,S ))# 归约 S → a 14 #(T, (T ) )# 归约 T → T,S 15 #(T, (T) )# 移进 ) 16 #( T, S )# 归约 S → (T)

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

第一章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. xyxb. (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. 上下文无关文法b. 上下文有关文法c.正规文法d. 短语文法4、设G为算符优先文法,G 的任意终结符对a、b有以下关系成立。

a. 若f(a)>g(b),则a>bb.若f(a)<g(b),则a<bc. a~b都不一定成立d. a~b一定成立5、如果文法G是无二义的,则它的任何句子α。

a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是。

完整word版编译原理词法分析习题集带答案

完整word版编译原理词法分析习题集带答案

编译原理》习题(一)——词法分析一、 是非题(请在括号内,正确的划 V,错误的划X ) 1•编译程序是对高级语言程序的解释执行。

(X 2.一个有限状态自动机中,有且仅有一个唯一的终态。

(X ) 9.两个正规集相等的必要条件是他们对应的正规式等价。

(X ) 二、 选择题 1 .词法分析器的输出结果是 A . ( ) 记号 C . ( ) 记号和属性二元组 2. 正规式 A . ( ) M1 C . ( ) M13. 语言是A •句子的集合B .C .符号串的集合D . 4. 编译程序前三个阶段完成的工作是 A •词法分析、语法分析和代码优化 B •代码生成、代码优化和词法分析 C .词法分析、语法分析、语义分析和中间代码生成 D •词法分析、语法分析和代码优化 5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法 单位即 A . 字符 6.构造编译程序应掌握 A . ( ) 源程序 C .( ) 编译方法 7.词法分析的任务是 A .识别单词C .识别句子 。

B .( ) 相应条目在符号表中的位置D . ( ) 属性值 M 1 和 M 2 等价是指 __ 和 M2 的状态数相等 和 M2 所识别的语言集相等 B . ( ) M1和M2的有向边条数相等 D .( ) M1 和 M2 状态数和有向边条数相等 产生式的集合 句型的集合 B .单词 C .句子 D .句型 oB . ( ) 目标语言 D . ( ) 以上三项都是 B .分析句子的含义 D .生成目标代码 三、填空题 1 .计算机执行用高级语言编写的程序主要有两种途径: ,(语法分析) ,(语义分析与中间代码生成 3.编译过程可分为 ( 词法分析) 和(目标代码生成 )五个阶段。

解释__和__编译___。

),(优化) 6.扫描器的任务是从( 源程序中 17. 一张转换图只包含有限个状态 (终 )态。

1.编译程序首先要识别出源程序中每个 (单词),然后再分析每个 (句子)并翻译其意义。

(完整版)编译原理习题及答案(整理后)

(完整版)编译原理习题及答案(整理后)

2、对无二义性文法来说,一棵语法树往往代表了 。
a. 多种推导过程
b. 多种最左推导过程
c.一种最左推导过程
d.仅一种推导过程 e.一种最左推导过程
3、如果文法 G 存在一个句子,满足下列条件 之一时,则称该文法是二义文法。
a. 该句子的最左推导与最右推导相同
b. 该句子有两个不同的最左推导
c. 该句子有两棵不同的最右推导
T→T*P|P
P→(E)|I
则句型 P+T+i 的句柄和最左素短语为 。
a.P+T 和 i b. P 和 P+T c. i 和 P+T+i d.P 和 T
8、设文法为:S→SA|A
A→a|b
则对句子 aba,下面 是规范推导。
a. SSASAAAAAaAAabAaba
b. SSASAAAAAAAaAbaaba
标语言
第二章
一、单项选择题
1、文法 G:S→xSx|y 所识别的语言是 。
a. xyx
b. (xyx)* c. xnyxn(n≥0) d. x*yx*
2、文法 G 描述的语言 L(G)是指 。
a. L(G)={α|S⇒+ α , α∈VT*}
b. L(G)={α|S⇒* α, α∈VT*}
c. L(G)={α|S⇒* α,α∈(VT∪VN*)} d. L(G)={α|S⇒+ α, α∈(VT∪VN*)}
第一章
1、将编译程序分成若干个“遍”是为了

a.提高程序的执行效率
b.使程序的结构更加清晰
c.利用有限的机器内存并提高机器的执行效率
d.利用有限的机器内存但降低了机器的执行效率

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 将高级语言代码翻译成机器语言代码B. 进行程序调试C. 进行代码优化D. 管理程序运行时的内存分配答案:A2. 词法分析器的主要任务是什么?A. 将源代码分解成多个语句B. 将源代码分解成多个词素C. 检查源代码的语法正确性D. 将词素转换为相应的语法单位答案:B3. 下列哪个是自顶向下的语法分析方法?A. LL(1)分析法B. LR(1)分析法C. LALR(1)分析法D. GLR分析法答案:A4. 语义分析的主要任务是什么?A. 检查程序的语法正确性B. 检查程序的类型正确性C. 将源代码转换为目标代码D. 进行程序的优化答案:B5. 代码生成阶段的主要任务是什么?A. 将语法树转换为目标代码B. 进行程序的优化C. 检查程序的类型正确性D. 将源代码分解成多个词素答案:A二、简答题1. 简述编译过程的主要阶段。

答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。

词法分析将源代码分解成词素,语法分析检查源代码的语法结构,语义分析检查源代码的语义正确性,代码生成将源代码转换为目标代码。

2. 什么是中间代码?它在编译过程中起到什么作用?答案:中间代码是一种介于源代码和目标代码之间的代码形式,它通常具有更接近于机器语言的特性,但仍然保持一定的抽象级别。

中间代码在编译过程中起到桥梁的作用,它使得代码优化和目标代码生成更加方便和高效。

三、论述题1. 论述编译器优化的几种常见方法。

答案:编译器优化主要包括以下几种方法:常量折叠、死代码消除、公共子表达式消除、循环优化、代码内联、寄存器分配等。

这些优化方法可以提高程序的执行效率,减少资源消耗,提高程序的运行速度。

结束语:本试题涵盖了编译原理的基本知识点,包括编译器的功能、编译过程的主要阶段、中间代码的作用以及编译器优化的方法。

希望考生能够通过本试题加深对编译原理的理解和掌握。

(完整word版)编译原理练习题

(完整word版)编译原理练习题

一章: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、过程1、扫描器的任务是从源程序中识别出一个个单词符号。

2、高级语言源程序有两种执行方式,即解释和编译。

判断:高级语言编写的源程序都必须通过编译,产生目标代码后才能运行。

多遍扫描的编译程序的多遍是指多次重复读源程序。

高级语言程序到低级语言程序的转换是基于语义的等价变换。

编译程序中错误处理的任务是对检查出的错误进行修改。

目标程序一定是机器语言程序。

连接装配程序可把经编译程序产生的目标程序变成可执行的机器语言程序。

简答题:1、请指出下列错误信息可能是编译的哪个阶段报告的?①else没有匹配的if;②数组下标越界;③使用的函数没有定义;④在数中出现了非数字信息。

答:①语法分析阶段②语义分析与中间代码生成阶段③语义分析与中间代码生成阶段④词法分析阶段2、何谓源程序、中间代码和目标代码?它们三者之间有何种关系?答:所谓源程序是指用某种高级语言编写的程序,它是编译程序的加工对象。

目标程序是指低级语言(机器语言或汇编语言)编写的程序,它是编译程序的加工结果。

中间代码是其结构介于源程序和目标程序之间的一种机内表示形式,它是编译程序产生的中间临时结果。

它们三者之间的关系是等价关系,即结构不同,但语义相同。

二章:1、文法G:S-xSx|y所识别的语言是。

A、xyx B 、(xyx)* C、x n yx n(n≥0) D、x*yx*2、设有文法G[S]=({S,B},{b},{S-b|bB,B-bS},S),该文法所描述的语言是。

安大编译原理期末习题集(有原题)

安大编译原理期末习题集(有原题)
3.自上而下分析法采用___移进__、归约、错误处理、___接受__等四种操作。
4.一个LR分析器包括两部分:一个总控程序和___一张分析表__。
5.后缀式abc-/所代表的表达式是___a/(b-c)__。
6.局部优化是在__基本块___范围内进行的一种优化。
四、简答题(20分)
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)
12.规范句型------由规范推导所得到的句型。
13.扫描器------执行词法分析的程序。
14.超前搜索------在词法分析过程中,有时为了确定词性,需超前扫描若干个字符。
15.句柄------一个句型的最左直接短语。
16.语法制导翻译------在语法分析过程中,根据每个产生式所对应的语义程序进行翻译的方法叫做语法制导翻译。
105 (j,_,_,108)
106 (+, C, 1, C)
107 (j,_,_,112)
108 (j≤,A,D,110)
109 (j,_,_,112)
110 (+, A, 2, A)
111 (j,_,_,108)
112 (j,_,_,100)
113
5.已知文法G[S]为S → aSb|Sb|b,试证明文法G[S]为二义文法。

编译原理-题库

编译原理-题库

编译原理-题库1、编译程序工作时,通常有()阶段。

A、词法分析B、语法分析C、中间代码生成D、语义检查E、目标代码生成答案: ABCE2、编译程序各阶段的工作都涉及到()。

A、语法分析B、表格管理C、出错处理D、语义分析E、词法分析答案: BC3、自下而上的语法分析中,应从()开始分析。

A、句型B、句子C、以单词为单位的程序D、文法的开始符E、句柄答案: BC4、对正规文法描述的语言,以下()有能力描述它。

A、 0型文法B、 1型文法C、上下文无关文法D、右线性文法E、左线性文法答案: ABCDE5、如果文法G存在一个句子,满足下列条件()之一时,则称该文法是二义文法。

A、该句子的最左推导与最右推导相同B、该句子有两个不同的最左推导C、该句子有两棵不同的最右推导D、该句子有两棵不同的语法树E、该句子的语法树只有一个答案: BCD6、在词法分析中,能识别出()。

A、基本字B、四元式C、运算符D、逆波兰式E、常数答案: ACE7、对LR分析器来说,存在()等分析表的构造方法。

A、 LALRB、 LR(0)C、 SLR(1)D、 SLR(0)E、 LR(1)答案: ABCE8、自上而下的语法分析方法有()。

A、算符优先分析法B、 LL(1)分析法C、 SLR(1)分析法D、 LR(0)分析法E、 LALR(1)分析法答案: ACDE9、对LR分析表的构造,有可能存在()动作冲突。

A、移进B、归约C、移进/归约D、移进/移进E、归约/归约答案: CE10、中间代码主要有()。

A、四元式B、二元式C、三元式D、后缀式E、间接三元式答案: ACDE11、有穷自动机接受的语言是正则语言。

答案:正确12、一个文法所有句型的集合形成该文法所能接受的语言。

答案:错误13、在自下而上的语法分析中,语法树与分析树一定相同。

答案:错误14、语法分析时必须先消除文法中的左递归。

答案:错误15、一个有限状态自动机中,有且仅有一个惟一终态。

编译原理习题集与答案解析(整理后)

编译原理习题集与答案解析(整理后)

第一章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、编译程序工作过程中,第一段输入是,最后阶段的输出为程序。

4、编译程序是指将程序翻译成程序的程序。

单选解答1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。

2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。

3、对编译而言,变量既持有左值又持有右值,故选c。

4、编译程序打交道最多的就是各种表格,因此选d。

5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。

编译原理习题及答案1~3

编译原理习题及答案1~3

图2-13 习题2.6的NFA
用子集法将图2-13所示的NFA确定化,如图2-14所示
由图2-14可看出非终态2和4的下一状态相同,终态6和8 的下一状态相同,即得到最简状态为
{0} {1} {2,4} {3} {5} {6,8} {7}
按顺序重新命名为0、1、2、3、4、5、6,则 得到最简DFA,如图2-15所示。
(2) 将编译过程分成若干“遍”是为了 。
A.提高程序的执行效率
B.使程序的结构更加清晰
C.利用有限的机器内存并提高机器的执行效率
D.利用有限的机器内存但降低了机器的执行效

(3) 构造编译程序应掌握 。
A.源程序
B.目标语言
C.编译方法
D.A~C项
(4) 编译程序绝大多数时间花在 上。
A.出错处理
2.9构造一个DFA,它接收 Σ ={a,b}上所有含偶数 个a的字符串。 解:Σ ={a,b}上所有含偶数个a的字符串可表示为 (b|ab*a)*
2.10 下列程序段以B表示循环体,A表示初始化,I表 示增量,T表示测试:
(4) 状态转换图(见图2-1)接受的字集为 _______。 A.以0开头的二进制数组成的集合 B.以0结尾的二进制数组成的集合 C.含奇数个0的二进制数组成的集合 D.含偶数个0的二进制数组成的集合
图2-1 习题2.1的DFA M
(5) 对于任一给定的NFA M, 一个DFA M′,使 L(M)= L(M′)。
S
a
b
0
2
1
1

2
2
2
2
其状态转换图如图2-3所示。
图2-3 习题2.3的DFA M′
将图2-3所示的DFA M′最小化。首先,将M′的状态分 成终态组{1,2}与非终态组{0}。其次,考察{1,2}。由于 {1,2}a={1,2}b={2} {1,2},因此不再将其划分了,也即整 个划分只有两组:{0}和{1,2}。令状态1代表{1,2},即把原 来到达2的弧都导向1,并删除状态2。最后,得到如图2-4 所示的化简了的DFA M′。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 代码优化B. 语法分析C. 代码生成D. 所有以上选项答案:D2. 下列哪个阶段属于编译过程的前端?A. 语法分析B. 代码生成C. 运行时库链接D. 目标代码优化答案:A3. 在编译原理中,什么是“产生式系统”?A. 一种编程语言的规范B. 一种用于描述语法的系统C. 一种代码优化技术D. 一种代码生成方法答案:B4. 以下哪个是自顶向下的语法分析方法?A. LR分析B. LALR分析C. LL分析D. CYK算法答案:C5. 在编译器的哪个阶段会进行类型检查?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C二、填空题1. 编译器在进行________时,会识别源代码中的各种标识符、常量、运算符等,并将其转换成相应的符号。

答案:词法分析2. 在编译原理中,________图是一种用于描述程序执行过程中变量状态的图,它以节点表示变量的值,以有向边表示程序的控制流。

答案:控制流3. 语法分析的主要任务是根据________规则来分析和构建源程序的语法结构。

答案:语法4. 在编译过程中,________是将源程序中的高级表示转换为机器语言或中间代码的过程。

答案:代码生成5. 编译器的________阶段负责将优化后的代码转换为目标机器可执行的指令序列。

答案:目标代码生成三、简答题1. 简述编译器的一般工作流程。

答:编译器的一般工作流程包括以下几个阶段:首先是词法分析,将源代码文本分解成一系列的记号;其次是语法分析,根据语言的语法规则构建抽象语法树;接着是语义分析,检查源代码的语义正确性并进行类型检查;然后是中间代码生成,将抽象语法树转换为中间表示形式;之后是代码优化,对中间代码进行各种优化以提高效率;最后是代码生成,将优化后的中间代码转换为目标机器的机器代码。

2. 描述自顶向下和自底向上语法分析方法的主要区别。

答:自顶向下的语法分析方法从开始符号开始,尝试将输入的记号序列归约为语法中的产生式规则,直到得到完整的抽象语法树。

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

第二章2.构造产生下列语言的文法(2){a n b m c p|n,m,p≥0}解: G(S) :S→aS|X,X→bX|Y,Y→cY|ε(3){a n # b n|n≥0}∪{cn # dn|n≥0}解: G(S):S→X,S→Y,X→aXb|#, Y→cYd|# }(5)任何不是以0 打头的所有奇整数所组成的集合解:G(S):S→J|IBJ,B→0B|IB|ε,I→J|2|4|6|8, J→1|3|5|7|9}(6)(思考题)所有偶数个0 和偶数个1 所组成的符号串集合解:对应文法为 S→0A|1B|ε,A→0S|1C B→0C|1S C→1A|0B3.描述语言特点(2)S→SS S→1A0 A→1A0 A→ε解:L(G)={1n10n11n20n2… 1nm0nm |n1,n2,…,nm≥0;且n1,n2,…nm 不全为零}该语言特点是:产生的句子中,0、1 个数相同,并且若干相接的1 后必然紧接数量相同连续的0。

(5)S→aSS S→a解:L(G)={a(2n-1)|n≥1}可知:奇数个a5. (1) 解:由于此文法包含以下规则:AA→ε,所以此文法是0 型文法。

7.解:(1)aacb 是文法G[S]中的句子,相应语法树是:最右推导:S=>aAcB=>aAcb=>aacb最左推导:S=>aAcB=>aacB=>aacb(3)aacbccb 不是文法G[S]中的句子aacbccb 不能从S推导得到时,它仅是文法G[S]的一个句型的一部分,而不是一个句子。

11.解:最右推导:(1) S=>AB=>AaSb=>Aacb=>bAacb=>bbAacb=>bbaacb上面推导中,下划线部分为当前句型的句柄。

对应的语法树为:第三章3 假设M:人 W:载狐狸过河,G:载山羊过河,C:载白菜过河6 根据文法知其产生的语言是L={a m b n c i| m,n,i≧1}可以构造如下的文法VN={S,A,B,C}, VT={a,b,c}P={ S →aA, A→aA, A→bB, B→bB, B→cC, C→cC, C→c} 其状态转换图如下:7 (1) 其对应的右线性文法是:A →0D, B→0A,B→1C,C→1|1F,C→1|0A,F→0|0E|1A,D→0B|1C,E→1C|0B(2) 最短输入串011(3) 任意接受的四个串: 011,0110,0011,000011(4) 任意以1 打头的串.9.对于矩阵(iii)(1) 状态转换图:(2) 3型文法(正规文法)S→aA|a|bB A→bA|b|aC|a B→aB|bC|b C→aC|a|bC|b(3)用自然语言描述输入串的特征以a 打头,中间有任意个(包括0个)b,再跟a,最后由一个a,b 所组成的任意串结尾或者以b 打头,中间有任意个(包括0个)a,再跟b,最后由一个a,b 所组成的任意串结尾。

12 (1)-----------------------------------------------------以上为第一次作业最小化:≡0≡ {S,A} {B,C}因为 {S}b=φ {A}b={B} 所以{S,A}=>{S}{A}因为 {C}b=φ {B}b={B} 所以{B,C}=>{B}{C}≡1≡{S}{A}{B}{C}原DFA已为最小DFA。

10 (1)G1 的状态转换图:或(2) G1 等价的左线性文法G1’[F]:F→Dd|Bb, D→C, B→S|ε|Ab|Db, A→Sa|a, C→Bc, S→Eb, E→Aa或G1’[F]:F→Dd|Bb, D→C, B→S|ε|Ab|Db, A→Sa|a, C→Bc, S→Aab21 求出描述习题3-12中图(2)(3)所给出有限自动机所识别语言的正规式(2)a(ba)*b 或 (ab)*ab (3)a (b|aa)*a-----------------------------------------------------以上为第二次作业 22(1) ((0*|1)(1*0))*第四章1 (2)将间接左递归转换成直接左递归,将A->SA A->a 代入S->AS 由原文法得S->SAS|aS|b消除左递归:S->aSS ’|bS ’ S ’->ASS ’|ε 4又ε属于First(S),First(S) ⋂ Follow(S)= ∅又ε属于First(A),First(A) ⋂ Follow(A)= ∅又ε属于First(B),First(A) ⋂ Follow(A)= ∅所以此文法为LL(1)文法。

8.(1)(a)消除左递归:S->Sb|Ab|b => S->AbS’|bS’S’->bS’|εA->Aa|a => A->aA’A’->aA’ |ε文法G’:S->AbS’|bS’S’->bS’|εA->aA’A’->aA’ |ε补充题:若有文法G[S]:S ->AB|cCA ->b|εB ->aC|εC ->aS|c判断文法G是否为LL(1)文法,写出理由;分别求所有非终结符的First和Follow集;若为LL(1)文法,给出其预测分析表;分析句子caac是否符合该文法。

答案:无左递归,无左公因子。

First(A)=(b, ε), First(B)={a, ε}因First(A)含ε,First(AB)=First(A) ⋃First(B)={a,b,ε}, First(cC)={c} Follow(S)={#} ⋃ Follow(C)={#}Follow(A)=First(B) ⋃ Follow(S) -{ ε}={a,#}Follow(B)=Follow(S) ={#}Follow(C)=Follow(B) ⋃ Follow(S) ={#}对S,First(AB) ⋂ First(cC)= ∅对A,First(b) ⋂ First(ε)= ∅,因First(A)含ε,First(A) ⋂ Follow(A)={b, ε}⋂{a,#}= ∅对B,First(aC) ⋂ First(ε)= ∅,因First(B)含ε,First(B) ⋂ Follow(B)={a, ε}⋂{#}= ∅对C,First(aS) ⋂ First(c)= ∅所以,文法G是LL(1)文法栈输入缓冲区动作#S caac##Cc caac# S ->cC#C aac##Sa aac# C ->aS#S ac##BA ac# S ->AB#B ac# A ->ε#Ca ac# B ->aC#C c##c c# C ->c# # 成功-----------------------------------------------------以上为第三次作业16.对于如下文法G[<变量说明>]:<变量说明>->VAR<变量表>:<类型>;<变量表>-><变量表>,<变量>|<变量><变量>->i<类型>->real|integer|Boolean|char(1)将G改造为等价的算符优先文法G’;令<变量说明>:S,VAR:v, <变量表>:A,<类型>:B,<变量>:Creal:r integer:g Boolean:b char:c文法G 可改写为:S->vA:B;A->A,C|CC->iB->r|g|b|c该文法是算符文法(2)求出G’的全部优先关系。

35.对于以下文法,试构造它们的LR(0)项目集规范族及识别全部活前缀的DFA。

(2)S->cA S->ccB A->cA A->a B->ccB B->b解:拓展文法得文法列表:(0)S’->S (1) S->cA (2)S->ccB (3)A->cA (4)A->a (5)B->ccB (6)B->b37.判断下面的文法是哪一类LR文法,并构造LR分析表。

S->(SR S->a R->,SR R->)解:拓展文法得文法列表:(0)S’->S (1)S->(SR (2)S->a (3) R->,SR (4) R->)项目集规范族:分析表:补充题1:对下列文法G:S →D(R) R →R; P|P P →S|i D →i求出每个非终结符的FIRSTVT集和LASTVT集,并构造算符优先关系矩阵。

解:文法G每个非终结符的FIRSTVT集合FIRSTVT(S)={ (, i }FIRSTVT(R) ={;, (, I }FIRSTVT(P) ={i, ( }FIRSTVT(D) ={i }文法G的每个非终结符的LASTVT集合LASTVT(S) ={ ) } LASTVT(R) ={;, ) ,i }LASTVT(P) = {i , ) } LASTVT(D) = {i }优先关系矩阵(); i # ( <· =· <· <·) ·> ·> ·>; <··> ·> <·i ·> ·> ·># <· <· =·补充题2:对于如下的文法,构造LR(1)项目集族,并判断它们是否为LR(1)文法,若是LR(1)方法,分析符号串abab的分析过程。

S→A A→AB A→ε B→aB B→b解:扩展后文法为:0.S’->S 1.S→A 2.A→AB 3.A→ε 4.B→aB 5.B→b构造LR(1)项目集族:-------------------------------------------------以上为第四、五次作业5.4 解:(1)A-BC+*DE-^(2)ad*c+d/e+f*g+(3)ax+4 ≤ cd3*>∨(4)abcdef^*<∧∨(5)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 245.5 解:(1)a+b*c(2)a*(b-c)-(c+d)/e(3)a≤b+c∧a>0∨a+b≠0∧a<0(4)if(a<b) x=(a-b)^c ;else g=h5.8 解:(1)①(+,B,C,T1)②(*,A,T1,T2)③(+,T2,D,T3)④(=,T3,_,X)(2)①(jnz, A,_, ③)②(j,_,_, f )③(jnz,B,_,t)④(j,_,_, ⑤)⑤(jnz, C,_,t)⑥(j,_,_, ⑦)⑦(jnz, D,_, ⑨)⑧(j,_,_,f)⑨(jnz, F,_,f)⑩(j,_,_,t)t:…………f:……(3)①(j<,A,C, ③)②(j,_,_, ⒃)③(j>,B,0, ⑤)④(j,_,_, ⒃)⑤(j=,a,1, ⑦)⑥(j,_,_, ⑩)⑦(+,C,1,T1)⑧(:=,T1,_,C)⑨(j,_,_, ⒂)⑩(j<=,A,D, ⑿)⑾(j,_,_, ⒂)⑿(+,A,2,T2)⒀(:=,T2,_,A)⒁(j,_,_, ⑩)⒂(j,_,_, ①)⒃-------------------------------------------------以上为第六次作业。

相关文档
最新文档