Archived
1

Model Redesign: Added Reference Frames

Added Inverse Functions
UI Redesign
Cleaned Code
This commit is contained in:
Kim Wittenburg
2014-10-07 20:25:54 +02:00
parent 8f2f773909
commit 82259f87e2
40 changed files with 1124 additions and 998 deletions

View File

@@ -18,21 +18,25 @@
@implementation MPExpressionTokenizer
- (NSArray *)tokenizeExpression:(MPExpression *)expression
+ (NSArray *)tokenizeExpression:(MPExpression *)expression
{
NSMutableArray *tokens = [[NSMutableArray alloc] init];
for (NSUInteger index = 0; index < expression.numberOfElements; index++) {
id <MPExpressionElement> element = [expression elementAtIndex:index];
NSUInteger symbolIndex = 0;
for (NSUInteger index = 0; index < [expression countItemsInReferenceFrame:MPElementReferenceFrame]; index++) {
id <MPExpressionElement> element = [expression itemAtIndex:index referenceFrame:MPElementReferenceFrame];
if ([element isFunction]) {
[tokens addObject:element];
} else {
[tokens addObjectsFromArray:[self tokenizeElement:(NSString *)element]];
[tokens addObjectsFromArray:[self tokenizeElement:(NSString *)element
elementSymbolIndex:symbolIndex]];
}
symbolIndex += element.length;
}
return tokens;
}
- (NSArray *)tokenizeElement:(NSString *)element
+ (NSArray *)tokenizeElement:(NSString *)element
elementSymbolIndex:(NSUInteger)symbolIndex
{
NSUInteger lexLocation = 0;
@@ -40,7 +44,7 @@
NSString *regexStringFormat = @"\\A(?:"
@"(\\*)|"
@"([+-](?:\\s*[+-])*)|"
@"((?:\\d+(?:%@\\d+)?)|(?:\\s%@\\d+))|"
@"((?:\\d+(?:%@\\d+)?)|(?:%@\\d+))|"
@"(sin)|"
@"(cos)|"
@"(tan)|"
@@ -109,9 +113,11 @@
}
lexLocation = NSMaxRange(range);
NSString *tokenStringValue = [element substringWithRange:range];
range.location += symbolIndex;
[tokens addObject:[[MPToken alloc] initWithTokenType:tokenType
range:range
inString:element]];
stringValue:tokenStringValue]];
}
return tokens;