Implementing Extensible Compilers

New extensions to programming languages are constantly being proposed. But implementing these extensions usually turns out to be a very difficult and expensive task, since conventional compilers often lack extensibility and reusability. In this paper we present some fundamental techniques to implement extensible compilers in an object-oriented language. For being able to implement extensible compiler passes, we introduce an extensible form of algebraic datatypes. Our extensible algebraic datatypes with defaults yield a simple programming protocol for implementing extensible and reusable compiler passes in a functional style. We propose an architectural design pattern Context-Component which is specifically targeted towards building extensible, hierarchically composed systems. Our software architecture for extensible compilers combines the use of algebraic types, known from functional languages, with this object-oriented design pattern. We show that this approach enables us to extend existing compilers flexibly without modifying any source code. Our techniques have been successfully applied in the implementation of the extensible Java compiler JaCo.


Publié dans:
Proceedings of the ECOOP 2001 Workshop on Multiparadigm Programming with Object-Oriented Languages
Présenté à:
ECOOP 2001 Workshop on Multiparadigm Programming with Object-Oriented Languages, Budapest, June 2001
Année
2001
Laboratoires:




 Notice créée le 2006-01-24, modifiée le 2019-08-12

n/a:
Télécharger le document
PS.GZ

Évaluer ce document:

Rate this document:
1
2
3
 
(Pas encore évalué)