void valider() { //1 - chaque op à la meme parité //2 - chaque op à un op et un résultat // Donc, tester parité avant tout! for(int i = 0; i < (int)bdc.size(); i++){ if (bdc.at(i).getIds().size() < 2) { throw "Erreur : Une clause doit avoir au moin un opérateur et un résultat \n"; } } vector uniq_ops; ensOperateur(uniq_ops); for(int i = 0; i < (int)uniq_ops.size(); i++){ //stack pour tester les arités stack arite; for(int j = 0; j < (int)bdc.size(); j++){ if(uniq_ops.at(i) == bdc.at(j).getOp()) { arite.push(bdc.at(j).getArite()); } } //vérifie l'arité de cette opérateur int ariteInt = arite.top(); for(int s = 0; s < (int)arite.size(); s++){ if(arite.top() != ariteInt) { throw "Erreur : Les opérateurs pareils doivent avoir le même nombre d'arguments \n"; } arite.pop(); } } }