Abstract:
Meta-AspectJ (MAJ) is a language tool for generating AspectJ programs
using code templates. MAJ itself is an extension of Java, so users can
interleave arbitrary Java code with AspectJ code templates. MAJ is a
structured meta-programming tool: a well-typed generator implies a
syntactically correct generated program. MAJ promotes a methodology
that combines aspect-oriented and generative programming. Potential
applications range from implementing domain-specific languages with
AspectJ as a back-end to enhancing AspectJ with more powerful
general-purpose constructs. In addition to its practical value, MAJ
offers valuable insights to meta-programming tool designers. It is a
mature meta-programming tool for AspectJ (and, by extension, Java): a
lot of emphasis has been placed on context-sensitive parsing and
error-reporting. As a result, MAJ minimizes the number of
meta-programming (quote/unquote) operators and uses type inference to
reduce the need to remember type names for syntactic entities.