Interface, exceptions

Exercice 1 - Evaluateur d'expression

Nous avons lors d'une séance précédente représenté les expressions arithmétiques par leur arbre syntaxique. Nous avons pour ça défini des classes dont les instances représentent des opérateurs ou des constantes, qui implantent toutes une interface Expr, qui déclare une méthode public double eval().
Utiliser la fonctionnalité import, pas de copier/coller.

Nous allons maintenant créer des analyseurs syntaxiques dont le rôle est de calculer un tel arbre à partir d'une chaîne de caractères.
Vous documenterez toutes les classes, interfaces et méthodes que vous écrirez en utilisant javadoc.
Toutes les classes de l'analyseur (et ses dépendances) devront être créées dans le paquetage fr.umlv.analyzer.

En fait, on souhaite créer deux analyseurs syntaxiques différents, un analyseur préfixe et un analyseur postfixe.
Nous allons donc dans un premier temps essayer de définir un interface (un type) permettant de manipuler indifféremment un analyseur préfixe ou un analyseur postfixe.

  1. Écrire une classe d'exception SyntaxException qui représente les erreurs syntaxique qui pourront être éventuellement détectée par les analyseurs syntaxiques que nous allons écrire.
  2. Écrire une interface SyntacticAnalyzer représentant le type des analyseurs syntaxiques. Cette interface doit déclarer une méthode analyze prenant en paramètre un itérateur sur chaine (Iterator<String>) et levant une exception SyntaxException s'il y a une erreur durant l'analyse.

Exercice 2 - Analyseur préfixe

On cherche à construire un évaluateur préfixe respectant l'interface. SyntacticAnalyzer.

Exercice 3 - Calculette

Modifier la classe Evaluator pour que si des arguments sur la ligne de commandes sont présents alors l'analyse s'effectue sur la ligne de commande sinon que l'analyse s'effectue sur l'entrée standard.

Exercice 4 - Analyseur postfixe

On cherche maintenant à construire l'évaluateur postfixe respectant lui-aussi l'interface. SyntacticAnalyzer.