编译原理和技术期末考试复习题

合集下载

编译原理期末考试试题及答案

编译原理期末考试试题及答案

编译原理期末考试试题及答案一、选择题(每题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. 静态作用域规则是指变量的作用域在编译时确定,而动态作用域规则是指变量的作用域在运行时确定。

编译原理期末复习题

编译原理期末复习题

编译原理期末复习题(包含上一份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个输入符号)。

编译原理复习题有答案

编译原理复习题有答案

编译原理复习题有答案编译原理复习题及答案一、选择题1. 编译器的主要功能是什么?A. 代码格式化B. 代码优化C. 将源代码转换为机器码D. 错误检测和修复答案:C2. 词法分析阶段的主要任务是什么?A. 语法分析B. 语义分析C. 识别源程序中的词法单元D. 代码生成答案:C3. 下列哪个不是编译原理中的常见数据结构?A. 栈B. 队列C. 哈希表D. 链表答案:D4. 语法分析通常采用哪种方法?A. 递归下降分析B. 动态规划C. 贪心算法D. 深度优先搜索答案:A5. 代码优化的目的是什么?A. 增加程序长度B. 减少程序运行时间C. 提高程序的可读性D. 增加程序的复杂性答案:B二、简答题1. 简述编译过程的主要阶段。

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

词法分析负责将源代码分解成词法单元;语法分析构建语法树,检查源代码的语法结构;语义分析检查程序的语义正确性;代码生成将源代码转换成目标代码或机器码。

2. 什么是自底向上的语法分析方法?答案:自底向上的语法分析方法是一种从叶子节点开始,逐步向上构建语法树的方法。

它通常使用移进-归约分析技术,通过将输入符号与栈顶符号进行匹配,不断地将它们归约成非终结符,直到整个输入被归约为起始符号。

3. 请解释什么是中间代码,并说明其作用。

答案:中间代码是一种介于源代码和目标代码之间的代码形式,通常用于代码优化和目标代码生成。

它具有高级语言的可读性,同时又能表达程序的控制流和数据流信息。

中间代码使得编译器可以在不同的阶段对程序进行优化,提高程序的执行效率。

三、论述题1. 论述编译原理中的错误处理机制。

答案:编译原理中的错误处理机制主要包括错误检测、错误恢复和错误报告。

错误检测是指在编译过程中识别出源代码中的语法或语义错误;错误恢复是指在检测到错误后,编译器采取的措施以继续编译过程,避免因单个错误而中断整个编译;错误报告则是向程序员提供错误信息,帮助其定位和修复错误。

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

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

编译原理复习题及答案一、选择题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)上。

《编译原理》期末复习题

《编译原理》期末复习题

《编译原理》期末复习题一、简答题1.DFA和NFA的区别是什么?答:dfa与nfa的区别表现为两个方面:一是nfa可以若干个开始状态,而dfa仅只一个开始状态。

另一方面,dfa的映象m是从k×∑到k,而nfa的映象m是从k×∑到k的子集,即映象m将产生一个状态集合(可能为空集),而不是单个状态。

2、何谓优化?按所涉及的程序范围可分为哪几级优化?1)优化:对程序进行各种等效转换,以便从转换后的程序开始,生成更有效的目标代码。

(2)三个层次:局部优化、循环优化和全局优化。

3.短语、简单短语和句柄之间的关系?语法树子树的末端节点符号串既是语法树所描述与对子子树的根的短语;简单子树的标点符号串既是简单短语;最左简单子树的末端符合既是句柄。

4、语法分析的任务是什么?输入、输出分别是什么?任务是在词法分析识别出单词符号串的基础上。

分析并判定程序的语法结构是否符合语法规则;输入:源程序;输出:单词符号串。

5.静态链和动态链分别存储哪些值?为了什么?静态链是指向静态直接外层最新活动记录地址的指针,作用是用来访问非局部数据;动态链是指向调用该过程前的最新活动记录的指针。

