华东交通大学编译原理试题库 试卷九

合集下载

编译原理试题参考答案

编译原理试题参考答案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

《编译原理》考试试题及答案(附录)一、判断题: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.扫描器的任务是从()中识别出一个个()。

编译原理复习题及答案doc下载

编译原理复习题及答案doc下载

编译原理复习题及答案doc下载以下是编译原理复习题及答案的正文内容:1. 什么是编译器的主要功能?编译器的主要功能是将源代码转换成目标代码,包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等步骤。

2. 词法分析的主要任务是什么?词法分析的主要任务是将源程序的字符序列转换成一系列的标记(token),并识别出其中的关键字、标识符、常量、运算符等。

3. 语法分析的目的是什么?语法分析的目的是检查源代码的语法结构是否符合语言的语法规则,并构建出抽象语法树(AST)。

4. 什么是语义分析?语义分析是编译过程中的一个阶段,它在语法分析的基础上,对源代码进行上下文相关的检查,确保变量的声明和使用是合法的,以及类型检查等。

5. 中间代码生成的作用是什么?中间代码生成的作用是将抽象语法树转换成一种中间表示形式,这种表示形式既接近于源代码,又方便后续的优化和目标代码生成。

6. 代码优化的目的是什么?代码优化的目的是为了提高程序的执行效率和减少资源消耗,通过各种优化技术改进中间代码。

7. 目标代码生成包括哪些步骤?目标代码生成包括指令选择、寄存器分配、指令调度等步骤,最终生成可以在特定硬件上运行的目标代码。

8. 什么是编译器前端和后端?编译器前端包括词法分析、语法分析、语义分析和中间代码生成,而后端包括代码优化和目标代码生成。

9. 什么是词法单元?词法单元是词法分析过程中识别的基本单位,包括关键字、标识符、常量、运算符等。

10. 什么是左递归?左递归是指在文法的产生式中,一个非终结符直接或间接地在其产生式右边以自身开始的情况。

以上是编译原理的复习题及答案,供参考和学习使用。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码解释C. 代码翻译D. 代码调试答案:C2. 编译过程中的语法分析阶段主要解决什么问题?A. 词法问题B. 语法问题C. 语义问题D. 代码生成问题答案:B3. 在编译原理中,哪些技术用于处理程序中的递归结构?A. 正则表达式B. 有限自动机C. 上下文无关文法D. 属性文法答案:C4. 编译器的哪个部分负责将中间代码转换为目标代码?A. 词法分析器B. 语法分析器C. 语义分析器D. 代码生成器答案:D5. 编译器中的词法分析器主要使用哪种数据结构来存储输入的源代码?A. 栈B. 队列C. 链表D. 哈希表答案:C6. 在编译原理中,哪个概念用于描述程序语言的语法结构?A. 语法树B. 抽象语法树C. 控制流图D. 数据流图答案:B7. 编译器的哪个阶段负责检查变量是否被正确声明和使用?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:C8. 编译器在哪个阶段会进行代码优化?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D9. 在编译原理中,哪些技术用于生成有效的目标代码?A. 语法分析B. 语义分析C. 代码优化D. 目标代码生成答案:D10. 编译器的哪个部分负责将源代码中的注释和空白字符去除?A. 词法分析器B. 语法分析器C. 语义分析器D. 代码生成器答案:A二、填空题(每题2分,共20分)1. 编译器的前端包括词法分析、语法分析和______。

答案:语义分析2. 编译器的后端包括中间代码生成、______和目标代码生成。

答案:代码优化3. 编译原理中的______用于描述词法单元。

答案:词法规则4. 编译原理中的______用于描述程序语言的语法结构。

答案:上下文无关文法5. 编译原理中的______用于描述程序语言的语义。

答案:属性文法6. 编译原理中的______用于描述程序控制流。

编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc

编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc

此文档下载后即可编辑编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了_B__。

A . 提高程序的执行效率B.使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.正规式 MI 和 M2 等价是指__C__。

A . MI 和 M2 的状态数相等和 M2 的有向弧条数相等。

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

A.语法规则 B.词法规则 C.语义规则 D.等价变换规则4.后缀式 ab+cd+/可用表达式__B_来表示。

A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。

A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析7.词法分析器用于识别__C___。

A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符8.语法分析器则可以发现源程序中的___D__。

