L’objectif de ce TP est d’intégrer un évaluateur d’expressions arithmétiques dans un interpréteur en langage C, capable de gérer les expressions en notations infixée et postfixée. Il s’agit de développer les structures de données et les algorithmes nécessaires pour analyser (parser) et évaluer ces expressions, en s’assurant que l’évaluateur s’intègre correctement dans l’interpréteur existant.
Parser une expression en notation postfixée : Implémenter un algorithme pour convertir une expression arithmétique en notation infixée vers sa forme postfixée (notation polonaise inverse).
Évaluer l’expression postfixée : Utiliser une pile (stack) pour évaluer correctement une expression en notation postfixée et produire le résultat.
Intégrer l’évaluateur dans l’interpréteur existant : Assurer que l’évaluateur s’intègre de manière fluide dans l’interpréteur déjà développé, permettant de traiter et d’évaluer les expressions arithmétiques saisies.
Objectif :
Écrire une fonction qui prend en entrée une chaîne de caractères représentant une expression arithmétique en notation infixée (par exemple, “3 + 4 * 5”) et renvoie une chaîne de caractères représentant la même expression en notation postfixée (par exemple, “3 4 5 * +”).
Initialiser la pile d’opérateurs.
Parcourir la chaîne de caractères en entrée de gauche à droite.
Lorsqu’un opérande (un nombre) est rencontré, l’ajouter directement à la chaîne de caractères de sortie.
Répéter les étapes 3 et 4 jusqu’à la fin de la chaîne de caractères en entrée.
Objectif :
Écrire une fonction (ou modifiez la fonction de l’exercice 4.1) qui prend en entrée une chaîne de caractères représentant une expression arithmétique en notation infixée incluant des parenthèses (par exemple, “(3 + 4) * 5”) et qui renvoie une chaîne de caractères représentant la même expression en notation postfixée (par exemple, “3 4 + 5 *”). L’objectif est d’étendre le parser pour gérer les priorités des opérations en utilisant les parenthèses.
Initialiser la pile d’opérateurs.
Parcourir la chaîne de caractères en entrée de gauche à droite.
(
est rencontrée :
)
est rencontrée :
(
soit rencontrée (la supprimer de la pile).Objectif :
Écrire une fonction qui prend en entrée une chaîne de caractères représentant une expression arithmétique en notation postfixée (par exemple, “3 4 5 * +”) et renvoie la valeur de l’expression.
Initialiser la pile d’opérandes.
Parcourir la chaîne de caractères en entrée de gauche à droite.
Lorsqu’un opérande est rencontré, le pousser sur la pile.
Répéter les étapes 3 et 4 jusqu’à la fin de la chaîne de caractères en entrée.
Objectif :
Intégrer les fonctions de parsing et d’évaluation des expressions arithmétiques dans l’interpréteur existant afin de permettre l’exécution de commandes comportant des expressions arithmétiques.
Ajouter les fonctions de parsing et d’évaluation à l’interpréteur.
> 3 + 4 * 5
23