收藏 分享(赏)

第六章 算符优先分析(大学编译原理).ppt

上传人:11xg27ws 文档编号:6920395 上传时间:2019-04-27 格式:PPT 页数:18 大小:119.50KB
下载 相关 举报
第六章 算符优先分析(大学编译原理).ppt_第1页
第1页 / 共18页
第六章 算符优先分析(大学编译原理).ppt_第2页
第2页 / 共18页
第六章 算符优先分析(大学编译原理).ppt_第3页
第3页 / 共18页
第六章 算符优先分析(大学编译原理).ppt_第4页
第4页 / 共18页
第六章 算符优先分析(大学编译原理).ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、1,第6章 自低向上优先分析,即移进-规约分析。思想:对符号串自左向右扫描,将输入符号移入一个后进先出栈中,边移入边分析,一旦栈顶符号串形成某个句型的句柄或可规约串时(该句柄或可规约串对应某个产生式右部),就用该产生式的左部非终结符代替相应右部的文法符号串,即规约。重复这一过程,直到栈中只剩下文法的开始符号时则认为分析成功,即输入的符号串是文法的句子。,2,6.1 自底向上优先分析概述,有两种优先分析法: 1。 简单优先分析法:求出文法所有符号(终结符,非终结符)之间优先关系,按这种关系确定规约过程中的句柄。 2。算符优先分析法:考虑算符之间优先关系的规约(非规范规约),3,6.3 算符优先分

2、析法,算符优先文法的定义算符优先关系表的构造 算符优先分析算法 算符优先分析法的局限性,4,6.3.1 算符优先分析,自下而上分析算法模型-移进归约 算符优先分析不是规范归约算符优先分析的可归约 串是句型的最左素短语 定义: cfg(上下文无关文法) G 的句型的素短语是一个短语,它至少包含一个终结符,且除自身外不再包含其他素短语。处于句型最左边的素短语为最左素短语. 文法GS的短语:S A且A ,则称是句型相对于非终结符A的短语,5,文法GE: (1) EE+T (2) ET (3) TT*F (4) TF (5) FPF|P (6) P(E) (7) Pi,句型T+T*F+i 其短语有:

3、T+T*F+i T+T*F T T*F i,E,E,T,+,+,E,T,F,*,F,T,T,i,最左素短语为:T*F,句型T+T+F的素短语为:T+T,E,+,+,T,F,E,句型T+T+i的素短语为:T+T, i,素短语为:T*F, i,E,T,T,i,6,分析程序模型,总控程序,算符优先关系表,产生式,输入串#,#,输出,7,例 GE: EET|T TT*F|F FPFP P(E)|i,算符优先关表,8,6.3.2 算符优先文法的定义,算符文法定义:如果不含空产生式的上下文无关文法 G 中,没有形如 ABC的产生式,其中B,CVN 则称G 为算符文法(OG)。 例1 GE:EE+E|E-|

4、E*E|E/E|EE|(E)|i 例2 GE: EET|TTT*F|FFPFPP(E)|i 性质1:在算符文法中任何句型都不包含两个相邻的非终结符. 性质2:如 Ab 或 bA 出现在算符文法的 句型 中,其中 AVN,bVT, 则 中任何 含 b 的短语必含有A。,9,算符优先关系,在OG中定义 算符优先关系:a = b G中有形如:Aab或A aBb.的产生式。 a b G中有形如: A Bb的产生 式,而 B a 或 B aC规定 若 S a或 S Ca 则 # # (认为存在#S#),10,算符优先文法OPG定义,在 OG文法 G 中,若任意两个终结符间至多有一种算符优先关系存在,则称

5、G 为算符优先文法(OPG)。注意:允许bc, cb; 不允许 bc, b“(”。结论 : 算符优先文法是无二义的。,11,6.3.3 算符优先关系表的构造,首先定义如下两个集合: FIRSTVT(B)=bB b 或 B CbLASTVT(B)=aB a 或 B aC 按如下算法计算出给定文法中任何两个终结符对(a,b)之间的优先关系:1) =关系 直接看产生式的右部,若出现了 A ab或 A aBb,则a=b2)关系 求出每个非终结符B的LASTVT(B) 若ABb,则aLASTVT(B),则ab,12,计算算符优先关系,例文法GE: (0) E#E# (1) EE+T (2) ET (3)

6、 TT*F (4) TF (5) FPF|P (6) P(E) (7) Pi,FIRSTVT(E)=# FIRSTVT(E)=+,*,(,i FIRSTVT(T)=*,(,i FIRSTVT(F)=,(,i FIRSTVT(P)=(,i LASTVT(E)=# LASTVT(E)=+,*,),i LASTVT(T)=*,),i LASTVT(F)=,),i LASTVT(P)=),i,13,(0)E#E# (1) EE+T (2) ET (3) TT*F (4) TF (5) FPF|P (6) P(E) (7) Pi,3)关系 找形如:ABb的产生式 E#: 则 LASTVT(E)# E+:

7、 则 LASTVT(E)+ T*: 则 LASTVT(T)* P: 则 LASTVT(P) E): 则 LASTVT(E),2)关系 找形如AaB的产生式 #E:则 #FIRSTVT(E) +T: 则 +FIRSTVT(T) *F: 则 *FIRSTVT(F) F: 则 FIRSTVT(F) (E: 则 (FIRSTVT(E),1)=关系 由产生式(0)和(6),得 #=#, ( = ),14,例GE的算符优先关表(注意加入#),15,6.3.4 算符优先分析算法,算符优先文法句型的性质: 算符文法的任何一个句型应为如下形式: N1a1N2a2 . Nnan Nn+1 其中N k(1kn+1)

8、为非终结符或空,ak(1kn)为终结符。 算符优先文法句型的最左素短语NiaiNi+1ai+1 . Njaj Nj+1满足: ai-1 ai ai =ai+1 = =aj-1 =aj aj aj+1 即:ai-1 aj+1,16,算符优先分析算法,1 k:= 1; S k := “#” 2 repeat read 下一符号到a; 3 if S k Vt then j := k else j := k-1; 4 while S j a do 5 repeat 6 Q := S j ; 7 if S j-1 Vt then j := j-1 8 else j:= j-2 9 until S j Q; 10 将 S j+1 S j+2 S k 归约到某个N;/ 11 k := j+1; 12 S k := N; 13 14 if ( S j a or S j = a) 15 then k := k+1; S k := a 16 else error 17 until a = “#”,17,算符优先分析法,简单,直观,有利于表达式分析,易于手工实现 比规范归约快 可能导致把错误的句子得到正确的归约。该方法仅适用于表达式的语法分析,18,利用算符优先分析算法分析输入串,举例 p115: 分析输入串i+i# GE: EET|T TT*F|F FPFP P(E)|i,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报