informatique (MP2I/MPI) · Chapitre 30 · Application directe du cours
Problème — La grammaire de balisage du programme, de bout en bout
Grammaires non contextuelles · niveau 3 (difficile)
Énoncé
On étudie complètement , .
- Démontrer que la grammaire n'est pas ambiguë.
- Écrire un analyseur qui construit l'arbre, et le vérifier par un aller-retour.
- Combien la grammaire engendre-t-elle de mots de longueur ?
Corrigé de la question 1
1. La non-ambiguïté. Introduisons la hauteur .
Lemme. Tout vérifie et tout préfixe de vérifie . Tout vérifie , et tout préfixe propre et non vide de vérifie .
Preuve du lemme, par induction mutuelle. Pour : hauteur nulle partout. Pour : la concaténation de deux mots de hauteur nulle, dont les préfixes restent positifs. Pour : le a initial monte à , les préfixes de y ajoutent une quantité positive, et seul le b final redescend à .
La non-ambiguïté suit. Soit , non vide. Sa première lettre décide la règle : si c'est c, la seule règle possible est et ; si c'est a, la seule règle possible est . Il reste à montrer que la coupure entre et est unique : d'après le lemme, la partie est le préfixe de qui ramène à zéro pour la première fois, et cette position est déterminée par seul. Chaque nœud de l'arbre étant ainsi forcé, l'arbre est unique.
Le décompte machine confirme : les mots de longueur au plus ont chacun exactement un arbre d'analyse.
Question 2 : comment l'IA t'aide
2. Écrire un analyseur qui construit l'arbre, et le vérifier par un aller-retour.
Élève
Je veux écrire une fonction pour et une pour , mutuellement récursives. Mais dans celle de , comment savoir s'il faut appliquer ou sans essayer les deux et revenir en arrière ?
IA
Repense à la démonstration de non-ambiguïté de la question 1 : qu'est-ce qui détermine, en tête d'un mot de , la règle appliquée ?
Élève
La première lettre suffit à choisir la règle. Je lis donc un caractère d'avance. Mais je ne sais pas comment garantir que la récursion termine.
IA
Entre deux appels successifs de la fonction de , que devient toujours la position de lecture ? Et pour l'aller-retour, quelle fonction écrirais-tu pour confronter l'arbre construit au mot de départ ?
L'IA ne donne pas la réponse : elle pose la question qui fait avancer. À toi de continuer.
Continue cet exercice avec l'IA
Reprends la question 2 là où le dialogue s'arrête, puis la suite de l'exercice.
Continuer avec l'IA — gratuit, sans inscriptionGratuit, sans inscription. L'IA te guide pas à pas, sans te donner la réponse.