Je ne sais pas s'il y a un moyen plus facile, mais je l'ai écrit un lexer et parser pour les expressions SQL dans une coutume arbre de syntaxe abstraite (comme je ne savais pas Les arbres d'expression de .net à l'époque) et je n'ai pas vraiment aimé analyser SQL.
La syntaxe parser est tout simplement pas très sympathique, que l'ordre est différent selon le contexte (par exemple, la non NOT IN
contre IS NOT
), les jetons sont surchargées (entre parenthèses pour des raisons impérieuses de la priorité de l'opérateur par défaut par rapport entre parenthèses pour la création d'une liste comme dans WHERE x IN (1, 2)
) et ainsi de suite. Il est évident que l'utilisation d'un générateur d'analyseurs plutôt que de faire votre propre lexique et parsing rendrait les choses plus faciles, mais je ne sais pas s'il y a quelque chose de plus spécifique à SQL. Donc, écrire le vôtre est certainement possible, quoique fastidieux.
Avez-vous trouvé une solution à cette question? Je suis également dans le besoin d'obtenir un arbre d'expression à partir d'une chaîne sql en C# – Saravanan