C中的SQL解析器

我想在C中解析和存储SQL DML(INSERT,UPDATE,DELETE)语句的列和值。需要开源代码的URL或我可以链接我的C程序的库。 该平台是SUSE Linux。 试图制作和使用libSQL失败。 详细的答案表示赞赏。 谢谢。

附加说明:请建议我可以与我的C程序链接的库/代码。 在我的程序中,我想使用此库的函数来解析和使用标记进行进一步处理。

您可以查看SQLite的源代码。 它使用名为Lemon的解析器。

链接:

SQLite架构

柠檬解析器

您还可以查看postgresql-plpython3的源代码。 看起来它有一个纯粹的基于C的SQL解析器。

链接:

postgresql-plpython3 @ github

我建议从真正的DBMS的真正解析器开始。 自由软件中有几种。 例如, PostgreSQL的解析器位于发行版的目录src/backend/parser中,并用C和Yacc编写。

请参阅Google Lexbook中的“Lex&Yacc”(O’Reilly)中的“ 解析SQL ”一章http://books.google.fr/books?id=YrzpxNYegEkC&lpg=PT1&dq=bison%20flex%20sql%20grammar&client=firefox-a&hl = EN&PG = PA109

你看过SQLite了吗? 它肯定有解析SQL的代码,所以也许你可以避免重新实现它。

除了其他语言之外, ANTLR可以针对C语言,其预制语法目录中有一堆SQL方言 – 特别是MySQL和Oracle。

不确定是否有任何成熟的C sql解析器可以轻松地做到这一点。

这是一个Java版本的SQL库可以完全满足您的需求,它可以用来轻松地从复杂的SQL查询中检索/重构表名和列名 。

μSQLforC ++

什么是μSQL?

μSQL是C ++的一个SQL解析器引擎,可以轻松地开发基于SQL的应用程序,它还支持其他SQL,如域特定语言,如UnQL和GQL。 因为μSQL只在旧的标准C ++库中编写,例如带有ANTLR的STL,所以您可以将它与许多C ++编译器和平台一起使用。

回报Github

您是否考虑过使用lex和yacc编写自己的文档? (黑客 – 硬核方法)

不是微不足道..但这个网站可能会帮助你开始