《编译原理小题答案》由会员分享,可在线阅读,更多相关《编译原理小题答案(16页珍藏版)》请在金锄头文库上搜索。
1、编译原理常见题型一、填空题1编译程序的工作过程一般可以划分为词法分析,语法分析,中间代码生成,.代码优化(可省,目标代码牛成等几个基本阶段。2若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序.3. 编译方式与解释方式的根本区别在于是否生成目标代码5对编译程序而言,输入数据是源程序,输岀结果是目标程序 .7若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称 为编译程序。&一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标 代码生成等五个部分,还应包括表格处理和出错处理。其中,词法分析器用于识 别单词。10
2、. 一个上下文无关文法所含四个组成部分是一组终结符号、.一组非终结符号、一个开始符号、一组产生式。12. 产生式是用于定义语法成分的一种书写规则。13. 设GS是给定文法,则由文法G所定义的语言L(G)可描述为:L(G) = x丨S=*14. 设G是一个给定的文法,S是文法的开始符号,如果S = x (其中xGV*),则称x是文 法的一个 句型 15. 设G是一个给定的文法,S是文法的开始符号,如果S = x(其中xGV*),则称x是文法T的一个句子16. 扫描器的任务是从源程序中识别出一个个单词符号17. 语法分析最常用的两类方法是自上而下 和自下而上分析法。18. 语法分析的任务是识别给定
3、的终结符串是否为给定文法的句子19递归下降法不允许任一非终结符是直接_左_递归的。20.自顶向下的语法分析方法的关键是如何选择候选式的问题。21递归下降分析法是自 顶向下 分析方法。22. 自顶向下的语法分析方法的基本思想是:从文法的开始符号 开始,根据给定的输入 串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子 ,使之 与给定的输入串匹配。23. 自底向上的语法分析方法的基本思想是:从给定的终结符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。24. 自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地向上进行直接归约,
4、力求 归约到文法的开始符号。26.在LR (0)分析法的名称中,L的含义是 自左向右的扫描输入串,R的含义是 最左归约 ,0的含义是向貌似句柄的符号串后查看0个输入符号 。31终结符只有综合属性,它们由词法分析器提供。x,xW VT*32在使用高级语言编程时,首先可通过编译程序发现源程序的全部A (语法)错误和B(语义)部分错误.34. 个句型中的最左简单短语称为该句型的句柄_。36从功能上说,程序语言的语句大体可分为_执行性语句和说明性语句两大类。37. 语法分析是依据语言的_语法_规则进行的,中间代码产生是依据语言的_语义_规进 行的。38. 语法分析器的输入是_单词符号,其输出是_语法单
5、位。40. 逆波兰式 ab+c+ d*e- 所表达的表达式为_(a+b+c)*d-c_ 。41. 计算机执行用高级语言编写的程序主要有两种途径:_解释_和_编译_。42. 自上而下分析法采用_移进_、归约、错误处理、接受_等四种操作。43. 一个 LR 分析器包括两部分:一个总控程序和_一张分析表_。44. 后缀式abc-/所代表的表达式是a/(b-c)。46.语法分析基于_上下文无关_文法进行,即识别的是该类文法的句子。语法分析的有效 工具是_语法树_。48. 语义分析阶段所生成的与源程序等价的中间表示形式可以有_逆波兰_、四元式表示_ 与_三元式表示等。51.自顶向下语法分析会遇到的主要问
6、题有 左递归 和 回溯52已知文法GE: E-T|E+T; T-F|T*F;F-(E)|i该文法的开始符号是,终结符号集合vt是,非终结符号结合vn是。二、单选题1. 一个编译程序中,不仅包含词法分析,(A),中间代码生成,代码优化,目标代码生成 等五个部分。A. 语法分析B.文法分析C.语言分析D.解释分析2. 语法分析器则可以发现源程序中的(D )。A. 语义错误B.语法和语义错误C.错误并校正D.语法错误3. 解释程序处理语言时,大多数采用的是(B)B方法。A. 源程序命令被逐个直接解释执行B. 先将源程序转化为中间代码,再解释执行C. 先将源程序解释转化为目标程序,再执行D. 以上方法
7、都可以4. 编译程序是一种(B)。A.汇编程序B.翻译程序C.解释程序D. 目标程序5. 通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标 代码生成等五个部分,还应包括(C)。A.模拟执行器 B.解释器C.表格处理和出错处理 D.符号执行器6. 个句型中的最左(B)称为该句型的句柄。A.短语 B.简单短语 C.素短语 D.终结符号7. 文法 GE :Ef T | E+TF | T * FFfa | (E)该文法句型E+F* (E+T)的简单短语是下列符号串中的(B)。(E+T) E+T F F*(E+T)A.和B.和 C.和 D.8. 词法分析器用于识别(C)。A.
8、句子 B.句型 C.单词D.产生式9在自底向上的语法分析方法中,分析的关键是(D)。A.寻找句柄B.寻找句型C.消除递归 D.选择候选式10文法G产生的(D)的全体是该文法描述的语言。A.句型 B.终结符集 C.非终结符集 D.句子11. 若文法G定义的语言是无限集,则文法必然是(A)。A.递归的B.前后文无关的C. 二义性的D.无二义性的12四种形式语言文法中,1型文法又称为(C)C文法。A.短语结构文法B.前后文无关文法 C.前后文有关文法 D.正规文法13. 一个文法所描述的语言是(A)。A.唯一的B.不唯一的C.可能唯一,好可能不唯一D.都不对14. (B)和代码优化部分不是每个编译程
9、序都必需的。A.语法分析B.中间代码生成C.词法分析D. 目标代码生成15. (B) 是两类程序语言处理程序。A.高级语言程序和低级语言程序B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序16. 一个上下文无关文法G包括四个组成部分,它们是:一组非终结符号,一组终结符号 一个开始符号,以及一组(D)。A.句子B.句型C.单词 D.产生式17. 文法分为四种类型,即0型、1型、2型、3型。其中2型文法是(D)。A.短语文法B.正则文法C.上下文有关文法 D.上下文无关文法18文法G所描述的语言是(C)的集合。A. 文法G的字母表V中所有符号组成的符号串B. 文法G的字母表V的闭
10、包V*中的所有符号串C. 由文法的开始符号推出的所有终结符串D. 由文法的开始符号推出的所有符号串19. 文法分为四种类型,即0型、1型、2型、3型。其中0型文法是(A)。A.短语文法B.正则文法 C. 上下文有关文法D. 上下文无关文法20. (A是一种典型的解释型语言。A. BASICB. C C. FORTRAND. PASCAL21. 与编译系统相比,解释系统(D)。A.比较简单,可移植性好,执行速度快B.比较复杂,可移植性好,执行速度快C.比较简单,可移植性差,执行速度慢D.比较简单,可移植性好,执行速度慢22. 用高级语言编写的程序经编译后产生的程序叫(B)。A.源程序 B. 目标
11、程序 C.连接程序D.解释程序23. 编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过(B)这几步:(1) 编辑 (2) 编译 (3) 连接 (4) 运行A. (1)(2)(3)(4) B. (1)(2)(3) C. (1)(3)D. (1)(4)24 .把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。A.编译器B.汇编器C.25. 词法分析器的输出结果是(C)。A.单词的种别编码B.C.单词的种别编码和自身值D.26. 正规式M 1和M 2等价是指(C)。A. M1 和 M2 的状态数相等C. M1 和 M2 所识别的语言集相等解释器D.预处理器单词在符号表中
12、的位置单词自身值B. M1 和 M2 的有向边条数相等D. M1 和 M2 状态数和有向边条数相等27. 文法G: SfxSx|y所识别的语言是(C)。A. xyx B. (xyx)* C. xn yxn(n 0)D. x*yx*28. 如果文法G是无二义的,则它的任何句子a (A)。A. 最左推导和最右推导对应的语法树必定相同B. 最左推导和最右推导对应的语法树可能不同C. 最左推导和最右推导必定相同D. 可能存在两个不同的最左推导,但它们对应的语法树相同29. 构造编译程序应掌握(D)。A.源程序 B. 目标语言 C.编译方法D.以上三项都是30. 四元式之间的联系是通过(B)实现的。A.
13、指示器B.临时变量C.符号表31.表达式(jAVB)A(CVD )的逆波兰表示为(B)。A33.AC34.AD程序变量q ABVACDV B. AqBVCDVA C. ABVq CDVA 编译程序是对(D)。汇编程序的翻译 B.高级语言程序的解释执行 机器语言的执行D.高级语言的翻译采用自上而下分析,必须(0。消除左递归 B.消除右递归D. AqBVACDVC.消除回溯D.提取公共左因子35. 在规范归约中,用()B来刻画可归约串。A.直接短语B.句柄|36. 间接三元式表示法的优点为(A)。A.采用间接码表,便于优化处理C.便于优化处理,节省存储空间37. 在目标代码生成阶段,符号表用(D)
14、。A. 目标代码生成B.语义检查38. 下面关于解释程序的描述正确的是 L-(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL和FORTRAN语言(3) 解释程序是为打开编译程序技术的僵局而开发的A. (1)(2) B. (1) C. (1)(2)(3)D.(2)(3)39. 解释程序处理语言时,大多数采用的是B方法.A. 源程序命令被逐个直接解释执行B. 先将源程序转化为中间代码,再解释执行C. 先将源程序解释转化为目标程序,在执行D. 以上方法都可以40. 用不同语言编写的程序产后,可用连接在一起生成机器可执行的程序.在机器中真正执行的是.上面三空格对应的选项是:A _源程序 b.目标程序c.函数 d.过程 机器指令代码 f. 模块 g. 连接程序 h. 程序库a.c.C.最左素短语D.素短语e.B.D.节省存储空间节省存储空间C.语法检查不便于表的修改 不便于优化处理D.地址分配A. b、g、eB. b、c、eC. e、g、fD. e、c、f41.由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组合成_ 诸阶段的工作往往进行的.上面两空格对应的选项是:注a.过程b.程序c.批量d.遍e. 顺序 f. 并行 g. 成批 h. 穿插A. d 和 h B