示例#1
0
        public Void Visit(ListStatement listStatement, SortedSet <string> free)
        {
            for (var i = 0; i < listStatement.exprs.Count; i++)
            {
                listStatement.exprs[i].Accept(this, free);
            }

            return(null);
        }
示例#2
0
        public IValue Visit(ListStatement listStatement)
        {
            //var list = listStatement.Accept(this);
            //var x = ((ListValue)list).List;
            //foreach (var s in listStatement.exprs)
            //{
            //    x.Add(s.Accept(this));
            //}

            //return new ListValue(x);

            return(null);
        }
示例#3
0
 public Statement Visit(ListStatement listStatement)
 {
     return(null);
 }
示例#4
0
 public Type Visit(ListStatement listStatement, FunctionGeneratorEnvironment arg)
 {
     throw new NotImplementedException();
 }
示例#5
0
        /// <summary>
        /// Parse the SQL string and return a Statement
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static IStatement Parse(string value)
        {
            IStatement result = null;

            foreach (KeyValuePair <QAStatementType, string[]> kv in Clauses)
            {
                string[] splitters = kv.Value;

                if (!value.StartsWith(splitters[0], StringComparison.InvariantCultureIgnoreCase))
                {
                    continue;
                }

                List <KeyValue> clauses = ParseStatement(value, splitters);

                CheckRequiredClause(clauses, kv.Key);

                #region Return strong-type statements
                switch (kv.Key)
                {
                    #region DML Statements
                case QAStatementType.Select:
                    result = new SelectStatement(clauses);
                    break;

                case QAStatementType.Insert:
                    result = new InsertStatement(clauses);
                    break;

                case QAStatementType.Update:
                    result = new UpdateStatement(clauses);
                    break;
                    #endregion

                    #region DDL Statements
                case QAStatementType.Delete:
                    result = new DeleteStatement(clauses);
                    break;

                case QAStatementType.CreateTable:
                    result = new CreateTableStatement(clauses);
                    break;

                case QAStatementType.DropTable:
                    result = new DropTableStatement(clauses);
                    break;
                    #endregion

                    #region QueryAnything Statements
                case QAStatementType.OpenFile:
                    result = new OpenStatement(clauses);
                    break;

                case QAStatementType.OpenDatabase:
                    result = new OpenDatabaseStatement(clauses);
                    break;

                case QAStatementType.SaveDataSet:
                    result = new SaveDataSetStatement(clauses);
                    break;

                case QAStatementType.SaveDataTable:
                    result = new SaveDataTableStatement(clauses);
                    break;

                case QAStatementType.Commit:
                    result = new CommitStatement(clauses);
                    break;

                case QAStatementType.Rollback:
                    result = new RollbackStatement(clauses);
                    break;

                case QAStatementType.Clear:
                    result = new ClearStatement(clauses);
                    break;

                case QAStatementType.List:
                    result = new ListStatement(clauses);
                    break;

                case QAStatementType.ViewDataSet:
                    result = new ViewDataSet(clauses);
                    break;
                    #endregion

                default:
                    throw new ArgumentOutOfRangeException("key=" + kv.Key);
                }
                #endregion

                if (result != null)
                {
                    break;
                }
            }
            return(result);
        }