Domain-Specific Languages in Few Steps - The Neverlang Approach

Often an ad hoc programming language integrating features from different programming languages and paradigms represents the best choice to express a concise and clean solution to a problem. But, developing a programming language is not an easy task and this often discourages from developing your problem-oriented or domain-specific language. To foster DSL development and to favor clean and concise problem-oriented solutions we developed Neverlang The Neverlang framework provides a mechanism to build custom programming languages up from features coming from different languages. The composability and flexibility provided by Neverlang permit to develop a new programming language by simply composing features from previously developed languages and reusing the corresponding support code (parsers, code generators, …). In this work, we explore the Neverlang framework and try out its benefits in a case study that merges functional programming a la Python with coordination for distributed programming as in Linda.

[1]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[2]  Torbjörn Ekman,et al.  The jastadd extensible java compiler , 2007, OOPSLA.

[3]  Frank Budinsky,et al.  Eclipse Modeling Framework , 2003 .

[4]  Martin Odersky,et al.  Programming in Scala , 2008 .

[5]  Bruno C. d. S. Oliveira,et al.  Modular Visitor Components , 2009, ECOOP.

[6]  Dan Sahlin The concurrent functional programming language Erlang - An Overview , 1996 .

[7]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

[8]  Fabrice Marguerie,et al.  LINQ in Action , 2008 .

[9]  Oscar Nierstrasz,et al.  Practical Dynamic Grammars for Dynamic Languages , 2010 .

[10]  Martin Odersky ECOOP 2004 – Object-Oriented Programming , 2004, Lecture Notes in Computer Science.

[11]  Nicholas Carriero,et al.  Linda in context , 1989, CACM.

[12]  Torbjörn Ekman,et al.  Extensible Compiler Construction , 2006 .

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

[14]  Uwe Zdun A DSL toolkit for deferring architectural decisions in DSL-based software design , 2010, Inf. Softw. Technol..

[15]  Harold Ossher,et al.  Asymmetrically vs. Symmetrically Organized Paradigms for Software Composition , 2002 .

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

[17]  Seth James Nielson,et al.  OO + + : Exploring the Multiparadigm Shift , 2005 .

[18]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[19]  Stanley M. Sutton,et al.  Hyper/J™: multi-dimensional separation of concerns for Java™ , 2001, ICSE '02.

[20]  Walter Cazzola,et al.  Sectional domain specific languages , 2009, DSAL '09.

[21]  Mads Torgersen The Expression Problem Revisited , 2004, ECOOP.

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

[23]  Frank Budinsky,et al.  EMF: Eclipse Modeling Framework 2.0 , 2009 .

[24]  Sophia Drossopoulou ECOOP 2009 - Object-Oriented Programming, 23rd European Conference, Genoa, Italy, July 6-10, 2009. Proceedings , 2009, ECOOP.

[25]  Bruno C. d. S. Oliveira Modular Visitor Components: A Practical Solution to the Expression Families Problem , 2009, ECOOP 2009.

[26]  Walter Cazzola,et al.  DSL evolution through composition , 2010, RAM-SE@ECOOP.

[27]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

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

[29]  Bryan Ford,et al.  Parsing expression grammars: a recognition-based syntactic foundation , 2004, POPL '04.

[30]  Ken Arnold,et al.  JavaSpaces¿ Principles, Patterns, and Practice , 1999 .

[31]  Robert Grimm,et al.  Better extensibility through modular syntax , 2006, PLDI '06.

[32]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.