PHP で Flex/Bison (または Lex/Yacc など) をサポートする方法を探しています。具体的には、Web UI にブール値クエリ パーサーを実装しており、(C パーサーを呼び出したり、Python に渡したりするのではなく) すべての操作を PHP 内に保持したいと考えています。
3 に答える
PHP 用のLIMEパーサー ジェネレーター:
完全な LALR(1) パーサー ジェネレーターとエンジン (BISON や YACC など) を備えていますが、すべて PHP で行われ、入力文法はより簡単で保守しやすくなっています。アクションを PHP で記述します。PHP 出力コードを生成します。パーサーを PHP で動かします。言語を作りたいですか?
アップデート:
上記を書いたので、ここで発表されたパーサー生成用のツールが他にもいくつかあることがわかりました。
http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/
2014 年の現在、これらがより適切に維持されているかどうかはわかりませんが、私は Wez Furlong を知っています。彼は PDO の最初の開発者であり、非常に優れた開発者です。
PEAR ライブラリには、クラスLexerGeneratorおよびParserGeneratorがあります。LexerGenerator 構文はre2cと互換性があり、ParserGenerator 構文はLemon パーサー ジェネレーターと互換性があります。
PHP で PEG パーサー ジェネレーターを調べてみました: https://github.com/maetl/php-peg ?
または、パーサー コンビネーター アプローチ: http://qntm.org/locoparser ?