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 ответ

Это токенизатор, пытающийся быть слишком умным. Так как + символ - это первый токен, предполагается, что он является унарным оператором (без левой стороны). Затем он падает на пол, потому что + бесполезный оператор: он не влияет на оценку, поэтому он исключается из потока токенов.

Я считаю, что это лучше в ветке 1.1, но у меня не было времени закончить интеграцию изменений в master.

Другие вопросы по тегам