Esempio n. 1
0
        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));
        }
Esempio n. 2
0
 public void Setup()
 {
     _parser     = new BinaryExpressionParser(new ParserLookup(new LowerSnakeCaseNameResolver(), new SqlFunctionNameResolver()));
     _connection = new TestConnection();
     _connection.Open();
 }