open Ast let parse query = let lexbuf = Lexing.from_string query in Parser.main Lexer.read_token lexbuf let () = assert(parse "SELECT ab FROM b1" = Query(Select([Column("ab")], [Table "b1"]))); assert(parse "SELECT * FROM b1" = Query(Select([Asterisk], [Table "b1"]))); assert(parse "SELECT * FROM t1 CROSS JOIN t2" = Query(Select([Asterisk], [Join(Table("t1"), Cross, Table("t2"))]))); assert(parse "SELECT * FROM t1 JOIN t2 ON a = b" = Query(Select([Asterisk], [Join(Table("t1"), Left, Table("t2"))])));