Exemplo n.º 1
0
        protected override void OnParsing(ref UpdateInfo info, UpdateStateMachine machine, TokenParsingEventArgs <UpdateParseStates> e)
        {
            const string CONTEXT_KEY_CONDITION = "Condition";
            const string CONTEXT_KEY_SET       = "Set";

            switch (e.NowState)
            {
            case States.UpdateParseStates.SetField:
            {
                string  field   = machine.TokenStack.Pop().Text;
                SetInfo setInfo = new SetInfo();
                setInfo.Field     = field;
                setInfo.Parameter = field;
                machine.Context[CONTEXT_KEY_SET] = setInfo;
                info.SetFields.Add(setInfo);
            }
            break;

            case States.UpdateParseStates.SetParameter:
            {
                SetInfo setInfo = (SetInfo)machine.Context[CONTEXT_KEY_SET];
                setInfo.Parameter = machine.TokenStack.Pop().Text;
            }
            break;

            case UpdateParseStates.Condition:
            {
                ConditionInfo condition = new ConditionInfo();
                machine.Context[CONTEXT_KEY_CONDITION] = condition;
                info.Conditions.Add(condition);
            }
            break;

            case UpdateParseStates.NotCondition:
            {
                ConditionInfo condition = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                condition.IsNot = true;
            }
            break;

            case States.UpdateParseStates.ConditionField:
            {
                ConditionInfo condition = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                string        field     = machine.TokenStack.Pop().Text;
                condition.Field     = field;
                condition.Parameter = field;
            }
            break;

            case States.UpdateParseStates.ConditionOperator:
            {
                string        opr       = machine.TokenStack.Pop().Text;
                ConditionInfo condition = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                condition.Operators = opr;
            }
            break;

            case States.UpdateParseStates.ConditionParameter:
            {
                ConditionInfo condition = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                condition.Parameter = machine.TokenStack.Pop().Text;
            }
            break;

            case States.UpdateParseStates.NextCondition:
            {
                var token = machine.TokenStack.Pop();
                ConditionJoiners joiners = token.Action == Actions.UpdateParseActions.Or
                            ? ConditionJoiners.Or
                            : ConditionJoiners.And;
                var condition = (ConditionInfo)machine.Context[CONTEXT_KEY_CONDITION];
                condition.JoinerToNext = joiners;

                condition = new ConditionInfo();
                info.Conditions.Add(condition);
                machine.Context[CONTEXT_KEY_CONDITION] = condition;
            }
            break;

            case States.UpdateParseStates.WithoutField:
            {
                info.WithoutFields.Add(machine.TokenStack.Pop().Text);
            }
            break;

            case States.UpdateParseStates.NextWithoutField:
            case States.UpdateParseStates.SetEquals:
            case States.UpdateParseStates.NextSetField:
            case States.UpdateParseStates.Without:
                machine.TokenStack.Pop();
                break;

            default:
                break;
            }
        }
Exemplo n.º 2
0
        protected override void OnParsing(ref CountInfo info, CountStateMachine machine, TokenParsingEventArgs <CountParseStates> e)
        {
            const string CONTEXT_KEY_CONDITION = "CONDITION";

            switch (e.NowState)
            {
            case States.CountParseStates.Start:
                break;

            case States.CountParseStates.Condition:
            {
                ConditionInfo condition = new ConditionInfo();
                info.ConditionInfos.Add(condition);
                machine.Context[CONTEXT_KEY_CONDITION] = condition;
            }
            break;

            case CountParseStates.NotCondition:
            {
                ConditionInfo conditionInfo = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                conditionInfo.IsNot = true;
            }
            break;

            case States.CountParseStates.ConditionField:
            {
                ConditionInfo conditionInfo = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                conditionInfo.Field     = machine.TokenStack.Pop().Text;
                conditionInfo.Parameter = conditionInfo.Field;
                machine.Context[CONTEXT_KEY_CONDITION] = conditionInfo;
            }
            break;

            case States.CountParseStates.ConditionOperator:
            {
                ConditionInfo conditionInfo = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                conditionInfo.Operators = machine.TokenStack.Pop().Text;
            }
            break;

            case States.CountParseStates.ConditionParameter:
            {
                ConditionInfo conditionInfo = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                conditionInfo.Parameter = machine.TokenStack.Pop().Text;
            }
            break;

            case States.CountParseStates.NextCondition:
            {
                ConditionInfo conditionInfo = machine.Context[CONTEXT_KEY_CONDITION] as ConditionInfo;
                var           token         = machine.TokenStack.Pop();
                conditionInfo.JoinerToNext = token.Action == Actions.CountParseActions.And ?
                                             ConditionJoiners.And :
                                             ConditionJoiners.Or;
                machine.Context[CONTEXT_KEY_CONDITION] = null;

                conditionInfo = new ConditionInfo();
                machine.Context[CONTEXT_KEY_CONDITION] = conditionInfo;
                info.ConditionInfos.Add(conditionInfo);
            }
            break;

            case States.CountParseStates.End:
                break;

            default:
                break;
            }
        }
