% Any % % module % run parser3_run(_s,_l1,_upvals):-_upvals=[_run2,_debug,_debug,_ws,_debug,_lexer,_debug],(call_cl(_debug,["lexer..."]),get_(_lexer,"run",T36),_T35 = T36,call_cl(_T35,[_s,_l]),!,call_cl(_debug,["whitespace..."]),get_(_ws,"run",T38),_T37 = T38,call_cl(_T37,[_l,_l2]),call_cl(_debug,[_l2]),!,call_cl(_debug,["parser..."]),call_cl(_run2,[_l2,_l1]),!). % db_token parser3_db_token(_l,_upvals):-_upvals=[_debug,_list,_list,_each,_list],(get_(_list,"map",T29),_T28 = T29,call_cl(_T28,[_l,_each,_l3]),writeln_(_l3),get_(_list,"reverse",T31),_T30 = T31,call_cl(_T30,[_l3,_l4]),writeln_(_l4),get_(_list,"join",T33),_T32 = T33,call_cl(_T32,[_l3," ",_s2]),writeln_(_s2),call_cl(_debug,[""]),str(_s2,T34),writeln_(T34)). % each parser3_each(_e,_e2,_upvals):-_upvals=[],(_e = fc_Token(_tk,_,_),_e2 = _tk). % add parser3_add(_x,_y,_z,_upvals):-_upvals=[],(add(_x,_y,_z)). % run_parser parser3_run_parser(_l1,_l,_upvals):-_upvals=[_run2],(call_cl(_run2,[_l1,_l])). % run_lexer parser3_run_lexer(_s,_l,_upvals):-_upvals=[_ws,_debug,_lexer,_debug],(call_cl(_debug,["lexer..."]),get_(_lexer,"run",T25),_T24 = T25,call_cl(_T24,[_s,_l]),!,call_cl(_debug,["whitespace..."]),get_(_ws,"run",T27),_T26 = T27,call_cl(_T26,[_l,_l2]),!). % run2 parser3_run2(_l,_code,_upvals):-_upvals=[_custom_throw,_debug,_custom_throw,_parse_body],(call_cl(_parse_body,[_l,_tail,_code]),((_tail = '[|]'(fc_Token("EOF",_,_),[]),true);(dif(_tail,'[|]'(fc_Token("EOF",_,_),[])),((_tail = [_t|[_t2|_]],_t2 = fc_Token(_,_,_info),call_cl(_custom_throw,["parser error1",_info]));(dif(_tail,[_t|[_t2|_]]),_tail = '[|]'(_t,_),call_cl(_debug,[fc_F2(_t)]),_t = fc_Token(_,_,_info),call_cl(_custom_throw,["parser error2",_info])))))). % parse_body parser3_parse_body(_l,_tail,_code,_upvals):-_upvals=[_custom_throw,_debug,_parse_body2,_parse_call],(((call_cl(_parse_call,[_l,_l2,_s1]))->(call_cl(_parse_body2,[_l2,_tail,_s1,_code]));(_l = '[|]'(_t,_),call_cl(_debug,[fc_F(_t)]),_t = fc_Token(_,_,_info),call_cl(_custom_throw,["parser error",_info])))). % parse_exp2 parser3_parse_exp2(_l,_tail,_f,_upvals):-_upvals=[_c2,_id_exp,_parse_type],((((call_cl(_parse_type,[_l,_,"id"])),(call_cl(_id_exp,[_l,_tail,_f]));call_cl(_c2,[_l,_tail,_f])))). % parse_exp3 parser3_parse_exp3(_l,_tail,_f,_upvals):-_upvals=[_c2,_debug,_id_exp2,_debug],((((_l = '[|]'(fc_Token(_name,"id",_),_l2)),(call_cl(_debug,['[|]'("token",'[|]'(_name,[]))]),call_cl(_id_exp2,[_l,_tail,_f]));call_cl(_debug,['[|]'("non-id",'[|]'(_name,[]))]),call_cl(_c2,[_l,_tail,_f])))). % parse_obj_get__ parser3_parse_obj_get__(_l,_tail,_f,_upvals):-_upvals=[_parse_exp],(_l = '[|]'(fc_Token(_a,"id",_),'[|]'(fc_Token(_,"[",_),_l2)),call_cl(_parse_exp,[_l2,_l3,_f1]),_l3 = '[|]'(fc_Token(_,"]",_),_tail),_f = fc_ObjGet2(_a,_f1)). % parse_obj_get_ parser3_parse_obj_get_(_l,_tail,_f,_upvals):-_upvals=[_parse_exp],(_l = '[|]'(fc_Token(_a,"id",_),'[|]'(fc_Token(_,".",_),_l2)),call_cl(_parse_exp,[_l2,_l3,_f1]),_l3 = '[|]'(fc_Token(_,"]",_),_tail),_f = fc_ObjGet(_a,_f1)). % info2 parser3_info2(_l,_t2,_upvals):-_upvals=[],(writeln_('[|]'(_l,'[|]'(_t2,[]))),((_l = '[|]'(_t,_tail),_t = fc_Token(_,"connective",_))->(call(parser3_info2(_tail,_t2),_upvals));((_l = [])->(throw("could not get line"));(_l = '[|]'(_t,_),_t = _t2)))). % parse_body2 parser3_parse_body2(_l2,_tail,_s1,_code,_upvals):-_upvals=[_parse_body,_debug,_get_line,_get_line],(((_l2 = '[|]'(fc_Token(_conn,"connective",_),_l3),((_conn = "and",call_cl(_get_line,[_l2,_i1]),call_cl(_get_line,[_l3,_i2]),call_cl(_debug,['[|]'(_i1,'[|]'(_i2,[]))]),_code = fc_And(_s1,_s2,fc_Tuple(_i2,_i2)));(dif(_conn,"and"),(_conn = "or"),(_code = fc_Or(_s1,_s2)))),call_cl(_parse_body,[_l3,_tail,_s2]));(dif(_l2,'[|]'(fc_Token(_conn,"connective",_),_l3)),_l2 = _tail,_s1 = _code))). % parse_call parser3_parse_call(_l,_tail,_code,_upvals):-_upvals=[_parse_declaration,_parse_struct3,_parse_struct,_parse_definition,_parse_host,_parse_obj_pred,_parse_pred,_parse_inequality,_parse_neq,_parse_eq,_parse_all,_parse_once,_parse_case,_parse_if,_parse_atom,_parse_false,_parse_true],(call_cl(_parse_true,[_l,_tail,_code]);call_cl(_parse_false,[_l,_tail,_code]);call_cl(_parse_atom,[_l,_tail,_code]);call_cl(_parse_if,[_l,_tail,_code]);call_cl(_parse_case,[_l,_tail,_code]);call_cl(_parse_once,[_l,_tail,_code]);call_cl(_parse_all,[_l,_tail,_code]);call_cl(_parse_eq,[_l,_tail,_code]);call_cl(_parse_neq,[_l,_tail,_code]);call_cl(_parse_inequality,[_l,_tail,_code]);call_cl(_parse_pred,[_l,_tail,_code]);call_cl(_parse_obj_pred,[_l,_tail,_code]);call_cl(_parse_host,[_l,_tail,_code]);call_cl(_parse_definition,[_l,_tail,_code]);call_cl(_parse_struct,[_l,_tail,_code]);call_cl(_parse_struct3,[_l,_tail,_code]);call_cl(_parse_declaration,[_l,_tail,_code])). % parse_definition parser3_parse_definition(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_parse_args],(_l = '[|]'(fc_Token(_,_mode,_),'[|]'(fc_Token(_name,"id",_),'[|]'(fc_Token(_,"(",_),_l2))),((_mode = "rel",_f = fc_Rel(_name,_args,_body));(dif(_mode,"rel"),(_mode = "fun",_f = fc_Rel(_name,_args,_body,_mode));(dif(_mode,"fun"),false))),call_cl(_parse_args,[_l2,_l3,_args]),_l3 = '[|]'(fc_Token(_,")",_),_l4),call_cl(_parse_body,[_l4,_l5,_body]),_l5 = '[|]'(fc_Token(_,";",_),_tail)). % parse_declaration parser3_parse_declaration(_l,_tail,_code,_upvals):-_upvals=[_parse_name],(call_cl(_parse_name,[_l,_tail,_type,_name]),_code = fc_Declaration(_name,_type)). % parse_pred parser3_parse_pred(_l,_tail,_code,_upvals):-_upvals=[_get_info,_get_info,_get_info,_get_info,_parse_args],(_l = [fc_Token(_a,"id",_)|[fc_Token(_,"(",_)|_l2]],call_cl(_parse_args,[_l2,_l3,_code_args]),_l3 = '[|]'(fc_Token(_,")",_),_tail),((_a = "functor",call_cl(_get_info,[_l,_T20]),_code = fc_Fact(_a,_code_args,_T20));(dif(_a,"functor"),(_a = "throw",call_cl(_get_info,[_l,_T21]),_code = fc_Fact(_a,_code_args,_T21));(dif(_a,"throw"),(_a = "cut",call_cl(_get_info,[_l,_T22]),_code = fc_Fact(_a,_code_args,_T22));(dif(_a,"cut"),call_cl(_get_info,[_l,_T23]),_code = fc_Pred(_a,_code_args,_T23)))))). % parse_struct parser3_parse_struct(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_parse_body,_get_info],(_l = '[|]'(fc_Token(_name,"id",_),'[|]'(fc_Token(_,"(",_),_l2)),((_name = "while",call_cl(_get_info,[_l,_T19]),_f = fc_Stm(_name,_body1,_body,_T19));(dif(_name,"while"),false)),call_cl(_parse_body,[_l2,_l3,_body1]),_l3 = '[|]'(fc_Token(_,")",_),_l4),call_cl(_parse_body,[_l4,_l5,_body]),_l5 = '[|]'(fc_Token(_,";",_),_tail)). % parse_struct3 parser3_parse_struct3(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_debug,_parse_body,_parse_body,_parse_body,_get_info,_debug],(_l = '[|]'(fc_Token(_name,"id",_),'[|]'(fc_Token(_,"(",_),_l2)),call_cl(_debug,["st3"]),((_name = "for",call_cl(_get_info,[_l,_T18]),_f = fc_Stm(_name,'[|]'(_body1,'[|]'(_body2,'[|]'(_body3,[]))),_body,_T18));(dif(_name,"for"),false)),call_cl(_parse_body,[_l2,_l3,_body1]),_l3 = '[|]'(fc_Token(_,";",_),_l4),call_cl(_parse_body,[_l4,_l5,_body2]),_l5 = '[|]'(fc_Token(_,";",_),_l6),call_cl(_parse_body,[_l6,_l7,_body3]),_l7 = '[|]'(fc_Token(_,";",_),'[|]'(fc_Token(_,")",_),_l8)),call_cl(_debug,["st3-for"]),call_cl(_parse_body,[_l8,_l9,_body]),_l9 = '[|]'(fc_Token(_,";",_),_tail)). % parse_stm parser3_parse_stm(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_body,_parse_args],(_l = '[|]'(fc_Token(_name,"id",_),'[|]'(fc_Token(_,"(",_),_l2)),_name = "functor",call_cl(_parse_args,[_l2,_l3,_args]),_l3 = '[|]'(fc_Token(_,")",_),_l4),call_cl(_parse_body,[_l4,_l5,_body]),_l5 = '[|]'(fc_Token(_,";",_),_tail),call_cl(_get_info,[_l,_T17]),_f = fc_Stm(_name,_args,_body,_T17)). % parse_inequality parser3_parse_inequality(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_exp,_parse_type,_parse_exp],(call_cl(_parse_exp,[_l,_l2,_a]),call_cl(_parse_type,[_l2,_l3,_op]),(((_op = "<";_op = ">";_op = "<=";_op = ">="),(call_cl(_parse_exp,[_l3,_tail,_b]),call_cl(_get_info,[_l,_T16]),_f = fc_Inequality(_a,_b,_op,_T16));false))). % parse_all parser3_parse_all(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_body,_parse_body],(_l = '[|]'(fc_Token(_name,"id",_),'[|]'(fc_Token(_,"(",_),_l2)),_name = "forall",call_cl(_parse_body,[_l2,_l3,_body1]),_l3 = '[|]'(fc_Token(_,")",_),_l4),call_cl(_parse_body,[_l4,_l5,_body]),_l5 = '[|]'(fc_Token(_,";",_),_tail),call_cl(_get_info,[_l,_T15]),_f = fc_Stm2(_name,_body1,_body2,_T15)). % parse_once parser3_parse_once(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_call],(_l = '[|]'(fc_Token(_name,_name,_),_l2),((_name = "once",true);(dif(_name,"once"),_name = "not")),call_cl(_parse_call,[_l2,_tail,_body]),call_cl(_get_info,[_l,_T14]),_f = fc_Stm(_name,[],_body,_T14)). % parse_false parser3_parse_false(_l,_tail,_f,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_a,"false",_),_tail),_f = fc([],"False")). % parse_atom parser3_parse_atom(_l,_tail,_f,_upvals):-_upvals=[_get_info],(_l = '[|]'(fc_Token("cut","id",_),_tail),call_cl(_get_info,[_l,_T13]),_f = fc_Fact(_a,[],_T13)). % parse_true parser3_parse_true(_l,_tail,_f,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_a,"true",_),_tail),_f = fc([],"True")). % parse_neq parser3_parse_neq(_l,_tail,_f,_upvals):-_upvals=[_parse_exp,_parse_type,_parse_exp],(call_cl(_parse_exp,[_l,_l2,_a]),call_cl(_parse_type,[_l2,_l3,"!="]),call_cl(_parse_exp,[_l3,_tail,_b]),_f = fc_Neq(_a,_b)). % parse_eq parser3_parse_eq(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_exp,_parse_type,_parse_exp],(call_cl(_parse_exp,[_l,_l2,_a]),call_cl(_parse_type,[_l2,_l3,"="]),call_cl(_parse_exp,[_l3,_tail,_b]),call_cl(_get_info,[_l,_info]),_f = fc_Eq(_a,_b,_info)). % parse_case parser3_parse_case(_l,_tail,_f,_upvals):-_upvals=[_debug,_parse_case1,_parse_body,_parse_case2],(call_cl(_parse_case2,[_l,_l1]),call_cl(_parse_body,[_l1,_l2,_f1]),call_cl(_parse_case1,[_l2,_l3,_c_]),_l3 = '[|]'(fc_Token(_,";",_),_tail),_f = fc_Cond(fc([],"True"),_f1,_c_),call_cl(_debug,[_f])). % parse_case1 parser3_parse_case1(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_parse_case2,_parse_body,_parse_case2],((((true),(call_cl(_parse_case2,[_l,_l1]),call_cl(_parse_body,[_l1,_l2,_f1]),call(parser3_parse_case1(_l2,_tail,_c_),_upvals),_f = '[|]'(_f1,_c_));_f = [],_tail = _l))). % parse_case2 parser3_parse_case2(_l,_l1,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_,"case",_),_l1);_l = '[|]'(fc_Token(_,"cond",_),_l1)). % parse_if parser3_parse_if(_l,_tail,_f,_upvals):-_upvals=[_debug,_parse_elseifs,_debug,_parse_body,_parse_body,_debug],(((_l = [fc_Token(_,"if",_)|_l0],_f = fc_Cond(_fbody1,_fbody2,_c_,"if"));(dif(_l,[fc_Token(_,"if",_)|_l0]),(_l = [fc_Token(_,"when",_)|_l0],_f = fc_Cond(_fbody1,_fbody2,_c_,"when"));(dif(_l,[fc_Token(_,"when",_)|_l0]),_l = [fc_Token(_,"choose",_)|_l0],_f = fc_SoftCut(_fbody1,_fbody2,_c_)))),_l0 = [fc_Token(_,"(",_)|_l2],call_cl(_debug,["if"]),call_cl(_parse_body,[_l2,_l3,_fbody1]),_l3 = [fc_Token(_,")",_)|_l4],call_cl(_parse_body,[_l4,_l5,_fbody2]),call_cl(_debug,['[|]'("elseif",'[|]'(_fbody2,[]))]),call_cl(_parse_elseifs,[_l5,_l11,_c_]),_l11 = [fc_Token(_,";",_)|_tail],call_cl(_debug,['[|]'("end",[])])). % parse_elseifs parser3_parse_elseifs(_l,_tail,_c_,_upvals):-_upvals=[_parse_body,_parse_body,_parse_body,_parse_body,_parse_body],((((true),(_l = [fc_Token(_,"elseif",_)|[fc_Token(_,"(",_)|_l1]],call_cl(_parse_body,[_l1,_l2,_f1]),_l2 = [fc_Token(_,")",_)|_l3],call_cl(_parse_body,[_l3,_l4,_f2]),call(parser3_parse_elseifs(_l4,_tail,_c_2),_upvals),_c_ = [fc_Pair(_f1,_f2)|_c_2]);(_l = [fc_Token(_,"else",_)|_l10],call_cl(_parse_body,[_l10,_tail,_f1]),_c_ = '[|]'(_f1,[]);_c_ = [],_tail = _l)))). % parse_exp parser3_parse_exp(_l,_tail,_f,_upvals):-_upvals=[_fget,_parse_math2,_debug,_parse_exp2],(call_cl(_parse_exp2,[_l,_l2,_a]),call_cl(_debug,['[|]'("exp",'[|]'(_a,[]))]),call_cl(_parse_math2,[_l2,_tail,_a,_f2]),call_cl(_fget,[_f2,_f,_a,_f2])). % parse_math2 parser3_parse_math2(_l,_tail,_prev,_f,_upvals):-_upvals=[_fget,_get_info,_parse_exp2,_debug,_debug,_op_,_parse_type],(call_cl(_parse_type,[_l,_l2,_op]),((call_cl(_op_,[_op]))->(call_cl(_debug,['[|]'("op",'[|]'(_op,[]))]),call_cl(_debug,['[|]'("exp2",'[|]'(_b,[]))]),call_cl(_get_info,[_l,_T12]),call_cl(_parse_exp2,[_l2,_l4,_T11]),_fcur = fc_Op(_prev,_T11,_op,_T12),call(parser3_parse_math2(_l4,_tail,_fcur,_fnext),_upvals),call_cl(_fget,[_fnext,_f,_fcur,_fnext]));(_f = fc([],"None"),_tail = _l))). % op_ parser3_op_(_op,_upvals):-_upvals=[],(_op = "+";_op = "-";_op = "*";_op = "/"). % fget parser3_fget(_f2,_f,_a,_f2,_upvals):-_upvals=[],(((_f2 = fc([],"None"),_f = _a);(dif(_f2,fc([],"None")),_f = _f2))). % c2 parser3_c2(_l,_tail,_f,_upvals):-_upvals=[_parse_value,_parse_name,_debug,_parse_obj_get2,_parse_obj_get,_parse_type,_debug,_parse_exp,_parse_type,_parse_excl,_parse_length,_parse_lambda,_parse_table,_parse_array,_parse_list,_parse_list],((((true),(call_cl(_parse_list,[_l,_tail,_f]));(call_cl(_parse_array,[_l,_tail,_f]);(call_cl(_parse_table,[_l,_tail,_f]);(call_cl(_parse_lambda,[_l,_tail,_f]);(call_cl(_parse_length,[_l,_tail,_f]);(call_cl(_parse_excl,[_l,_tail,_f]);(call_cl(_parse_type,[_l,_l2,"("]),call_cl(_parse_exp,[_l2,_l3,_f1]),call_cl(_debug,[fc_Tuple(_f1,_f)]),_f = _f1,call_cl(_parse_type,[_l3,_tail,")"]);(call_cl(_parse_obj_get,[_l,_tail,_f]);(call_cl(_parse_obj_get2,[_l,_tail,_f]);(call_cl(_debug,["name-"]),call_cl(_parse_name,[_l,_tail,_type,_name]),_f = fc_Id(_name,_type);call_cl(_parse_value,[_l,_tail,_f]))))))))))))). % id_exp parser3_id_exp(_l,_tail,_f,_upvals):-_upvals=[_parse_host,_parse_obj_get2,_parse_obj_get,_parse_obj_pred,_parse_exp_call],(call_cl(_parse_exp_call,[_l,_tail,_f]);call_cl(_parse_obj_pred,[_l,_tail,_f]);call_cl(_parse_obj_get,[_l,_tail,_f]);call_cl(_parse_obj_get2,[_l,_tail,_f]);call_cl(_parse_host,[_l,_tail,_f])). % id_exp2 parser3_id_exp2(_l,_tail,_f,_upvals):-_upvals=[_parse_exp_call,_parse_obj_get2,_parse_obj_get],(call_cl(_parse_obj_get,[_l,_tail,_f]);call_cl(_parse_obj_get2,[_l,_tail,_f]);call_cl(_parse_exp_call,[_l,_tail,_f])). % parse_host2 parser3_parse_host2(_l,_tail,_f,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_a,"id",_),'[|]'(fc_Token(_,".",_),'[|]'(fc_Token(_b,"id",_),_tail))),_f = fc_ObjGet(_a,_b)). % parse_host parser3_parse_host(_l,_tail,_code,_upvals):-_upvals=[_parse_args,_parse_args],((((true),(_l = [fc_Token(_obj,"id",_)|[fc_Token(_,"::",_)|[fc_Token(_a,"id",_)|[fc_Token(_,"(",_)|_l2]]]],call_cl(_parse_args,[_l2,_l3,_code_args]),_l3 = '[|]'(fc_Token(_,")",_),_tail),_code = fc_Host(_obj,_a,_code_args));(_l = [fc_Token(_obj,"id",_)|[fc_Token(_,"::",_)|_l2]],_l2 = '[|]'(fc_Token(_str,"string",_),_tail),_code = fc_Host(_obj,_str);_l = '[|]'(fc_Token(_obj,"id",_),'[|]'(fc_Token(_,"::",_),_l2)),_l2 = '[|]'(fc_Token(_obj2,"id",_),_tail),_code = fc_Host(_obj,_obj2))))). % match_any parser3_match_any(_l,_l2,_f,_upvals):-_upvals=[],((((true),(call_cl(_f,[_l,_tail,_f2]),call(parser3_match_any(_tail,_l2,_f1),_upvals));_l = _l2))). % parse_length parser3_parse_length(_l,_tail,_code,_upvals):-_upvals=[_get_info,_parse_exp],(_l = '[|]'(fc_Token(_,"#",_),_l2),call_cl(_parse_exp,[_l2,_tail,_a]),call_cl(_get_info,[_l,_T10]),_code = fc_Size(_a,_T10)). % parse_excl parser3_parse_excl(_l,_tail,_code,_upvals):-_upvals=[],(_l = [fc_Token(_,"!",_)|[fc_Token(_a,"id",_)|_tail]],_code = fc_Mutable(_a)). % parse_value parser3_parse_value(_l,_tail,_f,_upvals):-_upvals=[],((((true),(_l = '[|]'(fc_Token(_a,"string",_),_tail),_f = fc_Str(_a));(_l = '[|]'(fc_Token(_,"-",_),'[|]'(fc_Token(_a,"number",_),_tail)),calc("-"+_a,T9),_f = fc_Num(T9);_l = '[|]'(fc_Token(_a,"number",_),_tail),_f = fc_Num(_a))))). % parse_name parser3_parse_name(_l,_tail,_type,_name,_upvals):-_upvals=[_name_list_to_type,_parse_name2],(call_cl(_parse_name2,[_l,_tail,_name_list,_name]),call_cl(_name_list_to_type,[_name_list,_type])). % parse_name2 parser3_parse_name2(_l,_tail,_type,_name,_upvals):-_upvals=[_debug,_debug],((((true),(_l = '[|]'(fc_Token(_a,"id",_),_l2),call(parser3_parse_name2(_l2,_tail,_type2,_name),_upvals),_type = '[|]'(_a,_type2),call_cl(_debug,['[|]'(_name,'[|]'(_type,[]))]));_l = '[|]'(fc_Token(_a,"id",_),_tail),_type = [],_name = _a))). % name_list_to_type parser3_name_list_to_type(_l,_l2,_upvals):-_upvals=[_name_list_to_type2],(((_l = [],_l2 = _l);(dif(_l,[]),(_l = '[|]'(_a,[]),_l2 = _l);(dif(_l,'[|]'(_a,[])),_l = [_a|_tail],call_cl(_name_list_to_type2,[_tail,_tail2]),_l2 = [_a|_tail2])))). % name_list_to_type2 parser3_name_list_to_type2(_l,_l2,_upvals):-_upvals=[],(((_l = '[|]'(_head,[]),_l2 = '[|]'('[|]'(_head,[]),[]));(dif(_l,'[|]'(_head,[])),_l = [_head|_tail],call(parser3_name_list_to_type2(_tail,_tail2),_upvals),_l2 = ['[|]'(_head,[])|_tail2]))). % parse_table parser3_parse_table(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_debug,_debug],(_l = [fc_Token(_,"{",_)|_l2],call_cl(_debug,["table"]),!,call_cl(_debug,[_l2]),((_l2 = '[|]'(fc_Token(_,"}",_),_tail),_f = fc_TTable(fc([],"True")));(dif(_l2,'[|]'(fc_Token(_,"}",_),_tail)),call_cl(_parse_body,[_l2,_l3,_args]),_l3 = [fc_Token(_,"}",_)|_tail],_f = fc_TTable(_args)))). % parse_lambda parser3_parse_lambda(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_parse_args],(_l = [fc_Token(_,"rel",_)|[fc_Token(_,"(",_)|_l2]],call_cl(_parse_args,[_l2,_l3,_args]),_l3 = [fc_Token(_,")",_)|_l4],call_cl(_parse_body,[_l4,_l5,_body]),_l5 = [fc_Token(_,";",_)|_tail],_f = fc_Rel(_args,_body)). % parse_array parser3_parse_array(_l,_tail,_f,_upvals):-_upvals=[_parse_args2],(_l = '[|]'(fc_Token(_,"{",_),_l2),call_cl(_parse_args2,[_l2,_l3,_args]),_l3 = '[|]'(fc_Token(_,"}",_),_tail),_f = fc_TArray(_args)). % parse_list parser3_parse_list(_l,_tail,_f,_upvals):-_upvals=[_parse_args2],(_l = '[|]'(fc_Token(_,"[",_),_l2),call_cl(_parse_args2,[_l2,_l3,_args]),_l3 = '[|]'(fc_Token(_,"]",_),_tail),_f = fc_TList(_args)). % parse_obj_pred parser3_parse_obj_pred(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_args],(_l = '[|]'(fc_Token(_obj,"id",_),'[|]'(fc_Token(_,".",_),'[|]'(fc_Token(_a,"id",_),'[|]'(fc_Token(_,"(",_),_l2)))),call_cl(_parse_args,[_l2,_l3,_code_args]),_l3 = '[|]'(fc_Token(_,")",_),_tail),call_cl(_get_info,[_l,_T8]),_f = fc_ObjPred(_obj,_a,_code_args,_T8)). % parse_exp_call parser3_parse_exp_call(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_args],(_l = '[|]'(fc_Token(_name,"id",_),'[|]'(fc_Token(_,"(",_),_l2)),call_cl(_parse_args,[_l2,_l3,_args]),_l3 = '[|]'(fc_Token(_,")",_),_tail),call_cl(_get_info,[_l,_T7]),_f = fc_Func(_name,_args,_T7)). % parse_obj_get2 parser3_parse_obj_get2(_l,_tail,_f,_upvals):-_upvals=[_parse_exp],(_l = '[|]'(fc_Token(_a,"id",_),'[|]'(fc_Token(_,"[",_),_l2)),call_cl(_parse_exp,[_l2,_l3,_f1]),_l3 = '[|]'(fc_Token(_,"]",_),_tail),_f = fc_ObjGet2(_a,_f1)). % parse_obj_get parser3_parse_obj_get(_l,_tail,_f,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_a,"id",_),'[|]'(fc_Token(_,".",_),'[|]'(fc_Token(_b,"id",_),_tail))),_f = fc_ObjGet(_a,_b)). % parse_args2 parser3_parse_args2(_l,_tail,_f,_upvals):-_upvals=[_parse_exp,_parse_exp,_parse_type,_parse_exp,_parse_exp,_parse_type,_parse_exp],((((true),(call_cl(_parse_exp,[_l,_l1,_f1]),call_cl(_parse_type,[_l1,_l2,_s]),((_s = "|",call_cl(_parse_exp,[_l2,_tail,_f2]),_f = '[|]'(_f1,'[|]'(fc_Tuple(_f2),[])));(dif(_s,"|"),(_s = ",",call(parser3_parse_args2(_l2,_tail,_f2),_upvals),_f = '[|]'(_f1,_f2));(dif(_s,","),false))));(call_cl(_parse_exp,[_l,_tail,_f1]),_f = '[|]'(_f1,[]);_f = [],_tail = _l)))). % parse_args parser3_parse_args(_l,_tail,_f,_upvals):-_upvals=[_parse_exp,_parse_type,_parse_exp,_parse_type,_parse_exp],((((true),(call_cl(_parse_exp,[_l,_l1,_f1]),call_cl(_parse_type,[_l1,_l2,","]),call(parser3_parse_args(_l2,_tail,_f2),_upvals),_f = '[|]'(_f1,_f2));(call_cl(_parse_exp,[_l,_tail,_f1]),_f = '[|]'(_f1,[]);_f = [],_tail = _l)))). % custom_throw parser3_custom_throw(_msg,_info,_upvals):-_upvals=[],(_info = fc_Info(_line,_col),writeln_(_info),calc("(line "+_line,T1),calc(T1+", col ",T2),calc(T2+_col,T3),calc(T3+") ",T4),calc(T4+_msg,T5),str(T5,T6),throw(T6)). % get_line parser3_get_line(_l,_info1,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_,_,_info),_),_info = fc_Info(_info1,_)). % get_info parser3_get_info(_l,_info,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_,_,_info),_)). % parse_type parser3_parse_type(_l,_tail,_type,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_,_type,_),_tail)). % debug parser3_debug(_e,_upvals):-_upvals=[],(true). % pause parser3_pause(_upvals):-_upvals=[],(read(_x)). % main parser3(X):-_pause = clos([],parser3_pause),_debug = clos([],parser3_debug),_parse_type = clos([],parser3_parse_type),_get_info = clos([],parser3_get_info),_get_line = clos([],parser3_get_line),_custom_throw = clos([],parser3_custom_throw),_parse_args = clos([_parse_exp,_parse_type,_parse_exp,_parse_type,_parse_exp],parser3_parse_args),_parse_args2 = clos([_parse_exp,_parse_exp,_parse_type,_parse_exp,_parse_exp,_parse_type,_parse_exp],parser3_parse_args2),_parse_obj_get = clos([],parser3_parse_obj_get),_parse_obj_get2 = clos([_parse_exp],parser3_parse_obj_get2),_parse_exp_call = clos([_get_info,_parse_args],parser3_parse_exp_call),_parse_obj_pred = clos([_get_info,_parse_args],parser3_parse_obj_pred),_parse_list = clos([_parse_args2],parser3_parse_list),_parse_array = clos([_parse_args2],parser3_parse_array),_parse_lambda = clos([_parse_body,_parse_args],parser3_parse_lambda),_parse_table = clos([_parse_body,_debug,_debug],parser3_parse_table),_name_list_to_type2 = clos([],parser3_name_list_to_type2),_name_list_to_type = clos([_name_list_to_type2],parser3_name_list_to_type),_parse_name2 = clos([_debug,_debug],parser3_parse_name2),_parse_name = clos([_name_list_to_type,_parse_name2],parser3_parse_name),_parse_value = clos([],parser3_parse_value),_parse_excl = clos([],parser3_parse_excl),_parse_length = clos([_get_info,_parse_exp],parser3_parse_length),_match_any = clos([],parser3_match_any),_parse_host = clos([_parse_args,_parse_args],parser3_parse_host),_parse_host2 = clos([],parser3_parse_host2),_id_exp2 = clos([_parse_exp_call,_parse_obj_get2,_parse_obj_get],parser3_id_exp2),_id_exp = clos([_parse_host,_parse_obj_get2,_parse_obj_get,_parse_obj_pred,_parse_exp_call],parser3_id_exp),_c2 = clos([_parse_value,_parse_name,_debug,_parse_obj_get2,_parse_obj_get,_parse_type,_debug,_parse_exp,_parse_type,_parse_excl,_parse_length,_parse_lambda,_parse_table,_parse_array,_parse_list,_parse_list],parser3_c2),_fget = clos([],parser3_fget),_op_ = clos([],parser3_op_),_parse_math2 = clos([_fget,_get_info,_parse_exp2,_debug,_debug,_op_,_parse_type],parser3_parse_math2),_parse_exp = clos([_fget,_parse_math2,_debug,_parse_exp2],parser3_parse_exp),_parse_elseifs = clos([_parse_body,_parse_body,_parse_body,_parse_body,_parse_body],parser3_parse_elseifs),_parse_if = clos([_debug,_parse_elseifs,_debug,_parse_body,_parse_body,_debug],parser3_parse_if),_parse_case2 = clos([],parser3_parse_case2),_parse_case1 = clos([_parse_body,_parse_case2,_parse_body,_parse_case2],parser3_parse_case1),_parse_case = clos([_debug,_parse_case1,_parse_body,_parse_case2],parser3_parse_case),_parse_eq = clos([_get_info,_parse_exp,_parse_type,_parse_exp],parser3_parse_eq),_parse_neq = clos([_parse_exp,_parse_type,_parse_exp],parser3_parse_neq),_parse_true = clos([],parser3_parse_true),_parse_atom = clos([_get_info],parser3_parse_atom),_parse_false = clos([],parser3_parse_false),_parse_once = clos([_get_info,_parse_call],parser3_parse_once),_parse_all = clos([_get_info,_parse_body,_parse_body],parser3_parse_all),_parse_inequality = clos([_get_info,_parse_exp,_parse_type,_parse_exp],parser3_parse_inequality),_parse_stm = clos([_get_info,_parse_body,_parse_args],parser3_parse_stm),_parse_struct3 = clos([_parse_body,_debug,_parse_body,_parse_body,_parse_body,_get_info,_debug],parser3_parse_struct3),_parse_struct = clos([_parse_body,_parse_body,_get_info],parser3_parse_struct),_parse_pred = clos([_get_info,_get_info,_get_info,_get_info,_parse_args],parser3_parse_pred),_parse_declaration = clos([_parse_name],parser3_parse_declaration),_parse_definition = clos([_parse_body,_parse_args],parser3_parse_definition),_parse_call = clos([_parse_declaration,_parse_struct3,_parse_struct,_parse_definition,_parse_host,_parse_obj_pred,_parse_pred,_parse_inequality,_parse_neq,_parse_eq,_parse_all,_parse_once,_parse_case,_parse_if,_parse_atom,_parse_false,_parse_true],parser3_parse_call),_parse_body2 = clos([_parse_body,_debug,_get_line,_get_line],parser3_parse_body2),_info2 = clos([],parser3_info2),_parse_obj_get_ = clos([_parse_exp],parser3_parse_obj_get_),_parse_obj_get__ = clos([_parse_exp],parser3_parse_obj_get__),_parse_exp3 = clos([_c2,_debug,_id_exp2,_debug],parser3_parse_exp3),_parse_exp2 = clos([_c2,_id_exp,_parse_type],parser3_parse_exp2),_parse_body = clos([_custom_throw,_debug,_parse_body2,_parse_call],parser3_parse_body),creq("lexer2",_lexer),creq("ws2",_ws),_run2 = clos([_custom_throw,_debug,_custom_throw,_parse_body],parser3_run2),_run_lexer = clos([_ws,_debug,_lexer,_debug],parser3_run_lexer),_run_parser = clos([_run2],parser3_run_parser),creq("list",_list),_add = clos([],parser3_add),_each = clos([],parser3_each),_db_token = clos([_debug,_list,_list,_each,_list],parser3_db_token),_run = clos([_run2,_debug,_debug,_ws,_debug,_lexer,_debug],parser3_run),new(T39),set_(T39,"parse_exp",_parse_exp,T41),set_(T41,"parse_call",_parse_call,T42),set_(T42,"parse_body",_parse_body,T43),set_(T43,"run",_run,T44),set_(T44,"run_ws",_run2,T45),set_(T45,"lexer",_run_lexer,T46),set_(T46,"run_parser",_run2,T40),_t2 = T40,X=_t2,creq("io",_io),_s = "t[0][1]",writeln_(_t),clock(_t3),call_cl(_run,[_s,_l]),clock(_t4),writeln_('[|]'("l",'[|]'(_l,[]))),{_t4-_t3=T47},{X1 = T47},writeln_(X1).