《编译原理》练习测试题库
编译原理题库
编译原理题库
1. 什么是编译原理?
编译原理是研究将高级程序语言翻译成为机器语言的原理和方法的学科。
2. 编译器的主要功能是什么?
编译器的主要功能包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。
3. 什么是词法分析?
词法分析是将输入的字符流转化为标记流的过程。
4. 什么是语法分析?
语法分析是将词法分析得到的标记流转化为语法树的过程。
5. 什么是语义分析?
语义分析是对语法树进行解析,检查程序中是否存在语义错误或不符合语言规范的地方。
6. 什么是中间代码生成?
中间代码生成是将语义分析得到的语法树转化为中间表示形式,以便进行后续的代码优化和目标代码生成。
7. 什么是代码优化?
代码优化是对中间代码进行优化,以提高程序的执行效率和空间利用率。
8. 什么是目标代码生成?
目标代码生成是将优化后的中间代码转化为机器语言的过程。
9. 什么是语法制导翻译?
语法制导翻译是一种以语法规则为基础,通过对语法树的遍历和语义规则的应用来进行翻译的方法。
10. 什么是LL(1)文法?
LL(1)文法是一种上下文无关文法,它具有左递归和左因子的特点,并且在进行预测分析时每个非终结符的每个可能产生式都有唯一的选择。
编译原理试题及答案
编译原理试题及答案一、选择题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. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。
《编译原理》考试题
《编译原理》考试题一、选择题:(每题2分,共20分)1.文法G所描述的语言是的集合。
A)文法G的字汇表V中所有符号组成的符号串B)文法G的字汇表V的闭包V*中的所有符号串C)由文法的识别符号推出的所有符号串D)由文法的识别符号推出的所有终结符号串2.设有文法G[S]=({b},{S,B},S,{S→b|bB,B→bS}),试问该文法所描述的语言是。
A)L(G[S])={b i|i≥0} B)L(G[S])={b2i|i≥0}C)L(G[S])={b2i+1|i≥0} D)L(G[S])={b2i+1|i≥1}3.一个句型中的最左称为该句型的句柄。
A)短语B)简单短语C)素短语D)终结符号4. 正则文法能产生下面的语言:L={a n b n|n≥1}。
A)存在一个B)存在多个C)不存在D)无法判断5.编译程序中的语法分析器接受以为单位的输入,并产生有关信息供以后各阶段使用。
A)表达式B)产生式C)单词D)语句6.编译方法中,自顶向下的语法分析方法有。
A)简单优先分析方法B)算符优先分析方法C)SLR方法D)LL(1)分析方法7.简单优先分析法每次都是对进行归约。
A)最左短语B)简单短语C)句柄D)最左素短语8.LR语法分析栈中存放的状态是识别的DFA状态。
A)前缀B)可归前缀C)项目D)句柄9.表达式-(a+b)/(c-d)-(a+b*c)的逆波兰表示是(@代表单目运算-)。
A)ab+cd-/@bc*a+- B)ab+/cd@bc*a+--C)ab+@cd-/abc*+- D)ab+cd-/abc*+@-10.乔姆斯基(Chomsky)把文法分成四种类型,即0型、1型、2型和3型。
其中,3型文法是。
A)上下文无关文法B)上下文有关文法C)正则文法D)短语文法二、填空题:(每空1分,共20分)1.假设G是一个文法,S是文法的开始符号,如果S *x,则称x是。
2.已知文法G[E]:E→E+T|T,T→T*F|F,F→(E)|i;该文法的开始符号是,终结符号集合V T是,非终结符号集合V N 是,句型T+T*F+i的短语有T+T*F+i,第一个T,T*F和。
编译原理练习题
编译原理练习题一、选择题(每题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分)1.设G [S ]是一个文法,我们把能由文法的 (1) 推导出来的符号串α称为G 的一个句型。
当句型α仅由 (2) 组成时 (即α∈V T *),则将它称为G 产生的句子。
2.从某一给定的状态q 出发,仅经过若干条 (3) 的矢线所能达到的状态所组成的集合称为ε-CLOSURE(q)。
3.设G=(V N ,V T ,P,S)是一文法,我们说G 中的一个符号X ∈V N ∪V T 是有用的,是指X 至少出现在 (4) 的推导过程中,否则,就说X 是无用的。
我们将不含形如A→A 的产生式和不含无用符号及无用产生式的文法称为 (5) 。
4.我们常采用形如 (class, value)的二元式作为一个单词的 (6) 。
其中,class 是一个整数,用来指示该单词的 (7) ,value 则是单词之值。
5.一个文法G[S]可表示成形如 (8) 的四元式。
其中V N ,V T ,P 均为非空的有限集,分别称为非终结符号集、终结符号集和产生式集, S ∈V N 为文法的开始符号。
此外,将出现在各产生式左部和右部的一切符号所组成的集合称为 (9) ,记作V 。
显然,V=V N ∪V T ,V N ∩V T =∅。
6.通常,可通过两种途径来构造词法分析程序。
其一是根据对语言中各类单词的某种描述或定义,用 (10) 构造词法分析程序;另外一种途径是所谓词法分析程序的(11) 。
7.设G 为一文法,A→α是G 的一个产生式,如果α具有υAδ的形式,其中υ,δ不同时为ε,则称产生式A→α是 (12) 。
若存在推导δυαA A *⇒⇒,则称产生式A→α是 (13) 。
8.设M=(K,Σ,f,S 0,Z)为一DFA ,并设s 和t 是M 的两个不同状态,我们说状态s,t 为某一输入串w (14) ,是指从s,t 中之一出发,当扫视完w 之后到达M 的终态,但从其中的另一个状态出发,当扫视完同一个w 后而进入 (15) 。
编译原理试题及答案
参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左A .非终结符号B .短语C .句子D .直接短语 4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A . 字符B .单词C .句子D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3 B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。
完整版编译原理试题
编译原理考试题及答案汇总一、选择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. 编译过程中 , 语法分析器的任务就是 (1) 分析单词是怎样构成的 (2) (3) 分析语句和说明是如何构成程序的 A .( ) (2)(3) B .( ) (2)(3)(4)C .( ) (1)(2)(3) D .( ) (1)(2)(3)(4) 12. 编译程序是一种 ___C__。
编译原理考试题及答案
编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。
答案:语义分析2. 编译器的后端主要负责________和目标代码生成。
答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。
答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。
答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。
答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。
2. 解释一下什么是语法制导翻译。
答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。
3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。
四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。
答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。
2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。
编译原理考试题库
一、判断(共计50分,每题2.5分)1、静态存储分配策略是在程序运行期间为源程序中的量进行分配。
A. 正确B. 错误错误:【B】2、含有优化部分的编译程序的执行效率高。
A. 正确B. 错误错误:【A】3、四元式之间的联系是通过符号表实现的。
A. 正确B. 错误错误:【B】4、包含公共左因子的文法也能直接用预测分析法来分析。
A. 正确B. 错误错误:【B】5、局部优化是在一个程序块内进行的优化。
A. 正确B. 错误错误:【B】6、数组元素的地址计算与数组的存储方式有关。
A. 正确B. 错误错误:【A】7、紧跟在条件转移语句后面的语句是基本块的入口语句。
A. 正确B. 错误错误:【A】8、LL(1)文法是无左递归、无二义性文法。
A. 正确B. 错误错误:【A】9、设有一个LR(0)项目集I={X→α.Bβ, A→α.},该项目集含有“归约-归约”冲突。
A. 正确B. 错误错误:【B】10、使用语法制导翻译法的编译程序能够同时进行语法分析和语义分析。
A. 正确B. 错误错误:【A】11、包含左递归的文法也能直接用LL(1)分析法来分析。
A. 正确B. 错误错误:【B】12、产生式是用于定义词法成分的一种书写规则。
A. 正确B. 错误错误:【B】13、如果i •>j , 则j <•i 。
A. 正确B. 错误错误:【B】14、编译程序与解释程序的区别在于编译程序对源程序进行了翻译,而解释程序则没有。
A. 正确B. 错误错误:【B】15、在形式语言中,最右推导的逆过程也称为规范归约。
A. 正确B. 错误错误:【A】16、设有一个LR(0)项目集Ii={X→α.Bβ,A→α.},该项目集含有“移进-归约冲突”。
A. 正确B. 错误错误:【A】17、动态存储分配是指在编译阶段对源程序中的量进行分配,以使目标代码在运行时加快行速度。
A. 正确B. 错误错误:【B】18、设有一个LR(0)项目集Ii={X→α.,A→α.},该项目集含有“归约-归约冲突”。
编译原理题库
1.【单选题】文法:G:S→xSx | y所识别的语言是()A.B.C.D.答案:D难易程度:中2.【单选题】给定文法A→bA|ca,为该文法句子的是()A.bbaB.cabC.bcaD.cba答案:C难易程度:中3.【单选题】设有文法G[S]:S→S1|S0|Sa|Sc|a|b|c,下列符号串中是该文法的句子有()A.ab0B.a0b01C.a0b0aD.bc10答案:D难易程度:中4.【单选题】文法G产生的()的全体是该文法描述的语言。
A.句型B.终结符集C.非终结符集D.句子答案:D难易程度:中5.【单选题】若文法G定义的语言是无限集,则文法必然是()A.递归的B.上下文无关的C.二义性的D.无二义性的答案:A难易程度:中6.【单选题】乔姆斯基(Chomsky)把文法分为四种类型,即0型、1型、2型、3型。
其中3型文法是()A.非限制文法B.正规文法C.上下文有关文法D.上下文无关文法答案:B难易程度:中7.【单选题】一个上下文无关文法G包括四个组成部分,它们是一组非终结符号,一组终结符号,一个开始符号,以及一组()A.句子B.产生式C.单词D.句型答案:B难易程度:中8.【单选题】若一个文法是递归的,则它所产生的语言的句子()A.是无穷多个B.是有穷多个C.是可枚举的D.个数是常量答案:A难易程度:中9.【单选题】给定文法A→bA|cc,则符号串①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc中,是该文法句子的是()A.①B.③④⑤C.②④D.①⑤答案:D难易程度:中10.【单选题】文法E→E+E|E*E|i的句子i*i+i*i有( )棵不同的语法树。
()A. 1B. 3C. 5D. 7答案:C难易程度:中11.【单选题】文法S→aaS|abc 定义的语言是()A.B.C.D.答案:C难易程度:中12.【单选题】文法G:S→xSx| xS|y所识别的语言是()A.B.C.D.答案:A难易程度:中13.【单选题】由文法的开始符号出发经过若干步(包括0步)推导产生的文法符号序列称为()A.语言B.句型C.句子D.句柄答案:B难易程度:中14.【单选题】下列符号串不可以由符号集S={a,b}上的正闭包运算产生的是()A.εB. aC. aaD. ab答案:A难易程度:中15.【单选题】文法G:S →xxS | y 所识别的语言是()A.B.C.D.答案:D难易程度:中16.【单选题】文法G:S →xS | y 所识别的语言是()A.B.C.D.答案:D难易程度:中17、下面哪些选项不是编译程序的组成部分。
(完整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),该文法所描述的语言是。
编译原理试题及答案
编译原理试题及答案1. 选择题(每题4分,共40分)1) 当编译器在词法分析阶段遇到无法识别的字符时,应该采取的动作是:A. 直接忽略该字符并继续进行词法分析B. 输出错误信息并终止词法分析过程C. 将该字符标记为非法字符并继续词法分析D. 转交给语法分析器进行处理答案:B2) 下列关于语法分析器的描述中,错误的是:A. 语法分析器使用文法规则将输入的记号流转化为推导树B. 语法分析器可以通过自上而下或自下而上的方式进行解析C. LL(1)文法是一种常用于自上而下语法分析的文法形式D. 语法分析器的输入是词法分析器输出的记号流答案:A3) 以下关于语法制导翻译的说法,正确的是:A. 语法制导翻译是在语义分析阶段完成的B. 语法制导翻译通过产生式的属性传递进行信息的传递和计算C. 语法制导翻译只能用于自上而下的语法分析D. 语法制导翻译是在语法分析阶段完成的答案:B4) 在SLR分析算法中,项目集簇的构造过程中需要进行的操作是:A. 闭包操作和移进操作B. 移进操作和规约操作C. 闭包操作和规约操作D. 闭包操作、移进操作和规约操作答案:D5) 下列关于中间代码生成的叙述中,错误的是:A. 中间代码是一种类似于汇编代码的表示形式B. 中间代码可以直接被目标代码生成器所使用C. 中间代码的生成可以采用三地址码的形式D. 中间代码的生成在语法分析和语义分析之后进行答案:B2. 简答题(每题10分,共30分)1) 请简要描述编译器的主要工作流程。
答案:编译器的主要工作流程包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等阶段。
在词法分析阶段,编译器将输入的源代码转化为一个个记号流。
接下来,在语法分析阶段,编译器使用文法规则对记号流进行分析,并生成语法树或推导树。
在语义分析阶段,编译器对语法树进行语义检查,并进行类型推导和符号表管理等操作。
中间代码生成阶段将经过语义分析的源代码转化为一种中间表示形式,通常是三地址码。
编译原理练习题及答案
第一章练习题(绪论)一、选择题1.编译程序是一种常用的软件。
A) 应用B) 系统C) 实时系统D) 分布式系统2.编译程序生成的目标代码程序是可执行程序。
A) 一定B) 不一定3.编译程序的大多数时间是花在上。
A) 词法分析B) 语法分析C) 出错处理D) 表格管理4.将编译程序分成若干“遍”将。
A)提高编译程序的执行效率;B)使编译程序的结构更加清晰,提高目标程序质量;C)充分利用内存空间,提高机器的执行效率。
5.编译程序各个阶段都涉及到的工作有。
A) 词法分析B) 语法分析C) 语义分析D) 表格管理6.词法分析的主要功能是。
A) 识别字符串B) 识别语句C) 识别单词D) 识别标识符7.若某程序设计语言允许标识符先使用后说明,则其编译程序就必须。
A) 多遍扫描B) 一遍扫描8.编译方式与解释方式的根本区别在于。
A) 执行速度的快慢B) 是否生成目标代码C) 是否语义分析9.多遍编译与一遍编译的主要区别在于。
A)多遍编译是编译的五大部分重复多遍执行,而一遍编译是五大部分只执行一遍;B)一遍编译是对源程序分析一遍就立即执行,而多遍编译是对源程序重复多遍分析再执行;C)多遍编译要生成目标代码才执行,而一遍编译不生成目标代码直接分析执行;D)多遍编译是五大部分依次独立完成,一遍编译是五大部分交叉调用执行完成。
10.编译程序分成“前端”和“后端”的好处是A)便于移植B)便于功能的扩充C)便于减少工作量D)以上均正确第二章练习题(文法与语言)一、选择题1.文法 G 产生的 (1) 的全体是该文法描述的语言。
A.句型B. 终结符集C. 非终结符集D. 句子2.若文法 G 定义的语言是无限集,则文法必然是 (2) A递归的 B 上下文无关的 C 二义性的 D 无二义性的3. Chomsky 定义的四种形式语言文法中, 0 型文法又称为(A)文法;1 型文法又称为(C)文法;2 型语言可由(G) 识别。
A 短语结构文法B 上下文无关文法C 上下文有关文法D 正规文法E 图灵机F 有限自动机G 下推自动机4.一个文法所描述的语言是(A);描述一个语言的文法是(B)。
编译原理-题库
编译原理-题库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.若源程序是用高级语言编写的,目标程序是______,则其翻译程序称为编译程序。
2.词法分析和语法分析本质上都是对源程序的______进行分析。
3.如果源语言(编写源程序的语言)是高级语言,而目标语言是某计算机的汇编语言或机器语言,则这种翻译程序称为_____。
4.对编译程序而言,输入数据是_______,输出结果是________。
5. ______,是构成语言文法的单词,是语法成分的最小单位。
6.由PL/0的EBNF可知,PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个__________。
7.由于PL/0编译程序采用_________,所以语法分析过程BLOCK是整个编译过程的核心。
8.用语法图描述语法规则的优点是______、________。
9.每个非终结符是一个语法成分,在书写语言程序时并不出现,它是由_________和_________、或终结符串定义的。
10.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机______。
11.PL/0的编译程序和目标程序的解释执行程序都是用_______书写的,因此PL/0语言可在配备_________的任何机器上实现。
12.PL/0编译程序是用PASCAL语言书写的,整个编译程序(包括主程序)是由______个嵌套及并列的过程或函数组成13.当源程序编译正确时,PL/0编译程序自动调用__________,对目标代码进行解释执行,并按用户程序要求输入数据和输出运行结果。
14.由于对某些非终结符可以递归定义,这就使得_________可用有穷的文法描述。
15. ______的任务是识别由词法分析给出的单词符号序列在结构上是否符合给定的文法规则。
16. PL/0编译程序的语法分析采用了____________。
17.语法分析程序除总控外主要有两大部分的功能,即_________和__________.18.PL/0的词法分析程序GETSYM,是一个独立的过程,其功能是为_________提供单词用的,是______的基础,它把输入的字符串形式的源程序分割成一个个单词符号。
编译原理试题
编译原理题库一、选择题:1.编译原理是对(C )。
A 、机器语言的执行B 、汇编语言的翻译C 、高级语言的翻译D 、高级语言程序的解释执行2.编译程序是将高级语言程序翻译成D 。
A 、汇编语言程序 B 、机器语言程序C 、高级语言程序 D 、汇编语言或者机器语言程序3.文法:G :S →xSx | y 所识别的语言是(D )。
A 、x n yx m B 、(xyx)*C 、x *yx * D 、x n yxm (n ≥0)4.设有文法G[I]:I →I0|I1|I a|Ic|a|b|c下列符号串中是该文法的句子的有B 。
①ab0 ②a0c01 ③aaa ④bc10可选项有A 、① B 、②③④ C 、③④ D 、①②③④5.词法分析器的输出结果是(C )。
A 、单词自身值B 、单词在符号表中的位置C 、单词的种别编码D 、单词的种别编码和自身值6.为了使编译程序能够对程序设计语言进行正确的翻译,必须采用_C_方法定义程序设计语言。
A 、非形式化B 、自然语言描述问题C 、形式化D 、自然语言和符号体系相结合7. 若文法G 定义的语言是无限集,则文法必然是(C )A.先后文无关文法B.正规文法C.二义性文法D.递归文法8、描述一个语言的文法是B 。
A 、惟一的B 、不惟一的C 、个数有限的9、表达式(a+b )*c 的逆波兰表示为_C_A 、ab+c* B 、abc+* C 、a*c+b*c10、递归下降分析法和预测分析法要求描述语言的文法是_C_A 、正规文法B 、LR(1)文法C、LL (1)文法D 、右线性文法11编写一个计算机高级语言的源程序后,到正式上机运行之前,普通要经过_A_这几步①编辑② 编译③ 连接 ④运行A 、①②③④B 、①②③C 、①③D 、①④12、符号表的查找普通可以使用_B_:①顺序查找 ②折半查找 ③杂凑查找 ④排序查找可选项有:A 、①②③④ B 、①② C 、③④ D 、①②③13、语法分析的常用方法是B :①自顶向下 ②自底向上 ③自左向右 ④自右向左 可选项有:A 、①②③④B 、①②C 、③④D 、①②③14、LR 语法分析栈中存放的状态是识别文法规范句型_A_的DFA 状态。
编译原理考试试题
编译原理考试试题一、选择题(每题 2 分,共 20 分)1、编译程序是一种()。
A 系统软件B 应用软件C 实时系统D 分布式系统2、词法分析器的输出结果是()。
A 单词的种别编码和自身值B 单词在符号表中的位置C 单词的语法属性D 单词的语义信息3、正规式(ab|c)表示的语言是()。
A 以 ab 或 c 开头的字符串B 以 ab 或 c 结尾的字符串C 包含 ab 或 c 的字符串D 由 ab 或 c 组成的任意字符串4、设有文法 GS:S→aS|b,该文法描述的语言是()。
A {anb|n≥0}B {ambn|m,n≥0}C {an|n≥1}D {ambm|m,n≥0}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 解释程序和编译程序都生成目标代码二、填空题(每题 2 分,共 20 分)1、编译程序的工作过程一般可以划分为 5 个阶段,分别是、、、和。
2、词法分析的任务是从中识别出一个个。
3、确定的有穷自动机是一个元组,通常表示为。
4、语法分析最常用的两类方法是和。
5、常见的存储分配策略有、和。
6、局部优化的对象通常是。
7、基本块是指。
8、符号表的作用是。
编译原理试题
编译原理试题一、选择题(共20题,每题2分,共40分)1.解释程序和编译程序的区别在于( )。
A.是否生成中间代码B.加工的对象不同C.使用的实现技术不同D.是否生成目标程序2.文法G:S→[S]|[]所产生的语言是( )。
A.[m]n (m,n>0)B.[m]n(m,n>1)C.[m]m(m>=1)D.[n]n(n>=0)3.如果一个文法G是无二义性文法,则对任一个句子x∈L(G),该句子( )。
A.可能存在两个不同的最右推导B.可能存在两个不同的最左推导C.最左推导和最右推导不同D.仅存在一个最左推导和一个最右推导4.一个语言的文法是( )。
A.有限的B.不唯一的C.唯一的5.乔姆斯基把文法分为四种类型,即0型,1型,2型,3型。
2型文法也称为( )。
A.上下文无关文法B.上下文有关文法C.正则文法D.短语文法6.( )正规文法能产生语言L={a n b n|n>=1}。
A.存在一个B.不存在C.可能存在,也可能不存在7.同正规表达式(a|b)*等价的正规表达式是( )。
A.(a|b)+B.(a*|b*)*C.(ab)*D.(a*|b*)+8.如果一个有穷自动机所能识别的字符串集合是无穷的,则它必( )。
A.含有多个状态B.含有多条有向边C.含有多个终止状态D.含有回路9.称有穷自动机A1和A2等价是指( )。
A.A1和A都是定义在一个字母表Σ上的有穷自动机B.A1和A2 状态数和有向边数相等C.A1和A2 状态数或有向边数相等D.A1和A2 所能识别的字符串集合相同10.设有文法G(S为开始符号)S→Ap|BqA→a|cAB→b|dBFIRST(Ap)= ( )。
A.a,cB.b,dC.p,qD.其他答案11.一个文法G,若( ),则称它是LL(1)文法。
A.G中不含左递归B.G无二义性C.G的LL(1)分析表不含多重定义D.G中产生式不含左公因子12.在递归子程序方法中,如果文法存在左递归,则会使分析过程产生( )。
编译原理试题及答案
编译原理试题及答案一、选择题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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华中师范大学网络教育学院《编译原理》练习测试题库一、填空1.若源程序是用高级语言编写的,目标程序是______,则其翻译程序称为编译程序。
2.词法分析和语法分析本质上都是对源程序的______进行分析。
3.如果源语言(编写源程序的语言)是高级语言,而目标语言是某计算机的汇编语言或机器语言,则这种翻译程序称为_____。
4.对编译程序而言,输入数据是_______,输出结果是________。
5. ______,是构成语言文法的单词,是语法成分的最小单位。
6.由PL/0的EBNF可知,PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个__________。
7.由于PL/0编译程序采用_________,所以语法分析过程BLOCK是整个编译过程的核心。
8.用语法图描述语法规则的优点是______、________。
9.每个非终结符是一个语法成分,在书写语言程序时并不出现,它是由_________和_________、或终结符串定义的。
10.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机______。
11.PL/0的编译程序和目标程序的解释执行程序都是用_______书写的,因此PL/0语言可在配备_________的任何机器上实现。
12.PL/0编译程序是用PASCAL语言书写的,整个编译程序(包括主程序)是由______个嵌套及并列的过程或函数组成13.当源程序编译正确时,PL/0编译程序自动调用__________,对目标代码进行解释执行,并按用户程序要求输入数据和输出运行结果。
14.由于对某些非终结符可以递归定义,这就使得_________可用有穷的文法描述。
15. ______的任务是识别由词法分析给出的单词符号序列在结构上是否符合给定的文法规则。
16. PL/0编译程序的语法分析采用了____________。
17.语法分析程序除总控外主要有两大部分的功能,即_________和__________.18.PL/0的词法分析程序GETSYM,是一个独立的过程,其功能是为_________提供单词用的,是______的基础,它把输入的字符串形式的源程序分割成一个个单词符号。
19.每个过程应有过程首部以定义局部于它自己过程的常量、变量和过程标识符,也称_____。
20.词法分析程序GETSYM将完成的任务有:______, 识别保留字;_______,拼数,拼复合词,输出源程序.21.如果一个PL/0语言的单词序列在整个语法分析中,都能逐个得到匹配,直到_________,这时就说所输入的程序是正确的。
22.若要构造程序设计语言的编译程序,则首先要对程序设计语言本身有较为精确的描述。
而关于程序设计语言的描述,将涉及_____、语义和______三个方面。
23.凡是具有某种特殊性质的客体的聚合,都可称为______。
24.如果集合中元素个数为零,即集合中不含有任何元素,这样的集合称为_______,记为φ。
25.设有集合A和B,如果A和B有相同的元素,则称这两个集合是_______.26.设A、B为任意两个集合,由所有属于集合A或属于集合B的元素组成的集合,叫做集合A与B的_______.27. 设A、B为任意两个集合,由所有用于集合A且属于集合B的元素组成的集合,称为集合A与B的_______.28. 如果一个集合,它能包含我们所要考虑目标之内的所有元素,则称此集合为_____,记为E。
29.设A为一集合,由A的所有子集(包括空集及A本身)所组成的集合,称为A的______.30. 由两个按一定次序排列的客体组成的序列,称为_____.31. 设A和B为任意两个集合,若序偶的第一个成员是集合A的一个元素,第二个成员是集合B的一个元素,则所有这样的序偶组成的集合称为集合A和B的__________.32.在集合X上的关系R,如对任意x∈X,均有(x,x) ∈R,则称关系R是______。
33.在集合X上的关系R,如果合(x,y) ∈R,便必有(y,x) ∈R,则称关系R是________。
34.在集合X上的关系R,如果合(x,y) ∈R且(y,z) ∈R,必有(x,z) ∈R,则称关系R 是______。
35.例设 P={(1,2),(3,4),(2,2)} Q={(4,7),(2,9),(3,1)}则P·Q=____________________________36.符号串与符号组成顺序______,如符号串ab______ba,符号申001也______010。
37.假设G是一个文法,S是文法的开始符号,如果S=>*x,则称x是________。
38. 文法G产生的_______的全体是该文法描述的语言。
39.一个文法G[Z]若存在推导序列Z=>+···Z···,则称G(z)是______文法,这类文法所产生的句子有______个。
40.乔姆斯基把文法分成____类型.41.四个文法类的定义是逐渐增加限制的,因此每一种正规文法都是_______.42.最右推导常被称为________。
43.由规范推导所得的句型称为______。
44.文法的二义性和语言的二义性是两个_________的概念。
45.对于上下文无关文法,_______是句型推导过程的几何表示。
46.直接短语也称_______.47.每棵语法树的叶子组成一个______.48.每棵子树的叶子组成一个______.49. 每棵简单子树的叶子组成一个_______.50. 最左边简单子树的叶子组成_______.51.一个句型的最左直接短语称为该句型的_______。
52.关于句型或句子的直接推导"=>"和推导"=>+",实际上均可视为符号串之间关系,而且推导"=>+"为直接推导"=>"的_________。
53. ________是语言文法的等价表示,可用它来代替BNF规则集合。
54.某条规则U→u中的左部符号U(U不是识别符号),不在所属文法的任何其他规则右部出现,那么这条规则在推导中不起作用,即所有句子的推导始终不会用到此规则,显然这种规则是多余的。
也称这种非终结符为_________.55.从文法的某个非终结符号U推不出终结符号串,显然,所有含有U的规则是多余的。
也称这种非终结符为________。
56.若L是上下文有关语言、上下文无关语言或正规语言,则L∪{ε}和L - {ε}分别是上下文有关语言、_____和正规语言。
57.设有文法G,对于其中某一非终结符号U可能作出一些不同推导U =>+ Sx,其中S叫头符号,由于推导不同,由U产生的头符号S也可能不同,这些头符号S构成的集合,称为U 的推导的__________.58.一个上下文无关文法G包括四个组成部分依次是:_____,______,_______,_______.1159.文法所描述的语言是_______的集合。
60.词法分析器工作的第一步是输入源程序文本。
输入串一般是放在一个缓冲区中,这个缓冲区称________。
二、选择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.巴科斯-诺尔范式(即BNF)是一种广泛采用的_____的工具。
A.描述规则 B.描述语言 C.描述文法 D.描述句子7. 设r=(a|b|c)(x|y|z)则L(r)中元素为个()A.9 B.6 C.18 D.278、正则集合L={an|n≧0}相应的正则表达式是()A.a* B.a+ C.aa* D.aa+9. 编译过程中扫描器的任务包括______。
①组织源程序的输入②按词法规则分割出单词,识别出其属性,并转换成属性字的形式输出⑧删除注解④删除空格及无用字符⑤行计数、列计数⑥发现并定位词法错误⑦建立符号表A.②③④⑦ B.②③④⑥⑦ C.①②③④⑥⑦ D.①②③④⑤⑥⑦10、编译过程中,语法分析器的任务是______ 。
a.分析单词是怎样构成的b.分析单词串是如何构成语句和说明的c.分析语句和说明是如何构成程序的d.分析程序的结构A.bc Bd C.bcd D.abcd11、语法分析的常用方法是________ 。
a.自顶向下b.自底向上c.自左向右d.自右向左A.abcd B.ab C.cd D.abc12、编译程序中的语法分析器接受以________为单位的输入,并产生有关信息供以后各阶段使用。
A.表达式 B.产生式 C.单词 D.语句13、LL(1)文法的条件是_______。
A.对形如U->Xl|X2|…|Xn的规则,要求FIRST(Xi)∩FIRST(Xj)=Φ,(i≠j)B.对形如U->Xl|X2|…|Xn的规则,若Xi=>*ε,则要求FIRST(Xj)∩FOLLOW(U) =ΦC.A和BD.都不是14、一个右线性文法G一定是()A.LL(1)文法C.SLR(1)文法B.LR(1)文法D.上述三者都不是15、算符文法是指______的文法。
26①没有形如U->…VW…的规则(U,V,W∈VN)②终结符号集VT中任意两个符号对之间至多有一种优先关系成立⑧没有相同的规则右部④没有形如U->ε的规则A.① B.①② C.①②③D.①②③④16、算符优先文法是指______的文法。
①没有形如U->…VW…的规则(U,V,W∈VN)②终结符号集VT中任意两个符号对之间至多有一种优先关系成立⑧没有相同的规则右部④没有形如U->ε的规则A. ①② B.①②③ C. ①②③④ D.①②④17、下列文法G[S]的句型aR/aSb/aTb/,b 的最左素短语为______。
S->aTb|,T->RR->R/S|SA.aTbB.aSbC.SD.R/18、算符优先分析法每次都是对______进行归约,简单优先分析法每次都是对句柄进行归约。
A.最左短语 B.简单短语 C. 最左素短浯D.素短语19、xab + cde -*f/:=是赋值语句( ) 相应的后缀式A.x:=a+b+c*d-e/f B.x:=a+(b+c)*d-e/fC.x:+a+b+c*(d-e)/f D.x:=a+b+c+(c*d)-e/f20、LR(K)方法是______。