2. 计算FIRST集 ① 根据定义计算 由定义5.1 FIRST(α)={a|α ![]() ![]() ![]() ![]() 对每一文法符号X∈V 计算FIRST(X) (a) 若X∈VT,则FIRST(X)={X}。 (b) 若X∈VN,且有产生式X→a…,a∈VT, 则 a∈FIRST(X)。 (c) 若X∈VN,X→ε,则ε∈FIRST(X)。 (d) 若X∈VN;Y1,Y2,…,Yi∈VN,且有产生式X→Y1 Y2 … Yn;当Y1 Y2 … Yi-1都 ![]() ![]() (e) 当(d)中所有Yi ![]() ![]() FIRST(X)=FIRST(Y1)∪FIRST(Y2)∪…∪FIRST(Yn)∪{ε} 反复使用上述(b)~(e)步直到每个符号的FIRST集合不再增大为止。 求出每个文法符号的FIRST集合后也就不难求出一个符号串的FIRST集合。 若符号串α∈V*,α=X1 X2 … Xn,当X1不能 ![]() ![]() 若对任何j(1≤j≤i-1,2≤i≤n), ε∈FIRST(Xj), 则
|