Exercices 4
Les exercices suivants vous permettent de répéter quelques
thèmes principaux du concept des visiteurs. Ils sont
particulièrement recommandés aux étudiants ne
travaillant pas sur le projet. Comme toujours, le travail en groupes de
deux à trois personnes est conseillé.
Dans Token.java,
Tree.java,
Analyzer.java et
AnalyzerTest.java
vous trouvez les cadres de l'exercice.
Créez un répertoire sources, où vous mettez les
sources, ainsi qu'un répertoire classes. Vous pouvez
déjà compiler Token.java en utilisant
javac -d classes sources/Token.java.
Il est recommandé de suivre la suite d'exercices presentée ci-dessous.
Exercice 11
Le code dans Tree.java est à
compléter.
- Constructeurs:
Ajoutez des méthodes de constructeur à chacune des
deux sous-classes (voir exercice 4).
- Visiteurs:
Spécifiez les traîtements des deux cas dans l'interface.
- application:
Réalisez les méthodes d'application dans les deux sous-classes.
Compilez la classe complétée en utilisant
javac -d classes -classpath classes sources/Tree.java.
Exercice 12
Ensuite le code dans Analyzer.java est à
compléter.
- visit:
La méthode crée un analyseur, l'applique sur
l'arbre et retourne le résultat stocké dans le
champ result du dernier.
- caseNum:
Déjà réalisé.
- caseOp:
La méthode rend visite aux deux sous-arbres
et détermine le résultat final selon le contenu
du champs tree.op (utilisez switch, voir exercice 4).
Adaptez les noms de caseNum et caseOp selon votre choix
dans l'interface du visiteur.
Compilez la classe complétée en utilisant
javac -d classes -classpath classes sources/Analyzer.java.
Exercice 13
Le fichier AnalyzerTest.java présente
quelques exemples de test. Compilez-le en utilisant
javac -d classes -classpath classes sources/AnalyzerTest.java et
essayez-le avec java -classpath classes AnalyzerTest.
Complétez les définitions d'arbre.
Exercice 14
Décrivez les chaîne d'appels sur les exemples t1 et
t2 dans Analyzer.java. Comment
pouvez-vous les visualiser en ajoutant des print-commandes dans
Tree.java et
Analyzer.java?
Remarque
L'exercice sera continué par la réalisation d'un analyseur
syntaxique.
Christine Röckl
Last modified: Thu May 16 17:03:49 DST 2002