You are on page 1of 8

La probl

ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Front-end dun compilateur


Analyse semantique, grammaires attribuees
partie avant (analyse)

Mirabelle Nebut
Bureau 332 - M3
mirabelle.nebut at lifl.fr

texte
source

analyseur
lexical

analyseur
syntaxique

analyse
smantique

rep
smantique

2012-2013

2/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse semantique

Analyse s
emantique, grammaires attribu
ees

En termes de TP. . .
Analyse lexicale : TP2

Au sens strict : passer dun arbre syntaxique / une derivation `a une


representation interne du programme source
Au sens large : inclut aussi les analyses du back-end.

le planning dentree nest pas lexicalement correct : levee de


ScannerException

il lest : decoupage en token

Analyse syntaxique : TP3


I

le planning dentree nest pas syntaxiquement correct : levee


de ParserException

il lest : . . . rien

3/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

4/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Rien ?

Analyse s
emantique, grammaires attribu
ees

Quoi dautre ?

Avant de produire le fichier HTML :


Maintenant il faut produire le fichier HTML !

verifier que la date a un sens

verifier que le creneau horaire a un sens

Ces verifications ne sont pas du ressort des analyses lexicale et


syntaxique.

5/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

6/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Plus generalement

Analyse s
emantique, grammaires attribu
ees

Comment fait-on ?

Sur un programme syntaxiquement correct. . .


Une analyse semantique qui verifie par exemple :
I que le programme est correctement typ
e;
I quil ny a pas de double d
eclaration ;
I que toute variable est d
eclaree avant son utilisation ;
I etc.
Puis une ou plusieurs actions semantiques :
I optimisation
I production de code
I calculs divers
I etc
Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

En COMPIL, on va apprendre :
I

une methode qui passe partout

basee sur le principe des grammaires attribuees

. . . mais pas toutes les grammaires attribuees

qui construit un

= une structure de donnees constituee dobjets Java (cf COO)

les calculs sont faits sur cette structure de donnees (cf COO,
algo, etc)

mod`ele semantique 

7/59

8/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Pourquoi fait-on comme ca ?

Dans ce cours

On pourrait se passer du mod`ele semantique mais :


I

cest moins propre dun point de vue GL

cest moins modulaire

Les grammaires attribuees (en partie)


Les mod`eles semantiques

On pourrait voir toutes les grammaires attribuees mais :


I

les

on peut toujours sen passer

les versions  tout synthetise  contiennent bien `a la


construction de la structure de donnees Java

Lanalyse semantique pendant lanalyse syntaxique : outillage

attributs herites  ne sont pas du tout intuitifs

9/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

10/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Pour faire simple. . .


La problematique
Grammaires attribuees

. . . on va commencer sans structure de donnees.

Attributs synthetises

Par exemple, pour calculer la valeur dune expression arithmetique


on va :
I

De lutilite des structures de donnees

ecrire une grammaire attribuee qui fait directement le calcul

alors qu`a la fin du cours on fera :

Approche generale pour lanalyse semantique

ecrire une grammaire attribuee qui calcule des objets Java


representant lexpression

En pratique, outillage

puis calculer la valeur `a partir des objets Java

11/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

12/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Principe des grammaires attribuees

Analyse s
emantique, grammaires attribu
ees

Exemple

Les actions au sens large = des calculs sur des donnees


Calculer la valeur dune expression arithmetique.

Ex : calcul = generer du HTML, donnees = nom master,


soutenance, etc

E E +T | T
T (E ) | i

Ex : calcul = verifier le creneau, donnees = bornes de lintervalle


on enrichit les grammaires algebriques par :
I

des donnees : des attributs

des calculs sur ces donnees : des actions

valeur de i + i + i pour lentree 3 + 2 + 1 ?

13/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

14/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Arbre syntaxique pour i + i + i

Analyse s
emantique, grammaires attribu
ees

Les questions `a se poser pour demarrer

