public SelectTable[] Run()
        {
            SelectTable[] table = null;

            var parser = new LangParser(_source, _flags);
            var ast    = parser.Parse();

            parser.Errors.ToList().ForEach(x => Errors.Add(x));

            if (Errors.Count == 0)
            {
                //semantic check
                if ((_flags & ExecuteFlags.Semantic) == ExecuteFlags.Semantic)
                {
                    var inter = new Interpreter.Execution.Interpreter(ast, _editorCursor, Authorization, _semanticHttpExecutor);
                    inter.Execute();
                    if (inter.Errors.Count > 0)
                    {
                        Errors = inter.Errors;
                    }

                    ScopeModel = inter.ScopeModel;
                }

                if (Authorization == "Basic" && Errors.Count == 0) //empty auth header
                {
                    Errors.Add(new ApiExecuteError(ApiExecuteErrorType.AuthError, "Authentication error"));
                    return(table);
                }

                if (Errors.Count == 0 && ((_flags & ExecuteFlags.Execute) == ExecuteFlags.Execute)) // we run
                {
                    var inter = new Interpreter.Execution.Interpreter(ast, _editorCursor, Authorization, _httpExecutor);
                    table  = inter.Execute();
                    Errors = inter.Errors;
                }
            }

            return(table);
        }