| 1000 | } |
| 1001 | |
| 1002 | bool OurReader::recoverFromError(TokenType skipUntilToken) { |
| 1003 | size_t errorCount = errors_.size(); |
| 1004 | Token skip; |
| 1005 | for (;;) { |
| 1006 | if (!readToken(skip)) |
| 1007 | errors_.resize(errorCount); // discard errors caused by recovery |
| 1008 | if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream) |
| 1009 | break; |
| 1010 | } |
| 1011 | errors_.resize(errorCount); |
| 1012 | return false; |
| 1013 | } |
| 1014 | |
| 1015 | bool OurReader::addErrorAndRecover(const StringContainer& message, Token& token, TokenType skipUntilToken) { |
| 1016 | addError(message, token); |