Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parJohanne Pruvost Modifié depuis plus de 10 années
1
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger Jean-Louis Jean-Louis.Boulanger@hds.utc.fr Heudiasyc UMR CNRS 6599 Université de Technologie de Compiègne
2
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Plan Quoi de neuf ? Exemple de mise en place dune extension B. Conclusion
3
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Quoi de neuf ? ABTools 0.3.2
4
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 État des lieux B Classic –Lexeur/Parseur: OK –Décompileur graphique: OK –Décompileur textuel (ASCII, XML, LATEX et HTML): OK –Typeur (générique): Finalisation –Normalisateur (retrait des définitions): Finalisation –GOP: Début B Prime –Lexeur/Parseur: OK –Décompileur graphique: OK –Décompileur textuel (ASCII, XML, LATEX et HTML): OK B Système –Lexeur/Parseur: OK –Décompileur graphique: OK –Décompileur textuel (ASCII, XML, LATEX et HTML): OK B Event –Lexeur/Parseur: OK –Décompileur graphique: OK –Décompileur textuel (ASCII, XML, LATEX et HTML): OK
5
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Outils utilisés ANTLR 2.7.2a –www.antlr.org JAVA 2 v 1.4
6
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Exemple dextension Prototypage du B événementiel
7
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 B événementiel Projet MATISSE : http://www.atelierb.societe.com/evt2b/evt2b.html Documentation –Manuel de Référence Défini comme une extension du MR B –Manuel Utilisateur Bevent2B Un outil utilisant le kernel
8
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Intégration dans ABTools Création de larbre syntaxique: –Définir un lexer et un parser Décompilation –Définir un parcoureur darbre (treewalker) Génération dun code B équivalent –Définir un parcoureur darbre (treewalker)
9
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Parsing Nous disposons dune grammaire déjà validée, et tout comme cela est fait dans le MU, il « suffit » de létendre. –BEvent hérite de B –BEvent surcharge certaines règles de B –BEvent introduit de nouvelles règles
10
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Composant B système Component ::= Abstract_system | Refinement* composant [boolean loadLinked] : { LoadLinked = loadLinked; } ( machine | refinement | /* Empty sources files are *not* allowed. */ { System.err.println ( "ABParser Warning : Empty source file!" ); errors.WSyntaxic ( "BEvent.g", "The file is empty" ); } ) ;
11
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Description dun système (1) System_abstract ::= "SYSTEM" Header Clause_system_abstract* "END" Clause_system_abstract ::= Clause_constraints | Clause_sees | Clause_sets | Clause_concrete_constants | Clause_abstract_constants | Clause_properties | Clause_concrete_variables | Clause_abstract_variables | Clause_invariant | Clause_assertions | Clause_initialization | Clause_events | Clause_modalities
12
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Description dun système (2) machine: B_SYSTEM^ paramName (constraints |sees |sets |constants |aconstants |properties |variables |cvariables |invariant |assertions |initialisation_mch |events_mch |modalities )* B_END! EOF! ;
13
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Rappel MR B Instruction Instruction_corps_opération Substitution Substitution_corps_opération
14
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ANY avec post-condition (1) Substitution_unbounded_choice_postcondition ::= "ANY" Ident_ren+, "WHERE " Predicate "THEN" Substitution "POST" Predicate "END"
15
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ANY avec post-condition (2) substitution_unbounded_choice_postcondition_ mch: B_ANY^ listIdentifier B_WHERE! expression B_THEN! substitution_mch B_POST! predicate B_END! ;
16
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Les raffinements (1) Refinement ::= "Refinement" Header Clause_refinement* "END" Clause_refinement ::= Clause_constraints | Clause_sees | Clause_variant | Clause_sets | Clause_concrete_constants | Clause_abstract_constants | Clause_properties | Clause_concrete_variables | Clause_abstract_variables | Clause_invariant | Clause_assertions |Clause_initialization |Clause_events |Clause_modalities
17
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Les raffinements (2) refinement: B_REFINEMENT^ paramName (refines |constraints |sees |sets |aconstants |constants |properties |variables |cvariables |invariant |variant |assertions |initialisation_ref |events_ref |modalities )* B_END! EOF! ;
18
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Variant MR –Clause_variant ::= VARIANT Variant –Variant ::= Expression_arithmetical ABTools –variant :B_VARIANT^ a_variant; –a_variant : predicate ; –Plus une règle de typage
19
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Variable « prime » REFINEMENT toy_1 REFINES toy VARIABLES aa, bb INVARIANT bb: 0..aa & (bb=aa y bb=bb) VARIANT aa-bb INITIALISATION aa, bb := 0, 0 EVENTS ev1 = ANY xx WHERE xx: N & bb = aa THEN aa, bb := xx, 0 END ;ev2 = SELECT bb<aa THEN bb := bb +1 END END Confusion avec ab qui est la manipulation de champs de record
20
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Les Events du MR Clause_events ::= "EVENTS" Event+";" Event ::= Ident_ren [ref Ident_ren+","] "=" Substitution_event_body Substitution_event_body ::= Substitution_bloc | Substitution_postcondition | Substitution_selection | Substitution_selection_postcondition | Substitution_unbounded_choice | Substitution_unbounded_choice_postcondition
21
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Pour une machine eventMch: nameRenamed c:B_EQUAL^ {#c.setType(OP_DEF);} substitution_event_mch ; substitution_event_mch : substitution_mch |substitution_block_postcondition_mch |substitution_precondition_postcondition_mch |substitution_selection_mch |substitution_selection_postcondition_mch |substitution_unbounded_choice_mch |substitution_unbounded_choice_postcondition_mch ;
22
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Et pour un raffinement eventRef: an_event_ref c:B_EQUAL^ {#c.setType(OP_DEF);} substitution_event_ref ; an_event_ref: nameRenamed (B_REF^ listNameRenamed)? ; listNameRenamed: nameRenamed (B_COMMA^ nameRenamed)*; substitution_event_ref : parallele_ref |substitution_block_postcondition_ref |substitution_precondition_postcondition_ref |substitution_selection_ref |substitution_selection_postcondition_ref |substitution_unbounded_choice_ref | substitution_unbounded_choice_postcondition_ref;
23
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Mais ça ne marche pas …. Il nest pas possible de définir un k permettant de distinguer les substitutions B des substitutions POST Exemple –BEGIN substitution END –BEGIN substitution POST predicat END
24
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Une « bonne » solution Surcharger les règles définissant les substitutions: substitution_event_mch : substitution_mch ; Substitution_block_mch : « BEGIN »^ substitution_mch (« POST »^ predicat)? ; On a un arbre du type: POST BEGIN substitution predicat
25
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Parcoureur darbre class EventTreeWalker extends TreeWalker; options { importVocab = BEvent; buildAST = false; ASTLabelType = "MyNode"; codeGenMakeSwitchThreshold = 3; codeGenBitsetTestThreshold = 4; k = 1; }
26
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Traitement de la machine machine : #(tt:B_SYSTEM { index.Add(); printToStringln(out.Clause(tt.getText())); } paramName { printToStringln(""); } clauses { printToString(out.Clause("END")); } ) ;
27
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Conclusion
28
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Ce qui est fait … ….et Ce qui reste à faire Prévu: –Parser B Event :OK –Décompileur B Event:OK –Typeur:OK –Générateur de B:A faire A faire –GOP –Animateur de spécification B Event
29
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Quelques métriques Temps passé –Parseur moins dun jour –Décompilateur \\ –Evolution du typeur\\
30
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Intérêts Prototypage rapide, –Un langage unique de description –Ce langage manipule directement les AST –Peu de code manuel –Génération de Code (C++, JAVA) –Génération de DOC (HTML, XML) Obtenir une formalisation des concepts mis en place
31
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Résultats Parsing et décompilation de tous les exemples présentés dans le MR et MU.
32
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Download http://www.chez.com/abtools
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.