Tout petit le projet
Find a file
2021-03-23 19:18:58 +01:00
grammar.txt Makefile finished 2021-03-18 15:28:05 +01:00
main.py Remove useless code 2021-03-23 19:02:28 +01:00
Makefile Add dependency to grammar.txt in parser.c rule 2021-03-23 19:18:58 +01:00
README.md Add README.md 2021-03-23 19:17:22 +01:00

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.