Source

hello / sql / sql_parser.mly

Diff from to

sql/sql_parser.mly

 
 %{
 
-  open Printf
   let _ = Parsing.set_trace true;;
   let debugprint = ref true;;
   
   let print str = if !debugprint then print_endline str;;
-  
   let parse_error s = print ("parse_error->"^s);;
 
 %}
 %token DOT
 %token LBRACE RBRACE
 %token COMMA
+%token SEMICOLON
 %token ASTERISK
 %token GT LT EQ NEQ NOT
 %token EQUAL
 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 where_clause { Sql.Select(Sql.All_col, $4, $5) }
-  | SELECT columns  FROM LITERAL where_clause { Sql.Select(Sql.Columns($2), $4, $5) }
+  | SELECT ASTERISK FROM LITERAL SEMICOLON
+      { print "here<";  print $4; Sql.Select(Sql.All_col, $4, []) }
+  | SELECT columns  FROM LITERAL SEMICOLON
+      { print "here<<"; print $4; Sql.Select(Sql.Columns($2), $4, []) }
+
+  | SELECT ASTERISK FROM LITERAL where_clause SEMICOLON
+      { print "hehe"; print $4; Sql.Select(Sql.All_col, $4, $5) }
+  | SELECT columns  FROM LITERAL where_clause SEMICOLON
+      { print "hoho"; print $4; Sql.Select(Sql.Columns($2), $4, $5) }
+;
 
 columns:
   | LITERAL  { [$1] }