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) )
# 147 "fnf_lexer.ml"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  | 28 ->
# 76 "fnf_lexer.mll"
                         ( let _ = Parser_util.next_lex lexbuf in token lexbuf )
# 287 "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 )
# 294 "fnf_lexer.ml"

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