Я не знаю, есть ли более простой способ, но я написал лексер и парсер для выражений SQL в собственном дереве абстрактного синтаксиса (поскольку я не знал о деревьях выражений .net в .net на время) и мне не очень понравился парсинг SQL.
Синтаксис просто не очень удобен для синтаксического анализа, так как порядок зависит от контекста (например, не в NOT IN
против IS NOT
), токены перегружены (скобка для переопределения приоритета оператора по умолчанию по сравнению с круглыми создание списка как в WHERE x IN (1, 2)
) и пр.
Очевидно, что использование генератора синтаксических анализаторов, а не выполнение собственных лексических операций и синтаксического анализа облегчило бы задачу, но я не знаю, есть ли что-то более специфичное для SQL.
Итак, написать свой текст, безусловно, возможно, хотя и утомительно.