对下面的文法G_14781对下面的文法G解:(1)计算FIRST与FOLLOW集FIRST(P)={(,a,b,^}FIRST(F’)={*,}FIRST(F)=FIRST(P)={(,a,b,^}FIRST(T’)=FIRST(T){}={(,a,b,^,}FIRST(T)=FIRST(F)={(,a,b,^}FIRST(E’)={+,}FIRST(E)=FIRST(T)={(,a,b,^}FOLLOW(E)={),#}FOLLOW(E’)=FOLLOW(E)={),#}FOLLOW(T)=FIRST(E’)\FOLLOW(E)={+,),#}FOLLOW(T’)=FOLLOW(T)=={+,),#}FOLLOW(F)=FIRST(T’)\FOLLOW(T)={(,a,b,^,+,),#}FOLLOW(F’)=FOLLOW(F)={(,a,b,^,+,),#}FOLLOW(P)=FIRST(F’)\FOLLOW(F)={*,(,a,b,^,+,),#}ETE‘E’+E|TFT‘T’T|FPF‘F’*F‘|P(E)|a|b|^FIRSTFOLLOWE(,a,b,^),#E’+,),#T(,a,b,^+,),#T’(,a,b,^,+,),#F(,a,b,^(,a,b,^,+,),#F’*,(,a,b,^,+,),#P),a,b,^*,(,a,b,^,+,),#(2)证明这个文法是LL(1)的。对产生式P(E)|a|b|^ ,有 FIRST((E))FISRT(a)FIRST(b)FIRST(^)=对产生式E’+E| FIRST(+E)FOLLOW(E’)= {+}{),#}=对产生式T’T| FIRST(T)FOLLOW(T’)= {(,a,b,^}{+,),#}=对产生式F‘*F’| FIRST(*F’)FOLLOW(F’)= {*}{(,a,b,^,+,),#}=文法不含左递归。综上i,ii,iii可知,文法G是LL(1)的。ETE‘E’+E|TFT‘T’T|FPF‘F’*F‘|P(E)|a|b|^(3)构造预测分析表。(ab^)+*#ETE’TE’TE’TE’E’+ETFT’FT’FT’FT’T’TTTTFPF’PF’PF’PF’F’*F’P(E)ab^(1)设置过程advance为读下一个单词送全程变量(2);E;; E’;end(4)构造递归下降分析程序。ETE‘E’+E|TFT‘T’T|FPF‘F’*F‘|P(E)|a|b|^’过程ProcedureE’Beginifsym=‘+’thenbeginadvance;E;endelseifsymin[#,)]returnelseerrorETE‘E’+E|TFT‘T’T|FPF‘F’*F‘|P(E)|a|b|^; T’;’过程ProcedureT’Beginifsymin[),+,#]returnelseTendETE‘E’+E|TFT‘T’T|FPF‘F’*F‘|P(E)|a|b|^;F’endETE‘E’+E|TFT‘T’T|FPF‘F’*F‘|P(E)|a|b|^’过程ProcedureFBeginifsym=‘*’ thenbeginadvance;F’endelseifsymin[a,b,(,),^,+,#] thenreturnelseerror;endETE‘E’+E|TFT‘T’T|FPF‘F’*F‘|P(E)|a|b|^
对下面的文法G 来自淘豆网m.daumloan.com转载请标明出处.