如题 E->E+T
. T->T*F|F
. F->(E)|id
求 FIRSTVT(T)
答案是FIRSTVT(T)={*,(,id}
但是我看FIRSTVT集合的定义是
FIRSTVT(A)={blA=>b或A=>Bb.....,b属于终结符,B属于非终结符}
这样的话FIRSTVT(T)的答案不应该是
*,),id 吗?书上给的答案是(,*,id
Firstvt:找Firstvt的三条规则:如果要找A的Firstvt,A的候选式中出现:
A->a.......,即以终结符开头,该终结符入Firstvt;
A->B.......,即以非终结符开头,该非终结符的Firstvt入A的Firstvt;
A->Ba.....,即先以非终结符开头,紧跟终结符,则终结符入Firstvt。
Lastvt:找Lastvt的三条规则:如果要找A的Lastvt,A的候选式中出现:
A->.......a,即以终结符结尾,该终结符入Lastvt;
A->.......B,即以非终结符结尾,该非终结符的Lastvt入A的Lastvt;
A->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Firstvt。