Abstract:
. Aspect-oriented programming provides the programmer with means to cross-cut conventional program structures, in particular the class hierarchies of object-oriented programming. This paper studies the use of aspect orientation in structuring syntax directed compilers implemented as attribute grammars. Specifically, it describes a method for specifying definitions of related attributes as `aspects' and treating them as first-class objects, that can be stored, manipulated and combined. It is hoped that this embedding of an aspect-oriented programming style in Haskell provides a stepping stone towards a more general study of the semantics of aspect-oriented programming. 1 Introduction Compilers are often structured by recursion over the abstract syntax of the source language. For each production in the abstract syntax, one defines a function that specifies how a construct is to be translated. The method of structuring compilers in this syntax--directed manner underlies the for...
Citations
|
1122
|
Introduction to Functional Programming
– Bird, Wadler
- 1988
|
|
1078
|
Aspect-oriented programming
– Kiczales, Lamping, et al.
- 1997
|
|
382
|
Semantics of Context-Free Languages
– Knuth, E
- 1968
|
|
194
|
Adaptive Object-Oriented Software. The Demeter Method with Propagation Patterns
– Lieberherr
- 1996
|
|
177
|
The Synthesizer Generator: A System for Constructing Language{Based Editors
– Reps, Teitelbaum
- 1988
|
|
116
|
Typechecking records and variants in a natural extension of ML
– Rémy
- 1989
|
|
109
|
Type inference for record concatenation and multiple inheritance
– Wand
- 1989
|
|
87
|
Eli: A Complete, Flexible Compiler Construction System
– Gray, Heuring, et al.
- 1992
|
|
67
|
Attribute grammars as a functional programming paradigm
– Johnsson
- 1987
|
|
65
|
A polymorphic record calculus and its compilation
– Ohori
- 1995
|
|
62
|
Attribute Grammars: Definitions, Systems, and Bibliography
– DERANSART, JOURDAN, et al.
- 1988
|
|
62
|
Modularity and reusability in attribute grammars
– Kastens, Waite
- 1994
|
|
58
|
The genvoca model of software-system generators
– Batory, Singhal, et al.
- 1994
|
|
56
|
A Polymorphic Type System for Extensible Records and Variants
– Gaster, Jones
- 1996
|
|
47
|
Attribute coupled grammars
– Ganzinger, Giegerich
- 1984
|
|
31
|
Typing record concatenations for free
– Rémy
- 1992
|
|
28
|
A novel representation of lists and its application to the function “reverse
– Hughes
- 1986
|
|
24
|
Designing and implementing combinator languages
– Swierstra, Alcocer, et al.
|
|
19
|
Modular Grammars for Programming Language Prototyping
– Adams
- 1991
|
|
18
|
Modular compilers based on monad transformers
– Harrison, Kamin
- 1998
|
|
18
|
Design, Implementation and Evaluation of the FNC-2 Attribute Grammar System
– Jourdan, Parigot, et al.
- 1990
|
|
12
|
Lrc - A Generator for Incremental Language-Oriented Tools
– Kuiper, Saraiva
- 1998
|
|
11
|
Functional Programming, Program Transformations and Compiler Construction
– Augusteijn
- 1993
|
|
10
|
First-class attribute grammars
– Moor, Backhouse, et al.
|
|
9
|
Strongly Non-Circular Attribute Grammars and their recursive evaluation
– Jourdan
- 1984
|
|
9
|
Attribute grammars in a compiler construction environment
– Kastens
- 1991
|
|
9
|
Using attribute grammars to derive efficient functional programs
– Kuiper, Swierstra
- 1987
|
|
7
|
Intentional programming: Innovation in the legacy age. Presented at IFIP Working group 2.1. Available from URL http://www.research. microsoft.com/research/ip
– Simonyi
- 1996
|
|
5
|
GAG: A Practical Compiler Generator, volume 141
– Kastens, Hutt, et al.
- 1982
|
|
3
|
A formal development of an efficient supercombinator compiler
– Bird
- 1987
|
|
3
|
GAG: a Practical Compiler Generator, volume 141 of LNCS
– Kastens, Hutt, et al.
- 1982
|
|
1
|
An attribute evaluator in Haskell
– Rushall
|