HandleDocument . Handles the next document . Throws a ParserException on error.
| 28 | // . Handles the next document |
| 29 | // . Throws a ParserException on error. |
| 30 | void SingleDocParser::HandleDocument(EventHandler& eventHandler) { |
| 31 | assert(!m_scanner.empty()); // guaranteed that there are tokens |
| 32 | assert(!m_curAnchor); |
| 33 | |
| 34 | eventHandler.OnDocumentStart(m_scanner.peek().mark); |
| 35 | |
| 36 | // eat doc start |
| 37 | if (m_scanner.peek().type == Token::DOC_START) |
| 38 | m_scanner.pop(); |
| 39 | |
| 40 | // recurse! |
| 41 | HandleNode(eventHandler); |
| 42 | |
| 43 | eventHandler.OnDocumentEnd(); |
| 44 | |
| 45 | // and finally eat any doc ends we see |
| 46 | while (!m_scanner.empty() && m_scanner.peek().type == Token::DOC_END) |
| 47 | m_scanner.pop(); |
| 48 | } |
| 49 | |
| 50 | void SingleDocParser::HandleNode(EventHandler& eventHandler) { |
| 51 | DepthGuard<500> depthguard(depth, m_scanner.mark(), ErrorMsg::BAD_FILE); |
no test coverage detected