2009-11-02 7 views
1

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?

+0

Vous avez oublié la balise des devoirs et pourquoi cela doit-il être fait en java? –

+0

Qu'entendez-vous par "le premier de E" ?! – AraK

+1

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. –

Répondre

3

Eh bien, en supposant que vous êtes en commençant par E , alors soit la première borne est x via le EXye 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 ...

0

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.