第06章 自底向上优先分析Word文档格式.docx
- 文档编号:16586211
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:14
- 大小:45.08KB
第06章 自底向上优先分析Word文档格式.docx
《第06章 自底向上优先分析Word文档格式.docx》由会员分享,可在线阅读,更多相关《第06章 自底向上优先分析Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
#(a
#(N
#(N,
#(N,a
#(N,N
#(N)
#N
a
a,a)#
a)#a)#a)#
)#
MoveinMoveinReduce:
S→aMovein
MoveinReduce:
S→aReduce:
T→T,SMovein
Reduce:
S→(T)
Success!
对输入串(a,(a,a))#的算符优先分析过程为:
当前字符(CHAR
剩余输入串
(INPUT_STRING)
#(N,(
#(N,(a
#(N,(N
#(N,(N,a
#(N,(N,N
#(N,(N)
(a
a,(a,a))#
(a,a))#(a,a))#(a,a))#a,a))#
a))#a))#a))#
))#
S→(T)Reduce:
第2题
(1)给出(a,(a,a))和(a,a)的最右推导,和规范归约过程。
(2)将
(1)和题1中的(4)进行比较给出算符优先归约和规范归约的区别。
(1)(a,a)的最右推导过程为:
S(T)(T,S)(T,a)(S,a)(a,a)
(a,(a,a))的最右推导过程为:
S(T)(T,S)(T,(T))
(T,(T,S))(T,(T,a))(T,(S,a))(T,(a,a))(S,(a,a))
(a,(a,a))
(a,(a,a))的规范归约过程:
步骤
栈
输入
动作
(a,(a,a))#
移进
a,(a,a))#
(a,a))#
归约,SÆ
4
#(S
归约,LÆ
S
5
#(T
6
#(T,
(a,a))#
7
#(T,(
a,a))#
8
#(T,(a
a))#
9
#(T,(S
归约,TÆ
10
#(T,(T
11
#(T,(T,
a))#
12
#(T,(T,a
13
#(T,(T,S
T,S
14
15
#(T,(T)
(T)
16
#(T,S
17
#(T,S)
18
#(T)
19
#S
接受
(a,a)的规范归约过程:
(a,a)#
#(
a,a)#
#(a
a)#
a)#
#(T,a
#S
(2)算符优先文法在归约过程中只考虑终结符之间的优先关系从而确定可归约串,而与非终结符无关,只需知道把当前可归约串归约为某一个非终结符,不必知道该非终结符的名字是什么,因此去掉了单非终结符的归约。
规范归约的可归约串是句柄,并且必须准确写出可归约串归约为哪个非终结符。
第3题:
有文法G[S]:
SÆ
VVÆ
T|ViTTÆ
F|T+FFÆ
)V*|(
(1)给出(+(i(的规范推导。
(2)指出句型F+Fi(的短语,句柄,素短语。
(3)G[S]是否为OPG?
若是,给出
(1)中句子的分析过程。
(1)S=>
V=>
ViT=>
ViF=>
Vi(=>
Ti(=>
T+Fi(=>
T+(i(=>
F+(i(=>
(+(i(
(2)句型F+Fi(的语法树:
短语:
F,F+F,(,F+Fi(句柄:
F素短语:
(3)FIRSTVT和LASTVT
SV
ViTTF
T+F(
F
FIRSTVT
LASTVT
i,+,),(
i,+,*,(
V
T
+,),(
+,(,*
),(,
*,(
算符优先关系
i
+
*
≯
≮
≡
因为该文法是OP,同时任意两个终结符的优先关系唯一,所以该文法为OPG。
(+(i(的分析过程
优先关系
当前符号
移进或归约
#≮(
(+(i(#
(≯+
(i(#
归约
#F
#≮+
#F+
+≮(
i(#
#F+(
(≯i
(#
#F+F
+≯i
#≮i
#Fi
i≮(
#Fi(
(≯#
#FiF
i≯#
#≡#
第4题
文法G[S]为:
S→S;
G|GG→G(T)|HH→a|(S)T→T+S|S
(1)构造G[S]的算符优先关系表,并判断G[S]是否为算符优先文法。
(2)给出句型a(T+S);
H;
(S)的短语、句柄、素短语和最左素短语。
(3)给出a;
(a+a)和(a+a)的分析过程,说明它们是否为G[S]的句子。
(4)给出(3)中输入串的最右推导,分别说明两输入串是否为G[S]的句子。
(5)由(3)和(4)说明了算符优先分析的哪些缺点。
(6)算符优先分析过程和规范归约过程都是最右推导的逆过程吗?
答案:
(1)构造文法G[S]的算符优先关系矩阵:
;
·
>
<·
=·
在上表中可看出终结符之间的优先关系是唯一的,或称G[S]的算符优先关系矩阵不含
多重入口,因此,G[S]是一个算符优先文法。
(2)
(3)对输入串(a+a)#的分析过程如下:
步骤栈当前符号剩余输入串移进或归约
(1)
a+a)#
(2)
+a)#
(3)
(4)
(5)
#(N+
(6)
#(N+a
(7)
#(N+N
(8)
(9)
(10)
分析成功
说明是它的句子。
(4)试用规范推导:
S⇒G⇒H⇒(S)由此往下S不可能推导出a+a,所以(a+a)不是G[S]的句子。
(5)结果说明:
由于算符优先分析法去掉了单非终结符之间的归约,尽管在分析过程中,
当决定是否为句柄时采取一些检查措施,但仍难完全避免把错误的句子得到正确的归约。
(6)算符优先分析过程不是最右推导的逆过程。
规范归约过程是最右推导的逆过程。
附加题
问题1:
对于文法SÆ
(L)|a
LÆ
L,S|S
(1)给出句子(a,((a,a),(a,a)))的一个最右推导,并指出右句型的句柄;
(2)按照
(1)的最右推导,说明移进-归约分析器的工作步骤。
(1)S=>
(L)=>
(L,S)=>
(L,(L))=>
(L,(L,S))=>
(L,(L,(L)))=>
(L,(L,(L,S)))=>
(L,(L,(L,a)))
=>
(L,(L,(S,a)))=>
(L,(L,(a,a)))=>
(L,(S,(a,a)))=>
(L,((L),(a,a)))=>
(L,((L,S),(a,a)))
(L,((L,a),(a,a)))=>
(L,((S,a),(a,a)))=>
(L,((a,a),(a,a)))=>
(S,((a,a),(a,a)))=>
(a,((a,a),(a,a)))
(注:
句柄下面有下划线)
(a,((a,a),(a,a)))#
a,((a,a),(a,a)))#
((a,a),(a,a)))#
#(L
#(L,
((a,a),(a,a)))#
#(L,(
(a,a),(a,a)))#
#(L,((
a,a),(a,a)))#
#(L,((a
a),(a,a)))#
#(L,((S
#(L,((L
#(L,((L,
a),(a,a)))#
#(L,((L,a
),(a,a)))#
#(L,((L,S
L,S
#(L,((L)
(a,a)))#
(L)
#(L,(S
#(L,(L
#(L,(L,
(a,a)))#
20
#(L,(L,(
a,a)))#
21
#(L,(L,(a
a)))#
22
#(L,(L,(S
23
#(L,(L,(L
24
#(L,(L,(L,
a)))#
25
#(L,(L,(L,a
)))#
26
#(L,(L,(L,S
27
28
#(L,(L,(L)
29
#(L,(L,S
30
31
#(L,(L)
32
#(L,S
33
34
#(L)
35
问题2:
试为下列各文法建立算符优先关系表。
E→EandT|TT→TorF|FF→notF|NN→(E)|true|false
算符优先关系表如下:
true
false
not
and
or
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第06章 自底向上优先分析 06 向上 优先 分析