Source

hello / sql / sql_lexer.mll

Diff from to

File sql/sql_lexer.mll

 let debugprint = ref true;;
 let print str =  if !debugprint then print_endline str;;
 
+let quote_buf = String.create 8192;;
+let quote_ptr = ref 0;;
+let in_quote = ref false;;
+
 }
 
 let digit = ['0'-'9']*
   | "SELECT" { SELECT }
   | "from"   { FROM }
   | "FROM"   { FROM }
+  | "where"  { WHERE }
+  | "WHERE"  { WHERE }
   | ","      { COMMA }
   | "*"      { ASTERISK }
+  | "=="     { EQUAL }
+  | "'"      {
+    print "quote =======>";
+    in_quote := true;
+    quote_ptr := 0;
+    quote lexbuf;
+    in_quote := false;
+    print " <============= quote";
+    QUOTE (String.sub quote_buf 0 (!quote_ptr))
+  }
   | literal as s { LITERAL(s) }
   | "\n"         { print "f"; token lexbuf }
 (*  | eof	         { print "eof."; EOF } *)
   | _            { token lexbuf }
+and quote = parse
+  | "'"  { () }
+  | _ as c {
+    (* print_char c; *)
+    String.set quote_buf (!quote_ptr) c;
+    quote_ptr := (!quote_ptr) + 1;
+    quote lexbuf
+  }
+
+
+{}