romain22222 / INFO805-TP1-Evaluateur

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Exemple minimaliste de d'analyseur syntaxique avec JFlex et Cup

Il s'agit ici de faire un analyseur syntaxique pour reconnaitre des séquences des phrases simples du type <sujet> <verbe> <complement> <point>.

JFlex est utilisé pour la génération de l'analyseur lexical.

Cup pour la génération de l'analyseur syntaxique.

Analyseur lexical

La spécification de l'analyseur lexical est dans le fichier src/main/jflex/Simple.jflex.

Il permet de reconnaître un sujet (il ou elle), un verbe (est ou boit), un complément (vite, bien, chaud, beau, belle) ou un point (.;!?).

À partir de cette spécification, JFlex génère le fichier java, build/generated/sources/jflex/main/java/fr/usmb/m1isc/compilation/simple/SimpleLexer.java qui contient l'analyseur lexical utilisé en entrée de l'analyseur syntaxique.

Analyseur syntaxique

La spécification de l'analyseur syntaxique est dans le fichier src/main/cup/Simple.cup.

À partir de cette spécification, GNU Bison génère les fichiers, build/generated/sources/cup/main/java/fr/usmb/m1isc/compilation/simple/SimpleParser.java (contient l'analyseur syntaxique) et build/generated/sources/cup/main/java/fr/usmb/m1isc/compilation/simple/SimpleParserSym.java (utilisé dans l'analyseur lexical pour renvoyer les tokens (unités lexicales) attendus par l'analyseur syntaxique).

Construction du projet

Pour construire le projet (nécessite l'installation d'une JDK), aller dans le dossier du projet puis exécuter la commande ./gradelw build ou gradelw.bat build.

About


Languages

Language:Lex 77.9%Language:Java 22.1%