Archived
1

Cleaned Code by Removing Location Tracking for Errors

This commit is contained in:
Kim Wittenburg
2014-11-07 19:50:28 +01:00
parent 91e7dbe9f2
commit 139a75f816
59 changed files with 355 additions and 532 deletions

View File

@@ -9,9 +9,7 @@
#import "MPExpressionTree.h"
@implementation MPExpressionTree {
NSRange _variableDefinitionRange;
NSMutableArray *_summands;
NSRange _range;
}
- (id)init
@@ -27,20 +25,14 @@
{
self = [self init];
if (self) {
MPTokenStreamRecordCurrentLocation(tokenStream);
[tokenStream beginIgnoringWhitespaceTokens];
_variableDefinitionRange = NSMakeRange(NSNotFound, 0);
self.definedVariable = nil;
if (tokenStream.currentToken.tokenType == MPVariableToken) {
if (tokenStream.peekNextToken.tokenType == MPEqualsToken) {
self.definedVariable = tokenStream.currentToken.stringValue;
NSRange variableRange = tokenStream.currentToken.range;
[tokenStream currentTokenConsumed];
NSRange equalsRange = tokenStream.currentToken.range;
[tokenStream currentTokenConsumed];
_variableDefinitionRange = NSUnionRange(variableRange, equalsRange);
}
}
while ([tokenStream hasMoreTokens]) {
@@ -48,43 +40,48 @@
}
[tokenStream endIgnoringOrAcceptingWhitespaceTokens];
_range = MPTokenStreamRecordedRange(tokenStream);
}
return self;
}
- (NSRange)range
- (NSArray *)summands
{
return _range;
return _summands;
}
- (BOOL)validate:(MPParseError *__autoreleasing *)error
- (BOOL)validate:(NSError *__autoreleasing *)error
{
return [self validateExpectingVariableDefinition:NO
error:error];
}
- (BOOL)validateExpectingVariableDefinition:(BOOL)flag
error:(MPParseError *__autoreleasing *)error
error:(NSError *__autoreleasing *)error
{
if (flag) {
if (!self.definedVariable) {
if (error) {
*error = MPParseError(NSMakeRange(self.range.location, 0), @"Expected Variable Definition.");
*error = MPParseError(1,
NSLocalizedString(@"Expected Variable Definition.", @"Error message. This is displayed when an expected variable definition was not found."),
nil);
}
return NO;
}
} else {
if (self.definedVariable) {
if (error) {
*error = MPParseError(_variableDefinitionRange, @"Unexpected Variable Definition");
*error = MPParseError(2,
NSLocalizedString(@"Unexpected Variable Definition.", @"Error message. This is displayed when no variable definition was expected but one was found."),
nil);
}
return NO;
}
}
if (_summands.count == 0) {
if (error) {
*error = MPParseError(self.range, @"Empty Expression.");
*error = MPParseError(3,
NSLocalizedString(@"Empty Expression.", @"Error message. This is displayed when the user tried to evaluate an empty expression."),
nil);
}
return NO;
}
@@ -111,48 +108,4 @@
}
- (NSArray *)expressionElements
{
NSMutableArray *elements = [[NSMutableArray alloc] init];
if (self.definedVariable) {
[elements addObject:[NSString stringWithFormat:@"%@=", self.definedVariable]];
}
for (MPSummand *summand in _summands) {
[elements addObjectsFromArray:summand.expressionElements];
}
return elements;
}
- (NSArray *)summands
{
return _summands;
}
- (void)appendSummand:(MPSummand *)summand
{
[_summands addObject:summand];
}
- (void)insertSummand:(MPSummand *)summand
atIndex:(NSUInteger)index
{
[_summands insertObject:summand
atIndex:index];
}
- (void)removeSummand:(MPSummand *)summand
{
[_summands removeObject:summand];
}
- (void)removeSummandAtIndex:(NSUInteger)index
{
[_summands removeObjectAtIndex:index];
}
- (MPSummand *)summandAtIndex:(NSUInteger)index
{
return [_summands objectAtIndex:index];
}
@end