# 26 "sqml/sqml_lexer.mll"
 
 open Sqml_helper_lp
 open Sqml_parser

   (* keywords for faster lex gen *)
 let keywords = Hashtbl.create 0

 let _ =
   List.iter (fun (kw, s) -> Hashtbl.add keywords s kw)
     [
 (ADA"ADA");  (ALL"ALL");  (AND"AND");
 (ANY"ANY");  (AS"AS");  (ASC"ASC");  (AUTHORIZATION"AUTHORIZATION");
 (BETWEEN"BETWEEN");  (BY"BY");  (C"C");  (CHECK"CHECK");
 (CLOSE"CLOSE");  (COBOL"COBOL");  (COMMIT"COMMIT");  (CONTINUE"CONTINUE");
 (CREATE"CREATE");  (CURRENT"CURRENT");  (CURSOR"CURSOR");  (DECIMAL"DECIMAL");
 (DECLARE"DECLARE");  (DEFAULT"DEFAULT");  (DELETE"DELETE");  (DESC"DESC");
 (DISTINCT"DISTINCT");  (DOUBLE"DOUBLE");  (ESCAPE"ESCAPE");  (EXISTS"EXISTS");
 (FETCH"FETCH");  (FLOAT"FLOAT");  (FOR"FOR");  (FOREIGN"FOREIGN");
 (FORTRAN"FORTRAN");  (FOUND"FOUND");  (FROM"FROM");  (GRANT"GRANT");
 (GROUP"GROUP");  (HAVING"HAVING");  (IN"IN");  (INDICATOR"INDICATOR");  (INSERT"INSERT");
 (INTO"INTO");  (IS"IS");  (KEY"KEY");  (LANGUAGE"LANGUAGE");  (LIKE"LIKE");
 (MODULE"MODULE");  (NOT"NOT");  (NULL"NULL");  (NUMERIC"NUMERIC");  (OF"OF");
 (ON"ON");  (OPEN"OPEN");  (OPTION"OPTION");  (OR"OR");  (ORDER"ORDER"); (OCAML"OCAML");
 (PASCAL"PASCAL");  (PLI"PLI");  (PRECISION"PRECISION");  (PRIMARY"PRIMARY");
 (PRIVILEGES"PRIVILEGES");  (PROCEDURE"PROCEDURE");  (PUBLIC"PUBLIC");  (REAL"REAL");
 (REFERENCES"REFERENCES");  (ROLLBACK"ROLLBACK");  (SCHEMA"SCHEMA");  (SELECT"SELECT");
 (SET"SET");  (SMALLINT"SMALLINT");  (SOME"SOME");  (SQLCODE"SQLCODE");
 (TABLE"TABLE");  (TO"TO");  (UNION"UNION");  (UNIQUE"UNIQUE");
 (UPDATE"UPDATE");  (USER"USER");  (VALUES"VALUES");  (VIEW"VIEW");
 (WHENEVER"WHENEVER");  (WHERE"WHERE");  (WITH"WITH");  (WORK"WORK");
 (* special ones *)
 (CHARACTER"CHAR"); (CHARACTER"CHARACTER"); (INTEGER"INT"); (INTEGER"INTEGER");
 (* known functions *)
 (AVG"AVG"); (MIN"MIN");  (MAX"MAX");  (SUM"SUM");  (COUNT"COUNT");
     ]

 (* because there are no parameters with lexical rules ... *)
 let b = ref (Buffer.create 32)

