Existe-t-il une bonne ressource en ligne avec une collection de grammaires pour certains des principaux algorithmes d'analyse (LL (1), LR (1), LR (0), LALR (1))? J'ai trouvé de nombreuses grammaires individuelles qui appartiennent à ces familles, mais je ne connais aucune bonne ressource où quelqu'un a rédigé un grand nombre d'exemples de grammaires.
Quelqu'un connaît-il une telle ressource?
Techniques d'analyse - Un guide pratique a plusieurs exemples (c'est-à-dire probablement une demi-douzaine par type) de presque tous les types de grammaire. Vous pouvez acheter le livre de la 2e édition, bien que la 1re édition soit disponible gratuitement sur le site de l'auteur site Web en PDF (près du bas du lien).
L'auteur a également quelques grammaires de test qu'il regroupe avec ses exemples de code de la deuxième édition, qui peuvent être trouvés ici .
Remarque: toutes ces grammaires sont petites (moins de quelques dizaines de règles), car il s'agit évidemment d'un livre publié.
Exemples de wikipedia
grammaire
S -> F
S -> ( S + F )
F -> a
entrée
( a + a )
étapes d'analyse
S -> "(" S "+" F ")"
-> ( "F" + F )
-> ( "a" + F )
-> ( a + "a" )
grammaire
(1) E → E * B
(2) E → E + B
(3) E → B
(4) B → 0
(5) B → 1
entrée
1 + 1
étapes d'analyse
need to build a parser table and traverse through states.
grammaire
S’ -> S S
S -> C C
C -> c C | d
entrée
cd
étapes d'analyse
large table
grammaire
A -> C x A | ε
B -> x C y | x C
C -> x B x | z
entrée
xxzxx
étapes d'analyse
traverse large parser table
Vous voudrez peut-être aussi jeter un œil à
Je ne m'attendrais pas à ce que vous trouviez une grande collection de grammaires organisées de cette façon exprès. Que gagnerait l'organisateur en retour?
Ce que vous pourriez avoir une chance de faire, c'est de trouver des générateurs d'analyseurs qui correspondent à chaque famille (par exemple, LL (1)), et d'aller chercher des instances d'entrées pour ce générateur d'analyseurs, qui seront toutes LL (1) par définition. Par exemple, les grammaires d'ANTLR sont toutes différentes versions de LL (k) selon la version d'ANTLR que vous choisissez (la description de la version d'ANTLR indiquera ce qu'elle accepte); Les grammaires des bisons sont toutes LALR (1) [en ignorant la récente option GLR]. Si vous allez sur mon site Web (voir la biographie), vous voyez une liste de grammaires qui sont toutes à peu près sans contexte (c'est-à-dire, dans aucune des classes que vous décrivez).
EDIT: Notez la clarification de @Bart Kier selon laquelle ANTLR peut marquer explicitement une grammaire comme LL (k) pour k spécifique.