Skip to content

Парсер выражений, реализующий метод рекурсивного спуска

Notifications You must be signed in to change notification settings

AlexVolkow/ParserExpression

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

ParserExpression

Парсер выражений, реализующий метод рекурсивного спуска (Курс Парадигмы программирования(Итмо, 2017))

Parser

  • Парсер выражений с целочисленными константами
  • Поддерживаются переменные с именами 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);

Generic

  • Парсер выражений, поддерживающий произвольные типы
  • Все сторонние типы должны наследоваться от класса 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.

About

Парсер выражений, реализующий метод рекурсивного спуска

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published