Evolving a DSL Implementation

Domain Specific Languages (DSLs) are small languages designed for use in a specific domain. DSLs typically evolve quite radically throughout their lifetime, but current DSL implementation approaches are often clumsy in the face of such evolution. In this paper I present a case study of an DSL evolving in its syntax, semantics, and robustness, implemented in the Converge language. This shows how real-world DSL implementations can evolve along with changing requirements.

[1]  Jay Earley,et al.  An efficient context-free parsing algorithm , 1970, Commun. ACM.

[2]  Jonathan Bachrach,et al.  D-Expressions : Lisp Power , Dylan Style , 1999 .

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

[4]  Martin Odersky,et al.  Domain-Specific Program Generation , 2004, Lecture Notes in Computer Science.

[5]  Paul Klint,et al.  Compiling language definitions: the ASF+SDF compiler , 2000, TOPL.

[6]  Arie van Deursen,et al.  Domain-specific languages: an annotated bibliography , 2000, SIGP.

[7]  Laurence Tratt,et al.  Contrasting compile-time meta-programming in metalua and converge. , 2007 .

[8]  Simon L. Peyton Jones,et al.  Template meta-programming for Haskell , 2002, Haskell '02.

[9]  Fred L. Drake,et al.  The Python Language Reference Manual , 1999 .

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

[11]  Krzysztof Czarnecki,et al.  DSL Implementation in MetaOCaml, Template Haskell, and C++ , 2003, Domain-Specific Program Generation.

[12]  Tony Clark,et al.  An eXecutable metamodelling facility for domain specific language design. , 2004 .

[13]  Tim Sheard Using MetaML: A Staged Programming Language , 1998, Advanced Functional Programming.

[14]  Manuel M. T. Chakravarty,et al.  Optimising Embedded DSLs Using Template Haskell , 2004, GPCE.

[15]  Jay Earley,et al.  An efficient context-free parsing algorithm , 1970, Commun. ACM.

[16]  BravenboerMartin,et al.  Concrete syntax for objects , 2004 .

[17]  Laurence Tratt,et al.  Compile-time meta-programming in a dynamically typed OO language , 2005, DLS '05.

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

[19]  James R. Cordy,et al.  TXL - A Language for Programming Language Tools and Applications , 2004, LDTA@ETAPS.

[20]  Matthias Felleisen,et al.  Hygienic macro expansion , 1986, LFP '86.

[21]  Pawel Olszta,et al.  Meta-programming in Nemerle , .

[22]  Emir Pasalic,et al.  DSL implementation using staging and monads , 1999, DSL '99.