Abstract
A key problem in metaprogramming and specifically in generative programming is to guarantee that generated code is well-formed with respect to the context-free and context-sensitive constraints of the target language. We propose typesmart constructors as a dynamic approach to enforcing the well-formedness of generated code. A typesmart constructor is a function that is used in place of a regular constructor to create values, but it may reject the creation of values if the given data violates some language-specific constraint. While typesmart constructors can be implemented individually, we demonstrate how to derive them automatically from a grammar, so that the grammar remains the sole specification of a language's syntax and is not duplicated. We have integrated support for typesmart constructors into the run-time system of Stratego to enforce usage of typesmart constructors implicitly whenever a regular constructor is called. We evaluate the applicability, performance, and usefulness of typesmart constructors for syntactic constraints in a compiler for MiniJava developed with Spoofax and in various language extensions of Java and Haskell implemented with SugarJ and SugarHaskell.
Original language | English |
---|---|
Title of host publication | MODULARITY '14 |
Subtitle of host publication | Proceedings of the 13th international conference on Modularity |
Place of Publication | New York, NY |
Publisher | Association for Computing Machinery (ACM) |
Pages | 241-252 |
Number of pages | 12 |
ISBN (Print) | 978-1-4503-2772-5 |
DOIs | |
Publication status | Published - 2014 |
Event | 13th International Conference on Modularity - Lugano, Switzerland Duration: 22 Apr 2014 → 26 Apr 2014 Conference number: 13 |
Conference
Conference | 13th International Conference on Modularity |
---|---|
Abbreviated title | Modularity 2014 |
Country/Territory | Switzerland |
City | Lugano |
Period | 22/04/14 → 26/04/14 |