编译原理_05自底向上的语法分析方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当句柄出现在栈顶符号串中就可以规约。 ②如何知道在栈顶符号串中已经形成句柄?
通过自底向上的分析算法来解释(优先关系)
8
6.1 自底向上优先分析法概述
优先分析法又可分简单优先分析法和算符优 先分析法。 ①简单优先分析法(规范归约)-对文法按 一定原则求出所有文法符号间的优先关系; ②算法优先分析法(不规范归约)-规定算 符之间的优先关系)
13
算符文法定义:
• 设有一文法G,如果G中没有形如 A→…BC…
的产生式,其中B和C为非终结符,则称G为 算符文法(或称OG文法)。 • 即任何一个产生式中都不包含两个非终结 符相邻的情况,就是算符文法。
14
性质1:在算符文法中任何句型都不包含两个 相邻的非终结符。
性质2:如果Ab或(bA)出现在算符文法的 句型中,其中AVN, b VT,则中任何 含b的短语必含有A。
4
例1:文法: SaAcBe
A b
A Ab
B d 输入串abbcde#分 析 最右推导:
SaAcBe aAcde aAbcde abbcde 规约分析过程如下:
5
步骤 1 2 3 4 5 6 7 8 9 10 11
6
符号栈 # #a #ab #aA #aAb #aA #aAc #aAcd #aAcB #aAcBe #S
# # # #
优先关系 动作
#<i #<i>+ #<+
+<i
+<i>*
+<*
*<i
*<i>#
+<*>#
规
#<+>#
分析可知:若只从移进—归约的角度来考虑, 在第6步时栈顶已出现了句柄E+E,可以进行 归约了,但是明显是错误的,因为这样就不 符合算术运算规律 。 所以对于表达式,我们可以人为地规定其算 符的优先顺序,即给出优先级别和同一级别 的结合性。
教学难点 :
算符优先关系的定义
教学课时:2 教学方法:多媒体教学 教学内容和步骤 :(如下)
3
自底向上分析方法的基本思想
自底向上分析方法,也称移进归约分析法
实现思想(是推导的逆过程):
对输入符号串自左向右进行扫描,并将输入符 逐个移入一个后进先出栈中,边移入边分析, 一旦栈顶符号串形成某个句型的句柄时,就用 该产生式的左部非终结符代替相应右部的文法 符号串,称为归约。重复这一过程,直到归约 到栈中只剩下文法的开始符号时,则分析成功。
16
算符优先文法的定义: 设有一不含产生式的算符文法G,如果对
任意两个终结符a,b之间至多只有= ,<和>三 种关系的一种成立,则称G是一个算符优先文 法(也称OPG文法)。
即a b,a b,a b只有一种成立,但允 许
a b,b a同时存在。
17
例:已知表达式文法G[E]:
E→E+E | E*E | (E) | i
算符优先文法(也称OPG文法),它是一个算符文 法,不含产生式,且对任意两个终结符a,b之间至 多只有= ,<和>三种关系的一种成立。
19
作业
教材P122练习: 2(1),3(1)
20
第 十三 讲
课题:算符优先关系表和算符优先分析法 目的要求:
1.掌握算符优先关系表的构造方法; 3.掌握算符优先分析法及其局限性
教学重点:
1.符优先关系表的构造 2.算符优先分析法的实现;
教学难点 :
算符优先关系表的构造
教学课时:2 教学方法:多媒体教学 教学内容和步骤 :(如下)
21
三、 算符优先关系表 用表格形式来表示各终结符号的优先关系,这 种表称为优先关系表。 构造优先关系表的方法:①按照定义来构造
②按关系图来构造
• 首先引入两个概念: firstVT集合lastVT集合 first(B)={b|B+b… 或 B+Cb…} lastVT(B)={a|B+…a 或 B+…aC}
22
三种算符优先关系的计算:
证明G[E]不是OPG文法。
证明如下:
因为:E→E+E ,
+
EE*E
又因为:E→E*E,
+
EE+E
则有 + < 来自百度文库 则有 + > *
所以不是算符优先文法。
18
教学总结
自底向上分析方法,也称移进归约分析法,是推 导的逆过程。
算法优先分析法(不规范归约)-规定算符之间 的优先关系)
文法符号之间的优先关系有三种:大于、小于和 等于。
9
6.3 算符优先分析法
• 算符优先优先分析法 只规定算符(终结符)之间的优先关系。在 归约过程中只要找到句柄就归约,不必考虑 归约到哪个非终结符,因此不是规范归约。 特点:速度快,特别适合于表达式的分析
• 通过算符之间的优先关系来确定句柄
10
先看一个例题: 例. 已知文法G[E]:
E→E+E E→ E*E E→ i 输入串i+i*i ,归约过程如下
第6章 自底向上优先分析法
1
主要内容
6.1 自底向上优先分析概述 6.3 算符优先分析法
2
第 十二 讲
课题:自底向上分析方法、算符优先文法 目的要求:
1.理解自底向上的语法分析方法的基本思想; 2.掌握算符文法、算符优先文法的定义和性质
教学重点:
1.优先分析法的基本思想和术语; 2.算符文法、算符优先文法的定义和性质
11
步骤 符号栈 输入符号串
1) 移2)进 规3)约 移4)进 移5)进 规6)约 移7)进 移8)进 规9)约 约 10) 规 11约) 接受
12
# #i #E #E+ #E+i #E+E #E+E* #E+E*i #E+E*E #E+E #E
i+i*i# +i*i# +i*i# i*i#
*i# *i# i#
输入符号串 动作
abbcde# 移进
bbcde#
移进
bcde#
归约 A→b
bcde#
移进
cde#
归约 A→Ab
cde#
移进
de#
移进
e#
归约 B→b
e#
移进
#
规约 S→aAcBe
#
接受
上述的每一步规约可以构造一颗语法树:
A
A
B
A
b
bb
d
S
aAcB e
A d
bb
7
问题的提出: ①在构造语法树的过程中,何时规约?
(含b的短语必含A,含A的短语不一定含b)
15
算符优先关系的定义:
• 设G是一个算符文法,a和b是任意两个终结 符,A,B,C是非终结符,算符优先关系 如下: (1)a=b当且仅当G中含有形如A→…ab…或 A→…aBb…的产生式; (2) a <b当且仅当G中含有形如A→…aB… 的产生式,且+Bb…或+BCb…; (3) a > b当且仅当G中含有形如A→…Bb… 的产生式,且B+…a或B+…aC 。
通过自底向上的分析算法来解释(优先关系)
8
6.1 自底向上优先分析法概述
优先分析法又可分简单优先分析法和算符优 先分析法。 ①简单优先分析法(规范归约)-对文法按 一定原则求出所有文法符号间的优先关系; ②算法优先分析法(不规范归约)-规定算 符之间的优先关系)
13
算符文法定义:
• 设有一文法G,如果G中没有形如 A→…BC…
的产生式,其中B和C为非终结符,则称G为 算符文法(或称OG文法)。 • 即任何一个产生式中都不包含两个非终结 符相邻的情况,就是算符文法。
14
性质1:在算符文法中任何句型都不包含两个 相邻的非终结符。
性质2:如果Ab或(bA)出现在算符文法的 句型中,其中AVN, b VT,则中任何 含b的短语必含有A。
4
例1:文法: SaAcBe
A b
A Ab
B d 输入串abbcde#分 析 最右推导:
SaAcBe aAcde aAbcde abbcde 规约分析过程如下:
5
步骤 1 2 3 4 5 6 7 8 9 10 11
6
符号栈 # #a #ab #aA #aAb #aA #aAc #aAcd #aAcB #aAcBe #S
# # # #
优先关系 动作
#<i #<i>+ #<+
+<i
+<i>*
+<*
*<i
*<i>#
+<*>#
规
#<+>#
分析可知:若只从移进—归约的角度来考虑, 在第6步时栈顶已出现了句柄E+E,可以进行 归约了,但是明显是错误的,因为这样就不 符合算术运算规律 。 所以对于表达式,我们可以人为地规定其算 符的优先顺序,即给出优先级别和同一级别 的结合性。
教学难点 :
算符优先关系的定义
教学课时:2 教学方法:多媒体教学 教学内容和步骤 :(如下)
3
自底向上分析方法的基本思想
自底向上分析方法,也称移进归约分析法
实现思想(是推导的逆过程):
对输入符号串自左向右进行扫描,并将输入符 逐个移入一个后进先出栈中,边移入边分析, 一旦栈顶符号串形成某个句型的句柄时,就用 该产生式的左部非终结符代替相应右部的文法 符号串,称为归约。重复这一过程,直到归约 到栈中只剩下文法的开始符号时,则分析成功。
16
算符优先文法的定义: 设有一不含产生式的算符文法G,如果对
任意两个终结符a,b之间至多只有= ,<和>三 种关系的一种成立,则称G是一个算符优先文 法(也称OPG文法)。
即a b,a b,a b只有一种成立,但允 许
a b,b a同时存在。
17
例:已知表达式文法G[E]:
E→E+E | E*E | (E) | i
算符优先文法(也称OPG文法),它是一个算符文 法,不含产生式,且对任意两个终结符a,b之间至 多只有= ,<和>三种关系的一种成立。
19
作业
教材P122练习: 2(1),3(1)
20
第 十三 讲
课题:算符优先关系表和算符优先分析法 目的要求:
1.掌握算符优先关系表的构造方法; 3.掌握算符优先分析法及其局限性
教学重点:
1.符优先关系表的构造 2.算符优先分析法的实现;
教学难点 :
算符优先关系表的构造
教学课时:2 教学方法:多媒体教学 教学内容和步骤 :(如下)
21
三、 算符优先关系表 用表格形式来表示各终结符号的优先关系,这 种表称为优先关系表。 构造优先关系表的方法:①按照定义来构造
②按关系图来构造
• 首先引入两个概念: firstVT集合lastVT集合 first(B)={b|B+b… 或 B+Cb…} lastVT(B)={a|B+…a 或 B+…aC}
22
三种算符优先关系的计算:
证明G[E]不是OPG文法。
证明如下:
因为:E→E+E ,
+
EE*E
又因为:E→E*E,
+
EE+E
则有 + < 来自百度文库 则有 + > *
所以不是算符优先文法。
18
教学总结
自底向上分析方法,也称移进归约分析法,是推 导的逆过程。
算法优先分析法(不规范归约)-规定算符之间 的优先关系)
文法符号之间的优先关系有三种:大于、小于和 等于。
9
6.3 算符优先分析法
• 算符优先优先分析法 只规定算符(终结符)之间的优先关系。在 归约过程中只要找到句柄就归约,不必考虑 归约到哪个非终结符,因此不是规范归约。 特点:速度快,特别适合于表达式的分析
• 通过算符之间的优先关系来确定句柄
10
先看一个例题: 例. 已知文法G[E]:
E→E+E E→ E*E E→ i 输入串i+i*i ,归约过程如下
第6章 自底向上优先分析法
1
主要内容
6.1 自底向上优先分析概述 6.3 算符优先分析法
2
第 十二 讲
课题:自底向上分析方法、算符优先文法 目的要求:
1.理解自底向上的语法分析方法的基本思想; 2.掌握算符文法、算符优先文法的定义和性质
教学重点:
1.优先分析法的基本思想和术语; 2.算符文法、算符优先文法的定义和性质
11
步骤 符号栈 输入符号串
1) 移2)进 规3)约 移4)进 移5)进 规6)约 移7)进 移8)进 规9)约 约 10) 规 11约) 接受
12
# #i #E #E+ #E+i #E+E #E+E* #E+E*i #E+E*E #E+E #E
i+i*i# +i*i# +i*i# i*i#
*i# *i# i#
输入符号串 动作
abbcde# 移进
bbcde#
移进
bcde#
归约 A→b
bcde#
移进
cde#
归约 A→Ab
cde#
移进
de#
移进
e#
归约 B→b
e#
移进
#
规约 S→aAcBe
#
接受
上述的每一步规约可以构造一颗语法树:
A
A
B
A
b
bb
d
S
aAcB e
A d
bb
7
问题的提出: ①在构造语法树的过程中,何时规约?
(含b的短语必含A,含A的短语不一定含b)
15
算符优先关系的定义:
• 设G是一个算符文法,a和b是任意两个终结 符,A,B,C是非终结符,算符优先关系 如下: (1)a=b当且仅当G中含有形如A→…ab…或 A→…aBb…的产生式; (2) a <b当且仅当G中含有形如A→…aB… 的产生式,且+Bb…或+BCb…; (3) a > b当且仅当G中含有形如A→…Bb… 的产生式,且B+…a或B+…aC 。