DDMathParser无法标记单独加字符

时间:2015-06-13 19:35:35

标签: objective-c ddmathparser

使用DDMathStringTokenizer,而2 + 4之类的内容可以精确地标记为3个令牌(第二个是+运算符,第一个和第三个是数字),如果我通过+单独,无法将其作为令牌返回。

对于我尝试的其他所有运营商而言,情况并非如此,例如/ * -等。

我可能会以某种方式强迫这一点,但我如何让DDMathStringTokenizer正确标记+

要重现此问题: 以下将返回没有对象的数组。如果将string值更改为另一个运算符字符,它将返回一个有效的数组。

NSError *error = nil;
NSString *string = @"+";
DDMathOperatorSet *opSet = [DDMathOperatorSet defaultOperatorSet];
DDMathStringTokenizer *tokenizer = [[DDMathStringTokenizer alloc] initWithString:string operatorSet:opSet error:&error];
NSLog(@"Tokens:%@", [tokenizer allObjects]);

1 个答案:

答案 0 :(得分:0)

这是令牌人试图太聪明。由于+字符是第一个标记,因此它被假定为一元运算符(没有左侧)。然后它被丢弃在地板上,因为一元+是一个毫无价值的操作符:它不会影响评估,因此它会从令牌流中省略。

我相信这在1.1分支上更好,但我没有时间完成将更改整合到主分区。