1

使用DDMathStringTokenizer, 虽然类似的东西可以2 + 4很好地标记为 3 个标记(第二个是 + 运算符,第一个和第三个是数字),但如果我+单独传递 a ,它无法将它作为 token 返回

这不适用于我尝试过的所有其他运算符,例如/ * -等。

我可能可以以某种方式强制执行此操作,但我怎样才能正确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]);
4

1 回答 1

0

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

我相信这在 1.1 分支上会更好,但我还没有时间完成将更改集成到 master 中。

于 2015-06-15T19:25:14.680 回答