《编译原理》课程研讨题(2016)

合集下载

编译原理题库

编译原理题库

编译原理题库
1. 什么是编译原理?
编译原理是研究将高级程序语言翻译成为机器语言的原理和方法的学科。

2. 编译器的主要功能是什么?
编译器的主要功能包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。

3. 什么是词法分析?
词法分析是将输入的字符流转化为标记流的过程。

4. 什么是语法分析?
语法分析是将词法分析得到的标记流转化为语法树的过程。

5. 什么是语义分析?
语义分析是对语法树进行解析,检查程序中是否存在语义错误或不符合语言规范的地方。

6. 什么是中间代码生成?
中间代码生成是将语义分析得到的语法树转化为中间表示形式,以便进行后续的代码优化和目标代码生成。

7. 什么是代码优化?
代码优化是对中间代码进行优化,以提高程序的执行效率和空间利用率。

8. 什么是目标代码生成?
目标代码生成是将优化后的中间代码转化为机器语言的过程。

9. 什么是语法制导翻译?
语法制导翻译是一种以语法规则为基础,通过对语法树的遍历和语义规则的应用来进行翻译的方法。

10. 什么是LL(1)文法?
LL(1)文法是一种上下文无关文法,它具有左递归和左因子的特点,并且在进行预测分析时每个非终结符的每个可能产生式都有唯一的选择。

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

第一章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、使用可以定义一个程序的意义。

a.语义规则b.语法规则c.产生规则d.词法规则7、词法分析器的输入是。

a.单词符号串b.源程序c.语法单位d.目标程序8、中间代码生成时所遵循的是- 。

a.语法规则b.词法规则c.语义规则d.等价变换规则9、编译程序是对。

a.汇编程序的翻译b.高级语言程序的解释执行 c.机器语言的执行d.高级语言的翻译10、语法分析应遵循。

a.语义规则b.语法规则c.构词规则d.等价变换规则二、多项选择题1、编译程序各阶段的工作都涉及到。

a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段。

a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成三、填空题1、解释程序和编译程序的区别在于。

2、编译过程通常可分为5个阶段,分别是、语法分析、代码优化和目标代码生成。

3、编译程序工作过程中,第一段输入是,最后阶段的输出为程序。

4、编译程序是指将程序翻译成程序的程序。

单选解答1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。

2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。

3、对编译而言,变量既持有左值又持有右值,故选c。

4、编译程序打交道最多的就是各种表格,因此选d。

5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。

编译原理试题参考答案

编译原理试题参考答案

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

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

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

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.扫描器的任务是从()中识别出一个个()。

编译原理试卷

编译原理试卷
2、(错)符号表的内容在词法分析阶段填入并在以后各阶段得到使用。
3、(错)设有一个LR(0)项目集I={X→α.Bβ, A→α.},该项目集含有“归约-归约”冲突。
4、(错)对文法G中的一个句子,如果能够找到两种以上的推导,则该句子是二义性的。
5、(对)一个句型的句柄一定是文法某产生式的右部。
6、(对)设有一个LR(0)项目集Ii={X→α.,A→α.},该项目集含有“归约-归约冲突”。
A.汇编语言B.机器语言C.自然语言D.高级语言
3、合并表达式中的常量运算的目的是(C)。
A.合并常量,使表达式中的常量尽可能少
B.合并常量,使表达式尽可能简短
C.将可在编译时刻计算的运算在编译时刻计算出来,用所计算出来的值替换表达式中出现的所有这种运算,使得生成的代码指令尽可能少
D.以上都不是
4、对应Chomsky四种文法的四种语言之间的关系是(B)。
A.L0L1L2L3B.L3L2L1L0
C.L3=L2L1L0D.L0L1L2=L3
5、在状态转换图中,结点代表(D),用圆圈表示。
A.输入缓冲区B.向前搜索C.字符串D.状态
6、编译程序前三个阶段完成的工作是(C)。
A.词法分析、语法分析和代码优化
B.代码生成、代码优化和词法分析
C.词法分析、语法分析、语义分析和中间代码生成
A.规范归约B.算符优先分析法C.递归下降分析法D.LR分析法
10、算符优先分析法从左到右扫描输入串,当栈顶出现(D)时进行归约。
A.素短语B.直接短语C.句柄D.最左素短语
二、判断题(本题共10道小题,每小题2分,共20分)正确的画“√”,错误的画“X”
1、(错)对任何一个编译程序来说,产生中间代码是不可缺少的。

编译原理试题及答案

