• Aucun résultat trouvé

Transformation de grammaires attribuées pour des mises à jour destructives

N/A
N/A
Protected

Academic year: 2021

Partager "Transformation de grammaires attribuées pour des mises à jour destructives"

Copied!
91
0
0

Texte intégral

(1)

HAL Id: hal-00628154

https://hal-upec-upem.archives-ouvertes.fr/hal-00628154

Submitted on 30 Sep 2011

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Transformation de grammaires attribuées pour des mises

à jour destructives

Étienne Duris

To cite this version:

Étienne Duris. Transformation de grammaires attribuées pour des mises à jour destructives. [Rapport de recherche] Université d’Orléans. 1994. �hal-00628154�

(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)

Evaluateur Abstrait Génération des Visite Séquences de Optimiseur mémoire lisp C ... Back End Evaluateurs Front End Compile time Run time Résultat Arbre d’entrée lisp C ... l-ordonnée) (FNC, DNC Tests de Caractérisation (olga, asx) Spécification d’une Grammaire Attribuée Générateur d’Evaluateurs

(20)
(21)
(22)
(23)
(24)

AXIOM-TREE TREE TREE TREE TREE TREE 4 7 3 9 axiom-tree tip tip TREE fork tip fork TREE 3 3 tip 3 3 3 3 3 fork 3 3 3 3 3 3 3 $rmin $min 4 7 3 9 4 4 3 3 3 3 3 3 3 3 3 7 3 9 $axiom-tree $tree 3 3

Ci-dessous, représentation des dépendances et de la construction du résultat.

Ci-contre, l’arbre d’entrée avec les noms des phyla et des opérateurs ainsi que les valeurs aux feuilles. Un exemple d’arbre binaire d’entier.

(25)

h h s h s s Y1 X Y2 Y2 h s h s h s Y1 X

(26)
(27)

Arbre d’entrée Résultat de la fonction

Point d’insertion clé info

clé info

clé info clé info clé info clé info clé info

clé info nouveau noeud null noeud dupliqué ancien noeud clé info clé info clé info

(28)
(29)

Algorithme de décision de destructibilité (à partir des durées de vie et

Notre algorithme (chapitre 6) prend en compte

des graphes de dépendance) calculer leur destructibilité.

la durée de vie et le partage des attributs pour

Structure des arguments et des résultats construits

OLGA : typage fort ASX : accès aux productions

FNC-2. Information exacte. Connu à la génération des séquences de visites.

Correspond à un seul attribut synthétisé. (mono-attribut)

Besoins Grammaires Attribuées Programmation Fonctionnelle

Ordre d’évaluation

Durée de vie

Partage mémoire (comptage de référence, alias graph,

analyse de chemins) Interprétation abstraite

Information approchée Typage

(30)
(31)

Appel à la fonction applicative f.

Application globale (grammaire attribuée)

(32)
(33)

(réutilisation mémoire)

TRANSFORMATION

fork

fork fork

Espace mémoire réutilisé.

u $a $a

Attributs à partir desquels le résultat doit être construit. Nouvel espace mémoire alloué.

(34)

tip tip TRANSFORMATION (aucun effet) u $a u $a fork fork

(35)

calcul de {s1,s2}

Dans la version destructive, le calcul de s1 modifie l’arbre d’entrée.

X0 s1 s2

calcul de s1 calcul de s2

modification physique de l’arbre d’entrée

X0 s1 s1

valeur de s2 invalide

s2

calcul de s2 calcul de s1

modification physique de l’arbre d’entrée

(36)
(37)
(38)
(39)
(40)
(41)

a1 est correct, mais b ne l’est plus !

a1

b a

b

L’évaluation de a1 est la dernière utilisation directe de a.

(42)

b

a c

a partage les structures de b et de c

C’est un partage dû à sa définition. a := fork (b , c);

a

b c

a partage la structure de b

C’est un partage dû à son utilisation. b := fork (a , c);

(43)
(44)
(45)
(46)
(47)

D

D

D

D

D

a b c e d f g i h j

D

D

D

D

D

(48)
(49)

... C lisp Grammaire attribuée Front End (olga, asx) Evaluateur Abstrait Destructif (l’ordre de certaines Evaluateurs destructifs Back End Tests de (FNC, DNC, l-ordonnée) Séquences de Visite

Caractérisation Génération des Optimiseur

Transformation Algorithme de Destructive mémoire lisp C ...

est destructif, conformément aux par l’algorithme de transformation. Le code généré par le back end modifications ( let ... in ...) calculées

évaluations peut avoir été précisé) Générateur d’Evaluateurs

(50)

Grammaire attribuée Front End (olga, asx) Back End Tests de (FNC, DNC, l-ordonnée) Séquences de Visite

Caractérisation Génération des Optimiseur mémoire Décision de la destructibilité des paramètres Abstrait Evaluateur lisp C ... lisp C ... Evaluateurs faisant éventuellement

des appels à des fonctions de mise à jour destructives

Il référence des appels aux versions destructives ou applicatives du back end

applicatif, l’autre destructif. chaque fonction de mise à jour : l’un Le back end dispose de deux codes pour

(en fonction de la décision). Générateur d’Evaluateurs

(51)
(52)
(53)
(54)
(55)
(56)
(57)

) ) ) e f Cons a nil Cons b ( Cons c ( ( Cons d a b c d e f nil e f nil

Cons a ( Cons ( append

nil c d ) ) e f nil e f nil b arbre intermédiaire nil d b a c append Cons a nil d c b append ( ) zs Cons a ( Cons b ) nil c d append ( ) append ( ) a b d c nil niil append ( ) e f nil

Cons a ( Cons b (append nil ) )

nil c d ( ) zs append Cons a ( append ) nil nil b c d append ( ) zs xs ys zs zs et reconstruction jusqu’à ... etc ... jusqu’à ... Cons a ( append b c d nil )

(58)

e f nil Cons a ( Cons a ( Cons b ( c d e f ) ) ) ) ) ) b c d e f nil h_1 nil ) h_1 h_1 e f nil ) ) ) ) ) ) h_0 nil h_0 b nil nil a b h_0 xs ys zs ) ) ) ) ) ) nil c d nil c d e f nil e f nil e f nil nil c d nil c d e f nil d nil c ( Cons Cons b ( Cons b ( Cons a ( Cons a ( Cons a ( Cons a ( Cons a ( Cons a ( Cons a ( Cons b ( Cons b ( Cons b ( Cons b ( c ( Cons Cons d ( Cons d ( c ( Cons c ( Cons e f nil d e f nil nil a b c d e f nil

Aucune structure intermédiaire n’a été construite

)

)

(59)
(60)
(61)

construction syntaxique règle de copie i1 i2 u2 : cons u1 : cons u0 : root u3 : nil s s h : nil h : cons h :cons s z : root

(62)
(63)

construction syntaxique la construction intermédiaire est éliminée règle de copie u0 : root u1 : cons u3 : nil s h z z.z : root u2 : cons s.h : nil s.h h.h : cons h.h : cons h.s h.s h.s h.h s.s s.s s.s s s h h i2 i1 s.h

(64)

1 7 3 5 1 7 3 5 n1 n1 n2 n3

flip

n3 n2

(65)
(66)
(67)
(68)
(69)
(70)
(71)

Arbre d’entrée (TREE) Résultat de la fonction (TREE) Attributs hérités à la racine $do $i $k false false true true false true false $tree nouveau noeud null noeud dupliqué ancien noeud G G G G G G G G H K P F C B E H K F arrayid varid varid varid varid arrayid varid varid varid arrayid varid varid varid

varid varid varid varid

(72)
(73)

Arbre d’entrée (TREE) Résultat de la fonction (TREE) Attributs hérités à la racine $do $i $k true true false true false ancien noeud nouveau noeud null false false $tree $tree $tree(null) $tree

Modification du champ RIGHT du

F K P H G B E C arrayid varid arrayid varid varid varid varid varid varid varid varid varid varid varid varid G G G G G G G

(74)
(75)
(76)
(77)
(78)
(79)
(80)
(81)
(82)

D

D

Mise à jour applicative Règle de copie

Instance d’attribut destructible Instance d’attribut non-destructible

D ROUTINE_1 STMTS_1 DECLS_2 DECLS_1 DECL_1 $s-temp-st DECL_2 ID_2 ID_1 $s-temp-st $s-temp-st $h-temp-st

$h-temp-st $s-temp-st $h-temp-st DECLS_3 $s-temp-st

$h-temp-st $h-temp-st $symtab D D D D D D D D D D

(83)
(84)
(85)
(86)

null BLOC 3

BLOC 2

BLOC 1

insertion destructive possible insertion destructive impossible

(87)

$attr PROGRAM BLOCK STMT DECLS DECL ID DECL DECL ID NUMBER BLOCK ID ID ID STMT DECLS DECL ID $s-st $h-st $symtab $h-st $symtab $h-st $symtab $h-st $symtab $h-st $symtab $h-st $symtab $h-st $symtab $s-st $s-st $s-st $s-st $s-st $s-st $symtab $h-st empty-table $symtab $s-st

Mise à jour applicative

$symtab

Attribut destructible

$attr

Atrribut non destructible

(88)
(89)
(90)
(91)

Figure

table des symboles (liste d’arbres binaires de recherche)

Références

Documents relatifs

Les spécialistes des pro blèmes de la mémoire sont Les noms, les visages se fixeront plus facilement dans formels cela vient du fa1t que les premiers appliquent votre

Si des itinéraires cyclables assurant une fonction de réseau cantonal sont affectés par des projets qui sont approuvés sur la base du droit fédéral, l'autorité compétente décide

 Les candidats doivent présenter leur demande de subvention d’outils et d’instruments de recherche du CRSNG dans le Portail de recherche au plus tard à la date limite.. 

• Pour le prochain concours (c’est-à-dire le concours 2023, dont la date limite de présentation des demandes est en octobre 2022) et les concours ultérieurs, les candidats et

 2 ème situation d’évaluation 4 A la fin de la dernière PFE ou en fin de formation pour les autres

Apres transformation de ces fonctions en grammaires attribuees par FP-to-AG, deforestation de leur composition par la composition symbolique, puis elimination des regles de

Les deux premières se fondent sur les travaux de Katsumata [21] qui nous indiquent que notre traduction de grammaires attribuées en algèbres fonctionne non seulement dans la

Tous les antithyroïdiens de synthèse traversant la barrière placen- taire sont responsables d'un blocage de l'hormonogenèse thyroïdienne fœtale avec risque d'hypothyroïdie fœtale