File: build/lexer.ml (return to index)



Statistics:  
kind coverage
binding 1 / 1 (100 %)
sequence 4 / 10 (40 %)
for 0 / 0 (- %)
if/then 0 / 0 (- %)
try 0 / 0 (- %)
while 0 / 0 (- %)
match/function 11 / 12 (91 %)
kind coverage
class expression 0 / 0 (- %)
class initializer 0 / 0 (- %)
class method 0 / 0 (- %)
class value 0 / 0 (- %)
toplevel expression 0 / 0 (- %)
lazy operator 0 / 0 (- %)



Source:

fold all unfold all
000001| # 1 "build/lexer.mll"
000002|  
000003|
000004| (**
000005| This program is free software; you can redistribute it and / or modify
000006| it under the terms of the GNU General Public License as published by
000007| the Free Software Foundation; version 3 of the License.
000008|
000009| This program is distributed in the hope that it will be useful,
000010| but WITHOUT ANY WARRANTY; without even the implied warranty of
000011| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
000012| GNU General Public License for more details.
000013|
000014| Jtemplate lexer
000015|
000016| @author Tony BenBrahim < tony.benbrahim at gmail.com >
000017|
000018| *)
000019|
000020| open RuntimeError
000021| open Parser
000022| open Ast
000023|
000024| (* from http://plus.kaist.ac.kr/~shoh/ocaml/ocamllex-ocamlyacc/ocamllex-tutorial.pdf , p.9 *)
000025| let incr_linenum lexbuf =
000026|     let pos = lexbuf.Lexing.lex_curr_p in
000027|     lexbuf.Lexing.lex_curr_p <- { pos with
000028|         Lexing.pos_lnum = pos.Lexing.pos_lnum + 1;
000029|         Lexing.pos_bol = pos.Lexing.pos_cnum;
000030|         }
000031|
000032| let syntax_exception msg lexbuf=
000033|     raise (LexerException (msg, lexbuf.Lexing.lex_curr_p.Lexing.pos_lnum,
000034|                        lexbuf.Lexing.lex_curr_p.Lexing.pos_cnum - lexbuf.Lexing.lex_curr_p.Lexing.pos_bol))
000035|
000036| let map_id name=
000037|     match name with
000038|       "foreach" -> FOREACH
000039|     | "in" -> IN
000040|     | "while" -> WHILE
000041|     | "function" -> FUNCTION
000042|     | "if" -> IF
000043|     | "else" -> ELSE
000044|     | "template" -> TEMPLATE
000045|     | "instructions" ->INSTRUCTIONS
000046|     | "continue" -> CONTINUE
000047|     | "break" -> BREAK
000048|     | "return" -> RETURN
000049|     | "for" -> FOR
000050|     | "once" -> ONCE
000051|     | "when" -> WHEN
000052|     | "var" -> VAR
000053|     | "let" -> VAR
000054|     | "true" -> BOOLEAN(true)
000055|     | "false" -> BOOLEAN(false)
000056|     | "Void"  -> VOID
000057|     | "import" -> IMPORT(false)
000058|     | "use" -> IMPORT(true)
000059|     | "switch" -> SWITCH
000060|     | "case" -> CASE
000061|     | "default" -> DEFAULT
000062|     | "try" -> TRY
000063|     | "catch" -> CATCH
000064|     | "finally" -> FINALLY
000065|     | "throw" -> THROW
000066|     | _ ->  ID(name)   
000067|  
000068| # 69 "build/lexer.ml"
000069| let __ocaml_lex_tables = (*[2]*){
000070|   Lexing.lex_base = 
000071|    "\000\000\209\255\210\255\211\255\217\255\219\255\220\255\221\255\
000072|     \222\255\223\255\224\255\225\255\226\255\227\255\031\000\033\000\
000073|     \081\000\084\000\035\000\067\000\068\000\069\000\007\000\094\000\
000074|     \246\255\091\000\249\255\250\255\105\000\182\000\194\000\001\000\
000075|     \255\255\210\000\220\000\235\000\248\000\002\001\018\001\028\001\
000076|     \088\000\038\001\237\255\233\255\247\255\125\000\245\255\244\255\
000077|     \241\255\240\255\239\255\238\255\231\255\236\255\230\255\235\255\
000078|     \234\255\232\255\087\001\251\255\252\255\253\255\254\255\255\255\
000079|     \027\001\251\255\252\255\253\255\254\255\255\255\062\001\249\255\
000080|     \250\255\251\255\252\255\253\255\254\255\255\255\127\000\252\255\
000081|     \253\255\089\000\255\255\254\255";
000082|   Lexing.lex_backtrk = 
000083|    "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000084|     \255\255\255\255\255\255\255\255\255\255\255\255\043\000\041\000\
000085|     \040\000\039\000\037\000\026\000\013\000\012\000\045\000\045\000\
000086|     \255\255\042\000\255\255\255\255\004\000\027\000\002\000\001\000\
000087|     \255\255\255\255\003\000\255\255\003\000\255\255\003\000\255\255\
000088|     \255\255\003\000\255\255\255\255\255\255\007\000\255\255\255\255\
000089|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000090|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000091|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000092|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000093|     \255\255\002\000\255\255\255\255";
000094|   Lexing.lex_default = 
000095|    "\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000096|     \000\000\000\000\000\000\000\000\000\000\000\000\255\255\255\255\
000097|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000098|     \000\000\255\255\000\000\000\000\255\255\255\255\255\255\031\000\
000099|     \000\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000100|     \255\255\255\255\000\000\000\000\000\000\045\000\000\000\000\000\
000101|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000102|     \000\000\000\000\060\000\000\000\000\000\000\000\000\000\000\000\
000103|     \066\000\000\000\000\000\000\000\000\000\000\000\255\255\000\000\
000104|     \000\000\000\000\000\000\000\000\000\000\000\000\080\000\000\000\
000105|     \000\000\255\255\000\000\000\000";
000106|   Lexing.lex_trans = 
000107|    "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000108|     \000\000\032\000\024\000\255\255\000\000\032\000\000\000\000\000\
000109|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000110|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000111|     \032\000\018\000\026\000\031\000\028\000\014\000\023\000\027\000\
000112|     \011\000\010\000\015\000\017\000\007\000\016\000\029\000\025\000\
000113|     \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\
000114|     \030\000\030\000\005\000\006\000\021\000\019\000\020\000\004\000\
000115|     \003\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000116|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000117|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000118|     \028\000\028\000\028\000\009\000\057\000\008\000\056\000\028\000\
000119|     \051\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000120|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000121|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000122|     \028\000\028\000\028\000\013\000\022\000\012\000\054\000\052\000\
000123|     \050\000\049\000\048\000\047\000\046\000\044\000\042\000\255\255\
000124|     \083\000\082\000\045\000\000\000\000\000\028\000\055\000\000\000\
000125|     \000\000\053\000\000\000\000\000\000\000\000\000\000\000\000\000\
000126|     \043\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000127|     \028\000\028\000\028\000\000\000\000\000\000\000\000\000\000\000\
000128|     \000\000\081\000\028\000\028\000\028\000\028\000\028\000\028\000\
000129|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000130|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000131|     \028\000\028\000\028\000\028\000\000\000\000\000\000\000\000\000\
000132|     \028\000\000\000\028\000\028\000\028\000\028\000\028\000\028\000\
000133|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000134|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000135|     \028\000\028\000\028\000\028\000\040\000\000\000\041\000\041\000\
000136|     \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\
000137|     \034\000\000\000\030\000\030\000\030\000\030\000\030\000\030\000\
000138|     \030\000\030\000\030\000\030\000\000\000\039\000\000\000\039\000\
000139|     \001\000\255\255\038\000\038\000\038\000\038\000\038\000\038\000\
000140|     \038\000\038\000\038\000\038\000\034\000\034\000\034\000\034\000\
000141|     \034\000\034\000\034\000\034\000\034\000\034\000\037\000\000\000\
000142|     \037\000\000\000\000\000\036\000\036\000\036\000\036\000\036\000\
000143|     \036\000\036\000\036\000\036\000\036\000\069\000\000\000\033\000\
000144|     \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\
000145|     \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\
000146|     \036\000\036\000\036\000\036\000\000\000\068\000\000\000\000\000\
000147|     \000\000\035\000\038\000\038\000\038\000\038\000\038\000\038\000\
000148|     \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\
000149|     \038\000\038\000\038\000\038\000\038\000\038\000\041\000\041\000\
000150|     \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\
000151|     \073\000\063\000\000\000\000\000\000\000\074\000\000\000\000\000\
000152|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000153|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\067\000\
000154|     \000\000\000\000\000\000\000\000\000\000\255\255\062\000\079\000\
000155|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000156|     \000\000\000\000\000\000\035\000\000\000\000\000\000\000\000\000\
000157|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000158|     \000\000\000\000\077\000\000\000\000\000\000\000\000\000\000\000\
000159|     \071\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000160|     \000\000\000\000\000\000\000\000\076\000\000\000\000\000\000\000\
000161|     \075\000\000\000\072\000\061\000\000\000\000\000\000\000\000\000\
000162|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000163|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000164|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000165|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000166|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000167|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000168|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000169|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000170|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000171|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000172|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000173|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000174|     \000\000\000\000\000\000\065\000\000\000\000\000\000\000\000\000\
000175|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000176|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000177|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000178|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000179|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000180|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000181|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\059\000\
000182|     ";
000183|   Lexing.lex_check = 
000184|    "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000185|     \255\255\000\000\000\000\031\000\255\255\000\000\255\255\255\255\
000186|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000187|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000188|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000189|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000190|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000191|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000192|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000193|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000194|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000195|     \000\000\000\000\000\000\000\000\014\000\000\000\015\000\000\000\
000196|     \018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000197|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000198|     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
000199|     \000\000\000\000\000\000\000\000\000\000\000\000\016\000\017\000\
000200|     \019\000\020\000\021\000\022\000\023\000\025\000\040\000\045\000\
000201|     \081\000\078\000\025\000\255\255\255\255\028\000\016\000\255\255\
000202|     \255\255\017\000\255\255\255\255\255\255\255\255\255\255\255\255\
000203|     \025\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000204|     \028\000\028\000\028\000\255\255\255\255\255\255\255\255\255\255\
000205|     \255\255\078\000\028\000\028\000\028\000\028\000\028\000\028\000\
000206|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000207|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000208|     \028\000\028\000\028\000\028\000\255\255\255\255\255\255\255\255\
000209|     \028\000\255\255\028\000\028\000\028\000\028\000\028\000\028\000\
000210|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000211|     \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
000212|     \028\000\028\000\028\000\028\000\029\000\255\255\029\000\029\000\
000213|     \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\
000214|     \030\000\255\255\030\000\030\000\030\000\030\000\030\000\030\000\
000215|     \030\000\030\000\030\000\030\000\255\255\033\000\255\255\033\000\
000216|     \000\000\031\000\033\000\033\000\033\000\033\000\033\000\033\000\
000217|     \033\000\033\000\033\000\033\000\034\000\034\000\034\000\034\000\
000218|     \034\000\034\000\034\000\034\000\034\000\034\000\035\000\255\255\
000219|     \035\000\255\255\255\255\035\000\035\000\035\000\035\000\035\000\
000220|     \035\000\035\000\035\000\035\000\035\000\064\000\255\255\030\000\
000221|     \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\
000222|     \036\000\036\000\037\000\037\000\037\000\037\000\037\000\037\000\
000223|     \037\000\037\000\037\000\037\000\255\255\064\000\255\255\255\255\
000224|     \255\255\034\000\038\000\038\000\038\000\038\000\038\000\038\000\
000225|     \038\000\038\000\038\000\038\000\039\000\039\000\039\000\039\000\
000226|     \039\000\039\000\039\000\039\000\039\000\039\000\041\000\041\000\
000227|     \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\
000228|     \070\000\058\000\255\255\255\255\255\255\070\000\255\255\255\255\
000229|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000230|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\064\000\
000231|     \255\255\255\255\255\255\255\255\255\255\045\000\058\000\078\000\
000232|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000233|     \255\255\255\255\255\255\041\000\255\255\255\255\255\255\255\255\
000234|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000235|     \255\255\255\255\070\000\255\255\255\255\255\255\255\255\255\255\
000236|     \070\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000237|     \255\255\255\255\255\255\255\255\070\000\255\255\255\255\255\255\
000238|     \070\000\255\255\070\000\058\000\255\255\255\255\255\255\255\255\
000239|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000240|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000241|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000242|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000243|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000244|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000245|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000246|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000247|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000248|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000249|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000250|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000251|     \255\255\255\255\255\255\064\000\255\255\255\255\255\255\255\255\
000252|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000253|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000254|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000255|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000256|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000257|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
000258|     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\058\000\
000259|     ";
000260|   Lexing.lex_base_code = 
000261|    "";
000262|   Lexing.lex_backtrk_code = 
000263|    "";
000264|   Lexing.lex_default_code = 
000265|    "";
000266|   Lexing.lex_trans_code = 
000267|    "";
000268|   Lexing.lex_check_code = 
000269|    "";
000270|   Lexing.lex_code = 
000271|    "";
000272| }
000273|  
000274| let rec main lexbuf =
000275|     (*[54804]*)__ocaml_lex_main_rec lexbuf 0
000276| and __ocaml_lex_main_rec lexbuf __ocaml_lex_state =
000277|   match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
000278|       | 0 ->
000279| # 75 "build/lexer.mll"
000280|              ( main lexbuf )
000281| # 282 "build/lexer.ml"
000282|  
000283|   | 1 ->
000284| (*[32]*)let
000285| # 76 "build/lexer.mll"
000286|           token
000287| # 288 "build/lexer.ml"
000288| = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
000289| # 76 "build/lexer.mll"
000290|                 ( TEXT(String.sub token 1 ((String.length token) - 1)))
000291| # 292 "build/lexer.ml"
000292|  
000293|   | 2 ->
000294| (*[900]*)let
000295| # 77 "build/lexer.mll"
000296|             token
000297| # 298 "build/lexer.ml"
000298| = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
000299| # 77 "build/lexer.mll"
000300|                   ( try  INT( int_of_string token) with _ -> OUTOFRANGENUMBER )
000301| # 302 "build/lexer.ml"
000302|  
000303|   | 3 ->
000304| (*[156]*)let
000305| # 78 "build/lexer.mll"
000306|            token
000307| # 308 "build/lexer.ml"
000308| = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
000309| # 78 "build/lexer.mll"
000310|                  ( try REAL(float_of_string token) with _ -> OUTOFRANGENUMBER )
000311| # 312 "build/lexer.ml"
000312|  
000313|   | 4 ->
000314| (*[4686]*)let
000315| # 79 "build/lexer.mll"
000316|         token
000317| # 318 "build/lexer.ml"
000318| = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
000319| # 79 "build/lexer.mll"
000320|               ( (map_id token ))
000321| # 322 "build/lexer.ml"
000322|  
000323|   | 5 ->
000324| # 80 "build/lexer.mll"
000325|        ( single_quote_string "" lexbuf )
000326| # 327 "build/lexer.ml"
000327|  
000328|   | 6 ->
000329| # 81 "build/lexer.mll"
000330|       ( double_quote_string "" lexbuf )
000331| # 332 "build/lexer.ml"
000332|  
000333|   | 7 ->
000334| # 82 "build/lexer.mll"
000335|                 ( main lexbuf)
000336| # 337 "build/lexer.ml"
000337|  
000338|   | 8 ->
000339| # 83 "build/lexer.mll"
000340|        (multiline_comment lexbuf)
000341| # 342 "build/lexer.ml"
000342|  
000343|   | 9 ->
000344| # 84 "build/lexer.mll"
000345|        ( incr_linenum lexbuf;main lexbuf )
000346| # 347 "build/lexer.ml"
000347|  
000348|   | 10 ->
000349| # 85 "build/lexer.mll"
000350|        (AND)
000351| # 352 "build/lexer.ml"
000352|  
000353|   | 11 ->
000354| # 86 "build/lexer.mll"
000355|        (OR)
000356| # 357 "build/lexer.ml"
000357|  
000358|   | 12 ->
000359| # 87 "build/lexer.mll"
000360|       (COMPOP(LessThan))
000361| # 362 "build/lexer.ml"
000362|  
000363|   | 13 ->
000364| # 88 "build/lexer.mll"
000365|       (COMPOP(GreaterThan))
000366| # 367 "build/lexer.ml"
000367|  
000368|   | 14 ->
000369| # 89 "build/lexer.mll"
000370|        (COMPOP(LessThanEqual))
000371| # 372 "build/lexer.ml"
000372|  
000373|   | 15 ->
000374| # 90 "build/lexer.mll"
000375|        (COMPOP(GreaterThanEqual))
000376| # 377 "build/lexer.ml"
000377|  
000378|   | 16 ->
000379| # 91 "build/lexer.mll"
000380|        (COMPOP(Equal))
000381| # 382 "build/lexer.ml"
000382|  
000383|   | 17 ->
000384| # 92 "build/lexer.mll"
000385|        (COMPOP(NotEqual))
000386| # 387 "build/lexer.ml"
000387|  
000388|   | 18 ->
000389| # 93 "build/lexer.mll"
000390|         (DOTDOTDOT)
000391| # 392 "build/lexer.ml"
000392|  
000393|   | 19 ->
000394| # 94 "build/lexer.mll"
000395|        (PLUSEQUALS)
000396| # 397 "build/lexer.ml"
000397|  
000398|   | 20 ->
000399| # 95 "build/lexer.mll"
000400|        (MINUSEQUALS)
000401| # 402 "build/lexer.ml"
000402|  
000403|   | 21 ->
000404| # 96 "build/lexer.mll"
000405|        (TIMESEQUALS)
000406| # 407 "build/lexer.ml"
000407|  
000408|   | 22 ->
000409| # 97 "build/lexer.mll"
000410|        (DIVEQUALS)
000411| # 412 "build/lexer.ml"
000412|  
000413|   | 23 ->
000414| # 98 "build/lexer.mll"
000415|        (MODEQUALS)
000416| # 417 "build/lexer.ml"
000417|  
000418|   | 24 ->
000419| # 99 "build/lexer.mll"
000420|        (PLUSPLUS)
000421| # 422 "build/lexer.ml"
000422|  
000423|   | 25 ->
000424| # 100 "build/lexer.mll"
000425|        (MINUSMINUS)
000426| # 427 "build/lexer.ml"
000427|  
000428|   | 26 ->
000429| # 101 "build/lexer.mll"
000430|       (EQUALS)
000431| # 432 "build/lexer.ml"
000432|  
000433|   | 27 ->
000434| # 102 "build/lexer.mll"
000435|       (DOT)
000436| # 437 "build/lexer.ml"
000437|  
000438|   | 28 ->
000439| # 103 "build/lexer.mll"
000440|       (LBRACE)
000441| # 442 "build/lexer.ml"
000442|  
000443|   | 29 ->
000444| # 104 "build/lexer.mll"
000445|       (RBRACE)
000446| # 447 "build/lexer.ml"
000447|  
000448|   | 30 ->
000449| # 105 "build/lexer.mll"
000450|       (LPAREN)
000451| # 452 "build/lexer.ml"
000452|  
000453|   | 31 ->
000454| # 106 "build/lexer.mll"
000455|       (RPAREN)
000456| # 457 "build/lexer.ml"
000457|  
000458|   | 32 ->
000459| # 107 "build/lexer.mll"
000460|       (LBRACKET)
000461| # 462 "build/lexer.ml"
000462|  
000463|   | 33 ->
000464| # 108 "build/lexer.mll"
000465|       (RBRACKET)
000466| # 467 "build/lexer.ml"
000467|  
000468|   | 34 ->
000469| # 109 "build/lexer.mll"
000470|       (COMMA)
000471| # 472 "build/lexer.ml"
000472|  
000473|   | 35 ->
000474| # 110 "build/lexer.mll"
000475|       (SEMICOLON)
000476| # 477 "build/lexer.ml"
000477|  
000478|   | 36 ->
000479| # 111 "build/lexer.mll"
000480|       (COLON)
000481| # 482 "build/lexer.ml"
000482|  
000483|   | 37 ->
000484| # 112 "build/lexer.mll"
000485|       (NOT)
000486| # 487 "build/lexer.ml"
000487|  
000488|   | 38 ->
000489| # 113 "build/lexer.mll"
000490|       (QUESTION)
000491| # 492 "build/lexer.ml"
000492|  
000493|   | 39 ->
000494| # 114 "build/lexer.mll"
000495|       (PLUS)
000496| # 497 "build/lexer.ml"
000497|  
000498|   | 40 ->
000499| # 115 "build/lexer.mll"
000500|       (MINUS)
000501| # 502 "build/lexer.ml"
000502|  
000503|   | 41 ->
000504| # 116 "build/lexer.mll"
000505|       (TIMES)
000506| # 507 "build/lexer.ml"
000507|  
000508|   | 42 ->
000509| # 117 "build/lexer.mll"
000510|       (DIVIDE)
000511| # 512 "build/lexer.ml"
000512|  
000513|   | 43 ->
000514| # 118 "build/lexer.mll"
000515|       (MODULO)
000516| # 517 "build/lexer.ml"
000517|  
000518|   | 44 ->
000519| # 119 "build/lexer.mll"
000520|       (AT)
000521| # 522 "build/lexer.ml"
000522|  
000523|   | 45 ->
000524| (*[0]*)let
000525| # 120 "build/lexer.mll"
000526|        c
000527| # 528 "build/lexer.ml"
000528| = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
000529| # 120 "build/lexer.mll"
000530|          ( syntax_exception ("Invalid character "^String.make 1 c) lexbuf)
000531| # 532 "build/lexer.ml"
000532|  
000533|   | 46 ->
000534| # 121 "build/lexer.mll"
000535|       ( EOF )
000536| # 537 "build/lexer.ml"
000537|  
000538|   | __ocaml_lex_state -> (*[178]*)lexbuf.Lexing.refill_buff lexbuf; (*[178]*)__ocaml_lex_main_rec lexbuf __ocaml_lex_state
000539|  
000540| and single_quote_string s lexbuf =
000541|     (*[13310]*)__ocaml_lex_single_quote_string_rec s lexbuf 58
000542| and __ocaml_lex_single_quote_string_rec s lexbuf __ocaml_lex_state =
000543|   match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
000544|       | 0 ->
000545| # 123 "build/lexer.mll"
000546|         ( incr_linenum lexbuf; single_quote_string (s ^ "\n") lexbuf )
000547| # 548 "build/lexer.ml"
000548|  
000549|   | 1 ->
000550| # 124 "build/lexer.mll"
000551|         ( STRING(s) )
000552| # 553 "build/lexer.ml"
000553|  
000554|   | 2 ->
000555| # 125 "build/lexer.mll"
000556|        ( single_quote_string (s ^ (escape_char lexbuf)) lexbuf )
000557| # 558 "build/lexer.ml"
000558|  
000559|   | 3 ->
000560| (*[12296]*)let
000561| # 126 "build/lexer.mll"
000562|               c
000563| # 564 "build/lexer.ml"
000564| = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
000565| # 126 "build/lexer.mll"
000566|                  ( single_quote_string (s ^ String.make 1 c) lexbuf )
000567| # 568 "build/lexer.ml"
000568|  
000569|   | 4 ->
000570| # 127 "build/lexer.mll"
000571|        ( syntax_exception "Unterminated string constant" lexbuf )
000572| # 573 "build/lexer.ml"
000573|  
000574|   | __ocaml_lex_state -> (*[24]*)lexbuf.Lexing.refill_buff lexbuf; (*[24]*)__ocaml_lex_single_quote_string_rec s lexbuf __ocaml_lex_state
000575|  
000576| and double_quote_string s lexbuf =
000577|     (*[4]*)__ocaml_lex_double_quote_string_rec s lexbuf 64
000578| and __ocaml_lex_double_quote_string_rec s lexbuf __ocaml_lex_state =
000579|   match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
000580|       | 0 ->
000581| # 129 "build/lexer.mll"
000582|         ( incr_linenum lexbuf; double_quote_string (s ^ "\n") lexbuf )
000583| # 584 "build/lexer.ml"
000584|  
000585|   | 1 ->
000586| # 130 "build/lexer.mll"
000587|        ( STRING(s) )
000588| # 589 "build/lexer.ml"
000589|  
000590|   | 2 ->
000591| # 131 "build/lexer.mll"
000592|        ( double_quote_string (s ^ (escape_char lexbuf)) lexbuf )
000593| # 594 "build/lexer.ml"
000594|  
000595|   | 3 ->
000596| (*[2]*)let
000597| # 132 "build/lexer.mll"
000598|              c
000599| # 600 "build/lexer.ml"
000600| = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
000601| # 132 "build/lexer.mll"
000602|                 ( double_quote_string (s ^ String.make 1 c) lexbuf )
000603| # 604 "build/lexer.ml"
000604|  
000605|   | 4 ->
000606| # 133 "build/lexer.mll"
000607|        ( syntax_exception "Unterminated string constant" lexbuf )
000608| # 609 "build/lexer.ml"
000609|  
000610|   | __ocaml_lex_state -> (*[0]*)lexbuf.Lexing.refill_buff lexbuf; (*[0]*)__ocaml_lex_double_quote_string_rec s lexbuf __ocaml_lex_state
000611|  
000612| and escape_char lexbuf =
000613|     (*[56]*)__ocaml_lex_escape_char_rec lexbuf 70
000614| and __ocaml_lex_escape_char_rec lexbuf __ocaml_lex_state =
000615|   match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
000616|       | 0 ->
000617| # 135 "build/lexer.mll"
000618|        ("\\")
000619| # 620 "build/lexer.ml"
000620|  
000621|   | 1 ->
000622| # 136 "build/lexer.mll"
000623|        ("\n")
000624| # 625 "build/lexer.ml"
000625|  
000626|   | 2 ->
000627| # 137 "build/lexer.mll"
000628|        ("\r")
000629| # 630 "build/lexer.ml"
000630|  
000631|   | 3 ->
000632| # 138 "build/lexer.mll"
000633|        ("'")
000634| # 635 "build/lexer.ml"
000635|  
000636|   | 4 ->
000637| # 139 "build/lexer.mll"
000638|       ("\"")
000639| # 640 "build/lexer.ml"
000640|  
000641|   | 5 ->
000642| # 140 "build/lexer.mll"
000643|        ("\t")
000644| # 645 "build/lexer.ml"
000645|  
000646|   | 6 ->
000647| # 141 "build/lexer.mll"
000648|        ("\b")
000649| # 650 "build/lexer.ml"
000650|  
000651|   | __ocaml_lex_state -> (*[0]*)lexbuf.Lexing.refill_buff lexbuf; (*[0]*)__ocaml_lex_escape_char_rec lexbuf __ocaml_lex_state
000652|  
000653| and multiline_comment lexbuf =
000654|     (*[174]*)__ocaml_lex_multiline_comment_rec lexbuf 78
000655| and __ocaml_lex_multiline_comment_rec lexbuf __ocaml_lex_state =
000656|   match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
000657|       | 0 ->
000658| # 143 "build/lexer.mll"
000659|        ( incr_linenum lexbuf; multiline_comment lexbuf )
000660| # 661 "build/lexer.ml"
000661|  
000662|   | 1 ->
000663| # 144 "build/lexer.mll"
000664|        ( main lexbuf )
000665| # 666 "build/lexer.ml"
000666|  
000667|   | 2 ->
000668| # 145 "build/lexer.mll"
000669|            ( multiline_comment lexbuf)
000670| # 671 "build/lexer.ml"
000671|  
000672|   | 3 ->
000673| # 146 "build/lexer.mll"
000674|       ( syntax_exception "Unterminated multiline comment" lexbuf )
000675| # 676 "build/lexer.ml"
000676|  
000677|   | __ocaml_lex_state -> (*[0]*)lexbuf.Lexing.refill_buff lexbuf; (*[0]*)__ocaml_lex_multiline_comment_rec lexbuf __ocaml_lex_state
000678|  
000679| ;;
000680|  

Legend:
   some code - line containing no point
   some code - line containing only visited points
   some code - line containing only unvisited points
   some code - line containing both visited and unvisited points