% module :-style_check(-singleton),style_check(-no_effect),ensure_loaded("core3"). % run parser2_run(_s,_l1,_upvals):-_upvals=[_run2,_debug,_debug,_ws,_debug,_lexer,_debug],(call_cl(_debug,["lexer..."]),get_(_lexer,"run",T13),_T12=T13,call_cl(_T12,[_s,_l]),!,call_cl(_debug,["whitespace..."]),get_(_ws,"run",T15),_T14=T15,call_cl(_T14,[_l,_l2]),call_cl(_debug,[_l2]),!,call_cl(_debug,["parser..."]),call_cl(_run2,[_l2,_l1])). % db_token parser2_db_token(_l,_upvals):-_upvals=[_debug,_list,_list,_each,_list],(get_(_list,"map",T6),_T5=T6,call_cl(_T5,[_l,_each,_l3]),get_(_list,"reverse",T8),_T7=T8,call_cl(_T7,[_l3,_l4]),get_(_list,"join",T10),_T9=T10,call_cl(_T9,[_l3," ",_s2]),call_cl(_debug,[""]),str(_s2,T11),writeln_(T11)). % each parser2_each(_e,_e2,_upvals):-_upvals=[],(_e=fc_Token(_tk,_,_),_e2=_tk). % add parser2_add(_x,_y,_z,_upvals):-_upvals=[],(add(_x,_y,_z)). % run_parser parser2_run_parser(_l1,_l,_upvals):-_upvals=[_run2],(call_cl(_run2,[_l1,_l])). % run_lexer parser2_run_lexer(_s,_l,_upvals):-_upvals=[_ws,_debug,_lexer,_debug],(call_cl(_debug,["lexer..."]),get_(_lexer,"run",T2),_T1=T2,call_cl(_T1,[_s,_l]),!,call_cl(_debug,["whitespace..."]),get_(_ws,"run",T4),_T3=T4,call_cl(_T3,[_l,_l2]),!). % run2 parser2_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 parser2_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])))). % info2 parser2_info2(_l,_t2,_upvals):-_upvals=[],(writeln_('[|]'(_l,'[|]'(_t2,[]))),((_l='[|]'(_t,_tail),_t=fc_Token(_,"connective",_))->(call(parser2_info2(_tail,_t2),_upvals));((_l=[])->(throw("could not get line"));(_l='[|]'(_t,_),_t=_t2)))). % parse_body2 parser2_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 parser2_parse_call(_l,_tail,_code,_upvals):-_upvals=[_parse_declaration,_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_declaration,[_l,_tail,_code])). % parse_definition parser2_parse_definition(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_parse_args],(_l='[|]'(fc_Token(_,"rel",_),'[|]'(fc_Token(_name,"id",_),'[|]'(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(_name,_args,_body)). % parse_declaration parser2_parse_declaration(_l,_tail,_code,_upvals):-_upvals=[_parse_name],(call_cl(_parse_name,[_l,_tail,_type,_name]),_code=fc_Declaration(_name,_type)). % parse_host parser2_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)))). % parse_pred parser2_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,X10]),_code=fc_Fact(_a,_code_args,X10));(dif(_a,"functor"),(_a="throw",call_cl(_get_info,[_l,X11]),_code=fc_Fact(_a,_code_args,X11));(dif(_a,"throw"),(_a="cut",call_cl(_get_info,[_l,X12]),_code=fc_Fact(_a,_code_args,X12));(dif(_a,"cut"),call_cl(_get_info,[_l,X13]),_code=fc_Pred(_a,_code_args,X13)))))). % parse_stm parser2_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,X9]),_f=fc_Stm(_name,_args,_body,X9)). % parse_inequality parser2_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="<";_op="!=",call_cl(_parse_exp,[_l3,_tail,_b]),call_cl(_get_info,[_l,X8]),_f=fc_Inequality(_a,_b,_op,X8);false))). % parse_all parser2_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,X7]),_f=fc_Stm2(_name,_body1,_body2,X7)). % parse_once parser2_parse_once(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_body],(_l='[|]'(fc_Token(_name,_name,_),_l2),((_name="once",true);(dif(_name,"once"),_name="not")),call_cl(_parse_body,[_l2,_tail,_body]),call_cl(_get_info,[_l,X6]),_f=fc_Stm(_name,[],_body,X6)). % parse_false parser2_parse_false(_l,_tail,_f,_upvals):-_upvals=[],(_l='[|]'(fc_Token(_a,"false",_),_tail),_f=fc([],"False")). % parse_atom parser2_parse_atom(_l,_tail,_f,_upvals):-_upvals=[_get_info],(_l='[|]'(fc_Token("cut","id",_),_tail),call_cl(_get_info,[_l,X5]),_f=fc_Fact(_a,[],X5)). % parse_true parser2_parse_true(_l,_tail,_f,_upvals):-_upvals=[],(_l='[|]'(fc_Token(_a,"true",_),_tail),_f=fc([],"True")). % parse_neq parser2_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 parser2_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 parser2_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 parser2_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(parser2_parse_case1(_l2,_tail,_c_),_upvals),_f='[|]'(_f1,_c_);_f=[],_tail=_l))). % parse_case2 parser2_parse_case2(_l,_l1,_upvals):-_upvals=[],(_l='[|]'(fc_Token(_,"case",_),_l1)). % parse_if parser2_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 parser2_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(parser2_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 parser2_parse_exp(_l,_tail,_f,_upvals):-_upvals=[_parse_math1],(call_cl(_parse_math1,[_l,_tail,_f]),!). % parse_math1 parser2_parse_math1(_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 parser2_parse_math2(_l,_tail,_prev,_f,_upvals):-_upvals=[_fget,_get_info,_debug,_parse_exp2,_debug,_op_,_parse_string],(call_cl(_parse_string,[_l,_l2,_op]),((call_cl(_op_,[_op]))->(call_cl(_debug,['[|]'("op",'[|]'(_op,[]))]),call_cl(_parse_exp2,[_l2,_l4,_b]),call_cl(_debug,['[|]'("exp2",'[|]'(_b,[]))]),call_cl(_get_info,[_l,X4]),_fcur=fc_Op(_prev,_b,_op,X4),call(parser2_parse_math2(_l4,_tail,_fcur,_fnext),_upvals),call_cl(_fget,[_fnext,_f,_fcur,_fnext]));(_f=fc([],"None"),_tail=_l))). % op_ parser2_op_(_op,_upvals):-_upvals=[],(_op="+";_op="-";_op="*";_op="/"). % fget parser2_fget(_f2,_f,_a,_f2,_upvals):-_upvals=[],(((_f2=fc([],"None"),_f=_a);(dif(_f2,fc([],"None")),_f=_f2))). % parse_exp2 parser2_parse_exp2(_l,_tail,_f,_upvals):-_upvals=[_c2,_c1,__type],(((call_cl(__type,[_l,"id"]),call_cl(_c1,[_l,_tail,_f]);call_cl(_c2,[_l,_tail,_f])))). % c2 parser2_c2(_l,_tail,_f,_upvals):-_upvals=[_parse_value,_parse_string,_debug,_parse_exp,_parse_string,_parse_excl,_parse_length,_parse_name,_parse_lambda,_debug,_parse_table,_parse_list,_parse_list],(((true,call_cl(_parse_list,[_l,_tail,_f]);(call_cl(_parse_table,[_l,_tail,_f]),call_cl(_debug,[_f]),!;(call_cl(_parse_lambda,[_l,_tail,_f]);(call_cl(_parse_name,[_l,_tail,_type,_name]),_f=fc_Id(_name,_type);(call_cl(_parse_length,[_l,_tail,_f]);(call_cl(_parse_excl,[_l,_tail,_f]);(call_cl(_parse_string,[_l,_l2,"("]),call_cl(_parse_exp,[_l2,_l3,_f1]),call_cl(_debug,[fc_Tuple(_f1,_f)]),_f=_f1,call_cl(_parse_string,[_l3,_tail,")"]);call_cl(_parse_value,[_l,_tail,_f])))))))))). % many_c1 parser2_many_c1(_l,_tail,_f,_upvals):-_upvals=[_c1,_c1,_c1],(((true,call_cl(_c1,[_l,_tail1,_f]),call(parser2_many_c1(_tail1,_tail,_f2),_upvals);call_cl(_c1,[_l,_tail,_f])))). % c1 parser2_c1(_l,_tail,_f,_upvals):-_upvals=[_parse_obj_get2,_parse_obj_get,_parse_obj_pred,_parse_exp_call,_parse_exp_call],(((true,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])))))). % match_any parser2_match_any(_l,_l2,_f,_upvals):-_upvals=[],(((true,call_cl(_f,[_l,_tail,_f2]),call(parser2_match_any(_tail,_l2,_f1),_upvals);_l=_l2))). % parse_length parser2_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,X3]),_code=fc_Size(_a,X3)). % parse_excl parser2_parse_excl(_l,_tail,_code,_upvals):-_upvals=[],(_l=[fc_Token(_,"!",_)|[fc_Token(_a,"id",_)|_tail]],_code=fc_Mut(_a)). % parse_value parser2_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)),_f=fc_Num("-"+_a);_l='[|]'(fc_Token(_a,"number",_),_tail),_f=fc_Num(_a))))). % parse_name parser2_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 parser2_parse_name2(_l,_tail,_type,_name,_upvals):-_upvals=[_debug,_debug],(((true,_l='[|]'(fc_Token(_a,"id",_),_l2),call(parser2_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 parser2_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 parser2_name_list_to_type2(_l,_l2,_upvals):-_upvals=[],(((_l='[|]'(_head,[]),_l2='[|]'('[|]'(_head,[]),[]));(dif(_l,'[|]'(_head,[])),_l=[_head|_tail],call(parser2_name_list_to_type2(_tail,_tail2),_upvals),_l2=['[|]'(_head,[])|_tail2]))). % parse_table parser2_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 parser2_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_list parser2_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 parser2_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,X2]),_f=fc_ObjPred(_obj,_a,_code_args,X2)). % parse_exp_call parser2_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,X1]),_f=fc_Func(_name,_args,X1)). % parse_obj_get2 parser2_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 parser2_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 parser2_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(parser2_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 parser2_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(parser2_parse_args(_l2,_tail,_f2),_upvals),_f='[|]'(_f1,_f2);(call_cl(_parse_exp,[_l,_tail,_f1]),_f='[|]'(_f1,[]);_f=[],_tail=_l)))). % custom_throw parser2_custom_throw(_msg,_info,_upvals):-_upvals=[],(_info=fc_Info(_line,_col),writeln_(_info),throw(_msg)). % get_line parser2_get_line(_l,_info1,_upvals):-_upvals=[],(_l='[|]'(fc_Token(_,_,_info),_),_info=fc_Info(_info1,_)). % get_info parser2_get_info(_l,_info,_upvals):-_upvals=[],(_l='[|]'(fc_Token(_,_,_info),_)). % parse_string parser2_parse_string(_l,_tail,_str,_upvals):-_upvals=[],(_l='[|]'(fc_Token(_,_str,_),_tail)). % parse_type parser2_parse_type(_l,_tail,_type,_upvals):-_upvals=[],(_l='[|]'(fc_Token(_,_type,_),_tail)). % _type parser2__type(_l,_type,_upvals):-_upvals=[],(_l='[|]'(fc_Token(_,_type,_),_tail)). % at parser2_at(_s,_i,_c,_upvals):-_upvals=[],(at). % debug parser2_debug(_e,_upvals):-_upvals=[],(true). % pause parser2_pause(_upvals):-_upvals=[],(read(_x)). % main parser2(X):-_pause=clos([],parser2_pause),_debug=clos([],parser2_debug),_at=clos([],parser2_at),__type=clos([],parser2__type),_parse_type=clos([],parser2_parse_type),_parse_string=clos([],parser2_parse_string),_get_info=clos([],parser2_get_info),_get_line=clos([],parser2_get_line),_custom_throw=clos([],parser2_custom_throw),_parse_args=clos([_parse_exp,_parse_type,_parse_exp,_parse_type,_parse_exp],parser2_parse_args),_parse_args2=clos([_parse_exp,_parse_exp,_parse_type,_parse_exp,_parse_exp,_parse_type,_parse_exp],parser2_parse_args2),_parse_obj_get=clos([],parser2_parse_obj_get),_parse_obj_get2=clos([_parse_exp],parser2_parse_obj_get2),_parse_exp_call=clos([_get_info,_parse_args],parser2_parse_exp_call),_parse_obj_pred=clos([_get_info,_parse_args],parser2_parse_obj_pred),_parse_list=clos([_parse_args2],parser2_parse_list),_parse_lambda=clos([_parse_body,_parse_args],parser2_parse_lambda),_parse_table=clos([_parse_body,_debug,_debug],parser2_parse_table),_name_list_to_type2=clos([],parser2_name_list_to_type2),_name_list_to_type=clos([_name_list_to_type2],parser2_name_list_to_type),_parse_name2=clos([_debug,_debug],parser2_parse_name2),_parse_name=clos([_name_list_to_type,_parse_name2],parser2_parse_name),_parse_value=clos([],parser2_parse_value),_parse_excl=clos([],parser2_parse_excl),_parse_length=clos([_get_info,_parse_exp],parser2_parse_length),_match_any=clos([],parser2_match_any),_c1=clos([_parse_obj_get2,_parse_obj_get,_parse_obj_pred,_parse_exp_call,_parse_exp_call],parser2_c1),_many_c1=clos([_c1,_c1,_c1],parser2_many_c1),_c2=clos([_parse_value,_parse_string,_debug,_parse_exp,_parse_string,_parse_excl,_parse_length,_parse_name,_parse_lambda,_debug,_parse_table,_parse_list,_parse_list],parser2_c2),_parse_exp2=clos([_c2,_c1,__type],parser2_parse_exp2),_fget=clos([],parser2_fget),_op_=clos([],parser2_op_),_parse_math2=clos([_fget,_get_info,_debug,_parse_exp2,_debug,_op_,_parse_string],parser2_parse_math2),_parse_math1=clos([_fget,_parse_math2,_debug,_parse_exp2],parser2_parse_math1),_parse_exp=clos([_parse_math1],parser2_parse_exp),_parse_elseifs=clos([_parse_body,_parse_body,_parse_body,_parse_body,_parse_body],parser2_parse_elseifs),_parse_if=clos([_debug,_parse_elseifs,_debug,_parse_body,_parse_body,_debug],parser2_parse_if),_parse_case2=clos([],parser2_parse_case2),_parse_case1=clos([_parse_body,_parse_case2,_parse_body,_parse_case2],parser2_parse_case1),_parse_case=clos([_debug,_parse_case1,_parse_body,_parse_case2],parser2_parse_case),_parse_eq=clos([_get_info,_parse_exp,_parse_type,_parse_exp],parser2_parse_eq),_parse_neq=clos([_parse_exp,_parse_type,_parse_exp],parser2_parse_neq),_parse_true=clos([],parser2_parse_true),_parse_atom=clos([_get_info],parser2_parse_atom),_parse_false=clos([],parser2_parse_false),_parse_once=clos([_get_info,_parse_body],parser2_parse_once),_parse_all=clos([_get_info,_parse_body,_parse_body],parser2_parse_all),_parse_inequality=clos([_get_info,_parse_exp,_parse_type,_parse_exp],parser2_parse_inequality),_parse_stm=clos([_get_info,_parse_body,_parse_args],parser2_parse_stm),_parse_pred=clos([_get_info,_get_info,_get_info,_get_info,_parse_args],parser2_parse_pred),_parse_host=clos([_parse_args,_parse_args],parser2_parse_host),_parse_declaration=clos([_parse_name],parser2_parse_declaration),_parse_definition=clos([_parse_body,_parse_args],parser2_parse_definition),_parse_call=clos([_parse_declaration,_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],parser2_parse_call),_parse_body2=clos([_parse_body,_debug,_get_line,_get_line],parser2_parse_body2),_info2=clos([],parser2_info2),_parse_body=clos([_custom_throw,_debug,_parse_body2,_parse_call],parser2_parse_body),creq("lexer",_lexer),creq("ws2",_ws),_run2=clos([_custom_throw,_debug,_custom_throw,_parse_body],parser2_run2),_run_lexer=clos([_ws,_debug,_lexer,_debug],parser2_run_lexer),_run_parser=clos([_run2],parser2_run_parser),creq("list",_list),_add=clos([],parser2_add),_each=clos([],parser2_each),_db_token=clos([_debug,_list,_list,_each,_list],parser2_db_token),_run=clos([_run2,_debug,_debug,_ws,_debug,_lexer,_debug],parser2_run),new(T16),set_(T16,"parse_exp",_parse_exp,T18),set_(T18,"parse_call",_parse_call,T19),set_(T19,"parse_body",_parse_body,T20),set_(T20,"run",_run,T21),set_(T21,"run_ws",_run2,T22),set_(T22,"lexer",_run_lexer,T23),set_(T23,"run_parser",_run2,T17),_t=T17,X=_t,creq("io",_io),_s="once x=2".