| 12227 | } |
| 12228 | } |
| 12229 | function speculationHelper(callback, isLookahead) { |
| 12230 | var savePos = pos; |
| 12231 | var saveStartPos = startPos; |
| 12232 | var saveTokenPos = tokenPos; |
| 12233 | var saveToken = token; |
| 12234 | var saveTokenValue = tokenValue; |
| 12235 | var saveTokenFlags = tokenFlags; |
| 12236 | var result = callback(); |
| 12237 | // If our callback returned something 'falsy' or we're just looking ahead, |
| 12238 | // then unconditionally restore us to where we were. |
| 12239 | if (!result || isLookahead) { |
| 12240 | pos = savePos; |
| 12241 | startPos = saveStartPos; |
| 12242 | tokenPos = saveTokenPos; |
| 12243 | token = saveToken; |
| 12244 | tokenValue = saveTokenValue; |
| 12245 | tokenFlags = saveTokenFlags; |
| 12246 | } |
| 12247 | return result; |
| 12248 | } |
| 12249 | function scanRange(start, length, callback) { |
| 12250 | var saveEnd = end; |
| 12251 | var savePos = pos; |