# 19 "smt/yicesLexer.mll"
 
  open Printf
  open Lexing
  open YicesParser

  let keywords = Hashtbl.create 97
  let () = 
    List.iter 
      (fun (x,y) -> Hashtbl.add keywords x y)
      [ "id"ID;
        "unsat"UNSAT;
        "sat"SAT;
        "unknown"UNKNOWN;
        "core"CORE;
        "ids:"IDS;
        (* "unsatisfied", UNSATISFIED; *)
        (* "assertion", ASSERTION; *)
        (* "Error", ERROR; *)
        (* "error", ERROR; *)
        YicesResponse.success, SUCCESS;
        (* YicesResponse.custom, CUSTOM; *)
      ]

  let string_buf = Buffer.create 1024
               
  let newline lexbuf =
    let pos = lexbuf.lex_curr_p in
    lexbuf.lex_curr_p <- 
      { pos with pos_lnum = pos.pos_lnum + 1; pos_bol = pos.pos_cnum }

# 33 "smt/yicesLexer.ml"
let __ocaml_lex_tables = {
  Lexing.lex_base = 
   "\000\000\244\255\245\255\246\255\247\255\249\255\250\255\092\000\193\000\029\001\002\000\255\255\108\001\133\001\225\001\048\002\058\002\125\000\253\255\254\255\255\255\084\002\252\255\253\255\254\255\176\002";
  Lexing.lex_backtrk = 
   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\004\000\002\000\004\000\001\000\255\255\255\255\004\000\004\000\003\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000";
  Lexing.lex_default = 
   "\001\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\255\255\255\255\255\255\000\000\255\255\255\255\255\255\255\255\255\255\018\000\000\000\000\000\000\000\022\000\000\000\000\000\000\000\255\255";
  Lexing.lex_trans = 
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\011\000\010\000\010\000\010\000\010\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\007\000\010\000\007\000\007\000\007\000\000\000\000\000\006\000\005\000\003\000\003\000\000\000\009\000\007\000\003\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\007\000\000\000\000\000\004\000\000\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\000\000\007\000\007\000\007\000\007\000\007\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\007\000\007\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\000\000\000\000\000\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\000\000\000\000\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\000\000\000\007\000\007\000\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\000\007\000\012\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\007\000\000\000\000\000\000\000\000\000\002\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\000\000\007\000\007\000\007\000\007\000\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\000\007\000\000\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\007\000\000\000\000\000\000\000\000\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\019\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\016\000\000\000\007\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\007\000\000\000\007\000\007\000\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\000\007\000\000\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\007\000\000\000\000\000\000\000\000\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\000\000\007\000\007\000\007\000\007\000\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\000\007\000\012\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\007\000\000\000\000\000\000\000\000\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\000\000\016\000\024\000\007\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\000\000\025\000\000\000\025\000\025\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\000\025\000\000\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\000\000\000\000\000\000\000\000\000\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\000\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\000\000\000\000\025\000\025\000\025\000\025\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\000\025\000\000\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\000\000\000\000\000\000\000\000\000\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\000\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\000\000\000\000\000\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\010\000\000\000\000\000\010\000\010\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\000\000\010\000\000\000\000\000\000\000\255\255\255\255\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\255\255\255\255\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\255\255\007\000\000\000\007\000\007\000\007\000\255\255\255\255\255\255\255\255\255\255\017\000\255\255\007\000\007\000\255\255\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\255\255\255\255\255\255\255\255\255\255\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\255\255\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\255\255\255\255\255\255\007\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\008\000\255\255\008\000\008\000\008\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\255\255\255\255\255\255\255\255\000\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\255\255\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\255\255\255\255\009\000\008\000\009\000\009\000\009\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\009\000\009\000\255\255\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\255\255\255\255\255\255\255\255\255\255\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\017\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\255\255\012\000\255\255\009\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\013\000\255\255\013\000\013\000\013\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\013\000\013\000\255\255\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\255\255\255\255\255\255\255\255\255\255\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\255\255\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\255\255\255\255\014\000\013\000\014\000\014\000\014\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\255\255\255\255\255\255\255\255\255\255\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\255\255\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\255\255\015\000\021\000\014\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\255\255\021\000\255\255\021\000\021\000\021\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\021\000\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\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\021\000\021\000\021\000\021\000\021\000\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\255\255\255\255\025\000\021\000\025\000\025\000\025\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\025\000\025\000\255\255\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\255\255\255\255\255\255\255\255\255\255\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\255\255\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\255\255\255\255\255\255\025\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\021\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";
  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 ->
# 65 "smt/yicesLexer.mll"
      ( newline lexbuf; token lexbuf )
# 311 "smt/yicesLexer.ml"

  | 1 ->
# 67 "smt/yicesLexer.mll"
      ( token lexbuf )
# 316 "smt/yicesLexer.ml"

  | 2 ->
let
# 68 "smt/yicesLexer.mll"
               i
# 322 "smt/yicesLexer.ml"
Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 69 "smt/yicesLexer.mll"
      ( INT (int_of_string i) )
# 326 "smt/yicesLexer.ml"

  | 3 ->
let
# 70 "smt/yicesLexer.mll"
             r
# 332 "smt/yicesLexer.ml"
Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 71 "smt/yicesLexer.mll"
      ( DECIMAL (Decimal.of_num (Num.num_of_string r)) )
# 336 "smt/yicesLexer.ml"

  | 4 ->
let
# 72 "smt/yicesLexer.mll"
             id
# 342 "smt/yicesLexer.ml"
Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 73 "smt/yicesLexer.mll"
      ( try
          let k = Hashtbl.find keywords id in
          match k with
            (* | CUSTOM -> Buffer.clear string_buf; custom lexbuf *)
          | _ -> k
        with Not_found -> IDENT id
      )
# 352 "smt/yicesLexer.ml"

  | 5 ->
# 82 "smt/yicesLexer.mll"
      ( LEFTPAR )
# 357 "smt/yicesLexer.ml"

  | 6 ->
# 84 "smt/yicesLexer.mll"
      ( RIGHTPAR )
# 362 "smt/yicesLexer.ml"

  | 7 ->
# 86 "smt/yicesLexer.mll"
      ( COLON )
# 367 "smt/yicesLexer.ml"

  | 8 ->
# 88 "smt/yicesLexer.mll"
      ( EQ )
# 372 "smt/yicesLexer.ml"

  | 9 ->
let
# 89 "smt/yicesLexer.mll"
                             op
# 378 "smt/yicesLexer.ml"
Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
# 90 "smt/yicesLexer.mll"
      ( IDENT (String.make 1 op) )
# 382 "smt/yicesLexer.ml"

  | 10 ->
# 92 "smt/yicesLexer.mll"
      ( EOF )
# 387 "smt/yicesLexer.ml"

  | 11 ->
let
# 95 "smt/yicesLexer.mll"
         c
# 393 "smt/yicesLexer.ml"
Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
# 96 "smt/yicesLexer.mll"
      ( failwith ("YicesLexer: illegal character: " ^ String.make 1 c) )
# 397 "smt/yicesLexer.ml"

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

and error_msg lexbuf =
    __ocaml_lex_error_msg_rec lexbuf 17
and __ocaml_lex_error_msg_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 101 "smt/yicesLexer.mll"
     ( newline lexbuf; Buffer.add_char string_buf '\n'; error_msg lexbuf )
# 409 "smt/yicesLexer.ml"

  | 1 ->
# 103 "smt/yicesLexer.mll"
     ( ERROR_MSG (Buffer.contents string_buf) )
# 414 "smt/yicesLexer.ml"

  | 2 ->
let
# 104 "smt/yicesLexer.mll"
        c
# 420 "smt/yicesLexer.ml"
Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
# 105 "smt/yicesLexer.mll"
     ( Buffer.add_char string_buf c; error_msg lexbuf )
# 424 "smt/yicesLexer.ml"

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

and custom lexbuf =
    __ocaml_lex_custom_rec lexbuf 21
and __ocaml_lex_custom_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
let
# 109 "smt/yicesLexer.mll"
            id
# 437 "smt/yicesLexer.ml"
Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 110 "smt/yicesLexer.mll"
     ( if id = YicesResponse.success then CUSTOM_RESP (Buffer.contents string_buf)
       else (Buffer.add_string string_buf id; custom lexbuf) )
# 442 "smt/yicesLexer.ml"

  | 1 ->
# 113 "smt/yicesLexer.mll"
     ( newline lexbuf; Buffer.add_char string_buf '\n'; custom lexbuf )
# 447 "smt/yicesLexer.ml"

  | 2 ->
# 115 "smt/yicesLexer.mll"
     ( EOF )
# 452 "smt/yicesLexer.ml"

  | 3 ->
let
# 116 "smt/yicesLexer.mll"
        c
# 458 "smt/yicesLexer.ml"
Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
# 117 "smt/yicesLexer.mll"
     ( Buffer.add_char string_buf c; custom lexbuf )
# 462 "smt/yicesLexer.ml"

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

;;