ParseKit Tests のTDArithmeticParser.mの上にパーサーを構築しています。テストでTDArithmeticParserTest.mを拡張しました。failing
- (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;
問題を特定するのに役立つアイデアに非常に感謝しています。