Exercice de révision sur la pile pour le cours IFT1166:
Une des tâches importantes réalisées par un compilateur est l’analyse syntaxique d’un programme. Ceci inclut entre autres, la vérification et la validation des symboles (parenthèses, accolades et Crochets) ouverts et fermés.
Une expression est dite, syntaxiquement bien formée si elle contient autant de symboles ouverts que fermés. Voici un exemple de quelques expressions bien formées et d’autres mal formées:
Expression bien formée Expression mal formée
( aaa+bbb**[ ] ) ( (((bb [ccc )
(ccc ) nnn[ ] {bbb } ( (
{ ( x x x xbb) ( )a } {aaaaabbbbnnn) ( })
Dans cet exercice on vous demande d’écrire un programme qui implante cette tâche de vérification. Le programme demande à l’usager d’entrer une expression et lui retourne un résultat vrai si l’expression est valide (bien formée) ou faux sinon.
Le programme doit absolument utiliser la notion de la pile pour réaliser cette tâche (Utilisez la patron de la pile proposé dans le fichier Pile.cpp), en suivant l’algorithme suivant :
1- Lire un caractère de l’expression
1- Si le caractère est un symbole ouvert on l’empile dans la pile 2- Si le caractère est un symbole fermé alors :
On récupère le symbole dans le sommet de la pile
On dépile le sommet
On compare le symbole fermé courant avec celui récupérer de la pile Si les 2 symboles sont de même types alors on continue à boucler dans l’expression en lisant le prochain caractère, sinon la fonction doit retourner faux comme résultat de validation.
3- A la fin de la lecture de l’expression on vérifie l’état de la pile :
Si la pile est vide alors le résultat est vrai
Sinon le résultat est faux.
IFT 1166 Été 2005 Wissam Hamzeh