@top Program { Expression } @precedence { mulop @left addop @left binop @left and @left or @left } @skip { space } commaSep { content ("," content)* } kw { @specialize[@name={term}] } Query { TagIdentifier ( WhereClause | LimitClause | OrderClause | SelectClause | RenderClause )* } WhereClause { kw<"where"> Expression } LimitClause { kw<"limit"> Expression } OrderClause { Order commaSep } OrderBy { Expression OrderDirection? } SelectClause { kw<"select"> commaSep