Petite calculatrice symbolique

Cet ensemble de classes forme une petite calculatrice symbolique. Cette calculatrice exécute séquentiellement des instructions qui peuvent être des affectations ou des évaluations. Chaque instruction doit être donnée sur une ligne. Les lignes sont soit lues dans un fichier si un nom de fichier est donné sur la ligne de commande soit sur l'entrée standard. Les instructions prennent les formes suivantes :

expression
L'expression est évaluée et le résultat est affiché.
variable = expression
L'expression est évaluée et le résultat est affecté à la variable.
variable := expression
L'expression non évaluée est affectée à la variable.

Les expressions sont construites à partir des constantes flottantes et des variables avec les quatre opérations arithmétiques (+, -, * et /) et les parenthèses ( et ). Un exemple de telle expression est x + 3 * z * (4 - x).

L'évaluation d'une expression se fait dans l'environnement de la calculatrice. Si une variable à évaluer n'est pas définie dans l'environnement, c'est à dire si aucune expression ne lui a été affectée auparavant, une exception est levée.

Voici un petit exemple d'utilisation pour bien saisir la différence entre les deux types d'évaluation.

x := y
        x <- y
x
Erreur : 2 : Variable inconnue : y
y = 1
        y <- 1.0
x
        x = 1.0
y = 2
        y <- 2.0
x
        x = 2.0
x = y
        x <- 2.0
y = 3
        y <- 3.0
x
        x = 2.0

La documentation Javadoc.

L'organisation en classes est la suivante :