var Evalf(Var x) { switch(Type(x)) { case TYPE(int): { var r = Flt(); F::SetZ(r,x); return r; } break; case TYPE(rat): { var r = Flt(); F::SetQ(r,x); return r; } break; case TYPE(flt): { var r = Flt(); F::Set(r,x); mpf_set_prec(CFlt(r),mpf_get_default_prec()); return r; } break; case TYPE(sym): { std::map<Var,attr_t>::const_iterator iter = Attributes.find(x); if(iter != Attributes.end() && iter->second.count(Constant)) return CProcs[x](0); } break; case TYPE(vec): { size_t n = Size(x); var r = Vec(n); for(size_t i = 0; i < n; ++i) At(r,i) = Evalf(At(x,i)); return r; } break; case TYPE(ex): { var b = Evalf(Body(x)); return Eval(Ex(Head(x),b)); } break; } return x; }
static void Z70_lambda(CL_FORM *base) { COPY(INDIRECT(GET_FORM(ARG(0)) + 5), ARG(1)); COPY(INDIRECT(GET_FORM(ARG(0)) + 4), ARG(2)); Flt(ARG(1), 2); if(CL_TRUEP(ARG(1))) { COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(1)); Fstringp(ARG(1)); if(CL_TRUEP(ARG(1))) { } else { COPY(SYMVAL(Slisp, 58), ARG(1)); /* WRONG_TYPE */ COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(2)); LOAD_SYMBOL(SYMBOL(Slisp, 44), ARG(3)); /* STRING */ Ferror(ARG(1), 3); } COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(1)); COPY(INDIRECT(GET_FORM(ARG(0)) + 5), ARG(2)); Frow_major_aref(ARG(1)); COPY(INDIRECT(GET_FORM(ARG(0)) + 5), ARG(2)); F1plus(ARG(2)); COPY(ARG(2), INDIRECT(GET_FORM(ARG(0)) + 5)); COPY(ARG(1), ARG(0)); } else { LOAD_NIL(ARG(0)); } }
//----------------------------------------------------------------------- int CLuaObjectSkillEffect::setDistance(lua_State *L) { CObjectSkillEffect* effectObject = LUA_RETRIEVE_OBJECT(CObjectSkillEffect,CLuaObjectSkillEffect,L); if (NULL == effectObject) { DYNAMIC_ASSERT(0); return 0; } Int dis = CLuaSkillSystem::getInstance().getLuaManager()->getNumber(2); effectObject->setDistance( Flt(dis) ); return 0; }
void Fmin(CL_FORM *base, int nargs) { CL_FORM *rest_0; CL_FORM *local; rest_0 = ARG(1); local = ARG(nargs); { COPY(ARG(0), LOCAL(0)); { CL_FORM *rest_1; LOAD_NIL(LOCAL(1)); rest_1 = rest_0; M1_1:; if(NOT(REST_NOT_EMPTY(rest_1))) { LOAD_NIL(LOCAL(1)); goto RETURN1; } { CL_FORM *rest_2; rest_2 = rest_1; REST_CAR(rest_2, LOCAL(1)); } COPY(LOCAL(1), LOCAL(2)); COPY(LOCAL(0), LOCAL(3)); Flt(LOCAL(2), 2); if(CL_TRUEP(LOCAL(2))) { COPY(LOCAL(1), LOCAL(0)); } { CL_FORM *rest_3; rest_3 = rest_1; rest_1 = REST_CDR(rest_3); } goto M1_1; } RETURN1:; COPY(LOCAL(0), ARG(0)); } }
void string_not_greaterp1(CL_FORM *base) { COPY(ARG(0), ARG(6)); Fstring(ARG(6)); COPY(ARG(6), ARG(0)); COPY(ARG(1), ARG(6)); Fstring(ARG(6)); COPY(ARG(6), ARG(1)); COPY(ARG(2), ARG(6)); COPY(ARG(3), ARG(7)); COPY(ARG(0), ARG(8)); Flength(ARG(8)); check_seq_start_end(ARG(6)); COPY(ARG(6), ARG(3)); COPY(ARG(4), ARG(6)); COPY(ARG(5), ARG(7)); COPY(ARG(1), ARG(8)); Flength(ARG(8)); check_seq_start_end(ARG(6)); COPY(ARG(6), ARG(5)); COPY(ARG(2), ARG(6)); COPY(ARG(4), ARG(7)); LOAD_NIL(ARG(8)); LOAD_NIL(ARG(9)); M1_1: ; COPY(ARG(6), ARG(10)); COPY(ARG(3), ARG(11)); Fnumeql(ARG(10), 2); if(CL_TRUEP(ARG(10))) { COPY(ARG(6), ARG(0)); goto RETURN2; } COPY(ARG(7), ARG(10)); COPY(ARG(5), ARG(11)); Fnumeql(ARG(10), 2); if(CL_TRUEP(ARG(10))) { LOAD_NIL(ARG(0)); goto RETURN2; } COPY(ARG(0), ARG(10)); COPY(ARG(6), ARG(11)); COPY(ARG(10), ARG(12)); Fstringp(ARG(12)); if(CL_TRUEP(ARG(12))) { } else { COPY(SYMVAL(Slisp, 58), ARG(12)); /* WRONG_TYPE */ COPY(ARG(10), ARG(13)); LOAD_SYMBOL(SYMBOL(Slisp, 44), ARG(14)); /* STRING */ Ferror(ARG(12), 3); } COPY(ARG(10), ARG(12)); COPY(ARG(11), ARG(13)); Frow_major_aref(ARG(12)); COPY(ARG(12), ARG(8)); COPY(ARG(1), ARG(10)); COPY(ARG(7), ARG(11)); COPY(ARG(10), ARG(12)); Fstringp(ARG(12)); if(CL_TRUEP(ARG(12))) { } else { COPY(SYMVAL(Slisp, 58), ARG(12)); /* WRONG_TYPE */ COPY(ARG(10), ARG(13)); LOAD_SYMBOL(SYMBOL(Slisp, 44), ARG(14)); /* STRING */ Ferror(ARG(12), 3); } COPY(ARG(10), ARG(9)); COPY(ARG(11), ARG(10)); Frow_major_aref(ARG(9)); if(CL_CHARP(ARG(8))) { COPY(ARG(8), ARG(10)); } else { COPY(SYMVAL(Slisp, 58), ARG(10)); /* WRONG_TYPE */ COPY(ARG(8), ARG(11)); LOAD_SYMBOL(SYMBOL(Slisp, 18), ARG(12)); /* CHARACTER */ Ferror(ARG(10), 3); } rt_char_upcase(ARG(10)); rt_char_code(ARG(10)); if(CL_CHARP(ARG(9))) { COPY(ARG(9), ARG(11)); } else { COPY(SYMVAL(Slisp, 58), ARG(11)); /* WRONG_TYPE */ COPY(ARG(9), ARG(12)); LOAD_SYMBOL(SYMBOL(Slisp, 18), ARG(13)); /* CHARACTER */ Ferror(ARG(11), 3); } rt_char_upcase(ARG(11)); rt_char_code(ARG(11)); Flt(ARG(10), 2); if(CL_TRUEP(ARG(10))) { COPY(ARG(6), ARG(0)); goto RETURN1; } else { if(CL_CHARP(ARG(8))) { COPY(ARG(8), ARG(10)); } else { COPY(SYMVAL(Slisp, 58), ARG(10)); /* WRONG_TYPE */ COPY(ARG(8), ARG(11)); LOAD_SYMBOL(SYMBOL(Slisp, 18), ARG(12)); /* CHARACTER */ Ferror(ARG(10), 3); } rt_char_upcase(ARG(10)); rt_char_code(ARG(10)); if(CL_CHARP(ARG(9))) { COPY(ARG(9), ARG(11)); } else { COPY(SYMVAL(Slisp, 58), ARG(11)); /* WRONG_TYPE */ COPY(ARG(9), ARG(12)); LOAD_SYMBOL(SYMBOL(Slisp, 18), ARG(13)); /* CHARACTER */ Ferror(ARG(11), 3); } rt_char_upcase(ARG(11)); rt_char_code(ARG(11)); Fnumeql(ARG(10), 2); if(CL_TRUEP(ARG(10))) { } else { LOAD_NIL(ARG(0)); goto RETURN1; } } COPY(ARG(6), ARG(10)); F1plus(ARG(10)); F1plus(ARG(7)); COPY(ARG(10), ARG(6)); goto M1_1; RETURN2: ; RETURN1: ; }
void quick_sort(CL_FORM *base) { LOAD_FIXNUM(ARG(5), 0, ARG(5)); LOAD_FIXNUM(ARG(6), 0, ARG(6)); COPY(ARG(2), ARG(7)); COPY(ARG(1), ARG(8)); F1plus(ARG(8)); Fle(ARG(7), 2); if(CL_TRUEP(ARG(7))) { goto RETURN1; } COPY(ARG(1), ARG(5)); COPY(ARG(2), ARG(6)); F1minus(ARG(6)); COPY(ARG(0), ARG(7)); COPY(ARG(1), ARG(8)); Felt(ARG(7)); M1_1: ; COPY(ARG(5), ARG(8)); COPY(ARG(6), ARG(9)); Fgt(ARG(8), 2); if(CL_TRUEP(ARG(8))) { goto RETURN2; } M2_1: ; COPY(ARG(5), ARG(8)); COPY(ARG(6), ARG(9)); Fgt(ARG(8), 2); if(CL_TRUEP(ARG(8))) { goto THEN1; } else { COPY(ARG(3), ARG(9)); COPY(ARG(4), ARG(10)); COPY(ARG(0), ARG(11)); COPY(ARG(6), ARG(12)); Felt(ARG(11)); Ffuncall(ARG(10), 2); mv_count = 1; COPY(ARG(4), ARG(11)); COPY(ARG(7), ARG(12)); Ffuncall(ARG(11), 2); mv_count = 1; Ffuncall(ARG(9), 3); mv_count = 1; } if(CL_TRUEP(ARG(9))) { THEN1: ; goto RETURN3; } F1minus(ARG(6)); goto M2_1; RETURN3: ; COPY(ARG(6), ARG(8)); COPY(ARG(1), ARG(9)); Flt(ARG(8), 2); if(CL_TRUEP(ARG(8))) { COPY(ARG(0), ARG(8)); COPY(ARG(1), ARG(9)); F1plus(ARG(9)); COPY(ARG(2), ARG(10)); COPY(ARG(3), ARG(11)); COPY(ARG(4), ARG(12)); quick_sort(ARG(8)); goto RETURN1; } M3_1: ; COPY(ARG(5), ARG(8)); COPY(ARG(6), ARG(9)); Fgt(ARG(8), 2); if(CL_TRUEP(ARG(8))) { goto THEN2; } else { COPY(ARG(3), ARG(9)); COPY(ARG(4), ARG(10)); COPY(ARG(0), ARG(11)); COPY(ARG(5), ARG(12)); Felt(ARG(11)); Ffuncall(ARG(10), 2); mv_count = 1; COPY(ARG(4), ARG(11)); COPY(ARG(7), ARG(12)); Ffuncall(ARG(11), 2); mv_count = 1; Ffuncall(ARG(9), 3); mv_count = 1; if(CL_TRUEP(ARG(9))) { goto ELSE3; } else { goto THEN2; } } { THEN2: ; goto RETURN4; } ELSE3: ; F1plus(ARG(5)); goto M3_1; RETURN4: ; COPY(ARG(5), ARG(8)); COPY(ARG(6), ARG(9)); Fgt(ARG(8), 2); if(CL_TRUEP(ARG(8))) { goto RETURN2; } COPY(ARG(0), ARG(8)); COPY(ARG(5), ARG(9)); Felt(ARG(8)); COPY(ARG(0), ARG(9)); COPY(ARG(6), ARG(10)); Felt(ARG(9)); COPY(ARG(0), ARG(10)); COPY(ARG(5), ARG(11)); Fset_elt(ARG(9)); COPY(ARG(8), ARG(9)); COPY(ARG(0), ARG(10)); COPY(ARG(6), ARG(11)); Fset_elt(ARG(9)); F1plus(ARG(5)); F1minus(ARG(6)); goto M1_1; RETURN2: ; COPY(ARG(0), ARG(7)); COPY(ARG(1), ARG(8)); COPY(ARG(5), ARG(9)); COPY(ARG(3), ARG(10)); COPY(ARG(4), ARG(11)); quick_sort(ARG(7)); COPY(ARG(0), ARG(7)); COPY(ARG(5), ARG(8)); COPY(ARG(2), ARG(9)); COPY(ARG(3), ARG(10)); COPY(ARG(4), ARG(11)); quick_sort(ARG(7)); RETURN1: ; }
void FcharGE(CL_FORM *base, int nargs) { CL_FORM *rest_0; CL_FORM *local; rest_0 = ARG(1); local = ARG(nargs); { CL_FORM *rest_1; LOAD_NIL(LOCAL(0)); rest_1 = rest_0; M1_1:; if(NOT(REST_NOT_EMPTY(rest_1))) { LOAD_NIL(LOCAL(0)); LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(0)); /* T */ goto RETURN1; } { CL_FORM *rest_2; rest_2 = rest_1; REST_CAR(rest_2, LOCAL(0)); } if(CL_CHARP(ARG(0))) { COPY(ARG(0), LOCAL(1)); } else { COPY(SYMVAL(Slisp, 58), LOCAL(1)); /* WRONG_TYPE */ COPY(ARG(0), LOCAL(2)); LOAD_SYMBOL(SYMBOL(Slisp, 18), LOCAL(3)); /* CHARACTER */ Ferror(LOCAL(1), 3); } rt_char_code(LOCAL(1)); if(CL_CHARP(LOCAL(0))) { COPY(LOCAL(0), LOCAL(2)); } else { COPY(SYMVAL(Slisp, 58), LOCAL(2)); /* WRONG_TYPE */ COPY(LOCAL(0), LOCAL(3)); LOAD_SYMBOL(SYMBOL(Slisp, 18), LOCAL(4)); /* CHARACTER */ Ferror(LOCAL(2), 3); } rt_char_code(LOCAL(2)); Flt(LOCAL(1), 2); if(CL_TRUEP(LOCAL(1))) { LOAD_NIL(ARG(0)); goto RETURN1; } COPY(LOCAL(0), ARG(0)); { CL_FORM *rest_3; rest_3 = rest_1; rest_1 = REST_CDR(rest_3); } goto M1_1; } RETURN1:; }
void print_float(CL_FORM *base) { COPY(ARG(0), ARG(2)); Fminusp(ARG(2)); if(CL_TRUEP(ARG(2))) { LOAD_CHAR(ARG(2), '-', ARG(2)); COPY(ARG(1), ARG(3)); write_char1(ARG(2)); mv_count = 1; COPY(ARG(0), ARG(2)); Fminus(ARG(2), 1); COPY(ARG(2), ARG(0)); } COPY(ARG(0), ARG(2)); Fzerop(ARG(2)); if(CL_TRUEP(ARG(2))) { LOAD_SMSTR((CL_FORM *)&Kprint_float[0], ARG(2)); /* 0.0 */ COPY(ARG(2), ARG(3)); COPY(ARG(1), ARG(4)); LOAD_FIXNUM(ARG(5), 0, ARG(5)); COPY(ARG(2), ARG(6)); Flength(ARG(6)); write_string1(ARG(3)); COPY(ARG(3), ARG(0)); } else { LOAD_FIXNUM(ARG(2), 10, ARG(2)); COPY(ARG(0), ARG(2)); LOAD_FIXNUM(ARG(3), 10, ARG(3)); rt_log(ARG(2)); LOAD_FIXNUM(ARG(3), 1, ARG(3)); LOAD_FIXNUM(ARG(3), 1, ARG(3)); rt_floor(ARG(2)); mv_count = 1; COPY(ARG(0), ARG(3)); GEN_FLOAT(ARG(4), 10.0, ARG(4)); LOAD_FIXNUM(ARG(5), -1, ARG(5)); COPY(ARG(2), ARG(6)); Fminus(ARG(5), 2); COPY(ARG(5), ARG(6)); Fminusp(ARG(6)); if(CL_TRUEP(ARG(6))) { LOAD_FIXNUM(ARG(6), 1, ARG(6)); COPY(ARG(4), ARG(7)); COPY(ARG(5), ARG(8)); Fminus(ARG(8), 1); Fexpt(ARG(7)); Fdiv(ARG(6), 2); COPY(ARG(6), ARG(4)); } else { rt_expt(ARG(4)); } Fmult(ARG(3), 2); LOAD_NIL(ARG(4)); COPY(SYMVAL(Slisp, 2), ARG(5)); /* SHORT-FLOAT-EPSILON */ LOAD_NIL(ARG(6)); COPY(ARG(3), ARG(7)); LOAD_FIXNUM(ARG(8), 1, ARG(8)); COPY(ARG(5), ARG(9)); Fminus(ARG(8), 2); Fge(ARG(7), 2); if(CL_TRUEP(ARG(7))) { GEN_FLOAT(ARG(7), 0.1, ARG(3)); F1plus(ARG(2)); } COPY(ARG(2), ARG(7)); LOAD_FIXNUM(ARG(8), 7, ARG(8)); Fgt(ARG(7), 2); if(CL_TRUEP(ARG(7))) { goto THEN1; } else { COPY(ARG(2), ARG(8)); LOAD_FIXNUM(ARG(9), -3, ARG(9)); Flt(ARG(8), 2); } if(CL_TRUEP(ARG(8))) { THEN1:; LOAD_FIXNUM(ARG(7), 0, ARG(4)); } else { COPY(ARG(2), ARG(4)); LOAD_FIXNUM(ARG(7), 0, ARG(2)); } COPY(ARG(4), ARG(7)); Fminusp(ARG(7)); if(CL_TRUEP(ARG(7))) { LOAD_CHAR(ARG(7), '0', ARG(7)); COPY(ARG(1), ARG(8)); write_char1(ARG(7)); mv_count = 1; LOAD_CHAR(ARG(7), '.', ARG(7)); COPY(ARG(1), ARG(8)); write_char1(ARG(7)); mv_count = 1; LOAD_FIXNUM(ARG(7), 0, ARG(7)); M1_1:; COPY(ARG(7), ARG(8)); COPY(ARG(4), ARG(9)); Fminus(ARG(9), 1); F1minus(ARG(9)); Fge(ARG(8), 2); if(CL_TRUEP(ARG(8))) { goto RETURN1; } LOAD_CHAR(ARG(8), '0', ARG(8)); COPY(ARG(1), ARG(9)); write_char1(ARG(8)); mv_count = 1; F1plus(ARG(7)); goto M1_1; RETURN1:; LOAD_FIXNUM(ARG(7), -1, ARG(4)); } M2_1:; COPY(ARG(5), ARG(7)); LOAD_FIXNUM(ARG(8), 10, ARG(8)); Fmult(ARG(7), 2); COPY(ARG(7), ARG(5)); LOAD_FIXNUM(ARG(7), 10, ARG(7)); COPY(ARG(3), ARG(8)); Fmult(ARG(7), 2); LOAD_FIXNUM(ARG(8), 1, ARG(8)); LOAD_FIXNUM(ARG(8), 1, ARG(8)); rt_truncate(ARG(7)); COPY(&mv_buf[0], ARG(8)); { int nargs; nargs = 2; mv_count = 1; { switch(nargs) { case 0: LOAD_NIL(ARG(7)); case 1: LOAD_NIL(ARG(8)); nargs = 2; } COPY(ARG(7), ARG(6)); COPY(ARG(8), ARG(3)); } } COPY(ARG(3), ARG(7)); LOAD_FIXNUM(ARG(8), 1, ARG(8)); COPY(ARG(5), ARG(9)); Fminus(ARG(8), 2); Fge(ARG(7), 2); if(CL_TRUEP(ARG(7))) { goto THEN2; } else { COPY(ARG(3), ARG(8)); COPY(ARG(5), ARG(9)); Fle(ARG(8), 2); } if(CL_TRUEP(ARG(8))) { THEN2:; goto RETURN2; } COPY(ARG(6), ARG(7)); LOAD_FIXNUM(ARG(8), 10, ARG(8)); digit_char1(ARG(7)); COPY(ARG(1), ARG(8)); write_char1(ARG(7)); mv_count = 1; COPY(ARG(4), ARG(7)); Fzerop(ARG(7)); if(CL_TRUEP(ARG(7))) { LOAD_CHAR(ARG(7), '.', ARG(7)); COPY(ARG(1), ARG(8)); write_char1(ARG(7)); mv_count = 1; } F1minus(ARG(4)); goto M2_1; RETURN2:; COPY(ARG(3), ARG(7)); GEN_FLOAT(ARG(8), 0.5, ARG(8)); Fge(ARG(7), 2); if(CL_TRUEP(ARG(7))) { F1plus(ARG(6)); } COPY(ARG(6), ARG(7)); LOAD_FIXNUM(ARG(8), 10, ARG(8)); digit_char1(ARG(7)); COPY(ARG(1), ARG(8)); write_char1(ARG(7)); mv_count = 1; COPY(ARG(4), ARG(7)); LOAD_FIXNUM(ARG(8), 0, ARG(8)); Fge(ARG(7), 2); if(CL_TRUEP(ARG(7))) { LOAD_FIXNUM(ARG(7), 0, ARG(7)); M3_1:; COPY(ARG(7), ARG(8)); COPY(ARG(4), ARG(9)); Fge(ARG(8), 2); if(CL_TRUEP(ARG(8))) { goto RETURN3; } LOAD_CHAR(ARG(8), '0', ARG(8)); COPY(ARG(1), ARG(9)); write_char1(ARG(8)); mv_count = 1; F1plus(ARG(7)); goto M3_1; RETURN3:; LOAD_CHAR(ARG(7), '.', ARG(7)); COPY(ARG(1), ARG(8)); write_char1(ARG(7)); mv_count = 1; LOAD_CHAR(ARG(7), '0', ARG(7)); COPY(ARG(1), ARG(8)); write_char1(ARG(7)); mv_count = 1; } COPY(ARG(2), ARG(7)); Fzerop(ARG(7)); if(CL_TRUEP(ARG(7))) { } else { LOAD_CHAR(ARG(7), 'E', ARG(7)); COPY(ARG(1), ARG(8)); write_char1(ARG(7)); mv_count = 1; COPY(ARG(2), ARG(7)); COPY(ARG(1), ARG(8)); print_integer(ARG(7)); mv_count = 1; } LOAD_NIL(ARG(0)); } }
void parser::gen(size_t m) { node_t& n = m_node[m]; parser::iter_t iter = lower(m); switch(n.tag) { case tag_inequality: { head(count(m) + 1); emit(TAG(Inequality)); parser::iter_t end = upper(m); while(iter != end) { gen(iter->second); ++iter; } } break; case tag_sequence: { parser::iter_t end = upper(m); while(iter != end) { gen(iter->second); ++iter; } } break; case tag_expression: if (n.value == -1) { head(count(m) + 1); emit(TAG(CompoundExpression)); parser::iter_t end = upper(m); while(iter != end) { gen(iter->second); ++iter; } break; } else if(s_oper[n.value].postfix || s_oper[n.value].prefix) { head(2); emit(s_oper[n.value].symbol); gen(iter->second); break; } head(3); emit(s_oper[n.value].symbol); gen(iter->second); gen((++iter)->second); break; case tag_suffix: switch(n.value) { case -1: { parser::iter_t begin = lower(m), end = upper(m); iter = --end; while(iter != begin) { --iter; gen(iter->second); } gen(end->second); while(iter != end) { gen(iter->second); ++iter; } } break; case -2: head(2); emit(TAG(Part)); n.value = -6; break; case -3: head(count(iter->second) + 2); emit(TAG(Part)); n.value = -7; break; case -4: head(1); n.value = -8; break; case -5: head(count(iter->second) + 1); n.value = -9; break; case -6: break; case -7: gen(iter->second); break; case -8: break; case -9: gen(iter->second); break; } break; case tag_primary: switch(n.value) { case instr_symbol: sym(m_note.find(m)->second); break; case instr_integer: { const wchar *s = m_note.find(m)->second; emit(Int(string(s,s + wcslen(s)).c_str(),10)); } break; case instr_float: { const wchar *s = m_note.find(m)->second; emit(Flt(string(s,s + wcslen(s)).c_str(),10)); } break; case instr_string: emit(Str(m_note.find(m)->second)); break; case -1: emit(Vec()); break; case -2: { var r = Vec(count(iter->second)); emit(r); code_stack.push(std::make_pair(r,0)); gen(iter->second); } break; case -3: gen(iter->second); break; case -4: head(2); emit(TAG(Blank)); gen(iter->second); break; case -5: head(2); emit(TAG(Optional)); head(1); emit(TAG(Blank)); break; case -6: head(1); emit(TAG(Blank)); break; case -7: head(2); emit(TAG(BlankSequence)); gen(iter->second); break; case -8: head(2); emit(TAG(Optional)); head(1); emit(TAG(BlankSequence)); break; case -9: head(1); emit(TAG(BlankSequence)); break; case -10: head(2); emit(TAG(Slot)); gen(iter->second); break; case -11: head(2); emit(TAG(Slot)); emit(Int(1L)); break; case -12: head(2); emit(TAG(SlotSequence)); gen(iter->second); break; case -13: head(2); emit(TAG(SlotSequence)); emit(Int(1L)); break; case -14: head(3); emit(TAG(Pattern)); gen(iter->second); head(2); emit(TAG(Blank)); gen((++iter)->second); break; case -15: head(2); emit(TAG(Optional)); head(3); emit(TAG(Pattern)); gen(iter->second); head(1); emit(TAG(Blank)); break; case -16: head(3); emit(TAG(Pattern)); gen(iter->second); head(1); emit(TAG(Blank)); break; case -17: head(3); emit(TAG(Pattern)); gen(iter->second); head(2); emit(TAG(BlankSequence)); gen((++iter)->second); break; case -18: head(2); emit(TAG(Optional)); head(3); emit(TAG(Pattern)); gen(iter->second); head(1); emit(TAG(BlankSequence)); break; case -19: head(3); emit(TAG(Pattern)); gen(iter->second); head(1); emit(TAG(BlankSequence)); break; case -20: head(3); emit(TAG(Pattern)); gen(iter->second); gen((++iter)->second); break; case -21: head(3); emit(TAG(Property)); gen(iter->second); gen((++iter)->second); break; } break; } }