Adloun

Le sinon pendant, et sa réparation

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 30 — Grammaires non contextuelles

Énoncé

On code si par s, sinon par e, l'instruction élémentaire par a, et l'on omet la condition :

Corrigé

1. Le plus court mot ambigu est ssaea, soit si si a sinon a. Il a exactement deux arbres :

Les deux lectures ne diffèrent pas seulement sur le papier : dans le premier cas, l'instruction du sinon s'exécute quand la première condition est vraie et la seconde fausse ; dans le second, quand la première est fausse. Un décompte par programmation dynamique donne arbres pour ssaea, pour sssaeaea — le nombre croît avec l'imbrication.

2. La réparation. On distingue les instructions appariées — dont tout si a son sinon — des autres :

La clé est la règle : entre un si et son sinon, on n'autorise qu'une instruction appariée. Un sinon ne peut donc jamais « sauter » par-dessus un si ouvert : il se rattache forcément au plus proche.

Vérifications. Les deux grammaires engendrent le même langage : les mots de longueur au plus coïncident. La seconde n'est ambiguë sur aucun mot de longueur au plus , et ssaea n'y a plus qu'un arbre.

Ce que font les vrais langages. Trois attitudes, et toutes se rencontrent :

Le troisième est le seul où l'on n'a rien à retenir.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.