25
Modular Extension of Domain-specific Languages Thomas Degueule Software Analysis & Transformation CWI https://tdegueul.github.io CWI Scientific Meeting 24 November 2017

Modular Extension of Domain-specific Languages · Revisitor Interface. Modular Extension of Executable DSLs 5 / 9 Maps syntactic objects to abstract semantic types Revisitor Interface

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EOF