编译原理试题及答案

参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左A .非终结符号B .短语C .句子D .直接短语 4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A . 字符B .单词C .句子D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3 B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。

2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。

3.通常把编译过程分为分析前端与综合后端两大阶段。

词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案
试题:
1. 解释编译原理的定义,同时给出编译器的作用。

2. 简要描述编译过程中的四个基本步骤。

3. 解释词法分析器的功能和作用。

4. 解释语法分析器的功能和作用。

答案:
1. 编译原理是研究如何将高级语言程序转化为等价机器语言程序的一门学科。

编译器是将高级语言文本转换成等价的机器语言的软件工具。

它负责将源代码转化为目标代码,以便计算机能够理解和执行。

2. (1) 词法分析:将源代码分解成一系列单词或标记。

(2) 语法分析:根据语法规则组织单词或标记形成语法树。

(3) 语义分析:分析语法树以检测语义错误。

(4) 代码生成:根据语法树生成目标代码。

3. 词法分析器的功能是将源代码分解成一系列单词或标记。

它将源代码读取为字符流,然后将这些字符组成单词,同时可以去除空格、注释等不具有实际意义的内容。

词法分析器的作用是为语法分析器提供正确的单词序列,为后续的语义分析和代
码生成步骤建立基础。

4. 语法分析器的功能是根据语法规则组织单词或标记形成语法树。

它通过构建语法树来分析源代码的语法结构,同时可以检测语法错误。

语法分析器的作用是为后续的语义分析和代码生成步骤提供一个结构化的表示形式,便于后续的处理和转换。

东师《编译原理16秋在线作业2

东师《编译原理16秋在线作业2
12.设有文法G[T]:T::=T*F|F,F::=F↑P|P,P::=(T)|a,下列符号串中是该文法句型T*P↑(T*F)的直接短语是哪个()。
A. (T*F)
B. T*F
C. P↑
D. P↑(T*F)
正确答案:
13.设有文法G[E]:E→E+T|T,T→T*F|F,F→(E)|i,考察该文法的句型E+T*(E)+i,其中哪个是句柄()。
正确答案:
14.文法G[E]:E→E+T|T,T→T*F|F,F→(E)|i是简单优先文法。
A.错误
B.正确
正确答案:
15.采用分层技术可以消除任意文法中的多重优先关系。
A.错误
B.正确
正确答案:
16.对任何一个编译程序来说,产生中间代码是不可缺少的。
A.错误
B.正确
正确答案:
17.有限自动机和正规式不能作为设计扫描器的工具。
正确答案:
11.设有文法G[S]:S→Ac,A→Sb|a,则利用文法G进行自顶向下的语法分析时会怎样()。
A.不会出现回溯
B.会出现回溯
C.不会出现死循环
D.会出现死循环
正确答案:
12.局部优化是局限于什么范围内的一种优化()。
A.一个程序块
B.一个基本块
C.一个循环
D.一个语句
正确答案:
13.设有文法G[S]:S→a|b|(T),T→TdS|S,考察该文法的句型(Sd(T)db),其中哪个是句柄()。
A.错误
B.正确
正确答案:
15.削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性。
A.错误
B.正确
正确答案:
16.预测分析表中各个元素的值,不包含输入符号串中存在语法错误时的情形。

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

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

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个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.构造编译程序应掌握______.A.( )源程序B.()目标语言C.()编译方法D.( )以上三项都是6.四元式之间的联系是通过_____实现的。

编译原理讨论报告--第7组

编译原理讨论报告--第7组

《编译原理》在计算机专业中的地位--第7组1.编译原理课程在计算机专业中的地位《编译原理》课程是计算机专业必须的重要基础课。

编译原理是计算机得以普及的关键技术,它拉近了计算机与一般人的距离,使计算机发展不再仅仅是依靠一些科学家,可以让更多人的智慧运用到计算机的改进中来,使计算机技术的到了空前的发展。

在大学开设编译原理这门课程,这门课程关注的是编译器方面的产生原理和技术问题,在计算机的领域里占着及其重要的地位,它不仅是大学计算机专业必修的一门课程。

作为计算机专业的学生应该是本方面的专业人士,需要从更基础的方面,一般人很难理解的方面去更进一步的发展,这样才能更好的为其他专业的人进行更好的服务。

没有翻译程序,计算机就会受到限制,很多工作无法完成。

正是编译程序、解释程序、汇编程序等翻译程序,我们才能将简单的源语言通过翻译程序的工作让计算机完成各种复杂的工作,并且大大提高了效率。

