%0 Table {run.Relation Any Any;run_lexer.Relation Any Any} % F Functor;Info Functor;Token Functor;Cons Functor % 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",T126),_T125 = T126,call_cl(_T125,[_s,_start,_c]),call(lexer2_run2(_s,_x,_l0,_info1,_info2),_upvals),get_(_string,"slice",T128),_T127 = T128,int(_start,X6),call_cl(_T127,[_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",T130),_T129 = T130,call_cl(_T129,[_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_,_keyword,_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",T112),_T111 = T112,call_cl(_T111,[_s,_i,_c]),calc(_i+1.0,T113),_k = T113,call_cl(_debug,['[|]'(_c,'[|]'(_k,[]))]),!,_l = '[|]'("=",'[|]'(";",'[|]'("(",'[|]'(")",'[|]'("{",'[|]'("}",'[|]'(".",'[|]'(",",'[|]'("|",'[|]'("#",[])))))))))),((call_cl(_match_list,[_l,_c,_z]))->(calc(_i+1.0,T114),_j = T114);((call_cl(_letter2,[_c]))->(call_cl(_parse_id,[_s,_i,_j]),get_(_string,"slice",T116),_T115 = T116,call_cl(_T115,[_s,_i,_j,_s2]),call_cl(_debug,['[|]'("id/",'[|]'(_s,'[|]'(_s2,[])))]),((get_(_list,"has",T118),_T117 = T118,call_cl(_T117,['[|]'("and",'[|]'("or",[])),_s2]))->(_z = "connective");((call_cl(_keyword,[_s2]))->(_z = _s2);((_s2 = "cond")->(_z = "case");(_z = "id")))));(call_cl(_step_,[_s,_i,_j,_z,_c,_info,_info2])))),_info = fc_Info(_line,_col),calc(_col+_j,T119),{T119-_i=T120},int(T120,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",T107),_T106 = T107,calc(_i+2.0,T108),call_cl(_T106,[_s,_i,T108,_s2]),call_cl(_match_list,[_l,_s2,_z]),calc(_i+2.0,T109),_j = T109);(_l = '[|]'("+",'[|]'("-",'[|]'("<",'[|]'(">",'[|]'("[",'[|]'("]",'[|]'("/",'[|]'("*",'[|]'("#",'[|]'("!",'[|]'(":",[]))))))))))),call_cl(_match_list,[_l,_c,_z]),calc(_i+1.0,T110),_j = T110;call_cl(_match_one,[_s,_i,_j,_single_quote]),_z = "single_quote")))). % keyword lexer2_keyword(_s,_upvals):-_upvals=[_list],(get_(_list,"has",T101),_T100 = T101,call_cl(_T100,['[|]'("rel",'[|]'("fun",'[|]'("not",'[|]'("in",'[|]'("and",'[|]'("or",'[|]'("true",'[|]'("false",'[|]'("if",'[|]'("when",'[|]'("case",'[|]'("elseif",'[|]'("else",'[|]'("choose",'[|]'("once",[]))))))))))))))),_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",T95),_T94 = T95,call_cl(_T94,[_s,"\n",_x,_z])),(_i2 = _z);get_(_string,"size",T97),_T96 = T97,call_cl(_T96,[_s,_i2]))));call_cl(_match_string,[_s,_i,_x,"/*"]),call_cl(_navigate_until_asterisk,[_s,_x,_y,_info,_info2]),get_(_string,"at",T99),_T98 = T99,call_cl(_T98,[_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",T89),_T88 = T89,call_cl(_T88,[_s,_i,_c]),((_c = "*",_i = _i2,_info2 = _info);(dif(_c,"*"),((_c = "\n",calc(_line+1.0,T90),_info1 = fc_Info(T90,1.0));(dif(_c,"\n"),(_c = "\t",calc(_col+4.0,T91),_info1 = fc_Info(_line,T91));(dif(_c,"\t"),calc(_col+1.0,T92),_info1 = fc_Info(_line,T92)))),calc(_i+1.0,T93),call(lexer2_navigate_until_asterisk(_s,T93,_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",T84),_T83 = T84,call_cl(_T83,[_s,_i,_c]),call_cl(_whitespace,[_c]),_info = fc_Info(_line,_col),((_c = "\n",calc(_line+1.0,T86),calc(_i+1.0,T85),call_cl(_navigate_ws2,[_s,T85,_i2,T86,0.0,_info2]));(dif(_c,"\n"),calc(_i+1.0,T87),call_cl(_navigate_ws2,[_s,T87,_i2,_line,_col,_info2])))). % navigate_ws2 lexer2_navigate_ws2(_s,_i,_i2,_line,_col,_info2,_upvals):-_upvals=[_whitespace,_string],((((get_(_string,"at",T75),_T74 = T75,call_cl(_T74,[_s,_i,_c])),(((_c = "\n",calc(_line+1.0,T77),calc(_i+1.0,T76),call(lexer2_navigate_ws2(_s,T76,_i2,T77,1.0,_info2),_upvals));(dif(_c,"\n"),(_c = "\t",calc(_col+4.0,T79),calc(_i+1.0,T78),call(lexer2_navigate_ws2(_s,T78,_i2,_line,T79,_info2),_upvals));(dif(_c,"\t"),(_c = "\r",calc(_i+1.0,T80),call(lexer2_navigate_ws2(_s,T80,_i2,_line,_col,_info2),_upvals));(dif(_c,"\r"),call_cl(_whitespace,[_c]),calc(_col+1.0,T82),calc(_i+1.0,T81),call(lexer2_navigate_ws2(_s,T81,_i2,_line,T82,_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],(calc(_i+1.0,T69),_j = T69,get_(_string,"at",T71),_T70 = T71,call_cl(_T70,[_s,_i,_c]),call_cl(_debug,[_c]),(((call_cl(_double_quote,[_c])),(call_cl(_parse_double_string,[_s,_j,_j2]),calc(_j2+1.0,T72),_i2 = T72);call_cl(_debug,["-"]),call_cl(_single_quote,[_c]),call_cl(_match_until,[_s,_j,_j2,_single_quote]),calc(_j2+1.0,T73),_i2 = T73))). % parse_double_string lexer2_parse_double_string(_s,_i,_i2,_upvals):-_upvals=[_slash,_double_quote,_string],(get_(_string,"at",T66),_T65 = T66,call_cl(_T65,[_s,_i,_c]),(((call_cl(_double_quote,[_c])),(_i = _i2);((call_cl(_slash,[_c])),(calc(_i+2.0,T67),call(lexer2_parse_double_string(_s,T67,_i2),_upvals));calc(_i+1.0,T68),call(lexer2_parse_double_string(_s,T68,_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],((_head = _s,_z = _s);(dif(_head,_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",T61),_T60 = T61,call_cl(_T60,[_str,_size1]),def(_i),calc(_i+_size1,T62),_i2 = T62,get_(_string,"slice",T64),_T63 = T64,call_cl(_T63,[_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",T58),_T57 = T58,call_cl(_T57,[_s,_i,_c]),call_cl(_f,[_c]),_i = _i2);calc(_i+1.0,T59),call(lexer2_match_until(_s,T59,_i2,_f),_upvals)))). % match_any lexer2_match_any(_s,_i,_i2,_f,_upvals):-_upvals=[_string,_string],((((true),(get_(_string,"at",T53),_T52 = T53,call_cl(_T52,[_s,_i,_c]),call_cl(_f,[_c]),calc(_i+1.0,T54),call(lexer2_match_any(_s,T54,_i2,_f),_upvals));_i = _i2))). % match_one lexer2_match_one(_s,_i,_i2,_f,_upvals):-_upvals=[_string],(calc(_i+1.0,T46),_i2 = T46,get_(_string,"at",T48),_T47 = T48,call_cl(_T47,[_s,_i,_c]),call_cl(_f,[_c])). % match_some lexer2_match_some(_s,_i,_i2,_f,_upvals):-_upvals=[_match_rel2,_string],(get_(_string,"at",T44),_T43 = T44,call_cl(_T43,[_s,_i,_c]),call_cl(_f,[_c]),calc(_i+1.0,T45),call_cl(_match_rel2,[_s,T45,_i2,_f])). % match_rel2 lexer2_match_rel2(_s,_i,_i2,_f,_upvals):-_upvals=[_string],((((true),(get_(_string,"at",T41),_T40 = T41,call_cl(_T40,[_s,_i,_c]),call_cl(_f,[_c]),calc(_i+1.0,T42),call(lexer2_match_rel2(_s,T42,_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",T39),_T38 = T39,call_cl(_T38,[_c,9.0])). % newline2 lexer2_newline2(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T37),_T36 = T37,call_cl(_T36,[_c,13.0])). % newline lexer2_newline(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T35),_T34 = T35,call_cl(_T34,[_c,10.0])). % slash lexer2_slash(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T33),_T32 = T33,call_cl(_T32,[_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",T29),_T28 = T29,call_cl(_T28,[_c,39.0]),get_(_string,"code",T31),_T30 = T31,call_cl(_T30,[_c,39.0])). % letter2 lexer2_letter2(_c,_upvals):-_upvals=[_string,_string,_string,_string,_string,_string],((((true),(get_(_string,"lessOrEqual",T21),_T20 = T21,call_cl(_T20,[_c,"z"]),get_(_string,"lessOrEqual",T23),_T22 = T23,call_cl(_T22,["a",_c]));(get_(_string,"lessOrEqual",T25),_T24 = T25,call_cl(_T24,[_c,"Z"]),get_(_string,"lessOrEqual",T27),_T26 = T27,call_cl(_T26,["A",_c]);_c = "_")))). % letter lexer2_letter(_c,_upvals):-_upvals=[_string,_string,_string,_string],(get_(_string,"lessOrEqual",T9),_T8 = T9,call_cl(_T8,[_c,"z"]),get_(_string,"lessOrEqual",T11),_T10 = T11,call_cl(_T10,["a",_c]);get_(_string,"lessOrEqual",T13),_T12 = T13,call_cl(_T12,[_c,"Z"]),get_(_string,"lessOrEqual",T15),_T14 = T15,call_cl(_T14,["A",_c])). % digit lexer2_digit(_c,_upvals):-_upvals=[_string,_string],(get_(_string,"lessOrEqual",T5),_T4 = T5,call_cl(_T4,[_c,"9"]),get_(_string,"lessOrEqual",T7),_T6 = T7,call_cl(_T6,["0",_c])). % debug lexer2_debug(_s,_upvals):-_upvals=[],(true). % main lexer2(X):-_debug = clos([],lexer2_debug),creq1("string",_string,T1),call(T1,_string),creq1("list",_list,T2),call(T2,_list),creq1("io",_io,T3),call(T3,_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),_keyword = clos([_list],lexer2_keyword),_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_,_keyword,_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(T131),set_(T131,"run_lexer",_run_lx,T133),set_(T133,"run",_run_lx,T132),_t = T132,X=_t,_f = fc_Info(0.0,0.0),_i = 0.0,_s = "bc=".