informatique (MP2I/MPI) · Chapitre 30 · Exercice de TD
Quel langage cette grammaire engendre-t-elle ?
Grammaires non contextuelles · niveau 2
É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é.