|
Exercice n° 1 : Les Expressions numériques
(version impérative)
Syntaxe abstraite des expressions entières :
1. catégories syntaxiques :
e,e1,e2Exp
o {+ | - | * | /}
n Entier
2. définitions :
e ::= n | e1 o e2
|
les catégories syntaxiques correspondent aux différents
types d'objets utilisés (Classes).
donc 3 classes à définir : Expression , Operateur
, Entier
|
Les définitions correspondent, dans la version impérative,
à la structure d'une expression.
|
|
Règles d'inférences de la sémantique
d'évaluation : C'est une spécification de la méthode
'int evaluation()' de la classe
Expression
CR : |
|
n Entier |
|
n =v=> n |
|
|
e1 =v=> n1 e2 =v=> n2 |
|
Op + : |
|
n = n1 + n2 |
|
e1 + e2 =v=> n |
|
|
e1 =v=> n1 e2 =v=> n2
|
|
Op - : |
|
n = n1 - n2 |
|
e1 - e2 =v=> n |
|
|
e1 =v=> n1 e2 =v=> n2 |
|
Op * : |
|
n = n1 * n2 |
|
e1 * e2 =v=> n |
|
|
e1 =v=> n1 e2 =v=> n2 |
|
Op / : |
|
n = n1 / n2 |
|
e1 / e2 =v=> n |
|
QUESTION 1 : A partir de cette sémantique donner les
schémas UML des classes
Expression ,
Operateur ,
Entier
QUESTION 2 : Implanter ces trois classes en Java.
Remarque : Attention aux constructeurs...
QUESTION 3 : Construire un programme de
test de l'application ci dessus qui
évalue l'expression numérique 1+2*5-3.
/* une idée...
|