パーサー (主に「選択」タイプのクエリ用) が必要で、ゼロから行う手間を省きます。この目的で pgsql の scan.l/gram.y を使用する方法を知っている人はいますか? 私もpgpoolを調べましたが、似ているようです。現在、誰かがエラーなしでパーサーをコンパイルする指示を与えることができれば(おそらく提供されたメイクファイルを使用して)、(有効な?)クエリを提供して解析ツリーを(どんな形式でも)出力できるかが非常に役立つかもしれません!
2 に答える
おそらく、postgres のソース tarball からファイルを取得して個別にコンパイルすることはできません。パーサーは内部 OOP 構造を使用します (C で実装)。しかし、いくつかの可能性があります (単純ではありません) - ecpg プリプロセッサは PostgreSQL グラム ファイルをセカンダリ グラム ファイルに変換しようとします - 同じメカニズムを使用できます。小さなユーティリティ parse.pl を使用します (PostgreSQL ソース コード (src/postgresql/src/interfaces/ecpg/preproc) の一部です)。
PostgreSQL は、yacc を使用して言語パーサーをコンパイルします。おそらく、yacc ファイルを使用して、ほとんど労力をかけずに互換性のあるパーサーを作成できます。これを行うには、flex と yacc がインストールされている必要があります。
これは、ソースから .c ファイルを取得してシステムに移植するものではないことに注意してください。得られるのはパーサーだけであり、プランナーなどではありません。
質問の詳細レベルを考えると、これ以上の詳細は不可能です。おそらく、そこから始めて、行き詰まったときに別の質問を投稿することもできます。