2015-07-20 38 views
-3

我在想它是否存在能夠執行所需最大線路長度的php解析器的漂亮打印機?具有最大線路長度功能的Php解析器打印機

(這似乎很簡單實現一些基本情況(數組元素列表,函數的參數列表),但它開始與變量表達式等令人不解)

回答

4

據我知道有沒有現成的漂亮PHP-Parser的打印機考慮了右邊距。

PHP-Parser本身有standard pretty printer

還有一個用於PHP-Parser的PSR-2 pretty printer

DIY

如果這些是不夠的,你必須自己寫一個漂亮的打印機。

恕我直言,這應該不難。當節點超出右邊距並縮進4個空格(或任何您使用的)時,您可以簡單地進行換行。然後你可以開始優化像數組定義等事情。

1

對不起,延遲迴復。你也可以使用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) . ')'; 
    }