public IExpression ParseExpression(IEnumerator <IToken> tokens) { var expr = ParseAssignment(tokens.NextNonIgnorable()); if (tokens.Current.Type != TokenType.End) { var invalid = ParseInvalid(ErrorCode.InvalidSymbol, tokens); expr = new BinaryExpression.Multiply(expr, invalid); } return(expr); }
private static void CheckProperStatementEnd(IEnumerator <IToken> tokens, ref IExpression expr) { if (tokens.Current.Type == TokenType.SemiColon) { tokens.NextNonIgnorable(); } else if (tokens.Current.Type != TokenType.End) { var invalid = ParseInvalid(ErrorCode.InvalidSymbol, tokens); expr = new BinaryExpression.Multiply(expr, invalid); } }
private static void CheckProperlyTerminated(IEnumerator <IToken> tokens, ref IExpression expr) { if (tokens.Current.Type == TokenType.SemiColon) { tokens.NextNonIgnorable(); } else { var invalid = new InvalidExpression(ErrorCode.TerminatorExpected, tokens.Current); expr = new BinaryExpression.Multiply(expr, invalid); } }