Tout petit le projet
grammar.txt | ||
main.py | ||
Makefile | ||
README.md |
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écutableparser
- 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.