PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
Generation of formatters for context-free languages
ACM Transactions on Software Engineering and Methodology (TOSEM)
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The Java syntactic extender (JSE)
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
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
The Eclipse 3.0 platform: adopting OSGi technology
IBM Systems Journal
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
The spoofax language workbench: rules for declarative specification of languages and IDEs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Featherweight TEX and parser correctness
SLE'10 Proceedings of the Third international conference on Software language engineering
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Growing a language environment with editor libraries
Proceedings of the 10th ACM international conference on Generative programming and component engineering
SugarJ: library-based syntactic language extensibility
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Communications of the ACM
Macros that work together: Compile-time bindings, partial expansion, and definition contexts
Journal of Functional Programming
Layout-sensitive language extensibility with SugarHaskell
Proceedings of the 2012 Haskell Symposium
Xbase: implementing domain-specific languages for Java
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
POEM: power-efficient occupancy-based energy management system
Proceedings of the 12th international conference on Information processing in sensor networks
Modular and automated type-soundness verification for language extensions
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Extensible programming languages such as SugarJ or Racket enable programmers to introduce customary language features as extensions of the base language. Traditionally, systems that support language extensions are either (i) agnostic to the base language or (ii) only support a single base language. In this paper, we present a framework for language extensibility that turns a non-extensible language into an extensible language featuring library-based extensible syntax, extensible static analyses, and extensible editor support. To make a language extensible, our framework only requires knowledge of the base language's grammar, the syntax for import statements (which activate extensions), and how to compile base-language programs. We have evaluated the generality of our framework by instantiating it for Java, Haskell, Prolog, JavaScript, and System Fω, and by studying existing module-system features and their support in our framework.