Bonjour à tous,


Je tiens à préciser aux modérateurs que j'ai recherché le meilleur endroit pour ce message et que honnêtement je ne voyais pas ou j'aurais pu le mettre. Si ce n'est pas le bon endroit, je m'en excuse platement d'avance.

Revenons au sujet

Quelqu'un pourrait-il m'expliquer comment calculer First et Follow d'une grammaire en théorie des langages?
J'ai bien trouvé des pdf sur le web, mais j'obtiens des résultats différents sur la même grammaire.

Bien entendu j'attaque le calcul des First et Follow en ayant supprimer les improductifs et les inaccessibles de la grammaire.

Pour First: il faut bien ajouter tous les éléments terminaux (Vt) en début de production.
Pour les Follow: on utilise les règles:

  • A --> alpha B beta ==> First(beta \ {epsilon} ) est inclut dans Follow(B)
  • A --> alpha B ==> Follow(A) est inclut dans Follow(B)
  • A --> alpha B beta avec epsilon appartenant à First(beta) ==> Follow(A) est inclut dans Follow(B)



Par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
S --> c | ABS
A --> B | a
B --> b | epsilon
moi je trouve:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
First(S)={a, b, c, epsilon}
First(A)={a, b, epsilon}
First(B)={b, epsilon}

Follow(S)={epsilon}
Follow(A)={a, b, c, epsilon}
Follow(B)={a, b, c, epsilon}
J'aimerais savoir si cela est correct.

Si une âme qui maitrise le sujet pouvait me donner 3 ou 4 exercices que je les fasses seul puis qu'il les corrige, cela serait tout simplement génial pour moi et pour tous ceux qui peinent sur le sujet.

Merci d'avance