Vanilla: an open language framework
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 areaslanguage design and implementation frameworks
Unable to display preview. Download preview PDF.
- 2.Martín Abadi and Luca Cardelli. A theory of objects. Springer Verlag, 1996.Google Scholar
- 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.Tim Budd. Multiparadigm programming in Leda. Addison-Wesley, 1995.Google Scholar
- 5.Luca Cardelli. Typeful programming. Technical Report Research report 45, Digital SRC, 1994.Google Scholar
- 6.Simon Dobson. Modular parsers. Technical Report TCD-CS-1998-19, Department of Computer Science, Trinity College Dublin, 1998.Google Scholar
- 7.David Gelernter and Suresh Jagannathan. Programming linguistics. MIT Press, 1990.Google Scholar
- 9.Samuel Kamin. Programming languages: an interpreter-based approach. Addison Wesley, 1990.Google Scholar
- 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.Robin Milner, Mads Tofte, and Robert Harper. The definition of Standard ML. MIT Press, 1990.Google Scholar
- 12.Charles Simonyi. Interviewed in The Edge, 1998.Google Scholar
- 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.Michiaki Tatsubori. An extension mechanism for the Java language. Master’s thesis, Tsukuba University, 1999.Google Scholar