Interface, exceptions

Exercice 1 - Evaluateur d'expression II (le retour)

Nous avons lors de la dernière séance 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().

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.

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 public Expression analyze(String[] expression) throws SyntaxException.

Exercice 2 - Analyseur préfixe

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

Exercice 3 - Calculette

Écrire une classe Calculator contenant une méthode main qui :

Exercice 4 - Analyseur postfixe

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

Exercice 5 - A la maison : Analyseur postfixe (Suite)

Changer la méthode main pour utiliser un analyseur préfixe ou postfix suivant l'option de la ligne de commande et respectant la syntaxe ci-dessous :

      java Calculator (-prefix|-postfix) expression