% Table * % % module % run parser2_run(_s,_l1,_upvals):-_upvals=[_run2,_debug,_debug,_ws,_debug,_lexer,_debug],(call_cl(_debug,["lexer..."]),get_(_lexer,"run",T27),_T26 = T27,call_cl(_T26,[_s,_l]),!,call_cl(_debug,["whitespace..."]),get_(_ws,"run",T29),_T28 = T29,call_cl(_T28,[_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",T20),_T19 = T20,call_cl(_T19,[_l,_each,_l3]),writeln_(_l3),get_(_list,"reverse",T22),_T21 = T22,call_cl(_T21,[_l3,_l4]),writeln_(_l4),get_(_list,"join",T24),_T23 = T24,call_cl(_T23,[_l3," ",_s2]),writeln_(_s2),call_cl(_debug,[""]),str(_s2,T25),writeln_(T25)). % each parser2_each(_e,_e2,_upvals):-_upvals=[],(_e = fc_Token(_tk,_,_),_e2 = _tk). % 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",T16),_T15 = T16,call_cl(_T15,[_s,_l]),!,call_cl(_debug,["whitespace..."]),get_(_ws,"run",T18),_T17 = T18,call_cl(_T17,[_l,_l2]),!). % run2 parser2_run2(_l,_code,_upvals):-_upvals=[_custom_throw,_debug,_custom_throw,_parse_body],(call_cl(_parse_body,[_l,_tail,_code]),(if_(_tail = '[|]'(fc_Token("EOF",_,_),[]),(true),((if_(_tail = [_t|[_t2|_]],(_t2 = fc_Token(_,_,_info),call_cl(_custom_throw,["parser error1",_info])),(_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],((if_(_l2 = '[|]'(fc_Token(_conn,"connective",_),_l3),((if_(_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))),((_conn = "or"),(_code = fc_Or(_s1,_s2))))),call_cl(_parse_body,[_l3,_tail,_s2])),(_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(_,_mode,_),'[|]'(fc_Token(_name,"id",_),'[|]'(fc_Token(_,"(",_),_l2))),(if_(_mode = "rel",(_f = fc_Rel(_name,_args,_body)),(if_(_mode = "fun",(_f = fc_Rel(_name,_args,_body,_mode)),(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_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),(if_(_a = "functor",(call_cl(_get_info,[_l,_T11]),_code = fc_Fact(_a,_code_args,_T11)),(if_(_a = "throw",(call_cl(_get_info,[_l,_T12]),_code = fc_Fact(_a,_code_args,_T12)),(if_(_a = "cut",(call_cl(_get_info,[_l,_T13]),_code = fc_Fact(_a,_code_args,_T13)),(call_cl(_get_info,[_l,_T14]),_code = fc_Pred(_a,_code_args,_T14))))))))). % 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,_T10]),_f = fc_Stm(_name,_args,_body,_T10)). % 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,_T9]),_f = fc_Inequality(_a,_b,_op,_T9));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,_T8]),_f = fc_Stm2(_name,_body1,_body2,_T8)). % parse_once parser2_parse_once(_l,_tail,_f,_upvals):-_upvals=[_get_info,_parse_call],(_l = '[|]'(fc_Token(_name,_name,_),_l2),(if_(_name = "once",(true),(_name = "not"))),call_cl(_parse_call,[_l2,_tail,_body]),call_cl(_get_info,[_l,_T7]),_f = fc_Stm(_name,[],_body,_T7)). % 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,_T6]),_f = fc_Fact(_a,[],_T6)). % 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],((if_(_l = [fc_Token(_,"if",_)|_l0],(_f = fc_Cond(_fbody1,_fbody2,_c_,"if")),(if_(_l = [fc_Token(_,"when",_)|_l0],(_f = fc_Cond(_fbody1,_fbody2,_c_,"when")),(_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,_parse_exp2,_debug,_debug,_op_,_parse_string],(call_cl(_parse_string,[_l,_l2,_op]),((call_cl(_op_,[_op]))->(call_cl(_debug,['[|]'("op",'[|]'(_op,[]))]),call_cl(_debug,['[|]'("exp2",'[|]'(_b,[]))]),call_cl(_get_info,[_l,_T5]),call_cl(_parse_exp2,[_l2,_l4,_T4]),_fcur = fc_Op(_prev,_T4,_op,_T5),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=[],((if_(_f2 = fc([],"None"),(_f = _a),(_f = _f2)))). % parse_exp2 parser2_parse_exp2(_l,_tail,_f,_upvals):-_upvals=[_c2,_id_exp,__type],((((call_cl(__type,[_l,"id"])),(call_cl(_id_exp,[_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,_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_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_id_exp parser2_many_id_exp(_l,_tail,_f,_upvals):-_upvals=[_id_exp,_id_exp,_id_exp],((((true),(call_cl(_id_exp,[_l,_tail1,_f]),call(parser2_many_id_exp(_tail1,_tail,_f2),_upvals));call_cl(_id_exp,[_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])). % 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,_T3]),_code = fc_Size(_a,_T3)). % 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],((if_(_l = [],(_l2 = _l),(if_(_l = '[|]'(_a,[]),(_l2 = _l),(_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=[],((if_(_l = '[|]'(_head,[]),(_l2 = '[|]'('[|]'(_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]),(if_(_l2 = '[|]'(fc_Token(_,"}",_),_tail),(_f = fc_TTable(fc([],"True"))),(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,_T2]),_f = fc_ObjPred(_obj,_a,_code_args,_T2)). % 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,_T1]),_f = fc_Func(_name,_args,_T1)). % 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]),(if_(_s = "|",(call_cl(_parse_exp,[_l2,_tail,_f2]),_f = '[|]'(_f1,'[|]'(fc_Tuple(_f2),[]))),(if_(_s = ",",(call(parser2_parse_args2(_l2,_tail,_f2),_upvals),_f = '[|]'(_f1,_f2)),(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_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_exp = clos([_parse_host,_parse_obj_get2,_parse_obj_get,_parse_obj_pred,_parse_exp_call],parser2_id_exp),_many_id_exp = clos([_id_exp,_id_exp,_id_exp],parser2_many_id_exp),_c2 = clos([_parse_value,_parse_string,_debug,_parse_exp,_parse_string,_parse_excl,_parse_length,_parse_name,_parse_lambda,_parse_table,_parse_array,_parse_list,_parse_list],parser2_c2),_parse_exp2 = clos([_c2,_id_exp,__type],parser2_parse_exp2),_fget = clos([],parser2_fget),_op_ = clos([],parser2_op_),_parse_math2 = clos([_fget,_get_info,_parse_exp2,_debug,_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_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_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("lexer2",_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),_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(T30),set_(T30,"parse_exp",_parse_exp,T32),set_(T32,"parse_call",_parse_call,T33),set_(T33,"parse_body",_parse_body,T34),set_(T34,"run",_run,T35),set_(T35,"run_ws",_run2,T36),set_(T36,"lexer",_run_lexer,T37),set_(T37,"run_parser",_run2,T31),_t = T31,X=_t,_s = "x=2".