Affiliation:
1. Massachusetts Institute of Technology, USA
Abstract
We present a new approach for building source-to-source transformations that can run on multiple programming languages, based on a new way of representing programs called incremental parametric syntax. We implement this approach in Haskell in our Cubix system, and construct incremental parametric syntaxes for C, Java, JavaScript, Lua, and Python. We demonstrate a whole-program refactoring tool that runs on all of them, along with three smaller transformations that each run on several. Our evaluation shows that (1) once a transformation is written, little work is required to configure it for a new language (2) transformations built this way output readable code which preserve the structure of the original, according to participants in our human study, and (3) our transformations can still handle language corner-cases, as validated on compiler test suites.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference56 articles.
1. Franz Baader and Tobias Nipkow. 1999. Term Rewriting and All That. Cambridge university press. Franz Baader and Tobias Nipkow. 1999. Term Rewriting and All That. Cambridge university press.
2. Compositional data types
3. K-Java
4. Niklas Broberg. 2015. language-java: Manipulating Java source: abstract syntax lexer parser and pretty-printer. http: //hackage.haskell.org/package/language-java-0.2.8 . (November 2015). Niklas Broberg. 2015. language-java: Manipulating Java source: abstract syntax lexer parser and pretty-printer. http: //hackage.haskell.org/package/language-java-0.2.8 . (November 2015).
Cited by
7 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Syntactic Code Search with Sequence-to-Tree Matching: Supporting Syntactic Search with Incomplete Code Fragments;Proceedings of the ACM on Programming Languages;2024-06-20
2. A Lightweight Polyglot Code Transformation Language;Proceedings of the ACM on Programming Languages;2024-06-20
3. Automatically deriving control-flow graph generators from operational semantics;Proceedings of the ACM on Programming Languages;2022-08-29
4. Demystifying dependence;Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software;2020-11-17
5. Semantic code search via equational reasoning;Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation;2020-06-06