2013-05-05 12 views
5

私は言語パーサをPHPで書いていますを探しています。PHPで書かれた言語パーサーライブラリ

目標はです。カスタム言語を読んで、PHPコードを読んではいけません。

基本的には、言語の構文を指定し、コードスニペットを与え、それを表す構造体を取得したいと考えています。次に、コードスニペットを実行するためにその構造をトラバースすることができます。私は構造がASTであると信じていますが、これが唯一の選択肢であるかどうかは分かりません(私はパーサーとその語彙に親密ではありません)。

私はDoctrine DQL parserを見ましたが、一般的な言語パーサのようには見えません。

+0

http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/ - sourceforgeにも1つありますが、リンクを検索するには怠惰です。あなたはレモンで始めることができますが、通常は簡単に始めることができますが、生成されたPHPクラスのファイルサイズを見ると落ちることはありません。 – hakre

+0

質問を終了したい人は、 –

+0

@hakreを説明してください。面白いので、LemonはPHPで書かれたパーサーを生成しますか?私はそれを調べます。私はむしろ代わりに汎用的なPHPのライブラリを解析したいと思います(言語が進化すれば、Lemonと前後することを避けます)。 –

答えて

6

これは完全なリストではありませんが、PHPランタイムレクサー/パーサーを探している場合、例外的なプロジェクトの1つはNikiCのPhlexyです。

PHP-Parserの中にユースケースがあります。これは、文法ファイルから部分的に生成された抽象構文木(AST)を持つPHP言語のパーサーです。

これまでのところ私自身の研究から、PHPユーザー空間にはこのようなプロジェクトは多くなく、NikiCの2つのライブラリは非常に良い例です。

もっとフレックスルールに従ったレクサーを探しているのなら、私はXDOMにレックスCSSセレクタの構文を書いています。それはパーサーでもありますが、パーサーは存在しても文法ファイルに基づいていませんCSSの仕様ではレクサーは.lexファイルに基づいています。

関連する問題