private SqlOrderByEntryNode ParseOrderTerm(ITokenizer t) { // ( <QualifiedIdentifier> | <Number> ) ("ASC" | "DESC")? var identifier = ParseQualifiedIdentifier(t); if (identifier == null) { if (t.Peek().IsType(SqlTokenType.Number)) { var number = t.GetNext(); identifier = new SqlNumberNode(number); } } if (identifier == null) { throw ParsingException.CouldNotParseRule(nameof(ParseOrderTerm), t.Peek()); } var entry = new SqlOrderByEntryNode { Location = identifier.Location, Source = identifier }; var next = t.Peek(); if (next.IsKeyword("ASC") || next.IsKeyword("DESC")) { t.GetNext(); entry.Direction = next.Value; } return(entry); }
public ISqlNode VisitOrderByEntry(SqlOrderByEntryNode n) { Visit(n.Source); if (!string.IsNullOrEmpty(n.Direction)) { Append(" ", n.Direction); } return(n); }
public virtual ISqlNode VisitOrderByEntry(SqlOrderByEntryNode n) { var source = Visit(n.Source); return(n.Update(source, n.Direction)); }
public override ISqlNode VisitOrderByEntry(SqlOrderByEntryNode n) { return(base.VisitOrderByEntry(n)); }