Add README.md
This commit is contained in:
parent
8dbce9dbce
commit
9e1eb41f37
1 changed files with 31 additions and 0 deletions
31
README.md
Normal file
31
README.md
Normal 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.
|
Loading…
Reference in a new issue