Vous êtes sur la page 1sur 5

Th eorie des langages et compilation

Cyril Banderier Universit e de Paris XIII Contact : Cyril.Banderier@inria.fr Mars 2000


Voici un rapide panorama de choses que vous devez conna tre pour lexamen et dautres dont vous nentendrez peut- etre plus jamais parler.

Th eorie des langages

La structure de base de la TL sont les mots, on peut en donner une d enition math ematique D enition 1 (Mono de) Un mono de est un ensemble avec une loi interne associative (not ee .) et un el ement neutre not e . D enition 2 (Libert e) Le mono de est dit libre sil poss` ede une base (un sousensemble) dont les el ements sont ind ependants (cest-` a-dire quil ny a pas de relations entre les el ements de la base ; n eanmoins, doter une telle base de relations nest pas stupide et donne en fait lieu a ` la riche th eorie des groupes de repr esentation). Moralement, on a donc existence et unicit e dune factorisation sur un mono de libre. D enition 3 (Langage, TP1) En TL, la base est appel ee alphabet, les el ements de cette base sont appel es lettres, la loi du mono de est appel ee concat enation (du latin catena=cha ne). Une concat enation de lettres forme un mot, l el ement neutre est ainsi logiquement d enomm e le mot vide. Un ensemble de mots est appel e langage. D enition 4 (Rationnel) On appelle Rat la plus petite classe des langages stable par union, produit, etoile et qui contient les lettres de lalphabet. Un langage de cette classe est appel e rationnel. Un langage rationnel est associ e` a une expression rationnelle (du type b(a + b) ab). D enition 5 (Reconnaissable) On appelle Rec la classe des langages reconnus par un automate. Un langage de cette classe est appel e reconnaissaible. 1

