R → Q R' (1) R' → ε | '|' Q R' (2) Q → P Q' (3) Q' → ε | P Q' (4) P → O P' (5) P' → ε | '*' P' (6) O → '(' R ')' | ALPHA (7)に対する構文解析表をつくる。
まず、
First(O) = { '(', ALPHA} First(P) = First(O) First(Q) = First(P)より、
First(Q R') = First(Q) (First(Q)がεを含まないので) = { '(', ALPHA}ゆえに下の構文解析表の Rの行の *1の欄を得る。
First('|' Q R') = { '|' }だから*2の欄を得る。 さらに、First(ε) = {ε}だから、 Follow(R')を考える必要がある。
Follow(R') = Follow(R) = { $, ')' }より、 *3の欄を得る。
First(P Q') = First(P)(First(P)がεを含まないので) = { '(', ALPHA }より、 *4の欄を得る。
Follow(Q') = Follow(Q) = First(R')(εを除く) + Follow(R')+ Follow(R) = { '|' } + Follow(R) = { '|', ')', $ }より、 *6の欄を得る。
First(O P') = First(O)(First(O)がεを含まないので) = { '(', ALPHA }より、 *7の欄を得る。
Follow(P') = Follow(P) = First(Q')(εを除く) + Follow(Q') + Follow(Q) = { '(', ALPHA } + { '|', ')', $ } = { '(', ALPHA, '|', ')', $ }より *9の欄を得る。
| | * | ( | ) | ALPHA | $ | |
R | Q R' *1 | Q R' *1 | ||||
R' | '|' Q R' *2 | ε *3 | ε *3 | |||
Q | P Q' *4 | P Q' *4 | ||||
Q' | ε *6 | P Q' *5 | ε *6 | P Q' *5 | ε *6 | |
P | O P' *7 | O P' *7 | ||||
P' | ε *9 | '*' P' *8 | ε *9 | ε *9 | ε *9 | ε *9 |
O | '(' R ')' | ALPHA |