自下而上的语法分析和算符优先分析法


自下而上的语法分析:(规约)

由叶节点到根节点,构造树

规范规约:最左规约(对应于最右推导)

 

 

例:

对于文法:

SaABe

AAb|b

Bd

 

abbde的规约过程:

 

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子

 

 

 

对应的最右推导:

SaABeaAdeaAbdeabbde

 

 

 

存在的问题:遇到Ab的时候,有两种可能AAbAb

解决:

 

短语的概念:

如果S=> αAw=>αβw,则称β为相对于A的、句型αβ的短语

 

直接短语

     若A→ β为一产生式,则称β为相对于A的、句型αβ的直接短语

例:

句型aAbde所包含的直接短语:

      Abd

 

句柄:

最左直接短语是句柄

例:句型aAbde所包含的句柄:Ab

 

素短语

 ①它首先是一个短语②至少含有一个终结符③除自身外,不再含有其它的素短语

最左素短语LPP ( leftmost Prime Phrase)

算符优先分析过程中归约的是最左素短语

 

例:关于文法EE+T|T

          T→T*F|F

          F→(E)|id

对于句型F+F*id3

 

 

语法树是:

 

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子
 

 

 

短语:F1,  F2,  id3,  F2*id3,  

            F1+F2*id3

直接短语: F1,  F2,  id3

句柄: F1

最左素短语: id3

 

 

 

 

 

用栈实现移进归约分析

关于文法:

        EE+T|T

        TT*F|F

        F(E)|id

对于串 id1*id2+id3 的分析

方法:对于符号栈中的非终结符,能规约就规约,不能规约就从输入串中移入符号

 

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子
 
 

 

 

 

 

 

算符优先分析法:

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子 表示 a b 的优先级相等
自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子 表示 a 的优先级不如 b
自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子 表示 a 的优先级比 b

注:

算术关系“<,=”和“>”与优先关系具有十分不同的性质。例如,a<·b并不一定意味着b·>a

例如:+ <·(,但(· >+不一定存在。 具体如:2+(3+5)

 

 

 

算符优先关系矩阵:

关于文法

 

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子
的优先关系矩阵:

 

 

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子
 

 

 

 

 

 

FIRSTVTLASTVT集:

FIRSTVT(P)={a|P=>a…或P=>Qa,

LASTVT(P)={a|P=> … aP=>aQ

 

 

上面文法的FIRSTVTLASTVT集:

 

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子

 

 

 

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子
 

 

 

 

关于上面文法对于串id+id*id$的分析:

方法:如果<· (表示当前优先级不够)就移进,如果·或者=就规约

 

自下而上的语法分析和算符优先分析法 - 小镜子~ - 菜园子


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM