Analyseur SQL en C

Je souhaite parsingr et stocker les colonnes et les valeurs d’une instruction SQL DML (INSERT, UPDATE, DELETE) en C. Besoin de l’URL du code source libre ou d’une bibliothèque avec laquelle je peux relier mon programme C. La plate-forme est SUSE Linux. J’ai essayé de créer et d’utiliser libSQL sans succès. Une réponse détaillée est appréciée. Merci.

Notes supplémentaires: Veuillez suggérer une bibliothèque / code que je peux relier à mon programme C. Dans mon programme, je souhaite utiliser les fonctions de cette bibliothèque pour parsingr et utiliser les jetons pour un traitement ultérieur.

Vous pouvez consulter le code source de SQLite. Il utilise un parsingur appelé Lemon.

Liens:

Architecture SQLite

Analyseur de citron

Vous pouvez également consulter le code source de postgresql-plpython3. On dirait qu’il a un parsingur SQL basé sur C pur.

Lien:

postgresql-plpython3 @ github

Je suggérerais de partir de l’parsingur réel d’un vrai SGBD. Il y en a plusieurs dans le logiciel libre. Par exemple, l’parsingur de PostgreSQL est dans le répertoire src/backend/parser de la dissortingbution et est écrit en C et Yacc.

Voir le chapitre ” Analyse SQL ” dans “Lex & Yacc” (O’Reilly) dans Google Books http://books.google.fr/books?id=YrzpxNYegEkC&lpg=PT1&dq=bison%20flex%20sql%20grammar&client=firefox-a&hl. = en & pg = PA109

Avez-vous regardé SQLite ? Il a certainement le code pour parsingr SQL, vous pouvez donc peut-être éviter de le réimplémenter.

ANTLR peut cibler le C , entre autres langues, et son catalogue de grammaires prédéfinies contient un grand nombre de dialectes SQL, notamment MySQL et Oracle.

Je ne suis pas sûr qu’un parsingur syntaxique C sql mature puisse le faire facilement.

Voici une version Java de la bibliothèque SQL peut faire ce que vous avez besoin exactement, il peut être utilisé pour récupérer facilement le nom de table et de colonne de refactor / à partir d’une requête SQL complexe.

µSQL pour C ++

Qu’est-ce que µSQL?

µSQL est un moteur d’parsing SQL pour C ++ permettant de développer facilement des applications basées sur SQL. Il prend également en charge d’autres langages SQL, tels que des langages spécifiques à un domaine, tels que UnQL et GQL. Etant donné que µSQL est écrit uniquement dans l’ancienne bibliothèque C ++ standard telle que STL avec ANTLR, vous pouvez l’utiliser avec de nombreux compilateurs et plates-formes C ++.

Repo sur Github

Avez-vous envisagé d’écrire votre propre en utilisant Lex et Yacc? (le hacker – approche hardcore)

Pas sortingvial .. mais ce site pourrait vous aider à démarrer