Archived
1

Fundamental Redesign of Evaluation

This commit is contained in:
Kim Wittenburg
2014-11-24 22:42:44 +01:00
parent 10f0e73ad3
commit 7a32e3b0b6
45 changed files with 1398 additions and 350 deletions

View File

@@ -51,12 +51,7 @@
@"([\\*∙⋅])|"
@"([+-](?:\\s*[+-])*)|"
@"((?:\\d+(?:%@\\d+)?)|(?:%@\\d+))|"
@"(sin)|"
@"(cos)|"
@"(tan)|"
@"(asin)|"
@"(acos)|"
@"(atan)|"
@"(sin|cos|tan|asin|acos|atan)|"
@"([A-Za-z])|"
@"(!)|"
@"(=)|"
@@ -76,16 +71,11 @@
NSRange multiplicationSymbolRange = [match rangeAtIndex:1];
NSRange operatorRange = [match rangeAtIndex:2];
NSRange numberRange = [match rangeAtIndex:3];
NSRange sinRange = [match rangeAtIndex:4];
NSRange cosRange = [match rangeAtIndex:5];
NSRange tanRange = [match rangeAtIndex:6];
NSRange asinRange = [match rangeAtIndex:7];
NSRange acosRange = [match rangeAtIndex:8];
NSRange atanRange = [match rangeAtIndex:9];
NSRange variableRange = [match rangeAtIndex:10];
NSRange factorialRange = [match rangeAtIndex:11];
NSRange equalsRange = [match rangeAtIndex:12];
NSRange whitespaceRange = [match rangeAtIndex:13];
NSRange elementaryFunctionRange = [match rangeAtIndex:4];
NSRange variableRange = [match rangeAtIndex:5];
NSRange factorialRange = [match rangeAtIndex:6];
NSRange equalsRange = [match rangeAtIndex:7];
NSRange whitespaceRange = [match rangeAtIndex:8];
if (MPRangeExists(multiplicationSymbolRange)) {
range = multiplicationSymbolRange;
@@ -96,24 +86,9 @@
} else if (MPRangeExists(numberRange)) {
range = numberRange;
tokenType = MPNumberToken;
} else if (MPRangeExists(sinRange)) {
range = sinRange;
tokenType = MPSinToken;
} else if (MPRangeExists(cosRange)) {
range = cosRange;
tokenType = MPCosToken;
} else if (MPRangeExists(tanRange)) {
range = tanRange;
tokenType = MPTanToken;
} else if (MPRangeExists(asinRange)) {
range = asinRange;
tokenType = MPASinToken;
} else if (MPRangeExists(acosRange)) {
range = acosRange;
tokenType = MPACosToken;
} else if (MPRangeExists(atanRange)) {
range = atanRange;
tokenType = MPATanToken;
} else if (MPRangeExists(elementaryFunctionRange)) {
range = elementaryFunctionRange;
tokenType = MPElementaryFunctionToken;
} else if (MPRangeExists(variableRange)) {
range = variableRange;
tokenType = MPVariableToken;