Source

hello / sql / sql_parser.mly

Diff from to

sql/sql_parser.mly

 %{
 
   open Printf
-  let _ = Parsing.set_trace false;;
+  let _ = Parsing.set_trace true;;
   let debugprint = ref true;;
   
   let print str = if !debugprint then print_endline str;;
 %token COMMA
 %token ASTERISK
 %token GT LT EQ NEQ NOT
-%token EOF
+%token EQUAL
 
 %token <int> INT
 
 %token <string> LITERAL
+%token <string> QUOTE
 
 %start input
 %type <Sql.query> input
 input: | exp { $1 };
 
 exp:
-  | SELECT ASTERISK FROM LITERAL { Sql.Select(Sql.All_col, $4) };
-  | SELECT columns  FROM LITERAL { Sql.Select(Sql.Columns($2), $4) };
+  | SELECT ASTERISK FROM LITERAL { Sql.Select(Sql.All_col, $4, []) }
+  | SELECT columns  FROM LITERAL { Sql.Select(Sql.Columns($2), $4, []) }
+  | SELECT ASTERISK FROM LITERAL where_clause { Sql.Select(Sql.All_col, $4, $5) }
+  | SELECT columns  FROM LITERAL where_clause { Sql.Select(Sql.Columns($2), $4, $5) }
 
 columns:
   | LITERAL  { [$1] }
   | LITERAL COMMA columns { $1::$3 }
-;
+
+where_clause:
+  | WHERE LITERAL EQUAL QUOTE { [ Sql.Equal_s($2, $4)] }