Il existe par ailleurs une th eorie des automates qui reconnaissent des mots innis (une d enition due a ` B uchi dit quil sut, pour quun mot soit accept e, quil passe une innit e de fois dans des etats terminaux). Th eor` eme 6 (Kleene 1957) Rat=Rec, i.e. on a equivalence entre un langage reconnu par un automate et un langage correspondant ` a une expression rationnelle. D enition 7 (Grammaire alg ebrique) On appelle Alg la classe des langages engendr es par une grammaire. Un langage de cette classe est appel e alg ebrique. Th eor` eme 8 (Alg=Pile) La classe des langages engendr es par une grammaire correspond a ` la classe des langages reconnus par un automate ` a pile. La classe des langages rationnels est incluse dans la classe des langages alg ebriques, comme le montre la proposition suivante. Proposition 9 (Grammaire r eguli` ere, ex.1 TD2) Reg=Rat, i.e. la classe des langages engendr es par une grammaire r eguli` ere (i.e. dont les membres droits sont du type aB ou b) correspond aux langages rationnels. La TL nest pas purement alg ebrique, il existe un lien avec lanalyse via erie ce qui suit. Soit an le nombre de mots de L de longueur n, on appelle s g en eratrice de L la fonction F (z ) = n0 an z n Th eor` eme 10 (Chomsky et Sch utzenberger 1963) Un langage rationnel a une s erie g en eratrice F rationnelle (i.e. F =un quotient de deux polyn omes). Un langage alg ebrique a une s erie g en eratrice F alg ebrique (i.e. P Q[z ][F ],avec P (F ) = 0). Exemple 11 (Dyck et Lukasiewicz) Le langage de Dyck S (S )S | , qui correspond aux mots bien parenth es es, a une s erie g en eratrice F qui v erie F (z ) = zF (z )zF (z ) + 1, donc z 2 F (z ) F (z ) + 1 = 0 et ainsi 1 1 4z 2 F (z ) = = 1 + z 2 + 2z 4 + 5z 6 + 14z 8 + O(z 10 ). 2z 2 Le langage de Lukasiewicz (cf notation polonaise des calculatrices Hewlett Packard) S aSS |b a quant ` a lui la s erie g en eratrice alg ebrique 1 1 4z 2 = z + z 3 + 2z 5 + 5z 7 + 14z 9 + O(z 11 ). F (z ) = 2z
n (2n ) Dans les deux cas, on reconna t la suite des nombres de Catalan n+1 . Une suite quelconque de tirage a ` pile ou face correspond a ` lexpression ra1 ` la s erie g en eratrice rationnelle 1 tionnelle (P + F ) et donc a 2z . Remarquez que dans tous les cas, il y a un lien entre le rayon de convergence de F et le nombre de mots de grande longueur (an n ).

Th eor` eme 12 (Propri et es de stabilit e) Les langages rationnels et alg ebriques sont stables par union, produit, etoile, miroir, homomorphisme, homomorphisme inverse, substitution rationnelle, r esiduel... Les langages rationnels sont egalement clos par passage au compl ementaire et intersection. On peut toutefois donner lexemple de stabilit es bien moins triviales : L etant un langage rationnel sur un alphabet de cardinalit e quelconque, on peut montrer avec la notion sophistiqu ee de transduction rationnelle (hors pro gramme) que les langages suivants sont rationnels L = {w |ww L}, et 1 2 L = {u |v avec uv L et |u| = |v |}. En dehors des propri etes de stabilit e (on dit aussi cl oture ou fermeture), un moyen courant et pratique pour montrer quun langage (n) est (pas) rationnel (respectivement alg ebrique) sont les lemmes dit erations. Proposition 13 (Lemme dit eration pour les rationnels, ex.2 TD2) Si L est rationnel alors il existe un certaine longueur k ` a partir de laquelle pour tout mot w de longueur k qui admet une d ecomposition w = u (avec , u et non vides), on a n, un L. Connu aussi sous le nom de lemme de l etoile (pumping lemma). Application : {an bn } nest pas rationnel. Proposition 14 (Lemme dit eration pour les alg ebriques) Si L est alg ebrique, alors il existe une certaine longueur k ` a partir de laquelle pour tout mot w de longueur k qui admet une d ecomposition w = uv (avec soit u soit v non vide et soit soit non vide), on a n, un v n L. Applications : {an bn cn } nest pas alg ebrique ; Alg nest pas stable par intersection et compl ementaire. D enition 15 (Ambig uit e, TD1) Si dans une grammaire, il existe un mot qui peut etre obtenu de deux fa cons di erentes ` a partir de laxiome (cest-` a-dire plus rigoureusement si ce mot poss` ede plusieurs arbres de d erivation), on dit que la grammaire est ambig ue. Il existe des langages alg ebriques dont toutes les grammaires qui les engendrent sont ambig ues ; un exemple de langage ainsi inh eremment ambigu est donn e par {an bm cp avec n = m ou m = p}. D enition 16 (Compl etude, TD3) Un automate est dit complet si chacun de ses etats poss ede une transition etiquet ee par chacune des lettres de lalphabet. Quitte a ` rajouter un etat puits, tout automate peut etre rendu complet. D enition 17 (D eterminisation, TD3) Un automate est dit d eterministe si on na jamais de choix, dh esitation dans les transitions. Plus formellement, on a un seul etat initial puis, pour chaque etat, pas plus dune transition par lettre. Tout automate peut etre rendu d eterministe. D enition 18 (Minimisation) Un automate est dit minimal sil ny a pas dautomate avec moins d etats qui engendre le m eme langage. Tout automate peut etre minimis e. Tout langage rationnel admet un unique automate minimal. D enition 19 (R ecursivement enum erable) Les grammaires contextuelles (i.e. dont les membres gauches des productions peuvent contenir des terminaux et des non-terminaux) engendre une classe de langages, appel es r ecursivement enum erables. Ces derniers correspondent aux machines de Turing. 3

Conjecture 20 (Th` ese de Church) On conjecture que tout ce que le cerveau humain peut calculer est eectivement calculable par une machine de Turing. Tout langage humain est ainsi r ecursivement enum erable.

Compilation
programme source analyse lexicale (scanner) analyse syntaxique (parser) analyse s emantique g en eration du code interm ediaire optimisation du code g en eration de code programme ex ecutable Lex Yacc

La compilation dun programme est la succession des etapes suivantes :

tpc

Loptimisation de code consiste essentiellement ` a compacter larbre de d erivation (on le transforme en DAG, directed acyclic graph, graphe orient e sans cycle) an de ne pas refaire deux fois un m eme calcul. Notez que le programme ex ecutable d epend profond ement de la machine (architecture PC/Mac/Alpha...) et de son syst` eme dexploitation (Dos/Windows/Unix/Linux) alors que le programme source tend vers une certaine universalit e. Lanalyse lexicale lit les lettres du programme source une ` a une et reconna t des mots-clefs ou des nombres (lex` emes ou token en anglais). On a alors traduit le programme source en un nouveau mot u (sur lalphabet des lex` emes). Lanalyse syntaxique (qui pr esuppose que lon sest x e une grammaire nonambig ue) essaie alors de trouver la d erivation de laxiome en u. Lid ee de base consiste ` a promener une fen etre de longueur k sur le mot u et den d eduire quelle suite de r` egles de r ecritures ont et e employ ees pour produire ce mot. Il y a deux strat egies. D enition 21 (analyse montante) On part de u et on essaie datteindre laxiome. Exemple : analyse LR(k ). La suite des r eductions, prise a ` lenvers, donne la suite des r` egles ` a appliquer pour avoir une d erivation droite de laxiome en u. D enition 22 (analyse descendante) On part de laxiome et on essaie datteindre u. Exemple : analyse LL(k ). La suite des r` egles donne une d erivation gauche de laxiome en u. 4

D enition 23 (Tables danalyse, TD4) Pour nous aider dans cette t ache, il existe des tables danalyse. Elles se construisent en calculant les Follow(k ), First(k )... Il existe de nombreuses analyses : LL(k ), LR(k ), SLR... Signalons que Yacc (construit) et utilise une table LALR(1). Voir le TD4 pour une analyse LR(1). Quand on compile un programme, on est amen e` a sauvegarder les di erentes valeurs/types des variables, tout ceci se fait via une pile (voir le TD5 pour la gestion de la pile). On peut ainsi facilement faire les calculs associ es ` a larbre d evaluation li e` a larbre de d erivation que vient de trouver lanalyse syntaxique (les $$ := $1 + $3 de Yacc). Remarque 24 (Puissance/pile) Quand on na pas de pile, on a la puissance des langages rationnels ; quand on a une pile ( un compteur) on a la puissance des langages alg ebriques ; quand on a plusieurs piles, on a la puissance dune machine de Turing.

Bibliographie

Puisque vous rechignez a ` lire des livres/articles en anglais, je puis vous conseiller, en plus du cours en amphi et des TD/TP, les ouvrages suivants : Compilation. Cours de licence de Dominique Perrin. Jussieu, 1986-1987. Th eorie des langages et des automates. J.-M. Autebert. Masson, 1994. Le petit manuel sur Lex et Yacc qui vous a et e distribu e.

Examen

Jesp` ere que vous aurez un aper cu plus clair de la th eorie des langages et de la compilation avec ces quelques pages. Apr` es avoir lu ces quelques pages, assurezvous que vous ma trisez les techniques de bases (manipulation dexpressions rationnelles, d eterminisation dun automate, utilisation dune table LR(1), trouver une d erivation dun mot pour une grammaire donn ee) et pouvez interpr eter ce que fait un .l et un .y (e.g. exprlex.l et expr.y). Nota bene : ceci peut ne vous aider en rien a lexamen, ce nest pas moi qui fais le sujet ! Bonnes r evisions ! :-)

Vous aimerez peut-être aussi