First set, follow set, and select Set
First SetFirst (a) is the start or set of symbols for a.
1. Definition:Set g= (v T, v N, s,p) is a context-independent grammar, first (α) ={a|α can derive aβ,a∈vt,α,β∈v*} special, if α can deduce the ε, then the Ε∈first (α).
2, according to the definition of the first set (for each grammar symbol X∈V COMPUTE First (X)):
①. If X∈VT, then first (X) ={x}. (Simply put, Terminator's first set is itself)
②. If x∈vn, and there is a production x→a...,a∈vt, then A∈first (x) x→ε, then Ε∈first (x). (Simply, if the non-terminator X, can deduce a string beginning with Terminator A, then this terminator a belongs to first (x), if X can deduce the empty symbol string ε, then the empty symbol string ε also belongs to the first set of X)
③. X→y. is a production and y∈vn adds all non-empty symbol string ε elements in first (Y) to First (X). (This can be understood.)
④. If x∈vn;y1,y2,...,yi∈vn, and there is a production x→y1 Y2 ... Yn: When Y1 Y2 ... When Yn-1 can derive ε, all non-empty elements of first (Y1), first (Y2) 、...、 First (Yn-1), and first (Yn) are included in first (X).
That is: First (X) = (First (Y1)-{ε}) ∪ (First (Y2)-{ε}) ∪ ... ∪ (First (Yn-1)-{ε}) ∪{first (Yn)}
⑤. When all Yi in (4) can derive the ε, (i=1,2,... N), then
First (X) = (First (Y1)-{ε}) ∪ (First (Y2)-{ε}∪ ... ∪ (First (Yn)-{ε}) ∪{ε}
Use the above ②~⑤ step repeatedly until the first collection of each symbol no longer increases.
3, the solution Example : 1, the grammar g [S] is:
S→ab
S→bc
a→ε
A→b
B→εb→ad
C→ad
C→b
D→as
D→c
The first set of each non-terminator.
Solution: For non-Terminator s,s start character has Terminator B and non-Terminator A, according to the above definition ② to add B to first (s), by the above definition ③ all the non-empty symbol string ε element in first (A) is added to first (s), and because S→ab conforms to the above definition ④ and ⑤, So first (S) = (∪ (a)-{ε}) ∪{ε} then the starting character of a begins with the Terminator B and the empty symbol string ε, which is all added by the definition ① and the definition ②, which is a. First ( A) ={ε,b}, similarly, first(b) ={a,ε}, so that first (S) is also asked, First (S) ={b,a,ε}, actually looked back to the reason why the definition of ②~⑤ is called repeatedly because a in the start character may be an empty string ε, so consider the case after a.
Again, first (c), by defining the ①, adding B to start (c), and then by defining ④,first (c) = ((A)-{ε}) ∪{first (d)}, firstly (d), easy to know,(d) ={a,c}, So first (C) ={b,a,c}
4, Summary:
1. For Terminator, the element of first concentration is only its own
2, for non-Terminator, if the start character is terminator or the empty symbol string ε, then join its first set, if the start character is non-terminator, you want to add its non-ε first set, and consider the case of ε.
second, follow set Follow (A) ={a| S can deduce μaβ, and A∈VT, A∈first (β), μ∈v T *, Β∈v +}, if s can derive μaβ, and β can deduce ε, then #∈follow (a). can also be defined as: Follow (A) ={a| S can deduce ... AA...,A∈VT}, if there is s can deduce ... A, which specifies #∈follow (a), where we use ' # ' as the terminator of the input string, or as a sentence bracket,
such as: #输入串 #.
Follow (a) is a collection of symbols that are not terminator a followed by a symbol.
1, definition: set g= (vt,vn,s,p) is a context-independent grammar, A∈vn,s is the beginning of the symbol
It should be noted that the follow (a) set is for non-terminator A, the element in the collection is Terminator, is a set of all the followed symbols of a, and when a is the starting character (identifier) of the grammar g, the ' #也加入其中 '
2, according to the definition of follow set (for each grammar symbol S∈VN calculation follow (S)):
①. Set S as the starting symbol in the grammar, add {#} to follow (S) (Here "#" is the sentence bracket). Ii. If A→αbβ is a production type, the non-empty element of first (Beta) is added
Follow (B). If β can deduce the ε, the follow (A) is also added to follow (B).
③. Reuse (b) until each non-terminator follow set no longer increases.
3, the solution Example : 1, the grammar g [E] is: E→te '
E ' →+te ' | ε
T→ft '
T ' →*ft ' | ε
f→ (E) | I
Follow set for each non-terminator.