Проверить строку, содержащую только логические операторы и некоторые условия - PullRequest
1 голос
/ 05 июля 2011

Я пытаюсь проверить строку, которая может содержать некоторые условия и логические операторы. Например, Мое входное выражение может выглядеть примерно так:

(var1==var2 AND var2==var4) OR (someothervar!=5) AND (somemorevar=<4 OR var5<10)

Позже я бы преобразовал эту строку в читаемое Java-выражение,

(var1==var2 && var2==var4) || (someothervar!=5) && (somemorevar=<4 || var5<10)

Входная строка захватывается во время выполнения, и это может быть что угодно. Моя задача состоит в том, чтобы убедиться, что входная строка является допустимым выражением, поэтому позже только AND и OR можно заменить на && и || оценить.

Ответы [ 4 ]

0 голосов
/ 05 июля 2011

Попробуйте JEP .

0 голосов
/ 05 июля 2011

Почему вы разрешаете «И» и «ИЛИ», если вам нужно уже подтвердить ввод, и вы все равно собираетесь заменить слова «И» и «ИЛИ»?Просто требуется ||и && как часть проверки входных данных и пропустите этап разрешения «И» и «ИЛИ».

Идея проверки заключается в выполнении регулярного выражения для входной строки.Я не очень разбираюсь в Regex, но я предполагаю, что найдется кто-то, кто мог бы дать вам Regex, который бы удостоверился, что открытая скобка соответствует окончанию, и что есть как минимум два знака "=" и т. Д. Просто некоторыемысли.

0 голосов
/ 05 июля 2011

Похоже, вы создаете механизм правил / парсер и передаете правила в более понятном для человека формате?

Если это так, вы должны посмотреть на существующие механизмы правил, такие как Drools . Синтаксис правил находится в легко читаемом формате, и механизм правил очень мощный, вы можете сделать с ним гораздо больше, если ваши правила станут более сложными.

0 голосов
/ 05 июля 2011

Похоже, вы хотите построить синтаксическое дерево. Взгляните на JavaCC ant ANTLR

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...