编译原理 考题文档格式.docx
《编译原理 考题文档格式.docx》由会员分享,可在线阅读,更多相关《编译原理 考题文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
(1)传地址
(2)传值(3)传标识符(4)得结果(5)传名(6)返回值
可选项有:
A、
(1)
(2)(4)(5)B、
(1)
(2)(5)(6)C、
(1)
(2)(3)(6)D、
(2)(3)(4)(6)
、下列代码中不可能是目标代码。
A、汇编指令代码B、可重定位指令代码C、绝对指令代码D、中间代码
、一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。
。
A.正确B.不正确
、有限自动机能识别
A.上下文无关文法B.上下文有关文法
C.正规文法D.短语文法。
、汇编程序是将程序改造成目标语言程序的翻译程序。
A机器语言B汇编语言C高级语言D低级语言
、LR(k)文法_______二义性的。
A、都是B、都不是C、不一定都是
、乔姆斯基方法的2型语言是这样一种语言,其产生式限制为
A、A→B、A→a,A→aBC、→β(||||)D、→
、局部优化是局限于一个范围内的一种优化。
A.循环B.函数C.基本块D.整个程序
、目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
。
、乔姆斯基方法的3型语言是这样一种语言,其产生式限制为
AA→BA→a或A→aBC→β(||||)D→
、运算符与运算对象类型不符属于。
A、语法错误B、语义错误C、语用错误D、规则集合
、词法分析器的输入是。
A、词法记号B、源程序C、语法单位D、目标程序
、在下述的编译方法中,自底向上的方法有,自顶向下的分析方法有。
①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR(K)分析⑥SLR(k)分析⑦LL(k)分析⑧LALR(K)分析
A.③④⑦B.③④⑧C.①②⑧D.③④⑤⑥⑦E.①②⑤⑥⑦F.①②⑤⑥⑧
、对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。
A.正确B.不正确
、算符优先分析法每次都是对进行归约。
A句柄B短语C最左素短语D素短语
、编译时能进行的类型检查称为。
A、错误检查B、动态检查
C、静态检查D、随机检查
、规范推导的每一步总是用产生式右边符号串替换句型中位置的非终结符号
A、最左B、最右C、最中D、任意
、语法分析器的输入是,其输出是
、每个文法都能改写为LL
(1)文法。
、对于无二义性的文法,规范推导是
A最左推导B最右推导的逆过程C最左归约的逆过程D最右归约的逆过程。
、描述语言L={ambn|n≥m≥1}的文法为。
A、Z→AbbA→aA|aB→bB|b
B、Z→AB|bA→Aa|aB→aBb|b
C、Z→AbA→aAb|a
D、Z→aAbA→Ab|aAb|ε
、间接三元式表示法的优点为
A、采用间接码表,便于优化处理B、节省存储空间,不便于表的修改
C、便于优化处理,节省存储空间D、节省存储空间,不便于优化处理
、编译时能进行的类型检查称为
A错误检查B动态检查C静态检查D随机检查
、文法G[S]:
S→xSx|y所识别的语言是。
A、xnyxn(n≥0)B、(xyx)*C、xyxD、x*yx*
、项目A→α·
称为,其中A∈VN,A不是开始符。
A、移进项目B、归约项目C、出错项目D、接受项目
、设有文法G[S]:
S->
S*S|S+S|(S)|a,该文法_____二义性文法。
A、是B、不是C、不一定
、高级语言编译程序常用的语法分析方法中,LL分析法属于分析方法。
A、自左至右B、自顶向下C、自底向上D、自右至左。
、有文法G:
E→E*T|T T→T+i|i 句子2+5*3+3按该文法G归约,其值为
A23B 42C 30 D17
A自左至右B自顶向下C自底向上D自右至左。
、形如A→α·
Bβ的项目为项目。
A、待约B、移进C、接受D、规约
、活动记录的连接数据不包括。
A、形参单元B、动态链(老SP)C、返回地址D、全局Display地址
、高级语言编译程序常用的语法分析方法中,lALR分析法属于分析方法。
A、自左至右B、自上而下C、自下而上D、自右至左
、设a、b、c是文法的终结符,且满足优先关系a=•b和b=•c,则。
A.必有a=•cB.必有c=•aC必有b=•aD答案A~C都不一定成立
、词法分析器的输出是。
A、词法记号流B、源程序C、语法单位D、目标程序
、对一个基本块来说,是正确的。
A、只有一个入口语句和一个出口语句B、有一个入口语句和多个出口语句
C、有多个入口语句和一个出口语句D、有多个入口语句和多个出口语句
、词法分析所依据的是。
A语义规则B构词规则C语法规则D等价变换规则
、句型是由推导出的符号串。
A、非终结符B、终结符C、任何符号D、开始符号
、如果文法G是无二义的,则它的任何句子α。
A、最左推导和最右推导对应的语法树必定相同
B、最左推导和最右推导对应的语法树可能不同
C、最左推导和最右推导必定相同
D、可能存在两个不同的最左推导,但它们对应的语法树相同
、算符优先文法与算符优先函数的关系的描述中正确的是()。
A、一个算符优先文法一定存在优先函数与之对应
B、一个算符优先文法可能存在多个优先函数与之对应
C、一个算符优先文法一定存在多个优先函数与之对应
D、一个算符优先文法一定存在有限对优先函数与之对应
、一个句型中称为句柄的是该句型的最左。
A非终结符B短语C句子D直接短语
、描述一个语言的文法是()
A、唯一的B、不唯一的C、可能唯一,也可能不唯一
、下列优化方法不是针对循环优化进行的。
A、强度削弱B、删除归纳变量C、删除多余运算D、代码外提
、更动一张表很困难。
A三元式B间接三元式C四元式D三元式和四元式
、栈式存储分配申请和释放存储空间遵守原则。
A、先申请先释放B、先申请后释放C、后申请先释放D、任意
、所谓自上而下分析法是指。
、所谓语法制导翻译方法是。
、确定的有穷自动机是一个,通常表示为。
、规范归约中的可归约串是指;
算符优先分析中的可归约串是指
(2)。
、编译程序在逻辑上由、、语义分析、中间代码生成、代码优化和目标代码生成六部分组成。
、不可能是目标程序。
A、汇编语言模块B、可重定位目标模块C、可执行目标模块D、中间代码
、如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是。
、一个名字的属性包括和。
、正规式的“*”读作。
、编译程序在逻辑上由、、语义分析、中间代码生成、代码优化和目标代码生成六部分组成。
、编译程序的各个阶段的工作都涉及到和
、文法用来描述语言的语法结构,它由如下4个部分组成:
文法终结符集合、文法非终结符集合、和文法开始符号。
A、单词集合B、字母数字串
C、文法句子集合D、文法产生式的集合
、确定的有穷自动机是一个元组,通常表示为。
、已知文法G[E]:
E→E+T|T
T→T*F|F
F→(E)|id
该文法终结符集合VT=,文法非终结符集合VN=,该文法在乔姆斯基(Chomsky)文法分类属于文法。
、编译程序的各个阶段的工作都涉及到和。
、假设G是一个文法,S是文法开始符号,如果S*>
x,则称x是该文法的一。
、优化时,节省一条指令MOVRi,M,节省的指令代价为
A、0B、1C、2D、3
、采用语法分析时,必须消除文法的左递归。
、在状态转换图中,结点代表,用圆圈表示。
、若源程序是高级语言编写的,目标程序是语言的程序,则相应的翻译程序称为编译程序。
、常用的两种动态存贮分配办法是分配和分配。
、翻译方案和语法制导定义不同的是它的(而不叫语义规则)放在括号{}内,并且可以插在产生式的任何地方
、所谓最左推导是指:
、上下文无关文法的可以用表示,其形式为。
、后缀式ab+c+d*e-所表达的式子为。
、LL(K)文法中,第一个L表示,第二个L表示,K表示。
、一个上下文无关文法所含四个组成部分是
、对于文法G,仅含终结符号的句型称为。
、设有文法G[E]:
E→E+T|E–T|T
T→T*F|T/F|F
F→(E)|i
该文法句型E+T*F的句柄是。
、文法符号的属性有两种,一种称为属性,另一种称为属性,S属性定义是指仅使用属性的语法制导定义。
、LR(0)项目和LR
(1)项目的区别在于。
、紧跟在条件转移语句后面的语句是基本块的语句。
、若二个正规式所表示的相同,则认为二者是等价的。
、仅含终结符的句型称为。
、编译方式与解析程序的根本区别在于是否生成目标代码。
()
、规范归约和规范推导是互逆的两个过程。
、一个上下文无关文法的开始符号可以是终结符或非终结符。
、逆波兰表示法表示表达式时无需使用括号。
()
、符号表由词法分析程序建立,由语法分析程序使用。
、逆波兰法表示的表达式亦称前缀式。
、代码生成器的输入包括中间代码和符号表中的信息。
、孤立地考虑一个基本块常常不能确定一个赋值是否真是无用的。
()
、无左递归的文法是LL
(1)文法。
、一个句型的直接短语语是唯一的。
、正规文法产生的语言都可以用上下文无关文法来描述。
、对任何一个编译程序来说,产生中间代码是不可缺少的一部分。
()
、一个文法所有句子的集合构成该文法定义的语言。
、优化实质上是对代码进行等价变换,变换后的代码结构不同但运行结果相同。
、算符优先分析法是一种规范归约分析法。
、非终结符可以有综合属性,但不能有继承属性。
、所有LR分析器的总控程序都是一样的,只是分析表各有不同。
、因名字都是用标识符表示的,故名字与标识符没有区别()
、空符号串的集合{ε}={}=ø
。
、终结符可以有综合属性,也可以有继承属性。
、若一个句型中出现了某一产生式的右部,则此右部一定是该句型的句柄。
、DAG是一个可带环路的有向图。
、设有符号串x和y,把y的符号写在x的符号之后所得的符号串,叫做x与y的连接,记为xy。
、对任何正规表达式e,都存在一个DFA M,满足L(M)=L(e)。
、运行时的DISPLAY表的内容是什么?
它的作用是什么?
、何谓局部优化、循环优化和全局优化?
优化工作在编译的哪个阶段进行?
、常见的存储分配策略有几种?
它们都适合于什么性质的语言?
、下面文法是否是二义文法?
试说明理由。
G[S]:
S→SaS|
、已知文法G(E)
E→T|E+T
T→F|T*F
F→(E)|i
(1)给出句型(T*F+i)的最右推导及画出语法树;
(2)给出句型(T*F+i)的短语、素短语。
、把算术表达式-(a+b)*(b+c)翻译成:
(a)后缀表示
(b)语法树
(c)有向无环图
(d)四元式三地址代码
、DFA与NFA的区别?
、设已构造出文法G(S):
SS(S)
S
的LR分析表如下
状态
ACTION
GOTO
(
)
#
r2
1
S2
Acc
2
3
S4
S5
4
6
5
r1
S7
7
假定输入串为()(),请给出LR分析过程(即状态,符号,输入串的变化过程)。
步骤状态符号输入串
、对符号表的基本操作有几种,分别是什么?
、给定代码段如下,求出按四种不同方式进行参数传递后,变量a的值
…
procedureP(w,x,y,z);
begin
y:
=y*w;
z:
=z+x;
end
a:
=5;
b:
=3;
P(a+b,a-b,a,a);
write(a);
传值:
传地址:
得结果:
传名:
、目标代码有哪几种形式?
生成目标代码时通常应考虑哪几个问题?
、下面的推导Srm…rmAbwrmlbw中,最后一步用的是Al,分别指出LL
(1)方法和LR
(1)方法在扫描到此句型的什么位置决定用此产生式?
(5分)
、构造一个最简DFA,它接受正规式ab(a|b)*。
给出文法G[S]:
S→SaA|A。
A→AbB|B
B→cSd|e
(1)证实AacAbcBaAdbed是文法G[S]的一个句型;
(2)请写出该句型的所有短语、素短语以及句柄。
、写出表达式a+b*(c-d)对应的逆波兰表示、三元式三地址代码序列和抽象语法树。
、什么是活动记录?
它主要由哪些内容构成?
、对下列四元式序列生成目标代码(10分)
T=A-B
S=C+D
W=E-F
U=W/T
V=U*S
其中,V是基本块出口的活跃变量,R0和R1是可用寄存器。
、设有如下的三地址码(四元式)序列:
ReadN
I∶=N
J∶=2
L1:
ifI≤JgotoL3
L2:
I∶=I-J
ifI>
JgotoL2
ifI=0gotoL4
J∶=J+1
gotoL1
L3:
Print′YES′
Return
L4:
Print′NO′
(1)、对题中代码划分基本块,并给每个基本块一个序号
(2)、画出基本块集合的控制流图,每个基本块就用
(1)小题中的序号表示。
(3)、若有循环的话,列出构成每个循环的结点。
、已知文法G(V):
V→N|N[E]
E→V|V+E
N→i
(1)给出与G(V)等价的LL
(1)文法G'
(V);
(2)求文法G'
(V)的每个非终结符的FIRST集合和FOLLOW集合;
(3)构造文法G'
(V)的LL
(1)分析表。
、考虑下面的三地址语句序列:
b:
=1
=2
ifw<
=xgotoL2
e:
=b
gotoL2
L1:
gotoL3
L2:
c:
=3
=4
c:
=6
L3:
ify<
=zgotoL4
gotoL5
L4:
g:
=g+1
h:
=8
gotoL1
L5:
h:
=9
(1)、在该代码中用水平的横线将代码分成基本块,并给每个基本块一个序号。
(2)、画出该代码的控制流图,每个基本块就用
(1)小题中的序号表示。
、对于文法G(S):
(1)写出句型b(Ma)b的最右推导并画出分析树。
(2)写出上述句型的短语,直接短语和句柄。
、LL
(1)分析法对文法有哪些要求?
、写出语句a:
=b*(-c)+b*(-c)的后缀式、抽象语法树、DAG图、四元式三地址代码和三元式三地址代码。
、设有文法G[A]:
A→iB*e
B→SB|ε
S→[eC]|.i
C→eC|ε
判定该文法是否为LL
(1)文法?
若是则给出它的LL
(1)分析表,否则说明理由。
(20分)
、构造一个DFA,它接受∑={0,1}上能被5整除的二进制数。
、正规式(0|1)*和((|0)1*)*是否等价,说明理由。
、写出字母表={a,b}上语言L={w|w的最后两个字母是aa或bb}的正规式,并画出接受该语言的最简DFA。
、文法G(S)及其LR分析表如下,请给出串baba$的分析过程。
(1)S→DbB
(2)D→d(3)D→ε
(4)B→a(5)B→Bba(6)B→ε
LR分析表
b
d
a
$
B
D
r3
s3
acc
s4
r6
r4
s7
S8
8
r5
(注:
答案格式为步骤栈输入串动作)
、已知文法G(A):
A→aABl|a
B→Bb|d
(1)消除文法中的左递归,提取公共左因子,给出与G(A)等价的LL
(1)文法G'
(A);
(A)的每个非终结符的FIRST集合和FOLLOW集合;
(A)的LL
(1)分析表。
、设文法G(S):
S→S+aF|aF|+aF
F→*aF|*a
(1)消除左递归和回溯;
(2)计算每个非终结符的FIRST和FOLLOW;
(3)构造预测分析表。
、构造下面文法的LL
(1)分析表。
DTL
Tint|real
LidR
R,idR|(10分)
、已知文法G(S):
S→a|(T)
T→T,S|S
给出该文法的优先关系表,并计算出该优先关系表所对应的优先函数。
、处于/*和*/之间的串构成注解,注解中间没有*/。
画出接受这种注解的DFA的状态转换图。
(10分)
、已知文法G(S)
S→a|∧|(T)
T→T,S|S
写出句子((a,a),a)的移进-归约分析过程及每一次归约的句柄。
(10分)
初始状态如下,请接着往下进行分析。
栈输入 动作 句柄
$((a,a),a)$
、接受文法
SAa|bAc|dc|bda
Ad
活前缀的DFA见下图。
请根据这个DFA来构造该文法的SLR
(1)分析表,并说明该文法为什么不是SLR
(1)文法。