作用是运行时使运行栈上个数据区按动态建立次序结成链。

6.综合属性和继承属性的区别是什么?它的值在语法树中的传递方向是什么?区别:综合属性用于自上而下传递信息,继承属性用于自上而下传递信息。

方向:在语法树中,一个节点的综合属性的值由其子节点的综合属性值决定;一个节点的继承属性由此节点的父节点和/或兄弟节点的属性确定的。

7.什么是优化?优化效果的两个方面是什么?对程序进行各种等价变换,使得从变化后的程序出发,能生成更有效的目标代码。

通称为优化。

①、在目标代码生成以前,对语法分析后的中间代码进行的,这类优化不依赖于具体的计算机;②、在目标代码生成时进行的,它在很大程度上依赖于具体的计算机。

8、编译程序和解释程序的区别?哪个更通用?区别:编译器是一种程序,其中源语言是高级语言,目标语言是汇编语言或机器语言的低级语言。

《编译原理》期末复习资料汇总

《编译原理》期末复习资料汇总

《编译原理》期末复习资料【题1】1.(a|b)*(aa|bb)(a|b)*画出状态转换图。

Ia Ib①1,2,3 2,3,4 2,3,5②2,3,4 2,3,4,6,7,8 2,3,5③2,3,5 2,3,4 2,,3,5,6,7,8④2,3,4,6,7,8 2,3,4,6,7,8 2,3,5,7,8⑤2,3,5,6,7,8 2,3,4,7,8 2,3,5,6,7,8⑥2,3,5,7,8 2,3,4,7,8 2,3,5,6,7,8⑦2,3,4,7,8 2,3,4,6,7,8 2,3,5,7,8Ia Ib1 2 32 4 33 2 54 4 65 7 56 7 57 4 6新的状态转换图如下:(1)A={1,2,3},B={4,5,6,7} Aa={2,4} ×(2)A={1,3},B={2},C={4,5,6,7} Aa={2}⊂B,Ab={3,5} ×(3)A={1},B={2},C={3},D={4,5,6,7}(单元素可以不用看,必有,古先看D)Da={4,7}⊂D,Db={5,6}⊂D,Aa={2}⊂B,Ab={3}⊂C,Ba={4}⊂D,Bb={3}⊂C,Ca={2}⊂B,Cb={5}⊂C,则有baA B CB D CC B DD D D2.(a*|b*)b(ba)*的状态转换图。

Ia Ib①1,2,3,4 2,4 3,4,5,6,8②2,4 2,4 5,6,8③3,4,5,6,8 --- 3,4,5,6,7,8④5,6,8 --- 7⑤3,4,5,6,7,8 6,8 3,4,5,6,7,8⑥7 6,8 ---⑦6,8 --- 7Ia Ib1 2 32 2 43 --- 54 --- 65 7 56 7 ---7 --- 6新的状态转换图如下:化简:(用终结状态与非终结状态,然后输出状态一致分一类)。

