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 здесь.
Это должно быть довольно просто. Парсер может вернуть вам правильно сформированное дерево выражений, а не только числовую оценку. С деревом выражений вы бы сделали что-то вроде этого:
- Найдите самое глубокое выражение в дереве. Это первое, что будет оценено.
- Оцените это выражение вручную
- Подставьте оценку обратно в дерево вместо исходного выражения.
- Создайте копию всего дерева, чтобы сослаться на то, как оно выглядело в данный момент.
- Повторяйте, пока больше нечего оценивать.