|
Préparation
Installation des fichiers
Téléchargez le fichier jex-start.tar.gz et décompressez
le avec la commande suivante:
gtar xvzf jex-start.tar.gz
Cette opération crée un répertoire jex contenant tous les
fichiers nécessaires pour le premier exercice.
Utilisation du Makefile
Le répertoire jex contient un fichier Makefile
qui permet de compiler le projet, de lancer des programmes java et
de nettoyer.
Pour le compiler le projet, utilisez la commande
gmake all
ou plus simplement
gmake
Pour lancer un programme java, vous pouvez utiliser la commande
suivante:
gmake run.<class>
Par exemple pour tester l'analyseur lexical, vous pouvez utiliser
la commande suivante:
gmake run.jex.ScannerTest
Si vous avez des arguments a fournir à votre programme java,
utilisez la variante ci-dessous:
gmake run.<class> ARGS="<vos arguments>"
Parfois il est utile de nettoyer, c'est à dire supprimer tous les
fichiers générés lors des compilations. Pour cela, utilisez la
commande suivante:
gmake clean
Modification du Makefile
En aucun cas, vous ne devez modifier le fichier
Makefile. En effet, il sera remplacé par une version plus
complète lors des prochains exercices et il vous faudrait refaire
tous vos changements. Si vous avez besoins de faire des
changements faites les dans le fichier Makefile.cfg.
Variables d'environnement
Si vous désirez compiler certains fichiers ou exécuter certains
programmes sans utiliser gmake, il vous faut définir les
variables d'environnement suivantes:
setenv JEX_HOME <chemin absolu du répertoire jex>
setenv JLEX_JAR $JEX_HOME/jars/jlex.jar
setenv JCUP_JAR $JEX_HOME/jars/jcup.jar
setenv OUTPUTDIR $JEX_HOME/classes
setenv CLASSPATH ${OUTPUTDIR}:${JCUP_JAR}:${JLEX_JAR}
En fait, seule la variable CLASSPATH est vraiment
indispensable. Les autres ne sont utilisées que pour racourcir
certaines commandes. Afin de ne pas devoir redéfinir ces variables
à chaque nouvelle session, il vous est conseillé de mettre ces
définitions dans votre fichier .login ou .cshrc
ou dans un fichier dont vous pouver faire un source.
Analyseur lexical
Votre travail
Le fichier jex.lex contient un analyseur lexical à
compléter. Vous devez rajouter les expressions regulières (ainsi
que le code correspondant) permettant de reconnaître:
- les signes de ponctuation, parenthèses, etc
- les opérateurs
- les mots-clés
- les identificateurs
- les chaînes de caractères
- les commentaires
Vous devez également compléter la fonction representation(int
token) afin qu'elle retourne une représentation adéquate pour
chacun des lexèmes (tokens).
Comment compiler
Pour compiler l'ensemble du projet utilisez la commande
ci-dessous. Celle-ci compile l'analyseur lexical, puis le fichier
java résultant ainsi que tous les autres fichiers java qui n'ont
pas encore été compilés.
gmake
Si vous ne désirez compiler que l'analyseur lexical, utilisez la
commande suivante:
gmake jlex
Si vous préférez ne pas utilisez gmake, vous pouvez aussi
utiliser les commandes suivantes pour compiler l'analyseur
lexical:
java jlex.Main jex.lex
mv jex.lex.java Scanner.java
puis,
javac -d $OUTPUTDIR *.java
pour compiler les fichiers java. Toutefois, si vous n'utilisez pas
gmake, pensez à créer le répertoire $OUTPUTDIR
avant de lancer votre première compilation java.
Comment tester
Le répertoire examples contient un programme
factorial.jex ne comportant aucune erreur lexicale.
Voici comment l'utiliser pour tester votre analyseur:
gmake run.jex.ScannerTest < examples/factorial.jex
ou, sans utiliser gmake:
java jex.ScannerTest < examples/factorial.jex
Ce programme ne devrait générer aucune erreur, donc aucun message
Illegal character. Bien entendu, une analyse correct de
ce fichier ne sera pas suffisante pour valider votre analyseur. Il
vous est fortement conseillé de vous faire vos propres programmes
de test afin de vérifier que votre analyseur reconnaît
correctement tous les lexèmes. En particulier, faites des tests
pour vérifier que les commentaires et les chaînes de caractères
sont correctement traités.
|