Professional Documents
Culture Documents
Un ensemble de r` egles qui donne une enum eration r ecursive des mots du langage.
Langages et Compilation
Grammaires formelles
u: Une grammaire est un quadruplet G = , N, S, P o` est un alphabet de lettres dites terminales N est un alphabet de lettres dites non terminales ou variables S N est la variable de d epart ou axiome P est une famille nie de productions, i.e. de r` egles de d erivation o` u , sont des mots de N et contient au moins une variable. = {a, b}, N = {S, A, B }, S, S AB A aAb S P = ou de fa con concise A A B bBa B B
AB
aAb |
bBa |
D erivation
Soit G = , N, S, P une grammaire. {a, b}, {S, A, B }, S, {S AB, A aAb | , B bBa | } Pour toutes cha nes u, v ( V ) , erive en v et lon note u v , on dit que u se d sil existe une production P telle que u = et v = . aaAbbbBa aaaAbbbbBa aaAbbbBa aaAbbbbBaa
k
Langage engendr e
Pour toute cha ne ( V ) , on note par LG () lensemble des cha nes terminales qui d erivent de : LG () = {u : u} Le langage engendr e par une grammaire G = , N, S, P est lensemble des cha nes terminales qui d erive de laxiome S : L(G) = LG (S ) = {u : S u} G = {a, b}, {S, A, B }, S, {S AB, A aAb | , B bBa | }
On note u v sil existe des cha nes u1 , u2 , , uk1 d enissant une suite de k d erivations u u1 u2 uk1 v . On note u v sil existe un k tel que u v . AB 4 B bbbaaa 3
2 k
LG (B ) = {bn an : n N}
LG (A) = {an bn : n N} A , A aAb ab, A aAb aaAbb aabb, ... L(G) = {an bn+m am : n, m N}
Classication de Chomsky
On d enit di erents types de grammaire suivant la forme des r` egles. de type 0 Toute grammaire
Exemple
Grammaire r eguli` ere qui engendre le langage r egulier (a + b) (aa + abaaa + abab)
de type 1 Les grammaires contextuelles Les r` egles sont de la forme avec || | | ebriques de type 2 Les grammaires hors contexte ou alg Les r` egles sont de la forme A avec A N de type 3 Les grammaires r eguli` eres eaires ` a droite les grammaires lin Les r` egles sont de la forme A uB ou A u avec A, B N et u
lensemble des terminaux = {a, b} lensemble des variables N = {S, T , U } laxiome S les productions P S aS | bS | aT T baU | a U aa | b LG (U ) : aa + b LG (T ) : ba(aa + b) + a
eaires ` a gauche Les grammaires lin Les r` egles sont de la forme A Bu ou A u avec A, B N et u 5
Exemple
Grammaire hors contexte qui engendre les expressions arithm etiques totalement parenth es ees lensemble des terminaux = {+, , , \, (, ), nb} lensemble des variables N = {Exp, Op} laxiome Exp les productions P Exp (Exp Op Exp) | nb Op +|||\ D erivation de (nb (nb nb)) Exp (Exp Op Exp) (nb Op Exp) (nb Op Exp) (nb Exp) (nb (Exp Op Exp)) (nb (nb Op Exp)) (nb (nb Exp)) (nb (nb n)) 7 8
Exemple
Grammaire sensible au contexte qui engendre le langage {an bn cn : n N} lensemble des terminaux = {a, b, c} lensemble des variables N = {S, B } laxiome S les productions P S aBc | aB aaBBc | ab bB bb cB Bc
S aBc abc S aBc aaBBcc aabBcc aabbcc S aBc aaBBcc aaaBBcBcc aaabBcBcc aaabbcBcc aaabbBccc aaabbbccc
Classication de Chomsky
Ici, les deux types de grammaire qui nous int eressent sont : les grammaires r eguli` eres qui caract erisent les langages r eguliers, les grammaires hors contexte ou alg ebriques qui d enissent les langages alg ebriques. Objectif principal : d evelopper les outils algorithmiques qui, etant donn ee une telle grammaire, d eterminent si un mot est engendr e ou non par cette grammaire.
eaire ` a gauche et toutes ses productions sont soit une grammaire lin de la forme Proposition Les langages engendr es par les grammaires r eguli` eres sont exactement les langages r eguliers. Autrement dit, on h erite de tous les outils algorithmiques d evelopp es pour les AF. 9 10
Comment mimer une d erivation par un calcul sur AF ? abcbac L(G) : S abS abcA abcbacA abcbacc ab c bac c S S A A un etat nal Etape pr eliminaire : se ramener ` a une grammaire telle que les les productions soient de la forme lettre terminale. A A aB o` u a est une simple
c c
Y2
b
X
c b
Y1
13
<switch statement> ::= switch ( <expression> ) <switch block> <switch block> ::= <switch block statement groups>? <switch labels>? <switch block statement groups> ::= <switch block statement group> | <switch block statement groups> <switch block statement group> <switch block statement group> ::= <switch labels> <block statements> <switch labels> ::= <switch label> | <switch labels> <switch label> <switch label> ::= case <constant expression> : | default : <while statement> ::= while ( <expression> ) <statement> <while statement no short if> ::= while ( <expression> ) <statement no short if> <do statement> ::= do <statement> while ( <expression> ) ; <for statement> ::= for ( <for init>? ; <expression>? ; <for update>? ) <statement> <for statement no short if> ::= for ( <for init>? ; <expression>? ; <for update>? ) <statement no short if> <for init> ::= <statement expression list> | <local variable declaration> <for update> ::= <statement expression list> <statement expression list> ::= <statement expression> | <statement expression list> , <statement expression> <break statement> ::= break <identifier>? ; <continue statement> ::= continue <identifier>? ; <return statement> ::= return <expression>? ; <throws statement> ::= throw <expression> ; <synchronized statement> ::= synchronized ( <expression> ) <block> <try statement> ::= try <block> <catches> | try <block> <catches>? <finally> <catches> ::= <catch clause> | <catches> <catch clause> <catch clause> ::= catch ( <formal parameter> ) <block> <finally > ::= finally <block>
15
16
Arbre de d erivation
Soit une grammaire G = , N, S, P . erivation ou arbre danalyse ou arbre de syntaxe Un arbre de d pour G est un arbre etiquet e par N {} tel que la racine est etiquet ee par laxiome S les nuds internes sont etiquet es par les variables les feuilles sont etiquet ees par les terminaux si A est l etiquette dun nud interne et x1 , ..., xk sont les egle de G. etiquettes de ses ls alors A x1 xk est une r` La fronti` ere de larbre est le mot form e des feuilles de larbre (lues de gauche a ` droite). Le langage engendr e par G est lensemble des mots u tels quil existe un arbre de d erivation de fronti` ere u. 17 18 A
Arbre de d erivation
Des arbre de d erivation de la grammaire {a, b}, {S, A, B }, S, {S AB, A aAb | , B bBa | } S B A a A a A a fronti` ere : ba b b b S B b B a b B a
b B a
fronti` ere : a3 b5 a2
Arbre de d erivation
Chaque arbre de d erivation peut synth etiser plusieurs d erivations. S A B S AB B bBa ba S AB AbBa bBa ba S AB AbBa Aba ba
Notion dambigu t e
Une grammaire G est ambigu e sil existe un mot w L(G) qui admet plusieurs arbres de d erivation. G = ({a, +, }, {S }, S, {S S + S | S S | a}) est ambigu e : le mot a a + a admet deux arbres danalyse. S S S S S + S a S a S S + S a
b B a
Une d erivation est dite gauche si cest la variable la plus ` a gauche qui est d eriv ee a ` chaque etape. a droite qui est Elle est droite si cest toujours la variable la plus ` d eriv ee. S AB B bBa ba est un d erivation gauche S AB AbBa Aba ba est un d erivation droite
` un arbre danalyse correspond exactement une d A erivation gauche et une d erivation droite. 19 20
S SS SS+S SS+aSa+aaa+a
S S+S S+aSS+aSa+aaa+a
Notion dambigu t e
Tout mot dune grammaire non ambigu e admet exactement - un arbre danalyse, - une d erivation gauche, - une d erivation droite. La grammaire {+, , , \, (, ), nb}, {Exp, Op}, Exp, Exp (Exp Op Exp) | nb, Op + | | | \} qui engendre les expressions totalement parenth es ee, nest pas ambigu e.
` partir de lexpression A (nb (nb nb)), on peut reconstruire lunique arbre associ e Exp ( Exp nb Exp Op ) Exp
Notion dambigu t e
G = {a, +, }, {S, T, F }, S, {S S + T | T, T T F | F, F a} engendre le m eme langage que la grammaire ambigu e G = ({a, +, }, {S }, S, {S S + S | S S | a}), mais nest pas ambigu e. S S T T F a F a + T F a
21
22
Notion dambigu t e
Un langage est inh eremment ambigu lorsque toute grammaire qui lengendre est ambigu e. L = {a b c : n = m ou m = p} est inh eremment ambigu.
n m p
Grammaire r eduite
Eliminer les variables inutiles Une grammaire G = , N, S, P est dite r eduite si toute variable est productive : chaque variable A engendre au moins un mot terminal, LG (A) = toute variable est accessible ` a partir de laxiome : pour chaque variable A, il existe u, v (N ) tels que S uAv Chaque variable dune grammaire r eduite appara t dans au moins un arbre de d erivation. Fait. Pour toute grammaire G, on peut construire de mani` ere eective une grammaire r eduite equivalente.
Quelque soit la grammaire qui engendre L, on peut montrer que le mot an bn cn pour n assez grand admet toujours deux arbres de d erivation
Le langage engendr e par les expressions arithm etiques sur lalphabet {+, , a} nest pas inh eremment ambigu. Modier une grammaire pour la rendre non ambigu e nest pas toujours possible.
23
24
Grammaire r eduite
Lalgorithme se faite en deux etapes. Etape 1. Suppression des variables improductives On construit par r ecurrence sur i, lensemble Prodi des variables A qui sont racines dun arbre de d erivation de hauteur i. Prod1 = {A N : A u P et u } Prodi+1 = {A N : A P et (Prodi ) } Arr et lorsque Prodi+1 = Prodi (au bout dau plus |N | etapes)
S T G = {a, b}, {S, T, U, V }, S, U V aT aU aU aT | bT U | abT S | U V | bT | a | bU | bS | a
Grammaire r eduite
Etape 2. Suppression des variables inaccessibles On construit par r ecurrence sur i, lensemble Acci des variables A qui sont nuds dun arbre de d erivation de racine S et de hauteur i. Acc0 = {S } Acci+1 = {A N : B A P et B Acci } Arr et lorsque Acci+1 = Acci (au bout dau plus |N | etapes)
S G1 = {a, b}, {S, T, V }, S, T V aT | abT S bT | a aT | bS | a
25
26
Usuellement, on eectue les additions de la gauche vers la droite (associativit e gauche). Ceci correspond au premier arbre.
E E E + E E + E nb nb nb + E nb
E + E E + E nb nb nb nb
E + E E nb E + E E E + F E + F nb F nb nb + F nb
E + E nb nb
{nb + nb} + nb Ambigu t e sur la priorit e des op erations : nb + nb nb admet deux arbres de d erivation 29
nb + {nb + nb}
E E nb nb 30
E E nb nb
{nb + nb} nb
nb + {nb nb}
E E nb nb
T F F nb nb