# 42 "sqml/sqml_lexer.ml"
let __ocaml_lex_tables = {
  Lexing.lex_base = 
   "\000\000\230\255\231\255\002\000\233\255\234\255M\000\238\255W\000\240\255\241\255\242\255\243\255\244\255\245\255\246\255\018\000\003\000\030\000\253\255\160\000\235\000]\001s\000\168\001\014\000\254\255\249\255\252\255\248\255\135\000m\000x\0007\001A\001\248\001\002\002\012\002\024\002\140\0007\000\157\000";
  Lexing.lex_backtrk = 
   "\255\255\255\255\255\255\023\000\255\255\255\255\018\000\255\255\016\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\008\000\005\000\004\000\255\255\000\000\000\000\000\000\255\255\000\000\255\255\255\255\255\255\255\255\255\255\023\000\255\255\019\000\020\000\255\255\255\255\019\000\020\000\255\255\255\255\003\000\000\000";
  Lexing.lex_default = 
   "\001\000\000\000\000\000\255\255\000\000\000\000\255\255\000\000\255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\255\255\255\255\000\000\255\255\255\255\255\255\255\255\255\255\255\255\000\000\000\000\000\000\000\000\030\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255)\000\255\255)\000";
  Lexing.lex_trans = 
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\003\000\000\000\003\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\003\000\000\000\000\000\000\000\000\000\005\000\011\000\n\000\014\000\015\000\t\000\016\000\008\000\013\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\012\000\007\000\018\000\019\000\017\000\030\000\029\000\020\000\020\000\020\000\020\000\020\000\020\000\021\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\027\000\028\000\026\000\026\000\000\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000$\000\023\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000 \000 \000 \000 \000 \000 \000 \000 \000 \000 \000\255\255#\000\023\000\000\000\000\000\019\000\000\000\"\000\000\000\"\000\000\000\031\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000\255\255 \000 \000 \000 \000 \000 \000 \000 \000 \000 \000#\000(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\031\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\000\000\000\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\031\000\000\000\000\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\020\000\002\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\022\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\020\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\023\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000\000\000\000\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\000\000\000\000\000\000\000\000\255\255\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\024\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\020\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\020\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000&\000\000\000&\000\000\000\000\000%\000%\000%\000%\000%\000%\000%\000%\000%\000%\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000%\000%\000%\000%\000%\000%\000%\000%\000%\000%\000\000\000\031\000%\000%\000%\000%\000%\000%\000%\000%\000%\000%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000";
  Lexing.lex_check = 
   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\000\000\003\000\255\255\000\000\255\255\003\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\255\255\003\000\255\255\255\255\255\255\255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\018\000\025\000(\000\255\255\255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\023\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\030\000\006\000\023\000\255\255\255\255'\000\255\255\031\000\255\255\031\000\255\255\008\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000)\000 \000 \000 \000 \000 \000 \000 \000 \000 \000 \000\006\000'\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\008\000 \000\255\255\255\255\255\255\255\255\255\255\255\255)\000\255\255\255\255\023\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\255\255\255\255\255\255 \000\255\255\255\255\255\255\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\255\255\255\255\255\255\255\255\020\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\255\255\255\255\255\255\255\255\021\000\255\255\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\022\000!\000!\000!\000!\000!\000!\000!\000!\000!\000!\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\"\000\255\255\255\255\022\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\030\000\255\255\255\255\255\255\255\255'\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\255\255\255\255\255\255\255\255\255\255\255\255)\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\255\255\255\255\255\255\255\255\022\000\255\255\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\255\255\255\255\255\255\255\255\024\000\255\255\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000#\000\255\255#\000\255\255\255\255#\000#\000#\000#\000#\000#\000#\000#\000#\000#\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000%\000%\000%\000%\000%\000%\000%\000%\000%\000%\000\255\255$\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255$\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255";
  Lexing.lex_base_code = 
   "";
  Lexing.lex_backtrk_code = 
   "";
  Lexing.lex_default_code = 
   "";
  Lexing.lex_trans_code = 
   "";
  Lexing.lex_check_code = 
   "";
  Lexing.lex_code = 
   "";
}

let rec token lexbuf =
    __ocaml_lex_token_rec lexbuf 0
and __ocaml_lex_token_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 72 "sqml/sqml_lexer.mll"
                        ( let s = Lexing.lexeme lexbuf in
                          try
                            Hashtbl.find keywords (String.uppercase s)
                          with Not_found ->
                            IDENT s )
# 292 "sqml/sqml_lexer.ml"

  | 1 ->
# 78 "sqml/sqml_lexer.mll"
                        ( GOTO )
# 297 "sqml/sqml_lexer.ml"

  | 2 ->
# 81 "sqml/sqml_lexer.mll"
                        ( COMPARISON `eq )
# 302 "sqml/sqml_lexer.ml"

  | 3 ->
# 82 "sqml/sqml_lexer.mll"
                   ( COMPARISON `neq )
# 307 "sqml/sqml_lexer.ml"

  | 4 ->
# 83 "sqml/sqml_lexer.mll"
                        ( COMPARISON `lt )
# 312 "sqml/sqml_lexer.ml"

  | 5 ->
# 84 "sqml/sqml_lexer.mll"
                        ( COMPARISON `gt )
# 317 "sqml/sqml_lexer.ml"

  | 6 ->