Exemplo n.º 3
0
 protected abstract void OnParsing(ref TCommandInfo info, TMachine machine, TokenParsingEventArgs <TStates> e);
Exemplo n.º 4
0
        private void Machine_Parsing(object sender, TokenParsingEventArgs <TStates> e)
        {
            TMachine machine = (TMachine)sender;

            this.OnParsing(ref this.result, machine, e);
        }
        protected override void OnParsing(ref SelectInfo info, SelectStateMachine machine, TokenParsingEventArgs <SelectParseStates> e)
        {
            const string CONTEXT_KEY_CONDITION = "Condition";
            const string CONTEXT_KEY_ORDER     = "Order";

            switch (e.NowState)
            {
            case SelectParseStates.OutputField:
                info.Fields.Add
                (
                    machine.TokenStack.Pop().Text
                );
                break;

            case SelectParseStates.ConditionField:
            {
                ConditionInfo condition = (ConditionInfo)machine.Context[CONTEXT_KEY_CONDITION];
                condition.Field     = machine.TokenStack.Pop().Text;
                condition.Parameter = condition.Field;
                machine.Context[CONTEXT_KEY_CONDITION] = condition;
            }
            break;

            case SelectParseStates.ConditionOperator:
            {
                ConditionInfo condition = (ConditionInfo)machine.Context[CONTEXT_KEY_CONDITION];
                condition.Operators = machine.TokenStack.Pop().Text;
            }
            break;

            case SelectParseStates.NextCondition:
            {
                ConditionInfo condition = (ConditionInfo)machine.Context[CONTEXT_KEY_CONDITION];
                condition.JoinerToNext = machine.TokenStack.Pop().Action == Actions.SelectParseActions.Or
                            ? ConditionJoiners.Or
                            : ConditionJoiners.And;

                condition = new ConditionInfo();
                info.Conditions.Add(condition);
                machine.Context[CONTEXT_KEY_CONDITION] = condition;
            }
            break;

            case SelectParseStates.ConditionParameter:
            {
                ConditionInfo condition = (ConditionInfo)machine.Context[CONTEXT_KEY_CONDITION];
                condition.Parameter = machine.TokenStack.Pop().Text;
            }
            break;

            case SelectParseStates.OrderByField:
            {
                OrderInfo order = new OrderInfo(machine.TokenStack.Pop().Text);
                info.Orders.Add(order);
                machine.Context[CONTEXT_KEY_ORDER] = order;
            }
            break;

            case SelectParseStates.AscOrDesc:
            {
                OrderInfo order = (OrderInfo)machine.Context[CONTEXT_KEY_ORDER];
                order.Type = machine.TokenStack.Pop().Text == SelectToken.TEXT_DESC
                            ? OrderTypes.Desc
                            : OrderTypes.Asc;
            }
            break;

            case SelectParseStates.NotCondition:
            {
                machine.TokenStack.Pop();
                ConditionInfo condition = (ConditionInfo)machine.Context[CONTEXT_KEY_CONDITION];
                condition.IsNot = true;
            }
            break;

            case SelectParseStates.Condition:
            {
                machine.TokenStack.Pop();
                ConditionInfo condition = new ConditionInfo();
                info.Conditions.Add(condition);
                machine.Context[CONTEXT_KEY_CONDITION] = condition;
            }
            break;

            case SelectParseStates.NextOutputField:
            case SelectParseStates.OrderBy:
                machine.TokenStack.Pop();
                break;

            default:
                break;
            }
        }
Exemplo n.º 6
0
        protected override void OnParsing(ref InsertInfo info, InsertStateMachine machine, TokenParsingEventArgs <InsertParseStates> e)
        {
            switch (e.NowState)
            {
            case States.InsertParseStates.WithoutField:
                info.WithoutFields.Add(machine.TokenStack.Pop().Text);
                break;

            case States.InsertParseStates.Select:
                info.SelectNewRow = true;
                break;

            case States.InsertParseStates.Start:
            case States.InsertParseStates.Without:
            case States.InsertParseStates.WithoutEnd:
            default:
                break;
            }
        }