Title
Modular specification and dynamic enforcement of syntactic language constraints when generating code
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.
Year
DOI
Venue
2014
10.1145/2577080.2577089
MODULARITY
Keywords
Field
DocType
target language,syntactic language constraint,integrated support,context-sensitive constraint,modular specification,dynamic approach,regular constructor,various language extension,dynamic enforcement,language-specific constraint,typesmart constructor,generative programming,key problem,dynamic analysis,abstract syntax tree
Metaprogramming,Programming language,Program transformation,Computer science,Abstract syntax tree,Theoretical computer science,Compiler,Haskell,Generative grammar,Syntax,Type constructor
Conference
Citations 
PageRank 
References 
1
0.41
0
Authors
4
Name
Order
Citations
PageRank
Sebastian Erdweg146133.21
Vlad Vergu2475.01
Mira Mezini33171211.04
Eelco Visser41683123.27