Quel langage cette grammaire engendre-t-elle ?
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 30 — Grammaires non contextuelles
Énoncé
Toujours avec et :
- Lister les mots engendrés de longueur au plus .
- Montrer que la longueur de tout mot engendré est congrue à modulo .
- Décrire le langage en français.
Corrigé
1. Une énumération exhaustive de tous les mots sur jusqu'à la longueur , chacun soumis à un analyseur, donne quatre mots :
Aucun mot de longueur , , , , .
2. Par induction mutuelle sur les dérivations. Notons la longueur.
- Si par la règle , alors .
- Si par , alors avec et .
- Si , alors avec , donc .
Donc . Le pas d'induction est le milieu : un bloc ajoute toujours un multiple de .
3. Le langage est celui des textes balisés : une suite de blocs, chaque bloc étant un contenu entre une balise ouvrante a et sa fermante b, le tout terminé par un c — et le contenu d'un bloc est lui-même un texte de ce genre. C'est exactement la structure d'un document XML ou html, avec c pour « fin de la liste » et a…b pour une paire de balises.
Pourquoi cette grammaire est l'exemple du programme. Elle exhibe l'imbrication non bornée — la seule chose qu'un automate fini ne sait pas faire — sur trois lettres et deux règles. Et l'intersection avec donne à un c près : c'est le langage du chapitre chap:automates, habillé.
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.