Tr`es utile pour concevoir une attribution.

E
E
E

I
I

Quelles donnees veut-on calculer quels attributs ?


Comment les calculer quelles actions ?

T
i

i
15/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

16/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Donnees - attributs

Attributs dans lexemple

Les attributs sont associes aux symboles de la grammaire

attribut val de type entier associe au non-terminal E , note E .val

Symboles = terminaux et non-terminaux

attribut val de type entier associe au non-terminal T , note T .val

Exemple : Donnees = valeur

attribut val de type entier associe au terminal i, note i.val

de lexpression elle-meme : E ;

de ses sous-expressions : T , i.

NB : similitude avec les attributs dun objet en POO

17/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Arbre decore

Analyse s
emantique, grammaires attribu
ees

Calculs - actions

Nuds de larbre syntaxique decores avec la valeur des attributs.


Autant de

18/59

cases

Additions, par ex pour E E + T :

que les actions devront remplir.

val

E .val = E .val + T .val

val

On associe une action `a la production en distinguant les differentes


occurrences de E :

T
val

val

E E +T

val
val

val

val

Passage de valeurs :

val

{ E0 .val = E1 .val + T .val }

E T

{ E .val = T .val }

19/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

20/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Arbre decore, fin

Analyse s
emantique, grammaires attribu
ees

Remarque

Pour lentree 3+2+1


val 6
val 5

Qui fixe la valeur de lattribut val du terminal i ?

val
val 3

elle est initialisee par lanalyseur lexical.

val
val 3

T
val

val

3i

val

i
21/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

22/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Grammaire attribuee finale

Analyse s
emantique, grammaires attribu
ees

Et si la grammaire etait ambigue ?


On obtiendrait la meme valeur pour les 2 arbres admis par
i + i + i. . .

E
E
T
T

E +T
T
(E )
i

{
{
{
{

E0 .val = E1 .val + T .val }


E .val = T .val }
T .val = E .val }
T .val = i.val }

. . . mais considerons la grammaire :


E E +E | E *E | i
Le mot i + i * i a deux significations, E .val a 2 valeurs
possibles.
attribuer une grammaire ambigue na aucun sens pratique.
23/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

24/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Comment 6= quand

Flot de donnees pour les attributs


Les attributs quon utilise

remontent dans larbre syntaxique .


val 9

Cette grammaire specifie comment calculer des valeurs associees `a


ses symboles.

val

4
val

Mais elle ne dit pas quand effectuer ces calculs. . .


. . . ni dans quel ordre effectuer les actions.

val

Grammaire attribuee = formalisme de specification, pas


dexecution.

val 3

Au sens strict, actions = equations, pas affectations.

val 3

25/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

2
val

2
val

4
val

i
26/59

On parle dattribut synthetises.


Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Sur lexemple
La problematique
E
E
T
T

Grammaires attribuees
Attributs synthetises

E +T
T
(E )
i

{
{
{
{

E0 .val = E1 .val + T .val }


E .val = T .val }
T .val = E .val }
T .val = i.val }

Ces actions respectent le schema :

De lutilite des structures de donnees

val att gauche prod = f (val att droite prod)


Approche generale pour lanalyse semantique
En pratique, outillage
27/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Pour les symboles non-terminaux :


I en partie gauche de production : occurrences de d
efinition des
attributs
I en partie droite de production : occurrences dutilisation des
attributs
Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Definition

28/59

Analyse s
emantique, grammaires attribu
ees

Dit autrement

Le schema : val att gauche prod = f (val att droite prod)


correspond `a un attribut synthetise :
I

defini quand associe `a un non-terminal en partie gauche de


production ;

utilise quand associe `a un non-terminal ou terminal en partie


droite de production.