(1)A={1,2,6},B={3,4,5,7} Aa={2} ×(2)A={1,2},B={6},C={3,4,7},D={5} Cb={5,6} ×(只要有一个不属于任何一个集合,就不行) (3)A={1,2},B={6},C={3},D={4,7},E={5} Ab={3,4} × (4) A={1},B={2},C={6},D={3},E={4,7},F={5} Aa={2}⊂B ,Ab={3}⊂D ,Ba={2}⊂B ,Bb={4}⊂E ,Ca={7}⊂E ,Db={5}⊂F ,Eb={6}⊂C ,Fa={7}⊂E ,Fb={5}⊂Fa b A B D B B E C E --- D --- F E --- C FEF[注意事项]:[知识要点]:正则表达式:******|,|,)|(,)|(,)(,,|,ab a b a a b a a b a ab ab b a a{}a a aaa aa a a ,,,,*ε⇔;{}b a a b a ,)b (|⇔或;{}ab b a ab ⇔)(和;(){},,,,*ababab abab ab ab ε⇔;()()()(){} ,,,,,,||||*baba aabb aab b a b a b a b a b a ε⇔⇔()*|b a a 是最左边一个字母一定是a ,其余字母为b a 、的任意组合,不包括ε。

编译原理期末复习题(答案)

编译原理期末复习题(答案)

北方工业大学《编译原理》课程期末复习题(答案)A 卷开课学院考试方式:闭卷考试时间:120 分钟班级 姓名 学号 一判断题(每个小题1分,共10分)1. 程序语言主要由语法和语义两方面定义。

( )2. 自上而下分析方法会遇到的主要问题有左递归和回溯。

( )3. 已知文法G :E →i | EAE ,A →+|* ,其中的终结符号集包括{i ,+}。

( )4. 编译程序是将高级语言程序翻译成机器语言程序。

( )5. 只含有综合属性的属性文法称为S-属性文法。

( )6. LL(1)文法中第一个L 的含义是从左到右扫描输入串。

( )7. 在编译中进行语法检查的目的是为了发现程序中所有错误。

( )8. 一个语义子程序描述了一个文法所对应的翻译工作。

( )9. 一个句型的直接短语是唯一的。

( ) 10. 确定的自动机以及不确定的自动机都能正确地识别正规集。

( ) 解:1.√ 2.√ 3.× 4.× 5.√ 6.√ 7.× 8.× 9.× 10.√二、选择题(每个小题1分,共20分)1. 文法分为四种类型,即0型、1型、2型、3型。

其中3型文法是____。

A. 短语文法 B. 正规文法 C. 上下文有关文法 D. 上下文无关文法2. 不可能是目标代码。

A. 汇编指令代码B. 可重定位指令代码C. 绝对指令代码D. 中间代码 3. 将编译程序分成若干个“遍”是为了 。

A. 提高程序的执行效率B. 利用有限的机器内存并提高机器的执行效率C. 使程序的结构更加清晰D. 利用有限机器内存但降低了机器的执行效率 4. 后缀式ab+cd+/可用表达式 来表示。

订线装A. a+b/c+dB. (a+b)/(c+d)C. a+b/(c+d)D. a+b+c/d5. 文法G:S→xSx|y所识别的语言是。

A. xyxB. (xyx)*C. x n yx n(n≥0)D. x*yx*6. 文法G[E]:E→E+T|TT→T*P|PP→(E)|i则句型P+T+i的句柄和最左素短语为。

编译原理期末复习题

编译原理期末复习题

---------------------------------------------------------------最新资料推荐------------------------------------------------------编译原理期末复习题一、名词解释(每小题6分,共5 *6分=3 0 分) 1、什么叫编译程序?什么叫解释程序?它们两者的区别是什么?编译程序是把源程序翻译成目标语言的程序.编译得到的目标程序再经过连接装配形成可执行程序文件.用户运行可执行程序文件时不再需要源程序和编译程序. 解释程序是把源程序翻译成目标语言并执行的程序.解释程序的工作方式是逐条读入源程序中的语句,将该语句翻译成目标语言并执行.用户每次执行同样的程序都需要源程序文件和解释程序. 2、请解释源程序,目标程序,遍。

源程序是一种计算机的代码。

它会符合一定的语法,经过编译器编译或解释后生成具有一定功能的可执行文件或组件,也可以是某种接口。

是用程序设计语言编写的程序。

目标程序又称目的程序。

由语言处理程序(汇编程序,编译程序,解释程序)将源程序处理(汇编,编译,解释)成与之等价的由机器码构成的,计算机能够直接运行的程序,该程序叫目标程序。

遍指游历,即指令的顺序。

有三种顺序:左根右,左右根,根左右。

3、请解释字母表,符号串,推导。

1 / 4字母表是符号的非空有穷集合。

符号串是由字母表中的符号所组成的任何有穷序列。

推导:分直接推导产生式右部代替左部。

4、请解释正规式。

5、请解释句子,句型,上下文无关文法。

二、填空题(每空 2 分,共 10*2分=2 0 分)1、有穷自动机分为:和2、 .有穷自动机接受的是语言. 3、已知文法 G[S]的产生式如下:S(L) ∣ a L L, S∣ S 属于 L(G[S])的句子是 A ,(a, a)是 L(G[S])的句子,这个句子的最左推导是 B ,最右推导是C ,语法树是 D 。

编译原理期末复习题(含有答案)

编译原理期末复习题(含有答案)

编译原理期末复习题(含有答案)第八节习题一、单项选择题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、b8、c9、d 10、c二、多项选择题1、编译程序各阶段的工作都涉及到。

a.语法分析 b.表格管理c.出错处理 d.语义分析 e.词法分析2、编译程序工作时,通常有阶段。

编译原理期末试题及答案

编译原理期末试题及答案

编译原理期末试题及答案一、选择题(每题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套含答案 大题集)(DOC)

编译原理试题汇总 编译原理期末试题(8套含答案 大题集)(DOC)

编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了_B__。

A . 提高程序的执行效率B.使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.正规式 MI 和 M2 等价是指__C__。

A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。

C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等3.中间代码生成时所依据的是 _C_。

A.语法规则 B.词法规则 C.语义规则 D.等价变换规则4.后缀式 ab+cd+/可用表达式__B_来表示。

A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。

A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析7.词法分析器用于识别__C___。

A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符8.语法分析器则可以发现源程序中的___D__。

A.( ) 语义错误 B.( ) 语法和语义错误C.( ) 错误并校正 D.( ) 语法错误9.下面关于解释程序的描述正确的是__B___。

(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于 COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3)10.解释程序处理语言时 , 大多数采用的是__B___方法。

A.( ) 源程序命令被逐个直接解释执行B.( ) 先将源程序转化为中间代码 , 再解释执行C.( ) 先将源程序解释转化为目标程序 , 再执行D.( ) 以上方法都可以11.编译过程中 , 语法分析器的任务就是__B___。

编译原理期末考试复习题(含答案)

编译原理期末考试复习题(含答案)

编译原理期末考试复习题(含答案)一、选择题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)。

