具有最大线路长度功能的Php解析器打印机
问题描述:
我在想它是否存在能够执行所需最大线路长度的php解析器的漂亮打印机?具有最大线路长度功能的Php解析器打印机
(这似乎很简单实现一些基本情况(数组元素列表,函数的参数列表),但它开始与变量表达式等令人不解)
答
据我知道有没有现成的漂亮PHP-Parser的打印机考虑了右边距。
PHP-Parser本身有standard pretty printer。
还有一个用于PHP-Parser的PSR-2 pretty printer。
DIY
如果这些是不够的,你必须自己写一个漂亮的打印机。
恕我直言,这应该不难。当节点超出右边距并缩进4个空格(或任何您使用的)时,您可以简单地进行换行。然后你可以开始优化像数组定义等事情。
答
对不起,延迟回复。你也可以使用PHP Front。对所有嵌套语句进行缩进,每个嵌套2个空格。
某些自定义缩进是可能的。它可在PHP Front。
解析器和漂亮的打印机也一起使用source-distribution of PHP的测试文件进行测试。
每个测试文件都会被解析,漂亮的打印,解析并再次打印。
通过在两个分析文件和两个漂亮打印文件之间执行差异来测试此往返的正确性。
但是我推荐使用Standard one,因为它有很多功能。它有变量表达式和数组表达式feautures。就像在PHP前面一样,它仍然可以使用数组。
标准漂亮打印机:(变量表达式&阵列)
public function pExpr_Variable(Expr\Variable $node) {
if ($node->name instanceof Expr) {
return '${' . $this->p($node->name) . '}';
} else {
return '$' . $node->name;
}
}
public function pExpr_Array(Expr\Array_ $node) {
return 'array(' . $this->pCommaSeparated($node->items) . ')';
}