% Table * % % module % test lexer2_test(_s,_i,_j,_z,_upvals):-_upvals=[],(_z = "rel"). % run_lx lexer2_run_lx(_s,_l,_upvals):-_upvals=[_run2],(call_cl(_run2,[_s,0.0,_l,fc_Info(1.0,1.0),_info2]),!). % run2 lexer2_run2(_s,_start,_l,_info,_info2,_upvals):-_upvals=[_debug,_string,_debug,_run_tk,_string,_string,_step1,_run_tk,_string,_string,_step1],((((true),(int(_start,X5),call_cl(_step1,[_s,X5,_x,_type,_info,_info1]),get_(_string,"at",T88),_T87 = T88,call_cl(_T87,[_s,_start,_c]),call(lexer2_run2(_s,_x,_l0,_info1,_info2),_upvals),get_(_string,"slice",T90),_T89 = T90,int(_start,X6),call_cl(_T89,[_s,X6,_x,_lexeme]),call_cl(_run_tk,[fc_Token(_lexeme,_type,_info),_type,_l0,_l]));(call_cl(_debug,['[|]'("--",'[|]'(_start,[]))]),_l = [fc_Token("EOF","EOF",_)|[]],get_(_string,"size",T92),_T91 = T92,call_cl(_T91,[_s,_z]),call_cl(_debug,['[|]'("end",'[|]'(_z,'[|]'(_start,[])))]),int(_start,X7),_z = X7,_info2 = _info;throw("error"))))). % step1 lexer2_step1(_s,_i,_j,_z,_info,_info2,_upvals):-_upvals=[_debug,_step_,_keywords,_list,_debug,_string,_parse_id,_letter2,_match_list,_debug,_string,_navigate_comment,_navigate_whitespace,_debug],(call_cl(_debug,['[|]'(_i,[])]),def(_i),((call_cl(_navigate_whitespace,[_s,_i,_j,_info,_info2]))->(_z = "whitespace");((call_cl(_navigate_comment,[_s,_i,_j,_info,_info2]))->(_z = "comment");(get_(_string,"at",T78),_T77 = T78,call_cl(_T77,[_s,_i,_c]),_k = _i+1.0,call_cl(_debug,['[|]'(_c,'[|]'(_k,[]))]),!,_l = '[|]'("=",'[|]'(";",'[|]'("(",'[|]'(")",'[|]'("{",'[|]'("}",'[|]'(".",'[|]'(",",'[|]'("|",'[|]'("#",[])))))))))),(((call_cl(_match_list,[_l,_c,_z])),(_j = _i+1.0);((call_cl(_letter2,[_c])),(call_cl(_parse_id,[_s,_i,_j]),get_(_string,"slice",T80),_T79 = T80,call_cl(_T79,[_s,_i,_j,_s2]),call_cl(_debug,['[|]'("id/",'[|]'(_s,'[|]'(_s2,[])))]),(((get_(_list,"has",T82),_T81 = T82,call_cl(_T81,['[|]'("and",'[|]'("or",[])),_s2])),(_z = "connective");((call_cl(_keywords,[_s2,_z])),(true);((_s2 = "cond"),(_z = "case");_z = "id")))));call_cl(_step_,[_s,_i,_j,_z,_c,_info,_info2])))),_info = fc_Info(_line,_col),int(_col+_j-_i,X2),int(_line,X1),_info2 = fc_Info(X1,X2)))),call_cl(_debug,['[|]'("type",'[|]'(_z,'[|]'(_i,'[|]'(_j,[]))))])). % step_ lexer2_step_(_s,_i,_j,_z,_c,_info,_info2,_upvals):-_upvals=[_step5,_parse_number,_parse_string,_parse_string],((((true),(call_cl(_parse_string,[_s,_i,_j]),_z = "string");(call_cl(_parse_number,[_s,_i,_j]),_z = "number";call_cl(_step5,[_s,_i,_j,_z,_c,_info]))))). % step5 lexer2_step5(_s,_i,_j,_z,_c,_info,_upvals):-_upvals=[_match_one,_single_quote,_match_list,_match_list,_string,_match_list,_string],((((true),(_l = '[|]'("<=",'[|]'(">=",'[|]'("!=",'[|]'("::",[])))),get_(_string,"slice",T76),_T75 = T76,call_cl(_T75,[_s,_i,_i+2.0,_s2]),call_cl(_match_list,[_l,_s2,_z]),_j = _i+2.0);(_l = '[|]'("+",'[|]'("-",'[|]'("<",'[|]'(">",'[|]'("[",'[|]'("]",'[|]'("/",'[|]'("*",'[|]'("#",'[|]'("!",'[|]'(":",[]))))))))))),call_cl(_match_list,[_l,_c,_z]),_j = _i+1.0;call_cl(_match_one,[_s,_i,_j,_single_quote]),_z = "single_quote")))). % keywords lexer2_keywords(_s,_z,_upvals):-_upvals=[_list],(get_(_list,"has",T72),_T71 = T72,call_cl(_T71,['[|]'("rel",'[|]'("fun",'[|]'("not",'[|]'("and",'[|]'("or",'[|]'("true",'[|]'("false",'[|]'("if",'[|]'("when",'[|]'("case",'[|]'("elseif",'[|]'("else",'[|]'("choose",'[|]'("cond",'[|]'("once",[]))))))))))))))),_s]),_z = _s). % run_tk lexer2_run_tk(_tk,_type,_l0,_l,_upvals):-_upvals=[],((((true),(dif(_type,"comment"),_l = [_tk|_l0]);_l = _l0))). % parse_id lexer2_parse_id(_s,_i,_i2,_upvals):-_upvals=[_match_any,_digit,_match_some,_letter2],(call_cl(_match_some,[_s,_i,_x,_letter2]),call_cl(_match_any,[_s,_x,_i2,_digit])). % parse_number lexer2_parse_number(_s,_i,_i2,_upvals):-_upvals=[_match_some,_digit,_match_some,_digit,_match_string,_match_some,_digit,_debug],(call_cl(_debug,["num"]),(((call_cl(_match_some,[_s,_i,_x1,_digit])),(call_cl(_match_string,[_s,_x1,_x2,"."]),call_cl(_match_some,[_s,_x2,_i2,_digit]));call_cl(_match_some,[_s,_i,_i2,_digit])))). % navigate_comment lexer2_navigate_comment(_s,_i,_i2,_info,_info2,_upvals):-_upvals=[_match_string,_string,_navigate_until_asterisk,_match_string,_string,_string,_match_string],((((call_cl(_match_string,[_s,_i,_x,"//"])),(_info2 = _info,(((get_(_string,"findIndex",T66),_T65 = T66,call_cl(_T65,[_s,"\n",_x,_z])),(_i2 = _z);get_(_string,"size",T68),_T67 = T68,call_cl(_T67,[_s,_i2]))));call_cl(_match_string,[_s,_i,_x,"/*"]),call_cl(_navigate_until_asterisk,[_s,_x,_y,_info,_info2]),get_(_string,"at",T70),_T69 = T70,call_cl(_T69,[_s,_y,_c1]),call_cl(_match_string,[_s,_y,_i2,"*/"]),!))). % navigate_until_asterisk lexer2_navigate_until_asterisk(_s,_i,_i2,_info,_info2,_upvals):-_upvals=[_string],(_info = fc_Info(_line,_col),get_(_string,"at",T64),_T63 = T64,call_cl(_T63,[_s,_i,_c]),(if_(_c = "*",(_i = _i2,_info2 = _info),((if_(_c = "\n",(_info1 = fc_Info(_line+1.0,1.0)),(if_(_c = "\t",(_info1 = fc_Info(_line,_col+4.0)),(_info1 = fc_Info(_line,_col+1.0)))))),call(lexer2_navigate_until_asterisk(_s,_i+1.0,_i2,_info1,_info2),_upvals))))). % navigate_whitespace lexer2_navigate_whitespace(_s,_i,_i2,_info,_info2,_upvals):-_upvals=[_navigate_ws2,_navigate_ws2,_whitespace,_string],(get_(_string,"at",T62),_T61 = T62,call_cl(_T61,[_s,_i,_c]),call_cl(_whitespace,[_c]),_info = fc_Info(_line,_col),(if_(_c = "\n",(call_cl(_navigate_ws2,[_s,_i+1.0,_i2,_line+1.0,0.0,_info2])),(call_cl(_navigate_ws2,[_s,_i+1.0,_i2,_line,_col,_info2]))))). % navigate_ws2 lexer2_navigate_ws2(_s,_i,_i2,_line,_col,_info2,_upvals):-_upvals=[_whitespace,_string],((((get_(_string,"at",T60),_T59 = T60,call_cl(_T59,[_s,_i,_c])),((if_(_c = "\n",(call(lexer2_navigate_ws2(_s,_i+1.0,_i2,_line+1.0,1.0,_info2),_upvals)),(if_(_c = "\t",(call(lexer2_navigate_ws2(_s,_i+1.0,_i2,_line,_col+4.0,_info2),_upvals)),(if_(_c = "\r",(call(lexer2_navigate_ws2(_s,_i+1.0,_i2,_line,_col,_info2),_upvals)),(call_cl(_whitespace,[_c]),call(lexer2_navigate_ws2(_s,_i+1.0,_i2,_line,_col+1.0,_info2),_upvals)))))))));_i2 = _i,_info2 = fc_Info(_line,_col)))). % parse_string lexer2_parse_string(_s,_i,_i2,_upvals):-_upvals=[_match_until,_single_quote,_single_quote,_debug,_parse_double_string,_double_quote,_debug,_string],(_j = _i+1.0,get_(_string,"at",T58),_T57 = T58,call_cl(_T57,[_s,_i,_c]),call_cl(_debug,[_c]),(((call_cl(_double_quote,[_c])),(call_cl(_parse_double_string,[_s,_j,_j2]),_i2 = _j2+1.0);call_cl(_debug,["-"]),call_cl(_single_quote,[_c]),call_cl(_match_until,[_s,_j,_j2,_single_quote]),_i2 = _j2+1.0))). % parse_double_string lexer2_parse_double_string(_s,_i,_i2,_upvals):-_upvals=[_slash,_double_quote,_string],(get_(_string,"at",T56),_T55 = T56,call_cl(_T55,[_s,_i,_c]),(((call_cl(_double_quote,[_c])),(_i = _i2);((call_cl(_slash,[_c])),(call(lexer2_parse_double_string(_s,_i+2.0,_i2),_upvals));call(lexer2_parse_double_string(_s,_i+1.0,_i2),_upvals))))). % match_whitespace lexer2_match_whitespace(_s,_i,_i2,_upvals):-_upvals=[_match_some,_whitespace],(call_cl(_match_some,[_s,_i,_i2,_whitespace])). % match_list lexer2_match_list(_l,_s,_z,_upvals):-_upvals=[],(_l = [_head|_tail],(if_(_head = _s,(_z = _s),(call(lexer2_match_list(_tail,_s,_z),_upvals))))). % match_string lexer2_match_string(_s,_i,_i2,_str,_upvals):-_upvals=[_string,_string],(get_(_string,"size",T52),_T51 = T52,call_cl(_T51,[_str,_size1]),def(_i),_i2 = _i+_size1,get_(_string,"slice",T54),_T53 = T54,call_cl(_T53,[_s,_i,_i2,_str2]),def(_i2),_str2 = _str). % match_until lexer2_match_until(_s,_i,_i2,_f,_upvals):-_upvals=[_string,_string],((((true),(get_(_string,"at",T50),_T49 = T50,call_cl(_T49,[_s,_i,_c]),call_cl(_f,[_c]),_i = _i2);call(lexer2_match_until(_s,_i+1.0,_i2,_f),_upvals)))). % match_any lexer2_match_any(_s,_i,_i2,_f,_upvals):-_upvals=[_string,_string],((((true),(get_(_string,"at",T46),_T45 = T46,call_cl(_T45,[_s,_i,_c]),call_cl(_f,[_c]),call(lexer2_match_any(_s,_i+1.0,_i2,_f),_upvals));_i = _i2))). % match_one lexer2_match_one(_s,_i,_i2,_f,_upvals):-_upvals=[_string],(_i2 = _i+1.0,get_(_string,"at",T42),_T41 = T42,call_cl(_T41,[_s,_i,_c]),call_cl(_f,[_c])). % match_some lexer2_match_some(_s,_i,_i2,_f,_upvals):-_upvals=[_match_rel2,_string],(get_(_string,"at",T40),_T39 = T40,call_cl(_T39,[_s,_i,_c]),call_cl(_f,[_c]),call_cl(_match_rel2,[_s,_i+1.0,_i2,_f])). % match_rel2 lexer2_match_rel2(_s,_i,_i2,_f,_upvals):-_upvals=[_string],((((true),(get_(_string,"at",T38),_T37 = T38,call_cl(_T37,[_s,_i,_c]),call_cl(_f,[_c]),call(lexer2_match_rel2(_s,_i+1.0,_i2,_f),_upvals));_i = _i2))). % whitespace lexer2_whitespace(_c,_upvals):-_upvals=[],(_c = " ";_c = "\t";_c = "\n";_c = "\r"). % tab lexer2_tab(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T36),_T35 = T36,call_cl(_T35,[_c,9.0])). % newline2 lexer2_newline2(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T34),_T33 = T34,call_cl(_T33,[_c,13.0])). % newline lexer2_newline(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T32),_T31 = T32,call_cl(_T31,[_c,10.0])). % slash lexer2_slash(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T30),_T29 = T30,call_cl(_T29,[_c,92.0])). % endline lexer2_endline(_c,_upvals):-_upvals=[],(_c = "\n"). % quote lexer2_quote(_c,_upvals):-_upvals=[_double_quote,_single_quote],(call_cl(_single_quote,[_c]);call_cl(_double_quote,[_c])). % double_quote lexer2_double_quote(_c,_upvals):-_upvals=[],(_c = "\""). % single_quote lexer2_single_quote(_c,_upvals):-_upvals=[_string,_string],(get_(_string,"code",T26),_T25 = T26,call_cl(_T25,[_c,39.0]),get_(_string,"code",T28),_T27 = T28,call_cl(_T27,[_c,39.0])). % letter2 lexer2_letter2(_c,_upvals):-_upvals=[_string,_string,_string,_string,_string,_string],((((true),(get_(_string,"lessOrEqual",T18),_T17 = T18,call_cl(_T17,[_c,"z"]),get_(_string,"lessOrEqual",T20),_T19 = T20,call_cl(_T19,["a",_c]));(get_(_string,"lessOrEqual",T22),_T21 = T22,call_cl(_T21,[_c,"Z"]),get_(_string,"lessOrEqual",T24),_T23 = T24,call_cl(_T23,["A",_c]);_c = "_")))). % letter lexer2_letter(_c,_upvals):-_upvals=[_string,_string,_string,_string],(get_(_string,"lessOrEqual",T6),_T5 = T6,call_cl(_T5,[_c,"z"]),get_(_string,"lessOrEqual",T8),_T7 = T8,call_cl(_T7,["a",_c]);get_(_string,"lessOrEqual",T10),_T9 = T10,call_cl(_T9,[_c,"Z"]),get_(_string,"lessOrEqual",T12),_T11 = T12,call_cl(_T11,["A",_c])). % digit lexer2_digit(_c,_upvals):-_upvals=[_string,_string],(get_(_string,"lessOrEqual",T2),_T1 = T2,call_cl(_T1,[_c,"9"]),get_(_string,"lessOrEqual",T4),_T3 = T4,call_cl(_T3,["0",_c])). % debug lexer2_debug(_s,_upvals):-_upvals=[],(true). % main lexer2(X):-_debug = clos([],lexer2_debug),creq("string",_string),creq("list",_list),creq("io",_io),_digit = clos([_string,_string],lexer2_digit),_letter = clos([_string,_string,_string,_string],lexer2_letter),_letter2 = clos([_string,_string,_string,_string,_string,_string],lexer2_letter2),_single_quote = clos([_string,_string],lexer2_single_quote),_double_quote = clos([],lexer2_double_quote),_quote = clos([_double_quote,_single_quote],lexer2_quote),_endline = clos([],lexer2_endline),_slash = clos([_string],lexer2_slash),_newline = clos([_string],lexer2_newline),_newline2 = clos([_string],lexer2_newline2),_tab = clos([_string],lexer2_tab),_whitespace = clos([],lexer2_whitespace),_match_rel2 = clos([_string],lexer2_match_rel2),_match_some = clos([_match_rel2,_string],lexer2_match_some),_match_one = clos([_string],lexer2_match_one),_match_any = clos([_string,_string],lexer2_match_any),_match_until = clos([_string,_string],lexer2_match_until),_match_string = clos([_string,_string],lexer2_match_string),_match_list = clos([],lexer2_match_list),_match_whitespace = clos([_match_some,_whitespace],lexer2_match_whitespace),_parse_double_string = clos([_slash,_double_quote,_string],lexer2_parse_double_string),_parse_string = clos([_match_until,_single_quote,_single_quote,_debug,_parse_double_string,_double_quote,_debug,_string],lexer2_parse_string),_navigate_ws2 = clos([_whitespace,_string],lexer2_navigate_ws2),_navigate_whitespace = clos([_navigate_ws2,_navigate_ws2,_whitespace,_string],lexer2_navigate_whitespace),_navigate_until_asterisk = clos([_string],lexer2_navigate_until_asterisk),_navigate_comment = clos([_match_string,_string,_navigate_until_asterisk,_match_string,_string,_string,_match_string],lexer2_navigate_comment),_parse_number = clos([_match_some,_digit,_match_some,_digit,_match_string,_match_some,_digit,_debug],lexer2_parse_number),_parse_id = clos([_match_any,_digit,_match_some,_letter2],lexer2_parse_id),_run_tk = clos([],lexer2_run_tk),_keywords = clos([_list],lexer2_keywords),_step5 = clos([_match_one,_single_quote,_match_list,_match_list,_string,_match_list,_string],lexer2_step5),_step_ = clos([_step5,_parse_number,_parse_string,_parse_string],lexer2_step_),_step1 = clos([_debug,_step_,_keywords,_list,_debug,_string,_parse_id,_letter2,_match_list,_debug,_string,_navigate_comment,_navigate_whitespace,_debug],lexer2_step1),_run2 = clos([_debug,_string,_debug,_run_tk,_string,_string,_step1,_run_tk,_string,_string,_step1],lexer2_run2),_run_lx = clos([_run2],lexer2_run_lx),_test = clos([],lexer2_test),new(T93),set_(T93,"run_lexer",_run_lx,T95),set_(T95,"run",_run_lx,T94),_t = T94,X=_t,_f = fc_Info(0.0,0.0),_i = 0.0,_s = "bc=".