2.为什么要学习编译原理课程?深入学习《编译原理》它所涉及到的知识能够加深我们对语言开发,编译系统的理解,培养我们的思维方式。

如今计算机发展迅速,系统的理论基础可以让我们在将来更好地适应新技术和创造新技术,学习并掌握更深入的计算机知识才能使我们在计算机专业立于不败之地。

编译原理只要研究算法的问题,相对其它来说,比较复杂,比较专注解决一种算法。

通过我们这段时间的学习,只要学习到了真正的内容,在我们毕业以后,无论是工作上还是业余中如果想编一点稍微有一些智能的程序,必然要用到。

并且编译原理一直是各校特高校计算机专业的必修课,也是某些学校的计算机专业硕士生入学面试和博士入学考试必考。

编译原理课程在我国计算机专业人材培养中起了很重要的作用,开发具有自主知识产权的计算机系统软硬件,需要编译原理课程继续发挥作用。

当今社会竞争激烈,计算机已进入各个方向,几乎每个工科专业都会涉及计算机的课程,周围很多同学也报考了计算机2级。

因此,一些计算机专业的岗位不仅计算机专业的学生才能做,计算机专业的毕业生优势减少,而本身计算机专业人数很多,毕业后就业压力山大。

北方工业大学《编译原理》期末试卷2016

北方工业大学《编译原理》期末试卷2016

(√)
2.自上而下分析方法会遇到的主要问题有左递归和回溯。
(√)
3.已知文法 G:Ei | EAE,A+|* ,其中的终结符号集包括{i,+}。 (×)
4.编译程序是将高级语言程序翻译成机器语言程序。

5.只含有综合属性的属性文法称为 S-属性文法。
(×) (√)
6.中间语言的复杂性界于源语言和目标语言之间。
if A = 1 then C:=C+1 else
while A <= D do E[I,J]:=F[E[I+1,J+1]]+F[I+J];
(12 分)
解: 100 (j<, A, C,102)
101 (j, _, _,0)
(1 分)
102 (j<, B, D,104)
103 (j, _, _,101)
{2,3,4} 2
{2,3,4,5} 4
{2,3}
3
{2,3,4} 2
{2,3,4,5} 4
{2,3,4,5} 4
确定化后的 DFA 为:
0
20
1
01
4
1
31
0
1
I1 {2,3} 3 {2,3} 3 {2,3} 3 {2,3} 3
(2 分) (1 分)
对该 DFA M 进行化简:
(2 分)
基本分划∏为:非终态组{1,2,3},终态组{4}。
2.一张转换图只包含有限个状态,其中有一个被认为是 初 态;而且实际上
至少要有一个 终 态。
3.最右推导也称为 规范推导 ,由此得到的句型称为 规范 句型。
4.对于整理与查找来说,杂凑算法具有效率 最高 ,实现 复杂 ,消耗

《编译原理》课程研讨题(2016)

《编译原理》课程研讨题(2016)

第一次研讨、第一批(第3周)1.讨论:(1)编译方法与解释方法的主要区别(2)编译程序组合中分端(前端/后端)和分遍(单遍/多遍)的作用(3)编译程序生成方法中自编译与自展的含义2.编写PL/0程序,功能:输入正整数n,求sum = 1! + 2 ! + ... + n!3.扩充PL/0语言文法的定义,增加实数类型和数组类型。

例:Var i:integer;r:real;A:array[1..10]of real;……A[i]:=r;4.设有下列文法G1[S]和G2[S]:1)指出文法的类型2)证明两者等价G1[S]:S→aAb | bBaA→aA | aB→Bb | bG2[S]:S→aA | bBA→aA | aCB→bB | bDC→bD→a5. 构造一个文法,使其语言是奇数集,且每个奇数不以0开头。

6.文法G[S] 的一个句子abbba 的语法树如下图:SA B aA b b Ba b1) G[S]可能包含哪些产生式?2) 给出句子abbba的规范推导。

3) 求出句子abbba 的句柄。

7.设有上下文无关文法G[S]:S→aAb A→aB A→a B→bA B→b 试构造与G[S]等价的正规文法。

8 实验一识别标识符(A)第一次研讨、第二批(第4周)1.编写PL/0程序,输入正整数n、x1、x2、…、x n,计算:S= ∑ x i/i! i=1~n。

