У меня есть набор входящих записей, которые должны оцениваться в соответствии с набором логических предложений, определенных и сохраненных. Пример логического раздел быть как:анализатор парциальных логических параметров java
Acct1 != 'Y' AND Acct2 > 1004 AND Acct3 >= 96 AND Acct4 < 1004 AND Acct5 = 99 AND ((Acct6 <= 9090 OR Acct7 IN (A1,A2,A6) AND Acct1 NOT IN (A3,A4)) AND Formatted LIKE 'LINUX' AND Acct9 NOT LIKE 'WINDOWS' AND (Acct10 = 'N' AND NOT Acct11 = 'N') AND EditableField BETWEEN (10 AND 20))
Мой ввод данных в пункте быть как:
map.put(Acct1,"Y")
map.put(Acct2,1010)
map.put(Acct3,99)
map.put(Acct4,1015)
map.put(Acct5,99)
map.put(Acct6,9090)
map.put(Acct7,"A3")
map.put(Formatted,"LINUX_INST")
map.put(Updated,"LINUX_TMP")
map.put(Acct10,"Y")
map.put(Acct11,"N")
map.put(EditableFIeld,25)
Я должен оценить входящие записи заселенных в карту на пункте определено выше, и печати истинным или false на основе результата оценки.
Условия предложения и значения карты будут изменены и выполнены.
У меня есть следующие условные пункты должны быть оценены:
!=
>
>=
<
=
<=
IN(
NOT IN(
LIKE(
NOT LIKE(
BETWEEN(
AND
OR
AND NOT
OR NOT
Я попытался с помощью грамматики генераторов, но я сказал, что это не рекомендуемое решение для нашего приложения поэтому я ищу кода Java и I иметь этот подробный пример для ссылки на AND, OR, =. resolving logical operations - AND, OR, looping conditions dynamically и ищем фрагменты, чтобы построить сверху, если это возможно.
Что вы сделали и что не сработали? – kosa
Я пытался использовать генераторы грамматики, поскольку я не могу кодировать такие сложные операторы в java, но это не принято из-за технических ограничений. Следовательно, поиск фрагментов, доступных для оценки условий в java. – Atom
Знаете ли вы, что ограничения _which_ делают генератор синтаксического анализа неосуществимым для вашего случая? Некоторые генераторы парсеров генерируют чистый код без стандартной библиотеки и обычно настроены на то, чтобы быть достаточно эффективными в скорости и хранении. Если генераторы-синтаксические анализаторы невозможны, знание причин может помочь кому-то избежать написания подробного ответа, который не может быть оправдан по тем же причинам. –