《编译原理》课程研讨题(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.预测分析表中各个元素的值,不包含输入符号串中存在语法错误时的情形。
  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
相关文档
最新文档