(self)
| 154 | return self.parse_document_start() |
| 155 | |
| 156 | def parse_document_start(self): |
| 157 | |
| 158 | # Parse any extra document end indicators. |
| 159 | while self.check_token(DocumentEndToken): |
| 160 | self.get_token() |
| 161 | |
| 162 | # Parse an explicit document. |
| 163 | if not self.check_token(StreamEndToken): |
| 164 | token = self.peek_token() |
| 165 | start_mark = token.start_mark |
| 166 | version, tags = self.process_directives() |
| 167 | if not self.check_token(DocumentStartToken): |
| 168 | raise ParserError(None, None, |
| 169 | "expected '<document start>', but found %r" |
| 170 | % self.peek_token().id, |
| 171 | self.peek_token().start_mark) |
| 172 | token = self.get_token() |
| 173 | end_mark = token.end_mark |
| 174 | event = DocumentStartEvent(start_mark, end_mark, |
| 175 | explicit=True, version=version, tags=tags) |
| 176 | self.states.append(self.parse_document_end) |
| 177 | self.state = self.parse_document_content |
| 178 | else: |
| 179 | # Parse the end of the stream. |
| 180 | token = self.get_token() |
| 181 | event = StreamEndEvent(token.start_mark, token.end_mark) |
| 182 | assert not self.states |
| 183 | assert not self.marks |
| 184 | self.state = None |
| 185 | return event |
| 186 | |
| 187 | def parse_document_end(self): |
| 188 |
no test coverage detected