Adloun

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 inscription

Gratuit, sans inscription. L'IA te guide pas à pas, sans te donner la réponse.

Le cours du chapitre · Tous les exercices du chapitre

Continuer avec l'IA, gratuit →