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 ->
# 48 "lexer.mll"
( PROGRAM )
# 2504 "lexer.ml"
| 1 ->
# 49 "lexer.mll"
( CONST )
# 2509 "lexer.ml"
| 2 ->
# 50 "lexer.mll"
( TYPE )
# 2514 "lexer.ml"
| 3 ->
# 51 "lexer.mll"
( ARRAY )
# 2519 "lexer.ml"
| 4 ->
# 52 "lexer.mll"
( OF )
# 2524 "lexer.ml"
| 5 ->
# 53 "lexer.mll"
( RECORD )
# 2529 "lexer.ml"
| 6 ->
# 54 "lexer.mll"
( END )
# 2534 "lexer.ml"
| 7 ->
# 55 "lexer.mll"
( VAR )
# 2539 "lexer.ml"
| 8 ->
# 56 "lexer.mll"
( IF )
# 2544 "lexer.ml"
| 9 ->
# 57 "lexer.mll"
( THEN )
# 2549 "lexer.ml"
| 10 ->
# 58 "lexer.mll"
( ELSE )
# 2554 "lexer.ml"
| 11 ->
# 59 "lexer.mll"
( WHILE )
# 2559 "lexer.ml"
| 12 ->
# 60 "lexer.mll"
( DO )
# 2564 "lexer.ml"
| 13 ->
# 61 "lexer.mll"
( BEGIN )
# 2569 "lexer.ml"
| 14 ->
# 62 "lexer.mll"
( END )
# 2574 "lexer.ml"
| 15 ->
# 63 "lexer.mll"
( PROCEDURE )
# 2579 "lexer.ml"
| 16 ->
# 64 "lexer.mll"
( FUNCTION )
# 2584 "lexer.ml"
| 17 ->
# 65 "lexer.mll"
( RETURN )
# 2589 "lexer.ml"
| 18 ->
# 66 "lexer.mll"
( NEW )
# 2594 "lexer.ml"
| 19 ->
# 67 "lexer.mll"
( DELETE )
# 2599 "lexer.ml"
| 20 ->
# 69 "lexer.mll"
( TRUE )
# 2604 "lexer.ml"
| 21 ->
# 70 "lexer.mll"
( FALSE )
# 2609 "lexer.ml"
| 22 ->
# 71 "lexer.mll"
( NOT )
# 2614 "lexer.ml"
| 23 ->
# 73 "lexer.mll"
( INTEGER )
# 2619 "lexer.ml"
| 24 ->
# 74 "lexer.mll"
( BOOLEAN )
# 2624 "lexer.ml"
| 25 ->
# 75 "lexer.mll"
( POINTER )
# 2629 "lexer.ml"
| 26 ->
# 76 "lexer.mll"
( ADDRESS_OF )
# 2634 "lexer.ml"
| 27 ->
# 78 "lexer.mll"
( LBRACK )
# 2639 "lexer.ml"
| 28 ->
# 79 "lexer.mll"
( RBRACK )
# 2644 "lexer.ml"
| 29 ->
# 80 "lexer.mll"
( INTERV )
# 2649 "lexer.ml"
| 30 ->
# 81 "lexer.mll"
( SEMICOL )
# 2654 "lexer.ml"
| 31 ->
# 82 "lexer.mll"
( COMMA )
# 2659 "lexer.ml"
| 32 ->
# 83 "lexer.mll"
( COLON )
# 2664 "lexer.ml"
| 33 ->
# 84 "lexer.mll"
( DOT )
# 2669 "lexer.ml"
| 34 ->
# 85 "lexer.mll"
( LPAR )
# 2674 "lexer.ml"
| 35 ->
# 86 "lexer.mll"
( RPAR )
# 2679 "lexer.ml"
| 36 ->
# 87 "lexer.mll"
( ASSIGN )
# 2684 "lexer.ml"
| 37 ->
# 89 "lexer.mll"
( EQ )
# 2689 "lexer.ml"
| 38 ->
# 90 "lexer.mll"
( NEQ )
# 2694 "lexer.ml"
| 39 ->
# 91 "lexer.mll"
( LE )
# 2699 "lexer.ml"
| 40 ->
# 92 "lexer.mll"
( LT )
# 2704 "lexer.ml"
| 41 ->
# 93 "lexer.mll"
( GE )
# 2709 "lexer.ml"
| 42 ->
# 94 "lexer.mll"
( GT )
# 2714 "lexer.ml"
| 43 ->
# 96 "lexer.mll"
( PLUS )
# 2719 "lexer.ml"
| 44 ->
# 97 "lexer.mll"
( MINUS )
# 2724 "lexer.ml"
| 45 ->
# 98 "lexer.mll"
( OR )
# 2729 "lexer.ml"
| 46 ->
# 99 "lexer.mll"
( MULT )
# 2734 "lexer.ml"
| 47 ->
# 100 "lexer.mll"
( DIV )
# 2739 "lexer.ml"
| 48 ->
# 101 "lexer.mll"
( MOD )
# 2744 "lexer.ml"
| 49 ->
# 102 "lexer.mll"
( AND )
# 2749 "lexer.ml"
| 50 ->
# 104 "lexer.mll"
( NUMERAL (int_of_string (lexeme lexbuf)) )
# 2754 "lexer.ml"
| 51 ->
# 105 "lexer.mll"
( NAME (lexeme lexbuf) )
# 2759 "lexer.ml"
| 52 ->
# 107 "lexer.mll"
( token lexbuf )
# 2764 "lexer.ml"
| 53 ->
# 110 "lexer.mll"
( on_newline lexbuf; token lexbuf )
# 2769 "lexer.ml"
| 54 ->
# 112 "lexer.mll"
( comment_depth := 1; in_comment lexbuf )
# 2774 "lexer.ml"
| n -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf n
and in_comment lexbuf =
__ocaml_lex_in_comment_rec lexbuf 137
and __ocaml_lex_in_comment_rec lexbuf __ocaml_lex_state =
match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
| 0 ->
# 115 "lexer.mll"
( incr comment_depth; in_comment lexbuf )
# 2785 "lexer.ml"
| 1 ->
# 116 "lexer.mll"
( decr comment_depth; (if !comment_depth = 0 then token else in_comment) lexbuf )
# 2790 "lexer.ml"
| 2 ->
# 117 "lexer.mll"
( on_newline lexbuf; in_comment lexbuf )
# 2795 "lexer.ml"
| 3 ->
# 118 "lexer.mll"
( in_comment lexbuf )
# 2800 "lexer.ml"
| n -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_in_comment_rec lexbuf n