# 85 "sqml/sqml_lexer.mll"
                         ( COMPARISON `lte )
# 322 "sqml/sqml_lexer.ml"

  | 7 ->
# 86 "sqml/sqml_lexer.mll"
                  ( COMPARISON `gte )
# 327 "sqml/sqml_lexer.ml"

  | 8 ->
# 89 "sqml/sqml_lexer.mll"
                          ( MINUS )
# 332 "sqml/sqml_lexer.ml"

  | 9 ->
# 90 "sqml/sqml_lexer.mll"
                          ( PLUS )
# 337 "sqml/sqml_lexer.ml"

  | 10 ->
# 91 "sqml/sqml_lexer.mll"
                          ( TIMES )
# 342 "sqml/sqml_lexer.ml"

  | 11 ->
# 92 "sqml/sqml_lexer.mll"
                          ( DIV )
# 347 "sqml/sqml_lexer.ml"

  | 12 ->
# 95 "sqml/sqml_lexer.mll"
                          ( COLON )
# 352 "sqml/sqml_lexer.ml"

  | 13 ->
# 96 "sqml/sqml_lexer.mll"
                          ( LPAREN )
# 357 "sqml/sqml_lexer.ml"

  | 14 ->
# 97 "sqml/sqml_lexer.mll"
                          ( RPAREN )
# 362 "sqml/sqml_lexer.ml"

  | 15 ->
# 98 "sqml/sqml_lexer.mll"
                          ( COMMA )
# 367 "sqml/sqml_lexer.ml"

  | 16 ->
# 99 "sqml/sqml_lexer.mll"
                          ( DOT )
# 372 "sqml/sqml_lexer.ml"

  | 17 ->
# 100 "sqml/sqml_lexer.mll"
                          ( SEMICOLON )
# 377 "sqml/sqml_lexer.ml"

  | 18 ->
# 104 "sqml/sqml_lexer.mll"
                       ( INTNUM (`inttoomuch (Lexing.lexeme lexbuf)) )
# 382 "sqml/sqml_lexer.ml"

  | 19 ->
# 106 "sqml/sqml_lexer.mll"
                          ( FLOATNUM (`floattoomuch (Lexing.lexeme lexbuf)) )
# 387 "sqml/sqml_lexer.ml"

  | 20 ->
# 110 "sqml/sqml_lexer.mll"
    ( FLOATNUM (`floattoomuch (Lexing.lexeme lexbuf)) )
# 392 "sqml/sqml_lexer.ml"

  | 21 ->
# 114 "sqml/sqml_lexer.mll"
                             ( sqlstring lexbuf;
                               let s = Buffer.contents !b in
                               Buffer.reset !b;
                               STRING s )
# 400 "sqml/sqml_lexer.ml"

  | 22 ->
# 120 "sqml/sqml_lexer.mll"
                  ( (err ()) # ack_nl ; token lexbuf )
# 405 "sqml/sqml_lexer.ml"

  | 23 ->
# 124 "sqml/sqml_lexer.mll"
                   ( token lexbuf )
# 410 "sqml/sqml_lexer.ml"

  | 24 ->
# 127 "sqml/sqml_lexer.mll"
                        ( EOF )
# 415 "sqml/sqml_lexer.ml"

  | 25 ->
# 129 "sqml/sqml_lexer.mll"
                        ( (err ())#error "lexical error" )
# 420 "sqml/sqml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state

and sqlstring lexbuf =
    __ocaml_lex_sqlstring_rec lexbuf 39
and __ocaml_lex_sqlstring_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 132 "sqml/sqml_lexer.mll"
                    ( Buffer.add_string !b (Lexing.lexeme lexbuf); sqlstring lexbuf )
# 431 "sqml/sqml_lexer.ml"

  | 1 ->
# 133 "sqml/sqml_lexer.mll"
              ( Buffer.add_char !b '\''; sqlstring lexbuf)
# 436 "sqml/sqml_lexer.ml"

  | 2 ->
# 134 "sqml/sqml_lexer.mll"
              ( (err ())#ack_nl; Buffer.add_char !b '\n'; sqlstring lexbuf)
# 441 "sqml/sqml_lexer.ml"

  | 3 ->
# 135 "sqml/sqml_lexer.mll"
              ( () )
# 446 "sqml/sqml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_sqlstring_rec lexbuf __ocaml_lex_state

;;

# 137 "sqml/sqml_lexer.mll"
 
  let token l =
    errstart l;
    token l

# 458 "sqml/sqml_lexer.ml"