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; } } }
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; } }