130 likes | 259 Views
Le langage VDL. Jean-Paul Sansonnet. Pourquoi un format spécial ?. Pour représenter La structure Le fonctionnement Pour raisonner sur un format maîtrisé Parcours de structures de données Granularité objet Schémas de données prédéfinis Raisonnement sur les actions
E N D
Le langage VDL Jean-Paul Sansonnet
Pourquoi un format spécial ? • Pour représenter • La structure • Le fonctionnement • Pour raisonner sur un format maîtrisé • Parcours de structures de données • Granularité objet • Schémas de données prédéfinis • Raisonnement sur les actions • Statique : Inv[f,g] ; Idem[f] • Dynamique : Chroniques de l’exécution effective
Quel format ? • Expressions arborescentes • Pour une représentation symbolique • F[e1,e2,…en] où F ‘balise’ < e1,e2,…en > • Granularité • Encapsulation objet • Méta données : middleware entre l’utilisateur et le composant effectif
Interface Composant Perçu Perception Display Commande Question User Composant effectif Médiateur La boucle Modale
Versions de VDL • VDL 0.1 Arbre de concepts • VDL 0.2 View Query Language (VQL) • VDLP Raisonnement procédural (Scripts) • VDL 0.3 1 concept 1 lexicalisation • VDL 0.4 Granularité objet • VDL 0.5 Schémas et observateurs
Concepts : Médiateur Un médiateur est composé de deux environnements : • Un ensemble de définitions de vues : c’est la représentation statique de la structure. • Un ensemble d’instanciations de vues : c’est le runtime du médiateur. Il évolue au cours de l’exécution au fil du comportement modal de la boucle ou modless des processus physiques du composant
Concepts : Vue Entité de structuration de base de VDL Syntaxe de définition : DEF[id, s, {farg,..}, (rule|inst)*;..] Instanciation de vue : NEW[id, Vi, args, ..] Prédéfinition de vues dans le Ground.
Concepts : Observateurs Un observateur est un opérateur prédéfini applicable à toute vue dans le runtime d’un médiateur : fi(Vj)
Squelette de Fshow SHOW[V_{i}]:= Switch[s , K|V, Text[NAME[V_{i}],"="VAL[VAL{i}]], R|L, Switch[ORIENT[V_{i}], VERTDOWN,Displaydown[Map[SHOW,VAL[V]]], VERTUP,Displayup[Map[SHOW,VAL[V]]], HOR,Displayhor[Map[SHOW,VAL[V]]] ], F, Button[NAME[V_{i}]], P, Text['a process'] ]
DEF[RED,K,{}, NAME=LEX[SYNSET['red']]; ISA=COLORS; VAL=RGBColor[1.,0.,1.]] DEF[FIGURE,K,{alias_,shape_,color_,size_}, DEF[FIGURE,K,{alias_,shape_,color_,size_}, NAME=LEX[SYNSET[alias], SYNSET['figure'],SYNSET['drawing']]; SHAPE=shape; COLOR=color; SIZE=VAL[size]; SHOW=ON[COLOR[$],RESIZE[SHAPE[$],SIZE[$]]]] DEF[STACK,R,{alias_,size_}, NAME=LEX[SYNSET[alias],SYNSET['stack']]; VAL=NIL; DIM=size; MIN=0; ORIENT=VERTUP] Exemple :Ground
INITDEF[];(*init and loading of the Ground *) DEF[move,F,{}, NAME=LEX[SYNSET['move'],SYNSET['displace']]; ARGS={{STACK, not EMPTY},{STACK}}; CHECK=(EMPTY[#2] Or SIZE[READ[#1]]<SIZE[READ[#2]])&; VAL=(POP[#1];PUSH[#2,IT])& ] DEF[hanoi,R,{}, NEW[RED, red]; NEW[RECTANGLE,rect,'disk']; NEW[FIGURE,d1,'disk',rect,red,NEW[BIG,z1]]; NEW[FIGURE,d2,'disk',rect,red,NEW[MEDIUM,z2]]; NEW[FIGURE,d3,'disk',rect,red,NEW[SMALL,z3]]; NEW[STACK,s1,NIL,3]; NEW[STACK,s2,NIL,3]; NEW[STACK,s3,NIL,3]; NEW[move, m]; NAME=LEX[SYNSET['game']]; VAL={s1,s2,s3}; ORIENT=HOR; RESET=(RESET/@VAL[$];PUSH[s1,d1]; PUSH[s1,d2];PUSH[s1,d3]); ] Exemple :Hanoi
Conclusion et Perspectives • Développer VQL 0.5 • Notion de ‘Common Sense Requests’ • Relations avec le monde XML • Traitement de la référence • modèle ‘Applet driven’ • Modèle à résolution de contraintes sémantiques.