2.构造下列语言的文法,并分析比较(1)L1(G)={a n b n|n≥1}(2)L2(G)={(ab) n|n≥1}(3)L3(G)={a n b m|n,m≥0}(4)L4(G)={a n b m|n,m≥1}3.定义一个文法,产生表达式E:1)含有双目运算符+,*2)+ 的优先级高于*3)+ 右结合,* 左结合4)运算对象为标识符i5)可用括号改变算符的优先级4.扩充PL/0语言文法的定义, 增加for语句的功能。

for语句的示例如下:for i:= 1 to 100 do s:=s+i;5.定义一个文法,产生下列语言:该语言由a、b符号串组成,串中a和b的个数相同6.证明下列文法为二义文法(能否转换为等价的非二义文法?)⑴G1[S]:S→A A→AA A→aAb A→ab⑵G2[S]:S→aSb S→Sb S→b7.试写出V T={0,1},分别满足下述要求的正则表达式:⑴所有以1开始和0结束的符号串。

编译原理习题答案

编译原理习题答案

编译原理习题答案编译原理习题答案编译原理是计算机科学中的重要课程,它研究的是如何将高级程序语言翻译成机器语言的过程。

在学习编译原理的过程中,习题是必不可少的一部分。

通过解答习题,我们可以更好地理解和掌握编译原理的相关知识。

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

1. 什么是编译器?答:编译器是一种将高级程序语言翻译成机器语言的程序。

它接收源程序作为输入,经过词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段的处理,最终生成可执行的目标程序。

2. 什么是词法分析?答:词法分析是编译器的第一阶段,它将源程序分割成一个个词素(token),并识别出每个词素的类型。

常见的词素类型包括关键字、标识符、常量、运算符和界符等。

3. 什么是语法分析?答:语法分析是编译器的第二阶段,它根据词法分析得到的词素序列,判断它们是否符合给定的语法规则。

语法分析使用的是上下文无关文法,常用的语法分析方法有LL(1)分析和LR(1)分析等。

4. 什么是语义分析?答:语义分析是编译器的第三阶段,它对源程序进行语义检查,并生成中间代码。

语义分析主要包括类型检查、作用域分析和语义动作等。

5. 什么是中间代码生成?答:中间代码生成是编译器的第四阶段,它将源程序转换成一种中间表示形式,以便进行代码优化和目标代码生成。

常见的中间表示形式有抽象语法树(AST)、三地址码和四元式等。

6. 什么是代码优化?答:代码优化是编译器的第五阶段,它通过对中间代码进行分析和变换,以提高目标程序的执行效率。

常见的代码优化技术包括常量传播、公共子表达式消除和循环优化等。

7. 什么是目标代码生成?答:目标代码生成是编译器的最后一阶段,它将中间代码转换成特定机器的目标代码。

目标代码可以是汇编语言代码或机器语言代码,它可以直接在目标机器上执行。

8. 什么是语法制导翻译?答:语法制导翻译是一种将源程序翻译成目标代码的方法,它将语义动作嵌入到语法规则中,以实现翻译的过程。

