| 314 | } |
| 315 | |
| 316 | void Scanner::PopIndentToHere() { |
| 317 | // are we in flow? |
| 318 | if (InFlowContext()) { |
| 319 | return; |
| 320 | } |
| 321 | |
| 322 | // now pop away |
| 323 | while (!m_indents.empty()) { |
| 324 | const IndentMarker& indent = *m_indents.top(); |
| 325 | if (indent.column < INPUT.column()) { |
| 326 | break; |
| 327 | } |
| 328 | if (indent.column == INPUT.column() && |
| 329 | !(indent.type == IndentMarker::SEQ && |
| 330 | !Exp::BlockEntry().Matches(INPUT))) { |
| 331 | break; |
| 332 | } |
| 333 | |
| 334 | PopIndent(); |
| 335 | } |
| 336 | |
| 337 | while (!m_indents.empty() && |
| 338 | m_indents.top()->status == IndentMarker::INVALID) { |
| 339 | PopIndent(); |
| 340 | } |
| 341 | } |
| 342 | |
| 343 | void Scanner::PopAllIndents() { |
| 344 | // are we in flow? |