Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Eli: a complete, flexible compiler construction system
Communications of the ACM
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Growing languages with metamorphic syntax macros
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
ACM Transactions on Internet Technology (TOIT)
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
The ASF+SDF Meta-environment: A Component-Based Language Development Environment
CC '01 Proceedings of the 10th International Conference on Compiler Construction
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
The metafront system: Safe and extensible parsing and transformation
Science of Computer Programming
A shortcut fusion rule for circular program calculation
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Silver: an Extensible Attribute Grammar System
Electronic Notes in Theoretical Computer Science (ENTCS)
Information Systems
Stratego/XT 0.17. A language and toolset for program transformation
Science of Computer Programming
Analyzing ambiguity of context-free grammars
CIAA'07 Proceedings of the 12th international conference on Implementation and application of automata
Semantics and pragmatics of new shortcut fusion rules
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Yet another language extension scheme
SLE'09 Proceedings of the Second international conference on Software Language Engineering
Hi-index | 0.00 |
We propose an algebra of languages and transformations as a means for extending languages syntactically. The algebra provides a layer of high-level abstractions built on top of languages (captured by context-free grammars) and transformations (captured by constructive catamorphisms). The algebra is self-contained in that any term of the algebra specifying a transformation can be reduced to a catamorphism, before the transformation is run. Thus, the algebra comes ''for free'' without sacrificing the strong safety and efficiency properties of constructive catamorphisms. The entire algebra as presented in the paper is implemented as the Banana Algebra Tool which may be used to syntactically extend languages in an incremental and modular fashion via algebraic composition of previously defined languages and transformations. We demonstrate and evaluate the tool via several kinds of extensions.