奥鹏西安交通大学2020年3月课程考试《编译原理》参考资料答案

合集下载

奥鹏西安交通大学2020年3月课程考试《Java语言》参考资料答案

奥鹏西安交通大学2020年3月课程考试《Java语言》参考资料答案

西安交通大学课程考试复习资料单选题1.给出下面代码,关于该程序以下哪个说法是正确的?( )public class Person{static int arr[] = new int[5];public static void main(String a[]) {System.out.println(arr[0]);}}}A.编译时将产生错误B.编译时正确,运行时将产生错误C.输出零D.输出空答案: C2.有如下代码段:1)2) { if(unsafe()){//do something…}3) else if(safe()){//do the other…}4) }其中,方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?( )A.public IOException methodName()B.public void methodName()C.public void methodName() throw IOExceptionD.public void methodName() throws IOException答案: D3.下面哪个函数是public void aMethod(){...}的重载函数?( )A.void aMethod( ){...}B.public int aMethod(){...}C.public void aMethod ( ){...}D.public int aMethod ( int m){...}答案: D4.以下哪项是接口的正确定义?( )A.interface B{ void print() { } ;}B.abstract interface B{ void print() ;}C.abstract interface B extends A1,A2 //A1、A2为已定义的接口{ abstract void print(){ };}D.interface B{ void print();}答案: D5.类Test1、Test2定义如下:1. public class Test12.{ public float aMethod(float a,float b) throws3. IOException { }4. }5. public class Test2 extends Test1{6.7.}将以下哪种方法插入行6是不合法的。

编译原理试题参考答案

编译原理试题参考答案

编译原理试题参考答案编译原理试题参考答案编译原理是计算机科学中的一门重要课程,它研究的是将高级语言源代码转换成机器语言的过程。

在学习编译原理的过程中,试题是一种常见的考核方式。

下面是一些编译原理试题的参考答案,希望对大家的学习有所帮助。

1. 什么是编译器?编译器是一种将高级语言源代码转换成机器语言的程序。

它包括了词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等多个阶段。

编译器的主要作用是将高级语言源代码转换成可执行的机器语言程序。

2. 什么是词法分析?词法分析是编译器的第一个阶段,它将源代码分解成一个个的词法单元,比如关键字、标识符、常量和运算符等。

词法分析器通常使用有限自动机来实现,它可以根据事先定义好的词法规则来识别源代码中的词法单元。

3. 什么是语法分析?语法分析是编译器的第二个阶段,它将词法分析得到的词法单元组织成一个语法树。

语法分析器通常使用上下文无关文法来描述语法规则,并通过递归下降、LL(1)分析或LR分析等算法来进行语法分析。

4. 什么是语义分析?语义分析是编译器的第三个阶段,它对语法树进行语义检查和语义规则的处理。

语义分析器通常会进行类型检查、符号表管理和语义规则的处理,以确保源代码的语义正确性。

5. 什么是中间代码生成?中间代码生成是编译器的第四个阶段,它将语法树转换成一种中间表示形式,比如三地址码、虚拟机代码或抽象语法树。

中间代码是一种与具体机器无关的表示形式,它方便后续的代码优化和目标代码生成。

6. 什么是代码优化?代码优化是编译器的第五个阶段,它通过对中间代码的分析和变换,来改进程序的执行效率和资源利用率。

代码优化的目标是在保持程序语义不变的前提下,尽可能地减少程序的执行时间和资源消耗。

7. 什么是目标代码生成?目标代码生成是编译器的最后一个阶段,它将中间代码转换成目标机器的机器语言程序。

目标代码生成器通常会进行寄存器分配、指令选择和指令调度等操作,以生成高效的目标代码。

编译原理习题及答案1~3

编译原理习题及答案1~3

《编译原理教程》习题解析
23
图2-4 图2-3化简后的DFA M′
《编译原理教程》习题解析
24
2.4 正规式(ab)*a与正规式a(ba)*是否等价?请 说明理由。
【解答】 正规式(ab)*a对应的NFA如图2-5所 示,正规式a(ba) *对应的NFA如图2-6所示。
用子集法将图2-5和图2-6分别确定化为如图27(a)和(b)所示的状态转换矩阵,它们最终都可以 得到最简DFA,如图2-8所示。因此,这两个正规 式等价。
由f的定义可知f(x,a)、f(y,b)均为多值函数,因此M
是一非确定有限自动机。
先画出NFA M相应的状态图,如图2-2所示。
《编译原理教程》习题解析
20
图2-2 习题2.3的NFA M
《编译原理教程》习题解析
21
用子集法构造状态转换矩阵,如表2-1所示。
表2-1 状态转换矩阵
I
Ia
Ib
{x}
《编译原理教程》习题解析
6
(4) 编译各阶段的工作都涉及到构造、查找或更新有 关表格,即编译过程的绝大部分时间都用在造表、查表和 更新表格的事务上。故选D。
(5) 由(1)可知,编译程序实际上实现了对高级语言程 序的翻译。故选D。
《编译原理教程》习题解析
7
1.2 计算机执行用高级语言编写的程序有哪些途径?它们 之间的主要区别是什么?
这两种途径的主要区别在于:解释方式下不生成目 标代码程序,而编译方式下生成目标代码程序。
《编译原理教程》习题解析
9
1.3 请画出编译程序的总框图。如果你是一个编译程 序的总设计师,设计编译程序时应当考虑哪些问题?
【解答】 编译程序总框图如图1-1所示。 作为一个编译程序的总设计师,首先要深刻理解被编 译的源语言其语法及语义;其次,要充分掌握目标指令的 功能及特点,如果目标语言是机器指令,还要搞清楚机器 的硬件结构以及操作系统的功能;第三,对编译的方法及 使用的软件工具也必须准确化。总之,总设计师在设计编 译程序时必须估量系统功能要求、硬件设备及软件工具等 诸因素对编译程序构造的影响。

奥鹏西安交通大学2020年3月课程考试《编译原理》参考资料答案

奥鹏西安交通大学2020年3月课程考试《编译原理》参考资料答案

西安交通大学课程考试复习资料单选题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的属性计算,可能正确的语义规则是( )。

《编译原理》历年试题及答案

《编译原理》历年试题及答案

<编译原理>历年试题及答案一.(每项选择2分,共20分)选择题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.正规式MI和M2等价是指____。

a. MI和M2的状态数相等b.Ml和M2的有向弧条数相等。

C.M1和M2所识别的语言集相等 d. Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—。

a.语法规则 b.词法规则 c.语义规则 d.等价变换规则8.后缀式ab+cd+/可用表达式___来表示。

a.a+b/c+d b.(a+b)/(c+d) c.a+b/(c+d) d.a+b+c/d9.程序所需的数据空间在程序运行前就可确定,称为______管理技术。

a.动态存储b.栈式存储c.静态存储d.堆式存储10.堆式动态分配申请和释放存储空间遵守________原则。

a.先请先放b.先请后放c.后请先放d.任意二(每小题10分,共80分)简答题1.画出编译程序的总体结构图,简述各部分的主要功能。

2. 已知文法G[E]:E→ET+|T T→TF* | F F→F^ | a试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄.3.为正规式(a|b) *a(a|b)构造一个确定的有限自动机。

4.设文法G(S):S→(L)|a S|aL→L,S|S(1) 消除左递归和回溯;(2) 计算每个非终结符的FIRST和FOLLOW;(3) 构造预测分析表。

《编译原理》试卷参考答案(2020A)

《编译原理》试卷参考答案(2020A)

2019―2020第二学期《编译原理》期末考试试卷(A)使用专业、班级学号姓名题数一二三四五六七总分得分一、选择填空〖每空1分,共计20分〗1.编译程序将源程序加工成目标程序是 C 之间的转换。

A.词法B.语法C.语义D.规则2.开发一个编译程序应掌握 D 。

A.源语言B.目标语言C.编译技术D.以上三项都是3.词法分析器的输出结果是 B 。

A.单词自身B.单词的机内符C.单词的词义信息D.单词的词法信息4.称有限自动机A1和A2等价是指 D 。

A.A1和A2都是定义在一个字母表Σ上的有限自动机B.A1和A2状态数和有向边数相等C.A1和A2状态数或有向边数相等D.A1和A2所能识别的字符串集合相同5.同正则表达式(a | b)+等价的正则表达式是 B 。

A.(a | b) * B.(a | b) (a | b) *C.(a b)* (a b) D.(a | b)| (a | b)*6.前后文无关文法G:S→[ S ] | [ ]所产生的语言是 D 。

A.[ m ] n (m,n>0)B.[ m ] n (m,n>1)C.[ m ] m(m≥0)D.[ n ] n(n≥1)7.由文法的开始符出发通过若干步(包括0步)推导产生的文法符号序列是 B 。

A.语言B.句型C.句子D.句柄8.最左简单子树的叶结点,自左至右排列组成句型的 C 。

A.短语B.简单短语C.句柄D.素短语9.简单优先分析法每次都是对 D 进行归约。

A.短语B.简单短语C.素短语D.句柄考试形式开卷()、闭卷(√),在选项上打(√)开课教研室命题教师试卷专用纸使用学期总张数教研室主任审核签字江 南 大 学 考二、文法和语言类型题〖1小题10分,2小题5分,共计15分〗1.设有文法G[S]:E → E+T | E-T | TT → T*F | T/F | F F → x | y | z | (E)(1) 给出对于句子x+y*x-z 的最右推导过程E => E-T=> E -F=> E -z=> E+T -z=> E+ T*F -z =>> E+T*x -z=> E+F*x -z=> E+y*x -z => T+y*x -z=> F+y*x -z=> x+y*x -z(2) 试构造句型(E+T)-(T+F)的语法树(3) 基于上述语法树给出该句型的短语、简单短语和句柄。

奥鹏西安交通大学2020年3月课程考试《Java语言》参考资料答案

奥鹏西安交通大学2020年3月课程考试《Java语言》参考资料答案

西安交通大学课程考试复习资料单选题1.给出下面代码,关于该程序以下哪个说法是正确的?( )public class Person{static int arr[] = new int[5];public static void main(String a[]) {System.out.println(arr[0]);}}}A.编译时将产生错误B.编译时正确,运行时将产生错误C.输出零D.输出空答案: C2.有如下代码段:1)2) { if(unsafe()){//do something…}3) else if(safe()){//do the other…}4) }其中,方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?( )A.public IOException methodName()B.public void methodName()C.public void methodName() throw IOExceptionD.public void methodName() throws IOException答案: D3.下面哪个函数是public void aMethod(){...}的重载函数?( )A.void aMethod( ){...}B.public int aMethod(){...}C.public void aMethod ( ){...}D.public int aMethod ( int m){...}答案: D4.以下哪项是接口的正确定义?( )A.interface B{ void print() { } ;}B.abstract interface B{ void print() ;}C.abstract interface B extends A1,A2 //A1、A2为已定义的接口{ abstract void print(){ };}D.interface B{ void print();}答案: D5.类Test1、Test2定义如下:1. public class Test12.{ public float aMethod(float a,float b) throws3. IOException { }4. }5. public class Test2 extends Test1{6.7.}将以下哪种方法插入行6是不合法的。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案编译原理是计算机科学中的重要基础课程,涉及到编程语言的设计、编译器的构建等内容。

为了帮助大家更好地掌握编译原理的知识,我整理了一些编译原理试题及答案,希望能够对大家的学习有所帮助。

1. 什么是编译原理?简要说明其作用和意义。

编译原理是研究如何将高级语言程序翻译成目标代码的一门学科。

它的作用和意义在于帮助人们理解程序设计语言的语法和语义,掌握程序设计语言的翻译方法和技术,从而更好地进行程序设计和编程工作。

2. 请简要描述编译器的基本工作原理。

编译器的基本工作原理包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等步骤。

其中,词法分析将源程序转换成单词流,语法分析将单词流转换成语法树,语义分析对语法树进行语义检查,中间代码生成将语法树转换成中间代码,代码优化对中间代码进行优化,目标代码生成将优化后的中间代码转换成目标代码。

3. 什么是文法?简要说明文法的分类及其特点。

文法是用于描述编程语言语法结构的形式化工具。

文法可以分为上下文无关文法和上下文相关文法两种,其中上下文无关文法的特点是产生式左部只能是一个非终结符,上下文相关文法的特点是产生式左部可以是一个非终结符和一个终结符的串。

4. 请简要说明语法分析的两种基本方法及其区别。

语法分析的两种基本方法是自顶向下分析和自底向上分析。

自顶向下分析是从文法的开始符号出发,采用推导或归纳的方法,逐步构造出推导树或语法树;自底向上分析是从输入串出发,采用规约或移进的方法,逐步构造出推导树或语法树。

5. 请简要说明语义分析的主要任务及其实现方法。

语义分析的主要任务是对源程序进行语义检查,确保程序具有正确的含义。

语义分析的实现方法包括类型检查、作用域检查、中间代码生成等步骤,其中类型检查用于检查表达式的类型是否匹配,作用域检查用于检查标识符的作用域是否正确,中间代码生成用于将语法树转换成中间代码表示形式。

以上就是我整理的编译原理试题及答案,希望对大家的学习有所帮助。

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。

(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。

(×)3.一个算符优先文法可能不存在算符优先函数与之对应。

(√ )4.语法分析时必须先消除文法中的左递归。

(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。

(√)6.逆波兰表示法表示表达式时无须使用括号。

(√ )7.静态数组的存储空间可以在编译时确定。

(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。

(× )10.一个语义子程序描述了一个文法所对应的翻译工作。

(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。

A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。

A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。

A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。

A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。

西安交通大学《编译原理》在线作业答卷

西安交通大学《编译原理》在线作业答卷

西交《编译原理》在线作业试卷总分:100 得分:100一、单选题 (共 30 道试题,共 60 分)1. 许多广为使用的语言,如Fortran、C、Pascal等,属于()。

A. 强制式语言B. 应用式语言C. 基于规则的语言D. 面向对象的语言答案:A2.在编译方法中,动态存储分配的含义是( )。

A. 在运行阶段对源程序中的数组.变量.参数等进行分配B. 在编译阶段对源程序中的数组.变量.参数进行分配C. 在编译阶段对源程序中的数组.变量.参数等进行分配,在运行时这些数组.变量.参数的地址可根据需要改变D. 其他都不正确答案:A3.现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。

A. 重定位程序;B. 解释程序;C. 连接装配程序;D. 诊断程序;答案:C4.语法分析应遵循()。

A. 语义规则B. 语法规则C. 构词规则D. 等价变换规则答案:C5.()是指源程序中不符合语法或词法规则的错误,这些错误一般在词法分析或语法分析时能检测出来。

A. 语义错误B. 语法错误C. 短语错误D. 短句错误答案:B6.在使用高级语言编程时,首先可通过编译程序发现源程序的全部和部分( )错误。

A. 语法B. 语义C. 语用D. 运行答案:A7.下列关于标识符和名字叙述中,正确的是( )。

A. 标识符有一定的含义B. 名字是一个没有意义的字符序列C. 名字有确切的属性D. 都不正确答案:C8.编译程序是一种( )A. 汇编程序B. 翻译程序C. 解释程序D. 目标程序答案:B9.代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个()把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。

Zhujiao057《编译原理》习题答案

Zhujiao057《编译原理》习题答案

《编译原理》习题答案一、单项选择题(本大题共164小题,每小题2分)1、如果一个编译程序能产生不同于其宿主机的机器代码,则称它为( C )。

A、诊断编译程序B、优化编译程序C、交叉编译程序D、可变目标编译程序2、( C )不是编译程序的组成部分。

A、词法分析程序B、代码生成程序C、设备管理程序D、语法分析程序3、现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个( C )把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。

A、重定位程序B、解释程序C、连接装配程序D、诊断程序;4、产生正则语言的文法为(D)。

A、0型B、1型C、2型D、3型5、(A)是一种典型的解释型语言。

A、BASICB、CC、FORTRAND、PASCAL6、把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。

A、编译器B、汇编器C、解释器D、预处理器7、用高级语言编写的程序经编译后产生的程序叫(B)A、源程序B、目标程序C、连接程序D、解释程序8、文法G:S→b|∧(T)T→T,S|S则FIRSTVT(T)(C)。

A、{b,∧,(}B、{b,∧,)}C、{b,∧,(,,}D、{b,∧,),,}9、通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。

A、模拟执行器B、解释器C、表格处理和出错处理D、符号执行器10、编译程序绝大多数时间花在(D)上。

A、出错处理B、词法分析C、目标代码生成D、表格管理11、设文法为:S→SA|AA→a|b则对句子aba,下面(D)是规范推导。

A、S⇒SA⇒SAA⇒AAA⇒aAA⇒abA⇒abaB、S⇒SA⇒SAA⇒AAA⇒AAa⇒Aba⇒abaC、S⇒SA⇒SAA⇒SAa⇒Sba⇒Aba⇒abaD、S⇒SA⇒Sa⇒SAa⇒Sba⇒Aba⇒aba12、Chomsky把文法分成四种类型,其中,( D )也称正规文法A、0型B、1型C、2型D、3型13、源程序是句子的集合,(B)可以较好地反映句子的结构。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共10分)1. 在编译原理中,词法分析器的主要任务是什么?A. 将源代码转换为中间代码B. 识别源代码中的词法单元C. 进行语法分析D. 优化代码答案:B2. 下列哪个选项不是编译器的组成部分?A. 词法分析器B. 语法分析器C. 运行时环境D. 语义分析器答案:C3. 编译器的哪个阶段负责检查变量是否已经声明?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C4. 在编译原理中,哪些技术常用于错误恢复?A. 预测分析表和LR分析B. 递归下降分析和LR分析C. 预测分析表和递归下降分析D. 预测分析表和错误恢复算法答案:D5. 编译器中用于优化代码的阶段是哪一个?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:D二、填空题(每题2分,共10分)1. 编译器的前端包括词法分析、语法分析和________。

答案:语义分析2. 在编译过程中,________分析器负责将源代码的逻辑结构转换为一种内部表示形式。

答案:语法3. 编译器的后端包括________、寄存器分配和代码生成。

答案:中间代码生成4. 编译器中的________分析用于检查程序中的类型错误。

答案:语义5. 编译器的________阶段负责将高级语言代码转换为目标机器代码。

答案:代码生成三、简答题(每题10分,共20分)1. 简述编译器的主要功能。

答案:编译器的主要功能包括将高级语言编写的源代码转换成目标机器可以执行的机器代码,同时进行错误检测、代码优化等。

它通常包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。

2. 描述编译过程中的语法分析阶段的主要任务。

答案:语法分析阶段的主要任务是检查源代码是否符合语言的语法规则,构建抽象语法树(AST),并进行语法制导的语义分析。

这一阶段使用诸如自顶向下的递归下降分析、自底向上的移进-规约分析等技术来识别语言结构,并为后续的语义分析和代码生成打下基础。

编译原理习题及答案1~3

编译原理习题及答案1~3
(8) 由于正则闭包R+=R*R=RR*,故 (a|b)*(a|b)=(a|b)(a|b)*。故选A。
《编译原理教程》习题解析
18
2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输 入的源程序,对源程序进行词法分析并识别出一 个个单词符号,其输出结果是单词符号,供语法 分析器使用。通常把词法分析器作为一个子程序, 每当语法分析器需要一个单词符号时就调用这个 子程序。每次调用时,词法分析器就从输入串中 识别出一个单词符号交给语法分析器。
故选D。
《编译原理教程》习题解析
17
(5) NFA可以有DFA与之等价,即两者描述能力相同; 也即,对于任一给定的NFA M,一定存在一个DFA M', 使L(M)=L(M′)。故选B。
(6) DFA便于识别,易于计算机实现,而NFA便于定 理的证明。故选C。
(7) 本题虽然是第二章的题,但答案参见第三章3.1.3 节。即选C。
《编译原理教程》习题解析
10
图1-1 编译程序总框图
《编译原理教程》习题解析
11
第二章 词 法 分 析
2.1 完成下列选择题: (1) 词法分析所依据的是
A.语义规则 C.语法规则 (2) 词法分析器的输入是 A.单词符号串 C.语法单位
。 B.构词规则 D.等价变换规则
。 B.源程序 D.目标程序
《编译原理教程》习题解析
30
图2-9 (ab)*a和a(ba)*分别对应的NFA
《编译原理教程》习题解析
31
2.5 设有L(G)={a2n+1b2ma2p+1| n≥0,p≥0,m≥1}。 (1) 给出描述该语言的正规表达式; (2) 构造识别该语言的确定有限自动机(可直接 用状态图形式给出)。 【解答】 该语言对应的正规表达式为 a(aa)*bb(bb)*a(aa)*,正规表达式对应的NFA如图 2-10所示。

《编译原理》考试试题及答案

《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。

( X )2.一个句型的直接短语是唯一的。

( X )3.已经证明文法的二义性是可判定的。

( X )4.每个基本块可用一个DAG表示。

(√)5.每个过程的活动记录的体积在编译时可静态确定。

(√)6.2型文法一定是3型文法。

( x )7.一个句型一定句子。

( X )8.算符优先分析法每次都是对句柄进行归约。

(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。

(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。

( x )11.一个优先表一定存在相应的优先函数。

( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )13.递归下降分析法是一种自下而上分析法。

( )14.并不是每个文法都能改写成LL(1)文法。

( )15.每个基本块只有一个入口和一个出口。

( )16.一个LL(1)文法一定是无二义的。

( )17.逆波兰法表示的表达试亦称前缀式。

( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )19.正规文法产生的语言都可以用上下文无关文法来描述。

( )20.一个优先表一定存在相应的优先函数。

( )21.3型文法一定是2型文法。

( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。

( )二、填空题:1.( 最右推导 )称为规范推导。

2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。

4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。

5.语法分析器的输入是(),其输出是()。

6.扫描器的任务是从()中识别出一个个()。

编译原理习题及答案1~3

编译原理习题及答案1~3
D.高级语言接近人们的自然语言,但其依赖具 体机器的特性是无法改变的
2021/10/10
2
《遍”是为了 。
A.提高程序的执行效率
B.使程序的结构更加清晰
C.利用有限的机器内存并提高机器的执行效率
D.利用有限的机器内存但降低了机器的执行效

(3) 构造编译程序应掌握 。
表2-1 状态转换矩阵
I
Ia
Ib
{x}
{x,y}
{y}
{y}

{x,y}
{x,y}
{x,y}
{x,y}
将转换矩阵中的所有子集重新命名,形成表2-2所 示的状态转换矩阵,即得到
S
a
b
0
2
1
1

2
2
2
2
2021/10/10
21
《编译原理教程》习题解析
22
其状态转换图如图2-3所示。
图2-3 习题2.3的DFA M′
(8) 由于正则闭包R+=R*R=RR*,故 (a|b)*(a|b)=(a|b)(a|b)*。故选A。
2021/10/10
17
《编译原理教程》习题解析
18
2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输 入的源程序,对源程序进行词法分析并识别出一 个个单词符号,其输出结果是单词符号,供语法 分析器使用。通常把词法分析器作为一个子程序, 每当语法分析器需要一个单词符号时就调用这个 子程序。每次调用时,词法分析器就从输入串中 识别出一个单词符号交给语法分析器。
4
《编译原理教程》习题解析
5
【解答】 (1) 编译程序可以将用高级语言编写的源程序转换成 与之在逻辑上等价的目标程序,而目标程序可以是汇编语 言程序或机器语言程序。故选A。 (2) 分多遍完成编译过程可使整个编译程序的逻辑结 构更加清晰。故选B。 (3) 构造编译程序应掌握源程序、目标语言和编译方 法这三方面内容。故选D。

编译原理习题及答案1~3[优质PPT]

编译原理习题及答案1~3[优质PPT]

《编译原理教程》习题解析
40
图2-16 正规式((a | b)*|aa)*b对应的NFA
故选D。
《编译原理教程》习题解析
17
(5) NFA可以有DFA与之等价,即两者描述能力相同; 也即,对于任一给定的NFA M,一定存在一个DFA M', 使L(M)=L(M′)。故选B。
(6) DFA便于识别,易于计算机实现,而NFA便于定 理的证明。故选C。
(7) 本题虽然是第二章的题,但答案参见第三章3.1.3 节。即选C。
实际上,当闭包*取0时,正规式(ab) *a与正规 式a(ba)*由初态X到终态Y之间仅存在一条a弧。由 于(ab)*在a之前,故描述(ab)*的弧应在初态结点X 上;而(ba)*在a之后,故(ba)*对应的弧应在终态结 点Y上。因此,(ab)*a和a(ba)*所对应的NFA也可 分别描述为如图2-9(a)和(b)所示的形式,它们确定 化并化简后仍可得到图2-8所示的最简DFA。
【解答】 计算机执行用高级语言编写的程序主要有两种途 径:解释和编译。
在解释方式下,翻译程序事先并不采用将高级语言程序全 部翻译成机器代码程序,然后执行这个机器代码程序的方法, 而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能 的机器代码语句串并执行,然后再读入下一条源程序语句并解 释执行,而所翻译的机器代码语句串在该语句执行后并不保留。 这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行 的,如果一语句处于一循环体中,则每次循环执行到该语句时, 都要将其翻译成机器代码后再执行。
《编译原理教程》习题解析
19
2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的
有限自动机,其中f定义如下:

奥鹏西安交通大学2020年3月课程考试《面向对象程序设计》参考资料答案

奥鹏西安交通大学2020年3月课程考试《面向对象程序设计》参考资料答案

西安交通大学课程考试复习资料单选题1.对于如下类的定义,下面语句组中出现语法错误的是( )。

class X{int a;public:X(int x=0) {a=x;}};class Y:class X{int b;public:Y(int x=0,int y=0):X(x) {b=x;}};A.X *pa=new Y(1,2);B.Xa1=Y(1,3);C.Yb1(2,3);X&a3=b1;D.Xa4(10);Yb2=a4;答案: D2.若有如下函数模板定义,则正确使用该函数模板的语句是( )。

templatevoid add(type a, type b, type &c){ c=a+b ; }A.float x,y,z;add(x,y,z) ;B.int x,y,z;add(x,y,&z) ;C.float x,y ;int z;add(x,y,z) ;D.float x,y ;int z;add(x,y,&z) ;答案: A3.下列程序段不会发生二义性的是( )。

A.int fun(double p){...;}B.int fun(float p){...;}float fun(float p){...;}float fun(unsigned p){...;}int x;int x;x=fun(0);x=fun(0);C.int fun(int i,int j=2){...;}D.int fun(int i=2,int j=2){...;}float fun(int i){...;}int fun(int *p){...;}cout答案: D4.下列程序段不会发生二义性的是( )。

A.int fun(double p){...;}B.int fun(float p){...;}float fun(float p){...;}float fun(unsigned p){...;}int x;int x;x=fun(0);x=fun(0);C.int fun(int i,int j=2){...;}D.int fun(int i=2,int j=2){...;}float fun(int i){...;}int fun(int *p){...;}cout答案: D5.下面是四条顺序出现的声明语句,非法的初始化语句是( )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安交通大学课程考试复习资料单选题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的属性计算,可能正确的语义规则是( )。

A.A.a:=f(X.x,Y.y)B.Y.y:=f(A.a,Y.y)C.Y.y:=f(X.x)D.A.a:=f(Y.y);答案: C13.有文法G=({S},{a},{S→SaS,S→ε},S),该文法是( )。

A.LL(1)文法B.二义性文法C.算符优先文法D.SLR(1)文法;答案: B14.算符优先分析法每次都是对( )进行归约:A.句柄B.最左素短语C.素短语D.简单短语答案: B15.LR语法分析栈中存放的状态是识别( )的DFA状态。

A.前缀B.可归前缀C.项目D.句柄;答案: B16.语法分析器接收以( )为单位的输入,并产生有关信息供以后各阶段使用。

A.表达式B.产生式C.单词D.语句;答案: C17.上下文无关文法可以用( )来描述。

A.正则表达式B.正规文法C.扩展的BNFD.翻译模式答案: C18.一个数据类型通常包括三种要素,下面( )不是:A.用于区别这种类型的数据对象的属性B.这种类型的数据对象可以具有的值C.对这种类型的数据对象的内存分配D.可以作用于这种类型的数据对象的操作答案: C19.( )不是编译程序的组成部分。

A.词法分析程序B.代码生成程序C.设备管理程序D.语法分析程序答案: C20.如果一个编译程序能产生不同于其宿主机的机器代码,则称它为( )。

A.诊断编译程序B.优化编译程序C.交叉编译程序D.可变目标编译程序答案: C21.下述方法中,( )不是自下而上分析方法。

A.规范归约B.算符优先分析法C.递归下降分析法D.LR分析法答案: C22.程序所需的数据空间在程序运行前可确定,称为( )管理技术。

A.动态存储B.栈式存储C.静态存储D.堆式存储答案: C23.过程信息表不包含( )。

A.过程入口地址B.过程的静态层次C.过程名D.过程参数信息答案: B24.在一棵语法树中的结点的继承属性和综合属性之间的相互依赖关系可以由()来描述。

A.抽象语法树B.语法规则C.依赖图D.三地址代码答案: C25.给定文法A→bA | ca,为该文法句子的是( )A.bbaB.cabC.bcaD.cba答案: C26.Pascal的if语句满足( )。

A.最远匹配原则B.动态作用域规则C.静态作用域规则D.最近匹配原则答案: D27.在目标代码生成阶段,符号表用于( )。

A.目标代码生成B.语义检查C.语法检查D.地址分配答案: D28.Pascal中过程说明的局部变量地址分配在()。

A.调用者的数据区中B.被调用者的数据区中C.主程序的数据区中D.公共数据区中答案: B29.若一个文法是递归的,则它所产生的语言的句子( )。

A.是无穷多个B.是有穷多个C.是可枚举的D.个数是常量答案: A30.后缀式ab+cd+/可用表达式( )来表示。

A.a+b/c+dB.(a+b)/(c+d)C.a+b/(c+d)D.a+b+c/d答案: B31.一个( )指明了在分析过程中的某时刻所能看到产生式多大一部分。

A.活前缀B.前缀C.项目D.项目集答案: C32.编译程序使用( )区别标识符的作用域。

A.说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D.标识符的行号答案: B33.文法开始符号的所有()作为属性计算前的初始值。

A.综合属性B.继承属性C.继承属性和综合属性D.都不是答案: B34.文法G产生的( )的全体是该文法描述的语言。

A.句型B.终结符集C.非终结符集D.句子答案: D35.在下述的编译方法中,自底向上的方法有()。

A.简单优先分析B.算符优先分析C.递归下降分析D.预测分析技术E.LR(K)分析F.SLR(k)分析G.LL(k)分析LR(K)分析答案: F36.文法G产生的()的全体是该文法描述的语言。

A.句型B.终结符集C.非终结符集D.句子答案: D37.常见的中间代码形式不包含()A.三元式B.四元式C.逆波兰式D.语法树答案: D38.编译过程中,语法分析器的任务是( )①分析单词的构成②分析单词串如何构成语句③分析语句是如何构成程序④分析程序的结构A.②③B.④C.①②③④D.②③④答案: A39.用高级语言编写的程序经编译后产生的程序叫( )A.源程序B.目标程序C.连接程序D.解释程序答案: B40.语法分析应遵循()。

A.语义规则B.语法规则C.构词规则D.等价变换规则答案: C41.LR(1)文法都是( )A.无二义性且无左递归B.可能有二义性但无左递归C.无二义性但可能是左递归D.可以既有二义性又有左递归答案: C42.由文法的开始符经0步或多步推导产生的文法符号序列是()。

A.短语B.句柄C.句型D.句子答案: C43.数组的内情向量中肯定不含数组的()信息A.维数B.类型C.各维的上下界D.各维的界差答案: B44.以()作为输出,允许自程序单独编译。

A.绝对机器代码B.可再定位机器语言C.汇编语言程序D.中间语言答案: B45.把汇编语言程序翻译成机器可执行的目标程序的工作是由( )完成的。

A.编译器B.汇编器C.解释器D.预处理器答案: B46.设有文法G[S]:S→S1|S0|Sa|Sc|a|b|c,下列符号串中是该文法的句子有( )A.ab0B.a0c01C.a0b0aD.bc10答案: D47.有限状态自动机能识别()。

A.上下文无关文法B.上下文有关文法C.正规文法D.短语文法答案: C48.赋值语句x:=-(a+b)/(c-d)-(a+b*c)的逆波兰式表示是()。

A.xab+cd-/-bc*a+-:=B.xab+/cd-bc*a+--:=C.xab+-cd-/abc*+-:=D.xab+cd-/abc*+--:=答案: C49.四元式表示法的优点为( )。

A.不便于优化处理,但便于表的更动B.不便于优化处理,但节省存储空间C.便于优化处理,也便于表的更动D.便于表的更动,也节省存储空间答案: C50.文法:G:S→xSx | y所识别的语言是( )。

A.xyxB.(xyx)*C.x*yx*D.xnyxn (n≥0)答案: D51.在整个编译期间,对符号表的操作大致都有()。

A.查询给定名字B.填入新名字C.访问给定名字的信息D.更新给定名字的信息答案: B52.( )这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。

A.存在B.不存在C.无法判定是否存在D.其他都不正确答案: B53.LR(k)文法( )A.都是无二义性的B.都是二义性的C.一部分是二义性的D.无法判定答案: A54.源程序是句子的集合,( )可以较好地反映句子的结构。

A.线性表B.树C.完全图D.堆栈答案: B55.有限自动机( )个接受状态。

A.只能有一个B.只能有两个C.只能有三个D.可以有0个、一个或多个答案: D56.()不可能是目标代码。

A.汇编指令代码B.可重定位指令代码C.绝对指令代码D.中间代码答案: D57.文法E→E+E|E*E|i的句子i*i+i*i有( )棵不同的语法树。

A.1B.3C.5D.7答案: C58.给定文法A→bA|cc,则符号串①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc中,是该文法句子的是( )B.③④⑤C.②④D.①⑤答案: D59. 现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。

A.重定位程序;B.解释程序;C.连接装配程序;D.诊断程序;答案: C60.数组的内情向量中肯定不含有数组的()的信息A.维数B.类型C.维上下界D.各维的界差答案: A61.描述一个语言的文法是()A.唯一的B.不唯一的C.可能唯一,也可能不唯一答案: B62.在编译过程中,符号表的主要作用是()。

A.帮助错误处理B.辅助语法错误的检查C.辅助语义的正确性检查D.辅助代码生成63.以________作为输出,允许自程序单独编译。

A.绝对机器代码;B.可再定位机器语言;C.汇编语言程序;D.中间语言;答案: B64.编译程序是对()。

A.汇编程序的翻译B.高级语言程序的解释执行C.机器语言的执行D.高级语言的翻译答案: D65.一个文法所描述的语言是( )A.唯一的B.不唯一的C.可能唯一D.都不正确答案: A66.采用自上而下分析,必须( )。

相关文档
最新文档