具有最大线路长度功能的Php-parser打印机

时间:2015-07-20 13:45:30

标签: php parsing code-formatting pretty-print php-parser

我想知道php-parser是否存在能够强制实现所需最大行长度的漂亮打印机?

(对于一些基本情况(数组元素列表,函数参数列表)实现起来似乎相当简单,但它开始令人费解变量表达式等。)

2 个答案:

答案 0 :(得分:4)

据我所知,PHP-Parser现有的漂亮打印机没有考虑到正确的保证金。

PHP-Parser本身就是standard pretty printer

还有为PHP-Parser制作的PSR-2 pretty printer

<强> DIY

如果这些不够,你就必须自己写一台漂亮的打印机。

恕我直言,这不应该是艰难的。当节点超出右边距并缩进4个空格(或您使用的任何空格)时,您可以简单地换行。然后,您可以开始优化数组定义等内容。

答案 1 :(得分:1)

很抱歉迟到的回复。您也可以使用PHP Front。缩进是针对所有语句嵌套,每个嵌套2个空格。

可以使用一些自定义缩进。它可以在PHP Front中找到。

解析器和漂亮的打印机也使用source-distribution of PHP的测试文件一起测试。

每个测试文件都经过解析,漂亮打印,解析和再次打印。

通过在两个已解析的文件和两个漂亮打印的文件之间执行差异来测试此往返的正确性。

但我建议使用Standard one因为它有很多功能。它有变量表达式和数组表达式特性。在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) . ')';
    }