DDMathParser создает выражение из NSString

У меня есть NSString:

n + (n - m)

Могу ли я использовать DDMathParser для создания объекта выражения.

Например, у меня есть базовое выражение n + (n - m), но мне нужно иметь возможность сравнивать базовое выражение n + (n - m) с пользовательским выражением, например, (n - m) + n, которое обычно одинаково.

Или уже есть решение, как сравнить две строки NSS с учетом знаков и скобок?

Так что я имею в виду, могу ли я, например, инициировать два выражения со строкой, а затем сравнить ее как Expression1 = Expression2, используя какой-либо метод.

Это пример того, как выражения должны выглядеть в парсере

введите описание изображения здесь

так что это та же самая структура, и мы можем сравнить ее, используя левый и правый узел. дерева. Мне интересно узнать это решение, которое будет анализировать строку в дереве выражений. Я думаю, что это решение было уже сделано.

1 ответ

Решение

Да, вы можете использовать DDMathParser для этого:

NSString *string = @"5 + (5 - 3)";
NSError *error = nil;
DDExpression *expression = [DDExpression expressionFromString:string error:&error];

if (expression) {
  NSLog(@"%@", expression)
} else {
  NSLog(@"%@", error);
}

DDMathParser действительно имеет некоторую (рудиментарную) поддержку переписывания выражений, но помимо этого вам придется самостоятельно сравнивать деревья выражений.

Другие вопросы по тегам