(A>1)1;
(AwD)
2;
}。
解:
该语句的四元式序列如下(其中E1、E2和E3分别对应AvCABvD、A》1和AwD,并且关系运算符优先级高):
100(j<,102)
101(,113)
102(j<,104)
103(,113)
104(,1,106)
105(,108)
106(+,C,1,C)
107(,112)
108(jw,110)
109(,112)
110(+,A,2,A)
111(,108)
112(,100)
为二义文法
113
5.已知文法G[S]为Sf,试证明文法G[S]
证明:
由文法G[S]:
S-,对句子对应的两棵语法树为:
aSbSb
/K/T\
aSbaSb
SbaSb
bb
因此,文法G[S]为二义文法
5.计算题(10分)
已知文法
判断该文法是否是
(1)文法,若是构造相应分析表,并对输入串给出分析过程。
解:
增加一个非终结符后,产生原文法的增广文法有:
S'->A
下面构造它的(0)项目集规范族为:
a
b
d
Si
A
AT」
氐
A兮“拖
A,血
Ii:
W*
In
acc
Ici
AWAd
卫亠血
卫亠
I;
L:
A->aA-d
A->aA'b
I5:
Ii
A-*>aA.dl
I;
A->aAb・
从上表可看出,状态I0和12存在移进-归约冲突,该文法不是(0)文法。
对于I0来说有:
(A)n{a}={}n{a}=①,所以在I0状态下面临输入符号为a时移进,为时归约,为其他时报错。
对于I2来说有也有与I0完全相同的
结论。
这就是说,以上的移进-归约冲突是可以解决的,因此该文法是
(1)
文法其
(1)分析表为:
对输入串给出分析过程为:
爭骤
符号樸
输入邑
ACTIOM
GOTO
1
s:
2
02
b#
r?
3
9
029
b#
S
4
0234
口
1
5
01
acc
一、是非题.
1.一个上下文无关文法的开始符,可以是终结符或非终结符。
2.一个句型的直接短语是唯一的。
3."已)经证明文法的二义性是可判定的。
4.(每)个基本块可用一个表示。
()
5.每个过程的活动记录的体积在编译时可静态确定。
()
6.2型文法一定是3型文法。
7.
(一)个句型一定句子。
8.(算)符优先分析法每次都是对句柄进行归约。
X()
9.采用三元式实现三地址代码时,不利于对中间代码进行优化。
10.编译过)程中,语法分析器的任务是分析单词是怎样构成的。
()
11.一个优先表一定存在相应的优先函数。
X
12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
13.(递)归下降分析法是一种自下而上分析法。
14.并不是每个文法都能改写成
(1)文法。
15.每个基本块只有一个入口和一个出口。
16.一个
(1)文法一定是无二义的。
17.逆波兰法表示的表达试亦称前缀式。
18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
19.(正)规文法产生的语言都可以用上下文无关文法来描述。
20.一个优先表一定存在相应的优先函数。
21.3型文法一定是2型文法。
22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。
()
答案:
1.x2.x3.x4.V5.V6.x7.x
8.x9.V10.x11.x
12.V13.x14.V15.V16.V17.x18.V19.V20.x21.V22.V
二、填空题:
2.编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。
3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是(二义性的)。
4.从功能上说,程序语言的语句大体可分为(执行性)语句和(说明性)语句两大类。
5.语法分析器的输入是(单词符号),其输出是(语法单
位)。
6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。
7.符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、所占单元大小、地址)等等。
8.一个过程相应的表的内容为(现行活动记录地址和所有外层最新活
动记录的地址)
10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。
11.一个名字的属性包括(类型)和(作用域)。
12.常用的参数传递方式有(传地址),(传值),(传名)
13.根据优化所涉及的程序范围,可将优化分成为(局部优化),(循环优
自上而下
自下而上一类是析法。
化),(全局优化)三个级别。
14.
)和一个(符号栈)
语法分析的方法大致可分为两类,分析法,另一类是(I
15.预测分析程序是使用一张(分析表
进行联合控制的
17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终)态。
19.语法分析是依据语言的(语法)规则进行。
中间代码产生是依据语
'的(语义)规则进行的
21.
采用「动态型。
略。
一个文法G若它的预测分析表M不含多重定义,则该文法是(
(1)文法)文法。
22.对于数据空间的存贮分配,采用(静态策略采用(动态)策略。
24.最右推导亦称为(规范推导),由此得到的句型称为(规范)句型。
26.对于文法G仅含终结符号的句型称为(句子)
27.所谓自上而下分析法是指(从开始符号出发,向下推导,推出句子)
3型殳法又称为(正则)文
29.局限于基本块范围的优化称(局部优化
31.2型文法又称为(上下文无关)文法;
法。
32.每条指令的执行代价定义为(指令访问主存次数加1)
33.算符优先分析法每次都是对(最左素短语)进行归约。
三、名词解释题:
1.局部优化局限于基本块范围的优化称。
2.二义性文法如果一个文法存在某个句子对应两棵不同的语法树,则称这
个文法是二义性文法。
的最右非终结符替换。
3表过程的嵌套层次显示表,记录该过程的各外层过程的最新活动记录的起始地址。
5.最左推导任何一步a=>$都是对a中的最右非终结符替换。
6.语法一组规则,用它可形成和产生一组合式的程序。
7.文法描述语言的语法结构的形式规则
8.基本块指程序中一顺序执行的语句序列,其中只有一个入口和一个出口,
入口就是其中的第一个语句,出口就是其中的最后一个语句。
9.语法制导翻译在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译的办法叫做语法制导翻译
10.短语令G是一个文法S划文法的开始符号,假定aPS是文法G的一
个句型,如果有S'-aAS且A—:
.P,则称P是句型aPS相对非终结符A的短语。
一一
11.待用信息如果在一个基本块中,四元式i对A定值,四元式j要引用A
值,而从i到j之间没有A的其它定值,则称j是四元式i的变量A的待用信息。
12.规范句型由规范推导所得到的句型
13.扫描器执行词法分析的程序。
14.超前搜索在词法分析过程中,有时为了确定词性,需超前扫描若干个字
符。
15.
根据每个产生式所对应的语义程序进
。
句柄一个句型的最左直接短语。
16.语法制导翻译在语法分析过程中,
行翻译的方法叫做语法制导翻译
17.规范句型由规范推导所得到的句型。
18.
吾。
素短语素短语是指这样一个短语,至少含有一个终结符,并且,除它自
身外不再含任何更小的素短语
19.语法是组规则,用它可形成和产生一个合式的程序。
20.
i的变量
待用信息如果在一个基本块中,四元式i对A定值,四元式j要引用
值,而从i到j之间没有A的其它定值,则称j是四元式i「、一的待用信息。
21.语义定义程序的意义的一组规则。
四、简答题:
1.写一个文法G,使其语言为不以0开头的偶数集。
2.
s-{
S—a{
A—{“3”
A—c{“4”}
输入,输出是什么?
3.已知文法G(S)
S—
A—(B|a
B—)
写出句子b()b的规范归约过程。
4.考虑卞面的程序:
已知文法G(S)及相应翻译方案
”}
P(x,y,z);
*z;
2;
*2・
P(A,a,B);
A,B
试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出A,B
的值是什么?
5.文法G(S)
S—
A—a
B—£
描述的语言是什么?
6.证明文法G(S)
S—£
是二义性的。
7.已知文法G(S)
S—
A—d
B—Ic
的预测分析表如下
a
b
c
d
#
S
S—|
S—|
S—
A
Af
Af
Af
Afd
B~
Bf
Bf
Bfc
给出句子的分析过程。
8.写一个文法G,使其语言为L(G)={l>=0,m>=1,n>=2}
9.已知文法G(S):
S-(T)
Tf
的优先关系表如下:
关系
a
(
)
J
a
-
-
.>
.>
(
V.
V.
=
V.
)
-
-
.>
.>
J
V.
V.
.>
.>
10•何谓优化?
按所涉及的程序范围可分为哪几级优化?
11.目标代码有哪几种形式?
生成目标代码时通常应考虑哪几个问题?
、
12.一字母表艺={a,b},试写出艺上所有以a为首的字组成的正规集相对
应的正规式。
13.基本的优化方法有哪几种?
14.写一个文法G,使其语言为L(G)={n>0}
15.考虑下面的程序:
P(x,y,z);
2;
3;
p(,b,a);
a
试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出a的
值是什么?
16.写出表达式a+b*()的逆波兰式和三元序列。
17.证明文法G(A)
Af|(A)|£
是二义性的。
18.令艺={},则正规式a**a表示的正规集是什么?
19.何谓表?
其作用是什么?
20.考虑下面的程序:
P(x,y,z);
步骤
符号栈
输入串
动作
0
#
b()
预备
1
()
移进
2
(
)
移进
3
(a
a
)
1移进
4
(A
a
)
1归约
5
(
)移进
6
()
移进
7
(B
归约
8
归约
9
移进
10
接受
p(,,a);
a
试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出a的
值是什么?
21.写一个文法G,使其语言为L(G)={n>0为奇数,m>0为偶数}
22.写出表达式()*()的逆波兰式和三元序列。
23.—个文法G别是
(1)文法的充要条件是什么?
24.已知文法G[S]
S—S*||*
I、、、
消除文法左递归和提公共左因子。
25.符号表的作用是什么?
符号表查找和整理技术有哪几种?
答案:
1.所求文法是G[S]:
S—A0
A—
B—2468
C—1357|9
D—0
2.输出是4231
3.句子b()b的规范归约过程:
4.传地址6,16
传值2,4
5(G)={>0,m>0}
6.证明:
因为文法G[S]存在句子有两个不同的最左推导,所以文法G[S]是是二
义性的。
>>>>>
>>>>>
7.句子的分析过程:
步骤
符号栈
输入串
产生式
0
1
S—
2
B—
3
4
A—d
5
6
A—
7
B—c
8
9
B—c
10
11
12
A—d
13
#
#
8.所求文法是G[S]:
S—
A—DD—b
B—
函数
a
(
)
5
f
4
2
4
4
g
5
5
2
3
9.
10.优化:
对程序进行各种等价变换,使得从变换后的程序出发,能产生更
有效的目标代码。
三种级别:
局部优化、循环优化、全局优化
11.目标代码通常米用三种形式:
机器语言,汇编语言,待装配机器语言模块。
应着重考虑的问题:
⑴如何使生成的目标代码较短;
(2)如何充分利用寄存器,以减少访问内存次数;
(3)如何充分利用指令系统的特点。
12.正规式a(a|b)*。
13.删除多余运算,代码外提,强度削弱,变换循环控制条件,合并已知量,
复写传播和删除无用赋值。
14.文法G[S]:
S—|aB—
15.传值2传地址15
16.逆波兰式:
*
三元序列:
12
(1)-cd
(2)*b
(1)
(3)/
(2)e
(4)+a(3)
17.证明:
因为文法G[S]存在句子()有两个不同的最左推导,所以文法G[S]是
是二义性的。
>>(A)>()>()
>**>>(A)=>()
18.(aa)=£……}一
19表:
嵌套层次显示表
由于过程嵌套允许内层过程引用外层过程定义的数据,因此,当一个过程运行时必须跟踪它的所有外层过程的最新活动记录起始地址,表就
是用于登记每个外层过程的最新活动记录起始地址。
20.传地址12
传值5
21.所求文法是G[S]:
S—
A—
C—|
22.逆波兰式*
三元序列12
(1)+bc
(2)*
(1)e
(3)+bc
(4)/(3)f
(5)+
(2)(4)
(6)a(5)
23.一个文法G别是
(1)文法的充要条件是:
(1)(an(b)=①
(2)如果B=*>£,(a)n(A)=①
24.消除左递归
S—'|*'
S'—*'|£
F—|
提公共左因子,文法G'(S)
S—'|*'
S'—*'|£
F—'
F'—F|£
25.作用:
登记源程序中出现的各种名字及其信息,以及了解各阶段的进展状况。
主要技术:
线性表,对折查找,杂奏技术。
五、计算题:
1.设文法G(S):
S—八|a|(T)
T—|S
⑵构造相应的和集合;
⑶构造预测分析表
2.语句ES
(1)改写文法,使之适合语法制导翻译;
(2)写出改写后产生式的语义动作。
3.设文法G(S):
Sf(T)|a
T—|S
(1)计算和;
(2)构造优先关系表。
4.设某语言的语
(1)句的(形2)式为
i:
=E
(1)E"S
其语义解释(为1)
i:
=S
:
=目2)
:
iv=
S;
i:
=i+1
(1)写出适合语法制导翻译的产生式;
(2)写出每个产生式对应的语义动作。
5.把语句
a<10
c>01
*3-1;翻译成四元式序列。
6.设有基本块
*C
*E
2
*C
2*S
*Q
*5
假设基本块出口时只有M还被引用,请写出优化后的四元序列
7.已知文法G(S)
S—a|八|(T)
Tf|S
(1)给出句子(a,())的最左推导;
(2)给出句型(())的短语,直接短语,句柄。
8.对于C语言SE语句
(1)改写文法,使之适合语法制导翻译;
(2)写出改写后产生式的语义动作。
9.已知文法G(S)
Sf
Afb
Bfd
(1)给出句子的最左推导及画出语法树;
(2)给出句型的短语、素短语。
10.设文法G(S):
Sf(T)||a
Tf|S
⑴消除左递归和提公共左因子;
⑵构造相应的和集合;
⑶构造预测分析表。
11.把语句
X>0VYvo
X>0*3
3;
翻译成四元式序列。
12.已知文法G(S)
Ef|T
TfT*F
Ff(E)|i
(1)给出句型()*的最左推导及画出语法树;
(2)给出句型()*的短语,素短语和最左素短语。
13.设文法G(S):
SfT|SVT
TfUAU
Ufi
(1)计算和;
(2)构造优先关系表。
答案:
(1)消除左递,文法变为G‘[S]:
S-:
|a|(T)'
T—'|S
T'—|£
此文法无左公共左因子。
⑵构造相应的和集合:
(S)={a,八,(},(S)={#,,,)}
(T)={a,八,(},(T)={}}
(T')={,,£},(F)={)}
(3)构造预测分析表:
a
A
(
)
5
#
S
S—a
S—人
S—(T)'
T
T—'
T—'
T—'
T'
T'—£
T'—'
2.
(1)
Cl(E
(2)
s—⑴{(,S
3.
(1)(S)={a,(}(T)={+,,(}
(i)
.)}
a
+
(
)
a
.>
.>
+
V.
.>