Парсер выражений, реализующий метод рекурсивного спуска (Курс Парадигмы программирования(Итмо, 2017))
- Парсер выражений с целочисленными константами
- Поддерживаются переменные с именами
x,y,z - Класс ExpressionParser реализует интерфейс Parser.
Возвращяет объект, реализующий интерфейс TripleExpression
с единственным методом
int evaluate(int x, int y, int z), через который происходит подсчет значения выражения. - Пример использования
ExpressionParser parser = new ExpressionParser();
String expr = "1000000*x*x*y*y*z/(x-1)";
TripleExpression res = parser.parse(expr);
int res = expr.evaluate(2, 7, 4);- Парсер выражений, поддерживающий произвольные типы
- Все сторонние типы должны наследоваться от класса
AbstractType - GenericTabulator
- Класс
GenericTabulatorреализует интерфейс Tabulator и сроит трехмерную таблицу значений заданного выражения.mode— режим вычислений:i— вычисления вintс проверкой на переполнение;d— вычисления вdoubleбез проверки на переполнение;bi— вычисления вBigInteger.
expression— выражение, для которого надо построить таблицу;x1,x2— минимальное и максимальное значения переменнойx(включительно)y1,y2,z1,z2— аналогично дляyиz.- Результат: элемент
result[i][j][k]содержит значение выражения дляx = x1 + i,y = y1 + j,z = z1 + k. Если значение не определено (например, по причине переполнения), то соответствующий элемент равенnull.
- Класс