~/talk

One tool, many languages: language-parametric transformation with incremental parametric syntax

Talkat OOPSLA 2018 · 2018-11-07..11-09
github:jkoppel
slides:none on file

A new representation called incremental parametric syntax lets one write a single source-to-source transformation and run it on many real languages with little extra work. The system, implemented in Haskell as Cubix, covers C, Java, JavaScript, Lua and Python. A realistic interprocedural plumbing transformation is implemented for five languages in ~40 hours and refactors 500 lines across 41 files in a 20k‑LOC project. Test suites (≈500k LOC) hit 98–100% pass rates, one crash bug is exposed, and human ratings favor the tool equally or slightly more than humans.

AI-written summary · about

  1. 0:00Start
  2. 1:18Opportunity?
  3. 2:20Multi-Language Transformation
  4. 4:23Syntax Definitions
  5. 4:35What Hinders Modularity?
  6. 5:44Prior Work
  7. 6:10Decomposing a Language
  8. 7:09Big Small idea: Sort injections
  9. 8:03Mixed Trees
  10. 9:01Abstracting Multiple Syntaxes
  11. 9:33"Blowing down" a Tree
  12. 9:57Cubix Architecture
  13. 11:41A Simple Transformation
  14. 11:52Implementation
  15. 12:23Interprocedural Pluming
  16. 13:04Three-Address Code Transformation (Lua, JS, Python)
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.