编译原理第06章 自底向上优先分析法课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 算符优先分析法概述
• 算符优先文法的性质
• 算符优先分析算法
• 优先函数
• 算符优先分析法的局限性
PPT学习交流
13
算符文法的定义
• 如果不含空产生式的上下文无关文法 G 中没有形如 U…BC…的产生式,其中B,C∈VN,则称G为算符 文法(Operater Grammar,OG)。
• 性质
• 1:在算符文法中任何句型都不包含两个相邻的非终结符。 (归纳法)
输入符号串
abbcde# bbcde# bcde# bcde# cde# cde# de# e# e# # #
动作
移进 移进 归约(A→b) 移进 归约(A→Ab) 移进 移进 归约(B→d) 移进 归约(S→aAcBe) 接受
对输入串abbcde#的移进-规约分析过程
a b b c d e 分析符号串abbcde是否G[S]的句子
D
*
Y
PPT学习交流
6
简单优先文法的定义
• 满足以下条件的文法是简单优先文法:
• (1)在文法符号集V中,任意两个符号之间最多只有一种 优先关系成立;
• (2)在文法中任意两个产生式没有相同的右部。
PPT学习交流
7
简单优先分析法——算法
• 根据已知优先文法构造相应优先关系矩阵,并将 文法的产生式保存,设置符号栈S,算法步骤如下:
• 2:如 Vx 或 xV 出现在算符文法的句型 中,其中 V∈VN,x∈VT, 则 中任何含 x 的短语必含有V。(反证 法)
PPT学习交流
14
用归纳法
• 设是句型,即S⇒*
• S=ω0 ⇒ω1 ⇒...⇒ωn-1 ⇒ωn= • 推导长度为n,归纳起点n=1时,
PPT学习交流
10
求出文法的简单优先关系矩阵
SbA( Ba ) #
S
·>
b
·= <·
<·
·>
A
·=
·=
(
<· <· ·= <·
B
·>
·>
a
·>
·> ·=
)
·>
·>
# <· <·
·=
“#”用来表示语句括号,其优先关系低于所有与其有相邻关系的文法符号。
PPT学习交流
11
对输入串进行分析(输入串b(aa)b# )
最右推导:
S aAcBe aAcde PPT学习交a流Abcde abbcde
4
简单优先分析法
• 按照文法符号(包括终结符和非终结符)的优先关 系确定句柄。
• 定义
• 优先关系 • 简单优先文法
• 优先关系矩阵:表示文法符号之间关系的矩阵。 • 算法 • 示例
PPT学习交流
5
优先关系的定义
编译原理之 优先分析法
PPT学习交流
1
第06章 自底向上优先分析法
•自底向上优先分析概述 •简单优先分析法 •算符优先分析法
PPT学习交流
2
自底向上分析方法概述
• 自底向上分析方法,也称移进-归约分析法。
• 实现思想是对输入符号串自左向右进行扫描,并 将输入符逐个移入一个后进先出栈中,边移入边 分析,一旦栈顶符号串形成某个句型的句柄时, 就用该产生式的左部非终结符代替相应右部的文 法符号串,这称为一步归约。
文法G[S]: (1) S → bAb (2) A → (B|a
步骤
1) 2) 3)
符号栈
# #b #b(
(3) B → Aa)
4) #b(a
5) #b(A
6) #b(Aa
7) #b(Aa)
8)
S
S
b
A
(
B
a
)
# ·>
9)
b
·= <·
<·
·> 10)
A
·=
·=
(
<· <· ·= <·
11)
B
·>
·>
1. 将输入符号串a1a2a3...an#依次逐个存入符号栈S中, 直到遇到栈顶符号ai的优先性.>下一个待输入符号aj 时为止。
2. 栈顶当前符号ai为句柄尾,由此向左在栈中找句柄的 头符号ak,即找到ak-1⋖ak为止。
3. 由句柄ak...ai在文法的产生式中查找右部为ak...ai的产 生式,若找到则用相应左部代替句柄,若找不到则 为出错,这时可断定输入串不是该文法的句子。
• 重复这一过程直到归约到栈中只剩文法的开始符 号时则为分析成功,也就确认输入串是文法的句 子。
• 示例
PPT学习交流
3
Байду номын сангаас
示例 文法G[S]:
(1) S → aAcBe (2) A → b (3) A → Ab (4) B → d
S
AB
A
步骤 符号栈
1) # 2) #a 3) #ab 4) #aA 5) #aAb 6) #aA 7) #aAc 8) # aAcd 9) #aAcB 10) #aAcBe 11) #S
PPT学习交流
9
确定文法符号之间的关系
1. 求≖关系:
• 由(1):b ≖A • 由(2):(≖B • 由(3):A ≖a
2. 求⋖关系:
• 由(1)(2):b⋖( • 由(2)(3):(⋖ A
3. 求⋗关系:
• 由(1):B ⋗b • 由(3):B ⋗a
A ≖b a ≖) b⋖ a (⋖( (⋖ a a ⋗b ) ⋗b a ⋗a ) ⋗a
❖ 优先关系
➢ X ≖Y:表示X、Y的优先关系相同,当且仅 当文法G中存在产生式A→...XY…;
➢ X⋖Y:表示X的优先性比Y的要低,当且仅当
文法G中存在产生式A→...XB...,且B
Y...
➢ X⋗Y:表示X的优先性比Y的要高,当且仅当
文法G中存在产生式A→...BD...,且B
...X,
a
·>
·> ·=
)
·>
·>
# <· <·
·=
#b(B #bA #bAb #S
输入符号串
b(aa)b# (aa)b# aa)b# a)b# a)b# )b# b# b# b# # #
动作
#⋖b,移进 b⋖(,移进 (⋖a,移进 a.>a,归约A→a A.=a,移进 a.=),移进 ).>b,归约B→Aa) B.>b,归约A→(B A.=b,移进 b.>#,归约S→bAb 接受
4. 重复上述三步,直到归约完输入符号串,栈中只剩 文法的开始符号为止。
PPT学习交流
8
简单优先文法分析示例
• 文法G [S]:
• (1) S → bAb (2) A → (B|a (3) B → Aa)
• 1、确定文法符号之间的关系 • 2、求出文法的简单优先关系矩阵 • 3、对输入串进行分析(输入串b(aa)b# )
PPT学习交流
12
算符优先分析法
• 某些文法具有“算符”特性
• 表达式运算符(优先级、结合性); • 人为地规定其算符的优先顺序,即给出优先级别和同一级别的结合性;
• 只考虑算符之间的优先关系来确定句柄。
• 定义
• 算符文法 • 算符优先关系 • 算法优先文法 • 最左素短语
• 算符优先关系表的构造