Syntactic extensions in the programming language LISP
Syntactic extensions in the programming language LISP
Making form follow function: an exercise in functional programming style
Software—Practice & Experience
Macro-by-example: Deriving syntactic transformations from their specifications
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
The C programming language
A survey of adaptable grammars
ACM SIGPLAN Notices
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
ACM SIGPLAN Notices - Haskell special issue
The design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology (TOSEM)
The programming language jigsaw: mixins, modularity and multiple inheritance
The programming language jigsaw: mixins, modularity and multiple inheritance
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Catching bugs in the web of program invariants
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proper tail recursion and space efficiency
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Revised5 report on the algorithmic language scheme
ACM SIGPLAN Notices
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Macro instruction extensions of compiler languages
Communications of the ACM
The Definition of Standard ML
Expressing Structural Properties as Language Constructs
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Synthesizing Object-Oriented and Functional Design to Promote Re-Use
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
DrScheme: A Pedagogic Programming Environment for Scheme
PLILP '97 Proceedings of the9th International Symposium on Programming Languages: Implementations, Logics, and Programs: Including a Special Trach on Declarative Programming Languages in Education
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Modular Domain Specific Languages and Tools
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
A special-purpose language for picture-drawing
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Transformation-by-Example for XML
PADL '00 Proceedings of the Second International Workshop on Practical Aspects of Declarative Languages
SXSLT: Manipulation Language for XML
PADL '03 Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages
Beyond Generic Component Parameters
CD '02 Proceedings of the IFIP/ACM Working Conference on Component Deployment
Type-specialized staged programming with process separation
Higher-Order and Symbolic Computation
Hi-index | 0.00 |
Generative programming is widely used both to develop new programming languages and to extend existing ones with domain-specific sub-languages. This paper describes McMicMac, a framework for generative programming. McMicMac uses tree-transforming macros as language specifications, and enhances them with inherited and synthesized attributes. The enhanced transformers can describe general compilation tasks. Families of these specifications are grouped into mixin-like collections called vocabularies. Programmers can define new languages by composing these vocabularies. We have implemented McMicMac for Scheme and used it to build several systems, including the DrScheme programming environment. The principles of McMicMac carry over to other languages and environments.