Value expression::eval(Value &ret) { ValueStack valstack; String str_oper; str_oper="oper"; POSITION pos=m_postfix.get_top_position(); for(; pos; pos=m_postfix.get_next(pos)){ const char*s=m_postfix.get(pos); if(s[0]=='%' || isalpha(s[0]) ) { //ValueRef vref(getworld()->var_get(s)); valstack.add(getworld()->var_get(s)); } else if (isdigit(s[0])){ valstack.add()=str_to_real(s); } else { _oper* p; if(s[0]=='\'') p=getworld()->oper_get(s+1); else p=getworld()->oper_get(str_oper+s); p->eval(valstack) ; } } ret=valstack.get_last(); valstack.remove(); return ret; }