L. Nerima Faculté des lettres - Université de Genève - avril 2005 4 - 2
Solution avec une structure de données “pile”
Supposons que nous disposons d’une structure de
données “pile de caractères” avec les opérations
habituelles “initialiser pile”, “empiler”, “dépiler”, “sommet”
et “est vide”: --> l’algorithme devient très simple
Données:
p:pile, c:tableau de N caractères qui contient le texte
Algorithme:
p.InitPile
pour i de 0 à N-1
si (c[i] est une prarenthèse ouvrante) p.empiler(c[i])
sinon si (c[i] est une paranthèse fermante) {
si (p.estVide() )
stop
“erreur: il manque une
parenthèse ouvrante”
si (p.sommet() est du même type que c[i])
p.dépiler
sinon
stop
“erreur: la parenthèse fermante
n’est pas du bon type”
}
si (p.estVide)
affiche
“syntaxe parenthèses OK”
sinon
affiche
“il manque une parenthèse fermante
Remarques: cet algorithme est écrit en pseudo-langage
orienté objet inspiré d’Obéron (et de Java pour les {} ).
Les parties de l’algorithme qui ne posent pas de
problème particulier sont écrites en français.