La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle Michel Hassenforder.

Présentations similaires


Présentation au sujet: "Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle Michel Hassenforder."— Transcription de la présentation:

1

2 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle Michel Hassenforder

3 Model-Driven Analysis and Synthesis of Concrete Syntax Models 2006 – Genoa Sosym – en instance Pierre-Alain Muller Franck Fleurey Frédéric Fondement Michel Hassenforder Rémi Schneckenburger Sébastien Gérard Jean-Marc Jézéquel

4 Model-Driven Analysis and Synthesis of Concrete Syntax 4 Pierre-Alain Muller Franck Fleurey Michel Hassenforder Jean-Marc Jézéquel Frédéric Fondement Rémi Schneckenburger Sébastien Gérard David Touzet Michel Hassenforder Pierre-Alain Muller

5 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Plan Introduction Métamodèle de sintaks Sémantique lors de la synthèse Sémantique lors de l'analyse Exemples Conclusion

6 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Introduction - Motivation En général : Comment créer un modèle conforme à un métamodèle Il existe des outils pour faire des métamodèles Tous l'outillage autour de ecore Il existe des outils pour faire des modèles Tous l'outillage généré avec ecore Dans le cadre de la création/lecture de programme conforme à un métamodèle Grammarware : compilateur (text -> AST -> Model) Modelware : text Model

7 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Introduction - Illustration Un métamodèle très simple Des syntaxes concrètes Type:String Type:User Type:Mail Attribute:FromAttribute:To Attribute:Name Type Mail { From : User To : User } Type User { Name : String } Type String; (User) (User) (String) String;

8 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Processus Meta-Language (Mof, Kermeta,…) Métamodèle de Syntaxe concrète Métamodèle de Syntaxe abstraite Modèle de Syntaxe concrète Modèle Texte Conforme Sintaks Transformation Bidirectionnelle

9 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Métamodèle de sintaks

10 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Métamodèle de sintaks eClass and eStructuralFeature Ponts vers le métamodèle cible Rule Classe abstraite de base Root Container de fragments (rule) Donne le point de départ

11 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Métamodèle de sintaks Sequence Une collection ordonnée de règles Template Spécifie la classe à utiliser du métamodèle cible Spécifie la règle à appliquer Terminal Un texte connu et fixe lors de la modélisation Un symbol terminal dans le grammarware Adornment Un symbole de décoration invisible comme la fin de ligne ou la tabulation

12 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Métamodèle de sintaks Value (abstraite) Un ensemble de propriétés quil faut utiliser PrimitiveValue Une portion de texte qui provient dune ou de plusieurs propriétés Assure la manipulation des types de base : Integer, String, Real, Boolean, … Constant Une valeur fixe connue à la modélisation quil faut affecter à une ou plusieurs propriétés ObjectReference Permet de manipuler les propriétés qui référencent un autre objet en utilisant une de ses propriétés comme clé (unique) RuleRef Permet linvocation dune règle typiquement un fragment possédé par Root Ce concept permet le partage de règles URIValue Concept interne de sintaks pour sa propre syntaxe concrète.

13 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Métamodèle de sintaks Iteration Permet de gérer une propriété de type container Assure la gestion dun éventuel séparateur

14 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Métamodèle de sintaks Choice (Abstraite) Ce concept permet de modéliser des variations dans la formulation de la syntaxe concrète Il possède un ensemble de condition Condition (Abstraite) Ce concept permet de décrire une condition particulière sous la forme Dune valeur que doit prendre une 'expression Une règle quil faut exécuter CustomCondition Permet de décrire la propriété quil faut tester PolymorphicCondition Permet de décrire la classe quil faut tester

15 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Métamodèle de sintaks Choice (Abstraite) Ce concept permet de modéliser des variations dans la formulation de la syntaxe concrète Il possède un ensemble de condition Alternative La liste de conditions est exploitée une fois pour en sélectionner la plus pertinente Once (expérimental) La liste de conditions est exploitée répétitivement pour sélectionner toutes les plus pertinente (comparable au concept all dans un schéma XML)

16 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Texte Sintaks est bidirectionnel ! Synthèse Impression par descente récursive Visiteur en profondeur Analyse Compilateur par descente récursive Comme du LL(k) (k=0..*) Synthèse Modèle Analyse

17 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Sémantique lors de la synthèse Règle Sequence Un container de règle à invoquer en séquence Règle Terminal La valeur est ajoutée dans le flux de sortie Ajoute des espaces pour délimiter Règle Adornment Selon le cas soit une tabulation (tab) soit une fin de ligne (eoln) est inséré dans le flux de sortie Règle Template Le template ne fait que spécifier le type de l'objet La sous règle est invoquée pour générer le texte associé blabla … Texte_fixe #1#2#3

18 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Sémantique lors de la synthèse Règle PrimitiveValue Extrait une propriété de l'objet courant Conversion en texte puis impression avec délimiteurs Règle Constant Aucun effet Règle ObjectReference Cherche l'objet référencé Cherche la propriété utilisée comme clé Conversion la valeur en texte puis impression avec délimiteurs Règle RuleRef Invoque la règle interne Règle URIValue Secret de fabrication blabla … Propriété = 10 unObject 10 blabla … clé = hello leRéférencé hello unObject référence

19 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Sémantique lors de la synthèse Règle Iteration La sous règle est invoquée pour chaque objet dans le container Lordre utilisé est lordre du container Eventuellement un séparateur est inséré entre chaque invocation Règle Alternative Chaque condition est évaluée et la première à vraie déclenche la règle associée Règle Once Itération sur lensemble des conditions et chaque condition valide déclenche la règle associée blabla … prop1 = 10 prop2 = hello prop3 = true unObject 10 blabla … #1#2#3 sép hello blabla … prop1 = 10 prop2 = hello prop3 = true unObject hello true

