public QueryTree Reorder()
        {
            QueryTree PostProcess = new QueryTree();

            while (currentToken < Subject.QueryTokens.Count && Peak.Type != TokenType.SemiColon)
            {
                if (Parsers.ContainsKey(Subject.QueryTokens[currentToken].Type))
                {
                    PostProcess.Root = Parsers[Subject.QueryTokens[currentToken].Type]();
                }
            }
            return(PostProcess);
        }
        public QueryExecutioner(QueryTree Q_Entry, Database DB, TouchTable t)
        {
            Touch    = t;
            Query    = Q_Entry;
            database = DB;
            Execs    = new Dictionary <TokenType, Executive>()
            {
                { TokenType.SELECT_cmd, Select },
                { TokenType.INSERT_cmd, Insert },
                { TokenType.UPDATE_cmd, Update },
                { TokenType.DELETE_cmd, Delete },
                { TokenType.CREATE_cmd, Create },
                { TokenType.ALTER_cmd, Alter }
            };

            Joiners = new Dictionary <TokenType, Executive>()
            {
                { TokenType.INNER_KW, InnerJoin },
                { TokenType.OUTER_KW, OuterJoin },
                { TokenType.LEFT_KW, LeftJoin },
                { TokenType.RIGHT_KW, RightJoin },
            };

            Alters = new Dictionary <TokenType, Executive>()
            {
                { TokenType.ADD_KW, AlterAdd },
                { TokenType.DROP_cmd, AlterDrop },
                { TokenType.ALTER_cmd, AlterModify },
                { TokenType.RENAME_cmd, AltereName }
            };

            Conditionals = new Dictionary <TokenType, Executive>()
            {
                { TokenType.WHERE_KW, Where }
            };
        }