Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Modular Extension ofDomain-specific Languages
Thomas Degueule
Software Analysis & Transformation
CWI
https://tdegueul.github.io
CWI Scientific Meeting
24 November 2017
Modular Extension of Executable DSLs 1 / 9
▪ Joint work with the DiverSE group @ Inria
▪ CWI—Inria associate team Agile Language Engineering (ALE)
Foreword
20th ACM/IEEE International Conference on
Model-driven Engineering Languages and Systems
Modular Extension of Executable DSLs 2 / 9
VHDLHardware Description Language
CapellaSystems Engineering Language
ScratchProgramming for Kids
Node-REDWiring the Internet of Things
Modular Extension of Executable DSLs 3 / 9
Abstract Syntax
Modular Extension of Executable DSLs 3 / 9
Abstract Syntax
Concrete Syntax
Modular Extension of Executable DSLs 3 / 9
Abstract Syntax
Concrete Syntax
Execution Semantics
Modular Extension of Executable DSLs 3 / 9
Abstract Syntax
Execution Semantics
Modular Extension of Executable DSLs 3 / 9
AST Classes
Abstract Syntax
Execution Semantics
Modular Extension of Executable DSLs 3 / 9
AST Classes
Abstract Syntax
Execution Semantics
Modular Extension of Executable DSLs 3 / 9
Interpreter Pattern
Visitor Pattern
AST Classes
Abstract Syntax
Execution Semantics
Modular Extension of Executable DSLs 3 / 9
AST Classes
Abstract Syntax
Execution Semantics
Printing Semantics
Modular Extension of Executable DSLs 3 / 9
Interpreter Pattern
Visitor Pattern
AST Classes
Abstract Syntax
Execution Semantics
Printing Semantics
Modular Extension of Executable DSLs 3 / 9
AST Classes
Execution Semantics
Abstract Syntax
Modular Extension of Executable DSLs 3 / 9
Interpreter Pattern
Visitor Pattern
AST Classes
Execution Semantics
Abstract Syntax
Modular Extension of Executable DSLs 4 / 9
▪ How to extend (syntax and semantics of) DSLs
1. Without anticipating the extension
2. Without modifying or duplicating existing code
3. While ensuring type safety
Challenges of Modular Extensioncf. The Expression Problem
Philip Wadler
1998
Syntax
Semantics
FSM GuardedFSM
ExecGuardedFSMExecFSM
The REVISITOR Pattern
Modular Extension of Executable DSLs 5 / 9
▪ Maps syntactic objects to abstract semantic types
Revisitor Interface
Modular Extension of Executable DSLs 5 / 9
▪ Maps syntactic objects to abstract semantic types
Revisitor Interface
Modular Extension of Executable DSLs 6 / 9
▪ Implements the semantic objects
Revisitor Implementation
Modular Extension of Executable DSLs 7 / 9
Modular Extension with Revisitors
Modular Extension of Executable DSLs 7 / 9
Modular Extension with Revisitors
Extend the (existing) mapping
Modular Extension of Executable DSLs 7 / 9
Modular Extension with Revisitors
Extend the (existing) mapping
Extend the (existing) semantics
Modular Extension of Executable DSLs 8 / 9
ALE: the Action Language for EMF
[EclipseCon’17] EcoreTools Next:
Executable DSL made (more) accessible
https://tinyurl.com/ale-ecorePrinting FSMs in ALE
Modular Extension of Executable DSLs 9 / 9
▪ The story so far
• Independent and modular extensibility of syntax & semantics
• With incremental compilation, without anticipation
• Applicable in any “mainstream” OO language
• The ALE language, soon™ in Eclipse, makes it user-friendly
▪ What’s next?
• Separate compilation is the first step towards language components
• Off-the-shelf language components have explicit provided & required interfaces
• Pick, assemble, and customize language components to create new DSLs
Wrap-up
choose produce
DSL1
DSL2
DSLn
EOF