modular extension of domain-specific languages · revisitor interface. modular extension of...
TRANSCRIPT
![Page 1: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/1.jpg)
Modular Extension ofDomain-specific Languages
Thomas Degueule
Software Analysis & Transformation
CWI
https://tdegueul.github.io
CWI Scientific Meeting
24 November 2017
![Page 2: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/2.jpg)
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
![Page 3: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/3.jpg)
Modular Extension of Executable DSLs 2 / 9
VHDLHardware Description Language
CapellaSystems Engineering Language
ScratchProgramming for Kids
Node-REDWiring the Internet of Things
![Page 4: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/4.jpg)
Modular Extension of Executable DSLs 3 / 9
Abstract Syntax
![Page 5: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/5.jpg)
Modular Extension of Executable DSLs 3 / 9
Abstract Syntax
Concrete Syntax
![Page 6: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/6.jpg)
Modular Extension of Executable DSLs 3 / 9
Abstract Syntax
Concrete Syntax
Execution Semantics
![Page 7: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/7.jpg)
Modular Extension of Executable DSLs 3 / 9
Abstract Syntax
Execution Semantics
![Page 8: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/8.jpg)
Modular Extension of Executable DSLs 3 / 9
AST Classes
Abstract Syntax
Execution Semantics
![Page 9: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/9.jpg)
Modular Extension of Executable DSLs 3 / 9
AST Classes
Abstract Syntax
Execution Semantics
![Page 10: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/10.jpg)
Modular Extension of Executable DSLs 3 / 9
Interpreter Pattern
Visitor Pattern
AST Classes
Abstract Syntax
Execution Semantics
![Page 11: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/11.jpg)
Modular Extension of Executable DSLs 3 / 9
AST Classes
Abstract Syntax
Execution Semantics
Printing Semantics
![Page 12: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/12.jpg)
Modular Extension of Executable DSLs 3 / 9
Interpreter Pattern
Visitor Pattern
AST Classes
Abstract Syntax
Execution Semantics
Printing Semantics
![Page 13: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/13.jpg)
Modular Extension of Executable DSLs 3 / 9
AST Classes
Execution Semantics
Abstract Syntax
![Page 14: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/14.jpg)
Modular Extension of Executable DSLs 3 / 9
Interpreter Pattern
Visitor Pattern
AST Classes
Execution Semantics
Abstract Syntax
![Page 15: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/15.jpg)
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
![Page 16: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/16.jpg)
The REVISITOR Pattern
![Page 17: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/17.jpg)
Modular Extension of Executable DSLs 5 / 9
▪ Maps syntactic objects to abstract semantic types
Revisitor Interface
![Page 18: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/18.jpg)
Modular Extension of Executable DSLs 5 / 9
▪ Maps syntactic objects to abstract semantic types
Revisitor Interface
![Page 19: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/19.jpg)
Modular Extension of Executable DSLs 6 / 9
▪ Implements the semantic objects
Revisitor Implementation
![Page 20: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/20.jpg)
Modular Extension of Executable DSLs 7 / 9
Modular Extension with Revisitors
![Page 21: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/21.jpg)
Modular Extension of Executable DSLs 7 / 9
Modular Extension with Revisitors
Extend the (existing) mapping
![Page 22: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/22.jpg)
Modular Extension of Executable DSLs 7 / 9
Modular Extension with Revisitors
Extend the (existing) mapping
Extend the (existing) semantics
![Page 23: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/23.jpg)
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
![Page 24: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/24.jpg)
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
![Page 25: Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface](https://reader034.vdocuments.site/reader034/viewer/2022050214/5f604b87cc958d374b7b5717/html5/thumbnails/25.jpg)
EOF