% Table * % % module % test lexer3_test(_s,_i,_j,_z,_upvals):-_upvals=[],(_z = "rel"). % run_lx lexer3_run_lx(_s,_l,_upvals):-_upvals=[_run2],(call_db(_run2,[_s,0.0,_l,fc_Info(1.0,1.0),_info2],[run2]),!). % run2 lexer3_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_db(_step1,[_s,X5,_x,_type,_info,_info1],[step1]),get_(_string,"at",T88),_T87 = T88,call_db(_T87,[_s,_start,_c],[T87]),call(lexer3_run2(_s,_x,_l0,_info1,_info2),_upvals),get_(_string,"slice",T90),_T89 = T90,int(_start,X6),call_db(_T89,[_s,X6,_x,_lexeme],[T89]),call_db(_run_tk,[fc_Token(_lexeme,_type,_info),_type,_l0,_l],[run_tk]));(call_db(_debug,['[|]'("--",'[|]'(_start,[]))],[debug]),_l = [fc_Token("EOF","EOF",_)|[]],get_(_string,"size",T92),_T91 = T92,call_db(_T91,[_s,_z],[T91]),call_db(_debug,['[|]'("end",'[|]'(_z,'[|]'(_start,[])))],[debug]),int(_start,X7),_z = X7,_info2 = _info;throw("error"))))). % step1 lexer3_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_db(_debug,['[|]'(_i,[])],[debug]),def(_i),((call_db(_navigate_whitespace,[_s,_i,_j,_info,_info2],[navigate_whitespace]))->(_z = "whitespace");((call_db(_navigate_comment,[_s,_i,_j,_info,_info2],[navigate_comment]))->(_z = "comment");(get_(_string,"at",T78),_T77 = T78,call_db(_T77,[_s,_i,_c],[T77]),_k = _i+1.0,call_db(_debug,['[|]'(_c,'[|]'(_k,[]))],[debug]),!,_l = '[|]'("=",'[|]'(";",'[|]'("(",'[|]'(")",'[|]'("{",'[|]'("}",'[|]'(".",'[|]'(",",'[|]'("|",'[|]'("#",[])))))))))),(((call_db(_match_list,[_l,_c,_z],[match_list])),(_j = _i+1.0);((call_db(_letter2,[_c],[letter2])),(call_db(_parse_id,[_s,_i,_j],[parse_id]),get_(_string,"slice",T80),_T79 = T80,call_db(_T79,[_s,_i,_j,_s2],[T79]),call_db(_debug,['[|]'("id/",'[|]'(_s,'[|]'(_s2,[])))],[debug]),(((get_(_list,"has",T82),_T81 = T82,call_db(_T81,['[|]'("and",'[|]'("or",[])),_s2],[T81])),(_z = "connective");((call_db(_keywords,[_s2,_z],[keywords])),(true);((_s2 = "cond"),(_z = "case");_z = "id")))));call_db(_step_,[_s,_i,_j,_z,_c,_info,_info2],[step_])))),_info = fc_Info(_line,_col),int(_col+_j-_i,X2),int(_line,X1),_info2 = fc_Info(X1,X2)))),call_db(_debug,['[|]'("type",'[|]'(_z,'[|]'(_i,'[|]'(_j,[]))))],[debug])). % step_ lexer3_step_(_s,_i,_j,_z,_c,_info,_info2,_upvals):-_upvals=[_step5,_parse_number,_parse_string,_parse_string],((((true),(call_db(_parse_string,[_s,_i,_j],[parse_string]),_z = "string");(call_db(_parse_number,[_s,_i,_j],[parse_number]),_z = "number";call_db(_step5,[_s,_i,_j,_z,_c,_info],[step5]))))). % step5 lexer3_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_db(_T75,[_s,_i,_i+2.0,_s2],[T75]),call_db(_match_list,[_l,_s2,_z],[match_list]),_j = _i+2.0);(_l = '[|]'("+",'[|]'("-",'[|]'("<",'[|]'(">",'[|]'("[",'[|]'("]",'[|]'("/",'[|]'("*",'[|]'("#",'[|]'("!",'[|]'(":",[]))))))))))),call_db(_match_list,[_l,_c,_z],[match_list]),_j = _i+1.0;call_db(_match_one,[_s,_i,_j,_single_quote],[match_one]),_z = "single_quote")))). % keywords lexer3_keywords(_s,_z,_upvals):-_upvals=[_list],(get_(_list,"has",T72),_T71 = T72,call_db(_T71,['[|]'("rel",'[|]'("fun",'[|]'("not",'[|]'("and",'[|]'("or",'[|]'("true",'[|]'("false",'[|]'("if",'[|]'("when",'[|]'("case",'[|]'("elseif",'[|]'("else",'[|]'("choose",'[|]'("cond",'[|]'("once",[]))))))))))))))),_s],[T71]),_z = _s). % run_tk lexer3_run_tk(_tk,_type,_l0,_l,_upvals):-_upvals=[],((((true),(dif(_type,"comment"),_l = [_tk|_l0]);_l = _l0))). % parse_id lexer3_parse_id(_s,_i,_i2,_upvals):-_upvals=[_match_any,_digit,_match_some,_letter2],(call_db(_match_some,[_s,_i,_x,_letter2],[match_some]),call_db(_match_any,[_s,_x,_i2,_digit],[match_any])). % parse_number lexer3_parse_number(_s,_i,_i2,_upvals):-_upvals=[_match_some,_digit,_match_some,_digit,_match_string,_match_some,_digit,_debug],(call_db(_debug,["num"],[debug]),(((call_db(_match_some,[_s,_i,_x1,_digit],[match_some])),(call_db(_match_string,[_s,_x1,_x2,"."],[match_string]),call_db(_match_some,[_s,_x2,_i2,_digit],[match_some]));call_db(_match_some,[_s,_i,_i2,_digit],[match_some])))). % navigate_comment lexer3_navigate_comment(_s,_i,_i2,_info,_info2,_upvals):-_upvals=[_match_string,_string,_navigate_until_asterisk,_match_string,_string,_string,_match_string],((((call_db(_match_string,[_s,_i,_x,"//"],[match_string])),(_info2 = _info,(((get_(_string,"findIndex",T66),_T65 = T66,call_db(_T65,[_s,"\n",_x,_z],[T65])),(_i2 = _z);get_(_string,"size",T68),_T67 = T68,call_db(_T67,[_s,_i2],[T67]))));call_db(_match_string,[_s,_i,_x,"/*"],[match_string]),call_db(_navigate_until_asterisk,[_s,_x,_y,_info,_info2],[navigate_until_asterisk]),get_(_string,"at",T70),_T69 = T70,call_db(_T69,[_s,_y,_c1],[T69]),call_db(_match_string,[_s,_y,_i2,"*/"],[match_string]),!))). % navigate_until_asterisk lexer3_navigate_until_asterisk(_s,_i,_i2,_info,_info2,_upvals):-_upvals=[_string],(_info = fc_Info(_line,_col),get_(_string,"at",T64),_T63 = T64,call_db(_T63,[_s,_i,_c],[T63]),(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(lexer3_navigate_until_asterisk(_s,_i+1.0,_i2,_info1,_info2),_upvals))))). % navigate_whitespace lexer3_navigate_whitespace(_s,_i,_i2,_info,_info2,_upvals):-_upvals=[_navigate_ws2,_navigate_ws2,_whitespace,_string],(get_(_string,"at",T62),_T61 = T62,call_db(_T61,[_s,_i,_c],[T61]),call_db(_whitespace,[_c],[whitespace]),_info = fc_Info(_line,_col),(if_(_c = "\n",(call_db(_navigate_ws2,[_s,_i+1.0,_i2,_line+1.0,0.0,_info2],[navigate_ws2])),(call_db(_navigate_ws2,[_s,_i+1.0,_i2,_line,_col,_info2],[navigate_ws2]))))). % navigate_ws2 lexer3_navigate_ws2(_s,_i,_i2,_line,_col,_info2,_upvals):-_upvals=[_whitespace,_string],((((get_(_string,"at",T60),_T59 = T60,call_db(_T59,[_s,_i,_c],[T59])),((if_(_c = "\n",(call(lexer3_navigate_ws2(_s,_i+1.0,_i2,_line+1.0,1.0,_info2),_upvals)),(if_(_c = "\t",(call(lexer3_navigate_ws2(_s,_i+1.0,_i2,_line,_col+4.0,_info2),_upvals)),(if_(_c = "\r",(call(lexer3_navigate_ws2(_s,_i+1.0,_i2,_line,_col,_info2),_upvals)),(call_db(_whitespace,[_c],[whitespace]),call(lexer3_navigate_ws2(_s,_i+1.0,_i2,_line,_col+1.0,_info2),_upvals)))))))));_i2 = _i,_info2 = fc_Info(_line,_col)))). % parse_string lexer3_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_db(_T57,[_s,_i,_c],[T57]),call_db(_debug,[_c],[debug]),(((call_db(_double_quote,[_c],[double_quote])),(call_db(_parse_double_string,[_s,_j,_j2],[parse_double_string]),_i2 = _j2+1.0);call_db(_debug,["-"],[debug]),call_db(_single_quote,[_c],[single_quote]),call_db(_match_until,[_s,_j,_j2,_single_quote],[match_until]),_i2 = _j2+1.0))). % parse_double_string lexer3_parse_double_string(_s,_i,_i2,_upvals):-_upvals=[_slash,_double_quote,_string],(get_(_string,"at",T56),_T55 = T56,call_db(_T55,[_s,_i,_c],[T55]),(((call_db(_double_quote,[_c],[double_quote])),(_i = _i2);((call_db(_slash,[_c],[slash])),(call(lexer3_parse_double_string(_s,_i+2.0,_i2),_upvals));call(lexer3_parse_double_string(_s,_i+1.0,_i2),_upvals))))). % match_whitespace lexer3_match_whitespace(_s,_i,_i2,_upvals):-_upvals=[_match_some,_whitespace],(call_db(_match_some,[_s,_i,_i2,_whitespace],[match_some])). % match_list lexer3_match_list(_l,_s,_z,_upvals):-_upvals=[],(_l = [_head|_tail],(if_(_head = _s,(_z = _s),(call(lexer3_match_list(_tail,_s,_z),_upvals))))). % match_string lexer3_match_string(_s,_i,_i2,_str,_upvals):-_upvals=[_string,_string],(get_(_string,"size",T52),_T51 = T52,call_db(_T51,[_str,_size1],[T51]),def(_i),_i2 = _i+_size1,get_(_string,"slice",T54),_T53 = T54,call_db(_T53,[_s,_i,_i2,_str2],[T53]),def(_i2),_str2 = _str). % match_until lexer3_match_until(_s,_i,_i2,_f,_upvals):-_upvals=[_string,_string],((((true),(get_(_string,"at",T50),_T49 = T50,call_db(_T49,[_s,_i,_c],[T49]),call_db(_f,[_c],[f]),_i = _i2);call(lexer3_match_until(_s,_i+1.0,_i2,_f),_upvals)))). % match_any lexer3_match_any(_s,_i,_i2,_f,_upvals):-_upvals=[_string,_string],((((true),(get_(_string,"at",T46),_T45 = T46,call_db(_T45,[_s,_i,_c],[T45]),call_db(_f,[_c],[f]),call(lexer3_match_any(_s,_i+1.0,_i2,_f),_upvals));_i = _i2))). % match_one lexer3_match_one(_s,_i,_i2,_f,_upvals):-_upvals=[_string],(_i2 = _i+1.0,get_(_string,"at",T42),_T41 = T42,call_db(_T41,[_s,_i,_c],[T41]),call_db(_f,[_c],[f])). % match_some lexer3_match_some(_s,_i,_i2,_f,_upvals):-_upvals=[_match_rel2,_string],(get_(_string,"at",T40),_T39 = T40,call_db(_T39,[_s,_i,_c],[T39]),call_db(_f,[_c],[f]),call_db(_match_rel2,[_s,_i+1.0,_i2,_f],[match_rel2])). % match_rel2 lexer3_match_rel2(_s,_i,_i2,_f,_upvals):-_upvals=[_string],((((true),(get_(_string,"at",T38),_T37 = T38,call_db(_T37,[_s,_i,_c],[T37]),call_db(_f,[_c],[f]),call(lexer3_match_rel2(_s,_i+1.0,_i2,_f),_upvals));_i = _i2))). % whitespace lexer3_whitespace(_c,_upvals):-_upvals=[],(_c = " ";_c = "\t";_c = "\n";_c = "\r"). % tab lexer3_tab(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T36),_T35 = T36,call_db(_T35,[_c,9.0],[T35])). % newline2 lexer3_newline2(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T34),_T33 = T34,call_db(_T33,[_c,13.0],[T33])). % newline lexer3_newline(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T32),_T31 = T32,call_db(_T31,[_c,10.0],[T31])). % slash lexer3_slash(_c,_upvals):-_upvals=[_string],(get_(_string,"code",T30),_T29 = T30,call_db(_T29,[_c,92.0],[T29])). % endline lexer3_endline(_c,_upvals):-_upvals=[],(_c = "\n"). % quote lexer3_quote(_c,_upvals):-_upvals=[_double_quote,_single_quote],(call_db(_single_quote,[_c],[single_quote]);call_db(_double_quote,[_c],[double_quote])). % double_quote lexer3_double_quote(_c,_upvals):-_upvals=[],(_c = "\""). % single_quote lexer3_single_quote(_c,_upvals):-_upvals=[_string,_string],(get_(_string,"code",T26),_T25 = T26,call_db(_T25,[_c,39.0],[T25]),get_(_string,"code",T28),_T27 = T28,call_db(_T27,[_c,39.0],[T27])). % letter2 lexer3_letter2(_c,_upvals):-_upvals=[_string,_string,_string,_string,_string,_string],((((true),(get_(_string,"lessOrEqual",T18),_T17 = T18,call_db(_T17,[_c,"z"],[T17]),get_(_string,"lessOrEqual",T20),_T19 = T20,call_db(_T19,["a",_c],[T19]));(get_(_string,"lessOrEqual",T22),_T21 = T22,call_db(_T21,[_c,"Z"],[T21]),get_(_string,"lessOrEqual",T24),_T23 = T24,call_db(_T23,["A",_c],[T23]);_c = "_")))). % letter lexer3_letter(_c,_upvals):-_upvals=[_string,_string,_string,_string],(get_(_string,"lessOrEqual",T6),_T5 = T6,call_db(_T5,[_c,"z"],[T5]),get_(_string,"lessOrEqual",T8),_T7 = T8,call_db(_T7,["a",_c],[T7]);get_(_string,"lessOrEqual",T10),_T9 = T10,call_db(_T9,[_c,"Z"],[T9]),get_(_string,"lessOrEqual",T12),_T11 = T12,call_db(_T11,["A",_c],[T11])). % digit lexer3_digit(_c,_upvals):-_upvals=[_string,_string],(get_(_string,"lessOrEqual",T2),_T1 = T2,call_db(_T1,[_c,"9"],[T1]),get_(_string,"lessOrEqual",T4),_T3 = T4,call_db(_T3,["0",_c],[T3])). % debug lexer3_debug(_s,_upvals):-_upvals=[],(true). % main lexer3(X):-nb_setval(call,0),_debug = clos([],lexer3_debug),creq("string",_string),creq("list",_list),creq("io",_io),_digit = clos([_string,_string],lexer3_digit),_letter = clos([_string,_string,_string,_string],lexer3_letter),_letter2 = clos([_string,_string,_string,_string,_string,_string],lexer3_letter2),_single_quote = clos([_string,_string],lexer3_single_quote),_double_quote = clos([],lexer3_double_quote),_quote = clos([_double_quote,_single_quote],lexer3_quote),_endline = clos([],lexer3_endline),_slash = clos([_string],lexer3_slash),_newline = clos([_string],lexer3_newline),_newline2 = clos([_string],lexer3_newline2),_tab = clos([_string],lexer3_tab),_whitespace = clos([],lexer3_whitespace),_match_rel2 = clos([_string],lexer3_match_rel2),_match_some = clos([_match_rel2,_string],lexer3_match_some),_match_one = clos([_string],lexer3_match_one),_match_any = clos([_string,_string],lexer3_match_any),_match_until = clos([_string,_string],lexer3_match_until),_match_string = clos([_string,_string],lexer3_match_string),_match_list = clos([],lexer3_match_list),_match_whitespace = clos([_match_some,_whitespace],lexer3_match_whitespace),_parse_double_string = clos([_slash,_double_quote,_string],lexer3_parse_double_string),_parse_string = clos([_match_until,_single_quote,_single_quote,_debug,_parse_double_string,_double_quote,_debug,_string],lexer3_parse_string),_navigate_ws2 = clos([_whitespace,_string],lexer3_navigate_ws2),_navigate_whitespace = clos([_navigate_ws2,_navigate_ws2,_whitespace,_string],lexer3_navigate_whitespace),_navigate_until_asterisk = clos([_string],lexer3_navigate_until_asterisk),_navigate_comment = clos([_match_string,_string,_navigate_until_asterisk,_match_string,_string,_string,_match_string],lexer3_navigate_comment),_parse_number = clos([_match_some,_digit,_match_some,_digit,_match_string,_match_some,_digit,_debug],lexer3_parse_number),_parse_id = clos([_match_any,_digit,_match_some,_letter2],lexer3_parse_id),_run_tk = clos([],lexer3_run_tk),_keywords = clos([_list],lexer3_keywords),_step5 = clos([_match_one,_single_quote,_match_list,_match_list,_string,_match_list,_string],lexer3_step5),_step_ = clos([_step5,_parse_number,_parse_string,_parse_string],lexer3_step_),_step1 = clos([_debug,_step_,_keywords,_list,_debug,_string,_parse_id,_letter2,_match_list,_debug,_string,_navigate_comment,_navigate_whitespace,_debug],lexer3_step1),_run2 = clos([_debug,_string,_debug,_run_tk,_string,_string,_step1,_run_tk,_string,_string,_step1],lexer3_run2),_run_lx = clos([_run2],lexer3_run_lx),_test = clos([],lexer3_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=",get_(_io,"readFile",T97),_T96 = T97,call_db(_T96,["list-t.co",_s],[T96]),call_db(_run_lx,[_s,_z],[run_lx]),writeln_(_z).