2010-10-26 3 views
0

У меня есть столбец с применяемым фильтром выражения. Есть ли существующий синтаксический анализатор, который позволил бы мне разобрать этот столбец? столбец может содержать простые условия, такие какParser for Expression Filter

PROPERTY = 'name' AND PROPERTY2 = 'something else'

или более продвинутым, как

(PROPERTY IN ('foo', 'bar') AND (PROPERTY IN ('foo1', 'bar2') OR OTHER_PROPERTY IN ('etc'))

Было бы вполне достаточно, если он будет возвращать список свойств в выражении и либо значение (в случае = operator) или список всех значений (даже если одно свойство появляется более одного раза в выражении). Есть ли такой синтаксический анализатор или я должен сам его написать?

+0

Из вашего описания Я понимаю, что вы сохраняете выражения в таблице базы данных, но ищете ли вы парсер для использования в SQL или Java? Являются ли выражения, которые хранятся в таблице, затем используются в последующем SQL-запросе, построенном вашим Java-кодом? Пожалуйста, добавьте дополнительную информацию о том, как вы используете эти выражения, спасибо. – Tony

+0

Да, вы правы, есть выражение, хранящееся в столбце db, и у меня также есть синтаксический анализ и дальнейшая обработка выражения в Java-коде. В настоящее время синтаксический анализ очень упрощен и правила жестко закодированы и основаны на знаниях о том, как вырабатываются выражения (в другой части кода, например, он жестко запрограммирован на то, что «SOME_PROPERTY = \\ d +», что вызовет проблему, если оно будет изменено на «SOME_PROPERTY IN (1,2,3), который является законным в столбце). Я хотел бы улучшить его, чтобы он мог разбираться более широко. – kane77

ответ

0

Я не знаю, как вы разрабатываете свой проект. Но если вы используете спящий режим, вы можете использовать критерии запросов. Cirteria queries