6

ANSI SQL文字列をさまざまなコンポーネントにトークン化/解析するオープンソースライブラリ(任意の言語、Python / PHPを推奨)はありますか?

つまり、次の文字列がある場合

 SELECT a.foo, b.baz, a.bar
 FROM TABLE_A a
 LEFT JOIN TABLE_B b
 ON a.id = b.id
 WHERE baz = 'snafu';

次のようなデータ構造/オブジェクトを取得します

 //fake PHPish 
 $results['select-columns']  = Array[a.foo,b.baz,a.bar];
 $results['tables']    = Array[TABLE_A,TABLE_B];
 $results['table-aliases'] = Array[a=>TABLE_A, b=>TABLE_B];
 //etc...

言い換えると、SQLコマンドを分解して、エンジンがそれをどう処理するかを認識できるようにするデータベースパッケージ内のコードを探しています。インターネットを検索すると、SQLを使用して文字列を解析する方法について多くの結果が得られます。それは私が望んでいることではありません。

オープンソースデータベースのコードを調べて欲しいものを見つけることができると思いますが、もう少し準備ができているものを望んでいました(ただし、MySQL、PostgreSQL、SQLiteソースのどこを見ればよいか知っている場合は、気軽に渡してください)それに沿って)

ありがとう!

4

1 に答える 1

2

SQLiteソースには、parse.ySQLの文法を含むという名前のファイルがあります。そのファイルをレモンパーサージェネレーターに渡して、文法を実行するCコードを生成できます。

于 2010-03-13T19:31:09.567 に答える