Advertisement

Abstract

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.

Keywords

State Machine Parse Tree State Machine Translation Concrete Syntax Translation Function 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Mernik, M., Heering, J., Sloane, A.M.: When and how to develop domain-specific languages. Technical report, Centrum voor Wiskundeen Informatica (December 2003)Google Scholar
  2. 2.
    Hudak, P.: Modular domain specific languages and tools. In: Proceedings of Fifth International Conference on Software Reuse, pp. 134–142 (June 1998)Google Scholar
  3. 3.
    van Deursen, A., Klint, P., Visser, J.: Domain-specific languages: An annotated bibliography. SIGPLAN Notices, vol. 35, pp. 26–36 (June 2000)Google Scholar
  4. 4.
    Bravenboer, M., Visser, E.: Concrete syntax for objects. Domain-specific language embedding and assimilation without restrictions. In: Schmidt, D.C. (ed.) Proc. OOPSLA 2004, Vancouver, Canada. ACM SIGPLAN, New York (2004)Google Scholar
  5. 5.
    Clark, T., Evans, A., Sammut, P., Willans, J.: An executable metamodelling facility for domain specific language design. In: Proc. 4th OOPSLA Workshop on Domain-Specific Modeling (October 2004)Google Scholar
  6. 6.
    Tratt, L.: Compile-time meta-programming in a dynamically typed OO language. In: Proceedings Dynamic Languages Symposium, pp. 49–64 (October 2005)Google Scholar
  7. 7.
    Sheard, T., el Abidine Benaissa, Z., Pasalic, E.: DSL implementation using staging and monads. In: Proc. 2nd conference on Domain Specific Languages. SIGPLAN, vol. 35, pp. 81–94. ACM, New York (1999)CrossRefGoogle Scholar
  8. 8.
    Czarnecki, K., O’Donnell, J., Striegnitz, J., Taha, W.: DSL implementation in MetaOCaml, Template Haskell, and C++. In: Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, pp. 50–71. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  9. 9.
    Seefried, S., Chakravarty, M., Keller, G.: Optimising Embedded DSLs using Template Haskell. In: Third International Conference on Generative Programming and Component Engineering, Vancouver, Canada, pp. 186–205. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  10. 10.
    Tratt, L.: Converge Reference Manual (July 2007), http://www.convergepl.org/documentation/ (accessed August 16, 2007)
  11. 11.
    van Rossum, G.: Python 2.3 reference manual (2003), http://www.python.org/doc/2.3/ref/ref.html (accessed August 31, 2005)
  12. 12.
    Sheard, T., Jones, S.P.: Template meta-programming for Haskell. In: Proceedings of the Haskell workshop 2002. ACM, New York (2002)Google Scholar
  13. 13.
    Earley, J.: An efficient context-free parsing algorithm. Communications of the ACM 13(2) (February 1970)Google Scholar
  14. 14.
    Kohlbecker, E., Friedman, D.P., Felleisen, M., Duba, B.: Hygienic macro expansion. In: Symposium on Lisp and Functional Programming, pp. 151–161. ACM, New York (1986)Google Scholar
  15. 15.
    Cordy, J.R.: TXL - a language for programming language tools and applications. In: Proc. LDTA 2004, ACM 4th International Workshop on Language Descriptions, Tools and Applications (April 2004)Google Scholar
  16. 16.
    van den Brand, M.G.J., Heering, J., Klint, P., Olivier, P.A.: Compiling language definitions: the asf+sdf compiler, vol. 24, pp. 334–368. ACM Press, New York (2002)Google Scholar
  17. 17.
    Bachrach, J., Playford, K.: D-expressions: Lisp power, Dylan style (1999), http://www.ai.mit.edu/people/jrb/Projects/dexprs.pdf (accessed November 22, 2006)
  18. 18.
    Sheard, T.: Using MetaML: A staged programming language, 207–239 (September 1998)Google Scholar
  19. 19.
    Skalski, K., Moskal, M., Olszta, P.: Meta-programming in Nemerle (2004), http://nemerle.org/metaprogramming.pdf (accessed November 5, 2007)
  20. 20.
    Fleutot, F., Tratt, L.: Contrasting compile-time meta-programming in metalua and converge. In: Workshop on Dynamic Languages and Applications (July 2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Laurence Tratt
    • 1
  1. 1.Bournemouth UniversityPooleUnited Kingdom

Personalised recommendations