1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/drinkjava2-jexparser

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

jExParser Простая Java-программа для парсинга и вычисления выражений

Эта простая 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/drinkjava2-jexparser.git
git@api.gitlife.ru:oschina-mirror/drinkjava2-jexparser.git
oschina-mirror
drinkjava2-jexparser
drinkjava2-jexparser
master