diff --git a/alib/src/grammar/RightRegularGrammar.cpp b/alib/src/grammar/RightRegularGrammar.cpp index e2c49a6b20e4405dcc9eff2bd75a08a8a1b126c6..2f7b4c5c8950bef253ebd489651339f46def0cc4 100644 --- a/alib/src/grammar/RightRegularGrammar.cpp +++ b/alib/src/grammar/RightRegularGrammar.cpp @@ -59,7 +59,7 @@ bool RightRegularGrammar::checkRightSide(const list<Symbol>& rightSide) const { //check if all symbols except the last are terminal symbols for (list<Symbol>::const_iterator symbol = rightSide.begin(); symbol != --rightSide.end(); symbol++) { - if (terminalSymbols.find(*symbol) != terminalSymbols.end()) { + if (terminalSymbols.find(*symbol) == terminalSymbols.end()) { return false; } } diff --git a/alib/src/grammar/Rule.cpp b/alib/src/grammar/Rule.cpp index 4d1af3ec699bded2468510f5f043a60d7d1c9bbc..0052bf55da4cc8afa11f90ba02c4974da2fb5d1d 100644 --- a/alib/src/grammar/Rule.cpp +++ b/alib/src/grammar/Rule.cpp @@ -53,6 +53,7 @@ bool Rule::operator <(const Rule& other) const { if (*left != *otherLeft) { return *left < *otherLeft; } + left ++; } list<Symbol>::const_iterator right = rightSide.begin(); @@ -61,6 +62,7 @@ bool Rule::operator <(const Rule& other) const { if (*right != *otherRight) { return *right < *otherRight; } + right ++; } return false;