Android

What's a good library for parsing mathematical expressions in java? [closed]

Какая хорошая библиотека для синтаксического анализа математических выражений в Java?

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

Я посмотрел вокруг и, Jep кажется, популярен, но я хотел бы услышать больше предложений, особенно от людей, которые использовали эти библиотеки раньше.

Переведено автоматически
Ответ 1

JEval - хорошая альтернатива. Я отказался от Jep из-за того, что он стал коммерческим. Единственная проблема заключается в том, что JEval, похоже, немного бездействует в данный момент (последний выпуск в 2008 году).

Ответ 2

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

Основные возможности:


  • Базовые математические операторы с предполагаемым приоритетом (^ * × · / ÷ % + -).

  • Явный приоритет в круглых скобках.

  • Неявное умножение подвыражений, заключенных в квадратные скобки.

  • Правильная правоассоциативность экспонент (степенной оператор).

  • Прямая поддержка шестнадцатеричных чисел с префиксом 0x.

  • Константы и переменные.

  • Расширяемые операторы.

  • Расширяемые функции.

  • объем 20 КБ.

Пример

MathEval math=new MathEval();

math.setVariable("Top", 5);
math.setVariable("Left", 20);
math.setVariable("Bottom",15);
math.setVariable("Right", 60);

System.out.println("Middle: "+math.evaluate("floor((Right+1-Left)/2)"));
Ответ 3

Попробуйте https://code.google.com/p/expressionoasis /. Это расширяемый фреймворк для вычисления выражений, который будет соответствовать таким требованиям.

Ответ 4

Это не совсем соответствует моим начальным условиям, но я нашел замечательный синтаксический анализатор, написанный на C ++. Я пытаюсь разобраться с поддержкой машинного кода Android, чтобы посмотреть, смогу ли я его использовать. Это именно то, что мне нужно.

Вот документация к проекту.

http://www.codeproject.com/KB/recipes/MathieuMathParser.aspx

java android