Towards a Universal Code Formatter through Machine Learning
There are many declarative frameworks that allow us to implement code formatters relatively easily for any specific language, but constructing them is cumbersome. The first problem is that “everybody” wants to format their code differently, leading to either many formatter variants or a ridiculous number of configuration options. Second, the size of each implementation scales with a language’s grammar size, leading to hundreds of rules.
In this paper, we solve the formatter construction problem using a novel approach, one that automatically derives formatters for any given language without intervention from a language expert. We introduce a code formatter called CodeBuff that uses machine learning to abstract formatting rules from a representative corpus, using a carefully designed feature set. Our experiments on Java, SQL, and ANTLR grammars show that CodeBuff is efficient, has excellent accuracy, and is grammar invariant for a given language. It also generalizes to a 4th language tested during manuscript preparation.
|PDF of slides for Terence Parr's presentation at SLE16 (codebuff-slides.pdf)||1.27MiB|
Tue 1 Nov
|10:30 - 10:55|
|DOI Pre-print Media Attached File Attached|
|10:55 - 11:20|
Sven KeidelDelft University of Technology, Netherlands, Wulf PfeifferTU Darmstadt, Germany, Sebastian ErdwegDelft University of Technology, NetherlandsDOI Media Attached File Attached
|11:20 - 11:45|
Luis Eduardo de Souza AmorimDelft University of Technology, Netherlands, Sebastian ErdwegDelft University of Technology, Netherlands, Guido WachsmuthDelft University of Technology, Netherlands, Eelco VisserDelft University of Technology, NetherlandsDOI Media Attached File Attached
|11:45 - 12:00|
Joel LindholmLund University, Sweden, Johan ThorsbergLund University, Sweden, Görel HedinLund University, SwedenDOI Media Attached