编译技术是计算机科学与技术专业研究生重要软件理论课程,培养学生解决问题的思路和抽象思维的方法。通过本课程的学习使学生对高级语言程序的编译过程及其原理有较全面的了解,从理论和实践上掌握高级语言程序翻译的基本原理,具有系统软件翻译开发的能力,为进行其它软件设计打下良好的基础。
学堂在线西安邮电大学编译技术(2022春)自测练习与单元测试题答案
第一章: 编译系统概论
- 程序语言一般分为()和() A高级语言 B专用程序语言 C低级语言 D通用程序语言…
- 高级语言的翻译方式有()和() A汇编方式 B模拟方式 C解释方式 D编译方式…
- 有人说:“用高级语言编写的源程序必须通过编译,得到目标代码后才能投入运行”…
- 编译过程中,语法分析器的任务不包括() A分析单词是怎样构成的 B分析单词串是如何构成语句和说明的 C…
- 编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过()这几步 a、编辑 b、编译 c、连接…
- 解释方式和编译方式的主要区别在于 A能否对源程序查错 B能否生成目标代码 C能否多用户运行 D机器…
- 若在Pascal语言源程序中出现“&#&”,且不出现在引号和注释里,在编译时会()…
- 若在C语言程序中出现“aa 11 bb=123;”,且不出现在引号和注释里,在编译时会 A词法分析时报错 B语义…
- 面向机器的语言指的是 A用于解决机器硬件设计问题的语言 B特定计算机系统所固有的语言 C各种计算…
- 面向机器语言的特点是 A程序的执行效率低,编制效率低,可读性差 B程序的执行效率高,编制效率高,可读性…
- 编译程序是对 A汇编程序的翻译 B高级语言的解释执行 C机器语言的执行 D高级语言的翻译…
- 编译程序是一种()软件 A系统 B应用 CMIS DERP
- ()不是编译程序的组成部分 A词法分析器程序 B代码生成程序 C设备管理程序 D语法分析程序…
- 设有表达式a*b-c,将其中a*b识别为表达式的编译阶段是() A词法分析 B语法分析 C语义分析 D代码生成…
- 编译原理各阶段的工作都涉及到() A表格管理 B语法分析 C出错处理 D代码优化…
第二章:上下文无关文法和形式语言
- 如果一个文法是二义文法,必然有()的现象存在 A文法的某一个句子存在两棵或两棵以上的语法树 B对于文…
- 给定语法A-->bAcc|ε,下面的符号串中为该文法的句子是() Abcc Bbcbc Cbcbcc Dbccbcc Ebbcccc…
- 给定语法A-->bAcc|ε,下面的符号串中为该文法的句子是() Abcc Bbcbc Cbcbcc Dbccbcc Ebbcccc…
- 对于文法G[Z],已知u是句型,则判断()是正确的 A只要使用规范推导,无论如何一定可以从Z推导出u B只要依…
- 由“非终结符-->符号串”这种产生式构成的文法是() A0型语法 B1型文法 C2型文法 D3型文法…
- 二义文法是指() A对应于两棵不同语法树的文法 B对应于两种不同推导的文法 C文法中任…
- 文法G[Z]和语言L(G[Z])存在如下关系: A一一对应,一个文法对应唯一的语言,并且,一个语言对应唯一的文法 …
- 关于短语和句柄,正确的论述是() A短语就是句柄 B直接短语才可能是句柄 C最左短语一定是句柄 D最右短…
- 若一个文法是递归的,则它产生的句子个数是() A无穷个 B可能有限个,可能无穷个 C有限个…
- 正则文法()二义性的。 A可以是 B一定不是 C一定是
- 一个语言的文法是() A唯一的 B不唯一的 C个数有限的 D无数个
- 文法识别符号经过任意步推导得到的结果是() A句型 B句柄 C句子 D短语…
- 文法分为四种类型:0型文法、1型文法、2型文法、3型文法,其中3型文法是() A短语文法 B正规文法 C上下…
- 在编译中产生语法树是为了() A语法分析 B语义分析 C词法分析 D目标代码生成…
- 一个上下文无关文法包含四个部分,一组非终结符,一组终结符,一个开始符号以及一组() A句子 B句型 C产生…
第三章:有穷自动机与正则表达式理论基础
- 某个语言,它能用正规表达式表示,但是不能使用任何正规文法表示,这个语言必然是()。 A含二义性语言 B1…
- 词法分析器的另一个名称是() A分析器 B扫描器 C划分处理器 D词法探索器…
- 面对众多的源语言的词法分析处理,总体上,超前读入和某种假读处理是() A可以避免的 B不可避免的 C徒劳…
- 下述正则表达式中()与(0*|1)*(+|-)等价 A0*(+|-)|1(+|-) B0*(+|-)*|1(+|-)* C0*(+|-)|1*(+|-) D(0|…
- “以0开头,以1结尾的二进制数字串”的正规式为( ) A0*|1* B0(0|1)1 C0*1* D0(0|1)*1…
- “不以0开头的十进制无符号整数”的正规式为( ) A(123456789)* B(1|2|3|4|5|6|7|8|9)* C(1|2|3|4|5…
- 确定的有限自动机是( ) ANFA B转换函数是多值映射 CDFA D终态唯一
- 非确定的有限自动机是( ) ADFA BNFA C只能有一个初态 D终态唯一
- 在一个状态转换图中,S1与S2是等价状态,则( ) AS1与S2前驱相同 BL(S1)=L(S2) CS1与S2都不是终态 D到达…
- 关于正则文法,描述错误的是( ) A又被称为3型文法 B多数程序设计语言的单词可用正则文法描述 C又被称…
- 一个正规式R与一个NFA M等价,是指( ) AL(R)=L(M) B不可能等价 C它们的字母表相同 D各选项都错误…
- 无关状态是( ) A互相没有关联的状态 B多余状态和死状态 C不能删去的状态 D终态…
- 关于LEX的描述正确的是( ) A是词法分析器的自动生成器 B其源程序是某种高级程序设计语言的代码 C其…
- 设有文法G[S]: S->S*S|S+S|(S)|a 该文法()二义性文法 A是 B不是 C无法判断…
- 确定的有穷自动机是一个五元组
第四章:语法分析
- 递归子程序法属于()语法分析方法 A自顶向下 B自底向上 C自左向右 D自右向左…
- 采用确定的自顶向下分析时,必须() A消除左递归 B消除右递归 C避免回溯 D提取左公因子…
- 自上而下语法分析的主要分析动作是 A推导 B移进 C归约 D匹配
- 一个字符属于FOLLOW(S),这个字符的含义是() A一定会有一个句型中后随S的终结符 BS可能推导出第一个字…
- 在递归子程序方法中,若文法存在左递归,则会使分析过程产生() A回溯 B非法调用 C有限次调用 D无限循…
- 编译程序中的语法分析器接受以()为单位的输入,并产生有关信息供以后各阶段使用 A表达式 B产生式 C单…
- 构造一个不带回溯的自顶向下语法分析器,要求文法满足 A对每个形如A→x1|x2|…|xn的产生式,要求FI…
- LL(1)文法()二义性的 A都是有 B都没有 C不一定有 D极少具有
- 语法分析器的常用方法是 A自顶向下 B自底向上 C自左向右 D自右向左
- LL(1)分析法又称为预测分析方法
- 左递归会造成自顶向下分析过程出现无穷的重复
- LL(1)文法不一定都是二义性的
- 考虑文法G[A]:A→A∨B|B B→B∧C|C C→┓C|D D→(A)|i 该文法是LL(1)文法
- 一个算符优先文法可能不存在算符优先函数与之对应
- LR分析法在自左至右扫描输入串时就能发现错误,并且能准确地指出出错地点。…
- 最左简单子树的末端结点构成的符号串称为( ) A简单短语 B句柄 C最左素短语 D素短语…
- 若a为终结符,则A→α·aβ为( )项目 A待约 B接受 C移进 D归约
- 下面哪种不是自底向上的语法分析文法( )。 ALR(1) BSLR(1) CLL(K) D算符优先法…
- LR(k)方法是( )。 A从左到右分析,每次向前预测k步的一种编译方法 B从左到右分析,是否归约句柄要向后看k…
- 算符优先分析是一种自底向上的分析方法,它是以( )作为每一步归约的对象。 A句柄 B最右直接短语 C最…
- 在通常的语法分析方法中,( )特别适用于表达式的分析。 A简单优先法 BLR分析法 C算符优先法…
- 若项目集Ik含有A->α·,则在状态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采取“A->α·”动作的一…
- 在规范归约中,任何可归约串的出现都在( ) A栈的内部 B剩余的输入串中 C栈顶 D在栈顶和输入串中…
- 一个LR分析器实质上是一个带有先进后出存储栈的( ) ADFA BNFA CACTION表 DLR分析表…
- LR分析法属于( ) A自顶向下分析法 BLALR分析法 CSLR分析法 D自底向上分析法…
- 自下而上语法分析的主要分析动作是( ) A移进 B推导 C归约 D匹配
第五章:语法制导翻译和中间代码
- 中间代码是介于源语言程序和什么之间的一种代码?( ) A源代码 B 机器语言 C汇编语言 D 目标代码…
- 在编译程序中与生成中间代码的目的无关的是( )。 A便于目标代码优化 B便于存储空间的组织 C便于目…
- 逆波兰表示法表示表达式时无须使用括号。
- 四元式之间的联系是通过( )实现的。 A指示器 B临时变量 C符号表 D程序变量…
- 后缀式 ab+cd+/可用表达式( )来表示。 Aa+b/c+d B(a+b)/(c+d) Ca+b/(c+d) Da+b+c/d…
- 表达式( ┐ A ∨B)∧(C∨D)的逆波兰表示为( )。 A┐AB∨∧CD∨ BA┐B∨CD∨∧ CAB∨┐CD∨∧…
- 间接三元式表示法的优点为( )。 A采用间接码表,便于优化处理 B 节省存储空间,不便于表的修改 C便于…
- 数组元素的地址计算与数组的存储方式有关。
- 树形表示和四元式不便于优化,而三元式和间接三元式则便于优化。
- 表达式a*b-c-def-g-h*i中,运算符的优先级由高到低依次为-、*、$,且均为右结合,则其后缀式为( )。 A…
- 以下( )不是中间代码的表示形式。 ADAG图 B后缀式 C三元式 D间接四元式…
- 表达式a+b*c-d/e↑f的后缀式是( )。 Aab+c*d-e↑f Babc+*def/↑- Cabc*+def↑/- Dabc*+-def↑/…
- 编译过程中将源代码翻译成中间代码,具有很多优点,其中( )不是中间代码的优点。 A中间代码不能用于解…
- 中间代码生成时依据的是( )。 A语法规则 B词法规则 C语义规则 D等价变换规则…
- 采用三元式实现三地址代码时,不利于对中间代码进行优化。
第六章:符号表
- 在目标代码生成阶段,符号表用 A目标代码生成 B语义检查 C语法检查 D地址分配…
- 在编译处理过程中,符号表只有在词法分析阶段和语法分析阶段才是有用。…
- 符号表常用的操作不包括( )。 A查询给定的名字是否已在表中 B检查名字是否符合标识符命名的文法 C…
- 目标代码生成阶段,对符号名进行地址分配的依据是( ) A符号表 BDFA C符号栈 D预测分析表…
- 编译一个源程序时,符号表可以是一张统一的表,也可以按名字的不同种属分为几张。…
- 使用二叉树组织符号表,查找时以下说法( )是错误的。 A如果树根节点的名字和待查找的名字相同,则查找…
- 为了提高线性符号表的查找效率,可以将线性组织成自适应线性表。
- 对于过程嵌套结构性语言,设计符号表时在信息栏中引入一个指针域previous来指向下一个名字。…
- 建立完整的符号表只需要扫描一遍程序。
- 有些语言没有说明语句也没有隐含的约定,符号表中名字的性质要到目标程序运行时才能确定下来。…
第七章:运行时存储空间组织
- FORTRAN这样的语言,不允许过程递归,不含可变体积的数据对象或待定性质的名称,能在编译时完全确定其…
- C语言,允许递归过程,还允许用户动态地申请和释放存储空间,应采用以下哪种存储分配策略( ) A静态分配策…
- 嵌套过程语言的程序,内层过程引用非局部量可通过( )跟踪外层过程最新活动记录的位置 A老SP B静态链 …
- 关于全局display正确的是( ) A记录全局变量在存储器中的位置 B记录直接外层过程活动记录的基地址 C…
- 关于嵌套层次表display表描述正确的是() A过程的层数为i,则display表有i个单元 Bdisplay表只有一个…
- 过程活动的生存期可以重叠
- 过程活动的生存期可以嵌套
- 用一个连续的存储块存放管理过程的活动所需要的信息,称这样的连续存储块为活动记录…
- 栈式存储分配中,SP指针指向栈顶
- 活动记录中的“老SP”是指向外层过程最新活动记录基地址的指针
- 嵌套过程语言的程序,主程序的嵌套层次(简称为层数)定义为1
- 过程的层数为i,则display表有i+1个单元
- 过程嵌套层次显示表的生成与主调过程没有任何关系
- 可以通过主调过程的display表来生成被调过程的display表
- 利用display表来实现对非局部量的访问比利用静态链更高效
第八章:优化
- 局部优化是在( )范围内进行的优化? A过程体 B基本块 C函数体 D循环体…
- 有关基本归纳变量的作用,错误的是( ) A自身定值 B计算其它同族归纳变量 C控制循环 D记录循环的结果…
- 在循环内可以实行的优化有( ) A代码外提 B删除归纳变量 C强度削弱 D以上都有…
- 利用DAG进行局部优化,不能实现( ) A删除公共子表达式 B删除无用赋值 C代码外提 D合并已知量…
- 对于基本快内Out集合由In集合计算出来,而对于基本块之间,In集合由前驱基本块的Out集合计算出来。…
- 优化应该不计一切代价追求高效的程序。
- 对于所有相同的表达式,仅保留一个,删除其余,称作删除公共子表达式…
- 只要在循环中不会发生变化的运算,都是可以进行代码外提的。
- 合并已知量是将编译时可以计算出的值计算出来,不必等到运行时再计算…
- 强度削弱是指把程序中执行时间较长的运算替换为执行时间较短的运算…
- 删除公共子表达式是一种局部优化,仅在基本块内可采用此方法
- DAG是有向无环图,利用DAG可实现局部优化
- 分析表达式的可用性,可用来进行全局公共子表达式的优化。
- 一个变量若在某基本块出口处是活跃的,则其在该基本块入口处也必定是活跃的…
- 交换语句顺序并没有减少语句的数量,所以不是一种优化方法