编译原理样题3(有答案

编译原理样题3(有答案

编译原理样题一选择题【】1.____型文法也称为正规文法。

[A] 0 [B] 1 [C] 2 [D] 3【】2.____文法不是LL(1)的。

[A] 递归 [B] 右递归 [C] 2型 [D] 含有公共左因子的【】3.文法E→E+E|E*E|i的句子i*i+i*i的不同语法分析树的总数为______。

[A]1 [B]3 [C]5 [D]7【】4.四元式之间的联系是通过实现。

[A]临时变量 [B]指示器 [C]符号表 [D]程序变量【】5.同心集合并可能会产生的新冲突为。

[A]二义 [B]移进/移进 [C]移进/归约[D]归约/归约【】6.代码优化时所依据的是。

[A]语法规则 [B]词法规则 [C]等价变换规则 [D]语义规则【】7.表达式a-(-b)*c的逆波兰表示为。

[A]a-b@c* [B]ab@c*- [C]ab@- [D]ab@c-* (注:@为单目减运算符)【】8.过程的DISPLAY表记录了。

[A]过程的连接数据[B]过程的嵌套层次[C]过程的返回地址 [D]过程的入口地址二填空题1.编译过程的六个阶段为:词法分析、、语义分析、代码优化和目标代码生成。

2.词法分析阶段的任务式从左到右扫描,从而逐个识别。

3.对于文法G1和G2,若有,则称文法G1和G2是等价的。

4.对于文法G[E]:E→T|E+T T→F|T*F F→P^F|P P→(E)|i,句型T+T*F+i的句柄是,最左素短语是。

所谓素短语是指这样的一个短语,它至少含有一个终结符,并且,除它自身之外不再含任何更小的素短语。

所谓最左素短语是指处于句型最左边的那个素短语。

如,P*P和i是句型P*P+i的素短语,而P*P 是它的最左素短语。

5.最右推导的逆过程称为,也称为。

6.规范规约中的可规约串是,算符优先分析中的可规约串是。

7.(A∨ B)∧(C∨ ¬D∧ E)的逆波兰式是。

8.在属性文法中文法符号的两种属性分别称为和。

编译原理试题+答案

编译原理试题+答案

编译原理试卷三一、选择1.下面说法正确的是:A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法2.文法G[A]:A→b A→AB B→Ab B→a是( ):A 二型文法B 正规文法3.下面说法正确的是( ):A lex是一个词法分析器B yacc是一个语法分析器的生成器4.一个LR(1)文法合并同心集后,如果不是LALR(1)文法必定存在( ):A 移进--归约冲突B 归约--归约冲突5.7.5 PL/0语言编译程序使用递归子程序法进行语法分析,他的文法必须满足( ):A LL(1)文法B SLR(1) 文法二、问答题问答第1题(6分)试对 repeat x:=b until b>a or (b<a and b=d) 的四元式序列给出第四区段应回填的指令地址,并指出真假出口链和链头及回填的次序。

应回填的值回填的次序真链头 E.true=(1) x:= b 真出口链( )(2) if b>a goto ( ) ( ) 真出口链( )(3) goto ( ) ( )(4) if b<a goto ( ) ( ) 假链头 E.false=(5) goto ( ) ( ) 假出口链( )(6) if b=d goto ( ) ( )(7) goto ( ) ( )(8) ...问答第2题(10分)某语言的拓广文法G′为:(0) S′→S(1) S → Db|B(2) D → d|ε(3) B → Ba|ε证明G不是LR(0)文法而是SLR(1)文法,请给出SLR(1)分析表。

问答第3题(5分)给出文法G[S]的LR(1)项目集规范族中I0项目集的全体项目。

G[S]为:S →S;V|VV →VaA|AA →b(S)| εI0:问答第4题(5分)文法G[M]及其LR分析表如下,请给出对串dada#的分析过程。

G[M]: 1) S →VdB2) V →e3) V →ε 4) B →a5) B →Bda 6) B →ε状态ACTION GOTOd e a # S B V0 r3 S3 1 21 acc2 S43 r24 r6 S5 r6 65 r4 r46 S7 r17 S88 r5 r5问答第5题(7分)(1) 给出下列PL/0示意程序中当程序执行到D过程调用A过程后(即执行A过程体时)的栈式存储分配布局和用Display显示表时A过程最新活动记录的内容。

编译原理考试试题

编译原理考试试题

一、答复以下问题:(30分)1.什么是属性文法?什么是属性文法?它们之间有什么关系?解答:属性文法是只含有综合属性的属性文法。

〔2分〕属性文法要求对于每个产生式A X1X2…,其每个语义规那么中的每个属性或者是综合属性,或者是的一个继承属性,且该属性仅依赖于:(1)产生式的左边符号X12…1的属性;(2)A的继承属性。

〔2分〕属性文法是属性文法的特例。

〔2分〕2.什么是句柄?什么是素短语?一个句型的最左直接短语称为该句型的句柄。

〔3分〕素短语是这样的一个短语,它至少包含一个终结符并且不包含更小的素短语。

〔3分〕3.划分程序的根本块时,确定根本块的入口语句的条件是什么?解答:〔1〕程序第一个语句,或〔2〕能由条件转移语句或无条件转移语句转移到的语句,或〔3〕紧跟在条件转移语句后面的语句。

4.(6分)运行时的表的内容是什么?它的作用是什么?答:表是嵌套层次显示表。

每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表.假定现在进入的过程层次为i,那么它的表含有1个单元,自顶向下每个单元依次存放着现行层、直接外层、…、直至最外层(主程序,0层)等每层过程的最新活动记录的起始地址。

通过表可以访问其外层过程的变量。

