Language and IDE Modularization and Composition with MPS

Modularization and composition of languages and their IDEs is an important building block for working efficiently with domain-specific languages. Traditionally this has been a challenge because many grammar formalisms are not closed under composition, hence syntactic composition of languages can be challenging. Composing semantics can also be hard, at least in the general case. Finally, a lot of existing work does not consider IDEs for the composed languages. This paper illustrates how JetBrains MPS addresses language and IDE modularization and composition based on a projectional editor and modular type systems and transformations. The paper also classifies composition approaches according to the dependencies between the composed languages and whether syntactic composition is supported. Each of the approaches is illustrated with an extensive example implementation in MPS.

[1]  Russell W. Quong,et al.  ANTLR: A predicated‐LL(k) parser generator , 1995, Softw. Pract. Exp..

[2]  Mark van den Brand,et al.  Repleo: a syntax-safe template engine , 2007, GPCE '07.

[3]  Charles Simonyi,et al.  Intentional software , 2006, OOPSLA '06.

[4]  Eelco Visser,et al.  Product Line Engineering Using Domain-Specific Languages , 2011, 2011 15th International Software Product Line Conference.

[5]  Eric Van Wyk,et al.  Verifiable composition of deterministic grammars , 2009, PLDI '09.

[6]  Eelco Visser,et al.  The spoofax language workbench: rules for declarative specification of languages and IDEs , 2010, OOPSLA.

[7]  Eelco Visser,et al.  Declaratively defining domain-specific language debuggers , 2011, GPCE '11.

[8]  Bernhard Schätz,et al.  mbeddr: an extensible C-based programming language and IDE for embedded systems , 2012, SPLASH '12.

[9]  Eelco Visser,et al.  Generalized type-based disambiguation of meta programs with concrete object syntax , 2005, GPCE'05.

[10]  Paul Klint,et al.  A meta-environment for generating programming environments , 1989, TSEM.

[11]  Eric Van Wyk,et al.  Silver: an Extensible Attribute Grammar System , 2008, Electron. Notes Theor. Comput. Sci..

[12]  Eelco Visser,et al.  Designing Syntax Embeddings and Assimilations for Language Libraries , 2007, MoDELS Workshops.

[13]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[14]  Peter D. Mosses,et al.  Composing programming languages by combining action-semantics modules , 2001, Sci. Comput. Program..

[15]  Tijs van der Storm,et al.  RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[16]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture: A System of Patterns: John Wiley & Sons , 1987 .

[17]  Markus Völter Implementing feature variability for models and code with projectional language workbenches , 2010, FOSD '10.

[18]  Andreas Podelski,et al.  ACSAR: Software Model Checking with Transfinite Refinement , 2007, SPIN.

[19]  Eelco Visser,et al.  Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions , 2004, OOPSLA '04.

[20]  Christian Hofer,et al.  Polymorphic embedding of dsls , 2008, GPCE '08.

[21]  Jochen Ludewig,et al.  Models in software engineering – an introduction , 2003, Software and Systems Modeling.

[22]  M Mernik,et al.  When and how to develop domain-specific languages , 2005, CSUR.

[23]  Mark van den Brand,et al.  Integrating Textual and Graphical Modelling Languages , 2010, Electron. Notes Theor. Comput. Sci..

[24]  Didier Parigot,et al.  SmartTools: a Generator of Interactive Environment Tools , 2001, Electron. Notes Theor. Comput. Sci..

[25]  Viljem Zumer,et al.  Incremental programming language development , 2005, Comput. Lang. Syst. Struct..

[26]  Francesco Tisato,et al.  Reflection and Software Engineering , 2001, Lecture Notes in Computer Science.

[27]  Martin Fowler,et al.  Domain-Specific Languages , 2010, The Addison-Wesley signature series.

[28]  Eric Van Wyk,et al.  Building Extensible Specifications and Implementations of Promela with AbleP , 2011, SPIN.

