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 ->
# 4 "lexer.mll"
                                       ( token lexbuf )
# 127 "lexer.ml"

  | 1 ->
let
# 5 "lexer.mll"
                        x
# 133 "lexer.ml"
Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 5 "lexer.mll"
                                        ( IDENT x )
# 137 "lexer.ml"

  | 2 ->
let
# 7 "lexer.mll"
                       x
# 143 "lexer.ml"
Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
# 7 "lexer.mll"
                                               ( IDENT (String.make 1 x) )
# 147 "lexer.ml"

  | 3 ->
# 8 "lexer.mll"
                                            ( IDENT "[]" )
# 152 "lexer.ml"

  | 4 ->
let
# 9 "lexer.mll"
                a
# 158 "lexer.ml"
Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 9 "lexer.mll"
                                      ( CONST a )
# 162 "lexer.ml"

  | 5 ->
# 10 "lexer.mll"
                                            ( POINT )
# 167 "lexer.ml"

  | 6 ->
# 11 "lexer.mll"
                                        ( LPAR )
# 172 "lexer.ml"

  | 7 ->
# 12 "lexer.mll"
                                       ( RPAR )
# 177 "lexer.ml"

  | 8 ->
# 13 "lexer.mll"
                                   ( PAR )
# 182 "lexer.ml"

  | 9 ->
# 14 "lexer.mll"
                                   ( SEQ )
# 187 "lexer.ml"

  | 10 ->
# 15 "lexer.mll"
                                  ( SPLIT )
# 192 "lexer.ml"

  | 11 ->
# 16 "lexer.mll"
                                  ( MERGE )
# 197 "lexer.ml"

  | 12 ->
# 17 "lexer.mll"
                                    ( REC )
# 202 "lexer.ml"

  | 13 ->
# 18 "lexer.mll"
                                   ( EOF )
# 207 "lexer.ml"

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