2018-11-29
Structuring languages as object-oriented libraries
Publication
Publication
The development of programming languages is challenging because the typical language processing toolchain consists of different artifacts interacting with each other. The ideal scenario for engineering languages is one closer to traditional software engineering, where reuse, in the form of frameworks and libraries, has optimized development times. In the case of programming language engineering, there is a tension between extending the syntax and adding new operations to a language. This tension in terms of extensibility is concisely summarized in the Expression Problem.
Object Algebras solve the Expression Problem in the context of object-oriented programming, requiring only inheritance and parametric polymorphism from the host language. This thesis postulates that, given their advantages in terms of modularity and extensibility, Object Algebras are a suitable technique for structuring libraries of languages, making reuse a central practice in the implementation of languages.
This dissertation thus introduces applications of the Object Algebra pattern for implementing language libraries: Recaf, a framework for defining libraries of Java dialects, and Modular Interpreters with Implicit Context Propagation, a technique to compose language interpreters with different context requirements. As supporting mechanisms we introduce String Origins, a technique to trace the results of program transformations back to their origins, and JEff, a language that integrates object orientation with effects and handlers, as a first step towards an object-oriented language that could host effectful modular interpreters.
The results described in this dissertation show that object orientation, and Object Algebras in particular, provides a fertile foundation for the vision of library-based language development.
Additional Metadata | |
---|---|
P. Klint (Paul) , T. van der Storm (Tijs) | |
Universiteit van Amsterdam | |
hdl.handle.net/11245.1/c8692017-efa2-4eb3-85f5-09c7c5d99b6d | |
IPA dissertation series | |
Organisation | Software Analysis and Transformation |
Inostroza Valdera, P. (2018, November 29). Structuring languages as object-oriented libraries. IPA dissertation series. Retrieved from http://hdl.handle.net/11245.1/c8692017-efa2-4eb3-85f5-09c7c5d99b6d |