この論文の規則によると:
- Aが非終端記号の開始である場合は、EOFをFOLLOW(A)に入れ
ます。右側にAがあるプロダクションを検索します。- X→αAβの各プロダクションについて、FIRST(β)− {EPSILON}をFOLLOW(A)に入れます。
- EPSILONがFIRST(β)にある場合は、FOLLOW(X)をFOLLOW(A)に入れます
- 各プロダクションX→αAについて、FOLLOW(X)をFOLLOW(A)に入れます
文法に次の部分があります。
...
A -> C B
B -> , A
C -> EPSILON
C -> =
B -> ;
...
ルール4に従ってFOLLOW(B)を計算しようとすると、FOLLOW(A)を計算する必要があり、その逆も同様です。したがって、自己再帰のためにStackOverflowExceptionが発生します。
私は何をすべきか?