Aspect-oriented compilers
In: Ulrich Eisenecker and Krzysztof Czarnecki, 1st International Symposium on Generative and Component-based Software Engineering (GCSE), Erfurt, Germany. Lecture Notes in Computer Science 1799, pp. 121-133, 1999.
Authors: Oege de Moor, Simon Peyton-Jones and Eric van Wyk
>
Abstract
Lazy evaluation allows compiler writers to ignore a separation into passes, and to focus on the logical structure of their compiler instead. This is also a feature of attribute grammars, which can be viewed as a particular style of lazy functional program. Compilers written in attribute grammar style are typically structured by production --- it is hard to structure them by semantic aspect, such as `environment' and `lexical level', and it is certainly not possible to view these aspects as separate units of compilation.
In this paper we propose a technique for making compiler `aspects' first-class objects, that can be stored, manipulated and combined. We propose a modest set of combinators that achieve this task in Haskell. The combinator library is an application of recent work on polymorphic type systems for record operations, in particular that of Gaster and Jones, and also of a technique due to Remy, which types symmetric record concatenation `for free'.
(PS)
BIBTEX:
@inproceedings{gcse99moor,
author = "De Moor, Oege and Peyton-Jones, Simon and Van Wyk, Eric",
title = "Aspect-oriented Compilers",
booktitle = "Generative and Component-Based Software Engineering",
editor = "Ulrich Eisenecker and Krzysztof Czarnecki",
series = "Springer Lecture Notes in Computer Science",
volume = "1799",
pages = "121-133",
year = "1999"}