Changeset 127 for pyyaml/branches/working-on-emitter/lib/yaml/parser.py
- Timestamp:
- 03/26/06 17:57:23 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pyyaml/branches/working-on-emitter/lib/yaml/parser.py
r121 r127 131 131 # Parse start of stream. 132 132 token = self.scanner.get() 133 yield StreamStartEvent(token.start_mark, token.end_mark) 133 yield StreamStartEvent(token.start_mark, token.end_mark, 134 encoding=token.encoding) 134 135 135 136 # Parse implicit document. … … 139 140 token = self.scanner.peek() 140 141 start_mark = end_mark = token.start_mark 141 yield DocumentStartEvent(start_mark, end_mark )142 yield DocumentStartEvent(start_mark, end_mark, implicit=True) 142 143 for event in self.parse_block_node(): 143 144 yield event … … 153 154 token = self.scanner.peek() 154 155 start_mark = token.start_mark 155 self.process_directives()156 version, tags = self.process_directives() 156 157 if not self.scanner.check(DocumentStartToken): 157 158 raise ParserError(None, None, … … 161 162 token = self.scanner.get() 162 163 end_mark = token.end_mark 163 yield DocumentStartEvent(start_mark, end_mark) 164 yield DocumentStartEvent(start_mark, end_mark, 165 implicit=False, version=version, tags=tags) 164 166 if self.scanner.check(DirectiveToken, 165 167 DocumentStartToken, DocumentEndToken, StreamEndToken): … … 202 204 token.start_mark) 203 205 self.tag_handles[handle] = prefix 206 version_value = self.yaml_version 207 tags_value = None 208 if self.tag_handles: 209 tags_value = self.tag_handles.copy() 204 210 for key in self.DEFAULT_TAGS: 205 211 if key not in self.tag_handles: 206 212 self.tag_handles[key] = self.DEFAULT_TAGS[key] 213 return version_value, tags_value 207 214 208 215 def parse_block_node(self): … … 233 240 if self.scanner.check(AnchorToken): 234 241 token = self.scanner.get() 235 start_mark = end_mark = token.start_mark 242 start_mark = token.start_mark 243 end_mark = token.end_mark 236 244 anchor = token.value 237 245 if self.scanner.check(TagToken): 238 246 token = self.scanner.get() 239 end_mark = tag_mark = token.start_mark 247 tag_mark = token.start_mark 248 end_mark = token.end_mark 240 249 tag = token.value 241 250 elif self.scanner.check(TagToken): 242 251 token = self.scanner.get() 243 start_mark = end_mark = tag_mark = token.start_mark 252 start_mark = tag_mark = token.start_mark 253 end_mark = token.end_mark 244 254 tag = token.value 245 255 if self.scanner.check(AnchorToken): 246 256 token = self.scanner.get() 247 end_mark = token. start_mark257 end_mark = token.end_mark 248 258 anchor = token.value 249 259 if tag is not None: … … 262 272 tag = u'!' 263 273 if start_mark is None: 264 start_mark = self.scanner.peek().start_mark274 start_mark = end_mark = self.scanner.peek().start_mark 265 275 event = None 266 276 collection_events = None 267 277 if indentless_sequence and self.scanner.check(BlockEntryToken): 268 278 end_mark = self.scanner.peek().end_mark 269 event = SequenceEvent(anchor, tag, start_mark, end_mark) 279 event = SequenceEvent(anchor, tag, start_mark, end_mark, 280 flow=False, compact=False) 270 281 collection_events = self.parse_indentless_sequence() 271 282 else: … … 274 285 end_mark = token.end_mark 275 286 event = ScalarEvent(anchor, tag, token.value, 276 start_mark, end_mark) 287 start_mark, end_mark, 288 implicit=(tag is None), style=token.style) 277 289 elif self.scanner.check(FlowSequenceStartToken): 278 290 end_mark = self.scanner.peek().end_mark 279 event = SequenceEvent(anchor, tag, start_mark, end_mark) 291 event = SequenceEvent(anchor, tag, start_mark, end_mark, 292 flow=True) 280 293 collection_events = self.parse_flow_sequence() 281 294 elif self.scanner.check(FlowMappingStartToken): 282 295 end_mark = self.scanner.peek().end_mark 283 event = MappingEvent(anchor, tag, start_mark, end_mark) 296 event = MappingEvent(anchor, tag, start_mark, end_mark, 297 flow=True) 284 298 collection_events = self.parse_flow_mapping() 285 299 elif block and self.scanner.check(BlockSequenceStartToken): 286 300 end_mark = self.scanner.peek().start_mark 287 event = SequenceEvent(anchor, tag, start_mark, end_mark) 301 compact = self.scanner.peek().inline 302 event = SequenceEvent(anchor, tag, start_mark, end_mark, 303 flow=False, compact=compact) 288 304 collection_events = self.parse_block_sequence() 289 305 elif block and self.scanner.check(BlockMappingStartToken): 290 306 end_mark = self.scanner.peek().start_mark 291 event = MappingEvent(anchor, tag, start_mark, end_mark) 307 compact = self.scanner.peek().inline 308 event = MappingEvent(anchor, tag, start_mark, end_mark, 309 flow=False, compact=compact) 292 310 collection_events = self.parse_block_mapping() 311 elif anchor is not None or tag is not None: 312 # Empty scalars are allowed even if a tag or an anchor is 313 # specified. 314 event = ScalarEvent(anchor, tag, u'', start_mark, end_mark, 315 implicit=False, style='') 293 316 else: 294 317 if block: … … 385 408 token = self.scanner.get() 386 409 yield MappingEvent(None, u'!', 387 token.start_mark, token.end_mark) 410 token.start_mark, token.end_mark, 411 flow=True, compact=True) 388 412 if not self.scanner.check(ValueToken, 389 413 FlowEntryToken, FlowSequenceEndToken): … … 461 485 462 486 def process_empty_scalar(self, mark): 463 return ScalarEvent(None, None, u'', mark, mark )464 487 return ScalarEvent(None, None, u'', mark, mark, implicit=True) 488
Note: See TracChangeset
for help on using the changeset viewer.