A.( ) 语义错误 B.( ) 语法和语义错误C.( ) 错误并校正 D.( ) 语法错误9.下面关于解释程序的描述正确的是__B___。

(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于 COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3)10.解释程序处理语言时 , 大多数采用的是__B___方法。

A.( ) 源程序命令被逐个直接解释执行B.( ) 先将源程序转化为中间代码 , 再解释执行C.( ) 先将源程序解释转化为目标程序 , 再执行D.( ) 以上方法都可以11.编译过程中 , 语法分析器的任务就是__B___。

华东交通大学编译原理试题库 试卷十

华东交通大学编译原理试题库 试卷十

一、填空题(每题2分,共20分)1、语法分析是依据语言的规则进行的,中间代码产生是依据语言的规则进行的。

2、程序语言的单词符号一般可以分为等等。

3、语法分析器的输入是,其输出是4、所谓自上而下分析法是指。

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

6、对于文法G,仅含终结符号的句型称为。

7、逆波兰式ab+c+d*e-所表达式为。

8、一个名字的属性包括和。

9、对于数据空间的存贮分配,FORTRAN采用策略,PASCAL 采用策略。

10、所谓优化是指。

二、名词解释(每题2分,共10分)1、词法分析器2、语法3、最右推导4、语法制导翻译5、基本块三、简述题(每题4分,共24分)1、考虑下面程序...........Var i:integer;a:array[1..2] of integer;procedure Q(b);Var b:integer;begini:=1;b:=b+2;i:=2;b:=b+3End;begina[1]:=5;a[2]:=6;i:=1;Q(a[i]);print(a[1],a[2])END.试问:若参数传递的方式分别采用传地址和传值时,程序执行后输出a[1], a[2]的值是什么?2、画出Pascal中实数(不带正负号,可带指数部分)的状态转换图。

