我想知道php解析器是否存在漂亮的打印机,能够强制执行所需的最大行长度?
(对于一些基本情况(数组元素列表,函数参数列表),实现起来似乎相当简单,但是对于变量表达式等,它开始令人困惑)
据我所知,目前还没有一个漂亮的PHP-Parser打印机考虑到右距。
这是PHP-Parser本身的标准漂亮打印机。
还有一个PSR-2漂亮的打印机为PHP-Parser制作。
DIY
如果这些还不够,你必须自己写一个漂亮的打印机。
恕我直言,这应该不难。当一个节点超过右边距并缩进4个空格(或任何您使用的空格)时,您可以简单地换行。然后你就可以开始优化数组定义之类的东西了。
很抱歉回复晚了。你也可以使用PHP Front。缩进语句的所有嵌套,每个嵌套2个空格。
一些定制缩进是可能的。它可以在PHP Front中使用。
解析器和漂亮的打印机也一起使用PHP源代码发行版的测试文件进行测试。
每个测试文件都经过解析、正确打印、解析和正确打印。
这种往返的正确性是通过在两个解析的文件和两个漂亮打印的文件之间执行差异来测试的。
然而,我得到的建议是使用标准版,因为它有很多功能。它具有变量表达式和数组表达式的特性。而在PHP前端,使用数组仍然存在一些bug。
Standard Pretty Printer:(变量表达式&数组)
public function pExpr_Variable(ExprVariable $node) {
if ($node->name instanceof Expr) {
return '${' . $this->p($node->name) . '}';
} else {
return '$' . $node->name;
}
}
public function pExpr_Array(ExprArray_ $node) {
return 'array(' . $this->pCommaSeparated($node->items) . ')';
}