Author Context Institution Presentation
The Problem Conception of a Visual Language; Development of a Processor for the Language; Idealization of the Visual Language; Formalization of the language; Concretization of the initial idea;
After Funny Times...
Let’s get to Business! VisualLISA Analysis Domain Analysis VL Formal Notations VPE generators Implementation
VisualLISA Analysis VisualLISA – a graphical front-end for LISA (an AG-based compiler generator); Visual Edition of Attribute Grammars (production-oriented); Aims at reducing mental effort when specifying AGs; Performs syntax and semantic check of the AG model drawn; Generates code (LISA, XML, BNF) from the drawings; The environment should be automatic and systematically generated resorting to a VPE generator
Domain Specific Problem The knowladge about AG was not enough; Decicion: Search for AG domain knowledge until the end of the world; When I get back: Deep undertstanding about AG;
VL Formal Notations Two were found: MASOViLA and PLG; PLG was chosen: Is simpler than MASOViLA; Closer to BNF usual notation; TERMINAL → over ( rectangle, text) TREE_BRANCH → points_from ( points_to (line, ~TERMINAL), ~LEFT_SYMBOL) | points_from ( points_to ( line, ˜NONTERMINAL), ~LEFT SYMBOL)
VPE Generators Several VPE generators have been studied: DEViL VLDesk Tiger... DEViL was chosen: Based on Modular Symbol Oriented AG Specifications; Generated environment is complete but extensible; Stand-alone environment for the most important SOs;...
Implementation The Development Process Abstract Syntax Definition; Interaction and Layout Definition; Semantics Verification Implementation; Code Generation.
Systematic Development Abstract Syntax Definition Interaction&Layout Definition Semantics Implementation Code Generation Systematization VisualLISA TG module TW
Scene 1 The Development Process Abstract Syntax Definition; Interaction and Layout Definition; Semantics Verification Implementation; Code Generation.
Abstract Syntax Definition Abstract Syntax Definition PLG Structure Definition CLASS Root { name: VAL VLString; semprods: SUB Semprod*; definitions: SUB Definitions!; library: SUB Library?; }... TERMINAL → over ( rectangle, text) (…) Join&Transform Tree Grammar (TG)
Systematic Development (2) Abstract Syntax Definition Interaction&Layout Definition Semantics Implementation Code Generation Systematization VisualLISA TG module TW
Scene 2 The Development Process Abstract Syntax Definition; Interaction and Layout Definition; Semantics Verification Implementation; Code Generation.
Interaction & Layout Definition Interaction&Layout Definition Views Definition Symbols Definition TG module VIEW rootView ROOT Root { BUTTON IMAGE "img::btnSemprod” INSERTS Semprod INFO "Inserts a new Production"; } SYMBOL rootView_Root INHERITS VPRootElement, VPForm COMPUTE SYNT.drawing = ADDROF(rootViewDrawing); END; SYMBOL rootView_Root_semprods INHERITS VPFormElement, VPSimpleList COMPUTE SYNT.formElementName = "productions"; END; Join&Transform
Systematic Development (3) Abstract Syntax Definition Interaction&Layout Definition Semantics Implementation Code Generation Systematization VisualLISA TG module TW DEViL
Scene 3 The Development Process Abstract Syntax Definition; Interaction and Layout Definition; Semantics Verification Implementation; Code Generation.
Semantics Implementation Semantics Implementation Formal Constraints TW module TCL_programming TG -A production must have one and only one root symbol; (...) checkutil::addCheck Semprod { set n [llength [c::getList {$obj.grammarElements.CHILDREN[LeftSymbol]}]] set symbName [c::get {$obj.name.VALUE}] if { $n == 0 } { eturn "Production '$symbName' must have one Root symbol!” } elseif {$n > 1} { return "Production '$symbName' must have only one Root symbol!” } return ”” } =>
Scene 4 The Development Process Abstract Syntax Definition; Interaction and Layout Definition; Semantics Verification Implementation; Code Generation.
Code Generation Auxiliary Functions TG module Templates LISA, XAGra, BNF Translation Join&Transform bnfProd(lhs, rhs): [lhs] -> [rhs] SYMBOL bnfgen_Semprod COMPUTE SYNT.bnfLHS = CONSTITUENTS bnfgen_LeftSymbol.pers_symbolName WITH(PTGNode, PTGNewLineSeq, PTGAsIs, PTGNull); SYNT.bnfRHS = PTGAsIs(VLString(SELECT(vlList( "printBNFOrderedRHSElements",THIS.objId),eval()))); SYNT.bnfCode = PTGbnfProd(THIS.bnfLHS, THIS.bnfRHS); END;
Systematic Development (4) Abstract Syntax Definition Interaction&Layout Definition Semantics Implementation Code Generation Systematization VisualLISA TG module TW DEViL
Example Generation of Code From the AG Drawn – LISA – Generates XAGra LISA XAG ra
One Step More Requirements Analysis Domain Analysis VL Formal Notations VPE generators Implementation Dissemination
Dissemination Website developed : Complete Technical Report written Papers submited to International Conferences Several Talks were given.
Conclusion and Future Work VisualLISA really works! The use of an environment generator allows a systematic development; Maintaining and evolving the modules is easy; It lacks an usability test to confirm whether VisualLISA eases or not the specification of AG;