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 framework 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.

[1]  Samuel N. Kamin Programming languages - an interpreter-based approach , 1990 .

[2]  Guy L. Steele,et al.  Building interpreters by composing monads , 1994, POPL '94.

[3]  Suresh Jagannathan,et al.  Programming linguistics , 1990 .

[4]  Anthony M. Sloane,et al.  Eli: a complete, flexible compiler construction system , 1992, CACM.

[5]  Michiaki Tatsubori,et al.  An Extension Mechanism for the Java Language , 1999 .

[6]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[7]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[8]  Paul Hudak,et al.  Monad transformers and modular interpreters , 1995, POPL '95.

[9]  Timothy A. Budd,et al.  Multiparadigm programming in Leda , 1994 .

[10]  Robin Milner,et al.  Definition of standard ML , 1990 .