diff --git a/alib2/src/regexp/RegExp.cpp b/alib2/src/regexp/RegExp.cpp index fdf21207752d588fc5705d53ad15f4fe611afd2e..03a7d26fb5d073fbeeba30309848b85b6210141d 100644 --- a/alib2/src/regexp/RegExp.cpp +++ b/alib2/src/regexp/RegExp.cpp @@ -135,9 +135,10 @@ std::ostream& operator <<(std::ostream& out, const RegExp& regExp) { } bool RegExp::operator<(const RegExp& other) const { - if(*this == other) return false; if(*(this->regExp) < *(other.regExp)) { return true; + } else if(*(this->regExp) > *(other.regExp)) { + return false; } else { return this->alphabet < other.alphabet; } diff --git a/alib2/src/regexp/RegExpElement.cpp b/alib2/src/regexp/RegExpElement.cpp index ba1181b65130a04b9b026dcb72cbc3b55c577751..bb653bce5b0f4a91ee4cb3376078554fe0954407 100644 --- a/alib2/src/regexp/RegExpElement.cpp +++ b/alib2/src/regexp/RegExpElement.cpp @@ -34,27 +34,27 @@ bool RegExpElement::operator!=(const RegExpElement& other) const { bool RegExpElement::operator<(const Concatenation& other) const { - return typeid(this).before(typeid(other)); + return typeid(*this).before(typeid(other)); } bool RegExpElement::operator<(const Alternation& other) const { - return typeid(this).before(typeid(other)); + return typeid(*this).before(typeid(other)); } bool RegExpElement::operator<(const Iteration& other) const { - return typeid(this).before(typeid(other)); + return typeid(*this).before(typeid(other)); } bool RegExpElement::operator<(const RegExpSymbol& other) const { - return typeid(this).before(typeid(other)); + return typeid(*this).before(typeid(other)); } bool RegExpElement::operator<(const RegExpEpsilon& other) const { - return typeid(this).before(typeid(other)); + return typeid(*this).before(typeid(other)); } bool RegExpElement::operator<(const RegExpEmpty& other) const { - return typeid(this).before(typeid(other)); + return typeid(*this).before(typeid(other)); }