| 1055 | } |
| 1056 | |
| 1057 | bool Reader::recoverFromError(TokenType skipUntilToken) |
| 1058 | { |
| 1059 | size_t const errorCount = errors_.size(); |
| 1060 | Token skip; |
| 1061 | for (;;) |
| 1062 | { |
| 1063 | if (!readToken(skip)) |
| 1064 | errors_.resize(errorCount); // discard errors caused by recovery |
| 1065 | if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream) |
| 1066 | break; |
| 1067 | } |
| 1068 | errors_.resize(errorCount); |
| 1069 | return false; |
| 1070 | } |
| 1071 | |
| 1072 | bool Reader::addErrorAndRecover(const String &message, Token &token, TokenType skipUntilToken) |
| 1073 | { |