编译原理试题及答案(期末复习版).pdf
编译原理期末考试试题及答案
![编译原理期末考试试题及答案](https://img.taocdn.com/s3/m/0ae6788029ea81c758f5f61fb7360b4c2e3f2ae9.png)
编译原理期末考试试题及答案一、选择题(每题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. 静态作用域规则是指变量的作用域在编译时确定,而动态作用域规则是指变量的作用域在运行时确定。
编译原理试题及答案
![编译原理试题及答案](https://img.taocdn.com/s3/m/5b538114842458fb770bf78a6529647d272834b0.png)
编译原理试题及答案一、选择题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. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。
编译原理期末复习题
![编译原理期末复习题](https://img.taocdn.com/s3/m/723db422aa00b52acec7cad2.png)
编译原理期末复习题(包含上一份N多答案)(总28页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--编译原理复习题一、填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。
2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。
3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。
4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。
5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。
6、LL(k)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“k”的含义是(向输入串中查看K个输入符号)。
7、LL(1)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。
8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。
9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。
10、LR(0)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。
11、LR(1)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
12、SLR(1)分析法的名字中,“S”的含义是(简单的),“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
(完整版)编译原理复习题及答案
![(完整版)编译原理复习题及答案](https://img.taocdn.com/s3/m/e489e581cc7931b764ce1584.png)
编译原理复习题及答案一、选择题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.PASCAL12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。
A. 编译器B. 汇编器C. 解释器D. 预处理器13.用高级语言编写的程序经编译后产生的程序叫(B)A.源程序 B.目标程序C.连接程序D.解释程序14.(C)不是编译程序的组成部分。
A.词法分析程序B.代码生成程序C.设备管理程序D.语法分析程序15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。
A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器16.编译程序绝大多数时间花在(D)上。
编译原理期末考试习题及答案
![编译原理期末考试习题及答案](https://img.taocdn.com/s3/m/12894dbcdc3383c4bb4cf7ec4afe04a1b071b0af.png)
编译原理期末考试习题及答案⼀、填空题|(每题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分)(5分)六. 已知⽂法G(S) :(1) S → ^ | a | (T)(2) T → T,S | S试:(1)消除⽂法的左递归;(4分)(2)构造相应的first 和 follow 集合。
(6分)答:(1)消除⽂法的左递归后⽂法 G’(S)为:(1) S → ^ | a | (T)(2) T → ST’ | S(3) T ’ → ,ST ’ |ε(4分)七. 已知⽂法 G(S) :(1) S → SiA | A(2) A → A+B | B(3) B → A* | (试构造⾮终⽌符的firstVT 和lastVT 集合。
编译原理期末考试题目及答案
![编译原理期末考试题目及答案](https://img.taocdn.com/s3/m/74ed1a324028915f814dc2cd.png)
一、挖空题(每空2分,共20分)之阳早格格创做1.编译步调最先要辨别出源步调中每个单词汇,而后再分解每个句子并翻译其意思.2.编译器时常使用的语法分解要领有自底进与战自顶背下二种.3.常常把编译历程分为分解前端与概括后端二大阶段.词汇法、语法战语义分解是对付源步调的分解,中间代码死成、代码劣化与目标代码的死成则是对付源步调的概括.4.步调安排谈话的死长戴去了日渐多变的运止时保存管制规划,主要分为二大类,即固态保存调配规划战动背保存调配规划.5.对付编译步调而止,输进数据是源步调,输出截止是目标步调.1.估计机真止用下档谈话编写的步调主要有二种道路:阐明战编译.2.扫描器是词汇法分解器,它担当输进的源步调,对付源步调举止词汇法分解并辨别出一个个单词汇标记,其输出截止是单词汇标记,供语法分解器使用. 3.自下而上分解法采与移进、归约、过失处理、担当等四种支配.4.一个LL(1)分解步调需要用到一弛分解表战标记栈.5.后缀式abc-/所代表的表白式是a/(b-c).二、单项采用题(每小题2分,共20分)1.词汇法分解器的输出截止是__C.A.单词汇的种别编码B.单词汇正在标记表中的位子C.单词汇的种别编码战自己值D.单词汇自己值2.正规式 M 1 战 M 2 等价是指__C_.A. M1战M2的状态数相等 B. M1战M2的有背边条数相等C.M1战M2所识别的谈话集相等D.M1战M2状态数战有背边条数相等3.文法G:S→xSx|y所识别的谈话是_C____.A. xyx B. (xyx)* C.xnyxn(n≥0) D. x*yx*4.如果文法G是无二义的,则它的所有句子α_A____.A.最左推导战最左推导对付应的语法树肯定相共B.最左推导战最左推导对付应的语法树大概分歧C.最左推导战最左推导肯定相共D.大概存留二个分歧的最左推导,但是它们对付应的语法树相共5.构制编译步调应掌握____D__.A.源步调B.目心号止 C.编译要领 D.以上三项皆是6.四元式之间的通联是通过__B___真止的.A.指示器B.临时变量C.标记表 D.步调变量7.表白式(┐A∨B)∧(C∨D)的顺波兰表示为__B___.A.┐AB∨∧CD∨B.A┐B∨CD∨∧ C.AB∨┐CD∨∧ D.A┐B∨∧CD∨8. 劣化可死成__D___的目标代码.A.运止时间较短 B.占用保存空间较小C.运止时间短但是占用内存空间大 D.运止时间短且占用保存空间小9.下列___C___劣化要领没有是针对付循环劣化举止的.A. 强度削强B.简略归纳变量C.简略多余运算D.代码中提10.编译步调使用_B_辨别标记符的效用域.A. 道明标记符的历程大概函数名B.道明标记符的历程大概函数的固态条理C.道明标记符的历程大概函数的动背条理 D. 标记符的止号三、推断题(对付的挨√,错的挨×,每小题1分,共10分)2.一个有限状态自效果中,有且仅有一个唯一的末态.x3.一个算符劣先文法的每个非末结标记间皆也大概存留劣先闭系.X4.语法分解时必须先与消文法中的左递归 .X6.顺波兰表示法表示表白式时无须使用括号.R9.二个正规集相等的需要条件是他们对付应的正规式等价. X1.编译步调是对付下档谈话步调的编译真止.X2.一个有限状态自效果中,有且仅有一个唯一的初初态.R3.一个算符劣先文法的每个非末结标记间皆没有存留劣先闭系.R4.LL(1)语法分解时必须先与消文法中的左递归 . R5.LR分解法正在自左至左扫描输进串时便能创制过失,但是没有克没有及准确天指出堕落天面. R6.顺波兰表示法表示表白式时根据表白式会使用括号. X7.固态数组的保存空间不妨正在编译时决定.X8.举止代码劣化时应着沉思量循环的代码劣化,那对付普及目标代码的效用将起更大效用.X9.二个正规集相等的需要条件是他们爆收的标记串是相共的. R10.一个语义子步调形貌了一个文法所对付应的翻译处事. X1.什么是S-属性文法?什么是L-属性文法?它们之间有什么闭系?S-属性文法是只含有概括属性的属性文法. (2分)L-属性文法央供对付于每个爆收式A X1X2…Xn,其每个语义准则中的每个属性大概者是概括属性,大概者是Xj的一个继启属性,且该属性仅依好于:(1)爆收式Xj的左边标记X1,X2…Xj-1的属性;(2)A的继启属性. (2分)S-属性文法是L-属性文法的惯例.(1分)2.什么是LL(1)分解器2.什么是LR(0)分解器所谓LR(0)分解,是指从左至左扫描战自底进与的语法分解,且正在分解的每一步,只须根据分解栈目前已移进战归约出的局部文法标记,并至多再背前查看0个输进标记,便能决定相对付于某一爆收式左部标记的句柄是可已正在分解栈的顶部产死,进而也便不妨决定目前所应采与的分解动做(是移进仍旧按某一爆收式举止归约等).五、概括题(共40分)1.(10分)对付于文法 G[S] :S → 1A | 0B | ε A → 0S | 1AA B → 1S | 0BB⑴ (3 分 ) 请写出三个闭于 G[S] 的句子;⑵ (4 分 ) 标记串 11A0S 是可为 G [S] 的句型?试道明您的论断.⑶ (3 分 ) 试绘出 001B 闭于 G [S] 的语法树.问:(1)三个 0 战 1 数量相等的串(每个1分)(2) S => 1A => 11AA => 11A 0S(3)2.(10分)设有谈话 L={ α | α∈ {0,1} + ,且α没有以 0 启头,但是以 00 末端 } .3分)试写出形貌 L 的正规表白式;⑵(7分)构制辨别 L 的 DFA (央供给出仔细历程,并绘出构制历程中的NFA 、 DFA 的状态变更图,以及最小DFA的状态变更图 ) .问:( 1 )(3分)正规表白式: 1(0|1) * 00( 2 )(7分)第一步(3分):将正规表白式变更为 NFA第二步(2分):将 NFA 决定化为 DFA :(1分)状态输进I 0 I 1 t 0 1[S] —[A,D,B] q 0 —q 1[A,D,B] [D,B,C] [D,B] q 1 q 2 q 3[D,B,C] [D,B,C,Z] [D,B] q 2 q 4 q 3[D,B] [D,B,C] [D,B] q 3 q 2 q 3[D,B,C,Z] [D,B,C,Z] [D,B] q 4 q 4 q 3DFA 的状态变更图(1分)第三步(2分):将DFA 最小化:(1分)将状态区分末态与非末态二个集中:A={q0,q1,q2,q3},E={q4}根据A、E集中的情况,对付A集中举止区分状态输进I 0 I 1q0—Aq1AAq2EAq3AA将状态集A区分为二个集中:A={q0,q1,q3},B={2}根据A、B集中的情况,对付A集中举止区分状态输进I 0 I 1q0—Aq1BAq3BA将状态集A区分为二个集中:A={q0},C={q1,q3}根据A、C集中的情况,对付C集中举止区分状态输进I 0 I 1q1BAq3BA最小DFA 的状态变更图(1分)3.(20分)给定文法 G[E] :E → E+T | TT → T*F | FF → (E) | i该文法是 LL(1) 文法吗?(央供给出仔细历程,如果是LL(1),给出分解表)问:(1)该文法没有是LL(1)文法,果为有左递归,与消左递归可赢得一个LL(1)文法(2分)(2)与消左递归,得新文法 (3分)E → TE’E’→ +TE’| εT → FT’T’→ *FT’ |εF → (E) | i(3)供爆收式左部的First集 (2.5分)First(TE’) = First(T)= First(F)={(,i}First(+TE’) = {+}First(FT’) = First(F)={(,i}First(*FT’) = {*}First((E)) = {(}First(i) = {i}(4)供所有非末结符的Follow集(2.5分)Follow(E) = {$,)}Follow(E’) = Follow(E) = {$,)}Follow(T) = First(E’)∪Follow(E)={+} ∪{$,)}={$,+,)} Follow(T’) = Follow(T) ={$,*,)}Follow(F) = First(T’)∪Follow(T)∪Follow(T’)= {$,*,)} (5)供所有爆收式的Select集 (2.5分)Select(E → TE’)=First(TE’)= {(,i}Select(E’→ +TE’)=First(+TE’)= {+}Select(E’→ε)= Follow(E’) = {$,)}Select(T → FT’)=First(FT’)= {(,i}Select(T’→ *FT’)=First(*FT’)= {*}Select (T ’→ε)= Follow(T ’) ={$,+,)} Select (F → (E))=First((E))= {(} Select (F → i )=First(i)= {i}(6)对付相共左部的所有Select 即供接集(2.5分) Select (E ’→ +TE ’)∩Select (E ’→ε)=Φ Select (T ’→ *FT ’)∩Select (T ’→ε)=Φ Select (F → (E))∩Select (F → i )=Φ所以,变革后的文法是LL (1)文法,其分解表如下 (7) LL(1) 分解表( 5 分)V NV T+ * i ( )$E E → TE ’ E → TE ’ E ’ E ’→ +TE ’ E ’→ε E ’→εT T → FT ’ T → FT ’ T ’ T ’→ε T ’→ *FT ’ T ’→ε T ’→εF F → (E) F → i1.(10分)对付于文法G :SaSbS|aS|d道明该文法是二义性文法.问:一个文法,如果存留某个句子有没有只一棵语法分解树与之对付应,那么称那个文法是二义性文法.(5分)句子aadbd 有二棵语法树(5分,划一棵树给3分).如下图:(6分)(1) (2)由此可知,SaSbS|aS|d 定义的文法是二义性文法.3.(20分)给定一个简朴的算术表白式文法 G[E] : E → E+T | T T → T*F | F F → (E) | i该文法是 SLR(1) 文法吗?(央供给出仔细历程,如果是SLR 文法,给出分解表)dSSa bSSad SaSSabSdd问:(1) 该文法的拓广文法是: (2分)E’→E (1)E → E+T (2)E → T (3)T → T*F (4)T → F (5)F → (E) (6)F → i (7)(2)相映的LR(0)的DFA:(10分)(3)辩论与办理 (3分)① I1状态中有移进—规约辩论Follow(E’)={ $ } 没有含{ + }可办理移进—规约辩论② I2状态中有移进—规约辩论Follow(E)={ +,),$ } 没有含{ * }可办理移进—规约辩论③ I8状态中有移进—规约辩论Follow(E)={ +,),$ } 没有含{ * }可办理移进—规约辩论(4) SLR分解表 (5分)二、单项采用题(每小题2分,共20分)1.谈话是____C_A.末结符与非末结符的标记串的集中 B.非末结符标记串的集中 C.末结符标记串的集中 D.爆收式的集中2.编译步调分二阶段处事,前阶段完毕的处事是__C___A.词汇法分解、语法分解战代码劣化 B.代码死成、代码劣化战词汇法分解C.词汇法分解、语法分解、语义分解战中间代码死成D.词汇法分解、语法分解战代码劣化3.一个句型中称为句柄的是该句型的最左CA.句型 B.短语 C.间接短语 D.最左间接短语4.自效果识别的谈话是 DA.0型谈话 B.1型谈话 C.2型谈话 D.3型谈话5.自效果所完毕的任务是从字符串形式的源步调中辨别出一个个具备独力含意的最小语法单位即 BA.字符 B.单词汇 C.句子 D.句型6.对付应Chomsky四种文法的四种谈话之间的闭系是BA.L0L1L2L3 B.L3L2L1L0C.L3=L2L1L0 D.L0L1L2=L37.词汇法分解的任务是AA.辨别单词汇 B.分解句子的含意 C.辨别句子 D.死成目标代码8.时常使用的中间代码形式没有含DA.三元式 B.四元式 C.顺波兰式 D.语法树9.代码劣化的手段是CA.节省时间 B.节省空间 C.节省时间战空间 D.把编译步调举止等价接换10.代码死成阶段的主要任务是CA.把下档谈话翻译成汇编谈话 B.把下档谈话翻译成呆板谈话C.把中间代码变更成依好简曲呆板的目标代码D.把汇编谈话翻译成呆板谈话。
编译原理期末试题(含答案+大题集+重要知识点)
![编译原理期末试题(含答案+大题集+重要知识点)](https://img.taocdn.com/s3/m/1b333cbb65ce050876321353.png)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个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.构造编译程序应掌握______。
编译原理期末考试题(含答案)
![编译原理期末考试题(含答案)](https://img.taocdn.com/s3/m/199a76bbf605cc1755270722192e453610665bde.png)
编译原理期末考试题(含答案)1. 请简要解释编译原理的定义和作用。
编译原理是研究将高级语言源程序转化为等价的目标程序的一门学科。
它的主要作用是将高级语言的源代码翻译为计算机能够执行的目标代码,从而实现程序的运行。
2. 请列举并解释编译过程的各个阶段。
- 词法分析:将源代码划分为一个个词法单元,如变量、关键字等。
- 语法分析:根据语法规则,将词法单元组合为语法树,检查语法结构是否正确。
- 语义分析:对语法树进行语义检查,如类型匹配、作用域等。
- 中间代码生成:将语法树转化为中间代码表示形式,方便后续优化。
- 代码优化:对中间代码进行优化,提高程序执行效率。
- 目标代码生成:将优化后的中间代码转化为目标机器代码。
3. 请解释符号表在编译过程中的作用。
符号表是编译器在编译过程中用来管理变量、函数、类型等标识符的数据结构。
它的主要作用是记录标识符的相应属性,如类型、作用域等,以便在后续的语法、语义分析以及代码生成过程中进行查找、检查等操作。
4. 请简要解释LL(1)文法的定义和特点。
LL(1)文法是一种上下文无关文法,它具有以下特点:- 对于给定的非终结符,它的产生式右部的首符号不相同。
- 对于给定的产生式右部的首符号,它的产生式右部不相同。
- 通过向前查看一个符号,就能确定所选用的产生式。
5. 请简要解释词法分析器的作用和实现方式。
词法分析器的主要作用是将源代码分解为一个个词法单元,如变量名、关键字等。
它的实现方式一般采用有限自动机,通过定义正则表达式描述各个词法单元的模式,然后根据模式匹配的结果生成相应的词法单元。
答案仅为参考,请以实际考试为准。
编译原理期末复习题含答案
![编译原理期末复习题含答案](https://img.taocdn.com/s3/m/e447800ef705cc1754270982.png)
第八节习题-、单项选择题1、 __________________________________________________ 将编译程序分成若干个“遍”是为了_____________________________________a .提高程序的执行效率b •使程序的结构更加清晰c .利用有限的机器内存并提高机器的执行效率d •利用有限的机器内存但降低了机器的执行效率2、构造编译程序应掌握。
a •源程序c .编译方法3、变量应当_________ 。
a .持有左值c .既持有左值又持有右值4、编译程序绝大多数时间花在a .出错处理c •目标代码生成5、_______ 不可能是目标代码。
a •汇编指令代码c •绝对指令代码b.目标语言d.以上三项都是b.持有右值d.既不持有左值也不持有右值 _______ 上。
b.词法分析d.管理表格b.可重定位指令代码d.中间代码6、使用可以定义一个程序的意义。
a .语义规则 b.词法规则c .产生规则 d.词法规则7、词法分析器的输入是___________ 。
a .单词符号串 b.源程序c .语法单位 d. 目标程序8、 中间代码生成时所遵循的是 - _______ 。
b.词法规则 d.等价变换规则a .语法规则 c .语义规则c .机器语言的执行d.高级语言的翻译10、语法分析应遵循d.等价变换规则 解答1、 将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选 b 。
2、 构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选 d 。
3、 对编译而言,变量既持有左值又持有右值,故选 c 。
4、 编译程序打交道最多的就是各种表格,因此选 do5、 目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码 3种,因此不是目标代码 的只能选do6、 词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规 则,并且语义规则可以定义一个程序的意义。
编译原理期末复习题(含答案)
![编译原理期末复习题(含答案)](https://img.taocdn.com/s3/m/1c313db651e79b8968022673.png)
第八节习题一、单项选择题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、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。
3、对编译而言,变量既持有左值又持有右值,故选c。
4、编译程序打交道最多的就是各种表格,因此选d。
5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。
6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。
因此选a。
7、b 8、c 9、d 10、c二、多项选择题1、编译程序各阶段的工作都涉及到。
a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成解答1.b、c 2. a、b、c、e三、填空题1、解释程序和编译程序的区别在于。
编译原理期末试题及答案
![编译原理期末试题及答案](https://img.taocdn.com/s3/m/b8478d4f4531b90d6c85ec3a87c24028915f85ea.png)
编译原理期末试题及答案一、选择题(每题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. 语法分析阶段,如果一个文法是左递归的,编译器需要使用()技术来消除左递归。
编译原理期末考试复习题(含答案)
![编译原理期末考试复习题(含答案)](https://img.taocdn.com/s3/m/c019fe5002d276a200292efe.png)
编译原理期末考试复习题(含答案)一、选择题1.代码生成阶段的主要任务是(C)。
A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言2.文法G 所描述的语言是( C )的集合。
A.文法G 的字母表V 中所有符号组成的符号串B.文法G 的字母表V 的闭包V* 中的所有符号串C.由文法的开始符号推出的所有终结符串D.由文法的开始符号推出的所有符号串3.语言是(C)。
A.终结符与非终结符的符号串的集合B.非终结符符号串的集合C.终结符符号串的集合D.产生式的集合4.常用的中间代码形式不含(D)。
A.三元式B.四元式C.逆波兰式D.语法树5.四元式之间的联系是通过(B)实现的。
A.指示器B.临时变量C.符号表D.程序变量6.词法分析器的输出结果是( C )。
A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为(B)。
A. ┐AB∨∧CD∨B.A┐B∨CD∨∧C.AB∨┐CD∨∧ D.A┐B∨∧CD∨8.下推自动机识别的语言是( C )A.0型语言 B.1型语言C.2型语言 D.3型语言9. 在规范归约中,用(B)来刻画可归约串。
A.直接短语 B.句柄C.最左素短语 D.素短语10.词法分析器用于识别( C)。
A.字符串 B.语句 C.单词 D.标识符11.一个句型中称为句柄的是该句型的最左(D)A.非终结符号 B.短语 C.句子 D.直接短语12.文法 G[E] :E→T∣E+TT→F∣T * FF→a∣(E)该文法句型 E + F * (E + T) 的简单短语是下列符号串中的(B)。
①(E+T)②E+T ③F ④ F * (E+T)A.①和③B.②和③C.③和④D.③13.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括(C)。
编译原理期末考试试卷及答案
![编译原理期末考试试卷及答案](https://img.taocdn.com/s3/m/3422d5e05901020206409ca1.png)
规范规约是最( )规约。
编译程序的工作过程一般划分为 个阶段:词法分析、( ) 、语义分析与中间代码生成,代码优化及( ) 。
另外还有( )和出错处理。
.表达式⌧⍓✉☎♋♌✆的后缀式为 ( ) 。
.文法符号的属性有综合属性和 ( )。
.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组♋☯某个元素♋☯♓, 的地址计算公式为( )。
.局部优化是局限于一个( )范围内的一种优化。
二. 选择题( 为单选题, 为多选题,每问 分,共 分) 一个上下文无关文法☝包括四个组成部分:一组终结符,一组非终结符,一个( ),以及一组( )。
✌. 字符串 . 产生式 . 开始符号 . 文法程序的基本块是指( )。
✌. 一个子程序 . 一个仅有一个入口和一个出口的语句. 一个没有嵌套的程序段 . 一组顺序执行的程序段,仅有一个入口和一个出口 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。
✌. 自左向右 . 自顶向下 . 自底向上 . 自右向左.在通常的语法分析方法中,( )特别适用于表达式的分析。
✌. 算符优先分析法 . ☹分析法. 递归下降分析法 . ☹☹( )分析法.经过编译所得到的目标程序是( )。
✌. 四元式序列 . 间接三元式序列. 二元式序列 . 机器语言程序或汇编语言程序. 一个文法所描述的语言是( );描述一个语言的文法是( )。
✌. 唯一的 . 不唯一的 . 可能唯一,也可能不唯一. 如果在文法☝中存在一个句子,当其满足下列条件( )之一时,则称该文法是二义文法。
✌. 其最左推导和最右推导相同 . 该句子有两个不同的最左推导. 该句子有两个不同的最右推导 . 该句子有两棵不同的语法树☜. 该句子对应的语法树唯一. 下面( )语法制导翻译中,采用拉链—回填技术。
✌ 赋值语句 布尔表达式的计算 条件语句 循环语句. (共 分)已知文法☝☯☜☜→☜❆☜(☜) ♓❆→✉( )将文法☝改造成☹☹( )文法;( 分)( )构造文法☝中每个非终结符的☞✋❆集合及☞☹☹集合;( 分)( )构造☹☹( )分析表。
编译原理期末试题及答案
![编译原理期末试题及答案](https://img.taocdn.com/s3/m/3f5c9222b9f3f90f77c61b56.png)
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集合;⑶构造预测分析表。
编译原理试题及答案(期末复习版).pdf资料
![编译原理试题及答案(期末复习版).pdf资料](https://img.taocdn.com/s3/m/077c5c9e0912a216147929bd.png)
词法分析器输出的结果是单词的种别编码和自身值,选 C。
正规式 M1 和 M2 所识别的语言集相等,故选 C。
选 c。
选 b。
选 C
堆式动态分配申请和释放存储空间不一定遵守先请后放和后请先放的原则,故选 d
. 【解答】
1.2 所示。
语法分析器:在词法分析
“程序”。 中间代码生成器:按照
H→M 得:LASTVT(M)cLASTVT(H),即 LASTVT(H)={;,d,b}
H,有#H#存在,即有#=#,#<FIRSTVT(H),LASTVT(H)>#,也即#
#<d. #<a,;>#,d>#, b>#。
P→…ab…,或 P→…aQb…,有 a=b,由 M→a|b 得:a=b;
优化:对中间代码
目标代码生成器:把中间代码翻译
译
出错处理程序对出现在源程序中的错误进行处理。此
. 【解答】
E 的短语有 FF^^*;相对于 T 的短语有
相对于 F 的短语有 F^;F^^;简单短语有 F;F^;句柄为 F.
. 【解答】
DFA 如图 2.66 所示。
.
和 M2 所识别的语言集相等 d. Ml 和 M2 状态数和有向弧条数相等
.中间代码生成时所依据的是—c。
.语法规则 b.词法规则 c.语义规则 d.等价变换规则
.后缀式 ab+cd+/可用表达式__b_来表示。
. a+b/c+d b. (a+b)/(c+d) c. a+b/(c+d) d. a+b+c/d 9.程序所需的
求出流图中的回边,
编译原理考试题及答案
![编译原理考试题及答案](https://img.taocdn.com/s3/m/4cf3c3108f9951e79b89680203d8ce2f006665b7.png)
编译原理考试题及答案一、选择题(每题2分,共10分)1. 在编译原理中,词法分析器的主要任务是什么?A. 将源代码转换为中间代码B. 识别源代码中的词法单元C. 进行语法分析D. 优化代码答案:B2. 下列哪个选项不是编译器的组成部分?A. 词法分析器B. 语法分析器C. 运行时环境D. 语义分析器答案:C3. 编译器的哪个阶段负责检查变量是否已经声明?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C4. 在编译原理中,哪些技术常用于错误恢复?A. 预测分析表和LR分析B. 递归下降分析和LR分析C. 预测分析表和递归下降分析D. 预测分析表和错误恢复算法答案:D5. 编译器中用于优化代码的阶段是哪一个?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:D二、填空题(每题2分,共10分)1. 编译器的前端包括词法分析、语法分析和________。
答案:语义分析2. 在编译过程中,________分析器负责将源代码的逻辑结构转换为一种内部表示形式。
答案:语法3. 编译器的后端包括________、寄存器分配和代码生成。
答案:中间代码生成4. 编译器中的________分析用于检查程序中的类型错误。
答案:语义5. 编译器的________阶段负责将高级语言代码转换为目标机器代码。
答案:代码生成三、简答题(每题10分,共20分)1. 简述编译器的主要功能。
答案:编译器的主要功能包括将高级语言编写的源代码转换成目标机器可以执行的机器代码,同时进行错误检测、代码优化等。
它通常包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。
2. 描述编译过程中的语法分析阶段的主要任务。
答案:语法分析阶段的主要任务是检查源代码是否符合语言的语法规则,构建抽象语法树(AST),并进行语法制导的语义分析。
这一阶段使用诸如自顶向下的递归下降分析、自底向上的移进-规约分析等技术来识别语言结构,并为后续的语义分析和代码生成打下基础。
编译原理期末试题(含答案+大题集+重要知识点)
![编译原理期末试题(含答案+大题集+重要知识点)](https://img.taocdn.com/s3/m/7d9f66f2bceb19e8b8f6babb.png)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个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.构造编译程序应掌握______。
(完整版)编译原理期末试题(8套含答案+大题集)
![(完整版)编译原理期末试题(8套含答案+大题集)](https://img.taocdn.com/s3/m/8bcea5b7a5e9856a57126087.png)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个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.构造编译程序应掌握______。
编译原理期末试题及答案
![编译原理期末试题及答案](https://img.taocdn.com/s3/m/fcac5302bb68a98271fefa5c.png)
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集合;⑶构造预测分析表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<编译原理>历年试题及答案一.(每项选择 2 分,共 20 分)选择题 1.将编译程序分成若干个“遍”是为了_b__。
a.提高程序的执行效率 b.使程序的结构更加清晰 c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率2.构造编译程序应掌握__d__。
a.源程序b.目标语言c.编译方法 d.以上三项都是 3.变量应当 c_。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值 4.编译程序绝大多数时间花在_d___上。
a.出错处理b.词法分析c.目标代码生成 d.管理表格 5.词法分析器的输出结果是_c___。
a.单词的种别编码b.单词在符号表中的位置c.单词的种别编码和自身值 d.单词自身值6.正规式 MI 和 M2 等价是指__c__。
a. MI 和 M2 的状态数相等b.Ml 和 M2 的有向弧条数相等。
C.M1 和 M2 所识别的语言集相等 d. Ml 和 M2 状态数和有向弧条数相等7.中间代码生成时所依据的是—c。
a.语法规则 b.词法规则c.语义规则 d.等价变换规则8.后缀式 ab+cd+/可用表达式__b_来表示。
a. a+b/c+d b. (a+b)/(c+d) c. a+b/(c+d) d. a+b+c/d 9.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。
a.动态存储b.栈式存储c.静态存储d.堆式存储 10.堆式动态分配申请和释放存储空间遵守___d_____原则。
a.先请先放b.先请后放c.后请先放d.任意二(每小题 10 分,共 80 分)简答题 1.画出编译程序的总体结构图,简述各部分的主要功能。
2. 已知文法 G[E]:E→ET+|T T→TF* | F F→F^ | a试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄.3.为正规式(a|b) *a(a|b)构造一个确定的有限自动机。
4.设文法 G(S):S→(L)|a S|aL→L,S|S(1) 消除左递归和回溯;(2)计算每个非终结符的 FIRST 和 FOLLOW;(3)构造预测分析表。
5.已知文法A->aAd| aAb|ε判断该文法是否 SLR(1)文法,若是构造相应分析表,并对输入串 ab#给出分析过程。
6.构造算符文法 G[H]的算符优先关系(含#)。
G[H]:H→H;M|MM→d|aHb7.已构造出文法 G(S)(1)S BB(2)B aB (3)B b1)。
给出 DFA 图2).给出 LR 分析表3).假定输入串为 abaab,请给出 LR 分析过程(即状态,符号,输入串的变化过程)。
8.将下面的语句翻译成四元式序列:while A<C∧B<D doif A=1 then C:=C+lelse while A≤ Ddo A:=A+2;9.对下面的流图,(1)求出流图中各结点 N 的必经结点集 D(n),(2)求出流图中的回边,(3)求出流图中的循环。
参考答案一.单项选择题1.将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选 b。
2..构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选 d。
3.对编译而言,变量既持有左值又持有右值,故选 c。
4.编译程序打交道最多的就是各种表格,因此选 d。
5.词法分析器输出的结果是单词的种别编码和自身值,选 C。
6.正规式 M1 和 M2 所识别的语言集相等,故选 C。
7.选 c。
8.选 b。
9.选 C10.堆式动态分配申请和释放存储空间不一定遵守先请后放和后请先放的原则,故选 d二.简答题1.【解答】编译程序的总体结构图如图 1.2 所示。
词法分析器:输入源程序,进行词法分析,输出单词符号。
语法分析器:在词法分析的基础上,根据语言的语法规则(文法规则)把单词符号串分解成各类语法单位,并判断输入串是否构成语法上正确的“程序”。
中间代码生成器:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码,比如说四元式。
优化:对中间代码进行优化处理。
目标代码生成器:把中间代码翻译成目标语言程序。
表格管理模块保存一系列的表格,登记源程序的各类信息和编译各阶段的进展情况。
编译程序各阶段所产生的中间结果都记录在表格中,所需信息多数都需从表格中获取,整个编译过程都在不断地和表格打交道。
出错处理程序对出现在源程序中的错误进行处理。
此外,编译的各阶段都可能出现错误,出错处理程序对发现的错误都及时进行处理。
2.【解答】该句型对应的语法树如下:该句型相对于 E 的短语有 FF^^*;相对于 T 的短语有 FF^^*,F; 相对于 F 的短语有 F^;F^^;简单短语有 F;F^;句柄为 F.3.【解答】最简 DFA 如图 2.66 所示。
4.【解答】(1)S→(L)|aS’S’→S|εL→S L’L’→S L’|ε评分细则:消除左递归 2 分,提公共因子 2 分。
(2) FIRST 和 FOLLOWFIRST)S)={(,a}FOLLOW(S)={#,,,)}FIRST(S’)={,a,ε}FOLLOW(S’)={#,,,)}FIRST(L)={(,a}FOLLOW(L)={ )}FIRST(L’)={,,ε}FOLLOW(L’〕={ )}5.【解答】(1)拓广文法(0)S->A (1) A->aAd (2)A-> aAb (3)A->ε(2)构造识别活前缀的 DFAFOLLOW(A)={d,b,#}对于状态 I0:FOLLOW(A)∩{a}=Ф对于状态 I1:FOLLOW(A)∩{a}=Ф因为,在 DFA 中无冲突的现象,所以该文法是 SLR(1)文法。
(3)SLR(1)分析表状态ACTION GOTOa B d#A0S2r3r3r311acc2S2r3r3r333S5S44r1r1r15r2r2r2(4)串 ab#的分析过程步骤状态栈符号栈当前字符剩余字符串动作10#a b#移进202#a b#归约 A->ε3023#aA b#移进40235#aAb#归约 A-> aAb501#A#接受6.【解答】由M→d 和M→a…得:FIRSTVT(M)={d,a};由H-H;…得:FIRSTVT(H)={;}由H→M 得:FIRSTVT(M) cFIRSTVT(H),即 FIRSTVT(H)={;,d,a}由M→d 和M→…b 得:LASTVT(M)={d,b};由H---,;m 得:LASTVT(H)={;};由H→M 得:LASTVT(M)cLASTVT(H),即 LASTVT(H)={;,d,b}对文法开始符 H,有#H#存在,即有#=#,#<FIRSTVT(H),LASTVT(H)>#,也即#<;, #<d. #<a,;>#,d>#, b>#。
对形如P→…ab…,或P→…aQb…,有 a=b,由M→a|b 得:a=b;对形如P→…aR…,而b∈FIRSTVT(R),有 a<b,对形如P→…Rb…,而a∈LASTVT(R).有a>b。
由H→…;M 得:;<FIRSTVT(M),即::<d,:<a由M→aH…得:a<FIRSTVT(H),即:a<;,a<d,a<a由H→H;’’•得:LASTVT(H)>;,即:;>;,d>;,b>;由M→…Hb 得:LASTVT(H)>b,即:;>b,d>b,b>b由此得到算符优先关系表,见表 3.5。
7.【解答】(1)LR分析表如下:(2)分析表状态ACTION GOTOa b#S B0s3s4121acc2S3S45 3s3s464r3r35R1R1r16R2R2R2(3) 句子 abaab 的分析过程表:句子 abaab 的分析过程步骤状态符号栈输入串所得产生式0#0#abaad#1#03#a baad#2#034#ab aab#B→b3#036#aB aab#B→aB4#02#B aab#5#023#Ba ab#6#0233#Baa b #7#02334#Baab#8#02336#BaaB#9#0236#BaB ad#10#025#BB ad#11#01#S d#12##d#13识别成功8.【解答】该语句的四元式序列如下(其中 E1、E2 和 E3 分别对应:A<C∧B<D, A=1 和A≤D 并且关系运算符优先级高):100(j<,A,C,102)101(j,_,_,113)/*E1 为 F*/102(j<,B,D,104)/*El 为 T*/103(j,_,_,113)/*El 为 F*/104(j=,A,1,106)/*Ez 为 T*/105(j,_,_,108)/*EZ 为 F*/106(+,C,1,C)/*C:=C+1*/107(j,_,_,112)/*跳过 else 后的语句*/108(j≤,A,D,110)/*E3 为 T*/109(j,_,_,112)/*E3 为 F*/110(+,A,2,A)/*A:=A+2*/111 (j,_,_,108)/*转回内层 while 语句开始处*/112(j,_,_,100)/*转回外层 while 语句开始处*/1139.【解答】(1)流图中各结点 N 的必经结点集 D(n), D(l)={1},D(2)={1,2},D(3)={1,2,3},D(4)={1,2,3,4},D(5)={1,2,5}, D(6)={1,2,5,6}(2)求出流图中的回边,。