Add README.md

This commit is contained in:
Yohan Simard 2021-03-23 19:17:22 +01:00
parent 8dbce9dbce
commit 9e1eb41f37

31
README.md Normal file
View file

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