编译原理第06章-自底向上优先分析法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

讲解:XX
5
优先关系的定义
❖ 优先关系
➢ 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,
D
*
Y
2021/3/10
讲解:XX
6
简单优先文法的定义
❖ 满足以下条件的文法是简单优先文法:
➢ (1)在文法符号集V中,任意两个符号之间最多 只有一种优先关系成立;
➢ (2)在文法中任意两个产生式没有相同的右部。
2021/3/10
讲解:XX
7
简单优先分析法——算法
❖ 根据已知优先文法构造相应优先关系矩阵,并将 文法的产生式保存,设置符号栈S,算法步骤如 下:
2021/3/10
讲解:XX
9
确定文法符号之间的关系
1. 求≖关系: • 由(1):b ≖A A ≖b
• 由(2):(≖B • 由(3):A ≖a a ≖) 2. 求⋖关系:
• 由(1)(2):b⋖( b⋖ a
• 由(2)(3):(⋖ A (⋖( 3. 求⋗关系:
• 由(1):B ⋗b a ⋗b • 由(3):B ⋗a a ⋗a
1. 将输入符号串a1a2a3...an#依次逐个存入符号栈 S中,直到遇到栈顶符号ai的优先性.>下一个 待输入符号aj时为止。
2. 栈顶当前符号ai为句柄尾,由此向左在栈中找 句柄的头符号ak,即找到ak-1⋖ak为止。
3. 由句柄ak...ai在文法的产生式中查找右部为ak...ai的产 生式,若找到则用相应左部代替句柄,若找不到则 为出错,这时可断定输入串不是该文法的句子。
❖ 性质
➢ 1:在算符文法中任何句型都不包含两个相邻的 非终结符。(归纳法)
A
·=
·=
(
<· <· ·= <·
11)
B
·>
·>
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. 重复上述三步,直到归约完输入符号串,栈中只剩 文法的开始符号为止。
2021/3/10
讲解:XX
8
简单优先文法分析示例
❖ 文法G [S]:
➢ (1) S → bAb (2) A → (B|a (3) B → Aa)
❖ 1、确定文法符号之间的关系 ❖ 2、求出文法的简单优先关系矩阵 ❖ 3、对输入串进行分析(输入串b(aa)b# )
最右推导:
S aAcBe 2021/3/10 aAcde 讲a解A:XbXcde abbcde 4
简单优先分析法
❖ 按照文法符号(包括终结符和非终结符)的 优先关系确定句柄。
❖ 定义
➢ 优先关系 ➢ 简单优先文法
❖ 优先关系矩阵:表示文法符号之间关系的矩阵。 ❖ 算法 ❖ 示例
2021/3/10
编译原理之 优先分析法
华东交通大学软件学院 万仲保
2021/3/10
讲解:XX
1
第06章 自底向上优先分析法
❖自底向上优先分析概述 ❖简单优先分析法 ❖算符优先分析法
2021/3/10
讲解:XX
2
自底向上分析方法概述
❖ 自底向上分析方法,也称移进-归约分析法。
❖ 实现思想是对输入符号串自左向右进行扫 描,并将输入符逐个移入一个后进先出栈 中,边移入边分析,一旦栈顶符号串形成 某个句型的句柄时,就用该产生式的左部 非终结符代替相应右部的文法符号串,这 称为一步归约。
(⋖ a
) ⋗b ) ⋗a
2021/3/10
讲解:XX
10
求出文法的简单优先关系矩阵
SbA( Ba ) #
S
·>
b
·= <·

·>
A
·=
·=
(
<· <· ·= <·
B
·>
·>
a
·>
·> ·=
)
·>
·>
# <· <·
·=
“#”用来表示语句括号,其优先关系低于所有与其有相邻关系的文法符 号。
2021/3/10
2021/3/10
讲解:XX
12
算符优先分析法
❖ 某些文法具有“算符”特性
➢ 表达式运算符(优先级、结合性);
➢ 人为地规定其算符的优先顺序,即给出优先级别和同一级别的结合性;
❖ 只考虑算符之间的优先关系来确定句柄。
❖ 定义
➢ 算符文法
➢ 算符优先关系
➢ 算法优先文法
➢ 最左素短语
❖ 算符优先关系表的构造
❖ 算符优先分析法概述
❖ 算符优先文法的性质
❖ 算符优先分析算法
❖ 优先函数
❖ 算符优先分析法的局限性
2021/3/10
讲解:XX
13
算符文法的定义
❖ 如果不含空产生式的上下文无关文法 G 中没 有形如 U…BC…的产生式,其中B, C∈VN,则称G为算符文法(Operater Grammar,OG)。
输入符号串
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]的句子
讲解:XX
11
对输入串进行分析(输入串b(aa)b# )
文法G[S]: (1) S → bAb (2) A → (B|a
步骤
1wk.baidu.com 2) 3)
符号栈
# #b #b(
(3) B → Aa)
4) #b(a
5) #b(A
6) #b(Aa
7) #b(Aa)
8)
S
S
bA
(
B
a
)
# ·>
9)
b
·= <·

·> 10)
❖ 重复这一过程直到归约到栈中只剩文法的 开始符号时则为分析成功,也就确认输入 串是文法的句子。
❖ 示例
2021/3/10
讲解:XX
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
相关文档
最新文档