Программа для парсинга и вычисления выражений на 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 )