3、已知文法G(4、写出表达式(a+b)/(a-b)-a(a+b*c)的三元式序列及四元序列。

5、符号表的作用是什么?符号表的查找的整理技术有哪几种?6、所谓DISPLAY表?其作用是什么?四、计算题(共41分)1、写一个文法,使其语言是偶数集,且每个偶数不以0开头。

(5分)2、已知文法G(S):S→a|∧|(T)T→T,S|S⑴给出句子(a,(a,a))的最左推导并画出语法树;⑵给出句型((T,S),a)的短语、直接短语、句柄。

(8分)3、把语句if x>0∧y>0 then z:=x+yelse beginx:=x+2;y:=y+3END;翻译成四元式序列。

编译原理试题及答案

编译原理试题及答案

编译原理试题一、填空题1、汇编程序将________翻译成________;编译程序将________翻译成________.2、编译程序工作工程可以划分为______、______、______、______和______等5个基本阶段,同时还会伴有______和______。

3、对编译程序而言,输入数据是______,输出数据是______。

4、已知文法G[E]:E->T|E+T|E—F,T->F|T*F|T/F,F—>(E)|I,(“,"是间隔符号,不是文法中的符号).该文法的开始符号(识别字符)是______,终结符号集合V T是______,非终结符号结合V N是______,句型T+T*F+i的短语有____________。

该文法消除直接左递归,改写后的文法为E-〉________,T-〉________,F->________.5、Chomsky定以来寺中形式语言的文法分别为:________文法(又称________文法)、________文法(又称________文法)、________文法(又称________文法)、________文法(又称________文法)。

6、编译过程中扫描器所完成的任务是从________中识别出一个个具有________。

7、确定的有穷自动机是一个________,通常表示为________.8、LL(k)分析中,第一个L的含义是________,第二个L的含义是________,“k"的含义是________。

9、LL(1)分析中,第一个L的含义是________,第二个L的含义是________,“1"的含义是________。

10、LR(0)分析中,“L”的含义是________,“R”的含义是________,“0”的含义是________。

11、SLR(1)分析中,“L”的含义是________,“R”的含义是________,“1"的含义是________。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 下列哪个不是编译器所需的基本处理步骤?A. 词法分析B. 语法分析C. 语义分析D. 目标代码优化答案:D2. 编译器的主要功能是将高级语言程序翻译成什么形式?A. 汇编语言B. 机器语言C. 中间代码D. 高级语言答案:B3. 下列哪个不属于编译器的后端阶段?A. 代码优化B. 目标代码生成C. 词法分析D. 目标程序优化答案:C二、填空题1. 编译器的输入是源程序,输出是目标程序。

2. 目标代码生成阶段的任务是将中间代码翻译成汇编语言或机器语言。

3. 语法分析阶段的输出是抽象语法树。

三、简答题1. 请简述编译器的工作原理。

编译器的工作原理主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。

词法分析阶段将源程序分解成单词(也称为词法单元),语法分析阶段根据语法规则将词法单元组织成一个语法树,语义分析阶段对语法树进行语义检查,中间代码生成阶段将语法树转化为中间代码,代码优化阶段对中间代码进行优化,最后目标代码生成阶段将中间代码转化为机器语言或汇编语言。

2. 请说明词法分析的作用是什么,如何实现?词法分析的作用是将源程序中的字符序列转化为单词序列,也就是将一段代码切分成不同的词法单元。

实现词法分析可以通过有限状态自动机来处理输入字符序列,并根据一系列规则将字符序列划分为词法单元。

常用的方法有手写分析器和使用词法分析生成器等。

3. 简要介绍一下代码优化的目的和方法。

代码优化的目的是通过对程序的中间代码或目标代码进行调整,以达到提高程序性能、减小程序的空间占用或减小程序的执行时间等目的。

代码优化的方法主要包括局部优化和全局优化两种。

局部优化主要针对某个代码块进行优化,如常量折叠、公共子表达式消除等。

全局优化则考虑整个程序,对程序的整体结构进行优化,如循环优化、函数内联等。

总结:编译原理试题及答案主要涵盖了选择题、填空题和简答题三个部分。

其中选择题主要考察对编译器基本处理步骤和功能的理解。

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

一、填空题(每题2分,共20分)
1、语法分析是依据语言的规则进行的,中间代码产生是依据语言的规则进行的。

2、程序语言的单词符号一般可以分为等等。

3、语法分析器的输入是,其输出是。

4、所谓自上而下分析法是指。

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

6、对于文法G,仅含终结符号的句型称为。

7、逆波兰式ab+c+d*e-所表达式为。

8、一个名字的属性包括和。

9、对于数据空间的存贮分配,FORTRAN采用策略,PASCAL采用策略。

10、所谓优化是指。

二、名词解释(每题2分,共10分)
1、词法分析器
2、语法
3、最右推导
4、语法制导翻译
5、基本块
三、简述题(每题4分,共24分)
1、考虑下面程序
...........
Var i:integer;
a:array[1..2] of integer;
procedure Q(b);
Var b:integer;
begin
i:=1;b:=b+2;
i:=2;b:=b+3
End;
begin
a[1]:=5;a[2]:=6;
i:=1;
Q(a[i]);print(a[1],a[2])
END.
试问:若参数传递的方式分别采用传地址和传值时,程序执行后输出a[1], a[2]的值是什么?
2、画出Pascal中实数(不带正负号,可带指数部分)的状态转换图。

3、已知文法
4、写出表达式(a+b)/(a-b)-a(a+b*c)的三元式序列及四元序列。

5、符号表的作用是什么?符号表的查找的整理技术有哪几种?
6、所谓DISPLAY表?其作用是什么?
四、计算题(共41分)
1、写一个文法,使其语言是偶数集,且每个偶数不以0开头。

(5分)
2、已知文法G(S):
S→a|∧|(T)
T→T,S|S
⑴给出句子(a,(a,a))的最左推导并画出语法树;
⑵给出句型((T,S),a)的短语、直接短语、句柄。

(8分)
3、把语句
if x>0∧y>0 then z:=x+y
else begin
x:=x+2;
y:=y+3
END;
翻译成四元式序列。

(6分)
4、设某语言的for语句的形式为
for i:=E(1) TO E(2) do S
其语义解释为
i:=E(1);
LIMIT:=E(2);
again:if i<=LIMIT then
BEGIN
S;
i:=i+1;
goto again
END;
⑴写出适合语法制导翻译的产生式;
⑵写出每个产生式对应的语义动作。

(6分)
5、设文法G(S):
S→S+aF|aF|+aF
F→*aF|*a
⑴消除左递归和回溯;
⑵构造相应的FIRST和FOLLOW集合;
⑶构造预测分析表(10分)
6、对以下基本块
T1:=2
T2:=A-B
T3:=A+B
T4:=T2*T3
T5:=3*T1
T6:=A-B
L:=A+B
T7:=T6*L
T8:=T5*4
M:=T8+T7
L:=M
⑴画出DAG图;
⑵假设只有L在基本块出口之后还被引用,请写出优化后的四元式序列。

(6分)
参考答案
一、填空题
1、语法、语义
2、基本字、标识符、常量、算符、界符
3、单词符号串、语法单位
4、从开始符号出发,向下推导,推出句子
5、二义的
6、句子
7、(a+b+c)*d-e
8、类型、作用域
9、静态存储分配、动态存储分配
10、对程序进行各种等价变换,使得从变换后的程序出发,能生成更有效的目标代码
二、名词解释
1.词法分析器——指执行词法分析的程序。

2.语法——一组规则,用它可以形成和产生一个合式的程序
3.最右推导——指对于一个推导序列中的每一步直接推导,被替换的总是当前符号串中的最右非终结符号。

4.语法制导翻译——在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译的办法叫做语法制导翻译。

5.基本块——指程序中一个顺序执行的语句序列,其中只有一个入口,一个出口,入口即第一个语句。

出口即最后一个语句。

三、简述题
1、答:传地址:a=10 , b=6 ;(2分)
传值:a=5 , b=6 。

(2分)
2分,g函数2分)
4、答:三元式2分
⑵.(-,a,b)
⑶.(/,⑴,⑵)
⑷.(*,b,c)
⑸.(+,a,⑷)
⑹.(-,⑶,⑸)
四元式2分
⑴.(+,a,b,T1)
⑵.(-,a,b,T2)
⑶.(/,T1,T2,T3)
⑷.(*,b,c,T4)
⑸.(+,a,T4,T5)
⑹.(-,T3,T5,T6)
5、答:
作用:登记源程序中出现的各种名字及其信息,以及编译各阶段的进展状况。

(2分) 主要技术:线性表,对折查找与二叉树,杂凑技术。

(2 分)
6、答:display表是层次显示表。

由于过程嵌套允许内层过程引用外层过程定义的数据,因此,当一个过程运行时必须跟踪它的所有外层过程的最新活动记录起始地址,而display表就是用于登记每个外层过程的最新活动记录起始地址。

四、计算题
1、答:
文法G(S):
S→AB|B|A0
A→AD|C
B→2|4|6|8
C→1|3|5|7|9|B
D→0|C
2、答:
最左推导:(2分)
S=>(T)=>(T,S)=>(S,S)
=>(a,S)=>(a,(T))=>(a,(T,S))
=>(a,(S,S))=>(a,(a,S))
=>(a,(a,a))
语法树:(2分,此处略)
3、答:
⑴(j>,x,0,3)
⑵(j,-,-,8)
⑶(j>,y,0,5)
⑷(j,-,-,8)
⑸(+,x,y,T1)
⑹(:=,T1,-,Z)
⑺(j,-,-,12)
⑻(+,x,2,T2)
⑼(:=,t2,-,X)
⑾(:=,T3,-,y)

(控制结构3分,其它3分)
4、答:
⑴(2分)
F→for i:=E (1) to E (2) do
S→F S(1)
⑵(每个语义动作2分)
F→for i:=E (1) to E (2) do
{GEN(:=,E (1) .place,-,entry(i));
F.place:=entry(i);
LIMIT:=Newtemp;
GEN(:=,E (2) .place,-,LIMIT);
:=NXQ;
F.QUAD:=q;
GEN(j≤,entry(i),LIMIT,q+2)
F.chain:=NXQ;
G)j,-,-,0)}
S→F S (1)
{BACKPATCH(S (1) .chain,NXQ);
GEN(+,F.place,1,F.place);
GEN(j,-,-,F.QUAD);
S.chain:=F.chain}
5、答:
⑴(消除左递归2分,提公共左因子2分)
S→aFS'|+aFS'
S'→+aFS'|ε
F→*aF'
F'→F|ε
⑵(3分)
FIRST(S)={a,+} FOLLOW(S)={#}
FIRST(S')={+,ε} FOLLOW(S')={#}
FIRST(F)={*} FOLLOW(F)={+,#}
FIRST(F')={*,ε) FOLLOW(F')={+,#}
6、答:
⑴DAG (3分,此处略)
⑵四元式序列:(3分)
T2:=A-B
T3:=A+B
T4:=T2*T3
L:=T4+24。

相关文档
最新文档