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 ->
# 43 "fnf_lexer.mll"
                         ( Fnf_parser.Parenl              (Parser_util.next_lex lexbuf) )
# 149 "fnf_lexer.ml"

  | 1 ->
# 44 "fnf_lexer.mll"
                         ( Fnf_parser.Parenr              (Parser_util.next_lex lexbuf) )
# 154 "fnf_lexer.ml"

  | 2 ->
# 45 "fnf_lexer.mll"
                         ( Fnf_parser.Scope               (Parser_util.next_lex lexbuf) )
# 159 "fnf_lexer.ml"

  | 3 ->
# 46 "fnf_lexer.mll"
                         ( Fnf_parser.Input               (Parser_util.next_lex lexbuf) )
# 164 "fnf_lexer.ml"

  | 4 ->
# 47 "fnf_lexer.mll"
                         ( Fnf_parser.Output              (Parser_util.next_lex lexbuf) )
# 169 "fnf_lexer.ml"

  | 5 ->
# 48 "fnf_lexer.mll"
                         ( Fnf_parser.Name                (Parser_util.next_lex lexbuf) )
# 174 "fnf_lexer.ml"

  | 6 ->
# 49 "fnf_lexer.mll"
                         ( Fnf_parser.Dangle              (Parser_util.next_lex lexbuf) )
# 179 "fnf_lexer.ml"

  | 7 ->
# 50 "fnf_lexer.mll"
                         ( Fnf_parser.Const               (Parser_util.next_lex lexbuf) )
# 184 "fnf_lexer.ml"

  | 8 ->
# 51 "fnf_lexer.mll"
                         ( Fnf_parser.Buf                 (Parser_util.next_lex lexbuf) )
# 189 "fnf_lexer.ml"

  | 9 ->
# 52 "fnf_lexer.mll"
                         ( Fnf_parser.Not                 (Parser_util.next_lex lexbuf) )
# 194 "fnf_lexer.ml"

  | 10 ->
# 53 "fnf_lexer.mll"
                         ( Fnf_parser.And                 (Parser_util.next_lex lexbuf) )
# 199 "fnf_lexer.ml"

  | 11 ->
# 54 "fnf_lexer.mll"
                         ( Fnf_parser.Xor                 (Parser_util.next_lex lexbuf) )
# 204 "fnf_lexer.ml"

  | 12 ->
# 55 "fnf_lexer.mll"
                         ( Fnf_parser.Or                  (Parser_util.next_lex lexbuf) )
# 209 "fnf_lexer.ml"

  | 13 ->
# 56 "fnf_lexer.mll"
                         ( Fnf_parser.Concat              (Parser_util.next_lex lexbuf) )
# 214 "fnf_lexer.ml"

  | 14 ->
# 57 "fnf_lexer.mll"
                         ( Fnf_parser.Select              (Parser_util.next_lex lexbuf) )
# 219 "fnf_lexer.ml"

  | 15 ->
# 58 "fnf_lexer.mll"
                         ( Fnf_parser.Eq                  (Parser_util.next_lex lexbuf) )
# 224 "fnf_lexer.ml"

  | 16 ->
# 59 "fnf_lexer.mll"
                         ( Fnf_parser.Lt                  (Parser_util.next_lex lexbuf) )
# 229 "fnf_lexer.ml"

  | 17 ->
# 60 "fnf_lexer.mll"
                         ( Fnf_parser.Add                 (Parser_util.next_lex lexbuf) )
# 234 "fnf_lexer.ml"

  | 18 ->
# 61 "fnf_lexer.mll"
                         ( Fnf_parser.Sub                 (Parser_util.next_lex lexbuf) )
# 239 "fnf_lexer.ml"

  | 19 ->
# 62 "fnf_lexer.mll"
                         ( Fnf_parser.Mul                 (Parser_util.next_lex lexbuf) )
# 244 "fnf_lexer.ml"

  | 20 ->
# 63 "fnf_lexer.mll"
                         ( Fnf_parser.Mux                 (Parser_util.next_lex lexbuf) )
# 249 "fnf_lexer.ml"

  | 21 ->
# 64 "fnf_lexer.mll"
                         ( Fnf_parser.Ff                  (Parser_util.next_lex lexbuf) )
# 254 "fnf_lexer.ml"

  | 22 ->
# 65 "fnf_lexer.mll"
                         ( Fnf_parser.Ffc                 (Parser_util.next_lex lexbuf) )
# 259 "fnf_lexer.ml"

  | 23 ->
# 66 "fnf_lexer.mll"
                         ( Fnf_parser.Bbox                (Parser_util.next_lex lexbuf) )
# 264 "fnf_lexer.ml"

  | 24 ->
# 68 "fnf_lexer.mll"
                         ( Fnf_parser.Integer             (Parser_util.next_lex lexbuf) )
# 269 "fnf_lexer.ml"

  | 25 ->
# 70 "fnf_lexer.mll"
                         ( Fnf_parser.String              (Parser_util.next_lex lexbuf) )
# 274 "fnf_lexer.ml"

  | 26 ->
# 72 "fnf_lexer.mll"
                         ( Fnf_parser.EOF                 (Parser_util.next_lex lexbuf) )
# 279 "fnf_lexer.ml"

  | 27 ->
# 74 "fnf_lexer.mll"
                         ( let _ = Parser_util.next_lex lexbuf in token lexbuf )
# 284 "fnf_lexer.ml"

  | 28 ->
# 76 "fnf_lexer.mll"
                         ( let _ = Parser_util.next_lex lexbuf in token lexbuf )
# 289 "fnf_lexer.ml"

  | 29 ->
# 78 "fnf_lexer.mll"
                         ( let token = Parser_util.next_lex lexbuf in
                           Parser_util.error ("Unrecognized character: '" ^ (fst token) ^ "'");
                           Fnf_parser.Lexer_error token )
# 296 "fnf_lexer.ml"

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