/** * 拆分公式,把用&连接的公式拆分成多条公式 * @param _fml * @param _parent * @param _result */ void Utils::divideFormula(_formula* _fml, Formulas* _result) { assert(_fml); if(_fml->formula_type == CONJ) { divideFormula(_fml->subformula_l, _result); divideFormula(_fml->subformula_r, _result); } else { Formula new_formula = Formula(_fml, true); _result->pushBack(new_formula); } }
void GPFormulaTree::setFormula(const std::string& formula) { GP_SAFE_UNREF(mRoot); std::vector<std::string> words; divideFormula(words, formula); GPASSERT(!words.empty()); mRoot = GPFormulaTreePoint::create(words); }