20春西交《编译原理》在线作业答案3
- 格式:doc
- 大小:25.28 KB
- 文档页数:15
西安交通大学课程考试复习资料单选题1.有文法G=({S},{a},{S→SaS,S→ε},S),该文法是( )。
A.LL(1)文法B.二义性文法C.算符优先文法D.SLR(1)文法;答案: B2.正规表达式(ε|a|b)2表示的集合是( )A.{ε,ab,ba,aa,bb}B.{ab,ba,aa,bb}C.{a,b,ab,aa,ba,bb}D.{ε,a,b,aa,bb,ab,ba}答案: D3.以( )作为输出,允许自程序单独编译。
A.绝对机器代码B.可再定位机器语言C.汇编语言程序D.中间语言答案: B4.Fortran语言的编译程序采用( )分配策略。
A.静态B.最佳C.堆式动态D.栈式动态答案: A5.两个不同过程的活动,其生存期是( )。
A.重叠的,不嵌套的B.不重叠的,嵌套的C.重叠的,嵌套的D.不重叠的,不嵌套的答案: B6.表达式作为实在参数可以传递给被调用的过程,替换过程体中的( )。
A.局部变量B.形式参数C.全局变量D.实在参数答案: B7.编译程序使用( )区别标识符的作用域。
A.说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D.标识符的行号答案: B8.表达式-a+b*(-c+d)的逆波兰式是( )。
A.ab+-cd+-*B.a-b+c-d+*C.a-b+c-d+*D.a-bc-d+*+答案: D9.使用三元式是为了( )。
A.便于代码优化处理B.避免把临时变量填入符号表C.节省存储代码的空间D.提高访问代码的速度答案: B10.为了便于优化处理,三地址代码可以表示成( )。
A.三元式B.四元式C.后缀式D.间接三元式答案: D11.布尔表达式计算时可以采用某种优化措施,比如A and B用if-then-else可解释为( )。
A.if A then true else BB.if A then B else false;C.if A then false else true;D.if A then true else false;答案: B12.对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是( )。
编译原理3答案【篇一:编译原理试题及答案3】填空题: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个输入符号)。
13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。
西安交通大学课程考试复习资料单选题1.有文法G=({S},{a},{S→SaS,S→ε},S),该文法是( )。
A.LL(1)文法B.二义性文法C.算符优先文法D.SLR(1)文法;答案: B2.正规表达式(ε|a|b)2表示的集合是( )A.{ε,ab,ba,aa,bb}B.{ab,ba,aa,bb}C.{a,b,ab,aa,ba,bb}D.{ε,a,b,aa,bb,ab,ba}答案: D3.以( )作为输出,允许自程序单独编译。
A.绝对机器代码B.可再定位机器语言C.汇编语言程序D.中间语言答案: B4.Fortran语言的编译程序采用( )分配策略。
A.静态B.最佳C.堆式动态D.栈式动态答案: A5.两个不同过程的活动,其生存期是( )。
A.重叠的,不嵌套的B.不重叠的,嵌套的C.重叠的,嵌套的D.不重叠的,不嵌套的答案: B6.表达式作为实在参数可以传递给被调用的过程,替换过程体中的( )。
A.局部变量B.形式参数C.全局变量D.实在参数答案: B7.编译程序使用( )区别标识符的作用域。
A.说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D.标识符的行号答案: B8.表达式-a+b*(-c+d)的逆波兰式是( )。
A.ab+-cd+-*B.a-b+c-d+*C.a-b+c-d+*D.a-bc-d+*+答案: D9.使用三元式是为了( )。
A.便于代码优化处理B.避免把临时变量填入符号表C.节省存储代码的空间D.提高访问代码的速度答案: B10.为了便于优化处理,三地址代码可以表示成( )。
A.三元式B.四元式C.后缀式D.间接三元式答案: D11.布尔表达式计算时可以采用某种优化措施,比如A and B用if-then-else可解释为( )。
A.if A then true else BB.if A then B else false;C.if A then false else true;D.if A then true else false;答案: B12.对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是( )。
编译原理试题及答案
试题:
1. 解释编译原理的定义,同时给出编译器的作用。
2. 简要描述编译过程中的四个基本步骤。
3. 解释词法分析器的功能和作用。
4. 解释语法分析器的功能和作用。
答案:
1. 编译原理是研究如何将高级语言程序转化为等价机器语言程序的一门学科。
编译器是将高级语言文本转换成等价的机器语言的软件工具。
它负责将源代码转化为目标代码,以便计算机能够理解和执行。
2. (1) 词法分析:将源代码分解成一系列单词或标记。
(2) 语法分析:根据语法规则组织单词或标记形成语法树。
(3) 语义分析:分析语法树以检测语义错误。
(4) 代码生成:根据语法树生成目标代码。
3. 词法分析器的功能是将源代码分解成一系列单词或标记。
它将源代码读取为字符流,然后将这些字符组成单词,同时可以去除空格、注释等不具有实际意义的内容。
词法分析器的作用是为语法分析器提供正确的单词序列,为后续的语义分析和代
码生成步骤建立基础。
4. 语法分析器的功能是根据语法规则组织单词或标记形成语法树。
它通过构建语法树来分析源代码的语法结构,同时可以检测语法错误。
语法分析器的作用是为后续的语义分析和代码生成步骤提供一个结构化的表示形式,便于后续的处理和转换。
《编译原理》习题解答:第一次作业:P14 2、何谓源程序、目标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系?答:被翻译的程序称为源程序;翻译出来的程序称为目标程序或目标代码;将汇编语言和高级语言编写的程序翻译成等价的机器语言,实现此功能的程序称为翻译程序;把汇编语言写的源程序翻译成机器语言的目标程序称为汇编程序;解释程序不是直接将高级语言的源程序翻译成目标程序后再执行,而是一个个语句读入源程序,即边解释边执行;编译程序是将高级语言写的源程序翻译成目标语言的程序。
关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。
P14 3、编译程序是由哪些部分组成?试述各部分的功能?答:编译程序主要由8个部分组成:(1)词法分析程序;(2)语法分析程序;(3)语义分析程序;(4)中间代码生成;(5)代码优化程序;(6)目标代码生成程序;(7)错误检查和处理程序;(8)信息表管理程序。
具体功能见P7-9。
P14 4、语法分析和语义分析有什么不同?试举例说明。
答:语法分析是将单词流分析如何组成句子而句子又如何组成程序,看句子乃至程序是否符合语法规则,例如:对变量x:= y 符合语法规则就通过。
语义分析是对语句意义进行检查,如赋值语句中x与y类型要一致,否则语法分析正确,语义分析则错误。
P15 5、编译程序分遍由哪些因素决定?答:计算机存储容量大小;编译程序功能强弱;源语言繁简;目标程序优化程度;设计和实现编译程序时使用工具的先进程度以及参加人员多少和素质等等。
补充:1、为什么要对单词进行内部编码?其原则是什么?对标识符是如何进行内部编码的?答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。
对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。
(单选题) 1: 文法G产生的( )的全体是该文法描述的语言。
A: 句型
B: 终结符集
C: 非终结符集
D: 句子
正确答案: D
(单选题)2: 正则文法( )二义性的。
A: 可以是
B: 一定不是
C: 一定是
D: 没有正确答案
正确答案: A
(单选题)3: 用高级语言编写的程序经编译后产生的程序叫( )
A: 源程序
B: 目标程序
C: 连接程序
D: 解释程序
正确答案: B
(单选题)4: 在LR(0)的ACTION子表中,如果某一行中存在标记"rj"的栏,则( )。
A: 该行必定填满rj
B: 该行未填满rj
C: 其他行也有rj
D: goto子表中也有rj
正确答案: A
(单选题)5: 程序语言的单词符号一般可以分为5种,下面( )不需要超前搜索
A: 关键字
B: 标识符
C: 常数
D: 算符和界符
正确答案: B
(单选题)6: 使用()可以定义一个程序的意义。
A: 语义规则
B: 词法规则
C: 产生规则
D: 词法规则
正确答案: A
(单选题)7: 现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个( )把各个目标模块,包括系统提供的库模块连接在一起,确定程序变。
编译原理课后答案问题一计算机程序的执行是一个多阶段的过程,其中编译是其中的一环。
请问编译的三个主要阶段分别是什么?答:编译过程一般可以分为三个主要阶段,分别是词法分析、语法分析和代码生成。
下面分别对这三个阶段进行介绍。
1. 词法分析词法分析是编译过程的第一步,也是最基础的一步。
它的任务是将源代码中的字符序列分解成一个个具有独立含义的单词,这些单词被称为“记号”或“词法单元”。
词法分析器根据程序中每一个字符的组合规则,将其转化为一个个词法单元,并记录下词法单元的类型标记。
词法分析器的工作一般通过有限状态自动机来实现,它根据一定的词法规则进行扫描和分析。
2. 语法分析语法分析是编译过程的第二步,它接收词法分析器生成的词法单元流,根据语法规则进行分析,并生成一棵语法树。
语法分析的主要任务是确定输入程序的结构,检查程序的语法正确性,并生成用于后续处理的输入形式。
语法分析器一般采用的是自顶向下或自底向上的分析方法,常用的方法有递归下降法和LR(1)分析法。
3. 代码生成代码生成是编译过程的最后一步,它将语法分析生成的语法树转化为目标机器的可执行代码。
代码生成器通过遍历语法树,将每个语法树节点转化为相应的目标机器代码。
代码生成过程中需要考虑到目标机器的特性和限制,以及优化代码的效率和性能。
问题二请解释一下编译原理中的词法规则是什么?答:编译原理中的词法规则指的是一组规定词法单元模式的规则。
它描述了如何将输入字符序列转换为词法单元,并为每个词法单元定义了一个标记。
词法规则一般使用正则表达式来描述词法单元的模式。
编译器根据词法规则构建词法分析器,用于将源代码分割成一系列的词法单元。
词法规则的灵活性和准确性对编译过程的性能和结果都有较大的影响。
一个完整的词法规则一般包含以下几个部分:1.正则表达式:描述了词法单元的模式,使用特定的正则表达式语法来表示。
2.动作:描述了当词法单元匹配到模式时,需要执行的动作或处理过程。
西工大20春《编译原理》在线作业答案
西工大19秋《编译原理》在线作业
试卷总分:100 得分:100
一、单选题(共20 道试题,共50 分)
1.一个文法是递归的,则它产生的语言的句子个数()。
A.必定无穷
B.必定有限
C.可能无穷,也可能有限
D.说不准
答案:A
2.如果活动记录中没有DISPLAY表,则说明()。
A.程序中不允许有递归定义的过程
B.程序中不允许有嵌套定义的过程
C.程序中既不允许有嵌套定义的过程,也不允许有递归定义的过程
D.程序中既允许有嵌套定义的过程,也允许有递归定义的过程
答案:B
3.语法分析器可以发现源程序中的()。
A.语义错误
B.语法和语义错误
C.错误并校正
D.语法错误
答案:D
4.给定文法G[E]:E→E+T∣T T→T*F∣F F→(E)∣i, 则以下()全都不是规范句型的活前缀①T+ ②T* ③ε④T*F ⑤E+E ⑥E* ⑦E+ T* ⑧i ⑨(E+T)⑩(i)
A.②④⑥
B.⑤⑥⑩
C.①②③④
D.⑦⑧⑨
答案:A
5.词法分析器用于识别()。
A.字符串
B.语句
C.单词
D.标识符
答案:C
6.在整理和查找操作时,下列哪项的效果最高()。
A.杂凑
B.二叉树
C.线性表
D.图。
(单选题)1: 许多广为使用的语言,如Fortran、C、Pascal等,属于()。
A: 强制式语言
B: 应用式语言
C: 基于规则的语言
D: 面向对象的语言
正确答案: A
(单选题)2: 在编译方法中,动态存储分配的含义是( )。
A: 在运行阶段对源程序中的数组.变量.参数等进行分配
B: 在编译阶段对源程序中的数组.变量.参数进行分配
C: 在编译阶段对源程序中的数组.变量.参数等进行分配,在运行时这些数组.变量.参数的地址可根据需要改变
D: 其他都不正确
正确答案: A
(单选题)3: 现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。
A: 重定位程序;
B: 解释程序;
C: 连接装配程序;
D: 诊断程序;
正确答案: C
(单选题)4: 语法分析应遵循()。
A: 语义规则
B: 语法规则
C: 构词规则
D: 等价变换规则
正确答案: C
(单选题)5: ()是指源程序中不符合语法或词法规则的错误,这些错误一般在词法分析或语法分析时能检测出来。
A: 语义错误
B: 语法错误
C: 短语错误
D: 短句错误
正确答案: B
(单选题)6: 在使用高级语言编程时,首先可通过编译程序发现源程序的全部和部分( )错误。
A: 语法
B: 语义
C: 语用。