Эта простая Java-программа для парсинга и вычисления выражений была написана во время разработки проекта jSqlBox. Программа поддерживает переменные и параметры. Исходный код был выделен в отдельный модуль, который не имеет особых преимуществ, кроме своей простоты. Программа выполняет прямое вычисление инфиксных выражений, состоит из трёх файлов и содержит около 800 строк кода. Она не зависит от сторонних библиотек. Из-за своей простоты и использования в основном для вторичной разработки, программа не была упакована и опубликована как отдельный пакет. Если вам нужно использовать её в проекте, просто скопируйте исходный код.
Вот два способа использования (или смотрите юнит-тесты):
Map<String, Object> keywords = new HashMap<String, Object>();
keywords.put("USERNAME", "Tom");
keywords.put("ID", "001");
ExParser parser = new ExParser();
// Интерпретация и выполнение, скорость ниже, пример: 100 000 раз в секунду (CPU i7)
Assert.assertEquals(true, parser.doParse(keywords,
"(1+2)*3/4>0.1/(9+?) and (userName equals ?) or id equals ?", 100, "Tom", "001"));
// Компиляция и выполнение, скорость примерно в 10 раз выше, пример: 1 000 000 раз в секунду
ExpItem[] expItems = parser.compile(
"(1+2)*3/4>0.1/(9+?) and (userName equals ?) and id equals ?");
Assert.assertEquals(true, parser.doParse(expItems, keywords, 100, "Tom", "001"));
Метод doParse() класса ExParser парсит выражение и возвращает один из следующих типов: Boolean, Long, Double, String, null.Поддерживаемые операторы и строковые функции:
> < = >= <=
+ - * /
or and not
' ( ) ? 0~9 .
equals equalsIgnoreCase contains containsIgnoreCase
startsWith startsWithIgnoreCase endsWith endsWithIgnoreCase
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )