编译原理 期末复习
《编译原理》期末复习资料(完整版)
1.给出语言{a n b n a m b m | n,m≥0}的一个上下文无关文法。
(6分)解:G[S]:S—>ABA—>aAb |εB—>aBb |ε2.给出语言{1 n 0 m 1 m0 n | n,m≥0}的一个上下文无关文法。
解:G[S]:S—>1S0 | AA—>0A1 |ε3.P48 第6题(5)、(6).画语法树6、已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i(5)i+(i+i) (6)i+i*i解:(5)语法树:(6)语法树:4.P48第13题直接短语等13、一个上下文无关文法生成句子abbaa的推导树如下:(3)求直接短语解:直接短语有:a ε bP102例题6.1及其分析.( 后加画语法树)例6.1 设文法G[S]为:(1)S—>aAcBe(2)A—>b(3)A—>Ab(4)B—>d对输入串abbcde#进行分析,检查该符号串是否是G[S]的句子。
步骤符号栈输入符号串动作(1)# abbcde# 移进(2)#a bbcde# 移进(3)#ab bcde# 归约(A—>b)(4)#aA bcde#移进(5)#aAb cde# 归约(A—>Ab)(6)#aA cde# 移进(7)#aAc de# 移进(8)#aAcd e# 归约(B—>d)(9)#aAcB e# 移进(10)#aAcBe # 归约(S—>aAcBe)(11)#S # 接受一、计算分析题(60%)1、正规式→ NFA→ DFA→最简DFAP72第1题(1)、(4);第一题1、构造下列正规式相应的DFA.(1)1(0|1)*101解:先构造NFA0 1S AA A ABAB AC ABAC A ABZABZ AC AB除S,A外,重新命名其他状态,令AB为B、AC为C、ABZ为D,因为D含有Z(NFA的终态),所以0 1S AA A BB C BC A DD C B(4) b((ab)*|bb)*ab解:先构造NFA得到DFA如下所示:P72第4题(a)4、把下图确定化和最小化解:确定化:a b0 01 101 01 11 0、{1},其中A为初态,A,B为终态,因此有:a bA B CB B CC A最小化::初始分划得终态组{A,B},非终态组{C}Π0:{A,B},{C},对终态组进行审查,判断A和B是等价的,故这是最后的划分。
编译原理第三版期末复习
期末复习总结《编译原理》第一章:绪论一、填空问题①由于计算机只能认识机器语言,所以需要翻译程序将高级语言翻译成计算机可以识别的机器语言。
②编译程序的工作过程一般主要划分为词法分析,语法分析,中间代码生成,代码优化,目标代码生成等几个基本阶段,同时还会伴有表格管理和出错处理。
③如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两个阶段:编译阶段和运行阶段。
如果编译程序生成的目标程序是汇编语言的程序,则源程序的执行分为三个阶段:编译阶段,汇编阶段和运行阶段。
1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序 ,则其翻译程序称为编译程序.1-03.编译方式与解释方式的根本区别在于是否生成目标代码 .1-05.对编译程序而言,输入数据是源程序,输出结果是目标程序 .1-10.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括(1)c.其中, (2)b 和代码优化部分不是每个编译程序都必需的. 词法分析器用于识别 (3)c ,语法分析器则可以发现源程序中的 (4)d .(1) a.模拟执行器 b.解释器 c.表格处理和出错处理 d.符号执行器(2) a.语法分析 b.中间代码生成 c.词法分析 d.目标代码生成(3) a.字符串 b.语句 c.单词 d.标识符(4) a.语义错误 b.语法和语义错误 c.错误并校正 d.语法错误1-11.程序语言的语言处理程序是一种 (1)a . (2)b 是两类程序语言处理程序,他们的主要区别在于 (3)d .(1) a.系统软件 b.应用软件 c.实时系统 d.分布式系统(2) a.高级语言程序和低级语言程序 b.解释程序和编译程序c.编译程序和操作系统d.系统程序和应用程序(3) a.单用户与多用户的差别 b.对用户程序的查错能力c.机器执行效率d.是否生成目标代码1-12.汇编程序是将 a 翻译成 b ,编译程序是将 c 翻译成 d .a.汇编语言程序b.机器语言程序c.高级语言程序d. a 或者 be. a 或者 cf. b 或者 c1-13.下面关于解释程序的描述正确的是 b .(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的a. (1)(2)b. (1)c. (1)(2)(3)d.(2)(3)1-14.高级语言的语言处理程序分为解释程序和编译程序两种.编译程序有五个阶段,而解释程序通常缺少 (1)e 和 (1)b .其中, (1)e 的目的是使最后阶段产生的目标代码更为高效.与编译系统相比,解释系统 (2)d .解释程序处理语言时,大多数采用的是 (3)b 方法.(1): a. 中间代码生成 b.目标代码生成 c.词法分析 d.语法分析 e.代码优化(2): a.比较简单,可移植性好,执行速度快b.比较复杂,可移植性好,执行速度快c.比较简单,可移植性差,执行速度慢d.比较简单,可移植性好,执行速度慢(3): a.源程序命令被逐个直接解释执行 b.先将源程序转化为之间代码,再解释执行c.先将源程序解释转化为目标程序,在执行d.以上方法都可以1-15.用高级语言编写的程序经编译后产生的程序叫 b .用不同语言编写的程序产生 a 后,可用 g 连接在一起生成机器可执行的程序.在机器中真正执行的是 e .a. 源程序b. 目标程序c. 函数d. 过程e. 机器指令代码f. 模块g. 连接程序h.程序库1-16.要在某一台机器上为某种语言构造一个编译程序,必须掌握下述三方面的内容: c , d , f .a. 汇编语言b. 高级语言c. 源语言d. 目标语言e. 程序设计方法f. 编译方法g. 测试方法h. 机器语言1-17.由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组合成(1)d ,诸阶段的工作往往是 (2)d 进行的.(1) a. 过程 b. 程序 c. 批量 d.遍(2) a. 顺序 b. 并行 c. 成批 d.穿插1-18.编译程序与具体的机器 a , 与具体的语言 a .a. 有关b.无关1-19.使用解释程序时,在程序未执行完的情况下, a 重新执行已执行过的部分.a. 也能b.不可能1-20.编译过程中,语法分析器的任务就是 b .(1) 分析单词是怎样构成的(2)分析单词串是如何构成语句和说明的(3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构a. (2)(3)b. (2)(3)(4)c. (1)(2)(3)d.(1)(2)(3)(4)1-21.编译程序是一种常用的 b 软件.a. 应用b. 系统1-22.编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过 b 这几步.(1) 编辑 (2) 编译 (3) 连接 (4) 运行a. (1)(2)(3)(4)b. (1)(2)(3)c. (1)(3)d.(1)(4)1-23.编译程序必须完成的工作有 a .(1) 词法分析 (2) 语法分析 (3) 语义分析(4) 代码生成 (5) 之间代码生成 (6) 代码优化a. (1)(2)(3)(4)b. (1)(2)(3)(4)(5)c. (1)(2)(3)(4)(5)(6)d. (1)(2)(3)(4)(6)e. (1)(2)(3)(5)(6)1-24.“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法a .a. 不正确b.正确1-25.把汇编语言程序翻译成机器可执行的目标程序的工作是由 b 完成的.a. 编译器b. 汇编器c. 解释器d. 预处理器1-26.编译程序生成的目标程序 b 是机器语言的程序.a. 一定b. 不一定1-27.编译程序生成的目标程序 b 是可执行的程序.a. 一定b. 不一定1-28.编译程序是一种 B 。
编译原理_期末复习
A->aB|bC B->aF|a|bE|b C->bD D->aD|bF|b E->aF|a|bD F->aF|bF|a|b Z→1X
第三章 词法分析_考点:
语言: L={w|w∈{0,1}*, 并且 w 中至少有两个 1, 又在任何两个 1 之间有偶数个 0 }; 正规表达式:(a|b)* ab; 正规文法:左线性文法(N->dN|d) ;右线性文法(N->Nd|d) ;
第四章 自上而下语法分析_考点:
步骤 0
符号栈 (反向入栈)
(a|b)ab* 三:已知文法 G1: S→aB|ε B→bC|bD C→cB|c D→d c a b B b ε F d D c 确定化: C I {S,F} {B} {C,D} {F,B} {F} {C,D} Ia {B} {C,D} {F,B} {F} Ib Ic Id 试构造其对应的最小 DFA,并给出状态转换图和构造过程。
-4-
第三章 词法分析_习题:
一:有语言 L={w|w∈{0,1}*,并且 w 中至少有两个 1,又在任何两个 1 之间有偶数个 0 },试写出该语言的正规表达式。 对于语言 L,w 中至少有两个 1,且任意两个 1 之间必须有偶数个 0;也即在第一个 1 之前和最后一个 1 之后,对 0 的个数没有要求。据此我们求出 L 的正规式为 0*1(00(00)*1)*00(00)*10* 二:设语言 L 是满足下述条件的符号串构成的语言: 若出现 a ,则其后至少紧跟两个 c ;请给出识别 L 的正规表达 式。 其中字母表为{a,b,c} 答: (acc|b|c)* 三:写出下面 NFA 识别的正规式
2 5 6
a X a 1
a b 3 b
《编译原理》期末考试复习题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.语法分析最常用的两类方法是___ __和__ __分析法。
自上而下 _自下而上四、简答题(20分)1. 什么是句子? 什么是语言 ?答:(1)设G是一个给定的文法,S是文法的开始符号,假如S x(其中x∈VT*),则称x是文法的一个句子。
(2)设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈VT*} 。
编译原理复习题及答案doc下载
编译原理复习题及答案doc下载以下是编译原理复习题及答案的正文内容:1. 什么是编译器的主要功能?编译器的主要功能是将源代码转换成目标代码,包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等步骤。
2. 词法分析的主要任务是什么?词法分析的主要任务是将源程序的字符序列转换成一系列的标记(token),并识别出其中的关键字、标识符、常量、运算符等。
3. 语法分析的目的是什么?语法分析的目的是检查源代码的语法结构是否符合语言的语法规则,并构建出抽象语法树(AST)。
4. 什么是语义分析?语义分析是编译过程中的一个阶段,它在语法分析的基础上,对源代码进行上下文相关的检查,确保变量的声明和使用是合法的,以及类型检查等。
5. 中间代码生成的作用是什么?中间代码生成的作用是将抽象语法树转换成一种中间表示形式,这种表示形式既接近于源代码,又方便后续的优化和目标代码生成。
6. 代码优化的目的是什么?代码优化的目的是为了提高程序的执行效率和减少资源消耗,通过各种优化技术改进中间代码。
7. 目标代码生成包括哪些步骤?目标代码生成包括指令选择、寄存器分配、指令调度等步骤,最终生成可以在特定硬件上运行的目标代码。
8. 什么是编译器前端和后端?编译器前端包括词法分析、语法分析、语义分析和中间代码生成,而后端包括代码优化和目标代码生成。
9. 什么是词法单元?词法单元是词法分析过程中识别的基本单位,包括关键字、标识符、常量、运算符等。
10. 什么是左递归?左递归是指在文法的产生式中,一个非终结符直接或间接地在其产生式右边以自身开始的情况。
以上是编译原理的复习题及答案,供参考和学习使用。
编译原理期末总结复习
编译原理期末总结复习编译原理期末总结复习篇一:一、简答题1.什么是编译程序?答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。
将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。
2.请写出文法的形式定义?答:一个文法G抽象地表示为四元组 G=(Vn,Vt,P,S)–其中Vn表示非终结符号– Vt表示终结符号,Vn∪Vt=V(字母表),Vn∩Vt=φ– S是开始符号,–P是产生式,形如:α→β(α∈V+且至少含有一个非终结符号,β∈V*)3.语法分析阶段的功能是什么?答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。
确定整个输入串是否构成语法上正确的程序。
4.局部优化有哪些常用的技术?答:优化技术1—删除公共子表达式优化技术2—复写传播优化技术3—删除无用代码优化技术4—对程序进行代数恒等变换(降低运算强度)优化技术5—代码外提优化技术6—强度削弱优化技术7—删除归纳变量优化技术简介——对程序进行代数恒等变换(代数简化)优化技术简介——对程序进行代数恒等变换(合并已知量)5.编译过程分哪几个阶段?答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。
每个阶段把源程序从一种表示变换成另一种表示。
6. 什么是文法?答:文法是描述语言的语法结构的形式规则。
是一种工具,它可用于严格定义句子的结构;用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。
7. 语义分析阶段的功能是什么?答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码);并对静态语义进行审查。
8.代码优化须遵循哪些原则?答:等价原则:不改变运行结果有效原则:优化后时间更短,占用空间更少合算原则:应用较低的代价取得较好的优化效果9.词法分析阶段的功能是什么?答:逐个读入源程序字符并按照构词规则切分成一系列单词任务:读入源程序,输出单词符号—滤掉空格,跳过注释、换行符—追踪换行标志,指出源程序出错的行列位置—宏展开,……10.什么是符号表?答:符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。
编译原理期末复习题
目标代码生成算法及实现
要点一
目标代码生成算法
目标代码生成算法是将中间代码或高级语言程序转换为目 标代码的算法。常见的目标代码生成算法包括基于模板的 方法、基于树的方法、基于线性扫描的方法等。这些方法 根据不同的转换策略和目标机器特性,生成相应的目标代 码。
要点二
目标代码生成的实现
目标代码生成的实现通常包括指令选择、寄存器分配、内 存访问优化等步骤。指令选择是根据目标机器指令集选择 合适的指令实现中间代码的操作;寄存器分配是为变量分 配寄存器以减少内存访问开销;内存访问优化则是通过调 整内存访问顺序、使用缓存等方式提高内存访问效率。在 实现过程中,还需要考虑异常处理、调试信息生成等问题 。
编译原理的发展趋势与挑战
• AI驱动的优化:利用AI技术进一步提高编译器的优化能力。
编译原理的发展趋势与挑战
性能与可维护性的平衡
在提高编译器性能的同时,需要保持其可维 护性和可扩展性。
复杂性增加
随着软件规模的扩大和编程语言的发展,编 译器的复杂性不断增加。
新技术与新应用的适应
编译器需要不断适应新技术和新应用的发展, 如量子计算、生物计算和光计算等。
目标代码的形式与特点
目标代码的形式
目标代码是编译器生成的机器语言代码,通 常以二进制形式存在。目标代码可以被计算 机直接执行,也可以作为其他程序的输入进 行链接和编译。
目标代码的特点
目标代码具有与特定计算机体系结构相关的 特点,如指令集、寄存器使用、内存访问方 式等。此外,目标代码还具有可移植性差、 可读性差等缺点,因此通常需要配合相应的 调试和反汇编工具进行开发和维护。
LR分析法
一种自底向上的分析方法,通过 构造一个识别活前缀的有限自动 机来实现语法分析。适用于大多 数上下文无关文法描述的语言结 构。
编译原理 期末复习
编译原理一、单选题1、将编译程序分为若干个“遍”是为了()。
BA.提高程序的执行效率B.使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2、构造编译程序应掌握()。
DA.源程序B.目标语言C.编译方法D.以上三项都是3、变量应当()。
CA.持有左值B.持有右值C.既持有左值又持有右值D.既不持有左值也不持有右值4、编译程序绝大多数时间花在()上。
DA.出错处理B.词法分析C.目标代码生成D.管理表格5、()不可能是目标代码。
DA.汇编指令代码B.可重定位指令代码C.绝对指令代码D.中间代码6、编译程序是对()。
DA.汇编程序的翻译B.高级语言程序的解释执行C.机器语言的执行D.高级语言的翻译7、正规式M1和M2等价是指()。
CA.M1和M2的状态数相等B.M1和M2的有象弧条数相等C.M1和M2所识别的语言集相等D.M1和M2状态数和有象弧条数相等8、如果文法G是无二义的,则它的任何句子()。
AA.最左推导和最右推导对应的语法树必定相同。
B.最左推导和最右推导对应的语法树可能相同。
C.最左推导和最右推导必定相同。
D.可能存在两个不同的最左推导,但它们对应的语法树相同。
9、文法G:S→S+T|TT→T*P|PP→(S)|i句型P+T+i的短语有()BA.i,P+TB. P,P+T,i,P+T +iB.P+T + i D. P,P+T,i10、产生正规语言的文法为()。
DA.0型B.1型C.2型D.3型11、文法G:S→b|˄|(T)T→T˅S|S则FIRSTVT(T)=() CA.{b,˄,(}B.{b,˄,)}C.{b,˄,(,˅}D.{b,˄,),˅}12、给定文法:A→bA | cc,下面的符号串中,为该文法句子的是()。
A①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc可选项有:A.①B.①③④⑤C.①④D.①④⑤13、采用自上而下分析,必须()。
编译原理期末复习题(包含上一份N多答案)
编译原理复习题一、填空题: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个输入符号)。
13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。
编译原理期末复习
E’->+TE’|ε
T ->FT’ T’->*FT’|ε F->(E)|i
其预测分析表为:
分析i+i+i*i是否为该文法的句子,写出分析过程
CH5 语法分析——自下而上分析
主要题型:所有题型 LR分析 实例:
CH5 语法分析——自下而上分析
文法G[M]及其LR分析表如下,请给出对串 dbba#的分析过程。 G[M]: 1) M →VbA 2) V →d
da;aoa# 移进 a;aoa# 移进 ;aoa# 用S →a 归约 ;aoa# 移进 aoa# 移进 oa # 用S →a 归约 oa # 用S →S;S 归约 oa # 移进 a# 移进 # 用S →a 归约 # 用S→dSoS 归约 36 # 接受
2
FIRSTVT 和LASTVT
(一)FIRSTVT
10
3.判断句子、画分析树、文法符号集、终结符
集、非终结符集
1) 设有文法:
S→aSbS|bSaS|c (1)判断符号串ababba是否为文法G(S)的句子, 如果是画出其分析树。 (2)给出G(S)的元语言符号集、文法符号集、 终结符集、非终结符集
11
练习:
设有文法G(S)为
S→ABx|xSx
f(V,0)=S
f(U,1)=V
f(V,1)=Q
f(Q,1)=V
画出其状态转换图
14
5. NFA转换为DFA (1) 给定非确定的有限自动机M如下图所示
将M确定化,并画出确定化后的状态转换图(要求
15
5. NFA转换为DFA 练习: 给定非确定的有限自动机M如下图所示
a
i 1 2 b 4 b a 3 a 5
编译原理期末试题及答案
编译原理期末试题及答案一、选择题(每题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. 语法分析阶段,如果一个文法是左递归的,编译器需要使用()技术来消除左递归。
编译原理试题及答案(期末复习版)
<编译原理>历年试题及答案一.(每项选择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/d9.程序所需的数据空间在程序运行前就可确定,称为____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)构造预测分析表。
编译原理期末试题(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.构造编译程序应掌握______。
编译原理-复习资料精选全文完整版
可编辑修改精选全文完整版1.编译程序的工作过程一般可包括词法分析、语法分析、语义分析、中间代码产生与优化和目标代码生成等几个阶段,同时还有表格管理和出错处理。
2.LEX是用于词法分析的工具,Y ACC是用于语法分析的工具。
3.解释程序和编译程序的区别在于是否生成目标代码。
4.任一文法终结符集合和非终结符集合的交集是空集。
5.描述程序设计语言语法的BNF方法中,“::=”表示定义为,“|”表示或,[W]表示W可出现0或1次,{W}表示W可出现n(n≥0)次。
6.已知文法G[G]: S→aSb|ab|ε,该文法描述的语言L(G)={a n b n|n≥0}。
7.单词的描述工具有正规文法、正规式和有穷自动机,他们之间存在等价性。
8.高级程序设计语言的单词通常分为五类,它们是关键字、标识符、常数、运算符和界符。
9.正则式中的“|“表示或,“*”表示闭包。
10.自顶向下语法分析方法会遇到的主要问题有回溯,以及左递归带来的无限循环。
11.算符优先分析法每次归约当前句型的最左素短语,规范归约中每次归约的是当前句型的句柄。
12.对文法G[G]: S→a|b|cTc,T→S|TdS而言,FIRSTVT(T)={a,b,c,d}。
13.活前缀是指规范句型的一个前缀,这种前缀不含句柄之后的任何符号。
14.对文法G[G]: E→E*T|T, T→T+i|i的句子1+2*8+6进行归约后的结果为42(23,42)。
15.在LR(0),SLR(1),LR(1),LALR(1),四种文法中,描述能力最强的是LR(1)。
1.0型文法中每条规则左部至少包含一非终结符(√)。
2.3型文法一定是2型、1型、0型文法(√)。
3.对无二义性文法而言,无论最左推导还是最右推导,同一个句子的语法树是一样的。
4.若一个文法是递归的,则其语言中句子的个数必定是无穷个。
(√)5.文法规则右部的符号一定是终结符。
(×)6.语法树描述的是一个文法。
编译原理期末复习
编译原理期末复习编译原理是计算机科学与技术专业的一门重要基础课程,它研究的是程序设计语言在计算机上的实现方式。
编译原理的学习主要涉及到词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等内容。
针对这些方面,下面将对编译原理的重要内容进行总结和复习。
一、词法分析词法分析是编译过程的第一步,其主要目的是将源程序中的字符序列划分成词法单位。
常用的词法单元有关键字、标识符、常数、运算符、界符等。
词法分析通过有限自动机或正则表达式来实现。
二、语法分析语法分析是将词法分析阶段生成的词法单元流转化为一个抽象语法树。
语法分析的主要工作是根据给定的语法规则,将输入串分析成语法树。
语法分析有两种主要方法:基于文法的自上而下的分析和基于文法的自下而上的分析,常用的算法包括LL(1)、LR(1)、SLR(1)和LALR(1)等。
三、语义分析语义分析是对语法分析的结果进行语义检查和语义动作的计算。
语义分析的主要任务是检查源程序是否符合语义规则,计算符号的类型和值,并生成中间代码。
语义分析常用的方法包括语义制导翻译和符号表的建立。
四、中间代码生成中间代码是指在编译过程中生成的一种可以被多次优化和被不同目标代码生成程序使用的代码。
中间代码生成的目的是将源程序翻译成其中一种中间形式,便于进一步优化和生成目标代码。
中间代码生成的方法有三地址码、四地址码和虚拟机代码等。
五、代码优化代码优化是编译过程中的重要环节,其主要目的是对中间代码进行优化,使得生成的目标代码更加高效和紧凑。
代码优化使用各种数据流分析、指令调度和寄存器分配等技术,常用的优化方法有常量传播、公共子表达式消除、代码移动和死代码消除等。
六、目标代码生成目标代码生成是将中间代码转化为目标机器代码的过程,目标代码生成需要考虑目标机器的特性和限制。
目标代码生成包括指令选择、寻址方式的选择和寄存器分配等步骤。
常用的技术有基于各种寻址方式的代码选择算法、寄存器分配算法和指令调度算法等。
编译原理总复习(框架例题)期末复习资料
3 属性文法
4 语义错误检测和恢复
掌握属性文法的概念和使用,以及如何使 用它们来定义和处理属性。
学习如何检测和恢复常见的语义错误,例 如类型错误、作用域错误等。
词法分析
正则表达式
学习如何使用正则表达式,以及如何将它们 转换为有限自动机。
有限自动机
掌握有限自动机的基本理论和实现,能够使 用它们来识别单词和标记。
掌握SLR(1)语法分析算法,以及如何
LR(1)语法分析算法
4
使用它们来实现编译器。
学习LR(1)语法分析算,并能使用 它们来构建上下文无关语法。
语义分析
1 语义动作
2 语法制导翻译
理解语义动作的概念,以及如何使用它们 来改变语法分析树,并获取有用的信息。
学习语法制导翻译的基本原则,并能用它 们来构造翻译方案。
正则表达式和有限自动机的转换
学习如何将正则表达式转换为有限自动机, 以及如何使用它们来识别复杂的单词和标记。
词法错误检测和恢复
掌握如何检测和恢复常见的词法错误,例如 拼写错误、符号错误等。
优化和代码生成
基本块划分
了解什么是基本块划分,以及 如何使用它们来提高代码的效 率。
控制流图
掌握控制流图的概念,以及如 何使用它们来优化代码。
编译原理总复习
这份期末复习资料将帮助你巩固编译原理的基础知识,包括语法分析、语义 分析、词法分析和优化和代码生成。让我们开始吧!
语法分析
1
上下文无关文法
学习如何构造和使用上下文无关文法,
LR(0)语法分析算法
2
以及如何使用它们来描述语法。
理解LR(0)语法分析算法,并能使用
Jison解析文本。
3
编译原理期末试题(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.构造编译程序应掌握______。
【新版】《编译原理》期末复习
《编译原理》期末复习【题型】一、填空题:每空1分,共10分;二、单选题:每题2分,共20分;三、应用题:每小题6分,共48分;四、综合分析题:每小题11分,共22分。
【知识点】1.编译程序的整个过程从逻辑上依次分为哪6个阶段,其中还涉及哪2个重要工作。
2.语法分析有哪两大类方法?3.编译程序和解释程序的概念,二者最主要的区别是?4.句柄的定义。
5.什么是规范推导?6.语言、句型、句子的定义。
7.LR分析法中的项目类型定义(待约项目、移入项目、归约项目)。
8.中间代码和目标代码区别。
9.文法与正则表达式所描述的语言及句子。
10.如何判断自动机(状态转换图)所能识别的字符串。
11.中间代码生成时主要依据什么规则?12.根据给定文法,通过推导,画出指定句子的语法树。
13.自底向上的语法分析过程中,构造LR分析表时可能会面临的两种冲突。
14.判断源程序中出现的某类错误可能在编译的哪个阶段被发现。
15.词法分析及语法分析的输入输出是什么?16.0、1、2、3型文法的定义、别名及描述能力强弱排名。
17.证明给定文法是二义性的(参考第二章课后练习)。
18.消除文法的左递归及提取公共左因子。
19.给定一个文法和该文法的句型,要求写出句型的最左推导、画出语法分析树、指出短语、简单短语、句柄(参考第二章课后练习及课件中的例题)。
20.根据有限自动机的定义(五元组),给出其状态转换矩阵和状态转换图。
21.画出按照给定翻译模式分析某句子时所产生的分析树,分析其输出结果(参考第六章课后练习及课件中的例题)。
22.针对给定的语言构造一个文法G,然后判断该文法类型(0、1、2、3型)(参考第二章课后练习)。
23.根据有限自动机M的定义(五元组),画出M的状态转换图,并说明它所识别或接受的语言是什么(参考课件第三章例题)。
24.给出一个复合表达式,写出该表达式的三元式和四元式(如:-a*(b+c)/d)。
25.判断某语法制导定义在给定输入下的输出结果,分析文法产生的语言,指出语法制导定义功能。
编译原理 第1、2、3、4章复习(期末)
编译原理第1、2章复习一、选择题1、词法分析所依据的是 B 。
A. 语义规则B. 构词规则C. 语法规则D. 等价变换规则2、词法分析器的输出结果是C 。
A. 单词的种别编码B. 单词在符号表中的位置C. 单词的种别编码和自身值D. 单词自身值3、正规式M1和M2等价是指 C 。
A. M1和M2的状态数相等B. M1和M2的有向弧条数相等C. M1和M2所识别的语言集相等D. M1和M2状态数和有向弧条数相等4、C语言中表达式a+++++=1词法分析后,能识别的单词个数是 A 个。
A. 5B. 6C. 7D. 85、将识别各类单词的有限自动机合并后得到的有限自动机是 A 。
A. 可能是NFA也可能是DFAB. 一定是DFAC. 一定是NFAD. 是最小的DFA6、中间代码生成时所遵循的是 D 。
A.语法规则B.词法规则C.语义规则D.等价变换规则7、语法分析应遵循 B 。
A.语义规则B.语法规则C.构词规则D.等价变换规则8、编译程序各阶段的工作都涉及到 BC 。
A.语法分析B.表格管理C.出错处理D.语义分析E.词法分析9、编译过程中扫描器的任务包括 ABCDE (多选):A. 按词法规则分割单词,识别出其属性,并转换成token串输出;B. 删除注释、空格C. 行计数、列计数D. 发现并定位词法错误E. 建立符号表10、令∑={a,b},则∑上所有以b开头,后跟若干个ab的字的全体对应的正规式为_ABCD______(多选)。
A. b(ab)*B. b(ab)+C. (ba)*bD. (ba)+bE. b(a|b)11、将编译程序分成若干个“遍”是为了 B 。
A.提高程序的执行效率B.使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率12、 D 不可能是目标代码。
A.汇编指令代码B.可重定位指令代码C.绝对指令代码D.中间代码13、使用 A 可以定义一个程序的意义。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理一、单选题1、将编译程序分为若干个“遍”是为了()。
BA.提高程序的执行效率B.使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2、构造编译程序应掌握()。
DA.源程序B.目标语言C.编译方法D.以上三项都是3、变量应当()。
CA.持有左值B.持有右值C.既持有左值又持有右值D.既不持有左值也不持有右值4、编译程序绝大多数时间花在()上。
DA.出错处理B.词法分析C.目标代码生成D.管理表格5、()不可能是目标代码。
DA.汇编指令代码B.可重定位指令代码C.绝对指令代码D.中间代码6、编译程序是对()。
DA.汇编程序的翻译B.高级语言程序的解释执行C.机器语言的执行D.高级语言的翻译7、正规式M1和M2等价是指()。
CA.M1和M2的状态数相等B.M1和M2的有象弧条数相等C.M1和M2所识别的语言集相等D.M1和M2状态数和有象弧条数相等8、如果文法G是无二义的,则它的任何句子()。
AA.最左推导和最右推导对应的语法树必定相同。
B.最左推导和最右推导对应的语法树可能相同。
C.最左推导和最右推导必定相同。
D.可能存在两个不同的最左推导,但它们对应的语法树相同。
9、文法G:S→S+T|TT→T*P|PP→(S)|i句型P+T+i的短语有()BA.i,P+TB. P,P+T,i,P+T +iB.P+T + i D. P,P+T,i10、产生正规语言的文法为()。
DA.0型B.1型C.2型D.3型11、文法G:S→b|˄|(T)T→T˅S|S则FIRSTVT(T)=() CA.{b,˄,(}B.{b,˄,)}C.{b,˄,(,˅}D.{b,˄,),˅}12、给定文法:A→bA | cc,下面的符号串中,为该文法句子的是()。
A①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc可选项有:A.①B.①③④⑤C.①④D.①④⑤13、采用自上而下分析,必须()。
CA.消除左递归B.消除右递归C.消除回溯D.提取公共左因子14、由文法的开始符经0步或多步推导产生的文法符号序列是()。
CA.短语B.句柄C.句型D.句子15、后缀式ab+cd+/可用表达式()来表示。
BA.a+b/c+dB.(a+b)/(c+d)C.a+b/(c+d)D.a+b+c/d16、语法分析器则可以发现源程序中的()。
DA.语义错误B.语法和语义错误C.错误并矫正D.语法错误17、在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是()。
BA.非终极符集B.终极符集D.字母表 D.状态集18、四种形式语言文法中,1型文法又称为()。
CA.短语结构文法B.前后文无关文法C.前后文有关文法D.正规文法19、优化可生成()的目标代码。
DA.运行时间较短B.占用存储空间较小C.运行时间短但占用内存空间大D.运行时间短且占用内存空间小20、四元式之间的联系是通过()实现的。
BA.指示器B.临时变量C.符号表D.程序变量二、多选题1、如果在文法G中存在一个句子,当其满足下列条件(BCD )之一时,则称该文法是二义文法。
A.其最左推导和最右推导相同B.该句子有两个不同的最左推导C.该句子有两个不同的最右推导D.该句子有两棵不同的语法树E.该句子对应的语法树唯一2、下面(BCD)语法制导翻译中,采用拉链—回填技术。
A、赋值语句B、布尔表达式的计算C、条件语句D、循环语句3、一般程序设计语言的定义都涉及到(ABC)3个方面。
A、语法B、语义C、语用D、程序基本符号的确定4、程序语言一般分为(A)和(B)。
A高级语言 B低级语言 C专用程序语言 D通用程序语言5、编译程序工作时,通常有(ABCD)阶段。
A、词法分析B、语法分析C、中间代码生成D、语义检查E、目标代码生成6、编译过程中,语法分析的任务是( BCD)。
A、分析单词是怎样构成的B、分析单词是如何构成语句和说明的C、分析语句和说明是如何构成程序的D、分析程序的结构7、语法分析的常用方法有(AB)。
A、自顶向下B、自底向上C、自左向右D、自右向左8、程序设计语言常见的数据类型有:(ABCD)A、数值型数据B、逻辑数据C、字符数据D、指针类型9、构造编译程序应掌握(ABC)。
A、源程序B、目标语言C、编译方法D、以上都不是10、编译程序前三个阶段完成的工作是(ABC)A、词法分析B、语法分析C、语义分析和中间代码生成D、代码优化11、一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,以及(BC)。
A、一组字符串B、一组产生式C、一个开始符号D、一个文法12、描述一个语言的文法是(C、D)。
A、唯一的B、不唯一的C、可能唯一D、也可能不唯一13、设有文法G[I]:I→I1|I0|Ia|Ic|a|b|c下列符号串中是该文法句子的有(BCD)。
A、ab0B、a0c01C、aaaD、bc1014、运行阶段的存储组织与管理的目的是(CD)。
A、提高编译程序的运行速度B、节省编译程序的存储空间C、提高目标程序的运行速度D、为运行阶段的存储分配做准备15、已知文法G[E]:E→TE’E’→+TE’∣εT→FT’T’→*FT’∣εF →(E)∣id 求:FOLLOW(F)=( D ),FIRST(T’)=( B )A、{*,+}B、{*,ε}C、{+,#,)}D、{*,+,#,)}E、{#,)}F、{*,+,#,id}16、面向机器语言的特点是(ABC)。
A、程序的执行效率高B、编制效率低C、可读性差D、可读性强17、编译程序使用(AB )区别标识符的作用域。
A、说明标识符的过程B、函数的静态层次C、函数的动态层次D、标识符的行号18、词法分析器的输出结果是(AD)A、单词的种别编码B、单词在符号表中的位置C、单词的长度D、单词自身值19、优化可生成(AD)的目标代码。
A、运行时间较短B、占用存储空间较大C、运行时间短且占用内存空间大D、占用存储空间小22、编译程序各阶段的工作都涉及到(BC)A、语法分析B、表格管理C、出错处理D、语义分析 F、词法分析三、填空题1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有__表格处理___和___出错处理__。
2.若源程序是用高级语言编写的,___目标程序__是机器语言程序或汇编程序, 则其翻译程序称为 ___编译程序__ 。
3.编译方式与解释方式的根本区别在于__是否生成目标代码___。
4.对编译程序而言,输入数据是___源程序__, 输出结果是__目标程序___。
5.产生式是用于定义___语法成分__的一种书写规则。
6.语法分析最常用的两类方法是___自上而下__和___自下而上__分析法7.设 G 是一个给定的文法,S 是文法的开始符号,如果 S->x( 其中 x∈VT*), 则称 x 是文法的一个__句子___。
8.递归下降法不允许任一非终极符是直接__左___递归的。
9.常用的参数传递方式有___传地址__,传值和传名。
10.在使用高级语言编程时,首先可通过编译程序发现源程序的全部__语法___错误和语义的部分错误。
11.一个句型中的最左简单短语称为该句型的___句柄_。
12.一个典型的编译程序中,不仅包括__词法分析___、__语法分析___、__中间代码生成___、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。
13.从功能上说,程序语言的语句大体可分为__执行性___语句和__说明性___语句两大类。
14.语法分析是依据语言的__语法___规则进行的,中间代码产生是依据语言的__语义___规进行的。
15.产生式是用于定义___语法成分__的一种书写规则。
16.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。
17.局部优化是在__基本块___范围内进行的一种优化。
18.词法分析基于__正则___文法进行,即识别的单词是该类文法的句子。
19.语法分析基于__上下文无关___文法进行,即识别的是该类文法的句子。
语法分析的有效工具是__语法树___。
20.一个文法能用有穷多个规则描述无穷的符号串集合(语言)是因为文法中存在有___递归 __定义的规则。
四、名词解释(1)2型文法(上下文无关文法)若文法G=(V N,V T,P,S)中的每一条规则的形式为A→β,其中A∈V N,β∈(V N∪V T)*,则称G是2型文法。
(2)二义性文法如果一个文法存在某个句子对应两课不同的语法树,则称这个文法是二义性文法。
(3)有穷自动机是具有离散输入与输出系统的一种抽象数学模型。
(4)算符文法设有文法G,若G中没有形如U→…VW…的规则,其中V和W为非终结符,则称G为算符文法。
(5)素短语素短语是指这样一种短语,它至少包含一个终结符,并且除自身之外,不再包含其他任何更小的素短语。
(6)语法制导翻译法在语法分析过程中,根据相应文法的每一规则所对应的语义子程序进行翻译的方法。
(7)基本块指程序中一顺序执行的语句序列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最后一个语句。
(8)句柄一个句型的最左直接短语称为该句型的句柄。
(9)待用信息如果在一个基本块中,四元式i对A定值,四元式j要引用A值,而从i到j之间没有A的其它定值,则称j是四元式i的变量A的待用信息。
(10)局部优化局限于基本块范围的优化称。
五、应用题1.编译过程的5个阶段是什么?第1阶段:词法分析第2阶段:语法分析第3阶段: 词义分析与中间代码产生第4阶段:代码优化第5阶段:目标代码生成2.请给出编译程序的结构框图。
3.设有文法G[A]:A—>a|b|e|Aa|Ae|A0|A1(1)试问V T 和V N是由哪些符号组成的?V N={A}V T={a,b,e,0,1}(2)下列符号串a,ab0,a0e01,0a,11,eee是否为该文法的句子?a,a0e01,eee是该文法句子。
4.证明下面的文法是二义性的。
S—>iSeS|iS|i5.目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?目标代码通常采用三种形式:机器语言,汇编语言,待装配机器语言模块。
应着重考虑的问题:(1)如何使生成的目标代码较短;(2)如何充分利用寄存器,以减少访问内存次数;(3)如何充分利用指令系统的特点。
6.基本的优化方法有哪几种?删除多余运算,代码外提,强度削弱,变换循环控制条件,合并已知量,复写传播和删除无用赋值。
7.构造下列正规式相应的DFA(用状态转换图表示)(1)1(0|1)*1(2)0*10*10*10*1(3)letter(letter|digit)*8.给出下述文法所对应的正规式。