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 ->
# 39 "mathlexer.mll"
                        ( token lexbuf )
# 2383 "mathlexer.ml"

  | 1 ->

  let x = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 41 "mathlexer.mll"
                             ( VAL(float_of_string x) )
# 2390 "mathlexer.ml"

  | 2 ->
# 42 "mathlexer.mll"
                             ( CMD )
# 2395 "mathlexer.ml"

  | 3 ->
# 43 "mathlexer.mll"
                             ( COMMENT )
# 2400 "mathlexer.ml"

  | 4 ->
# 44 "mathlexer.mll"
                             ( UNIT )
# 2405 "mathlexer.ml"

  | 5 ->
# 45 "mathlexer.mll"
                             ( LPAR )
# 2410 "mathlexer.ml"

  | 6 ->
# 46 "mathlexer.mll"
                             ( RPAR )
# 2415 "mathlexer.ml"

  | 7 ->
# 47 "mathlexer.mll"
                             ( LBRA )
# 2420 "mathlexer.ml"

  | 8 ->
# 48 "mathlexer.mll"
                             ( RBRA )
# 2425 "mathlexer.ml"

  | 9 ->
# 49 "mathlexer.mll"
                             ( LCUR )
# 2430 "mathlexer.ml"

  | 10 ->
# 50 "mathlexer.mll"
                             ( RCUR )
# 2435 "mathlexer.ml"

  | 11 ->
# 51 "mathlexer.mll"
                             ( ABSDEL )
# 2440 "mathlexer.ml"

  | 12 ->
# 52 "mathlexer.mll"
                             ( INCR )
# 2445 "mathlexer.ml"

  | 13 ->
# 53 "mathlexer.mll"
                             ( DECR )
# 2450 "mathlexer.ml"

  | 14 ->
# 54 "mathlexer.mll"
                             ( PLUS )
# 2455 "mathlexer.ml"

  | 15 ->
# 55 "mathlexer.mll"
                             ( MINUS )
# 2460 "mathlexer.ml"

  | 16 ->
# 56 "mathlexer.mll"
                             ( TIMES )
# 2465 "mathlexer.ml"

  | 17 ->
# 57 "mathlexer.mll"
                             ( DIV )
# 2470 "mathlexer.ml"

  | 18 ->
# 58 "mathlexer.mll"
                             ( POW )
# 2475 "mathlexer.ml"

  | 19 ->
# 59 "mathlexer.mll"
                             ( FLOOR )
# 2480 "mathlexer.ml"

  | 20 ->
# 60 "mathlexer.mll"
                             ( CEIL )
# 2485 "mathlexer.ml"

  | 21 ->
# 61 "mathlexer.mll"
                             ( RANDOM )
# 2490 "mathlexer.ml"

  | 22 ->
# 62 "mathlexer.mll"
                             ( ROUND )
# 2495 "mathlexer.ml"

  | 23 ->
# 63 "mathlexer.mll"
                             ( MODULO )
# 2500 "mathlexer.ml"

  | 24 ->
# 64 "mathlexer.mll"
                             ( ABS )
# 2505 "mathlexer.ml"

  | 25 ->
# 65 "mathlexer.mll"
                             ( SQRT)
# 2510 "mathlexer.ml"

  | 26 ->
# 66 "mathlexer.mll"
                             ( COS )
# 2515 "mathlexer.ml"

  | 27 ->
# 67 "mathlexer.mll"
                             ( SIN )
# 2520 "mathlexer.ml"

  | 28 ->
# 68 "mathlexer.mll"
                             ( TAN )
# 2525 "mathlexer.ml"

  | 29 ->
# 69 "mathlexer.mll"
                             ( COSH )
# 2530 "mathlexer.ml"

  | 30 ->
# 70 "mathlexer.mll"
                             ( SINH )
# 2535 "mathlexer.ml"

  | 31 ->
# 71 "mathlexer.mll"
                             ( TANH )
# 2540 "mathlexer.ml"

  | 32 ->
# 72 "mathlexer.mll"
                             ( ACOS )
# 2545 "mathlexer.ml"

  | 33 ->
# 73 "mathlexer.mll"
                             ( ASIN )
