Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Monotonic conflict resolution mechanisms for inheritance
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
C and tcc: a language and compiler for dynamic code generation
ACM Transactions on Programming Languages and Systems (TOPLAS)
MultiJava: modular open classes and symmetric multiple dispatch for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Growing languages with metamorphic syntax macros
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
The Java syntactic extender (JSE)
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Macros as multi-stage computations: type-safe, generative, binding macros in MacroML
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Runtime aspect weaving through metaprogramming
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Microsoft C# Language Specifications
Microsoft C# Language Specifications
A": A Language for Implementing Language Processors
IEEE Transactions on Software Engineering
Predicate Dispatching: A Unified Theory of Dispatch
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
OpenJava: A Class-Based Macro System for Java
Proceedings of the 1st OOPSLA Workshop on Reflection and Software Engineering: Reflection and Software Engineering, Papers from OORaSE 1999
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Linguistic reuse
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Runtime aspect weaving through metaprogramming
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Composable and compilable macros:: you want it when?
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
XAspects: an extensible system for domain-specific aspect languages
OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Separation of concerns through semantic annotations
OOPSLA '02 Companion of the 17th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
PolyD: a flexible dispatching framework
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Compile-time meta-programming in a dynamically typed OO language
DLS '05 Proceedings of the 2005 symposium on Dynamic languages
Adding domain-specific and general purpose language features to Java with the Java language extender
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Expressive programs through presentation extension
Proceedings of the 6th international conference on Aspect-oriented software development
PPL: A whole-image processing language
Computer Languages, Systems and Structures
Implementing aspect-oriented programming constructs as modular language extensions
Science of Computer Programming
Jeannie: granting java native interface developers their wishes
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Xoc, an extension-oriented compiler for systems programming
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Expressive and safe static reflection with MorphJ
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Language support for model-driven software development
Science of Computer Programming
Domain-specific languages and program generation with meta-AspectJ
ACM Transactions on Software Engineering and Methodology (TOSEM)
Designing Syntax Embeddings and Assimilations for Language Libraries
Models in Software Engineering
A proposal for extensible AspectJ
Proceedings of the 4th workshop on Domain-specific aspect languages
Building language towers with ziggurat
Journal of Functional Programming
Software Language Engineering
Silver: An extensible attribute grammar system
Science of Computer Programming
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
ABI compatibility through a customizable language
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Morphing: Structurally shaping a class by reflecting on others
ACM Transactions on Programming Languages and Systems (TOPLAS)
Statically safe program generation with SafeGen
Science of Computer Programming
Backstage Java: making a difference in metaprogramming
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Generalized type-based disambiguation of meta programs with concrete object syntax
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Statically safe program generation with safegen
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
MOST-flexiPL: modular, statically typed, flexibly extensible programming language
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Morphing: safely shaping a class in the image of others
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Submodules in racket: you want it when, again?
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Hi-index | 0.00 |
We have designed and implemented Maya, a version of Java that allows programmers to extend and reinterpret its syntax. Maya generalizes macro systems by treating grammar productions as generic functions, and semantic actions on productions as multimethods on the corresponding generic functions. Programmers can write new generic functions (i.e., grammar productions) and new multimethods (i.e., semantic actions), through which they can extend the grammar of the language and change the semantics of its syntactic constructs, respectively. Maya's multimethods are compile-time metaprograms that transform abstract syntax: they execute at program compile-time, because they are semantic actions executed by the parser. Maya's multimethods can be dispatched on the syntactic structure of the input, as well as the static, source-level types of expressions in the input. In this paper we describe what Maya can do and how it works. We describe how its novel parsing techniques work and how Maya can statically detect certain kinds of errors, such as code that generates references to free variables. Finally, to demonstrate Maya's expressiveness, we describe how Maya can be used to implement the MultiJava language, which was described by Clifton et al. at OOPSLA 2000.