Affiliation:
1. TU Berlin, Berlin, Germany
2. TU Darmstadt, Darmstadt, Germany
Abstract
Language extensions introduce high-level programming constructs that protect programmers from low-level details and repetitive tasks. For such an abstraction barrier to be sustainable, it is important that no errors are reported in terms of generated code. A typical strategy is to check the original user code prior to translation into a low-level encoding, applying the assumption that the translation does not introduce new errors. Unfortunately, such assumption is untenable in general, but in particular in the context of extensible programming languages, such as Racket or SugarJ, that allow regular programmers to define language extensions.
In this paper, we present a formalism for building and automatically verifying the type-soundness of syntactic language extensions. To build a type-sound language extension with our formalism, a developer declares an extended syntax, type rules for the extended syntax, and translation rules into the (possibly further extended) base language. Our formalism then validates that the user-defined type rules are sufficient to guarantee that the code generated by the translation rules cannot contain any type errors. This effectively ensures that an initial type check prior to translation precludes type errors in generated code. We have implemented a core system in PLT Redex and we have developed a syntactically extensible variant of System F
w
that we extend with let notation, monadic do blocks, and algebraic data types. Our formalism verifies the soundness of each extension automatically.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference28 articles.
1. Program transformation with scoped dynamic rewrite rules;Bravenboer M.;Fundamenta Informaticae,2006
2. Flexible type analysis
3. D. de Rauglaudre. Camlp4 reference manual. http://caml.inria.fr/pub/docs/manual-camlp4/index.html 2003. accessed Mar. 26 2013. D. de Rauglaudre. Camlp4 reference manual. http://caml.inria.fr/pub/docs/manual-camlp4/index.html 2003. accessed Mar. 26 2013.
4. Language composition untangled
Cited by
4 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Reasonably programmable literal notation;Proceedings of the ACM on Programming Languages;2018-07-30
2. Inferring type rules for syntactic sugar;Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation;2018-06-11
3. Inferring scope through syntactic sugar;Proceedings of the ACM on Programming Languages;2017-08-29
4. Type Error Diagnosis for Embedded DSLs by Two-Stage Specialized Type Rules;Programming Languages and Systems;2016