Php 分析/标记包含SQL命令的字符串

Php 分析/标记包含SQL命令的字符串,php,python,sql,parsing,tokenize,Php,Python,Sql,Parsing,Tokenize,是否有任何开源库(任何语言,首选python/PHP)可以将ANSI SQL字符串标记化/解析为各种组件 也就是说,如果我有以下字符串 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.

是否有任何开源库(任何语言,首选python/PHP)可以将ANSI SQL字符串标记化/解析为各种组件

也就是说,如果我有以下字符串

 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源代码中的位置,请随意传递)


谢谢

SQLite源代码有一个名为
parse.y
的文件,其中包含SQL语法。您可以将该文件传递给生成执行语法的C代码

我在源代码中找不到
parse.y
文件,介意链接到它吗?