Si le non-terminal X poss`ede un attribut synthetise a :


toutes les productions de membre gauche X doivent calculer une
valeur pour X.a

Exception : attribut du terminal i.val :


I

valeur fixee par analyseur lexical ;

napparat quen partie droite (utilisation seule) ;

dit synthetise par convention.


29/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

30/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Autre exemple : expressions prefixees


La problematique
Grammaires attribuees
Attributs synthetises

E entier | ( + listeE ) | ( * listeE )


listeE E listeE | 

De lutilite des structures de donnees

Calcul de la valeur de lexpression ?

Approche generale pour lanalyse semantique


En pratique, outillage
31/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

32/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Attribution partielle

Attribution partielle

val 5

Attributs synthetises :
listeE

val
(

val 2

entier

val 2

listeE

entier

val de type entier associe au terminal entier ;

val de type entier associe au non-terminal E ;

E entier
E ( + listeE )
E ( * listeE )

listeE
val 3

{ E.val = entier.val }
{ E.val = ? }
{ E.val = ? }

)
33/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Comment faire pour listeE ?

Analyse s
emantique, grammaires attribu
ees

Premi`ere solution

E ( + listeE ) | ( * listeE )
listeE E listeE
pas moyen de
la liste

34/59

On se debrouille pour descendre loperateur `a appliquer jusquaux


valeurs de la liste

voir  en meme temps loperateur et les valeurs de

Mais alors cest un attribut qui descend, dit

herite .

Pas dans ce cours.

voir en meme temps  = dans le meme sous-arbre

il faut faire circuler linformation

35/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

36/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Seconde solution

Analyse s
emantique, grammaires attribu
ees

Exemple

E entier | ( + listeE ) | ( * listeE )


listeE E listeE | 

On collecte les valeurs de la liste et on les remonte jusqu`a


loperateur.

Attributs synthetises :

Et pour collecter il faut. . . une collection !


Donc, une structure de donnees plus riche quun type elementaire

val pour E et entier, type entier, calcul idem avant

liste pour listeE, type list<entier>

Laction devient un code imperatif, qui peut secrire en Java, en


pseudo-code, etc.
37/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Exemple complet

Analyse s
emantique, grammaires attribu
ees

Pour aller plus loin

E entier
E ( + listeE )
E ( * listeE )

{ E.val = entier.val }
{ E.val = calcule(+, listeE.liste) }
{ E.val = calcule(*, listeE.liste) }

listeE E listeE

{ liste tmp = listeE1 .liste


liste tmp.ajoutTete(E.val)
listeE1 .liste = liste tmp }
{ listeE.liste = new list<entier> }

listeE 

38/59

On peut aussi :
I

associer `a laxiome une structure de donnees qui represente


exactement lexpression

dans un autre module du compilateur, exploiter cette


structure pour calculer la valeur de lexpression.

o`
u calcule(operateur, liste) est programmee `a part :
I

liste vide : retourne lelement neutre de operateur

liste non vide : retourne laccumulateur resultant de


lapplication de loperateur aux elements de la liste
Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

39/59

40/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Exemple des expressions


La problematique
Grammaires attribuees

<<interface>> *
Expression

Attributs synthetises
De lutilite des structures de donnees

Entier

<<abstract>>
ExpressionBinaire

Approche generale pour lanalyse semantique


Addition

En pratique, outillage

Multiplication

41/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

42/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Exemple des expressions

Exemple pour Init


Program
nom : String

evaluer lexpression

calculer une expression post-fixee

etc

ListeInstruction
1
<<interface>>
Instruction

1
ListeDeclaration

Les methodes de Expression et ses sous-types permettent de :

*
<<interface>>
Declaration
variable :
String

43/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

DeclarationEntier

Lecture
variable :
String
<<interface>>
Expression

DeclarationListe
Entier

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Exemple pour Init

Affectation
variable:
String

Liste

44/59

Analyse s
emantique, grammaires attribu
ees

Pattern Visiteur
Cest le pattern utilise en COMPIL.
Principe :

Les methodes de Program permettent de :


I

effectuer un controle de type

decompiler le programme source

generer du code Java

etc

ne pas mettre une methode par analyse dans Expression ou


Program

coder chaque analyse dans une classe independante, un


Visiteur

chaque visiteur parcourt / visite la structure de donnees

la structure de donnees est Visitable

Vous verrez ca en COO !


45/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

46/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Quand effectuer les actions


La problematique
Grammaires attribuees
Attributs synthetises

Solution classique : pendant lanalyse syntaxique

De lutilite des structures de donnees

` chaque fois quune production est


A
associee est executee.

Approche generale pour lanalyse semantique

