Если ваши математические выражения достаточно просты, вы можете пойти по ручному маршруту, как это предложил Раджан Балана.
Для оценки более сложных выражений, вы можете использовать/злоупотребления NSPredicate
в сочетании с NSExpression
, как описано в этом блоге: http://funwithobjc.tumblr.com/post/1553469975/abusing-nspredicate
Обратите внимание, что NSPredicate
необходимо только, если ваш вход действительно уравнение (в том числе в правой части):
NSPredicate* parsedExpression = [NSPredicate predicateWithFormat:@"1+2=x"];
NSExpression* leftPart = [(NSComparisonPredicate*)parsedExpression leftExpression];
NSNumber* evaluatedResult = [leftPart expressionValueWithObject:nil context:nil];
NSLog(@"Expr:%@", evaluatedResult);
Для достижения правильного синтаксического анализа, вы можете использовать одну из математических анализаторов для Objective-C там.Я не использовал их сам, но популярные из них, кажется,
Спасибо, друг! Ответ! –
Добро пожаловать. –
+1 Это правильно. Вам не нужно что-то вроде моего DDMathParser, если вам не нужна большая гибкость в процессе синтаксического анализа/оценки. –