PHP7 で利用できる php-ast 拡張モジュールを導入して、PHP のプログラムのファイルサイズと抽象構文木のノード数の関係をプロットしてみます。 PHP7 では、プログラムを実行する際、構文解析の結果を抽象構文木 (Abstract Syntax Tree) の形にして、それからバイトコードを生成するようになりました*1。抽象構文木を作ってフェーズを分けることには、コンパイラの実装の見通しがよくなる、さまざまな最適化を実装しやすくなる、といった利点があります。このようにフェーズを分けることはコンパイラの実装では一般的で、下記の Wikipedia の説明にもあるように、おおまかには、抽象構文木を作るところまでの処理をフロントエンド、抽象構文木を解析、最適化して実行コードを出力する処理をバックエンドと呼びます。 コンパイラ - Wikipedia 抽象構文木はコンパイラの内部で利用さ
![PHP プログラムのファイルサイズと抽象構文木のノード数の分布 - y_uti のブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/5422a40dfdbfc7e53e6b4aa099ce15aab9236bbb/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fy%2Fy_uti%2F20151205%2F20151205141242.png)