Yet Another Language Extension Scheme

  • Anya Helene Bagge
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5969)


Magnolia is an experimental programming language designed to try out novel language features. For a language to be a flexible basis for new constructs and language extensions, it will need a flexible compiler, one where new features can be prototyped with a minimum of effort. This paper proposes a scheme for compilation by transformation, in which the compilation process can be extended by the program being compiled. We achieve this by making a domain-specific transformation language for processing Magnolia programs, and embedding it into Magnolia itself.


Concrete Syntax Language Extension Call Site Symbol Table Module Header 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bravenboer, M., Kalleberg, K.T., Vermaas, R., Visser, E.: Stratego/XT 0.17. A language and toolset for program transformation. Science of Computer Programming 72(1-2), 52–70 (2008)CrossRefMathSciNetGoogle Scholar
  2. 2.
    Bagge, A.H., Haveraaen, M.: Interfacing concepts: Why declaration style shouldn’t matter. In: LDTA 2009. ENTCS, York, UK (March 2009)Google Scholar
  3. 3.
    Bagge, A.H., Haveraaen, M.: Axiom-based transformations: Optimisation and testing. In: LDTA 2008, Budapest. ENTCS, vol. 238, pp. 17–33. Elsevier, Amsterdam (2009)Google Scholar
  4. 4.
    Andersen, J., Brabrand, C.: Syntactic language extension via an algebra of languages and transformations. In: LDTA 2009. ENTCS, York, UK (March 2009)Google Scholar
  5. 5.
    Brabrand, C., Schwartzbach, M.I.: Growing languages with metamorphic syntax macros. In: PEPM 2002, pp. 31–40. ACM, New York (2002)CrossRefGoogle Scholar
  6. 6.
    Standish, T.A.: Extensibility in programming language design. SIGPLAN Not. 10(7), 18–21 (1975)CrossRefGoogle Scholar
  7. 7.
    Wilson, G.V.: Extensible programming for the 21st century. Queue 2(9), 48–57 (2005)CrossRefGoogle Scholar
  8. 8.
    Nystrom, N., Clarkson, M.R., Myers, A.C.: Polyglot: An extensible compiler framework for Java. In: Hedin, G. (ed.) CC 2003. LNCS, vol. 2622, pp. 138–152. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  9. 9.
    Ekman, T., Hedin, G.: The JastAdd extensible Java compiler. In: OOPSLA 2007, pp. 1–18. ACM, New York (2007)CrossRefGoogle Scholar
  10. 10.
    Graham, P.: Common LISP macros. AI Expert 3(3), 42–53 (1987)Google Scholar
  11. 11.
    Dybvig, R.K., Hieb, R., Bruggeman, C.: Syntactic abstraction in scheme. Lisp Symb. Comput. 5(4), 295–326 (1992)CrossRefGoogle Scholar
  12. 12.
    Veldhuizen, T.L.: Expression templates. C++ Report 7(5), 26–31 (1995); Reprinted in C++ Gems, ed. Stanley LippmanGoogle Scholar
  13. 13.
    Sheard, T., Jones, S.P.: Template meta-programming for Haskell. In: Haskell 2002, pp. 1–16. ACM, New York (2002)CrossRefGoogle Scholar
  14. 14.
    Bravenboer, M., Visser, E.: Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions. In: OOPSLA 2004, pp. 365–383. ACM Press, New York (2004)CrossRefGoogle Scholar
  15. 15.
    Maddox, W.: Semantically-sensitive macroprocessing. Technical Report UCB/CSD 89/545, Computer Science Division (EECS), University of California, Berkeley, CA (1989)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Anya Helene Bagge
    • 1
  1. 1.Bergen Language Design Laboratory Dept. of InformaticsUniversity of BergenNorway

Personalised recommendations