a simple expression parser
import unit_threaded; auto parser = new ExprParser; auto p = parser.expr(); auto res = p.parse("1+2*3"); res.success.shouldBeTrue; res.results[0].get!double.shouldEqual(7); res = p.parse("(1+2)*3"); res.success.shouldBeTrue; res.results[0].get!double.shouldEqual(9);
example of an expression parser. expr -> term { + term } term -> factor { * factor } factor -> number | ( expr )