===== Algorithmes de fermeture ===== ==== LL(1) ==== === Définitions === * ensembles appelés FIRST pour tous les symboles (terminaux, non-terminaux, alternatives) dans G. *Un ensemble appelé FIRST pour chaque queue alternative en G; où une queue alternative est une suite de zéro ou plus symboles \alpha si A\alpha est une alternative ou queue alternative en G. === Initialisations === * Pour tout terminal T, FIRST(T) = {T}. * Pour tout non-terminal N, FIRST(N) = \$\emptyset \$ * Pour toute alternative et queue alternative non-vide \$\alpha, FIRST(\alpha)=\emptyset \$. * Pour toute alternative et queue alternative vide, FIRST = {\$\epsilon\$ } === Règles d'inférence === * Pour chaque règle N\rightarrow\alpha dans G, FIRST(N) doit contenir tous les symboles dans FIRST(\$\alpha\$), y compris \$\epsilon\$ si FIRST(\$\alpha\$) le contient. * Pour chaque alternative ou queue alternative \$\alpha\$ de la forme A\beta , FIRST(\$\alpha\$) doit contenir tous les symboles dans FIRST(A), hormis \$\epsilon\$ si tant est que FIRST(A) le contient. * Pour chaque alternative ou queue alternative \$\alpha\$ de la forme A\beta telle que FIRST(A) contient \$\epsilon\$, FIRST(\$\alpha\$) doit contenir tous les symboles de FIRST(\$\beta\$), y compris \$\epsilon\$ si tant est que FIRST(\$\beta\$) le contient. ==== LR(0) ==== === Définitions === === Initialisations === === Règles d'inférence === ==== SLR(1) ==== === Définitions === === Initialisations === === Règles d'inférence === ==== LR(1) ==== === Définitions === === Initialisations === === Règles d'inférence === ==== LALR(1) ==== === Définitions === === Initialisations === === Règles d'inférence ===