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编写自己的文档? (黑客 – 硬核方法)
不是微不足道..但这个网站可能会帮助你开始