技術的な詳細
非公式ベータ版翻訳
このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →
このプリンタはrecastのプリンタをフォークしたもので、そのアルゴリズムはWadlerの「A prettier printer」で提案されたものに置き換えられています。recastから継承されたコードの一部がまだ残っており、整理が必要な可能性があります。
基本的な考え方は、プリンタがASTを受け取り、出力の中間表現(IR)を生成し、それを基に文字列を生成するというものです。利点として、プリンタはIRを「測定」し、出力が1行に収まるかどうかを判断して、収まらない場合に改行できる点にあります。
つまり、ASTを印刷するロジックの大部分は、特定のコマンドを含む出力の抽象表現を生成することになります。例えば、["(", line, arg, line, ")"]は開き括弧、引数、閉じ括弧の連結を表しますが、1行に収まらない場合、プリンタはlineが指定された位置で改行できます。
Playgroundには、Prettierの中間表現がどのように印刷されるかを探索する特別モードがあります。アクセスするには、サイドバー(「Show options」ボタン)を開き、parserオプションを特殊な値doc-explorerに設定してください。
より詳細な(未整理の)情報はcommands.mdで確認できます。