fixe un ordre dexecution pour les actions

appliquee , laction

En pratique, outillage
47/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

48/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Est-ce toujours possible ?

Grammaires attribuees avec Cup

Existe-t-il toujours un ordre de calcul des attributs compatible. . .

Cup permet decrire nimporte quelle grammaire attribuee ne


contenant que des attributs synthetises.

. . . avec lordre dapplication des productions impose par lanalyse


syntaxique ?

Il faut tout de meme que la grammaire algebrique sous-jacente soit


acceptee par Cup.

Oui dans le cas o`


u les attributs sont tous synthetises :
I

pour les analyseurs ascendants generes par Cup

pour les analyseurs descendants generes par AntLR

Pour des raisons de Genie Log, lapproche est un peu differente de


lapproche de theorie du langage.

49/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

50/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Exemple : expressions arithmetiques

Analyse s
emantique, grammaires attribu
ees

Grammaire ambigue rejetee par Cup

terminal PLUS, MOINS, MULT, ENTIER;


non terminal expr;
E entier | E + E | E - E | E * E | - E

expr ::=
|
|
|
|
;

{-, +} p { * } p { -unaire}
operateurs binaires associatifs `a gauche

ENTIER
expr PLUS expr
expr MOINS expr
expr MULT expr
MOINS expr

51/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

52/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Ajout des priorites et associativite

Analyse s
emantique, grammaires attribu
ees

Ajout ds la grammaire de la prio du moins unaire

terminal MOINS_UNAIRE;
/* bidon, nexiste pas dans lan lex,
sert `
a fixer la prio du moins unaire. */

expr ::=
|
|
|
|
;

/* du plus au moins prioritaire */


precedence left PLUS,MOINS;
precedence left MULT;
precedence left MOINS_UNAIRE;
/* il faut mettre left ou autre chose
ici m^
eme si op
erateur unaire */

ENTIER
expr PLUS expr
expr MOINS expr
expr MULT expr
MOINS expr %prec MOINS_UNAIRE

53/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

54/59

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Attributs

Analyse s
emantique, grammaires attribu
ees

Actions
Les actions semantiques sont ecrites en Java.
Elles sont placees :
I entre {: :}
I en fin de production avant le ;
I mais avant un %prec.

Un seul attribut par symbole, sous-type de Object.


Pour declarer un attribut, on donne uniquement son type (objet) :
terminal Integer ENTIER;
non terminal Expression expr;
Lattribut du non-terminal en partie gauche est par convention
RESULT.

55/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

expr ::= ENTIER:entier {:


RESULT = new Entier(entier);
:}
| MOINS expr:val {:
RESULT = new Oppose(val);
:} %prec MOINS_UNAIRE
;
Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

56/59

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Execution des actions

Actions et acc`es aux attributs


Le nom des attributs est local `a une production (= var locale)
Acc`es `a lattribut dun symbole par :

Une action est executee lors de la reduction de la production


associee.
cad quand la partie droite de la production a ete reconnue.
Larbre syntaxique est construit en ordre postfixe.

57/59

Mirabelle Nebut
La probl
ematique
Grammaires attribu
ees
Attributs synth
etis
es
De lutilit
e des structures de donn
ees
Approche g
en
erale pour lanalyse s
emantique
En pratique, outillage

Analyse s
emantique, grammaires attribu
ees

Mirabelle Nebut

Attributs de laxiome
Lanalyseur syntaxique decore fournit les attributs de laxiome.
import java_cup.runtime.Symbol;
...
ParserExpression parser = new ParserExpression(scanner);
...
Symbol s = parser.parse();
Expression e = (Expression) s.value;
...
59/59

Mirabelle Nebut

Analyse s
emantique, grammaires attribu
ees

expr ::= ENTIER:val {:


RESULT = new Entier(val);
:}
| MOINS expr:val {:
RESULT = new Oppose(val);
:} %prec MOINS_UNAIRE
| expr:gauche MOINS expr:droite {:
RESULT = new Soustraction(gauche, droite);
:};
Analyse s
emantique, grammaires attribu
ees

58/59

You might also like