HackerPapers

arXiv:1606.08866cs.PL

Technical Report: Towards a Universal Code Formatter through Machine Learning

Terence Parr, Jurgin Vinju

Abstract

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.

arXiv comments
Journal reference
DOI
Subjects
cs.PLProgramming Languages cs.AIArtificial Intelligence cs.LGMachine Learning

On Hacker News

Linked by 2 identifiable commenters in 2 comments across 2 threads, from Mar 2020 to Nov 2024. Found in 1 HN submission from Apr 2017 to Apr 2017. Open submission discussions.

Comments linking this paper, per year.

Discussed in comments2 threads

    • Speaking of naming: did you guys see this one? https://arxiv.org/abs/1606.08866 And this: https://github.com/antlr/codebuff

      papa-vovaView on HNParent context

    • If you enjoyed reading this, you might want to check out CodeBuff: https://github.com/antlr/codebuff CodeBuff is based on a paper by Terrence Parr and Juergen Vinju, “Towards a Universal Code Formatter through Machine Learning”: https://arxiv.org/abs/1606.08866

      bmc7505View on HNParent context

Submitted to Hacker News

Connected through shared HN threads, not inferred similarity or a recommendation.