let rec main lexbuf =
__ocaml_lex_main_rec lexbuf 0
and __ocaml_lex_main_rec lexbuf __ocaml_lex_state =
match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
| 0 ->
# 76 "lexer.mll"
( main lexbuf )
# 282 "lexer.ml"
| 1 ->
let
# 77 "lexer.mll"
token
# 288 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 77 "lexer.mll"
( TEXT(String.sub token 1 ((String.length token) - 1)))
# 292 "lexer.ml"
| 2 ->
let
# 78 "lexer.mll"
token
# 298 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 78 "lexer.mll"
( try INT( int_of_string token) with _ -> OUTOFRANGENUMBER )
# 302 "lexer.ml"
| 3 ->
let
# 79 "lexer.mll"
token
# 308 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 79 "lexer.mll"
( try REAL(float_of_string token) with _ -> OUTOFRANGENUMBER )
# 312 "lexer.ml"
| 4 ->
let
# 80 "lexer.mll"
token
# 318 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 80 "lexer.mll"
( (map_id token ))
# 322 "lexer.ml"
| 5 ->
# 81 "lexer.mll"
( single_quote_string "" lexbuf )
# 327 "lexer.ml"
| 6 ->
# 82 "lexer.mll"
( double_quote_string "" lexbuf )
# 332 "lexer.ml"
| 7 ->
# 83 "lexer.mll"
( main lexbuf)
# 337 "lexer.ml"
| 8 ->
# 84 "lexer.mll"
(multiline_comment lexbuf)
# 342 "lexer.ml"
| 9 ->
# 85 "lexer.mll"
( incr_linenum lexbuf;main lexbuf )
# 347 "lexer.ml"
| 10 ->
# 86 "lexer.mll"
(AND)
# 352 "lexer.ml"
| 11 ->
# 87 "lexer.mll"
(OR)
# 357 "lexer.ml"
| 12 ->
# 88 "lexer.mll"
(COMPOP(LessThan))
# 362 "lexer.ml"
| 13 ->
# 89 "lexer.mll"
(COMPOP(GreaterThan))
# 367 "lexer.ml"
| 14 ->
# 90 "lexer.mll"
(COMPOP(LessThanEqual))
# 372 "lexer.ml"
| 15 ->
# 91 "lexer.mll"
(COMPOP(GreaterThanEqual))
# 377 "lexer.ml"
| 16 ->
# 92 "lexer.mll"
(COMPOP(Equal))
# 382 "lexer.ml"
| 17 ->
# 93 "lexer.mll"
(COMPOP(NotEqual))
# 387 "lexer.ml"
| 18 ->
# 94 "lexer.mll"
(DOTDOTDOT)
# 392 "lexer.ml"
| 19 ->
# 95 "lexer.mll"
(PLUSEQUALS)
# 397 "lexer.ml"
| 20 ->
# 96 "lexer.mll"
(MINUSEQUALS)
# 402 "lexer.ml"
| 21 ->
# 97 "lexer.mll"
(TIMESEQUALS)
# 407 "lexer.ml"
| 22 ->
# 98 "lexer.mll"
(DIVEQUALS)
# 412 "lexer.ml"
| 23 ->
# 99 "lexer.mll"
(MODEQUALS)
# 417 "lexer.ml"
| 24 ->
# 100 "lexer.mll"
(PLUSPLUS)
# 422 "lexer.ml"
| 25 ->
# 101 "lexer.mll"
(MINUSMINUS)
# 427 "lexer.ml"
| 26 ->
# 102 "lexer.mll"
(EQUALS)
# 432 "lexer.ml"
| 27 ->
# 103 "lexer.mll"
(DOT)
# 437 "lexer.ml"
| 28 ->
# 104 "lexer.mll"
(LBRACE)
# 442 "lexer.ml"
| 29 ->
# 105 "lexer.mll"
(RBRACE)
# 447 "lexer.ml"
| 30 ->
# 106 "lexer.mll"
(LPAREN)
# 452 "lexer.ml"
| 31 ->
# 107 "lexer.mll"
(RPAREN)
# 457 "lexer.ml"
| 32 ->
# 108 "lexer.mll"
(LBRACKET)
# 462 "lexer.ml"
| 33 ->
# 109 "lexer.mll"
(RBRACKET)
# 467 "lexer.ml"
| 34 ->
# 110 "lexer.mll"
(COMMA)
# 472 "lexer.ml"
| 35 ->
# 111 "lexer.mll"
(SEMICOLON)
# 477 "lexer.ml"
| 36 ->
# 112 "lexer.mll"
(COLON)
# 482 "lexer.ml"
| 37 ->
# 113 "lexer.mll"
(NOT)
# 487 "lexer.ml"
| 38 ->
# 114 "lexer.mll"
(QUESTION)
# 492 "lexer.ml"
| 39 ->
# 115 "lexer.mll"
(PLUS)
# 497 "lexer.ml"
| 40 ->
# 116 "lexer.mll"
(MINUS)
# 502 "lexer.ml"
| 41 ->
# 117 "lexer.mll"
(TIMES)
# 507 "lexer.ml"
| 42 ->
# 118 "lexer.mll"
(DIVIDE)
# 512 "lexer.ml"
| 43 ->
# 119 "lexer.mll"
(MODULO)
# 517 "lexer.ml"
| 44 ->
# 120 "lexer.mll"
(AT)
# 522 "lexer.ml"
| 45 ->
let
# 121 "lexer.mll"
c
# 528 "lexer.ml"
= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
# 121 "lexer.mll"
( syntax_exception ("Invalid character "^String.make 1 c) lexbuf)
# 532 "lexer.ml"
| 46 ->
# 122 "lexer.mll"
( EOF )
# 537 "lexer.ml"
| __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_main_rec lexbuf __ocaml_lex_state
and single_quote_string s lexbuf =
__ocaml_lex_single_quote_string_rec s lexbuf 58
and __ocaml_lex_single_quote_string_rec s lexbuf __ocaml_lex_state =
match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
| 0 ->
# 125 "lexer.mll"
( incr_linenum lexbuf; single_quote_string (s ^ "\n") lexbuf )
# 548 "lexer.ml"
| 1 ->
# 126 "lexer.mll"
( STRING(s) )
# 553 "lexer.ml"
| 2 ->
# 127 "lexer.mll"
( single_quote_string (s ^ (escape_char lexbuf)) lexbuf )
# 558 "lexer.ml"
| 3 ->
let
# 128 "lexer.mll"
c
# 564 "lexer.ml"
= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
# 128 "lexer.mll"
( single_quote_string (s ^ String.make 1 c) lexbuf )
# 568 "lexer.ml"
| 4 ->
# 129 "lexer.mll"
( syntax_exception "Unterminated string constant" lexbuf )
# 573 "lexer.ml"
| __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_single_quote_string_rec s lexbuf __ocaml_lex_state
and double_quote_string s lexbuf =
__ocaml_lex_double_quote_string_rec s lexbuf 64
and __ocaml_lex_double_quote_string_rec s lexbuf __ocaml_lex_state =
match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
| 0 ->
# 132 "lexer.mll"
( incr_linenum lexbuf; double_quote_string (s ^ "\n") lexbuf )
# 584 "lexer.ml"
| 1 ->
# 133 "lexer.mll"
( STRING(s) )
# 589 "lexer.ml"
| 2 ->
# 134 "lexer.mll"
( double_quote_string (s ^ (escape_char lexbuf)) lexbuf )
# 594 "lexer.ml"
| 3 ->
let
# 135 "lexer.mll"
c
# 600 "lexer.ml"
= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
# 135 "lexer.mll"
( double_quote_string (s ^ String.make 1 c) lexbuf )
# 604 "lexer.ml"
| 4 ->
# 136 "lexer.mll"
( syntax_exception "Unterminated string constant" lexbuf )
# 609 "lexer.ml"
| __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_double_quote_string_rec s lexbuf __ocaml_lex_state
and escape_char lexbuf =
__ocaml_lex_escape_char_rec lexbuf 70
and __ocaml_lex_escape_char_rec lexbuf __ocaml_lex_state =
match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
| 0 ->
# 139 "lexer.mll"
("\\")
# 620 "lexer.ml"
| 1 ->
# 140 "lexer.mll"
("\n")
# 625 "lexer.ml"
| 2 ->
# 141 "lexer.mll"
("\r")
# 630 "lexer.ml"
| 3 ->
# 142 "lexer.mll"
("'")
# 635 "lexer.ml"
| 4 ->
# 143 "lexer.mll"
("\"")
# 640 "lexer.ml"
| 5 ->
# 144 "lexer.mll"
("\t")
# 645 "lexer.ml"
| 6 ->
# 145 "lexer.mll"
("\b")
# 650 "lexer.ml"
| __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_escape_char_rec lexbuf __ocaml_lex_state
and multiline_comment lexbuf =
__ocaml_lex_multiline_comment_rec lexbuf 78
and __ocaml_lex_multiline_comment_rec lexbuf __ocaml_lex_state =
match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
| 0 ->
# 148 "lexer.mll"
( incr_linenum lexbuf; multiline_comment lexbuf )
# 661 "lexer.ml"
| 1 ->
# 149 "lexer.mll"
( main lexbuf )
# 666 "lexer.ml"
| 2 ->
# 150 "lexer.mll"
( multiline_comment lexbuf)
# 671 "lexer.ml"
| 3 ->
# 151 "lexer.mll"
( syntax_exception "Unterminated multiline comment" lexbuf )
# 676 "lexer.ml"
| __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_multiline_comment_rec lexbuf __ocaml_lex_state