Compilation 2004/2005 |
|||||
French only |
|||||
|
Partie 1: Analyseur lexical
A présenter lors de la séance du 12 novembre 2004. Le but de cette partie est d'écrire un analyseur lexical pour le langage Eins. Cet analyseur doit pouvoir déterminer si un fichier donné est conforme à la grammaire lexicale de Eins. Si c'est le cas, il doit en outre retourner la suite de lexèmes constituant le fichier. Sinon, il doit signaler une ou éventuellement plusieurs erreurs. Pour réaliser votre analyseur lexical, nous vous fournissons un certain nombre de fichiers (voir ci-dessous). Votre travail est de compléter deux de ces fichiers.
L'interface
Lorsque vous avez défini toutes les classes de lexèmes, vous
pouvez compléter la méthode
Après cela, il ne vous restera plus qu'à compléter les méthodes
Pour détecter la fin du fichier source, on utilise le caractère
spécial
input = { inputelement } EOF_CH.
On modifie également la grammaire syntaxique comme suit :
Program = { Declaration } Expression EOF_CH.
Le caractère
Le caractère Idéalement, un compilateur devrait toujours signaler autant d'erreurs que possible et non s'arrêter systématiquement après la première d'entre elles. Toutefois, pour cette première partie, nous ne vous forçons pas à implanter cela. Vous pouvez donc vous contenter de signaler le première erreur rencontrée et ensuite stopper le compilateur.
Pour signaler des erreurs utilisez les méthodes
Les méthodes Le programme de test ScannerTest.java vous permet de tester votre analyseur lexical. Il lit un fichier source et imprime la séquence de lexèmes reconnue par l'analyseur. Le fichier source est spécifié comme argument fourni au programme. Pour lancer le programme à partir du répertoire racine de votre projet, utilisez la commande suivante :
java -classpath ./classes einsc.ScannerTest fichier-source
Vous trouverez ci-dessous les fichiers dont vous aurez besoin
pour cette première partie. Il est fortement conseillé de créer
un nouveau répertoire dédié à ce projet. Placez-y le fichier
GROUP_NUMBER = 05
Maintenant vous pouvez redéfinir les permissions du répertoire
de votre projet de telle façon que seul vous et les membres de
votre groupe puissent accéder aux fichiers qu'il contient. Vous
pouvez faire cela grâce au Makefile avec la
commande qui suit :
gmake fix-permissions
Afin de garantir que chaque nouveau fichier que vous créez dans
le repértoire du projet soit accessible par tous les membres du
groupe, il vous faut exécutez la commande suivante :
chmod g+s <projectdir>
Chaque fois que vous commencer à travailler sur le projet, il
est recommandé de démarrer un nouveau terminal et d'exécuter la
commande umask 007. Les éditeurs et
compilateurs devraient ensuite être lancés à partir de ce
terminal. Ceci vous garantit que tous les fichiers que vous
créez ne sont accessibles que par les membres de votre groupe et
personne d'autre.
Si vous ne voulez pas utiliser le makefile pour définir les
permissions, vous pouvez directement utiliser les commandes unix
correspondantes. Le nom de votre groupe unix est
Makefile : L'utilisation de ce
Position.java : Cette classe fournit des méthodes pour encoder la position dans un fichier source (ligne & colonne) à l'aide d'un seul entier. Report.java : Cette classes fournit des services pour signaler des erreurs. Tokens-partial.java (à renommer en Tokens.java) : Cette interface définit toutes les classes de lexèmes. Pour l'instant elle n'en contient que quelques unes. A vous de la compléter. Scanner-partial.java (à renommer en Scanner.java) : Cette classe implante l'analyseur lexical. Une grande partie du code manque. A vous de l'écrire. ScannerTest.java : Cette classe permet de tester votre analyseur lexical.
Attention, ce
|
|