中山大学软件学院2016级编译原理-期末试卷A
编译原理期末考试试题及答案
编译原理期末考试试题及答案一、选择题(每题2分,共20分)1. 编译器的前端主要负责以下哪项工作?A. 代码优化B. 目标代码生成C. 词法分析和语法分析D. 运行时支持2. 词法分析器的主要任务是什么?A. 识别语法结构B. 识别词法单元C. 构建语法树D. 代码优化3. 语法分析中,使用哪种方法可以避免回溯?A. 递归下降分析B. LR分析C. LL分析D. 自顶向下分析4. 下列哪个选项不是中间代码的形式?A. 三地址代码B. 四元组C. 抽象语法树D. 汇编语言5. 代码优化的目标不包括以下哪项?A. 提高代码执行速度B. 减少程序占用的内存C. 增加程序的可读性D. 减少程序的执行时间二、简答题(每题10分,共30分)1. 简述编译器的主要组成部分及其功能。
2. 解释什么是语法制导翻译,并举例说明其在编译过程中的应用。
3. 描述静态作用域规则和动态作用域规则的区别。
三、计算题(每题15分,共30分)1. 给定一个简单的算术表达式 `3 + (4 * 5) - 2`,请使用逆波兰表示法表示,并说明其转换过程。
2. 假设有一个简单的文法如下:```S -> A BA -> a A | εB -> b B | ε```请写出使用该文法生成字符串 "ab" 的所有派生树。
四、论述题(每题20分,共20分)1. 论述编译器中代码优化的重要性,并举例说明常见的优化技术。
参考答案一、选择题1. C2. B3. B4. D5. C二、简答题1. 编译器的主要组成部分包括前端、中端和后端。
前端负责词法分析和语法分析,中端进行语义分析和中间代码生成,后端则负责代码优化和目标代码生成。
2. 语法制导翻译是一种基于文法规则的翻译技术,它将源程序的语法结构映射到相应的语义操作上。
例如,在编译过程中,语法制导翻译可以用于将源代码中的条件语句转换为中间代码中的跳转指令。
3. 静态作用域规则是指变量的作用域在编译时确定,而动态作用域规则是指变量的作用域在运行时确定。
大学课程《编译原理》考试试卷A卷及答案
《编译原理》考试试卷A适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1.解释系统与编译系统的区别在于和。
2.在编译过程中始终伴随着管理和出错处理过程。
3.语法分析的方法为和两大类。
4.LL(1)文法中不能有和。
5.词法分析器中单词的描述工具是 ,单词的识别工具。
6.算符优先语法分析,在符号栈栈顶出现时,进行规约处理。
二、单选题(每小题2分,共10分)1.词法分析器的加工对象是()A.中间代码B.单词C.源程序D.元程序2.同正则表达式a*b*等价的文法是()A. G1:S→aS|bS|εB. G2: S→aSb|εC. G3:S→aS|Sb|εD. G4: S→abS|ε3.文法G[A]:A→bH H→BA B→Ab H→a 不是()A. 2型文法B. 3型文法C. 0型文法D.1型文法4.算符优先分析每次都是对()进行规约。
A.短语B.最左素短语C.素短语D.句柄5.( )不是DFA的成分。
A.有穷字母表B. 初始状态集合C.终止状态集合D.有限状态集合三、问答题(第1,5小题每题15分,其余每小题10分,共80分)1. (15分)解释下列术语:(1)编译程序(2)句柄(3)上下文无关文法2.编译程序主要有哪些构成成分?(10分)3.给出描述语言L={a n b2n c m|n,m≥0}的cfg。
(10分)4.(10分)将下图中的DFA M最小化。
5. (15分)判断文法G[S]:S→aHH→aMd|dM→Ab|εA→aM|e是否为LL(1)文法?给出判断过程。
6. (10分)改写文法G[E]:E → E+T|TT →T*F|FF →(E)| a为无左递归文法。
7. (10分)已知文法G[S]为:S→VV→T|ViTT→F|T+FF→)V*|(请指出句型(+(i( 规范推到,并指出句型F+Fi( 中的短语、句柄和素短语。
《编译原理》考试试卷A参考答案适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1. 边翻译边执行和不生成目标代码。
《编译原理》期末考试题库含答案.docx
《编译原理》模拟试题一一、是非题(请在括号内,正确的划错误的划X)(每个2分,共20分)1•计算机高级语言翻译成低级语言只有解释一种方式。
(X)2.在编译中进行语法检查的目的是为了发现程序中所有错误。
(X)3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
(丁 )4.正则文法其产生式为A->a , A->Bb, A.BGVN , a、beVT o (X)5.每个文法都能改写为LL(1)文法。
(V)6.递归下降法允许任一非终极符是直接左递归的。
(V)7.算符优先关系表不一定存在对应的优先函数。
(X)8.自底而上语法分析方法的主要问题是候选式的选择。
(X)9.LR法是自顶向下语法分析方法。
(X)10.简单优先文法允许任意两个产生式具有相同右部。
(X)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.一个编译程序中,不仅包含词法分析,_____ ,中间代码生成,代码优化,目标代码生成等五个部分。
A.()语法分析B.()文法分析C.()语言分析D.()解释分析2.词法分析器用于识别_____ oA.()字符串B.()语句C.()单词D.()标识符3 •语法分析器则可以发现源程序中的______ oA.()语义错误B.()语法和语义错误C.()错误并校正D.()语法错误4.下面关于解释程序的描述正确的是。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A. ( ) (1) (2)B. () (1)C. () (1)⑵(3)D.()⑵⑶5. _________________________________________ 解释程序处理语言时,大多数采用的是 ___________________________________ 方法。
编译原理期末考试试卷及答案
期末考试试卷(A)卷一、填空题(每小题2分,共20分)1、字母表∑,用∑*表示∑上所有有穷长的串集合,∑*称为∑的①。
2、设z=abc,则z的固有头是①。
3、如何由语言基本符号组成程序中各个语法成分(包括程序)的一组规则叫①。
4、设∑={a,b},∑上的正规式(a|b)(a|b) 相应的正规集为①5、NFA的映象f是从"状态×字"映射到"状态子集",f为①值函数。
6、LR分析是按规范句型的①为可归约串。
7、结点的①属性值由该结点的兄弟结点和父结点的属性值计算。
8、如果分析树中一结点的属性b依赖于属性c,那么这个结点的属性b的语义规则的计算必须在定义属性c的语义规则的计算①。
9、对于栈式符号表,引入一个显示嵌套层次关系表- ①表,该表总是指向当前正在处理的最内层的过程的子符号表在栈符号表中的起始位置。
10、任一有向边序列n1 → n2,n2 → n3,…,nk-1 → nk为从结点n1到结点nk的一条通路。
如果n1=nk,则称该通路为①。
二、单项选择(每小题2分,共14分)1、乔姆斯基把文法分成4种类型,即0型、1型、2型和3型。
其中3型文法也称为()。
A.上下无关文法 B.正规文法C.上下文有关文法 D.无限制文法2、生成非0开头的正偶数集的文法是()。
A. Z::=ABC B. Z::=ABCC::=0|2|4|6|8 C::=0|2|4|6|8B::=BA|B0|ε B::=BA|B0|0A::=1|2|3|…|9 A::=1|2|3|…|9C. Z::=ABC|2|4|6|8D. Z::=ABC|2|4|6|8C::=0|2|4|6|8 C::=0|2|4|6|8B::=BA|B0|0 B::=BA|B0|εA::=1|2|3|…|9 A::=1|2|3|…|93、简单优先分析法从左到右扫描输入串,当栈顶出现()时进归约。
A.素短语B.直接短语C.句柄D.最左素短语4、同心集合并有可能产生新的()冲突。
编译原理期末试题(含答案+大题集+重要知识点)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。
A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
编译原理试卷A(考试专用)
4.文法的属性有和。
5.根据所涉与程序的范围,优化可分为局部优化、和全局优化三种。
得分
二、选择题(每小题2分,共10分)
1.描述语言{≥1}的文法为( )。
A.B.
C.D.ε
2.以10结尾的二进制数串为( )。
A.(0|1)*01B.(0|1)*10C.01(0|1)*D.10(0|1)*
()
p();
1; ;
23; p(); a .
A.2和8 B.2和9 C.7和9 D.7和8
得分
三、判断并改错(每小题2分,共10分)
1.文法的二义性和语言的二义性是两个相同的概念。
2.图中运算符,操作符可作为终端结点。
3.和所含的终态结点可以是若干个。
4.存在一个优先关系表就一定存在优先函数与之对应。
G(M):
M →
T → |
B → | |
D → d |
4.给出赋值语句 *()的四元式表示形式。(5分)
5.设文法G(S):(15分)
1)构造各非终结符的和集合;
2)构造优先关系表。
3)该文法是算法优先文法吗?
6.设有基本块(5分)
T1:=2
T2:=10
T3:=S-R
T4:=S+R
A:=T2* T4
编译原理考试试卷(A卷)
2009— 2010学年第一学期
科目:编译原理计算机系_计算机科学与技术专业_级班
题号
一
二
三
四
总分
得分
阅卷人
得分
一、填空题(每空1分,共10分)
1.编译程序的工作的过程一般可以划分为词法分析、、、、等几个基本阶段,同时还会伴有和出错处理。
《编译原理》期末考试题库含答案.docx
《编译原理》模拟试题一一、是非题(请在括号内,正确的划错误的划X)(每个2分,共20分)1•计算机高级语言翻译成低级语言只有解释一种方式。
(X)2.在编译中进行语法检查的目的是为了发现程序中所有错误。
(X)3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
(丁 )4.正则文法其产生式为A->a , A->Bb, A.BGVN , a、beVT o (X)5.每个文法都能改写为LL(1)文法。
(V)6.递归下降法允许任一非终极符是直接左递归的。
(V)7.算符优先关系表不一定存在对应的优先函数。
(X)8.自底而上语法分析方法的主要问题是候选式的选择。
(X)9.LR法是自顶向下语法分析方法。
(X)10.简单优先文法允许任意两个产生式具有相同右部。
(X)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.一个编译程序中,不仅包含词法分析,_____ ,中间代码生成,代码优化,目标代码生成等五个部分。
A.()语法分析B.()文法分析C.()语言分析D.()解释分析2.词法分析器用于识别_____ oA.()字符串B.()语句C.()单词D.()标识符3 •语法分析器则可以发现源程序中的______ oA.()语义错误B.()语法和语义错误C.()错误并校正D.()语法错误4.下面关于解释程序的描述正确的是。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A. ( ) (1) (2)B. () (1)C. () (1)⑵(3)D.()⑵⑶5. _________________________________________ 解释程序处理语言时,大多数采用的是 ___________________________________ 方法。
编译原理期末考试试卷(A卷)
编译原理期末考试试卷( A 卷)一、简述编译程序的工作过程。
( 10)二、构造下列正规式相应的DFA (用状态转换图表示)( 15)(1) 1( 0 | 1) *100(2) 0*10*10*10*1(3) letter (letter | digit ) *三、给出下面语言的相应文法:(15)L1 ={a n b n |n≥1}L 2={a n b m+n a m|n≥1,m≥ 0}四、对下面的文法G:S→a | b | ( T)T→T,S | S(1)消去文法的左递归,得到等价的文法G2;(2)判断文法 G2 是否 LL ( 1)文法,如果是,给出其预测分析表。
( 15)五、设有文法G[A] :A→ BCc | gDBB→ bCDE | εC→DaB | caD→ dD |εE→gAf | c(1) 计算该文法的每一个非终结符的FIRST 集和 FOLLOW 集;(2)试判断该文法是否为 LL ( 1)文法。
(15)六、对表达式文法G:E → E+T|TT → T*F|FF → (E)|I(1)造各非终结符的 FIRSTVT 和 LASTVT 集合;(2)构造文法的算符优先关系表。
(15)七、有定义二进制整数的文法如下:L →LB|BB →0|1构造一个翻译模式,计算该二进制数的值(十进制的值)。
( 15)简述编译程序的工作过程。
(10)编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的,就其过程而言,一般可以划分为五个工作阶段:①词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;②语法分析,根据语言的语法规则,把单词符号串分解成各类语法单位;③语义分析与中间代码产生,即对各类语法单位,分析其汉一并进行初步翻译;④代码优化,以期产生更高效的代码;⑤目标代码生成,把中间代码变换成特定机器上的低级语言指令形式。
二、构造下列正规式相应的DFA (用状态转换图表示)( 15)(4) 1(0 | 1)*1( 5) 0*10*10*10*10,1(6) letter (letter | digit ) *01( 1)1230000( 2)151111234(3)letterletter12digit三、给出下面语言的相应文法:(15)L1 ={a n b n|n≥1}L 2={a n b m+n a m|n≥1,m≥ 0}G1:G1 :A→ aAb |ab S→ABA → aAb | abB → bBa |ε四、对下面的文法G:S→a | b | ( T)T→T,S | S(1) 消去文法的左递归,得到等价的文法G2;(2) 判断文法G2 是否 LL ( 1)文法,如果是,给出其预测分析表。
编译原理期末A试卷
一、填空(每空0.5分,共 10分)1、编译程序的功能是是对(高级语言)进行翻译,使之生成目标代码。
2、编译程序的工作过程一般划分为5个阶段:(词法分析)、语法分析、语义分析与中间代码生成,(代码优化)及目标代码生成。
另外还有表格管理和(出错处理)。
3、一个上下文无关文法所含四个组成部分是一组终结符号、一组(非终结符号)、一个开始符号、(一组产生式)。
4、设G是一个给定的文法,S是文法的开始符号,如果S=> x(其中x∈V*),则称x 是文法的一个(句型)。
5、规范归约中的可归约串是指句柄,算符优先分析中的可归约串是指(最左素短语)。
6、在编译过程中,可采用的中间代码形式有()、()、()等。
(三元式、间接三元式、四元式、逆波兰式、抽象语法树)(任选三个即可)7、语法分析最常用的两类方法是(自上而下)和(自下而上)分析法。
8、表达式(a+b)*c的后缀表达式为(ab+c*)。
9、符号表的结构一般有(线性表)、(有序表)、(散列表或哈希表)等。
分别使用的查找方法有(顺序查找)、(折半查找)和(哈希法查找)10、代码优化的目的是(减少代码的时空开销)。
11、寄存器是CPU内部的(存储单元),其访问时间小于CPU对内存的访问时间。
12、如果一个句子存在两棵不同的语法树就说明该句子是(二义性)的。
二、选择题(每题1分,共10分)1、文法的开始符号经多步推导产生的文法符号序列(仅包含终结符)是文法的(D )。
A.短语B.句柄C.句型D.句子2、构造编译程序应掌握(D)。
A.源程序B.目标语言C.编译方法D.以上三项都是3、不属于循环优化的主要方法的是(B)。
A.强度削弱B.删除无用赋值C.删除归纳变量D.代码外提4、使用(A)可以定义一个程序的含义。
A.语义规则B.词法规则C.产生规则D.左结合规则5、优化可生成(D)的目标代码。
A .运行时间较短B .占用存储空间较小C .运行时间短但占用内存空间大D .运行时间短且占用存储空间小6、有文法G :E →E*T|T , T →T+i|i ,则输入串1+2*8+6按该文法G 归约,其值为(B )。
编译原理期末试题及答案
编译原理期末试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将()代码转换成()代码。
A. 高级语言,低级语言B. 高级语言,机器语言C. 汇编语言,机器语言D. 机器语言,汇编语言答案:B2. 编译过程中,词法分析的输出是()。
A. 语法树B. 语法分析表C. 词法单元D. 抽象语法树答案:C3. 在编译原理中,语法分析通常采用()方法。
A. 递归下降分析B. 动态规划C. 贪心算法D. 回溯算法答案:A4. 语义分析的主要任务是()。
A. 检查语法错误B. 生成中间代码C. 检查语义错误D. 优化代码答案:C5. 编译器的优化通常发生在()阶段。
A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D6. 编译器的前端主要负责()。
A. 代码生成B. 代码优化C. 语法分析D. 目标代码生成答案:C7. 编译器的后端主要负责()。
A. 代码生成B. 代码优化C. 语法分析D. 词法分析答案:A8. 编译原理中,LL(1)分析方法的特点是()。
A. 左到右,最右推导B. 左到右,最左推导C. 右到左,最右推导D. 右到左,最左推导答案:B9. 编译原理中,LR(1)分析方法的特点是()。
A. 左到右,最右推导B. 左到右,最左推导C. 右到左,最右推导D. 右到左,最左推导答案:B10. 编译原理中,语法制导翻译的主要思想是()。
A. 根据语法树的结构进行翻译B. 根据词法单元进行翻译C. 根据语法分析表进行翻译D. 根据语义分析表进行翻译答案:A二、填空题(每题2分,共20分)1. 编译器中,用于表示语法规则的产生式通常由非终结符、产生符号和()组成。
答案:产生式右侧2. 在编译原理中,一个文法是()的,如果它的任何两个产生式都不会导致相同的句柄。
答案:无二义性3. 编译器的词法分析阶段通常使用()算法来识别和分类词法单元。
答案:有限自动机4. 语法分析阶段,如果一个文法是左递归的,编译器需要使用()技术来消除左递归。
编译原理试卷A(含答案)
I10:
T’→, ST·
T
I11:
T →ST’·
不存在项目冲突:
Follow(S’) = {#}
Follow(S) = {, ,),#}
Follow(T) = {)}
Follow(T’) = {)}
构造SLR分析表:
状态
ACTION
GOTO
a
∧
(
)
,
#
S
T
T’
0
S2
A→a|b|,
FIRST(S)等于(A)
a){a,b}b) {a,b,c}c){c}d){a,b,}
(8)某翻译器依如下翻译模式设计,其基础文法可由开始符号S产生一个二进制数。
S→L{ print(L.val); }/*print函数以10进制方式打印数值*/
L→L1B{L.val = L1.val*2 + B.val; }
11.T → ·ST’
12.T →S·T’
13.T →ST’·
14.T → ·
15.T’→·,ST’
16.T’→,·ST’
17.T’→,S·T’
18.T’→,ST’·
构造SLR项目集规范族:
I0: S I1:∧I3:∧
S’→ ·S S’4:
答:
(1)S→a|∧|(T)
TST’
T’,ST’|e
(2)
该文法不含左递归
First(S) = { a,∧,( }
First(T) = {a,∧,( }
First(T’) = {, , e}
Follow(S) = {, ,),#}
Follow(T) = {)}
Follow(T’) = {)}
编译原理期末试题及答案
1、试为表达式 w+(a+b)*(c+d/(e-10)+8) 写出相应的逆波兰表示。
2、写出表达式a+b*(c-d)/e的逆波兰式和三元序列。
3、写出表达式a:=(b+c)*e+(b+c)/f的逆波兰式和三元序列。
4、已知文法G(S)及相应翻译方案S→aAb {print “1”}S→a {print “2”}A→AS {print “3”}A→c {print “4"}输入acab, 输出是什么?5、已知文法G(S)S→bAaA→(B | aB→A a)写出句子b(aa)b的规范归约过程.6、已知文法G[S]S→S*aF | aF |*aFF→+aF | +a消除文法左递归。
1、设文法G(S):S→^ | a | (T)T→T,S | S⑴ 消除左递归;⑵ 构造相应的FIRST和FOLLOW集合;⑶ 构造预测分析表2.语句 if E then S(1)改写文法,使之适合语法制导翻译;(2)写出改写后产生式的语义动作。
4。
设某语言的for语句的形式为for i:=E(1) to E(2) do S其语义解释为i:=E(1)LIMIT:=E(2)again: if i<=LIMIT thenBeginS;i:=i+1goto againEnd;(1)写出适合语法制导翻译的产生式;(2)写出每个产生式对应的语义动作。
7。
已知文法G(S)S→a | ^ | (T)T→T,S | S(1) 给出句子(a,(a,a))的最左推导;(2) 给出句型((T,S),a)的短语, 直接短语,句柄。
8。
对于 C 语言do S while E语句(1)改写文法,使之适合语法制导翻译;(2)写出改写后产生式的语义动作.9。
已知文法G(S)S→aAcBeA→Ab| bB→d(1)给出句子abbcde的最左推导及画出语法树;(2)给出句型aAbcde的短语、素短语。
10。
设文法G(S):S→(T) | aS | aT→T,S | S⑴消除左递归和提公共左因子;⑵构造相应的FIRST和FOLLOW集合;⑶构造预测分析表。
编译原理期末考试卷和答案
一. 填空题(每空2分,共20分)1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。
2. 规范规约是最(3)规约。
3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。
另外还有(6)和出错处理。
4.表达式x+y*z/(a+b)的后缀式为 (7) 。
5.文法符号的属性有综合属性和 (8)。
6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址计算公式为(9)。
7.局部优化是局限于一个(10)范围内的一种优化。
二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分)1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以及一组( )。
A . 字符串B . 产生式C . 开始符号D . 文法 2.程序的基本块是指( )。
A . 一个子程序B . 一个仅有一个入口和一个出口的语句C . 一个没有嵌套的程序段D . 一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。
A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析。
A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。
A . 四元式序列B . 间接三元式序列C . 二元式序列D . 机器语言程序或汇编语言程序 6. 一个文法所描述的语言是( );描述一个语言的文法是( )。
A . 唯一的 B . 不唯一的 C . 可能唯一,也可能不唯一7.如果在文法G中存在一个句子,当其满足下列条件()之一时,则称该文法是二义文法。
编译原理期末试题(8套含答案+大题集)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。
A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
编译原理期末考试试卷及答案
一. 填空题(每空2分,共20分)1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。
2. 规范规约是最(3)规约。
3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。
另外还有(6)和出错处理。
4.表达式x+y*z/(a+b)的后缀式为 (7) 。
5.文法符号的属性有综合属性和 (8)。
6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址计算公式为(9)。
7.局部优化是局限于一个(10)范围内的一种优化。
二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分)1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以及一组( )。
A . 字符串B . 产生式C . 开始符号D . 文法 2.程序的基本块是指( )。
A . 一个子程序B . 一个仅有一个入口和一个出口的语句C . 一个没有嵌套的程序段D . 一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。
A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析。
A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。
A . 四元式序列B . 间接三元式序列C . 二元式序列D . 机器语言程序或汇编语言程序 6. 一个文法所描述的语言是( );描述一个语言的文法是( )。
A . 唯一的 B . 不唯一的 C . 可能唯一,也可能不唯一7.如果在文法G中存在一个句子,当其满足下列条件()之一时,则称该文法是二义文法。
2016学年第一学期编译原理期末试题A卷答案
中山大学本科生期末考试考试科目:《编译原理》(A卷答案)学年学期:2016学年第一学期姓名:学院/系:数据科学与计算机学院/软件工程学号:考试方式:闭卷年级专业:考试时长:120分钟班别:第八条:“考试作弊者,不授予学士学位。
”------------以下为试题区域,共九道大题,总分100分,考生请在答题纸上作答------------1.Write regular expressions for the following languages (8 points).a)All strings over {0, 1} that do not contain consecutive zeros (4 points).(0?1)*0?b)All strings representing a nonnegative binary number (without leading zeros)which is a multiple of 8 (4 points).0 | 1(1|0)*0002.Consider the following regular expression (17 points):( a | b ) * a ( a | b )a)Based on the Thompson Algorithm, construct the NFA from the above regularexpression (8 points).b)Convert the NFA into a DFA with minimum number of states (9 points).ε-closure({0}) = {0, 1, 2, 4, 7}ε-closure(move({0, 1, 2, 4, 7}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({0, 1, 2, 4, 7}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 11}, ‘a’)) = ε-closure({3, 8, 10}) = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 11}, ‘b’)) = ε-closure({5, 12}) = {1, 2, 4, 5, 6, 7, 12, 13}ε-closure(move({1, 2, 4, 5, 6, 7}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({1, 2, 4, 5, 6, 7}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}, ‘a’)) = ε-closure({3, 8, 10}) = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}, ‘b’)) = ε-closure({5, 12}) = {1, 2, 4, 5, 6, 7, 12, 13}ε-closure(move({1, 2, 4, 5, 6, 7, 12, 13}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({1, 2, 4, 5, 6, 7, 12, 13}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}NFA states DFA state a B{0, 1, 2, 4, 7} A B C{1, 2, 3, 4, 6, 7, 8, 9, 11} B D E {1, 2, 4, 5, 6, 7} C B C {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13} D D E {1, 2, 4, 5, 6, 7, 12, 13} E B CMinimized DFA:3.Consider the following CFG (9 points):S +SS | -SS | aand the string +a-aa.a)Give a leftmost derivation for the string (3 points).S => +SS => +aS => +a-SS => +a-aS => +a-aab)Give a rightmost derivation for the string (3 points).S => +SS => +S-SS => +S-Sa => +S-aa => +a-aac)Give a parse tree for the string (3 points).4.Write CFGs for the following languages (8 points):a)L={a n b m c n | m ≥ 0, n ≥ 1} (4 points).S → aSc | aAcA → bA | εb)All strings over {a, b} that begin and end with the same letter (4 points).S → aAa | bAb | a | bA → aA | bA | ε5.Consider the following CFGs (18 points):S → i(E)t(E)X | EX → e(E) | εE → aY | bYY → c(E) | εwhere i, t, e, a, b, c, ( and ) are terminals.a)Compute the FIRST and FOLLOW sets for all non-terminals (8 points).b)Construct an LL(1) parsing table for the grammar (8 points).c)Is this grammar LL(1)? Why? (2 points)Yes, because no conflicts can be found in the LL(1) parsing table.6.Consider the following CFG (12 points):S→aAD | aBe | bBS | bAeA→gB→gD→d |εaugment the grammar and construct the LR(1) sets of items for the augmented grammar.首先拓广G[S]为G[Z]:0:Z → S 1:S → aAD 2:S → aBe3:S → bBS 4:S → bAe 5:A → g6:B → g 7:D → d 8:D →ε构造G[Z]的LR(1)项目族为:7.The following grammar generates binary strings and their complements (10 points).F →B| BB →B0| B1| 0| 1The value of a (non-negated) string is just the decimal value of the binary number the string represents; the value of a negated string is the decimal value of the string with 1’s replaced by 0’s and 0’s replaced by 1’s. For example, the value of 010 is 2 and ¬010 is 5. Design a syntax-directed definition (SDD) for the above grammar such that the non-terminal F has an attribute F.val which keeps the value of an inputstring generated by F. Please do NOT modify the grammar.8.Consider the following basic block (10 points):a)Construct the DAG of the above basic block (5 points).b)Assume that only G, L and M will be used after the basic block. Give theoptimized three-address statement sequence (5 points).1) t2 = A * C2) t3 = A + C3) t4 = t2– t34) G = 3 * t45) L = 15 + t46) M = L9.Consider the following fragment of three-address instructions (8 points):(1) b := 1(2) b := 2(3) if w <= x goto B(4) e := b(5) goto B(6) A: goto D(7) B: c := 3(8) b := 4(9) c := 6(10) D: if y <= z goto E(11) goto End(12) E: g := g + 1(13) h: = 8(14) goto A(15) End: h := 9Please partition these three-address instructions into basic blocks, and draw the control flow graph. You may draw the resulting graph directly, but you must markeach node by number n~m indicating that the corresponding basic block consists of instructions n through m, inclusive.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中山大学本科生期末考试考试科目:《编译原理》(A卷答案)学年学期:2016学年第一学期姓名:学院/系:数据科学与计算机学院/软件工程学号:考试方式:闭卷年级专业:考试时长:120分钟班别:第八条:“考试作弊者,不授予学士学位。
”------------以下为试题区域,共九道大题,总分100分,考生请在答题纸上作答------------1.Write regular expressions for the following languages (8 points).a)All strings over {0, 1} that do not contain consecutive zeros (4 points).(0?1)*0?b)All strings representing a nonnegative binary number (without leading zeros)which is a multiple of 8 (4 points).0 | 1(1|0)*0002.Consider the following regular expression (17 points):( a | b ) * a ( a | b )a)Based on the Thompson Algorithm, construct the NFA from the above regularexpression (8 points).b)Convert the NFA into a DFA with minimum number of states (9 points).ε-closure({0}) = {0, 1, 2, 4, 7}ε-closure(move({0, 1, 2, 4, 7}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({0, 1, 2, 4, 7}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 11}, ‘a’)) = ε-closure({3, 8, 10}) = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 11}, ‘b’)) = ε-closure({5, 12}) = {1, 2, 4, 5, 6, 7, 12, 13}ε-closure(move({1, 2, 4, 5, 6, 7}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({1, 2, 4, 5, 6, 7}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}, ‘a’)) = ε-closure({3, 8, 10}) = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}, ‘b’)) = ε-closure({5, 12}) = {1, 2, 4, 5, 6, 7, 12, 13}ε-closure(move({1, 2, 4, 5, 6, 7, 12, 13}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({1, 2, 4, 5, 6, 7, 12, 13}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}Minimized DFA:3.Consider the following CFG (9 points):S → +SS | -SS | aand the string +a-aa.a)Give a leftmost derivation for the string (3 points).S => +SS => +aS => +a-SS => +a-aS => +a-aab)Give a rightmost derivation for the string (3 points).S => +SS => +S-SS => +S-Sa => +S-aa => +a-aac)Give a parse tree for the string (3 points).4.Write CFGs for the following languages (8 points):a)L={a n b m c n | m ≥ 0, n ≥ 1} (4 points).S → aSc | aAcA → bA | εb)All strings over {a, b} that begin and end with the same letter (4 points).S → aAa | bAb | a | bA → aA | bA | ε5.Consider the following CFGs (18 points):S → i(E)t(E)X | EX → e(E) | εE → aY | bYY→ c(E) | εwhere i, t, e, a, b, c, ( and ) are terminals.a)Compute the FIRST and FOLLOW sets for all non-terminals (8 points).b)Construct an LL(1) parsing table for the grammar (8 points).c)Is this grammar LL(1)? Why? (2 points)Y es, because no conflicts can be found in the LL(1) parsing table.6.Consider the following CFG (12 points):S→aAD | aBe | bBS | bAeA→gB→gD→d |εaugment the grammar and construct the LR(1) sets of items for the augmented grammar.首先拓广G[S]为G[Z]:0:Z → S 1:S → aAD 2:S → aBe3:S → bBS 4:S → bAe 5:A → g6:B → g 7:D → d 8:D →ε构造G[Z]的LR(1)项目族为:7.The following grammar generates binary strings and their complements (10 points).F →B| BB →B0| B1| 0| 1The value of a (non-negated) string is just the decimal value of the binary number the string represents; the value of a negated string is the decimal value of the string with 1’s replaced by 0’s and 0’s replaced by 1’s. For example, the value of 010 is 2 and ¬010 is 5. Design a syntax-directed definition (SDD) for the above grammar such that the non-terminal F has an attribute F.val which keeps the value of an inputstring generated by F. Please do NOT modify the grammar.8.Consider the following basic block (10 points):a)Construct the DAG of the above basic block (5 points).b)Assume that only G, L and M will be used after the basic block. Give theoptimized three-address statement sequence (5 points).9.Consider the following fragment of three-address instructions (8 points):(1) b := 1(2) b := 2(3) if w <= x goto B(4) e := b(5) goto B(6) A: goto D(7) B: c := 3(8) b := 4(9) c := 6(10) D: if y <= z goto E(11) goto End(12) E: g := g + 1(13) h: = 8(14) goto A(15) End: h := 9Please partition these three-address instructions into basic blocks, and draw the control flow graph. Y ou may draw the resulting graph directly, but you must markeach node by number n~m indicating that the corresponding basic block consists of instructions n through m, inclusive.。