Я хочу разобрать SQL-подобный ввод, например:
SEX = 'MALE' AND AGE > 20
На основе ввода «sql» я затем просматриваю свой массив элементов С#.
Так, например, выше, я бы искал в своих данных все элементы, у которых для свойства Item.Sex установлено значение «MALE», а их свойство Item.Age больше 20.
Это тривиальный пример, и вы легко можете придумать более сложные сценарии. Например:
(SEX = 'MALE' AND AGE > 20) OR (SEX = 'FEMALE' AND AGE < 30)
Мне нужно иметь возможность поддерживать следующие операторы:
=
>
<
<>
() - for precedence
AND
OR
У меня такое чувство, что в конечном итоге мне придется кодировать это самому с нуля, но я не хочу изобретать велосипед. Немного изучив это, я наткнулся на ссылки на синтаксические анализаторы/грамматику и т. д., но не совсем уверен, что они отвечают всем требованиям.