Fixed Evaluation of Powers and Factorials.
Added Error Messages.
This commit is contained in:
@@ -371,7 +371,6 @@
|
|||||||
self.value = term;
|
self.value = term;
|
||||||
}
|
}
|
||||||
} else if (self.currentToken.tokenType == MPPowerToken) {
|
} else if (self.currentToken.tokenType == MPPowerToken) {
|
||||||
[self nextToken];
|
|
||||||
if (self.value) {
|
if (self.value) {
|
||||||
NSArray *errors;
|
NSArray *errors;
|
||||||
MPPowerTerm *term = [[MPPowerTerm alloc] initWithFunction:(MPFunction *)self.currentToken errors:&errors];
|
MPPowerTerm *term = [[MPPowerTerm alloc] initWithFunction:(MPFunction *)self.currentToken errors:&errors];
|
||||||
@@ -381,6 +380,7 @@
|
|||||||
term.baseTerm = self.value;
|
term.baseTerm = self.value;
|
||||||
self.value = term;
|
self.value = term;
|
||||||
}
|
}
|
||||||
|
[self nextToken];
|
||||||
} else {
|
} else {
|
||||||
checkMore = NO;
|
checkMore = NO;
|
||||||
}
|
}
|
||||||
@@ -407,7 +407,12 @@
|
|||||||
if (self.errorTokenIndex >= self.tokens.count) {
|
if (self.errorTokenIndex >= self.tokens.count) {
|
||||||
[self addErrorWithCode:0 localizedDescription:NSLocalizedString(@"Unexpected end. Expected Value.", nil)];
|
[self addErrorWithCode:0 localizedDescription:NSLocalizedString(@"Unexpected end. Expected Value.", nil)];
|
||||||
} else {
|
} else {
|
||||||
[self addErrorWithCode:1 localizedDescription:NSLocalizedString(@"Unexpected Symbol. Expected Value", nil)];
|
id<MPToken> 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;
|
return self.errors.count > 0;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
- (NSDecimalNumber *)doEvaluation:(NSError *__autoreleasing *)error
|
- (NSDecimalNumber *)doEvaluation:(NSError *__autoreleasing *)error
|
||||||
{
|
{
|
||||||
NSDecimalNumber *value = [self.value evaluate:error];
|
NSDecimalNumber *value = [self.term evaluate:error];
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user