第四章 (5)语法分析(Parsing Syntax Analysis).pptVIP

  • 2
  • 0
  • 约9.23千字
  • 约 41页
  • 2018-10-19 发布于山东
  • 举报

第四章 (5)语法分析(Parsing Syntax Analysis).ppt

* 例: E? ? T E’ E’ ? + T E’ | ? T ? F T’ T’ ? * F T’ | ? F ? id | ( E ) 符号串 First集 T E’ { id, ( } 文法符号 First集 E E’ T T’ F { id, ( } { id, ( } { id, ( } { +, ?} { *, ? } { id, ( } F T’ E’ T’ T { +, *, id, ( } E’ T’ { +, *, ? } * 1: 对所有A?VN 且 A非开始符 : 令Follow(A):={ }; 对开始符 S : 令Follow(S)={ # }; 2: 若有产生式A→xBy: 如果? ?First(y) 则: Follow(B) = Follow(B) ? (First(y)-{?}) ? Follow(A) 否则: Follow(B) = Follow(B) ? First(y) 3: 重复2,直至对所有A?VN,Follow(A)收 敛为止。 计算Follow(A) (A∈VN ) ? 返回 * 例: E? ? T E’ E’ ? + T E’ | ? T ? F T’ T’ ? * F T’ | ? F ? id | ( E ) 文法符号 First集 E E’ T T’ F { id, ( } { id, ( } { id, ( } { +, ?} { *, ? } { { { { { } } } } } # Follow集 , ) # , ) , # , ) + , # , ) + , # , ) , + * 算法回顾 * 计算Predict集 Predict(A→?) First(?) ,当First(?)不含? = First(?)-{?} ? Follow(A) ,当First(?)含? * 例: E? ? T E’ E’ ? + T E’ | ? T ? F T’ T’ ? * F T’ | ? F ? id | ( E ) 文法符号 First集 Follow集 E { id, ( } { ), # } E’ { +, ?} { ), # } T { id, ( } { +, ), # } T’ { *, ? } { +, ), # } F { id, ( } { *, +, ), # } Predict( E?TE’ ) = first(TE’) = { id , ( } Predict( E’ ?+TE’ ) = first(+TE’) = { + } Predict( E’ ? ?) = follow(E’) = { ) , # } Predict( T ?FT’ ) = first(FT’) = { id , ( } * 例: E? ? T E’ E’ ? + T E’ | ? T ? F T’ T’ ? * F T’ | ? F ? id | ( E ) 文法符号 First集 Follow集 E { id, ( } { ), # } E’ { +, ?} { ), # } T { id, ( } { +, ), # } T’ { *, ? } { +, ), # } F { id, ( } { *, +, ), # } Predict( T’ ?*FT’ ) = first(*FT’) = { * } Predict( T’ ? ? ) = follow(T’) = { + , ) , # } Predict( F ?id ) = first(id) = { id } Predict( F ?(E) ) = first((E)) = { ( } * 例: S ? ABc A ? a A ? ? B? b B ? ? 文法符号 First集 S A B { } { } { } ? ? ,a a, b,c ,b Follow集 { } { } { } # c b,c Predict(S ? ABc) = first(ABc) = { a,b,c } Predict(A ? a) = = { a } Predict(A ? ?) = follow(A) = {b,c } Predict(B? b) = = {b} Predict(B ? ?) =

文档评论(0)

1亿VIP精品文档

相关文档