Par Richard A. Sevenich rsevenic@penguin.sirti.org
Ceci est le deuxième article d'une série dont le premier est apparu dans l'édition d'avril 1999 de la Linux Gazette (numéro 39). L'exemple traditionnel, la calculette, est fourni dans la troisième partie de cette série, laquelle paraît également dans ce numéro.
Les logiciels JFlex et CUP sont livrés avec des instructions d'installation. Celles-ci sont détaillées et bien écrites. Néanmoins ce document a été écrit pour donner un scénario d'installation très spécifique. D'après l'expérience de l'auteur, cette spécificité peut être utile pour certains nouveaux utilisateurs qui trouvent que la généralité et la flexibilité du manuel d'origine rendent les choses trop compliquées. D'un autre côté, cette spécifité supprime toute flexibilité.
Ces instructions sont prévues pour une machine Linux, avec un shell bash par défaut, ainsi qu'un shell tcsh installé, mais n'étant pas utilisé par défaut. On considère que l'utilisateur dispose d'une version du jdk (Java Development Kit), ou d'un équivalent. Dans le cas contraire, vous pouvez le trouver sur http://www.blackdown.org/. Sur le système utilisé par l'auteur, l'archive tar compressée nommée jdk1.1.5-v5-glibc.tar.gz chargée sur blackdown a été installée dans /usr/lib.
L'auteur apprécierait toute correction et toute suggestion constructive. Vous pouvez le contacter à rsevenich@ewu.edu.
Notez que les choix spécifiques faits dans cette section sont arbitraires. Pour les débutants, nous considérons que vous commencez dans votre répertoire privé, disons, /home/dupont. Tous les chemins seront relatifs à cette position dans la hiérarchie des fichiers. Créez les nouveaux répertoires comme suit :
mkdir javatools
mkdir javatools/CUP
Revoyez ensuite vos fichiers .bash_profile et .bashrc pour fixer les variables CLASSPATH et autres nécessaires à java. Voici quelques lignes d'exemple :
JAVB=/usr/lib/jdk1.1
JAVT=/home/dupont/javatools
CLASSPATH=./:$JAVB/lib/classes.zip:$JAVT/JFlex/lib/JFlex.jar:$JAVT/CUP
PATH=$PATH:$JAVB/bin:$JAVT/JFlex/bin
export PATH CLASSPATH
Note : le répertoire /usr/lib/jdk1.1 désigne l'endroit où les fichiers java ont été décompressés. Dans le cas de l'auteur, ceci était un lien symbolique vers /usr/lib/jdk1.1.5v5-980311/.
Pour que ces changements soient effectifs, vous devez redémarrer votre shell.
JFlex est disponible sur
http://www.informatik.tu-muenchen.de/~kleing/jflex/index.html#Download
au format tar.gz
. Au moment de l'écriture de cet article, le nom
du fichier était jflex-1.2.tar.gz
. Cette archive contient un
manuel complet avec ses propres instructions d'installation.
tar xvfz jflex-1.2.tar.gz
Ceci devrait créer un répertoire JFlex
avec la hiérarchie
associée. Il devrait contenir tout ce qui est nécessaire, y compris la
documentation dans le sous-répertoire doc
. Le manuel est
compréhensible et indique comment JFlex peut être utilisé pour produire
des analyseurs lexicaux autonomes (comme dans l'exemple 2.3, ci-dessous)
ou des analyseurs lexicaux à utiliser avec des analyseurs produits par
d'autres utilitaires, comme CUP. Dans le répertoire JFlex/bin
vous trouverez le script jflex
qui doit être modifié comme
suit :
JFLEX_HOME=/home/jsmith/javatools/JFlex
JAVA_HOME=/usr/lib/jdk1.1
javatools/JFlex/examples/standalone/
Hello someone !
This is a sample input file for the
standalone example scanner.
Have a nice day !
CUP est disponible sur http://www.cs.princeton.edu/~appel/modern/java/. Vous y trouverez le code source nécessaire et un manuel de l'utilisateur. Le manuel peut être récupéré au format html pour en faire un manuel en ligne ou sous une forme imprimable (postscript). La section suivante traitera de l'installation du code source.
Note : ce site contient également une alternative à JFlex, nommée JLex.
javatools/CUP/
./INSTALL
.
Notez que ce fichier utilise csh ou son équivalent tcsh, celui-ci
doit donc être disponible.
Vous devriez obtenir un message du type "Install and test was successful" [l'installtion et le test se sont correctement déroulés] si tout s'est bien passé.
Les manuels fournis avec JFlex et CUP fournissent suffisamment d'informations pour que les utilisateurs puissent travailler.
Publié dans le numéro 41 de la Linux Gazette.
Traduction française Arnaud Launay.