编译原理期末考试题目及答案
(完整版)编译原理期末试题(8套含答案+大题集)
《编译原理》期末试题(一)
一、是非题(请在括号内,正确的划√,错误的划×)(每个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是无二义的,则它的任何句子α_____。
(精选)编译原理期末考试题目及答案
一、填空题(每空2分,共20分)
1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。
2.编译器常用的语法分析方法有自底向上和自顶向下两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。
5.对编译程序而言,输入数据是源程序,输出结果是目标程序。
1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。
4.一个LL(1)分析程序需要用到一张分析表和符号栈。
5.后缀式abc-/所代表的表达式是a/(b-c)。
二、单项选择题(每小题2分,共20分)
1.词法分析器的输出结果是__C。
A.单词的种别编码B.单词在符号表中的位置
C.单词的种别编码和自身值D.单词自身值
2.正规式 M 1 和 M 2 等价是指__C_。
A. M1和M2的状态数相等B. M1和M2的有向边条数相等
C. M1和M2所识别的语言集相等 D. M1和M2状态数和有向边条数相等
3.文法G:S→xSx|y所识别的语言是_C____。
A. xyx B. (xyx)* C.xnyxn(n≥0) D. x*yx*
4.如果文法G是无二义的,则它的任何句子α_A____。
编译原理期末考试题目及答案
编译原理期末考试题⽬及答案
⼀、填空题(每空2分,共20分)
1.编译程序⾸先要识别出源程序中每个单词,然后再分析每个句⼦并翻译其意义。
2.编译器常⽤的语法分析⽅法有⾃底向上和⾃顶向下两种。
3.通常把编译过程分为分析前端与综合后端两⼤阶段。词法、语法和语义分析是对源程序的分析,中间代码⽣成、代码优化与⽬标代码的⽣成则是对源程序的综合。
4.程序设计语⾔的发展带来了⽇渐多变的运⾏时存储管理⽅案,主要分为两⼤类,即静态存储分配⽅案和动态存储分配⽅案。
5.对编译程序⽽⾔,输⼊数据是源程序,输出结果是⽬标程序。
1.计算机执⾏⽤⾼级语⾔编写的程序主要有两种途径:解释和编译。
2.扫描器是词法分析器,它接受输⼊的源程序,对源程序进⾏词法分析并识别出⼀个个单词符号,其输出结果是单词符号,供语法分析器使⽤。
3.⾃下⽽上分析法采⽤移进、归约、错误处理、接受等四种操作。
4.⼀个LL(1)分析程序需要⽤到⼀张分析表和符号栈。
5.后缀式abc-/所代表的表达式是a/(b-c)。
⼆、单项选择题(每⼩题2分,共20分)
1.词法分析器的输出结果是__C。
A.单词的种别编码B.单词在符号表中的位置
C.单词的种别编码和⾃⾝值D.单词⾃⾝值
2.正规式M 1 和M 2 等价是指__C_。
A.M1和M2的状态数相等 B.M1和M2的有向边条数相等
C.M1和M2所识别的语⾔集相等D.M1和M2状态数和有向边条数相等
3.⽂法G:S→xSx|y所识别的语⾔是_C____。
A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx*
编译原理期末考试试卷及答案
一. 填空题(每空2分,共20分)
1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两
种:静态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。 2. 规范规约是最(3)规约。
3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有(6)和出错处理。 4.表达式x+y*z/(a+b)的后缀式为 (7) 。 5.文法符号的属性有综合属性和 (8)。
6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址计算公式为(9)。
7.局部优化是局限于一个(10)范围内的一种优化。 二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分)
1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以
及一组( )。
A . 字符串
B . 产生式
C . 开始符号
D . 文法 2.程序的基本块是指( )。
A . 一个子程序
B . 一个仅有一个入口和一个出口的语句
C . 一个没有嵌套的程序段
D . 一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。 A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析。 A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。
编译原理期末考试习题及答案
编译原理期末考试习题及答案
⼀、填空题|(每题4分,共20分)
1. 乔母斯基定义的3型⽂法(线性⽂法)产⽣式形式 A→Ba|a,或A→aB|a,A,B∈Vn, a,b∈Vt 。
2.语法分析程序的输⼊是单词符号,其输出是语法单位。
3 型为 B → .aB 的LR(0)项⽬被称为移进项⽬,型为 B → a.B 的LR(0)
项⽬被称为待约项⽬,
4.在属性⽂法中⽂法符号的两种属性分别为继承属性和综合属性。
5、运⾏时存贮管理⽅案有静态存储分配、动态存储分配和堆式存储分配和⽅案。⼆.已知⽂法 G(S)
(1) E → T | E+T
(2) T → F | F*F
(3) F →(E)| i
(1)写出句型(T*F+i)的最右推到并画出语法树。(4分)
(2)写出上述句型的短语,直接短语和句柄。(4分)
答:(1)最右推到(2分)
E ==> T ==>
F ==> (E) ==> (E+T) ==> (E+F) ==> (E+i) ==> (T+i) ==> (T*F+i)
(2) 语法树(2分)
(3)(4分)
短语:(T*F+i),T*F+i ,T*F , i
直接短语:T*F , i
句柄:T*F
三. 证明⽂法G(S) :S → SaS |ε是⼆义的。(6分)
答:句⼦aaa对应的两颗语法树为:
因此,⽂法是⼆义⽂法
四.给定正规⽂法G(S):
(1) S → Sa | Ab |b
(2) A → Sa
请构造与之等价的DFA。(6分)
答:对应的NFA为:(6分)
五. 构造识别正规语⾔b*a(bb*a)*b* 最⼩的DFA(要求写出求解过程)。(15分)答:(1)对应的NFA(5分)
编译原理期末考试试卷及答案
一. 填空题(每空2分,共20分)
1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两
种:静态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。 2. 规范规约是最(3)规约。
3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有(6)和出错处理。 4.表达式x+y*z/(a+b)的后缀式为 (7) 。 5.文法符号的属性有综合属性和 (8)。
6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址计算公式为(9)。
7.局部优化是局限于一个(10)范围内的一种优化。 二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分)
1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以
及一组( )。
A . 字符串
B . 产生式
C . 开始符号
D . 文法 2.程序的基本块是指( )。
A . 一个子程序
B . 一个仅有一个入口和一个出口的语句
C . 一个没有嵌套的程序段
D . 一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。 A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析。 A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。
编译原理试题及答案
编译原理试题及答案
一、选择题
1. 下列哪个不是编译器所需的基本处理步骤?
A. 词法分析
B. 语法分析
C. 语义分析
D. 目标代码优化
答案:D
2. 编译器的主要功能是将高级语言程序翻译成什么形式?
A. 汇编语言
B. 机器语言
C. 中间代码
D. 高级语言
答案:B
3. 下列哪个不属于编译器的后端阶段?
A. 代码优化
B. 目标代码生成
C. 词法分析
D. 目标程序优化
答案:C
二、填空题
1. 编译器的输入是源程序,输出是目标程序。
2. 目标代码生成阶段的任务是将中间代码翻译成汇编语言或机器语言。
3. 语法分析阶段的输出是抽象语法树。
三、简答题
1. 请简述编译器的工作原理。
编译器的工作原理主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。词法分析阶段将源程序分解成单词(也称为词法单元),语法分析阶段根据语法规则将词法单元组织成一个语法树,语义分析阶段对语法树进行语义检查,中间代码生成阶段将语法树转化为中间代码,代码优化阶段对中间代码进行优化,最后目标代码生成阶段将中间代码转化为机器语言或汇编语言。
2. 请说明词法分析的作用是什么,如何实现?
词法分析的作用是将源程序中的字符序列转化为单词序列,也就是将一段代码切分成不同的词法单元。实现词法分析可以通过有限状态
自动机来处理输入字符序列,并根据一系列规则将字符序列划分为词
法单元。常用的方法有手写分析器和使用词法分析生成器等。
3. 简要介绍一下代码优化的目的和方法。
代码优化的目的是通过对程序的中间代码或目标代码进行调整,以
编译原理期末考试题(含答案)
编译原理期末考试题(含答案)
1. 请简要解释编译原理的定义和作用。
编译原理是研究将高级语言源程序转化为等价的目标程序的一
门学科。它的主要作用是将高级语言的源代码翻译为计算机能够执
行的目标代码,从而实现程序的运行。
2. 请列举并解释编译过程的各个阶段。
- 词法分析:将源代码划分为一个个词法单元,如变量、关键
字等。
- 语法分析:根据语法规则,将词法单元组合为语法树,检查
语法结构是否正确。
- 语义分析:对语法树进行语义检查,如类型匹配、作用域等。
- 中间代码生成:将语法树转化为中间代码表示形式,方便后
续优化。
- 代码优化:对中间代码进行优化,提高程序执行效率。
- 目标代码生成:将优化后的中间代码转化为目标机器代码。
3. 请解释符号表在编译过程中的作用。
符号表是编译器在编译过程中用来管理变量、函数、类型等标
识符的数据结构。它的主要作用是记录标识符的相应属性,如类型、作用域等,以便在后续的语法、语义分析以及代码生成过程中进行
查找、检查等操作。
4. 请简要解释LL(1)文法的定义和特点。
LL(1)文法是一种上下文无关文法,它具有以下特点:
- 对于给定的非终结符,它的产生式右部的首符号不相同。
- 对于给定的产生式右部的首符号,它的产生式右部不相同。
- 通过向前查看一个符号,就能确定所选用的产生式。
5. 请简要解释词法分析器的作用和实现方式。
词法分析器的主要作用是将源代码分解为一个个词法单元,如
变量名、关键字等。它的实现方式一般采用有限自动机,通过定义
正则表达式描述各个词法单元的模式,然后根据模式匹配的结果生
编译原理期末考试试卷及答案
.
得分 20分)填空题(每空2分,共一.但大部分编译中采用的方案有两1. 不同的编译程序关于数据空间的存储分配策略可能不同,。(2)种:静态存储分配方案和动态存储分配方案,而后者又分为(1)和 3)规约。2. 规范规约是最(、语义分析与中间代码生成,代码优化及)个阶段:词法分析、(453. 编译程序的工作过程一般划分为 6)和出错处理。)。另外还有((5。(7)4.表达式x+y*z/(a+b)的后缀式为
。(8) 5.文法符号的属性有综合属性和j],a[1..15,1..20]某个元素a[i6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组。的地址计算公式为(9))
范围内的一种优化。7.局部优化是局限于一个(10得分分)分,共201-6为单选题,7-8为多选题,每问2(二.选择题
,以)包括四个组成部分:一组终结符,一组非终结符,一个( 1. 一个上下文无关文法G 。)及一组(文法.开始符号 D.A.字符串 B.产生式 C )。
2.程序的基本块是指(
一个仅有一个入口和一个出口的语句一个子程序 B.A.一组顺序执行的程序段,仅有一个入口和一个出口一个没有嵌套的程序段 D.C.
)分析方法。高级语言编译程序常用的语法分析方法中,递归下降分析法属于(3.
自右向左. D自顶向下 C.自底向上 BA.自左向右.
)特别适用于表达式的分析。( 4.在通常的语法分析方法中, LR分析法..算符优先分析法 BA 1)分析法. LL( DC.递归下降分析法。.经过编译所得到的目标程序是(5 )间接三元式序列.四元式序列A. B 机器语言程序或汇编语言程序.二元式序列 D.C 。)).6 一个文法所描述的语言是(;描述一个语言的文法是( C B A.唯一的.不唯一的.可能唯一,也可能不唯一.
编译原理期末考试题目及答案
x
一、填空题(每空 2 分,共 20分) 1.编译程序首先要识别出源程序中每个
单词,然后再分析每个 句子 并翻译其意义。
2.编译器常用的语法分析方法 有自底向上 和 自顶向下 两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的 分析 ,中间代码生成、代码
优化与目标代码的生成则是对源程序的 综合 。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即
静态存储分配 方案和 动态存储分配
5.对编译程序而言,输入数据是 源程序 ,输出结果是 目标程序 。 1.计算机执行用高级语言编写的程序主要有两种途径: 解释和编译 。
2.扫描器是 词法分析器,它接受输入的 源程序,对源程序进行 词法分析 并识别出一个个单词符号,其输出结果是单词符 号,供语法分析器使用。
3.自下而上分析法采用 移进 、归约、错误处理、 接受 等四种操作。 4.一个 LL (1)分析程序需要用到 一张分析表 和符号栈 。 5. 后缀式abc-/所代表的表达式是 a/(b-c )。
二、单项选择题(每小题 2分,共 20分) 1. 词法分析器的输出结果是 __C 。 A . 单词的种别编码 B .
C . 单词的种别编码和自身值
D . 2. 正规式 M 1 和 M 2 等价是指 __C_ 。 A . M1 和 M2 的状态数相等 C . M1 和 M2 所识别的语言集相等 3. 文法G : S T xSx|y 所识别的语言是 _C. 单词在符号表中的位置
单词自身值
B . M1 和 M2 的有向边条数相等
编译原理期末试题及答案
1、试为表达式 w+(a+b)*(c+d/(e-10)+8) 写出相应的逆波兰表示。
2、写出表达式a+b*(c-d)/e的逆波兰式和三元序列。
3、写出表达式a:=(b+c)*e+(b+c)/f的逆波兰式和三元序列。
4、已知文法G(S)及相应翻译方案
S→aAb {print “1”}
S→a {print “2”}
A→AS {print “3”}
A→c {print “4”}
输入acab, 输出是什么?
5、已知文法G(S)
S→bAa
A→(B | a
B→A a)
写出句子b(aa)b的规范归约过程。
6、已知文法G[S]
S→S*aF | aF | *aF
F→+aF | +a
消除文法左递归。
1、设文法G(S):
S→^ | a | (T)
T→T,S | S
⑴ 消除左递归;
⑵ 构造相应的FIRST和FOLLOW集合;
⑶ 构造预测分析表
2.语句 if E then S
(1) 改写文法,使之适合语法制导翻译;
(2) 写出改写后产生式的语义动作。
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;
(1)写出适合语法制导翻译的产生式;
(2)写出每个产生式对应的语义动作。
7.已知文法G(S)
S→a | ^ | (T)
T→T,S | S
(1) 给出句子(a,(a,a))的最左推导;
(2) 给出句型((T,S),a)的短语, 直接短语,句柄。
编译原理期末考试复习题(含答案)
编译原理期末考试复习题(含答案)
一、选择题
1.代码生成阶段的主要任务是(C)。
A.把高级语言翻译成汇编语言
B.把高级语言翻译成机器语言
C.把中间代码变换成依赖具体机器的目标代码
D.把汇编语言翻译成机器语言
2.文法G 所描述的语言是( C )的集合。
A.文法G 的字母表V 中所有符号组成的符号串
B.文法G 的字母表V 的闭包V* 中的所有符号串
C.由文法的开始符号推出的所有终结符串
D.由文法的开始符号推出的所有符号串
3.语言是(C)。
A.终结符与非终结符的符号串的集合
B.非终结符符号串的集合
C.终结符符号串的集合
D.产生式的集合
4.常用的中间代码形式不含(D)。
A.三元式
B.四元式
C.逆波兰式
D.语法树
5.四元式之间的联系是通过(B)实现的。
A.指示器
B.临时变量
C.符号表
D.程序变量
6.词法分析器的输出结果是( C )。
A.单词的种别编码B.单词在符号表中的位置
C.单词的种别编码和自身值D.单词自身值
7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为(B)。
A. ┐AB∨∧CD∨B.A┐B∨CD∨∧
C.AB∨┐CD∨∧ D.A┐B∨∧CD∨
8.下推自动机识别的语言是( C )
A.0型语言 B.1型语言
C.2型语言 D.3型语言
9. 在规范归约中,用(B)来刻画可归约串。
A.直接短语 B.句柄C.最左素短语 D.素短语
10.词法分析器用于识别( C)。
A.字符串 B.语句 C.单词 D.标识符
11.一个句型中称为句柄的是该句型的最左(D)
A.非终结符号 B.短语 C.句子 D.直接短语
编译原理期末考试题目及答案
一、填空题(每空2分,共20分)
1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。
2.编译器常用的语法分析方法有自底向上和自顶向下两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。
5.对编译程序而言,输入数据是源程序,输出结果是目标程序。
1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。
4.一个LL(1)分析程序需要用到一张分析表和符号栈。
5.后缀式abc-/所代表的表达式是a/(b-c)。
二、单项选择题(每小题2分,共20分)
1.词法分析器的输出结果是__C。
A.单词的种别编码B.单词在符号表中的位置
C.单词的种别编码和自身值D.单词自身值
2.正规式M 1 和M 2 等价是指__C_。
A.M1和M2的状态数相等 B.M1和M2的有向边条数相等
C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等
3.文法G:S→xSx|y所识别的语言是_C____。
A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx*
4.如果文法G是无二义的,则它的任何句子α_A____。
编译原理期末考试复习题(含答案)
编译原理期末考试复习题(含答案)
一、选择题
1.代码生成阶段的主要任务是(C)。
A.把高级语言翻译成汇编语言
B.把高级语言翻译成机器语言
C.把中间代码变换成依赖具体机器的目标代码
D.把汇编语言翻译成机器语言
2.文法G 所描述的语言是( C )的集合。
A.文法G 的字母表V 中所有符号组成的符号串
B.文法G 的字母表V 的闭包V* 中的所有符号串
C.由文法的开始符号推出的所有终结符串
D.由文法的开始符号推出的所有符号串
3.语言是(C)。
A.终结符与非终结符的符号串的集合
B.非终结符符号串的集合
C.终结符符号串的集合
D.产生式的集合
4.常用的中间代码形式不含(D)。
A.三元式
B.四元式
C.逆波兰式
D.语法树
5.四元式之间的联系是通过(B)实现的。
A.指示器
B.临时变量
C.符号表
D.程序变量
6.词法分析器的输出结果是( C )。
A.单词的种别编码B.单词在符号表中的位置
C.单词的种别编码和自身值D.单词自身值
7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为(B)。
A. ┐AB∨∧CD∨B.A┐B∨CD∨∧
C.AB∨┐CD∨∧ D.A┐B∨∧CD∨
8.下推自动机识别的语言是( C )
A.0型语言 B.1型语言
C.2型语言 D.3型语言
9. 在规范归约中,用(B)来刻画可归约串。
A.直接短语 B.句柄C.最左素短语 D.素短语
10.词法分析器用于识别( C)。
A.字符串 B.语句 C.单词 D.标识符
11.一个句型中称为句柄的是该句型的最左(D)
A.非终结符号 B.短语 C.句子 D.直接短语
编译原理期末试题及答案
1、试为表达式 w+(a+b)*(c+d/(e-10)+8) 写出相应的逆波兰表示。
2、写出表达式a+b*(c-d)/e的逆波兰式和三元序列。
3、写出表达式a:=(b+c)*e+(b+c)/f的逆波兰式和三元序列。
4、已知文法G(S)及相应翻译方案
S→aAb {print “1”}
S→a {print “2”}
A→AS {print “3”}
A→c {print “4”}
输入acab, 输出是什么?
5、已知文法G(S)
S→bAa
A→(B | a
B→A a)
写出句子b(aa)b的规范归约过程。
6、已知文法G[S]
S→S*aF | aF | *aF
F→+aF | +a
消除文法左递归。
1、设文法G(S):
S→^ | a | (T)
T→T,S | S
⑴ 消除左递归;
⑵ 构造相应的FIRST和FOLLOW集合;
⑶ 构造预测分析表
2.语句 if E then S
(1) 改写文法,使之适合语法制导翻译;
(2) 写出改写后产生式的语义动作。
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;
(1)写出适合语法制导翻译的产生式;
(2)写出每个产生式对应的语义动作。
7.已知文法G(S)
S→a | ^ | (T)
T→T,S | S
(1) 给出句子(a,(a,a))的最左推导;
(2) 给出句型((T,S),a)的短语, 直接短语,句柄。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、填空题(每空2分,共20分)
1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。
2.编译器常用的语法分析方法有自底向上和自顶向下两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。
5.对编译程序而言,输入数据是源程序,输出结果是目标程序。
1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。
4.一个LL(1)分析程序需要用到一张分析表和符号栈。
5.后缀式abc-/所代表的表达式是a/(b-c)。
二、单项选择题(每小题2分,共20分)
1.词法分析器的输出结果是__C。
A.单词的种别编码B.单词在符号表中的位置
C.单词的种别编码和自身值D.单词自身值
2.正规式M 1 和M 2 等价是指__C_。
A.M1和M2的状态数相等 B.M1和M2的有向边条数相等
C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等
3.文法G:S→xSx|y所识别的语言是_C____。
A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx*
4.如果文法G是无二义的,则它的任何句子α_A____。
A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同
C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。
A.源程序B.目标语言C.编译方法D.以上三项都是
6.四元式之间的联系是通过__B___实现的。
A.指示器B.临时变量C.符号表D.程序变量
7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为__B___。
A.┐AB∨∧CD∨B.A┐B∨CD∨∧ C.AB∨┐CD∨∧D.A┐B∨∧CD∨
8. 优化可生成__D___的目标代码。
A.运行时间较短 B.占用存储空间较小
C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小
9.下列___C___优化方法不是针对循环优化进行的。
A. 强度削弱B.删除归纳变量C.删除多余运算D.代码外提
10.编译程序使用_B_区别标识符的作用域。
A. 说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次
C.说明标识符的过程或函数的动态层次 D. 标识符的行号
三、判断题(对的打√,错的打×,每小题1分,共10分)
2.一个有限状态自动机中,有且仅有一个唯一的终态。x
3.一个算符优先文法的每个非终结符号间都也可能存在优先关系。X
4.语法分析时必须先消除文法中的左递归。X
6.逆波兰表示法表示表达式时无须使用括号。R
9.两个正规集相等的必要条件是他们对应的正规式等价。X
1.编译程序是对高级语言程序的编译执行。X
2.一个有限状态自动机中,有且仅有一个唯一的初始态。R
3.一个算符优先文法的每个非终结符号间都不存在优先关系。R
4.LL(1)语法分析时必须先消除文法中的左递归。R
5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。R
6.逆波兰表示法表示表达式时根据表达式会使用括号。X
7.静态数组的存储空间可以在编译时确定。X
8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。X
9.两个正规集相等的必要条件是他们产生的符号串是相同的。R
10.一个语义子程序描述了一个文法所对应的翻译工作。X
1.什么是S-属性文法?什么是L-属性文法?它们之间有什么关系?
S-属性文法是只含有综合属性的属性文法。(2分)
L-属性文法要求对于每个产生式A X1X2…Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj的一个继承属性,且该属性仅依赖于:
(1)产生式Xj的左边符号X1,X2…Xj-1的属性;
(2)A的继承属性。(2分)
S-属性文法是L-属性文法的特例。(1分)
2.什么是LL(1)分析器
2.什么是LR(0)分析器
所谓LR(0)分析,是指从左至右扫描和自底向上的语法分析,且在分析的每一步,只须根据分析栈当前已移进和归约出的全部文法符号,并至多再向前查看0个输入符号,就能确定相对于某一产生式左部符号的句柄是否已在分析栈的顶部形成,从而也就可以确定当前所应采取的分析动作(是移进还是按某一产生式进行归约等)。
五、综合题(共40分)
1.(10分)对于文法G[S] :
S →1A | 0B | ε A →0S | 1AA B →1S | 0BB
⑴(3 分) 请写出三个关于G[S] 的句子;
⑵(4 分) 符号串11A0S 是否为G [S] 的句型?试证明你的结论。
⑶(3 分) 试画出001B 关于G [S] 的语法树。
答:
(1)三个0 和1 数量相等的串(每个1分)
(2)S => 1A => 11AA => 11A 0S
(3)