diff --git a/MathPad/MPExpressionParser.m b/MathPad/MPExpressionParser.m index 462e87a..f01f890 100644 --- a/MathPad/MPExpressionParser.m +++ b/MathPad/MPExpressionParser.m @@ -371,7 +371,6 @@ self.value = term; } } else if (self.currentToken.tokenType == MPPowerToken) { - [self nextToken]; if (self.value) { NSArray *errors; MPPowerTerm *term = [[MPPowerTerm alloc] initWithFunction:(MPFunction *)self.currentToken errors:&errors]; @@ -381,6 +380,7 @@ term.baseTerm = self.value; self.value = term; } + [self nextToken]; } else { checkMore = NO; } @@ -407,7 +407,12 @@ if (self.errorTokenIndex >= self.tokens.count) { [self addErrorWithCode:0 localizedDescription:NSLocalizedString(@"Unexpected end. Expected Value.", nil)]; } else { - [self addErrorWithCode:1 localizedDescription:NSLocalizedString(@"Unexpected Symbol. Expected Value", nil)]; + id unexpectedToken = self.tokens[self.errorTokenIndex]; + if (unexpectedToken.tokenType == MPPowerToken) { + [self addErrorWithCode:34 localizedDescription:NSLocalizedString(@"No base for Power", nil)]; + } else { + [self addErrorWithCode:1 localizedDescription:NSLocalizedString(@"Unexpected Symbol. Expected Value", nil)]; + } } } return self.errors.count > 0; diff --git a/MathPad/MPFactorialTerm.m b/MathPad/MPFactorialTerm.m index 33c4bc8..0c16c85 100644 --- a/MathPad/MPFactorialTerm.m +++ b/MathPad/MPFactorialTerm.m @@ -22,7 +22,7 @@ - (NSDecimalNumber *)doEvaluation:(NSError *__autoreleasing *)error { - NSDecimalNumber *value = [self.value evaluate:error]; + NSDecimalNumber *value = [self.term evaluate:error]; if (!value) { return nil; }