Я строю анализатор поверх TDArithmeticParser.m тестов ParseKit. Я продлил TDArithmeticParserTest.m с тестом failing
:Arithmetic Parser
- (void)testMath {
s = @"10+(2*3)-15";
result = [p parse:s];
TDEquals((double)1.0, result); // result == 0.0
}
Проблема заключается в том, что я не понимаю, почему грамматика не работает с этим тестом. Соответствующая BNF-грамматику арифметических парсера:
expr = term (plusTerm | minusTerm)*;
term = factor (timesFactor | divFactor)*;
plusTerm = '+' term;
minusTerm = '-' term;
factor = phrase exponentFactor | phrase;
timesFactor = '*' factor;
divFactor = '/' factor;
exponentFactor = '^' factor;
phrase = '(' expr ')' | Number;
Я был бы очень благодарен за любые идеи, которые помогают мне идентифицировать проблему.
Какова ценность 'результата'? –
Thx за подсказку, что результат отсутствует, Мартин. Результат 0.0, что является результатом нильского броска в двойное. Я обновил код выше. – Muscovado