static Mult CreateMult(ParsingInfo info) { Mult mult = new Mult(); foreach (var pair in info) { if (pair.Key == "Term") { mult.term = CreateTerm(pair.Value.AsChild); } else if (pair.Key == "mult_op") { foreach (var child in pair.Value.AsChild) { mult.multOp.Add(CreateMultOp(child.Value.AsChild)); } } else { Console.WriteLine("Mult has '" + pair.Key + "'"); } } return(mult); }
static Memory.Variable Solve(Mult mult) { var result = Solve(mult.term); foreach (var multOp in mult.multOp) { var operand = Solve(multOp.term); switch (multOp.operatorSymbol) { case "*": result *= operand; break; case "/": result /= operand; break; case "%": result %= operand; break; } } return(result); }