I want to parse and store the columns and values of a SQL DML (INSERT, UPDATE, DELETE) statement in C. Need the URL of the open source code or a library with which I can link my C program. The platform is SUSE Linux. Have tried to make and use libSQL unsuccessfully. A detailed answer is appreciated. Thanks.
Additional Notes: Please suggest a library/code that I can link with my C program. In my program I want to use the functions of this library to parse and use the tokens for further processing.
ANTLR can target C, among other languages, and its catalog of premade grammars has a bunch of SQL dialects - notably MySQL and Oracle.
µSQL for C++
Repo on Github
Have you looked at SQLite ? It certainly does have the code to parse SQL, so maybe you could avoid reimplementing it..
I would suggest to start from the real parser of a real DBMS. There are several in free software. For instance, the parser of PostgreSQL is in the directory
src/backend/parser
of the distribution and is written in C and Yacc.See the Chapter "Parsing SQL" in "Lex & Yacc"(O'Reilly) in google books http://books.google.fr/books?id=YrzpxNYegEkC&lpg=PT1&dq=bison%20flex%20sql%20grammar&client=firefox-a&hl=en&pg=PA109
You can have a look at the source code for SQLite. It uses a parser called Lemon.
Links:
You can also look at the source code for postgresql-plpython3. Looks like it has a pure C based SQL parser.
Link: