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 ->
# 50 "src/wp/script.mll"
           ( token lexbuf )
# 250 "src/wp/script.ml"

  | 1 ->
# 51 "src/wp/script.mll"
         ( newline lexbuf ; token lexbuf )
# 255 "src/wp/script.ml"

  | 2 ->
# 53 "src/wp/script.mll"
      ( 
        newline lexbuf ;
        let buffer = Buffer.create 512 in
        proof buffer 0 lexbuf ;
        Proof (Buffer.contents buffer)
      )
# 265 "src/wp/script.ml"

  | 3 ->
# 60 "src/wp/script.mll"
      ( 
        let buffer = Buffer.create 512 in
        proof buffer 0 lexbuf ;
        Proof (Buffer.contents buffer)
      )
# 274 "src/wp/script.ml"

  | 4 ->
# 66 "src/wp/script.mll"
      (
        let a = Lexing.lexeme lexbuf in
        if List.mem a keywords then Key a else Id a
      )
# 282 "src/wp/script.ml"

  | 5 ->
# 70 "src/wp/script.mll"
                        ( Key(Lexing.lexeme lexbuf) )
# 287 "src/wp/script.ml"

  | 6 ->
# 71 "src/wp/script.mll"
         ( comment 0 lexbuf )
# 292 "src/wp/script.ml"

  | 7 ->
# 72 "src/wp/script.mll"
        ( Eof )
# 297 "src/wp/script.ml"

  | 8 ->
# 73 "src/wp/script.mll"
                ( Key(Lexing.lexeme lexbuf) )
# 302 "src/wp/script.ml"

  | 9 ->
# 74 "src/wp/script.mll"
      ( Word )
# 307 "src/wp/script.ml"

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

and comment n lexbuf =
    __ocaml_lex_comment_rec n lexbuf 16
and __ocaml_lex_comment_rec n lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 77 "src/wp/script.mll"
         ( if n > 0 then comment (pred n) lexbuf else token lexbuf )
# 318 "src/wp/script.ml"

  | 1 ->
# 78 "src/wp/script.mll"
         ( comment (succ n) lexbuf )
# 323 "src/wp/script.ml"

  | 2 ->
# 79 "src/wp/script.mll"
        ( failwith "Non-terminated comment" )
# 328 "src/wp/script.ml"

  | 3 ->
# 80 "src/wp/script.mll"
         ( newline lexbuf ; comment n lexbuf )
# 333 "src/wp/script.ml"

  | 4 ->
# 81 "src/wp/script.mll"
      ( comment n lexbuf )
# 338 "src/wp/script.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec n lexbuf __ocaml_lex_state

and proof buffer n lexbuf =
    __ocaml_lex_proof_rec buffer n lexbuf 24
and __ocaml_lex_proof_rec buffer n lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 85 "src/wp/script.mll"
      (
        if n > 0 then proof buffer (pred n) lexbuf 
      )
# 351 "src/wp/script.ml"

  | 1 ->
# 88 "src/wp/script.mll"
         ( fill buffer lexbuf ; proof buffer (succ n) lexbuf )
# 356 "src/wp/script.ml"

  | 2 ->
# 89 "src/wp/script.mll"
         ( fill buffer lexbuf ; 
           if n>0 then proof buffer (pred n) lexbuf
           else failwith "Non-terminated comment (inside proof)" )
# 363 "src/wp/script.ml"

  | 3 ->
# 92 "src/wp/script.mll"
         ( failwith "Non-terminated proof" )
# 368 "src/wp/script.ml"

  | 4 ->
# 93 "src/wp/script.mll"
         ( fill buffer lexbuf ; newline lexbuf ; proof buffer n lexbuf )
# 373 "src/wp/script.ml"

  | 5 ->
# 94 "src/wp/script.mll"
         ( fill buffer lexbuf ; proof buffer n lexbuf )
# 378 "src/wp/script.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_proof_rec buffer n lexbuf __ocaml_lex_state