let rec token lexbuf = __ocaml_lex_token_rec lexbuf 0
and __ocaml_lex_token_rec lexbuf state =
  match Lexing.engine lex_tables state lexbuf with
    0 -> (
# 64 "../../src/lexer.mll"
                 token lexbuf )
  | 1 -> (
# 65 "../../src/lexer.mll"
                 Tools.linenumber := !Tools.linenumber + 1;
                   token lexbuf )
  | 2 -> (
# 67 "../../src/lexer.mll"
                   token lexbuf )
  | 3 -> (
# 68 "../../src/lexer.mll"
                 keyword (Lexing.lexeme lexbuf) )
  | 4 -> (
# 69 "../../src/lexer.mll"
                 NEGINF )
  | 5 -> (
# 70 "../../src/lexer.mll"
                 INTCONST (int_of_string (Lexing.lexeme lexbuf)) )
  | 6 -> (
# 72 "../../src/lexer.mll"
                 RATCONST (Mpa.Q.of_string (Lexing.lexeme lexbuf)) )
  | 7 -> (
# 74 "../../src/lexer.mll"
                 let s = Lexing.lexeme lexbuf in
                   RATCONST(Mpa.Q.of_string (String.sub s 1 (String.length s - 1))) )
  | 8 -> (
# 77 "../../src/lexer.mll"
                 let s = Lexing.lexeme lexbuf in 
                 BVCONST (String.sub s 2 (String.length s - 2)) )
  | 9 -> (
# 79 "../../src/lexer.mll"
                     let s = Lexing.lexeme lexbuf in
                     let n = String.length s in
                     let i = String.rindex s '!' in
                     let x = String.sub s 0 i in
                     let k = int_of_string (String.sub s (i + 1) (n - i - 1)) in
                       FRESH (x, k) )
  | 10 -> (
# 85 "../../src/lexer.mll"
                 let s = Lexing.lexeme lexbuf in
                 let n = String.length s in
                 let k = int_of_string (String.sub s 1 (n - 1)) in
                   FREE k )
  | 11 -> (
# 89 "../../src/lexer.mll"
                       STRING(Lexing.lexeme lexbuf) )
  | 12 -> (
# 90 "../../src/lexer.mll"
                 COMMA )
  | 13 -> (
# 91 "../../src/lexer.mll"
                 if !Tools.mode = Tools.Prop then PROPLPAR else LPAR )
  | 14 -> (
# 92 "../../src/lexer.mll"
                 if !Tools.mode = Tools.Prop then PROPRPAR else RPAR )
  | 15 -> (
# 93 "../../src/lexer.mll"
                 LBRA )
  | 16 -> (
# 94 "../../src/lexer.mll"
                 RBRA )
  | 17 -> (
# 95 "../../src/lexer.mll"
                 LCUR )
  | 18 -> (
# 96 "../../src/lexer.mll"
                 RCUR )
  | 19 -> (
# 97 "../../src/lexer.mll"
                 PLUS )
  | 20 -> (
# 98 "../../src/lexer.mll"
                 MINUS )
  | 21 -> (
# 99 "../../src/lexer.mll"
                 TIMES )
  | 22 -> (
# 100 "../../src/lexer.mll"
                 DIVIDE )
  | 23 -> (
# 101 "../../src/lexer.mll"
                 BACKSLASH )
  | 24 -> (
# 102 "../../src/lexer.mll"
                 EQUAL )
  | 25 -> (
# 103 "../../src/lexer.mll"
                 ASSIGN )
  | 26 -> (
# 104 "../../src/lexer.mll"
                 DISEQ )
  | 27 -> (
# 105 "../../src/lexer.mll"
                 LESS )
  | 28 -> (
# 106 "../../src/lexer.mll"
                 LESSOREQUAL )
  | 29 -> (
# 107 "../../src/lexer.mll"
                 GREATER )
  | 30 -> (
# 108 "../../src/lexer.mll"
                 GREATEROREQUAL )
  | 31 -> (
# 109 "../../src/lexer.mll"
                 TO )
  | 32 -> (
# 110 "../../src/lexer.mll"
                 COLON )
  | 33 -> (
# 111 "../../src/lexer.mll"
                 EXPT )
  | 34 -> (
# 112 "../../src/lexer.mll"
                 DDOT )
  | 35 -> (
# 113 "../../src/lexer.mll"
                 BVCONC )
  | 36 -> (
# 114 "../../src/lexer.mll"
                 BWAND )
  | 37 -> (
# 115 "../../src/lexer.mll"
                 BWOR )
  | 38 -> (
# 116 "../../src/lexer.mll"
                 BWXOR )
  | 39 -> (
# 117 "../../src/lexer.mll"
                 CONJ )
  | 40 -> (
# 118 "../../src/lexer.mll"
                 DISJ )
  | 41 -> (
# 119 "../../src/lexer.mll"
                 XOR )
  | 42 -> (
# 120 "../../src/lexer.mll"
                 BIIMPL )
  | 43 -> (
# 121 "../../src/lexer.mll"
                 IMPL )
  | 44 -> (
# 122 "../../src/lexer.mll"
                 NEG )
  | 45 -> (
# 123 "../../src/lexer.mll"
                 UNDERSCORE )
  | 46 -> (
# 124 "../../src/lexer.mll"
                 CMP )
  | 47 -> (
# 125 "../../src/lexer.mll"
                 LISTCONS )
  | 48 -> (
# 126 "../../src/lexer.mll"
                 NIL )
  | 49 -> (
# 127 "../../src/lexer.mll"
                 DOT )
  | 50 -> (
# 128 "../../src/lexer.mll"
                 APPLY )
  | 51 -> (
# 129 "../../src/lexer.mll"
                 KLAMMERAFFE )
  | 52 -> (
# 130 "../../src/lexer.mll"
                 EOF )
  | 53 -> (
# 131 "../../src/lexer.mll"
                 raise Parsing.Parse_error )
  | n -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf n