Je me demande comment déterminer le FIRST
ensemble de E avec la grammaire:Comment déterminer le PREMIER ensemble de E dans cette grammaire?
E -> XYE | e
X -> x
Y -> y
Quelqu'un peut-il me donner une certaine direction?
Je me demande comment déterminer le FIRST
ensemble de E avec la grammaire:Comment déterminer le PREMIER ensemble de E dans cette grammaire?
E -> XYE | e
X -> x
Y -> y
Quelqu'un peut-il me donner une certaine direction?
Eh bien, en supposant que vous êtes en commençant par E , alors soit la première borne est x via le E → Xye production (depuis X produit toujours x) ou il est e via le E → e production. Donc d'abord (E) = {x, e}.
Cela semble assez simple ...
règles Traiter de la forme A -> ... x ... | ... y .... comme deux règles A -> ... x ... et B -> ... y ...
Former un ensemble S contenant initialement des règles de forme E->. ...
puis
Set a set P to empty.
Set a set F to empty.
Repeat until S is empty
Choose element of S, and call it R
If R is in P, remove R from S
Elsif R is of the form A -> b ...
then { add b to F,
add R to P,
remove R from S}
Else (R is the form A -> B ...)
then { place all rules of form B -> ... into S
remove R from S}
End
lorsque la boucle se termine, F contient les jetons qui sont les premières (F).
Ceci ne prend pas en compte les productions vides.
Vous avez oublié la balise des devoirs et pourquoi cela doit-il être fait en java? –
Qu'entendez-vous par "le premier de E" ?! – AraK
First (_E_) est l'ensemble des terminaux qui pourraient être présents au début de _E_. Ce sont les terminaux que vous utilisez pour les transitions d'état puisque vous en frappez toujours un. –