% Table {lexer.Relation Any Any;parse_body.Relation Any Any Any;parse_call.Relation Any Any Any;parse_exp.Relation Any Any Any;run.Relation Any Any;run_parser.Relation Any Any;run_ws.Relation Any Any} % Op Functor;TTable Functor Functor;TArray Functor List;TList Functor Functor;Func Functor;ObjGet Functor;Id Functor;Str Functor;Num Functor;Put Functor;Cur Functor;Lib Functor;Local Functor;Void Functor;Var Functor;None Functor;Error Functor;Func Functor;ObjGet2 Functor;ObjGet Functor;Id Functor;Str Functor;Num Functor;Fact Functor;Rel Functor;Size Functor;Mutable Functor;Declaration Functor;Once Functor;Host Functor;Op Functor;SoftCut Functor;Cond Functor;If Functor;ObjPred Functor;Bracket Functor;Or Functor;And Functor;Pred Functor;False Functor;True Functor;Inequality Functor;Stm2 Functor;Stm Functor;Neq Functor;Eq Functor;Tuple Functor;F2 Functor;F Functor;Pair Functor;Info Functor;Token Functor;Cons Functor % parser2 % run parser2_run(_s,_l1,_upvals):-_upvals=[_run2,_debug,_debug,_ws,_debug,_lexer,_debug],(call_cl(_debug,["lexer..."]),get_(_lexer,"run",T41),_T40 = T41,call_cl(_T40,[_s,_l]),!,call_cl(_debug,["whitespace..."]),get_(_ws,"run",T43),_T42 = T43,call_cl(_T42,[_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",T34),_T33 = T34,call_cl(_T33,[_l,_each,_l3]),writeln_(_l3),get_(_list,"reverse",T36),_T35 = T36,call_cl(_T35,[_l3,_l4]),writeln_(_l4),get_(_list,"join",T38),_T37 = T38,call_cl(_T37,[_l3," ",_s2]),writeln_(_s2),call_cl(_debug,[""]),str(_s2,T39),writeln_(T39)). % 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",T29),_T28 = T29,call_cl(_T28,[_s,_l]),!,call_cl(_debug,["whitespace..."]),get_(_ws,"run",T31),_T30 = T31,call_cl(_T30,[_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])))). % parse_exp2 parser2_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 parser2_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__ parser2_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_ parser2_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 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_word,_parse_inequality,_parse_neq,_parse_eq,_parse_all,_parse_struct4,_parse_struct2,_parse_once,_parse_case,_parse_struct3,_parse_struct,_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_struct,[_l,_tail,_code]);call_cl(_parse_struct3,[_l,_tail,_code]);call_cl(_parse_case,[_l,_tail,_code]);call_cl(_parse_once,[_l,_tail,_code]);call_cl(_parse_struct2,[_l,_tail,_code]);call_cl(_parse_struct4,[_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_word,[_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(_,_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 parser2_parse_declaration(_l,_tail,_code,_upvals):-_upvals=[_parse_name],(call_cl(_parse_name,[_l,_tail,_type,_name]),_code = fc_Declaration(_name,_type)). % parse_struct2 parser2_parse_struct2(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_parse_args,_get_info],(_l = '[|]'(fc_Token(_name,"id",_),'[|]'(fc_Token(_,"(",_),_l2)),((_name = "foreach",call_cl(_get_info,[_l,_T25]),_f = fc_Stm(_name,_body1,_body,_T25));(dif(_name,"foreach"),false)),call_cl(_parse_args,[_l2,_l3,_body1]),_l3 = '[|]'(fc_Token(_,")",_),_l4),call_cl(_parse_body,[_l4,_l5,_body]),_l5 = '[|]'(fc_Token(_,";",_),_tail)). % parse_struct4 parser2_parse_struct4(_l,_tail,_f,_upvals):-_upvals=[_parse_body,_parse_exp,_parse_exp,_parse_exp,_get_info],(_l = '[|]'(fc_Token("for","id",_),'[|]'(fc_Token(_,"(",_),_l2)),call_cl(_get_info,[_l,_T24]),_f = fc_Stm("for-in",'[|]'(_f1,'[|]'(_f2,'[|]'(_body1,[]))),_body,_T24),call_cl(_parse_exp,[_l2,_l_a,_f1]),_l_a = '[|]'(fc_Token(_,",",_),_l_b),call_cl(_parse_exp,[_l_b,_l3,_f2]),_l3 = '[|]'(fc_Token(_,"in",_),_l4),call_cl(_parse_exp,[_l4,_lc,_body1]),_lc = '[|]'(fc_Token(_,")",_),_l5),call_cl(_parse_body,[_l5,_l6,_body]),_l6 = '[|]'(fc_Token(_,";",_),_tail)). % 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,_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_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,_T19]),_f = fc_Stm(_name,_args,_body,_T19)). % 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 = ">="),(call_cl(_parse_exp,[_l3,_tail,_b]),call_cl(_get_info,[_l,_T18]),_f = fc_Inequality(_a,_b,_op,_T18));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,_T17]),_f = fc_Stm2(_name,_body1,_body2,_T17)). % parse_once parser2_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,_T16]),_f = fc_Stm(_name,[],_body,_T16)). % 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,_T15]),_f = fc_Fact(_a,[],_T15)). % 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_word parser2_parse_word(_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,"in"]),call_cl(_parse_exp,[_l3,_tail,_b]),call_cl(_get_info,[_l,_info]),_f = fc_Stm("in",'[|]'(_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);_l = '[|]'(fc_Token(_,"cond",_),_l1)). % parse_struct3 parser2_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,_T14]),_f = fc_Stm(_name,'[|]'(_body1,'[|]'(_body2,'[|]'(_body3,[]))),_body,_T14));(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_struct parser2_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,_T13]),_f = fc_Stm(_name,_body1,_body,_T13));(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_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=[_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,_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(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))). % c2 parser2_c2(_l,_tail,_f,_upvals):-_upvals=[_parse_value,_parse_name,_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(_parse_name,[_l,_tail,_type,_name]),_f = fc_Id(_name,_type);call_cl(_parse_value,[_l,_tail,_f]))))))))))))). % id_exp parser2_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 parser2_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 parser2_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 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);_l = '[|]'(fc_Token(_obj,"id",_),'[|]'(fc_Token(_,"::",_),_l2)),_l2 = '[|]'(fc_Token(_obj2,"id",_),_tail),_code = fc_Host(_obj,_obj2))))). % 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,_T10]),_code = fc_Size(_a,_T10)). % parse_excl parser2_parse_excl(_l,_tail,_code,_upvals):-_upvals=[],(_l = [fc_Token(_,"!",_)|[fc_Token(_a,"id",_)|_tail]],_code = fc_Mutable(_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)),calc("-"+_a,T9),_f = fc_Num(T9);_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_array parser2_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 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,_T8]),_f = fc_ObjPred(_obj,_a,_code_args,_T8)). % 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,_T7]),_f = fc_Func(_name,_args,_T7)). % 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),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 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_type parser2_parse_type(_l,_tail,_type,_upvals):-_upvals=[],(_l = '[|]'(fc_Token(_,_type,_),_tail)). % debug parser2_debug(_e,_upvals):-_upvals=[],(writeln_(_e)). % pause parser2_pause(_upvals):-_upvals=[],(read(_x)). % main parser2(X):-_pause = clos([],parser2_pause),_debug = clos([],parser2_debug),_parse_type = clos([],parser2_parse_type),_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_array = clos([_parse_args2],parser2_parse_array),_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),_parse_host = clos([_parse_args,_parse_args],parser2_parse_host),_parse_host2 = clos([],parser2_parse_host2),_id_exp2 = clos([_parse_exp_call,_parse_obj_get2,_parse_obj_get],parser2_id_exp2),_id_exp = clos([_parse_host,_parse_obj_get2,_parse_obj_get,_parse_obj_pred,_parse_exp_call],parser2_id_exp),_c2 = clos([_parse_value,_parse_name,_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],parser2_c2),_fget = clos([],parser2_fget),_op_ = clos([],parser2_op_),_parse_math2 = clos([_fget,_get_info,_parse_exp2,_debug,_debug,_op_,_parse_type],parser2_parse_math2),_parse_exp = clos([_fget,_parse_math2,_debug,_parse_exp2],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_struct = clos([_parse_body,_parse_body,_get_info],parser2_parse_struct),_parse_struct3 = clos([_parse_body,_debug,_parse_body,_parse_body,_parse_body,_get_info,_debug],parser2_parse_struct3),_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_word = clos([_get_info,_parse_exp,_parse_type,_parse_exp],parser2_parse_word),_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_call],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_struct4 = clos([_parse_body,_parse_exp,_parse_exp,_parse_exp,_get_info],parser2_parse_struct4),_parse_struct2 = clos([_parse_body,_parse_args,_get_info],parser2_parse_struct2),_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_word,_parse_inequality,_parse_neq,_parse_eq,_parse_all,_parse_struct4,_parse_struct2,_parse_once,_parse_case,_parse_struct3,_parse_struct,_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_obj_get_ = clos([_parse_exp],parser2_parse_obj_get_),_parse_obj_get__ = clos([_parse_exp],parser2_parse_obj_get__),_parse_exp3 = clos([_c2,_debug,_id_exp2,_debug],parser2_parse_exp3),_parse_exp2 = clos([_c2,_id_exp,_parse_type],parser2_parse_exp2),_parse_body = clos([_custom_throw,_debug,_parse_body2,_parse_call],parser2_parse_body),creq1("lexer2",_lexer,T26),call(T26,_lexer),creq1("ws2",_ws,T27),call(T27,_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),creq1("list",_list,T32),call(T32,_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(T44),set_(T44,"parse_exp",_parse_exp,T46),set_(T46,"parse_call",_parse_call,T47),set_(T47,"parse_body",_parse_body,T48),set_(T48,"run",_run,T49),set_(T49,"run_ws",_run2,T50),set_(T50,"lexer",_run_lexer,T51),set_(T51,"run_parser",_run2,T45),_t2 = T45,X=_t2,creq1("io",_io,T52),call(T52,_io),_s = "while(x=2) true;",writeln_(_t),clock(_t3),call_cl(_run,[_s,_l]),clock(_t4),writeln_('[|]'("l",'[|]'(_l,[]))),{_t4-_t3=T53},{X1 = T53},writeln_(X1).