module OracleSqlParser::Grammar::Select
grammar Order rule order_by_clause order_keyword space siblings:siblings_keyword? space? by_keyword space order_by_clause_items { def ast OracleSqlParser::Ast::OrderByClause[ :siblings => siblings.ast, :items => order_by_clause_items.ast ] end } end rule order_by_clause_items order_by_clause_item more:(space? ',' space? order_by_clause_item space?)* { def ast OracleSqlParser::Ast::Array[ order_by_clause_item.ast, *more_order_by_clause_items.map(&:ast) ] end def more_order_by_clause_items more.elements.map(&:order_by_clause_item) end } end rule order_by_clause_item target:(expr / position / c_alias) space? asc:(asc_keyword / desc_keyword)? space? nulls:(nulls_keyword space first_or_last:(first_keyword / last_keyword))? { def ast OracleSqlParser::Ast::OrderByClauseItem[ :target => target.ast, :asc => asc.ast, :nulls => nulls.try(:first_or_last).ast, ] end } end end
end