Exemplo n.º 1
0
        override public void Finish()
        {
            foreach (object obj in SyntaxList)
            {
                if (obj is SelectField)
                {
                    SelectField selectField = obj as SelectField;

                    if (selectField.BetweenRecord)
                    {
                        this.Begin = selectField.Begin;
                        this.End   = selectField.End;
                    }

                    SelectFields.Add(selectField);
                }
                else if (obj is SelectFrom)
                {
                    SelectFroms.Add(obj as SelectFrom);
                }
                else if (obj is OrderBy)
                {
                    OrderBys.Add(obj as OrderBy);
                }
                else if (obj is Where)
                {
                    Where = obj as Where;
                }
            }
        }
Exemplo n.º 2
0
        public override void DoThings(int action, Hubble.Framework.DataStructure.DFA <Hubble.Core.SFQL.LexicalAnalysis.Lexical.Token, SelectFieldFunction> dfa)
        {
            SelectField selectField = dfa as SelectField;

            switch (Func)
            {
            case SelectFieldFunction.Name:
                selectField.Name  = dfa.CurrentToken.Text;
                selectField.Alias = selectField.Name;
                break;

            case SelectFieldFunction.Alias:
                selectField.Alias = dfa.CurrentToken.Text;
                break;

            case SelectFieldFunction.Top:
                if (!selectField.BetweenRecord)
                {
                    selectField.IsTop = true;
                }
                break;

            case SelectFieldFunction.End:
                if (dfa.CurrentToken.SyntaxType == SyntaxType.Numeric)
                {
                    selectField.BetweenRecord = true;
                    selectField.End           = int.Parse(dfa.CurrentToken.Text);

                    if (selectField.IsTop)
                    {
                        if (selectField.End <= 0)
                        {
                            selectField.End   = 0;
                            selectField.Begin = -1;
                        }
                        else
                        {
                            selectField.End--;
                        }
                    }
                }
                break;

            case SelectFieldFunction.Begin:
                selectField.BetweenRecord = true;
                selectField.Begin         = int.Parse(dfa.CurrentToken.Text);
                break;
            }
        }