华东理工大学编译原理与技术(本)期末复习题及参考答案

华东理工大学编译原理与技术(本)期末复习题及参考答案

编译原理与技术(本)2022062023模拟试卷一、简答题(共7题,35分)1、一个典型的编译程序通常由哪些部分组成?(5.0)正确答案:一个典型的编译程序通常包含8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。

2、根据下列EBNF写出语法描述图。

<复合语句>::= BEGIN<语句>{;<语句>}END(5.0)正确答案:3、设有文法G[E]:E :: = T | E + T | E–TT :: = F | T * F | T / FF :: = i | ( E )求句型(F+i)–T*(E –T)的短语、简单短语和句柄。

(5.0)正确答案:短语:F相对T、Ei相对F、TF+i相对E(F+i)相对F、T、EE-T相对E(E-T)相对FT*(E-T)相对T(F+i)-T*(E-T)相对E简单短语:F、i、E-T句柄:F4、已知文法 G[Z]:Z→aZb|ab写出 L(G[Z])的全部元素。

(5.0)正确答案:L(G[Z])={anbn|n>=1}5、构造下列正规式相应的DFA b((ab)*|bb)*ab(5.0)正确答案:6、已知文法G[Z]为:Z→bMbM→(L|aL→Ma)给出句子b(aa)b#的分析过程。

(5.0)正确答案:7、设文法G[S]:S→aBc |bABA→aAb|bB→b|ε构造相应的LL(1)分析表。

(5.0)正确答案:。

编译原理和技术期末考试复习题

编译原理和技术期末考试复习题

2.1 考虑文法G[S],其产生式如下:S→(L)|a L→L,S|S(1)试指出此文法的终结符号、非终结符号。

