One tool, many languages: language-parametric transformation with incremental parametric syntax
Name
oopsla18main-p221-p.pdf
Description
Published version
Size
534.1 KB
Format
Adobe PDF
Checksum (MD5)
58d29fcf3326c5d4a9aaad2cdefbd506
Author(s) • •
Koppel, James
Premtoon, Varot
Solar Lezama, Armando
Date Issued
October 2018
Journal
Journal Proceedings of the ACM on Programming Languages
Publisher
Association for Computing Machinery (ACM)
Citation
Koppel, James et al. "One tool, many languages: language-parametric transformation with incremental parametric syntax." Proceedings of the ACM on Programming Languages 2, OOPSLA (November 2018): 122 © 2018 Association of Computing Machinery
Version
Final published version
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.
MIT Department
Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
Terms of Use
Creative Commons Attribution 4.0 International license
Persistent DSpace Link
DOI of Published Version
https://doi.org/10.1145/3276492