| 927 | } |
| 928 | |
| 929 | bool Reader::recoverFromError(TokenType skipUntilToken) { |
| 930 | int errorCount = int(errors_.size()); |
| 931 | Token skip; |
| 932 | for (;;) { |
| 933 | if (!readToken(skip)) |
| 934 | errors_.resize(errorCount); // discard errors caused by recovery |
| 935 | if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream) |
| 936 | break; |
| 937 | } |
| 938 | errors_.resize(errorCount); |
| 939 | return false; |
| 940 | } |
| 941 | |
| 942 | bool Reader::addErrorAndRecover(const std::string& message, |
| 943 | Token& token, |