终结符号为:{(,),a,,,}非终结符号为:{S,L}开始符号为:S(2)给出下列各句子的分析树:① (a,a)②(a,(a,a))③ (a,((a,a),(a,a)))(3)构造下列各句子的一个最左推导:① (a,a)S (L) (L,S) (S,S) (a,S) (a,a)② (a,(a,a))S (L) (L,S) (S,S) (a,S) (a,(L) (a,(L,S))(a,(S,S)) (a,(a,S)) (a,(a,a))③ (a,((a,a),(a,a)))S (L) (L,S) (S,S) (a,S) (a,(L)) (a,(L,S)) (a,(S,S)) (a,((L),S)) (a,((L,S),S)) (a,((S,S),S))(a,((a,S),S)) (a,((a,a),S)) (a,((a,a),(L)))(a,((a,a),(L,S))) (a,((a,a),(S,S))) (a,((a,a),(a,S)))(a,((a,a),(a,a)))(4)构造下列各句子的一个最右推导:①(a,a)S (L) (L,S) (L,a) (S,a) (a,a)②(a,(a,a))S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,a))(L,(S,a)) (L,(a,a)) (S,(a,a)) (a,(a,a)③(a,((a,a),(a,a))S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,(L)))(L,(L,(L,S))) (L,(L,(L,a))) (L,(L,(S,a)))(L,(L,(a,a))) (L,(S,(a,a))) (L,((L),(a,a)))(L,((L,S),(a,a))) (L,((L,a),(a,a))) (L,((S,a),(a,a)))(L,((a,a),(a,a))) (S,((a,a),(a,a))) (a,((a,a),(a,a)))(5)这个文法生成的语言是什么?L(G[S]) = (α1,α2,...,αn)或a其中αi(1≤i≤n),即L(G[S])是一个以a为原子的纯表,但不包括空表。

编译原理期末试题(8套含答案+大题集)

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

2.1 考虑文法G[S],其产生式如下:S→(L)|a L→L,S|S(1)试指出此文法的终结符号、非终结符号。

终结符号为:{(,),a,,,}非终结符号为:{S,L}开始符号为:S(2)给出下列各句子的分析树:①②(a,(a,a))③ (a,((a,a),(a,a)))(a,a)(3)构造下列各句子的一个最左推导:① (a,a)S (L) (L,S) (S,S) (a,S) (a,a)② (a,(a,a))S (L) (L,S) (S,S) (a,S) (a,(L) (a,(L,S))(a,(S,S)) (a,(a,S)) (a,(a,a))③ (a,((a,a),(a,a)))S (L) (L,S) (S,S) (a,S) (a,(L)) (a,(L,S))(a,(S,S)) (a,((L),S)) (a,((L,S),S)) (a,((S,S),S))(a,((a,S),S)) (a,((a,a),S)) (a,((a,a),(L)))(a,((a,a),(L,S))) (a,((a,a),(S,S))) (a,((a,a),(a,S)))(a,((a,a),(a,a)))(4)构造下列各句子的一个最右推导:①(a,a)S (L) (L,S) (L,a) (S,a) (a,a)②(a,(a,a))S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,a))(L,(S,a)) (L,(a,a)) (S,(a,a)) (a,(a,a)③(a,((a,a),(a,a))S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,(L)))(L,(L,(L,S))) (L,(L,(L,a))) (L,(L,(S,a)))(L,(L,(a,a))) (L,(S,(a,a))) (L,((L),(a,a)))(L,((L,S),(a,a))) (L,((L,a),(a,a))) (L,((S,a),(a,a)))(L,((a,a),(a,a))) (S,((a,a),(a,a))) (a,((a,a),(a,a)))(5)这个文法生成的语言是什么?L(G[S]) = (α1,α2,...,αn)或a其中αi(1≤i≤n),即L(G[S])是一个以a为原子的纯表,但不包括空表。

2.2 考虑文法G[S] S→aSbS|bSaS|ε(1)试说明此文法是二义性的。

可以从对于句子abab有两个不同的最左推导来说明。

S aSbS abS abaSbS ababS ababS aSbS abSaSbS abaSbS ababS abab所以此文法是二义性的。

