# 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"