Парсер выражений, реализующий метод рекурсивного спуска (Курс Парадигмы программирования(Итмо, 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
.
- Класс