编译原理 专升本文档格式.docx
《编译原理 专升本文档格式.docx》由会员分享,可在线阅读,更多相关《编译原理 专升本文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
5.何谓属性文法?
怎么利用属性文法实现语义翻译?
属性文法使文法符号属性值的计算和产生式相联系。
随着语法分析的进行,执行属性值的计算,从而完成语义分析和翻译的任务。
利用属性文法实现语义的语法制导翻译是对前后文无关文法的扩充,即对文法中的每个产生式都附加一个语义动作或语义子程序,且在语法分析过程中,每当需要使用一个产生式进行推导或归约时,语法分析程序除执行相应的语法分析动作外,还要执行相应的语义动作或调用相应的语义子程序,完成相应的语义分析和翻译工作。
1.编译程序的工作过程一般可以划分为哪几个阶段?
同时还伴有些什么处理?
编译程序的工作过程一般可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化,同时还伴有表格处理和出错处理。
前端和后端的划分依据为是否和目标机有关。
2.文法G:
{S,X,Y}。
终结符符号集合为:
{a,b,c,d}G[S]:
aX
(2)S->
bY(3)X->
cX(4)X->
d(5)Y->
cY(6)Y->
d请:
判断该文法是否LR(0)文法,若是,请构造文法的LR(0)项目集规范族及LR(0)分析表。
下面是生成的拓广文法G'
:
{
$,S,X}。
{a,i,,}
G'
[S]:
(0)$->
S
(1)
S->
aX
(2)
X->
i
(3)
X,i
该文法的项目如下:
$->
.S
S.
.aX
(4)
a.X
(5)
aX.
(6)
.i
(7)
i.
(8)
.X,i
(9)
X.,i
(10)
X,.i
(11)
X,i.
LR(0)项目规范族如下:
I0={1,3}
I1={2}
I2={4,6,8}
I3={5,9}
I4={7}
I5={10}
I6={11}
输入的文法不是LR(0)文法,不能生成预测分析表
3.请:
判断如下文法G是否LR(0)文法,若是,请构造文法的LR(0)项目集规范族及LR(0)分析表。
文法G:
{S,X}终结符符号集合为:
{a,i,,}G[S]:
aX
(2)X->
i(3)X->
X,i(20分)
4.已知文法G=({A,B,C},{a,b,c},P,A),其中P由以下产生式组成:
A→abcA→aBbcBb→bBBc→CbccbC→CbaC→aaBaC→aa问:
此文法表示的语言是什么?
由于A为开始符。
由于A→aBbc→abBc→abCbcc→aCbbcc→aabbcc语言为:
{anbncn|n>
0,n为幂指数}
5.“含有优化部分的编译程序的执行效率高”,这种说法正确吗?
为什么?
含有优化功能的编译程序,其优化是指对生成的目标代码进行优化,而不是编译程序本身得到优化,它提高目标代码的效率,而不是编译程序的效率。
所以上述说法不对。
判断题
1.描述一个语言的文法是唯一的。
(1分)参考标准答案:
错误
2.LL
(1)分析必须对原有文法提取左因子和消除左递归。
正确
3.优先关系表对应的优先函数,如果存在,一定唯一。
4.若文法G定义的语言是无限集,则文法必然是前后文无关文法。
5.简单优先分析每次归约的是最左直接短语。
6.文法的二义性和语言的二义性是两个不同的概念。
7.项目A->
α•Bβ称为移进项目,其中B∈VN。
8.仅考虑一个基本块,不能确定一个赋值是否真是无用的。
9.上下文无关文法也叫正规文法。
10.每个文法都能改写为LL
(1)文法。
填空题
11.形如A->
α·
aβ的项目称为:
___
(1)___。
(1分)
(1).
参考标准答案:
移进项目
12.所谓SLR
(1)是:
___
(2)___。
是只对LR(0)分析法中有冲突的状态才向前查看一个符号的分析方法。
13.所谓规范推导是指:
___(3)___。
即最右推导(最好有详细解释)
14.一个LR
(1)的项目由两个部分组成:
___(4)___,___(5)___。
(2分)
心
(2).
向前搜索符号集
15.由文法产生的___(6)___集合是文法产生的语言。
句子
16.自底向上分析方法也称为:
___(7)___分析方法 。
移进—规约
17.LEX编译系统的功能是构造各种各样___(8)___的___(9)___。
语言
词法分析程序
18.LL(K)文法中,L表示___(10)___,L表示___(11)___,K表示___(12)___。
(3分)
从左到右扫描符号串
最左推导
(3).
需要向前查看K个符号
19.一个LR分析器有3个部分组成:
___(13)___、___(14)___和___(15)___。
总控程序(或驱动程序)
分析表(或分析函数)
分析栈(文法符号栈和状态栈)
20.文法G:
{S,A,Y,B,N},终结符符号集合为:
{i,+,*,(,)}。
G[S]:
S->
YAA->
+YAA->
εY->
NBB->
*NBB->
εN->
(S)N->
i。
构造该文法的预测分析表,判断其是否一个LL
(1)文法。
(25分)
21.构造一个DFA,接受字母表Σ={0,1}上的以01结尾的所有串。
22.简述编译程序的工作过程。
编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的,就其过程而言,一般可以划分为五个工作阶段:
①词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;
②语法分析,根据语言的语法规则,把单词符号串分解成各类语法单位;
③语义分析与中间代码产生,即对各类语法单位,分析其汉一并进行初步翻译;
④代码优化,以期产生更高效的代码;
⑤目标代码生成,把中间代码变换成特定机器上的低级语言指令形式。
单选题
1.一个编译程序中,不仅包含词法分析,_____,中间代码生成,代码优化,目标代码生成等五个部分,还有表格处理等辅助部分。
(6分)
(A)
语法分析(B)
文法分析(C)
语言分析(D)
解释分析参考标准答案:
A
2.词法分析器用于识别_____。
字符串(B)
语句(C)
单词(D)
标识符参考标准答案:
C
3.语法分析器则可以发现源程序中的_____。
语义错误(B)
语法和语义错误(C)
错误并校正(D)
语法错误参考标准答案:
D
4.下面关于解释程序的描述正确的是_____。
(1)
(2)(B)
(1)(C)
(1)
(2)(3)(D)
(2)(3)参考标准答案:
B
5.解释程序处理语言时,大多数采用的是_____方法。
源程序命令被逐个直接解释执行(B)
先将源程序转化为中间代码,再解释执行
(C)
先将源程序解释转化为目标程序,再执行(D)
以上方法都可以
6.编译过程中,语法分析器的任务就是_____。
(5分)
(2)(3)(B)
(2)(3)(4)(C)
(1)
(2)(3)(4)参考标准答案:
7.文法G所描述的语言是_____的集合。
文法G的字母表V中所有符号组成的符号串(B)
文法G的字母表V的闭包V*中的所有符号串
由文法的开始符号推出的所有终极符串(D)
由文法的开始符号推出的所有符号串
8.将编译程序分成若干个“遍”是为了___。
提高程序的执行效率(B)
使程序的结构更加清晰
利用有限的机器内存并提高机器的执行效率(D)
利用有限的机器内存但降低了机器的执行效率
9.构造编译程序应掌握_____。
源程序(B)
目标语言(C)
编译方法(D)
以上三项都是参考标准答案:
10.中间代码生成时所依据的是_____。
语法规则(B)
词法规则(C)
语义规则(D)
等价变换规则参考标准答案:
11.计算机高级语言翻译成低级语言只有解释一种方式。
(5分)参考标准答案:
12.在编译中进行语法检查的目的是为了发现程序中所有错误。
13.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
14.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有___
(1)___和___
(2)___。
表格处理
出错处理
15.语法分析最常用的两类方法是___(3)___和___(4)___分析法。
自上而下
自下而上
16.编译方式与解释方式的根本区别在于___(5)___。
是否生成目标代码
17.产生式是用于定义___(6)___的一种书写规则。
语法成分
18.对编译程序而言,输入数据是___(7)___,输出结果是___(8)___。
源程序
目标程序
19.若源程序是用高级语言编写的,___(9)___是机器语言程序或汇编程序,则其翻译程序称为___(10)___。
编译程序
1.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括_____。
模拟执行器(B)
解释器(C)
表格处理和出错处理(D)
符号执行器参考标准答案:
2.一个句型中的最左_____称为该句型的句柄。
短语(B)
直接短语(C)
素短语(D)
终结符号参考标准答案:
3.设G是一个给定的文法,S是文法的开始符号,如果S->
x(其中x∈V*),则称x是文法G的一个_____。
(5分)(A)
候选式(B)
句型(C)
产生式参考标准答案:
4.文法分为四种类型,即0型、1型、2型、3型。
其中3型文法是_____。
短语文法(B)
正则文法(C)
上下文有关文法(D)
上下文无关文法参考标准答案:
5.文法G[E]:
E→T∣E+T
T→F∣T﹡F
F→a∣(E)
该文法句型E+F﹡(E+T)的直接短语是下列符号串中的_____。
①(E+T)②E+T③F④F﹡(E+T)(5分)
①和③(B)
②和③(C)
③和④(D)
③参考标准答案:
6.若一个文法是递归的,则它所产生的语言的句子_____。
是无穷多个(B)
是有穷多个(C)
是可枚举的(D)
个数是常量参考标准答案:
7.语言是_______。
句子的集合(B)
产生式的集合(C)
符号串的集合(D)
句型的集合参考标准答案:
8.在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是_____。
非终极符集(B)
终极符集(C)
字母表(D)
状态集参考标准答案:
9.在自底向上的语法分析方法中,分析的关键是_____。
寻找句柄(B)
寻找句型(C)
消除递归(D)
选择候选式参考标准答案:
10.在LR分析法中,分析栈中存放的状态是识别规范句型_____的DFA状态。
句柄(B)
前缀(C)
活前缀(D)
LR(0)项目参考标准答案:
11.逆波兰法表示的表达式亦称前缀式。
12.每个文法都能改写为LL
(1)文法。
13.递归下降法允许任一非终极符是直接左递归的。
14.算符优先关系表不一定存在对应的优先函数。
15.自底而上语法分析方法的主要问题是候选式的选择。
16.设G是一个给定的文法,S是文法的开始符号,如果S->
x(其中x∈VT*),则称x是文法的一个___
(1)___。
17.递归下降法不允许任一非终极符是直接___
(2)___递归的。
(4分)
左
18.自顶向下的语法分析方法的基本思想是.从文法的___(3)___开始,根据给定的输入串并按照文法的产生式一步一步的向下进行___(4)___,试图推导出文法的___(5)___,使之与给定的输入串___(6)___。
开始符号
直接推导
(4).
匹配
19.自底向上的语法分析方法的基本思想是.从输入串入手,利用文法的产生式一步一步地向上进行___(7)___,力求归约到文法的___(8)___。
直接归约
20.在使用高级语言编程时,首先可通过编译程序发现源程序的全部___(9)___错误和语义部分错误。
语法
21.常用的参数传递方式有___(10)___,传值和传名。
传地址
1.文法G产生的_____的全体是该文法描述的语言。
句型(B)
终结符集(C)
非终结符集(D)
句子参考标准答案:
2.若文法G定义的语言是无限集,则文法必然是_____。
递归的(B)
前后文无关的(C)
二义性的(D)
无二义性的参考标准答案:
3.四种形式语言文法中,1型文法又称为_____文法。
短语结构文法(B)
前后文无关文法(C)
前后文有关文法(D)
正规文法参考标准答案:
4.对应Chomsky四种文法的四种语言之间的关系是_______。
L0�L1�L2�L3(B)
L3�L2�L1�L0(C)
L3=L2�L1�L0(D)
L0�L1�L2=L3参考标准答案:
5._____和代码优化部分不是每个编译程序都必需的。
中间代码生成(C)
词法分析(D)
目标代码生成参考标准答案:
6._____是两类程序语言处理程序。
高级语言程序和低级语言程序(B)
解释程序和编译程序(C)
编译程序和操作系统(D)
系统程序和应用程序
7.常用的中间代码形式不含_______。
三元式(B)
四元式(C)
逆波兰式(D)
语法树参考标准答案:
8.一个上下文无关文法G包括四个组成部分,它们是.一组非终结符号,一组终结符号,一个开始符号,以及一组_____。
句子(B)
9.文法分为四种类型,即0型、1型、2型、3型。
其中2型文法是_____。
10.“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法。
(6分)参考标准答案:
11.若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。
12.一个句型中的最左简单短语称为该句型的___
(1)___。
句柄
13.对于文法的每个产生式都配备了一组属性的计算规则,称为___
(2)___。
语义规则
14.一个典型的编译程序中,不仅包括___(3)___、___(4)___、___(5)___、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。
词法分析
语法分析
中间代码生成
15.从功能上说,程序语言的语句大体可分为___(6)___语句和___(7)___语句两大类。
执行性
说明性
16.扫描器的任务是从___(8)___中识别出一个个___(9)___。
单词符号
17.产生式是用于定义____(10)_____的一种书写规则。
1.编译程序绝大多数时间花在_____上。
出错处理(B)
词法分析(C)
目标代码生成(D)
表格管理参考标准答案:
2.编译程序是对_____。
汇编程序的翻译(B)
高级语言程序的解释执行(C)
机器语言的执行(D)
高级语言的翻译参考标准答案:
3.采用自上而下分析,必须_____。
消除左递归(B)
消除右递归(C)
消除回溯(D)
提取公共左因子参考标准答案:
4.在规范归约中,用_____来刻画可归约串。
直接短语(B)
句柄(C)
最左素短语(D)
素短语参考标准答案:
5.若a为终结符,则A->
α·
aβ为_____项目。
归约(B)
移进(C)
接受(D)
待约参考标准答案:
6.间接三元式表示法的优点为_____。
采用间接码表,便于优化处理(B)
节省存储空间,不便于表的修改
便于优化处理,节省存储空间(D)
节省存储空间,不便于优化处理
7.基本块内的优化为_____。
代码外提,删除归纳变量(B)
删除多余运算,删除无用赋值(C)
强度削弱,代码外提(D)
循环展开,循环合并
8.代码优化的目的是_______。
节省时间(B)
节省空间(C)
节省时间和空间(D)
把编译程序进行等价交换参考标准答案:
9.若项目集Ik含有A->
,则在状态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采取“A->
”动作的一定是_____。
LALR文法(B)
LR(0)文法(C)
LR
(1)文法(D)
SLR
(1)文法参考标准答案:
10.堆式动态分配申请和释放存储空间遵守_____原则。
先请先放(B)
先请后放(C)
后请先放(D)
任意参考标准答案:
11.削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性。
(4分)参考标准答案:
12.在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。
13.递归下降分析法是自顶向下分析方法。
14.产生式是用于定义词法成分的一种书写规则。
15.LR法是自顶向下语法分析方法。
16.在SLR
(1)分析法的名称中,S的含义是简单的。
17.综合属性是用于“自上而下”传递信息。
18.符号表中的信息栏中登记了每个名字的属