Compiler Support for Extensible Languages

The use of a rigid general purpose language is, by an increasing part of the software engineering community, no longer considered to be the optimal solution. The requirements on a programming language are not static, but change over time and depend on the application domain in which the language is used. To address this, one can recognise two main approaches, i.e. application domain languages and extensible language models. In this paper, we describe our experiences with our extensible object-oriented language, i.e. the layered object model (LayOM). As part of an ongoing research project, we investigate language extensions required for the expression of object-oriented frameworks. In this paper, we present two such language extensions, i.e. a design pattern and a concept from the process control system domain. We have identified that compiler support for extensible languages should fulfil requirements of managing complexity, maintainability, extensibility and reusability. Our LayOM compiler is based on the delegating compiler object approach, providing a structural decomposition dimension in addition to the traditional functional decomposition. This approach has proven to be very beneficial and fulfils the aforementioned requirements rather well.