(2)对于句子abab构造两个不同的最右推导。

S aSbS aSbaSbS aSbaSb aSbab ababS aSbS aSb abSaSb abSab abab(3)对于句子abab构造两棵不同的分析树。

(一) (二)(4)此文法所产生的语言是什么?此文法产生的语言是:所有a的个数与b的个数相等的由a和b组成的字符串。

2.4 已知文法G[S]的产生式如下:S → (L)|a L → L,S|S属于L(G[S])的句子是 A ,(a,a)是L(G[S])的句子,这个句子的最左推导是 B ,最右推导是 C ,分析树是 D ,句柄是 E 。

A:① a② a,a ③ (L) ④ (L,a)B,C:① S (L) (L,S) (L,a) (S,a) (a,a)② S (L) (L,S) (S,S) (S,a) (a,a)③ S (L) (L,S) (S,S) (a,S) (a,a)D:E:① (a,a) ② a,a ③ (a) ④ a解答: A:① B:③ C:① D:② E:④3.1有限状态自动机可用五元组(V T,Q,δ,q0,Q f)来描述,设有一有限状态自动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M是一个 A 有限状态自动机,它所对应的状态转换图为 B ,它所能接受的语言可以用正则表达式表示为 C 。

其含义为 D 。

A: ①歧义的②非歧义的③确定的④非确定的B:C:①(0|1)*②00(0|1)*③(0|1)*00 ④0(0|1)*0D:①由0和1所组成的符号串的集合;②以0为头符号和尾符号、由0和1所组成的符号串的集合;③以两个0结束的,由0和1所组成的符号串的集合;④以两个0开始的,由0和1所组成的符号串的集合。

答案 A:③ B:② C:② D:④3.2 (1)有穷自动机接受的语言是正则语言。

()(2)若r1和r2是Σ上的正规式,则r1|r2也是。

()(3)设M是一个NFA,并且L(M)={x,y,z},则M的状态数至少为4个。

(4)令Σ={a,b},则Σ上所有以b为首的字构成的正规集的正规式为b*(a|b)*。

(5)对任何一个NFA M,都存在一个DFA M',使得L(M')=L(M)。

()(6)对一个右线性文法G,必存在一个左线性文法G',使得L(G)=L(G'),反之亦然。

()答案 (1) T (2) T (3) F (4) F (5) T3.3描述下列各正规表达式所表示的语言。

(1) 0(0|1)*0(2) ((ε|0)1*)*(3) (0|1)*0(0|1)(0|1)(4) 0*10*10*10*(5) (00|11)*((01|10)(00|11)*(01|10)(00|11)*)*答案 (1) 以0开头并且以0结尾的,由0和1组成的所有符号串(2) {α|α∈{0,1}*}即由0和1组成的所有符号串。

(3) 由0和1组成的符号串,且从右边开始数第3位为0。

(4) 含3个1的由0和1组成的所有符号串。

{α|α∈{0,1}+,且α中含有3个1 }(5) {α|α∈{0,1}*,α中含0和1的数目为偶数。

}4.10 已知文法G[S],其产生式如下:S→(L)|a L→L,S|S文法G[S]的算符优先关系由下表给出。

建立与下表相应的算符优先函数并用算符优先分析法分析句子(a,(a,a))。

文法G[S]的算符优先关系表:解:对每个终结符或$建立符号f与g,把f(和g)分成一组。

根据G[S]的算符优先关系表,画出如下的有向图:优先函数如下:用算符优先分析法分析句子(a,(a,a))4.19 (1) 存在有左递归规则的文法是LL(1)的。

(2) 任何算符优先文法的句型中不会有两个相邻的非终结符号。

(3) 算符优先文法中任何两个相邻的终结符号之间至少满足三种关系(<·,·>,)之一。

(4) 任何LL(1)文法都是无二义性的。

(5) 每一个SLR(1)文法也都是LR(1)文法。

