Esempio n. 1
0
File: Utils.cpp Progetto: yzf/Parser
/**
 * 拆分公式,把用&连接的公式拆分成多条公式
 * @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);
    }
}
Esempio n. 2
0
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);
}