5.(6分)对以下四元式序列生成目标代码:*C*2其中,H是根本块出口的活泼变量,R0与R1是可用存放器答:R0,BR0,CR1,ER1,FR0,R1R0,2R0,H二、设={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的。

(8分)答:构造相应的正规式:(0|1)*1(0|1) (3分): (2分)1 11012340 0确定化:(3分)I0I1I{0,1,2}{1,2}{1,2,3}{1,2}{1,2}{1,2,3}{1,2,3} {1,2,4} {1,2,3,4} {1,2,4} {1,2} {1,2,3} {1,2,3,4}{1,2,4}{1,2,3,4}10 1 0 00 1 1 1 三、写一个文法使其语言为L(G)={ | ≥1}。

编译原理习题(含解答)_

编译原理习题(含解答)_

5. 写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列。 解:逆波兰表示: abc*+ab+/d- 三元式序列: ① (*,b,c) ② (+,a,①) ③ (+,a,b) ④ (/,②,③) ⑤ (-,④,d) 五、计算题(10分) 1.构造下述文法 G[S] 的自动机: S->A0 A->A0|S1|0 该自动机是确定的吗?若不确定,则对它确定化。 解:由于该文法的产生式S->A0,A->A0|S1中没有字符集VT的输入,所 以不是确定的自动机。 要将其他确定化,必须先用代入法得到它对应 的正规式。把S->A0代入产生式A->S1有: A=A0|A01|0=A(0|01)|0=0(0|01)*。 代入S->A0有该文法的正规式: * 0(0|01) 0,所以, 改写该文法为确定的自动机为:
由于状态A有3次输入0的重复输入,所以上图只是NFA,下可知DFA为: 1 0 0 C B A 0
综合练习二
一、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划 按错论)(每个4分,共40分) 1.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生 成,代码优化,目标代码生成等五个部分,还应包括_ C_ __。 A.模拟执行器 B.解释器 C.表格处理和出错处理 D.符号执行器 2.文法 G[N]=({b},{N,B},N ,{N→b│bB,B→bN}),该文法所 描述的语言是_ C_ __。 A.L(G[N])={bi│i≥0} B.L(G[N])={b2i│i≥0} C.L(G[N])={b2i+1│i≥0} D.L(G[N])={b2i+1│i≥1} 3.一个句型中的最左_ _B_ __称为该句型的句柄。 A.短语 B.简单短语 C.素短语 D. 终结符号 4.设 G 是一个给定的文法,S是文法的开始符号,如果 S->x( 其中 x∈V*), 则称 x 是文法 G 的一个__ B ___。 A.候选式 B.句型 C.单词 D.产生式 5.文法 G[E] : E→T∣E + T T→F∣T ﹡ F F→a∣ ( E ) 该文法句型 E + F ﹡ (E + T) 的简单短语是下列符号串中的__ B ___。 ① (E + T) ②E + T ③F ④ F ﹡ (E + T) A.① 和 ③ B.② 和 ③ C.③ 和 ④ D.( ) ③ 6.若一个文法是递归的,则它所产生的语言的句子__ A ___。 A.是无穷多个 B.是有穷多个 C.是可枚举的 D.个数是常量 7.词法分析器用于识别_ C____。 A.句子 B.句型 C.单词

编译原理习题

编译原理习题

一、单项选择题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、编译程序是对。

a.汇编程序的翻译b.高级语言程序的解释执行c.机器语言的执行d.高级语言的翻译7、语法分析应遵循。

a.语义规则b.语法规则c.构词规则d.等价变换规则二、多项选择题1、编译程序各阶段的工作都涉及到。

a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段。

a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成三、填空题1、解释程序和编译程序的区别在于。

2、编译过程通常可分为5个阶段,分别是、语法分析、代码优化和目标代码生成。

3、编译程序工作过程中,第一段输入是,最后阶段的输出为程序。

4、编译程序是指将程序翻译成程序的程序。

一、单项选择题1、文法G:S→xSx|y所识别的语言是。

a. xyxb. (xyx)*c. x n yx n(n≥0)d. x*yx*2、文法G描述的语言L(G)是指。

a. L(G)={α|S+⇒α , α∈V T*}b. L(G)={α|S*⇒α, α∈V T*}c. L(G)={α|S*⇒α,α∈(V T∪V N*)}d. L(G)={α|S+⇒α, α∈(V T∪V N*)}3、有限状态自动机能识别。

a. 上下文无关文法b. 上下文有关文法c.正规文法d. 短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立。

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