20 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Sémantique lors de la synthèse PolymorphicCondition [ valeur, metaClasse, objetCourant ] Que peut-on tester ? valeur=""objetCourant.class == metaClasse valeur="null"objetCourant.class == null valeur="any"objetCourant.class != null valeur="equals"objetCourant.class == metaClasse valeur="differs"objetCourant.class != metaClasse CustomCondition [ valeur, propriété, objetCourant ] Que peut-on tester ? valeur=""faux valeur="null"objetCourant.propriété == null valeur="any"objetCourant.propriété != null valeur="empty"((String) objetCourant.propriété).length == 0 ((List) objetCourant.propriété).size == 0 valeur="filled"((String) objetCourant.propriété).length != 0 ((List) objetCourant.propriété).size != 0 valeur="= v0"(String) objetCourant.propriété == v0 valeur="!= v0"(String) objetCourant.propriété != v0 Kermeta à laide …

21 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Sémantique lors de lanalyse Analyseur lexical Supprime les espaces blancs (espace, tabulation, fin de ligne, …) Découpage mot par mot (un mot est délimité par des espaces blancs) Sait revenir à une position antérieur particulière Règle Sequence Un container de règle à invoquer en séquence sans échouer … Si on échoue, annulation de la séquence, backtracking pour restituer létat initial Règle Terminal Une valeur est extraite du flux dentrée Si elle correspond elle est consommée, sinon erreur Règle Adornment Rien, car les espaces blancs sont déjà supprimés Règle Template La metaClasse est instanciée et devient lobjet courant La sous règle est invoquée pour continuer lanalyse Si une erreur apparaît lobjet courant est oublié blabla … Texte_fixe

22 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Sémantique lors de lanalyse Règle PrimitiveValue Extrait un mot du flux dentrée Conversion vers le type de la propriété cible Affectation à la propriété cible de lobjet courant Règle Constant Conversion de la valeur incluse vers le type de la propriété cible Affectation à la propriété cible de lobjet courant Règle ObjectReference Extrait un mot du flux dentrée Recherche dans le modèle courant avec la propriété clé un objet capable dutiliser la clé Vérification que la valeur de la clé sur cet objet est celle extraite du flux Si oui affectation de la propriété cible de lobjet courant avec le référencé Sinon création dun fantôme qui devra être résolu plus tard Règle RuleRef Invoque la règle interne Règle URIValue Secret de fabrication blabla … Propriété = … unObject 10 blabla … clé = hello leRéférencé hello unObject référence blabla … Propriété = … unObject 10 blabla … Modèle blabla …

23 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Sémantique lors de lanalyse Règle Iteration La sous règle est invoquée jusquà échec Chaque invocation avec succès permet linsertion dans le container Eventuellement un séparateur est analysé entre chaque invocation Règle Alternative Une Itération sur lensemble des conditions Chaque règle dans chaque condition est évaluée La première qui analyse avec succès stoppe litération Après chaque erreur, lanalyseur revient en arrière Règle Once Répétition de lItération sur lensemble des conditions Jusquà ce quune itération ne trouve pas de condition satisfaisante La première qui analyse avec succès stoppe litération Après chaque erreur, lanalyseur revient en arrière Condition Les 'expressions' ne sont pas évaluées blabla … 10 #1#2 sép (en EBNF : x ::= (a | b | c)* ) (en EBNF : x ::= a | b | c)

24 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Exemples Exemple 1 : Type Exemple 2 : Expression – notation préfixée Exemple 2 : Expression - notation infixée

25 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Example 1 : Type / MetaModel & Model Type Mail { From : User To : User } Type User { Name : String } Type String;

26 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Exemple 1 : Type / Modèle de syntaxe concrète Travaille sur la classe 'Model' Opère sur la collection 'chidren' Travaille sur la classe 'Type' Extraction de la propriété 'name' Référence lobjet dans le modèle + qui possède lattribut 'name' + qui a la valeur extraite du flux Un simple point-virgule Mot clé : Type La liste 'attributes' est vide Un saut de ligne pour faire joli Des accolades pour encadrer la liste Opère sur la collection 'attributes' Travaille sur la classe 'Attribute' Extraction de la propriété 'name'

27 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Exemple 1 : Type / Modèle de syntaxe concrète Invoque le fragment … bon cest le Template Type Travaille sur la classe 'Model' Travaille sur la classe 'Type' Travaille sur la classe 'Attribute' Invoque le fragment … bon cest le Template Attribut

28 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Exemple 2 : metamodèle dExpression

29 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Exemple 2 : Expression / préfixée Notation préfixée operator + ( operator * ( 3, 2 ), 1 ) Notation infixée 3 * En BNF expr ::=operator * ( expr, expr ) |operator + ( expr, expr ) |integer

30 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Exemple 2 : Expression / infixée ::= + ::= * ::= [0-9]+ ::= | ::= | ::=

31 Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle / Conclusion Spécification une syntaxe concrète textuelle Mapping bidirectionnel Syntaxe concrète vers syntaxe abstraite Syntaxe abstraite vers syntaxe concrète Un outil Lecture par descente récursive Impression par visite en profondeur


Télécharger ppt "Sintaks : Ingénierie Dirigée par les Modèles Appliquée à lAnalyse et la Synthèse de Syntaxe Textuelle Michel Hassenforder."

Présentations similaires


Annonces Google