[29]  Sebastian Erdweg,et al.  Language composition untangled , 2012, LDTA.

[30]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[31]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

[32]  David Notkin The GANDALF project , 1985, J. Syst. Softw..

[33]  Erik Ernst,et al.  ECOOP 2007 - Object-Oriented Programming, 21st European Conference, Berlin, Germany, July 30 - August 3, 2007, Proceedings , 2007, ECOOP.

[34]  Donald K. Friesen,et al.  A multi-language syntax-directed editor , 1987, CSC '87.

[35]  Shigeru Chiba,et al.  OpenJava: A Class-Based Macro System for Java , 1999, Reflection and Software Engineering.

[36]  Görel Hedin,et al.  JastAdd--an aspect-oriented compiler construction system , 2003, Sci. Comput. Program..

[37]  Bernhard Rumpe,et al.  Meaningful modeling: what's the semantics of "semantics"? , 2004, Computer.

[38]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[39]  Paul Hudak,et al.  Modular domain specific languages and tools , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[40]  Eelco Visser,et al.  Stratego/XT 0.17. A language and toolset for program transformation , 2008, Sci. Comput. Program..

[41]  Peter D. Mosses,et al.  Modular structural operational semantics , 2004, J. Log. Algebraic Methods Program..

[42]  Oscar Nierstrasz,et al.  Embedding Languages without Breaking Tools , 2010, ECOOP.

[43]  Les Hatton,et al.  Safer language subsets: an overview and a case history, MISRA C , 2004, Inf. Softw. Technol..

[44]  Peter B. Henderson,et al.  Proceedings of the second ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments , 1984 .

[45]  Eric Van Wyk,et al.  Attribute Grammar-Based Language Extensions for Java , 2007, ECOOP.

[46]  Hui Wu,et al.  Grammar-driven generation of domain-specific language debuggers , 2008 .

[47]  Scott Wilkin. Porter Design of a syntax directed editor for PSDL. , 1988 .

[48]  Theo D'Hondt ECOOP 2010 - Object-Oriented Programming, 24th European Conference, Maribor, Slovenia, June 21-25, 2010. Proceedings , 2010, ECOOP.

[49]  Thomas Reps,et al.  The synthesizer generator , 1984 .

[50]  Boaz Rosenan Designing language-oriented programming languages , 2010, SPLASH/OOPSLA Companion.

[51]  Jonathan Bachrach,et al.  The Java syntactic extender (JSE) , 2001, OOPSLA '01.

[52]  Sebastian Erdweg,et al.  SugarJ: library-based syntactic language extensibility , 2011, OOPSLA '11.

[53]  Peter H. Feiler,et al.  An Incremental Programming Environment , 1981, IEEE Transactions on Software Engineering.

[54]  Eelco Visser,et al.  Pure and declarative syntax definition: paradise lost and regained , 2010, OOPSLA.

[55]  Viljem Zumer,et al.  LISA: An Interactive Environment for Programming Language Development , 2002, CC.

[56]  Hui Wu,et al.  Domain-specific aspect languages for modularising crosscutting concerns in grammars , 2009, IET Softw..

[57]  Guy L. Steele,et al.  Growing a Language , 1999, High. Order Symb. Comput..

[58]  Brian Beckman,et al.  LINQ: reconciling object, relations and XML in the .NET framework , 2006, SIGMOD Conference.

[59]  Eric Van Wyk,et al.  Forwarding in Attribute Grammars for Modular Language Design , 2002, CC.

[60]  Paul Klint,et al.  The syntax definition formalism SDF—reference manual— , 1989, SIGP.

[61]  Michael R. Clarkson,et al.  Polyglot: An Extensible Compiler Framework for Java , 2003, CC.

[62]  Eelco Visser,et al.  Growing a language environment with editor libraries , 2011, GPCE '11.

[63]  Eelco Visser,et al.  Preventing injection attacks with syntax embeddings , 2007, GPCE '07.