# 2550 "mathlexer.ml"

  | 34 ->
# 74 "mathlexer.mll"
                             ( ATAN )
# 2555 "mathlexer.ml"

  | 35 ->
# 75 "mathlexer.mll"
                             ( FACTORIAL )
# 2560 "mathlexer.ml"

  | 36 ->
# 76 "mathlexer.mll"
                             ( ENOT )
# 2565 "mathlexer.ml"

  | 37 ->
# 77 "mathlexer.mll"
                             ( EXP )
# 2570 "mathlexer.ml"

  | 38 ->
# 78 "mathlexer.mll"
                             ( LN )
# 2575 "mathlexer.ml"

  | 39 ->
# 79 "mathlexer.mll"
                             ( LOGB )
# 2580 "mathlexer.ml"

  | 40 ->
# 80 "mathlexer.mll"
                             ( LOG )
# 2585 "mathlexer.ml"

  | 41 ->
# 81 "mathlexer.mll"
                             ( PI )
# 2590 "mathlexer.ml"

  | 42 ->
# 82 "mathlexer.mll"
                             ( TRUE )
# 2595 "mathlexer.ml"

  | 43 ->
# 83 "mathlexer.mll"
                             ( FALSE )
# 2600 "mathlexer.ml"

  | 44 ->
# 84 "mathlexer.mll"
                             ( DEG )
# 2605 "mathlexer.ml"

  | 45 ->
# 85 "mathlexer.mll"
                             ( DECSEP )
# 2610 "mathlexer.ml"

  | 46 ->
# 86 "mathlexer.mll"
                             ( DECXPSEP )
# 2615 "mathlexer.ml"

  | 47 ->
# 87 "mathlexer.mll"
                             ( LEQUALS )
# 2620 "mathlexer.ml"

  | 48 ->
# 88 "mathlexer.mll"
                             ( LINF )
# 2625 "mathlexer.ml"

  | 49 ->
# 89 "mathlexer.mll"
                             ( LSUP )
# 2630 "mathlexer.ml"

  | 50 ->
# 90 "mathlexer.mll"
                             ( LSINF )
# 2635 "mathlexer.ml"

  | 51 ->
# 91 "mathlexer.mll"
                             ( LSSUP )
# 2640 "mathlexer.ml"

  | 52 ->
# 92 "mathlexer.mll"
                             ( LAND )
# 2645 "mathlexer.ml"

  | 53 ->
# 93 "mathlexer.mll"
                             ( LOR )
# 2650 "mathlexer.ml"

  | 54 ->
# 94 "mathlexer.mll"
                             ( LDIFF )
# 2655 "mathlexer.ml"

  | 55 ->
# 95 "mathlexer.mll"
                             ( LNOT )
# 2660 "mathlexer.ml"

  | 56 ->
# 96 "mathlexer.mll"
                             ( LXOR )
# 2665 "mathlexer.ml"

  | 57 ->
# 97 "mathlexer.mll"
                             ( LTERN )
# 2670 "mathlexer.ml"

  | 58 ->
# 98 "mathlexer.mll"
                             ( LTERNSEP )
# 2675 "mathlexer.ml"

  | 59 ->
# 99 "mathlexer.mll"
                             ( LIF )
# 2680 "mathlexer.ml"

  | 60 ->
# 100 "mathlexer.mll"
                             ( LTHEN )
# 2685 "mathlexer.ml"

  | 61 ->
# 101 "mathlexer.mll"
                             ( LELSE)
# 2690 "mathlexer.ml"

  | 62 ->
# 102 "mathlexer.mll"
                             ( ASSIGN )
# 2695 "mathlexer.ml"

  | 63 ->
# 103 "mathlexer.mll"
                             ( LET )
# 2700 "mathlexer.ml"

  | 64 ->
# 104 "mathlexer.mll"
                             ( PRINT )
# 2705 "mathlexer.ml"

  | 65 ->

  let str = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 105 "mathlexer.mll"
                             ( VAR (str) )
# 2712 "mathlexer.ml"

  | 66 ->
# 106 "mathlexer.mll"
                             ( END )
# 2717 "mathlexer.ml"

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