技术细节
这个打印机是 recast 打印机的分支,其算法被 Wadler 在 "A prettier printer" 中描述的算法所取代。仍然可能存在来自 recast 的一些需要清理的遗留代码。
基本思想是,打印机接收一个 AST 并返回输出的中间表示,然后打印机使用该表示生成字符串。这样做的好处是,打印机可以“测量”IR 并查看输出是否适合一行,如果不适合则进行换行。
这意味着打印 AST 的大部分逻辑都涉及生成输出的抽象表示,其中包含某些命令。例如,["(", line, arg, line, ")"]
将表示打开括号、一个参数和关闭括号的串联。但是,如果这在一行中放不下,打印机可以在指定 line
的位置进行换行。
该 代码片段 具有一个特殊的模式,用于探索 Prettier 的中间表示是如何打印的。要进入该模式,请打开侧边栏(“显示选项”按钮)并将 parser
选项设置为特殊值 doc-explorer
。
更多(粗略的)细节可以在 commands.md 中找到。