iOS DDMathParser получает решение шагов математического выражения

Я строю какой-то калькулятор для iOS, используя DDMathParser. Я хотел бы знать, как отделить выражение (NSString), как 3+3*4 (After parsing add(3,multiply(3,4))) на отдельные этапы:multiply(3,4) add(3,12), Я бы предпочел, чтобы я получал их в NSArray или другом относительно полезном объекте списка.

  • Example: add(3,multiply(3,4))
  • [1] multiply(3,4)
  • [2] add(3,12)
  • [3] 15

1 ответ

Решение

Автор DDMathParser здесь.

Это должно быть довольно просто. Парсер может вернуть вам правильно сформированное дерево выражений, а не только числовую оценку. С деревом выражений вы бы сделали что-то вроде этого:

  1. Найдите самое глубокое выражение в дереве. Это первое, что будет оценено.
  2. Оцените это выражение вручную
  3. Подставьте оценку обратно в дерево вместо исходного выражения.
  4. Создайте копию всего дерева, чтобы сослаться на то, как оно выглядело в данный момент.
  5. Повторяйте, пока больше нечего оценивать.
Другие вопросы по тегам