Vanilla: an open language framework

  • Simon Dobson
  • Paddy Nixon
  • Vincent Wade
  • Sotirios Terzis
  • John Fuller
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1799)


A trend in current research is towards component-based systems, where applications are built by combining re-usable fragments or components. In this paper we argue the case for building programming languages from components. We describe Vanilla, a component-based architecture for language tools. The core of Vanilla is a set of components, each implementing the type checking and behaviour of a single language feature, which are integrated within a well-structured frame-work to provide a programming language interpreter. Features may be extensively re-used across a variety of languages, allowing rapid prototyping and simplifying the exploration of new constructs. We describe the design and implementation of the system, and draw some general conclusions from the experience of building with components.

Subject areas

language design and implementation frameworks 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
  2. 2.
    Martín Abadi and Luca Cardelli. A theory of objects. Springer Verlag, 1996.Google Scholar
  3. 3.
    Don Batory, Bernie Lofaso, and Yannis Smaragdakis. JTS: tools for implementing domain-specific languages. In Proceedings of the 5th International Conference on Software Reuse, 1998.Google Scholar
  4. 4.
    Tim Budd. Multiparadigm programming in Leda. Addison-Wesley, 1995.Google Scholar
  5. 5.
    Luca Cardelli. Typeful programming. Technical Report Research report 45, Digital SRC, 1994.Google Scholar
  6. 6.
    Simon Dobson. Modular parsers. Technical Report TCD-CS-1998-19, Department of Computer Science, Trinity College Dublin, 1998.Google Scholar
  7. 7.
    David Gelernter and Suresh Jagannathan. Programming linguistics. MIT Press, 1990.Google Scholar
  8. 8.
    Robert Gray, Vincent Heuring, Steven Levi, Anthony Sloane, and William Waite. Eli: a complete, flexible compiler construction system. Communications of the ACM, 35(2):121–131, 1992.CrossRefGoogle Scholar
  9. 9.
    Samuel Kamin. Programming languages: an interpreter-based approach. Addison Wesley, 1990.Google Scholar
  10. 10.
    Sheng Liang, Paul Hudak, and Mark Jones. Monad transformers and modular interpreters. In Proceedings of the ACM Symposium on Principles of Programming Languages, pages 333–343, 1995.Google Scholar
  11. 11.
    Robin Milner, Mads Tofte, and Robert Harper. The definition of Standard ML. MIT Press, 1990.Google Scholar
  12. 12.
    Charles Simonyi. Interviewed in The Edge, 1998.Google Scholar
  13. 13.
    Guy Steele. Building interpreters by composing monads. In Proceedings of the ACM Symposium on Principles of Programming Languages, pages 472–492, 1994.Google Scholar
  14. 14.
    Michiaki Tatsubori. An extension mechanism for the Java language. Master’s thesis, Tsukuba University, 1999.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Simon Dobson
    • 1
  • Paddy Nixon
    • 1
  • Vincent Wade
    • 1
  • Sotirios Terzis
    • 1
  • John Fuller
    • 1
  1. 1.Department of Computer ScienceTrinity CollegeDublin 2Ireland

Personalised recommendations