
编译原理练习题参考答案[](20220108105028).pdf
15页1 / 15 一、填空题 : 1-01. 编译程序的工作过程一般可以划分为词法分析 , 语法分析 , 语义分析,之间代码生成, 代码优化等几个基本阶段, 同时还会伴有表格处理和 出错处理 . 1-02. 若源程序是用高级语言编写的, 目标程序是机器语言程序或汇编程序 ,则其翻译程序称为编译程序. 1-03. 编译方式与解释方式的根本区别在于是否生成目标代码 . 1-04. 翻译程序是这样一种程序, 它能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程序 . 1-05. 对编译程序而言, 输入数据是源程序 , 输出结果是目标程序 . 1-06. 如果编译程序生成的目标程序是机器代码程序, 则源程序的执行分为两大阶段: 编译阶段和运行阶段 .如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段: 编译阶段 , 汇编阶段和 运行阶段 . 1-07. 若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序 1-08. 一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。
其中,词法分析器用于识别单词1-09. 编译方式与解释方式的根本区别为是否生成目标代码2-01. 所谓最右推导是指:任何一步 都是对 中最右非终结符进行替换的2-02. 一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式2-03. 产生式是用于定义语法成分的一种书写规则2-04. 设 GS是给定文法,则由文法G所定义的语言L(G) 可描述为: L(G) x Sx,x VT* 2-05. 设 G是一个给定的文法,S是文法的开始符号,如果 Sx (其中 xV*),则称 x 是文法的一个句型2-06. 设 G是一个给定的文法,S是文法的开始符号,如果Sx( 其中 xVT*), 则称 x 是文法的一个句子3-01. 扫描器的任务是从源程序中识别出一个个单词符号4-01. 语法分析最常用的两类方法是自上而下和自下而上分析法4-02. 语法分析的任务是识别给定的终极符串是否为给定文法的句子4-03. 递归下降法不允许任一非终极符是直接左 递归的4-04. 自顶向下的语法分析方法的关键是如何选择候选式的问题4-05. 递归下降分析法是自顶向上分析方法4-06. 自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。
5-01. 自底向上的语法分析方法的基本思想是:从给定的终极符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号5-02. 自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地向上进行直接归约,力求归约到文法的开始符号5-03. 简单优先方法每次归约当前句型的句柄,算符优先方法每次归约当前句型的最左素短语,二者都是不断移进输入符号,直到符号栈顶出现可归约串的尾,再向前找到可归约串的头,然后归约5-04. 在 LR (0)分析法的名称中,L 的含义是自左向右的扫描输入串,R的含义是最左归约,0 的含义是向貌似句柄的符号串后查看0 个输入符号2 / 15 5-05. 在 SLR (1)分析法的名称中,S的含义是简单的6-01. 所谓属性文法是一个属性文法是一个三元组:A( G , V,F),一个上下文无关文法G ;一个属性的有穷集 V和关于属性的断言或谓词的有穷集F每个断言与文法的某产生式相联6-02. 综合属性是用于“自下而上”传递信息6-03. 继承属性是用于“自上而下”传递信息6-04. 终结符只有综合属性,它们由词法分析器提供7-01. 在使用高级语言编程时, 首先可通过编译程序发现源程序的全部 A 错误和 B 部分错误 . a. 语法 b. 语义 c. 语用 d. 运行8-01. 符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。
8-02. 一个过程相应的DISPLAY表的内容为现行活动记录地址和所有外层最新活动记录的地址9-01. 一个过程相应的DISPLAY表的内容为现行活动记录地址和所有外层最新活动记录的地址9-02. 常用的两种动态存贮分配办法是栈式动态分配和堆式动态分配9-03. 常用的参数传递方式有传地址,传值和传名10-01. 局部优化是局限于一个基本块范围内的一种优化10-02. 代码优化的主要目标是如何提高目标程序的运行速度和如何减少目标程序运行时所需的空间二、单选题 : 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 或者 b e. a 或者 c f. b 或者 c 1-13. 下面关于解释程序的描述正确的是 b . (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的3 / 15 a. (1)(2) b. (1) c. (1)(2)(3) d.(2)(3) 1-14. 高级语言的语言处理程序分为解释程序和编译程序两种. 编译程序有五个阶段,而解释程序通常缺少(1)e 和 (1)b .其中, (1)e 的目的是使最后阶段产生的目标代码更为高效. 与编译系统相比,解释系统 (2)d .解释程序处理语言时, 大多数采用的是 (3)b 方法 . (4)a 就是一种典型的解释型语言. (1): a. 中间代码生成 b. 目标代码生成 c. 词法分析 d. 语法分析 e. 代码优化 (2): a.比较简单 ,可移植性好 , 执行速度快 b.比较复杂 ,可移植性好 , 执行速度快 c.比较简单 ,可移植性差 , 执行速度慢 d.比较简单 ,可移植性好 , 执行速度慢 (3): a.源程序命令被逐个直接解释执行 b.先将源程序转化为之间代码,再解释执行c. 先将源程序解释转化为目标程序, 在执行 d.以上方法都可以 (4) : a. BASIC b. C c. FORTRAN d. PASCAL 1-15. 用高级语言编写的程序经编译后产生的程序叫 b .用不同语言编写的程序产生 b 后, 可用 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 / 15 (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. 汇编程序 B. 翻译程序 C. 解释程序 D. 目标程序1-29 按逻辑上划分,编译程序第二步工作是 C A. 语义分析 B. 词法分析 C. 语法分析 D. 代码优化1-30通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 C A.模拟执行器 B.解释器 C.表格处理和出错处理 D.符号执行器2-07 文法 G所描述的语言是 C 的集合A.文法 G的字母表 V中所有符号组成的符号串B.文法 G的字母表 V的闭包 V*中的所有符号串C.由文法的开始符号推出的所有终极符串D.由文法的开始符号推出的所有符号串2-08乔姆斯基 (Chomsky)把文法分为四种类型,即 0 型、1 型、2 型、3 型其中 3 型文法是 B A.短语文法 B.正则文法 C.上下文有关文法 D.上下文无关文法2-09. 文法 GN= (b ,N,B, N,N bbB, BbN) ,该文法所描述的语言是 C A. L(GN)=bii 0 B. L(GN)=b2i i 0 C. L(GN)=b2i+1i 0 D. L(GN)=b2i+1i 1 2-10 一个句型中的最左 B 称为该句型的句柄。
可选项有:A. 短语 B. 简单短语 C. 素短语 D. 终结符号2-11 设 G是一个给定的文法, S是文法的开始符号, 如果 Sx( 其中 xV*), 则称 x 是文法 G的一个 B A. 候选式 B. 句型 C. 单词 D. 产生式2-12 一个上下文无关文法G包括四个组成部分,。












