let rec lex lexbuf =
__ocaml_lex_lex_rec lexbuf 0
and __ocaml_lex_lex_rec lexbuf __ocaml_lex_state =
match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
| 0 ->
# 21 "lexer.mll"
( NUM (int_of_string (Lexing.lexeme lexbuf)) )
# 1872 "lexer.ml"
| 1 ->
# 22 "lexer.mll"
( REAL (float_of_string (Lexing.lexeme lexbuf)) )
# 1877 "lexer.ml"
| 2 ->
# 24 "lexer.mll"
( TRUE )
# 1882 "lexer.ml"
| 3 ->
# 25 "lexer.mll"
( FALSE )
# 1887 "lexer.ml"
| 4 ->
# 27 "lexer.mll"
( PROGRAM )
# 1892 "lexer.ml"
| 5 ->
# 28 "lexer.mll"
( VAR )
# 1897 "lexer.ml"
| 6 ->
# 29 "lexer.mll"
( ARRAY )
# 1902 "lexer.ml"
| 7 ->
# 30 "lexer.mll"
( OF )
# 1907 "lexer.ml"
| 8 ->
# 31 "lexer.mll"
( INT )
# 1912 "lexer.ml"
| 9 ->
# 32 "lexer.mll"
( FLOAT )
# 1917 "lexer.ml"
| 10 ->
# 33 "lexer.mll"
( PROCEDURE )
# 1922 "lexer.ml"
| 11 ->
# 34 "lexer.mll"
( FUNCTION )
# 1927 "lexer.ml"
| 12 ->
# 35 "lexer.mll"
( BEGIN )
# 1932 "lexer.ml"
| 13 ->
# 36 "lexer.mll"
( END )
# 1937 "lexer.ml"
| 14 ->
# 37 "lexer.mll"
( IF )
# 1942 "lexer.ml"
| 15 ->
# 38 "lexer.mll"
( THEN )
# 1947 "lexer.ml"
| 16 ->
# 39 "lexer.mll"
( ELSE )
# 1952 "lexer.ml"
| 17 ->
# 40 "lexer.mll"
( WHILE )
# 1957 "lexer.ml"
| 18 ->
# 41 "lexer.mll"
( DO )
# 1962 "lexer.ml"
| 19 ->
# 42 "lexer.mll"
( REPEAT )
# 1967 "lexer.ml"
| 20 ->
# 43 "lexer.mll"
( UNTIL )
# 1972 "lexer.ml"
| 21 ->
# 44 "lexer.mll"
( FOR )
# 1977 "lexer.ml"
| 22 ->
# 45 "lexer.mll"
( TO )
# 1982 "lexer.ml"
| 23 ->
# 46 "lexer.mll"
( WRITE )
# 1987 "lexer.ml"
| 24 ->
# 47 "lexer.mll"
( CALL )
# 1992 "lexer.ml"
| 25 ->
# 49 "lexer.mll"
( IDE (Lexing.lexeme lexbuf) )
# 1997 "lexer.ml"
| 26 ->
# 51 "lexer.mll"
( PLUS )
# 2002 "lexer.ml"
| 27 ->
# 52 "lexer.mll"
( MINUS )
# 2007 "lexer.ml"
| 28 ->
# 53 "lexer.mll"
( TIMES )
# 2012 "lexer.ml"
| 29 ->
# 54 "lexer.mll"
( DIVISION )
# 2017 "lexer.ml"
| 30 ->
# 55 "lexer.mll"
( EQUAL )
# 2022 "lexer.ml"
| 31 ->
# 56 "lexer.mll"
( LESSEQUAL )
# 2027 "lexer.ml"
| 32 ->
# 57 "lexer.mll"
( LESS )
# 2032 "lexer.ml"
| 33 ->
# 58 "lexer.mll"
( AND )
# 2037 "lexer.ml"
| 34 ->
# 59 "lexer.mll"
( OR )
# 2042 "lexer.ml"
| 35 ->
# 60 "lexer.mll"
( NOT )
# 2047 "lexer.ml"
| 36 ->
# 61 "lexer.mll"
( ASSIGN )
# 2052 "lexer.ml"
| 37 ->
# 64 "lexer.mll"
( SEMICOLON )
# 2057 "lexer.ml"
| 38 ->
# 65 "lexer.mll"
( COLON )
# 2062 "lexer.ml"
| 39 ->
# 66 "lexer.mll"
( COMMA )
# 2067 "lexer.ml"
| 40 ->
# 68 "lexer.mll"
( LP )
# 2072 "lexer.ml"
| 41 ->
# 69 "lexer.mll"
( RP )
# 2077 "lexer.ml"
| 42 ->
# 70 "lexer.mll"
( LS )
# 2082 "lexer.ml"
| 43 ->
# 71 "lexer.mll"
( RS )
# 2087 "lexer.ml"
| 44 ->
# 73 "lexer.mll"
( lex lexbuf )
# 2092 "lexer.ml"
| 45 ->
# 74 "lexer.mll"
( lexbuf.lex_curr_p <- {lexbuf.lex_curr_p with pos_lnum = lexbuf.lex_curr_p.pos_lnum + 1}; lex lexbuf )
# 2097 "lexer.ml"
| 46 ->
# 75 "lexer.mll"
( EOF )
# 2102 "lexer.ml"
| 47 ->
# 77 "lexer.mll"
( raise UnknownChar )
# 2107 "lexer.ml"
| __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_lex_rec lexbuf __ocaml_lex_state