Modular specification and dynamic enforcement of syntactic language constraints when generating code
Modular specification and dynamic enforcement of syntactic language constraints when generating code
复制标题
生成代码时的模块化规范和句法语言约束的动态实施
DOI:
10.1145/2577080.2577089
复制
发表时间:
2014
期刊:
影响因子:
--
通讯作者:
Eelco Visser
中科院分区:
文献类型:
--
作者:
Sebastian Erdweg;V. Vergu;Mira Mezini;Eelco Visser
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.