// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - private static IExpression ParseAddExpression() { if (Check(FirstMultExp)) { var exp = ParseMultExpression(); while (Check(new TokenSet(TokenType.Plus | TokenType.Minus))) { var opType = _currentToken.Type; Eat(opType); if (!Check(FirstMultExp)) { throw new InvalidSyntaxException("Expected an expression after + or - operator"); } var right = ParseMultExpression(); switch (opType) { case TokenType.Plus: exp = new AddExpression(exp, right); break; case TokenType.Minus: exp = new SubExpression(exp, right); break; default: throw new UnexpectedBehaviorException("Expected plus or minus, got: " + opType); } } return(exp); } throw new InvalidSyntaxException("Invalid expression"); }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - private static IExpression ParseAddExpression() { if (Check(FirstMultExp)) { var exp = ParseMultExpression(); while (Check(new TokenSet(TokenType.Plus | TokenType.Minus))) { var opType = _currentToken.Type; Eat(opType); if (!Check(FirstMultExp)) { throw new InvalidSyntaxException("Expected an expression after + or - operator"); } var right = ParseMultExpression(); switch (opType) { case TokenType.Plus: exp = new AddExpression(exp, right); break; case TokenType.Minus: exp = new SubExpression(exp, right); break; default: throw new UnexpectedBehaviorException("Expected plus or minus, got: " + opType); } } return exp; } throw new InvalidSyntaxException("Invalid expression"); }