2017-05-15 3 views
0

コンパイラの魔法を勉強していて、結果が分からない。ここでコンパイル - LL1文法

は文法である:私は「最初」を見つけるとセットに「従う」しようとすると

S -> A # 
A -> B G D E 
B -> + | - | EPSILON 
C -> c C | EPSILON 
G -> c C 
D -> . C | EPSILON 
E -> e B G | EPSILON 

、私は私がオンライン予測因子でそれを行うときに私が得るものとは異なる結果が得られます。

は、ここでの結果が示されている:

Non-terminal Symbol/Follow Set 
    S     $ 
    A     # 
    B     c 
    C    e, ., # 
    G     ., # 
    D     e, # 
    E     # 

なぜGの追従組{Eは、#}ではありませんか? 私が理解しているのは、Aのルールに従えばDはGに従うということですが、EPSILONであってもかまいませんので、Eに移動してaeになるかもしれませんが、EPSILONので、Sのルールに関して#に移動します。

私はここで何が欠けていますか?

私はGのFOLLOWセットのあなたの計算が正しいhttp://hackingoff.com/compilers/predict-first-follow-set

答えて

1

でツールを使用していました。

ハッキングオフツールがバグです。ここでは同じエラーを示す短い文法は次のとおりです。

S -> a B C a 
B -> b 
C -> EPSILON 

それはaBためFOLLOWセットが、空として設定ツールのレポートであることは明らかです。

+0

ありがとうございます。私はhttp://hackingoff.com/compilers/predict-first-follow-setを使いました – eli0T

関連する問題