コード例 #1
0
            public override void VisitSetOptionStatement(SetOptionStatement node)
            {
                base.VisitSetOptionStatement(node);

                if (_position >= node.SetKeyword.End && (node.ValueClause == null || _position <= node.ValueClause.TextStart))
                {
                    _binder._scopeKind = ScopeKind.Option;
                }
            }
コード例 #2
0
        public override SetStatement Execute()
        {
            string identifier = GetIdentifier();

            if (identifier.StartsWith("@"))
            {
                var variableStatement = new SetVariableStatement();
                variableStatement.Variable = identifier;
                Tokenizer.ExpectToken(Constants.Assignment);
                variableStatement.Assignment = new ExpressionParser(Tokenizer).Execute();

                return(variableStatement);
            }
            else if (_options.Contains(identifier))
            {
                var optionStatement = new SetOptionStatement();

                if (String.Compare(identifier, Constants.Statistics, true) == 0)
                {
                    if (!Tokenizer.IsNextToken(Constants.Io, Constants.Xml, Constants.Profile, Constants.Time))
                    {
                        throw new SyntaxException("STATISTIC expects IO, XML, PROFILE, or TIME");
                    }

                    identifier += " " + Tokenizer.Current.Value;
                    Tokenizer.ReadNextToken();
                }
                optionStatement.Option = identifier;

                if (!Tokenizer.IsNextToken(Constants.On, Constants.Off))
                {
                    throw new SyntaxException("SET [option] expects ON or OFF");
                }

                optionStatement.Assignment = new StringExpression(Tokenizer.Current.Value, null);
                Tokenizer.ReadNextToken();

                return(optionStatement);
            }
            else
            {
                switch (identifier)
                {
                case Constants.DateFirst:
                {
                    SetDateFirstStatement statement = new SetDateFirstStatement();
                    ReadAssignment(statement);
                    return(statement);
                }

                case Constants.DateFormat:
                {
                    SetDateFormatStatement statement = new SetDateFormatStatement();
                    ReadAssignment(statement);
                    return(statement);
                }

                case Constants.DeadlockPriority:
                {
                    SetDeadlockPriorityStatement statement = new SetDeadlockPriorityStatement();
                    ReadAssignment(statement);
                    return(statement);
                }
                }
            }

            throw new ParserNotImplementedException(String.Format("SET {0} is not supported", identifier));
        }
コード例 #3
0
ファイル: KqlSyntaxVisitor.cs プロジェクト: tatecksi/KqlTools
 public override T VisitSetOptionStatement(SetOptionStatement node)
 {
     throw new NotImplementedException();
 }