Model Redesign: Added Reference Frames
Added Inverse Functions UI Redesign Cleaned Code
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user