8.实验一 识别标识符(B)
第二次研讨、第一批(第 5 周)
1.构造一个 DFA,接受∑={a,b}上由正规式 aa*(a|ba)*b 定义的字符串并给出相 应的正规文法。 2. 写出<简单查询语句>的文法. 例如: 有 2 个关系 R ( a,b,c),S (c,d,e)。以下是简单查询语句的样例: 语句 1: SELECT a, b FROM R WHERE a=15 OR b<18; 语句 2: SELECT R.a, S.c FROM R , S WHERE R.c=S.c AND R.b<18; 3.下面文法 G[S]产生 a、b 字符数相等的非空 a、b 字符串。 S → aB | bA B → bS | aBB | b A → aS | bAA | a 1)证明该文法是二义的。 2)修改上述文法,使之非二义。 4.试用有限自动机的等价性证明以下 2 个正规式((a|b)* |aa)*b 和(a|b)*b 是等价 的,并给出相应的正规文法。 5.写出 Σ={a,b}上 L={ w | w 中的 a 的个数为偶数}的正规式,构造接受 L 的 DFA。 6. 构造一个最简的 DFA M,接受 Σ={a,b}上同时满足下列条件的符号串: 1)以 a 开头,以 b 结尾; 2)符号串中包含“aba”。 7.有一台自动售货机,接收 1 分和 2 分硬币,出售 3 分一块的硬糖。顾客每次 向机器中投放一个硬币,当投放硬币额>=3 分时,机器会给顾客一块硬糖(只给 糖不找钱) 。 1)写出售后机售糖的正规表达式; 2)构造识别上述正规表达式的最简 DFA。 8. 实验二 词法分析(A)
第二次研讨、第二批(第 6 周)
1.给出<嵌套查询语句>的文法。 例如:有 2 个关系 R ( a,b,c),S (c,d,e)。以下是嵌套查询语句的样例: 语句:SELECT a,b FROM R WHERE R.c in (SELECT S.c FROM S WHERE d=15); 2.构造一个最简 DFA M,接受 ={d,.,e}, 上的正规式 dd.dd(edd)表示的无符号数的集合。其中 d 为 0~9 的数字。 3.正规文法(又称为右线性文法) :文法中每一条产生式 α→β 的形式都为 : A→aB 或 A→a。 左线性文法:每一条产生式 α→β 的形式都为:A→Ba 或 A→a。 设计一个算法,把给定的左线性文法转换为等价的右线性文法。 4. 构造一个 DFA M,接受 Σ={a,b}上满足下列条件的符号串: 1)以 a 开头,以 b 结尾; 2)不包含“aba”。 5.对一个文法若消除了左递归,提取了左公共因子后是否一定为 LL(1))文法?试 举例说明。 6.已知文法 G[E]的定义如下: E→E+T |T T→T*F |F F → (E) | i 试构造一组递归下降分析子程序,使之识别 G[E]所产生的语言。 7. 语言可接受的合法文件名为: device:name.extension ,其中 device 、 name 、 extension 是长度至少为 1 的字符串,而且第一部分( device: )和第三部分 (.extension)可缺省。试画出识别这种文件名的最简 DFA。 8.实验二 词法分析(B)
第三次研讨、第一批(第 7 周)
1.设有文法 G[S]:S→SaF | F F→FbP | P P→c | d (1) 构造 G[S]的算符优先关系表 (2) 分别给出 cadbdac# 和 dbcabc# 的分析过程 2.已知文法 G[P]的定义如下: P → begin D S end D → D; d | d S → S; s | s 试构造一组递归下降分析程序,使之识别 G[P]所产生的语言。 3.设有文法 G[S]:S→a B c | b A B (1) 证明 G[S]是一个 LL(1)文法。 (2) 构造 G[S]的预测分析表。 (3) 给出 baabbb 的分析过程。 A→a A b | b B→b |
编 译 原 理
课程学习研讨题
上海大学计算机学院 《编译原理》课程组 2016 年 3 月
第一次研讨、第一批(第 3 周)
1.讨论: (1)编译方法与解释方法的主要区别 (2)编译程序组合中分端(前端/后端)和分遍(单遍/多遍)的作用 (3)编译程序生成方法中自编译与自展的含义 2.编写 PL/0 程序,功能: 输入正整数 n,求 sum = 1! + 2 ! + ... + n! 3.扩充 PL/0 语言文法的定义,增加实数类型和数组类型。 例: Var i:integer; r:real; A:array[1..10]of real; …… A[i]:=r; 4.设有下列文法 G1[S]和 G2[S]:1)指出文法的类型 2)证明两者等价 G1[S]:S→aAb | bBa A→aA | a B→Bb | b G2[S]:S→aA | bB A→aA | aC B→bB | bD C→b D→a 5. 构造一个文法,使其语言是奇数集,且每个奇数不以 0 开头。 6.文法 G[S] 的一个句子 abbba 的语法树如下图: S A B a A b bB a b 1) G[S]可能包含哪些产生式? 2) 给出句子 abbba 的规范推导。 3) 求出句子 abbba 的句柄。 7.设有上下文无关文法 G[S]:S→aAb A→aB A→a B→bA B→b 试构造与 G[S]等价的正规文法。 8 实验一 识别标识符(A)
(4) A→b
6.设有文法 G[E]:E→E+T | E∨T | T T→T*F | T∧F | F F→num | bool |(E) 设计 G[E]的语义子程序,对表达式进行类型检查并翻译为逆波兰式。 7.设有文法 G[number]:number → num· num num→digit num | digit digit→ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7| 8 | 9 设计 G[number]的语义子程序,计算实数 number 的值。 8.实验三 语法分析(A)
பைடு நூலகம்
4.设有文法 G[S’]: (0) S’→S (1) S→SaA (2) S→a (3) A→AbS (1) 构造 G[S]的 LR(0)项目规范族 C={I0,I1,…In}。 (2) 构造 SLR(1)分析表,判断 G[S]的文法类型。 (3) 写出句子 aabba 的分析过程。 5.设采用自底向上的移进-归约语法分析,属性文法 G[A]如下: A→ a B { print “0”} A→ c { print “1”} B→ A b { print “2”} (1) 输入为 aacbb 时,打印的符号串是什么? (2) 写出 aacbb 的语法制导分析过程。
第四次研讨、第一批(第 9 周)
1.以下是简单表达式(只含有加、减运算)计算的一个属性文法 G(E): E → TR { R.in := T.val ; E.val := R.val } R → +TR1 { R1.in := R.in + T.val ; R.val := R1.val } R → -TR1 { R1.in := R.in - T.val ; R.val := R1.val } R→ { R.val := R.in } T → num { T.val := lexval(num) } 其中: lexval(num)表示从词法分析程序得到的常数的值。 试给出表达式 8-3+6 的语法树和相应的带标注语法分析树。 2.教材 P224 第 4 题。 3.写出下列语句的三地址中间代码(四元式序列) : while (A<C or B<D ) do begin if (A>=1) then C:=C+1 else while (A<=D) do A:=A+2; end 4.教材 P252 第 2 题 5.对下列基本块 B 应用 DAG 进行优化,设只有 U,V 在基本块后面还要继续 引用。 B: T0:=100 T1:=k+T0 T2:=T0*2 U:=T1+T2 T3:=k+T0 V:=T3*U 6.1)把下列中间代码序列划分为基本块并作出其流图 (1) (2) (3) (4) L4: (5) (6) read(C) A=0 B=1 A=A+B if B>C goto L2 B=B+1
第一次研讨、第二批(第 4 周)
1.编写 PL/0 程序,输入正整数 n、x1、x2、…、xn,计算:S= ∑ xi/i! i=1~n。 2.构造下列语言的文法,并分析比较 (1)L1(G)={anbn|n≥1} (2)L2(G)={(ab) n|n≥1} (3)L3(G)={anbm|n,m≥0} (4)L4(G)={anbm|n,m≥1} 3.定义一个文法,产生表达式 E: 1)含有双目运算符 +,* 2)+ 的优先级高于* 3)+ 右结合,* 左结合 4)运算对象为标识符 i 5)可用括号改变算符的优先级 4.扩充 PL/0 语言文法的定义, 增加 for 语句的功能。 for 语句的示例如下: for i:= 1 to 100 do s:=s+i; 5.定义一个文法,产生下列语言: 该语言由 a、b 符号串组成,串中 a 和 b 的个数相同 6.证明下列文法为二义文法(能否转换为等价的非二义文法?) ⑴ G1[S]:S→A A→AA A→aAb A→ab ⑵ G2[S]:S→aSb S→Sb S→b 7.试写出 VT={0,1},分别满足下述要求的正则表达式: ⑴ 所有以 1 开始和 0 结束的符号串。 ⑵ 恰含有 3 个 1 的所有符号所组成的集合。 ⑶ 集合{01,1}。 ⑷ 所有以 111 结束的符号串。
第三次研讨、第二批(第 8 周)
1.设有文法 G[S]:S→A A→A m D n | B B→a | m S n (1) 构造 G[S]的算符优先关系表。 (2) 给出 aman# 和 maban# 的分析过程。 (3) 由(2)说明算符优先分析算法的局限性。 D→S | DbS
相关文档
最新文档