diff --git a/README.md b/README.md new file mode 100644 index 0000000..919a2c2 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Générateur de parsers +## Groupe +* Léonie Gallois +* Jean-Rémy Hok +* Nabil Moukhlis +* Yohan Simard +* Elies Tali +* Arnaud Vergnet + +## Pré-requis +La compilation nécessite python3 et gcc. + +## Fonctionnement +* Écrire la grammaire dans le fichier `grammar.txt` +* Exécuter la commande `make`, qui générera l'exécutable `parser` +* Exécuter le parser avec `./parser "le mot à parser"` +* Si le parser affiche OK, le mot fait partie du langage, s'il affiche KO, il n'en fait pas partie. + +## Limitations +Le parser ne backtrack pas, ce qui signifie que l'ordre des règles a une importance : si un non-terminal a été reconnu par une règle, on ne reviendra pas dessus, et donc les règles suivantes ne seront pas testées même en cas d'échec plus loin dans le mot. + +## Format de l'entrée +La syntaxe de la **grammaire** est la suivante : +- Une règle par ligne ; +- Partie gauche separée de la partie droite par ":" ; +- Les non-terminaux sont des mots avec un premier symbole correspondant à une majuscule ; +- Les terminaux sont en minuscules ; +- Les terminaux et non-terminaux sont separés par un espace dans la partie droite ; +- L'axiome est le non-terminal de gauche de la première règle de la grammaire. + +Le **mot à parser** doit être fourni avec tous les terminaux concaténés avec un espace, et entre guillemets pour qu'il soit considéré comme un seul argument. \ No newline at end of file