programming-language

一般的なコードフォーマッターの実装について。

How to write a code formatter

1行当たり最大文字数がこのくらい、としたときに、どういう戦略で折り返すかは結構難しい問題。

文字列→トークン→ASTという順番で変換されるので、この逆順が良いのかとも思ったが、

AST→フォーマッタ用の専用の木構造みたいな中間表現を一度挟んだほうが賢いのかもしれない

Rustprettyクレートがコンビネーターとして定義してあるやつ

Tree-sitterを使った汎用フォーマッターTopiaryとかいうのもある