public SyntaxParseResult Parse(List <SyntaxToken> tokens) { this.tokens = tokens; position = 0; diagnostics.Clear(); if (tokens.Count == 0) { return(null); } functionDeclarationParser = new FunctionDeclarationParser(this); variableDeclarationParser = new VariableDeclarationParser(this); literalParser = new LiteralParser(this); binaryExpressionParser = new BinaryExpressionParser(this); CodeBlockNode module = new CodeBlockNode(); while (CurrentToken.Isnt(SyntaxTokenKind.EndOfFile)) { if (CurrentToken.Is(SyntaxTokenKind.Invalid)) { Advance(); continue; } Statement declaration = ParseDeclaration(); if (declaration != null) { module.Children.Add(declaration); } else { Advance(); } } return(new SyntaxParseResult(module, diagnostics)); }
public void Setup() { _parser = new BinaryExpressionParser(new ParserLookup(new LowerSnakeCaseNameResolver(), new SqlFunctionNameResolver())); _connection = new TestConnection(); _connection.Open(); }