1. ホーム
  2. php

[解決済み] PHPで書かれたまともなPHPパーサーは?[クローズド]

2023-08-27 21:47:07

質問

私は、PHPのコードを操作したり分析したりする仕事をたくさんしています。通常、私はただ トーケナイザー を使っています。ほとんどのアプリケーションではこれで十分です。しかし、レキサを使用した解析は、(明らかに)十分に信頼できないことがあります。

したがって、私は、PHPで書かれたいくつかのPHPパーサーを探しています。私が見つけたのは hnw/PhpParser kumatch/stagehand-php-parser . どちらも zend_language_parser.y を C の代わりに PHP で .y ファイルに自動変換する (そして LALR(1) パーサーにコンパイルする) ことによって作成されます。しかし、この自動変換はどうしてもうまくいきません。

では、PHP で書かれたまともな PHP パーサーはあるのでしょうか? (PHP 5.2 用のものと 5.3 用のものが必要です。しかし、それらのうちの1つだけでも、良い出発点でしょう)。

どのように解決するのですか?

完全で安定したパーサーはここでは見つからなかったので、私は自分で書くことにしました。以下はその結果です。

PHP-パーサ : PHP で書かれた PHP パーサー

このプロジェクトは、PHP 5.2 から PHP 8.0 までの任意の PHP バージョンで書かれたコードのパースをサポートしています。

パーサー自体とは別に、ライブラリはいくつかの関連コンポーネントを提供します。

  • ASTをPHPに戻すコンパイル ("きれいな印刷")
  • ASTをトラバースし変更するためのインフラストラクチャ
  • XMLへのシリアライズとXMLからのシリアライズ(人間が読める形式でのダンプと同様)
  • 名前空間の解決 (エイリアスなど)

使用法の概要については "基本コンポーネントの使用法" のセクションを参照してください。 ドキュメント .