protected IExpression ParseTerm() { var left = ParseFactor(); while (Accept("*") || Accept("/") || Accept("%")) { if (Prev().Type == "*") { left = MultiplyExpression.Create(left, ParseFactor()); } else if (Prev().Type == "/") { left = DivideExpression.Create(left, ParseFactor()); } else { left = ModuloExpression.Create(left, ParseFactor()); } } return(left); }