(6) 存在一种算法,能判定任何上下文无关文法是否是LL(1)的。

(7) 任何一个LL(1)文法都是一个LR(1)文法,反之亦然。

(8)' LR(1)'括号中的1是指,在选用产生式A→α进行分析,看当前读入符号是否在FIRST(α)中。

答案:(1)×(2)√(3)×(4)√(5)√(6)√(7)× (8)×4.20 在编译程序中,语法分析分为自顶向下分析和自底向上分析两类。

__A__和LL(1)分析法属于自顶向下分析;__B__和LR分析法属于自底向上分析。

自顶向下分析试图为输入符号串构造一个__C__;自底向上分析试图为输入符号串构造一个__D__。

采用自顶向下分析方法时,要求文法中不含有__E__。

A、B:①深度分析法②宽度优先分析法③算符优先分析法④预测递归分析法C、D:①语法树②有向无环图③最左推导④最右推导E:①右递归②左递归③直接右递归④直接左递归A:④ B:③ C:③ D:④ E:②4.21 自底向上语法分析采用__A__分析法,常用的是自底向上语法分析有算符优先分析法和LR分析法。

LR分析是寻找右句型的 __B__;而算符优先分析是寻找右句型的__C__。

LR分析法中分析能力最强的是__D__;分析能力最弱的是__E__。

A:①递归②回溯③枚举④移进-规约B、C:①短语②素短语③最左素短语④句柄D、E:①SLR(1) ②LR(0) ③LR(1) ④LALR(1)A:④ B:④ C:③ D:③ E:②5.5 用S的综合属性val给出在下面的文法中的S产生的二进制数的值(例如,对于输入101.101,S.val=5.625):S→L.L|L L→LB|B B→0|1(1)试用各有关综合属性决定S.val。

(2)试用一个语法制导定义来决定S.val,在这个定义中仅有B的综合属性,设为c,它给出由B 生成的位对于最后的数值的贡献。

例如,在101.101中的第一位和最后一位对于值5.625的贡献分别为4和0.125。

注:L.p表示恢复L.val的因子。

(2)分析:设B.c是B的综合属性,是B产生的位对最终值的贡献。

要求出B.c,必须求出B 产生位的权,设B.i。

B.i的求法请参看下面的图示:另外,设L.fi为继承因子,L.fs为综合因子,语法制导定义如下:5.15描述文法符号语义的属性有两种,一种称为( A ),另一种称为( B )。

( A )值的计算依赖于分析树中它的( C )的属性值;( B )的值的计算依赖于分析树中它的( D )的属性值。

A,B: ①L-属性②R-属性③综合属性④继承属性C,D: ①父结点②子结点③兄弟结点④父结点与子结点⑤父结点与兄弟结点解答: A ③ B ④ C ② D ⑤5.16(1) 语法制导定义中某文法符号的一个属性,既可以是综合属性,又可以是继承属性。

(2) 只使用综合属性的语法制导定义称为S-属性定义。

(3) 把L-属性定义变换成翻译模式,在构造翻译程序的过程中前进了一大步。

(4)一个特定的翻译模式既适于自顶向下分析,又适于自底向上分析。

(5) 用于自顶向下分析的翻译模式,其基础文法中不能含有左递归。

(6) 在基础文法中增加标记非终结符不会导致新的语法分析冲突。

解答:(1) FALSE (2) TRUE (3) TRUE (4) FALSE(5) TRUE (6) FALSE6.7 (1) 对于允许递归调用的程序语言,程序运行时的存储分配策略不能采用静态的存储分配策略。

()(2) 若一个程序语言的任何变量的存储空间大小和相互位置都能在编译时确定,则可采用静态分配策略。

()(3) 在不含嵌套过程的词法作用域中,若一个过程中有对名字a的非局部引用,则a必须在任何过程(或函数)外被说明。

()(4) 在允许嵌套的词法作用域的语言中,过程不能作为参数,原因时不能建立其运行环境的存取链。

相关文档
最新文档