Задать вопрос
hydra_13
@hydra_13
Пограммист - любитель)

Как правильно разпарсить условные выражения?

Имеется задача из читабильной для пользователя строки сгенерировать sql-запрос.
Имеется виджет, который помогает пользователю генерировать логические запросы типа (3 примера):
1) `столбец1`=="1044"
2) (`столбец1`>"302")&&(`столбец2`!="дерево")
3) `столбец2`=="цемент"||(`столбец1`<"1000"&&`столбец1`>="500")
Как можно разбить эти выражения на простые состовляющие типа [<столбец><операция><значение>] и отношения между ними. Пока смотрю в сторону лексических анализаторов. Может у кого-нибудь были подобные задачи? В какую сторону смотреть/копать?
  • Вопрос задан
  • 218 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
Я думаю логика тут несильно отличается от парсинга арифметических выражений.
Либо постфиксная/префиксная форма либо строить дерево выражения. Вам логичнее будет строить дерево.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@cap_nemo
Можно исходный текст разбить на токены, написав для этого небольшие классы. Примеров и рецептов полно в интернетах.
Можно использовать уже готовые элементы лексического анализа из библиотеки www.boost.org/doc/libs/1_60_0/libs/spirit/doc/html...
Или классика: yacc+lex.

В вашем случае грамматика очень простая, поэтому имеет смысл самому написать классы токенизации. Скорее всего, готовые есть уже в Qt.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы