ometa SQLParser <: Parser { sql = sql_statement end, sql_statement = select_statement, select_statement = SELECT (set_quantifier | empty) select_list table_expr, set_quantifier = DISTINCT | ALL, select_list = spaces '*' | select_sublist (',' select_sublist), select_sublist = empty, // TODO table_expr = from_clause (where_clause | empty) (group_by_clause | empty) (having_clause | empty), from_clause = FROM table_reference_list, where_clause = empty, // TODO group_by_clause = empty, // TODO having_clause = empty, // TODO table_reference_list = table_reference (COMMA table_reference)*, table_reference = table_primary | joined_table, table_primary = empty, // TODO joined_table = empty, // TODO SELECT = "select", DISTINCT = "distinct", ALL = "all", FROM = "from", COMMA = spaces ',', SEMI = spaces ';' }