Changeset 116
- Timestamp:
- 03/18/06 08:37:09 (3 years ago)
- Files:
-
- pyyaml/trunk/lib/yaml/composer.py (modified) (5 diffs)
- pyyaml/trunk/lib/yaml/constructor.py (modified) (12 diffs)
- pyyaml/trunk/lib/yaml/error.py (modified) (2 diffs)
- pyyaml/trunk/lib/yaml/events.py (modified) (3 diffs)
- pyyaml/trunk/lib/yaml/nodes.py (modified) (1 diff)
- pyyaml/trunk/lib/yaml/parser.py (modified) (21 diffs)
- pyyaml/trunk/lib/yaml/reader.py (modified) (3 diffs)
- pyyaml/trunk/lib/yaml/scanner.py (modified) (52 diffs)
- pyyaml/trunk/lib/yaml/tokens.py (modified) (3 diffs)
- pyyaml/trunk/tests/data/test_mark.marks (moved) (moved from pyyaml/trunk/tests/data/test_marker.markers)
- pyyaml/trunk/tests/test_mark.py (moved) (moved from pyyaml/trunk/tests/test_marker.py) (3 diffs)
- pyyaml/trunk/tests/test_yaml.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pyyaml/trunk/lib/yaml/composer.py
r57 r116 42 42 if anchor not in self.all_anchors: 43 43 raise ComposerError(None, None, "found undefined alias %r" 44 % anchor.encode('utf-8'), event.start_mark er)44 % anchor.encode('utf-8'), event.start_mark) 45 45 if anchor not in self.complete_anchors: 46 46 collection_event = self.all_anchors[anchor] 47 47 raise ComposerError("while composing a collection", 48 collection_event.start_mark er,48 collection_event.start_mark, 49 49 "found recursive anchor %r" % anchor.encode('utf-8'), 50 event.start_mark er)50 event.start_mark) 51 51 return self.complete_anchors[anchor] 52 52 event = self.parser.peek() … … 55 55 if anchor in self.all_anchors: 56 56 raise ComposerError("found duplicate anchor %r; first occurence" 57 % anchor.encode('utf-8'), self.all_anchors[anchor].start_mark er,58 "second occurence", event.start_mark er)57 % anchor.encode('utf-8'), self.all_anchors[anchor].start_mark, 58 "second occurence", event.start_mark) 59 59 self.all_anchors[anchor] = event 60 60 if self.parser.check(ScalarEvent): … … 71 71 event = self.parser.get() 72 72 return ScalarNode(event.tag, event.value, 73 event.start_mark er, event.end_marker)73 event.start_mark, event.end_mark) 74 74 75 75 def compose_sequence_node(self): … … 80 80 end_event = self.parser.get() 81 81 return SequenceNode(start_event.tag, value, 82 start_event.start_mark er, end_event.end_marker)82 start_event.start_mark, end_event.end_mark) 83 83 84 84 def compose_mapping_node(self): … … 90 90 item_value = self.compose_node() 91 91 if item_key in value: 92 raise ComposerError("while composing a mapping", start_event.start_mark er,93 "found duplicate key", key_event.start_mark er)92 raise ComposerError("while composing a mapping", start_event.start_mark, 93 "found duplicate key", key_event.start_mark) 94 94 value[item_key] = item_value 95 95 end_event = self.parser.get() 96 96 return MappingNode(start_event.tag, value, 97 start_event.start_mark er, end_event.end_marker)97 start_event.start_mark, end_event.end_mark) 98 98 pyyaml/trunk/lib/yaml/constructor.py
r59 r116 71 71 raise ConstructorError(None, None, 72 72 "expected a scalar node, but found %s" % node.id, 73 node.start_mark er)73 node.start_mark) 74 74 return node.value 75 75 … … 78 78 raise ConstructorError(None, None, 79 79 "expected a sequence node, but found %s" % node.id, 80 node.start_mark er)80 node.start_mark) 81 81 return [self.construct_object(child) for child in node.value] 82 82 … … 85 85 raise ConstructorError(None, None, 86 86 "expected a mapping node, but found %s" % node.id, 87 node.start_mark er)87 node.start_mark) 88 88 mapping = {} 89 89 merge = None … … 91 91 if key_node.tag == u'tag:yaml.org,2002:merge': 92 92 if merge is not None: 93 raise ConstructorError("while constructing a mapping", node.start_mark er,94 "found duplicate merge key", key_node.start_mark er)93 raise ConstructorError("while constructing a mapping", node.start_mark, 94 "found duplicate merge key", key_node.start_mark) 95 95 value_node = node.value[key_node] 96 96 if isinstance(value_node, MappingNode): … … 101 101 if not isinstance(subnode, MappingNode): 102 102 raise ConstructorError("while constructing a mapping", 103 node.start_mark er,103 node.start_mark, 104 104 "expected a mapping for merging, but found %s" 105 % subnode.id, subnode.start_mark er)105 % subnode.id, subnode.start_mark) 106 106 merge.append(self.construct_mapping(subnode)) 107 107 merge.reverse() 108 108 else: 109 raise ConstructorError("while constructing a mapping", node.start_mark er,109 raise ConstructorError("while constructing a mapping", node.start_mark, 110 110 "expected a mapping or list of mappings for merging, but found %s" 111 % value_node.id, value_node.start_mark er)111 % value_node.id, value_node.start_mark) 112 112 elif key_node.tag == u'tag:yaml.org,2002:value': 113 113 if '=' in mapping: 114 raise ConstructorError("while construction a mapping", node.start_mark er,115 "found duplicate value key", key_node.start_mark er)114 raise ConstructorError("while construction a mapping", node.start_mark, 115 "found duplicate value key", key_node.start_mark) 116 116 value = self.construct_object(node.value[key_node]) 117 117 mapping['='] = value … … 121 121 duplicate_key = key in mapping 122 122 except TypeError, exc: 123 raise ConstructorError("while constructing a mapping", node.start_mark er,124 "found unacceptable key (%s)" % exc, key_node.start_mark er)123 raise ConstructorError("while constructing a mapping", node.start_mark, 124 "found unacceptable key (%s)" % exc, key_node.start_mark) 125 125 if duplicate_key: 126 raise ConstructorError("while constructing a mapping", node.start_mark er,127 "found duplicate key", key_node.start_mark er)126 raise ConstructorError("while constructing a mapping", node.start_mark, 127 "found duplicate key", key_node.start_mark) 128 128 value = self.construct_object(node.value[key_node]) 129 129 mapping[key] = value … … 139 139 raise ConstructorError(None, None, 140 140 "expected a mapping node, but found %s" % node.id, 141 node.start_mark er)141 node.start_mark) 142 142 pairs = [] 143 143 for key_node in node.value: … … 235 235 except (binascii.Error, UnicodeEncodeError), exc: 236 236 raise ConstructorError(None, None, 237 "failed to decode base64 data: %s" % exc, node.start_mark er)237 "failed to decode base64 data: %s" % exc, node.start_mark) 238 238 239 239 timestamp_regexp = re.compile( … … 272 272 # CPU-expensive. 273 273 if not isinstance(node, SequenceNode): 274 raise ConstructorError("while constructing an ordered map", node.start_mark er,275 "expected a sequence, but found %s" % node.id, node.start_mark er)274 raise ConstructorError("while constructing an ordered map", node.start_mark, 275 "expected a sequence, but found %s" % node.id, node.start_mark) 276 276 omap = [] 277 277 for subnode in node.value: 278 278 if not isinstance(subnode, MappingNode): 279 raise ConstructorError("while constructing an ordered map", node.start_mark er,279 raise ConstructorError("while constructing an ordered map", node.start_mark, 280 280 "expected a mapping of length 1, but found %s" % subnode.id, 281 subnode.start_mark er)281 subnode.start_mark) 282 282 if len(subnode.value) != 1: 283 raise ConstructorError("while constructing an ordered map", node.start_mark er,283 raise ConstructorError("while constructing an ordered map", node.start_mark, 284 284 "expected a single mapping item, but found %d items" % len(subnode.value), 285 subnode.start_mark er)285 subnode.start_mark) 286 286 key_node = subnode.value.keys()[0] 287 287 key = self.construct_object(key_node) … … 293 293 # Note: the same code as `construct_yaml_omap`. 294 294 if not isinstance(node, SequenceNode): 295 raise ConstructorError("while constructing pairs", node.start_mark er,296 "expected a sequence, but found %s" % node.id, node.start_mark er)295 raise ConstructorError("while constructing pairs", node.start_mark, 296 "expected a sequence, but found %s" % node.id, node.start_mark) 297 297 pairs = [] 298 298 for subnode in node.value: 299 299 if not isinstance(subnode, MappingNode): 300 raise ConstructorError("while constructing pairs", node.start_mark er,300 raise ConstructorError("while constructing pairs", node.start_mark, 301 301 "expected a mapping of length 1, but found %s" % subnode.id, 302 subnode.start_mark er)302 subnode.start_mark) 303 303 if len(subnode.value) != 1: 304 raise ConstructorError("while constructing pairs", node.start_mark er,304 raise ConstructorError("while constructing pairs", node.start_mark, 305 305 "expected a single mapping item, but found %d items" % len(subnode.value), 306 subnode.start_mark er)306 subnode.start_mark) 307 307 key_node = subnode.value.keys()[0] 308 308 key = self.construct_object(key_node) … … 331 331 raise ConstructorError(None, None, 332 332 "could not determine a constructor for the tag %r" % node.tag.encode('utf-8'), 333 node.start_mark er)333 node.start_mark) 334 334 335 335 Constructor.add_constructor( … … 403 403 raise ConstructorError(None, None, 404 404 "found undefined constructor for the tag %r" 405 % node.tag.encode('utf-8'), node.start_mark er)405 % node.tag.encode('utf-8'), node.start_mark) 406 406 from_yaml = classmethod(from_yaml) 407 407 pyyaml/trunk/lib/yaml/error.py
r53 r116 1 1 2 __all__ = ['Mark er', 'YAMLError', 'MarkedYAMLError']2 __all__ = ['Mark', 'YAMLError', 'MarkedYAMLError'] 3 3 4 class Mark er:4 class Mark: 5 5 6 6 def __init__(self, name, line, column, buffer, pointer): … … 47 47 class MarkedYAMLError(YAMLError): 48 48 49 def __init__(self, context=None, context_mark er=None,50 problem=None, problem_mark er=None):49 def __init__(self, context=None, context_mark=None, 50 problem=None, problem_mark=None): 51 51 self.context = context 52 self.context_mark er = context_marker52 self.context_mark = context_mark 53 53 self.problem = problem 54 self.problem_mark er = problem_marker54 self.problem_mark = problem_mark 55 55 56 56 def __str__(self): 57 57 lines = [] 58 #for (place, mark er) in [(self.context, self.context_marker),59 # (self.problem, self.problem_mark er)]:58 #for (place, mark) in [(self.context, self.context_mark), 59 # (self.problem, self.problem_mark)]: 60 60 # if place is not None: 61 61 # lines.append(place) 62 # if mark eris not None:63 # lines.append(str(mark er))62 # if mark is not None: 63 # lines.append(str(mark)) 64 64 if self.context is not None: 65 65 lines.append(self.context) 66 if self.context_mark eris not None \67 and (self.problem is None or self.problem_mark eris None68 or self.context_mark er.name != self.problem_marker.name69 or self.context_mark er.line != self.problem_marker.line70 or self.context_mark er.column != self.problem_marker.column):71 lines.append(str(self.context_mark er))66 if self.context_mark is not None \ 67 and (self.problem is None or self.problem_mark is None 68 or self.context_mark.name != self.problem_mark.name 69 or self.context_mark.line != self.problem_mark.line 70 or self.context_mark.column != self.problem_mark.column): 71 lines.append(str(self.context_mark)) 72 72 if self.problem is not None: 73 73 lines.append(self.problem) 74 if self.problem_mark eris not None:75 lines.append(str(self.problem_mark er))74 if self.problem_mark is not None: 75 lines.append(str(self.problem_mark)) 76 76 return '\n'.join(lines) 77 77 pyyaml/trunk/lib/yaml/events.py
r53 r116 1 1 2 2 class Event: 3 def __init__(self, start_mark er, end_marker):4 self.start_mark er = start_marker5 self.end_mark er = end_marker3 def __init__(self, start_mark, end_mark): 4 self.start_mark = start_mark 5 self.end_mark = end_mark 6 6 def __repr__(self): 7 7 attributes = [key for key in self.__dict__ 8 if not key.endswith('_mark er')]8 if not key.endswith('_mark')] 9 9 attributes.sort() 10 10 arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) … … 13 13 14 14 class NodeEvent(Event): 15 def __init__(self, anchor, start_mark er, end_marker):15 def __init__(self, anchor, start_mark, end_mark): 16 16 self.anchor = anchor 17 self.start_mark er = start_marker18 self.end_mark er = end_marker17 self.start_mark = start_mark 18 self.end_mark = end_mark 19 19 20 20 class AliasEvent(NodeEvent): … … 22 22 23 23 class ScalarEvent(NodeEvent): 24 def __init__(self, anchor, tag, value, start_mark er, end_marker):24 def __init__(self, anchor, tag, value, start_mark, end_mark): 25 25 self.anchor = anchor 26 26 self.tag = tag 27 27 self.value = value 28 self.start_mark er = start_marker29 self.end_mark er = end_marker28 self.start_mark = start_mark 29 self.end_mark = end_mark 30 30 31 31 class CollectionEvent(NodeEvent): 32 def __init__(self, anchor, tag, start_mark er, end_marker):32 def __init__(self, anchor, tag, start_mark, end_mark): 33 33 self.anchor = anchor 34 34 self.tag = tag 35 self.start_mark er = start_marker36 self.end_mark er = end_marker35 self.start_mark = start_mark 36 self.end_mark = end_mark 37 37 38 38 class SequenceEvent(CollectionEvent): pyyaml/trunk/lib/yaml/nodes.py
r55 r116 1 1 2 2 class Node: 3 def __init__(self, tag, value, start_mark er, end_marker):3 def __init__(self, tag, value, start_mark, end_mark): 4 4 self.tag = tag 5 5 self.value = value 6 self.start_mark er = start_marker7 self.end_mark er = end_marker6 self.start_mark = start_mark 7 self.end_mark = end_mark 8 8 def __repr__(self): 9 9 value = self.value pyyaml/trunk/lib/yaml/parser.py
r57 r116 143 143 "expected '<document start>', but found %r" 144 144 % self.scanner.peek().id, 145 self.scanner.peek().start_mark er)145 self.scanner.peek().start_mark) 146 146 token = self.scanner.get() 147 147 if self.scanner.check(DirectiveToken, 148 148 DocumentStartToken, DocumentEndToken, StreamEndToken): 149 yield self.process_empty_scalar(token.end_mark er)149 yield self.process_empty_scalar(token.end_mark) 150 150 else: 151 151 for event in self.parse_block_node(): … … 156 156 # Parse end of stream. 157 157 token = self.scanner.get() 158 yield StreamEndEvent(token.start_mark er, token.end_marker)158 yield StreamEndEvent(token.start_mark, token.end_mark) 159 159 160 160 def process_directives(self): … … 167 167 if self.yaml_version is not None: 168 168 raise ParserError(None, None, 169 "found duplicate YAML directive", token.start_mark er)169 "found duplicate YAML directive", token.start_mark) 170 170 major, minor = token.value 171 171 if major != 1: 172 172 raise ParserError(None, None, 173 173 "found incompatible YAML document (version 1.* is required)", 174 token.start_mark er)174 token.start_mark) 175 175 self.yaml_version = token.value 176 176 elif token.name == u'TAG': … … 179 179 raise ParserError(None, None, 180 180 "duplicate tag handle %r" % handle.encode('utf-8'), 181 token.start_mark er)181 token.start_mark) 182 182 self.tag_handles[handle] = prefix 183 183 for key in self.DEFAULT_TAGS: … … 205 205 if self.scanner.check(AliasToken): 206 206 token = self.scanner.get() 207 yield AliasEvent(token.value, token.start_mark er, token.end_marker)207 yield AliasEvent(token.value, token.start_mark, token.end_mark) 208 208 else: 209 209 anchor = None 210 210 tag = None 211 start_mark er = end_marker = tag_marker= None211 start_mark = end_mark = tag_mark = None 212 212 if self.scanner.check(AnchorToken): 213 213 token = self.scanner.get() 214 start_mark er = end_marker = token.start_marker214 start_mark = end_mark = token.start_mark 215 215 anchor = token.value 216 216 if self.scanner.check(TagToken): 217 217 token = self.scanner.get() 218 end_mark er = tag_marker = token.start_marker218 end_mark = tag_mark = token.start_mark 219 219 tag = token.value 220 220 elif self.scanner.check(TagToken): 221 221 token = self.scanner.get() 222 start_mark er = end_marker = tag_marker = token.start_marker222 start_mark = end_mark = tag_mark = token.start_mark 223 223 tag = token.value 224 224 if self.scanner.check(AnchorToken): 225 225 token = self.scanner.get() 226 end_mark er = token.start_marker226 end_mark = token.start_mark 227 227 anchor = token.value 228 228 if tag is not None: … … 230 230 if handle is not None: 231 231 if handle not in self.tag_handles: 232 raise ParserError("while parsing a node", start_mark er,232 raise ParserError("while parsing a node", start_mark, 233 233 "found undefined tag handle %r" % handle.encode('utf-8'), 234 tag_mark er)234 tag_mark) 235 235 tag = self.tag_handles[handle]+suffix 236 236 else: … … 240 240 self.scanner.peek().plain): 241 241 tag = u'!' 242 if start_mark eris None:243 start_mark er = self.scanner.peek().start_marker242 if start_mark is None: 243 start_mark = self.scanner.peek().start_mark 244 244 event = None 245 245 collection_events = None 246 246 if indentless_sequence and self.scanner.check(BlockEntryToken): 247 end_mark er = self.scanner.peek().end_marker248 event = SequenceEvent(anchor, tag, start_mark er, end_marker)247 end_mark = self.scanner.peek().end_mark 248 event = SequenceEvent(anchor, tag, start_mark, end_mark) 249 249 collection_events = self.parse_indentless_sequence() 250 250 else: 251 251 if self.scanner.check(ScalarToken): 252 252 token = self.scanner.get() 253 end_mark er = token.end_marker253 end_mark = token.end_mark 254 254 event = ScalarEvent(anchor, tag, token.value, 255 start_mark er, end_marker)255 start_mark, end_mark) 256 256 elif self.scanner.check(FlowSequenceStartToken): 257 end_mark er = self.scanner.peek().end_marker258 event = SequenceEvent(anchor, tag, start_mark er, end_marker)257 end_mark = self.scanner.peek().end_mark 258 event = SequenceEvent(anchor, tag, start_mark, end_mark) 259 259 collection_events = self.parse_flow_sequence() 260 260 elif self.scanner.check(FlowMappingStartToken): 261 end_mark er = self.scanner.peek().end_marker262 event = MappingEvent(anchor, tag, start_mark er, end_marker)261 end_mark = self.scanner.peek().end_mark 262 event = MappingEvent(anchor, tag, start_mark, end_mark) 263 263 collection_events = self.parse_flow_mapping() 264 264 elif block and self.scanner.check(BlockSequenceStartToken): 265 end_mark er = self.scanner.peek().start_marker266 event = SequenceEvent(anchor, tag, start_mark er, end_marker)265 end_mark = self.scanner.peek().start_mark 266 event = SequenceEvent(anchor, tag, start_mark, end_mark) 267 267 collection_events = self.parse_block_sequence() 268 268 elif block and self.scanner.check(BlockMappingStartToken): 269 end_mark er = self.scanner.peek().start_marker270 event = MappingEvent(anchor, tag, start_mark er, end_marker)269 end_mark = self.scanner.peek().start_mark 270 event = MappingEvent(anchor, tag, start_mark, end_mark) 271 271 collection_events = self.parse_block_mapping() 272 272 else: … … 276 276 node = 'flow' 277 277 token = self.scanner.peek() 278 raise ParserError("while scanning a %s node" % node, start_mark er,278 raise ParserError("while scanning a %s node" % node, start_mark, 279 279 "expected the node content, but found %r" % token.id, 280 token.start_mark er)280 token.start_mark) 281 281 yield event 282 282 if collection_events is not None: … … 287 287 # BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END 288 288 token = self.scanner.get() 289 start_mark er = token.start_marker289 start_mark = token.start_mark 290 290 while self.scanner.check(BlockEntryToken): 291 291 token = self.scanner.get() … … 294 294 yield event 295 295 else: 296 yield self.process_empty_scalar(token.end_mark er)296 yield self.process_empty_scalar(token.end_mark) 297 297 if not self.scanner.check(BlockEndToken): 298 298 token = self.scanner.peek() 299 raise ParserError("while scanning a block collection", start_mark er,300 "expected <block end>, but found %r" % token.id, token.start_mark er)301 token = self.scanner.get() 302 yield CollectionEndEvent(token.start_mark er, token.end_marker)299 raise ParserError("while scanning a block collection", start_mark, 300 "expected <block end>, but found %r" % token.id, token.start_mark) 301 token = self.scanner.get() 302 yield CollectionEndEvent(token.start_mark, token.end_mark) 303 303 304 304 def parse_indentless_sequence(self): … … 311 311 yield event 312 312 else: 313 yield self.process_empty_scalar(token.end_mark er)313 yield self.process_empty_scalar(token.end_mark) 314 314 token = self.scanner.peek() 315 yield CollectionEndEvent(token.start_mark er, token.start_marker)315 yield CollectionEndEvent(token.start_mark, token.start_mark) 316 316 317 317 def parse_block_mapping(self): … … 321 321 # BLOCK-END 322 322 token = self.scanner.get() 323 start_mark er = token.start_marker323 start_mark = token.start_mark 324 324 while self.scanner.check(KeyToken, ValueToken): 325 325 if self.scanner.check(KeyToken): … … 329 329 yield event 330 330 else: 331 yield self.process_empty_scalar(token.end_mark er)331 yield self.process_empty_scalar(token.end_mark) 332 332 if self.scanner.check(ValueToken): 333 333 token = self.scanner.get() … … 336 336 yield event 337 337 else: 338 yield self.process_empty_scalar(token.end_mark er)338 yield self.process_empty_scalar(token.end_mark) 339 339 else: 340 340 token = self.scanner.peek() 341 yield self.process_empty_scalar(token.start_mark er)341 yield self.process_empty_scalar(token.start_mark) 342 342 if not self.scanner.check(BlockEndToken): 343 343 token = self.scanner.peek() 344 raise ParserError("while scanning a block mapping", start_mark er,345 "expected <block end>, but found %r" % token.id, token.start_mark er)346 token = self.scanner.get() 347 yield CollectionEndEvent(token.start_mark er, token.end_marker)344 raise ParserError("while scanning a block mapping", start_mark, 345 "expected <block end>, but found %r" % token.id, token.start_mark) 346 token = self.scanner.get() 347 yield CollectionEndEvent(token.start_mark, token.end_mark) 348 348 349 349 def parse_flow_sequence(self): … … 359 359 # generate an inline mapping (set syntax). 360 360 token = self.scanner.get() 361 start_mark er = token.start_marker361 start_mark = token.start_mark 362 362 while not self.scanner.check(FlowSequenceEndToken): 363 363 if self.scanner.check(KeyToken): 364 364 token = self.scanner.get() 365 365 yield MappingEvent(None, u'!', 366 token.start_mark er, token.end_marker)366 token.start_mark, token.end_mark) 367 367 if not self.scanner.check(ValueToken, 368 368 FlowEntryToken, FlowSequenceEndToken): … … 370 370 yield event 371 371 else: 372 yield self.process_empty_scalar(token.end_mark er)372 yield self.process_empty_scalar(token.end_mark) 373 373 if self.scanner.check(ValueToken): 374 374 token = self.scanner.get() … … 377 377 yield event 378 378 else: 379 yield self.process_empty_scalar(token.end_mark er)379 yield self.process_empty_scalar(token.end_mark) 380 380 else: 381 381 token = self.scanner.peek() 382 yield self.process_empty_scalar(token.start_mark er)382 yield self.process_empty_scalar(token.start_mark) 383 383 token = self.scanner.peek() 384 yield CollectionEndEvent(token.start_mark er, token.start_marker)384 yield CollectionEndEvent(token.start_mark, token.start_mark) 385 385 else: 386 386 for event in self.parse_flow_node(): … … 388 388 if not self.scanner.check(FlowEntryToken, FlowSequenceEndToken): 389 389 token = self.scanner.peek() 390 raise ParserError("while scanning a flow sequence", start_mark er,391 "expected ',' or ']', but got %r" % token.id, token.start_mark er)390 raise ParserError("while scanning a flow sequence", start_mark, 391 "expected ',' or ']', but got %r" % token.id, token.start_mark) 392 392 if self.scanner.check(FlowEntryToken): 393 393 self.scanner.get() 394 394 token = self.scanner.get() 395 yield CollectionEndEvent(token.start_mark er, token.end_marker)395 yield CollectionEndEvent(token.start_mark, token.end_mark) 396 396 397 397 def parse_flow_mapping(self): … … 402 402 # flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? 403 403 token = self.scanner.get() 404 start_mark er = token.start_marker404 start_mark = token.start_mark 405 405 while not self.scanner.check(FlowMappingEndToken): 406 406 if self.scanner.check(KeyToken): … … 411 411 yield event 412 412 else: 413 yield self.process_empty_scalar(token.end_mark er)413 yield self.process_empty_scalar(token.end_mark) 414 414 if self.scanner.check(ValueToken): 415 415 token = self.scanner.get() … … 418 418 yield event 419 419 else: 420 yield self.process_empty_scalar(token.end_mark er)420 yield self.process_empty_scalar(token.end_mark) 421 421 else: 422 422 token = self.scanner.peek() 423 yield self.process_empty_scalar(token.start_mark er)423 yield self.process_empty_scalar(token.start_mark) 424 424 else: 425 425 for event in self.parse_flow_node(): 426 426 yield event 427 yield self.process_empty_scalar(self.scanner.peek().start_mark er)427 yield self.process_empty_scalar(self.scanner.peek().start_mark) 428 428 if not self.scanner.check(FlowEntryToken, FlowMappingEndToken): 429 429 token = self.scanner.peek() 430 raise ParserError("while scanning a flow mapping", start_mark er,431 "expected ',' or '}', but got %r" % token.id, token.start_mark er)430 raise ParserError("while scanning a flow mapping", start_mark, 431 "expected ',' or '}', but got %r" % token.id, token.start_mark) 432 432 if self.scanner.check(FlowEntryToken): 433 433 self.scanner.get() 434 434 if not self.scanner.check(FlowMappingEndToken): 435 435 token = self.scanner.peek() 436 raise ParserError("while scanning a flow mapping", start_mark er,437 "expected '}', but found %r" % token.id, token.start_mark er)438 token = self.scanner.get() 439 yield CollectionEndEvent(token.start_mark er, token.end_marker)440 441 def process_empty_scalar(self, mark er):442 return ScalarEvent(None, None, u'', mark er, marker)443 436 raise ParserError("while scanning a flow mapping", start_mark, 437 "expected '}', but found %r" % token.id, token.start_mark) 438 token = self.scanner.get() 439 yield CollectionEndEvent(token.start_mark, token.end_mark) 440 441 def process_empty_scalar(self, mark): 442 return ScalarEvent(None, None, u'', mark, mark) 443 pyyaml/trunk/lib/yaml/reader.py
r52 r116 4 4 # We define two classes here. 5 5 # 6 # Mark er(source, line, column)6 # Mark(source, line, column) 7 7 # It's just a record and its only use is producing nice error messages. 8 8 # Parser does not use it for any other purposes. … … 18 18 __all__ = ['Reader', 'ReaderError'] 19 19 20 from error import YAMLError, Mark er20 from error import YAMLError, Mark 21 21 22 22 import codecs, re … … 143 143 self.column += 1 144 144 145 def get_mark er(self):145 def get_mark(self): 146 146 if self.stream is None: 147 return Mark er(self.name, self.line, self.column,147 return Mark(self.name, self.line, self.column, 148 148 self.buffer, self.pointer) 149 149 else: 150 return Mark er(self.name, self.line, self.column, None, None)150 return Mark(self.name, self.line, self.column, None, None) 151 151 152 152 def determine_encoding(self): pyyaml/trunk/lib/yaml/scanner.py
r60 r116 35 35 # See below simple keys treatment. 36 36 37 def __init__(self, token_number, required, index, line, column, mark er):37 def __init__(self, token_number, required, index, line, column, mark): 38 38 self.token_number = token_number 39 39 self.required = required … … 41 41 self.line = line 42 42 self.column = column 43 self.mark er = marker43 self.mark = mark 44 44 45 45 class Scanner: … … 103 103 # is `flow_level`; there can be no more that one possible simple key 104 104 # for each level. The value is a SimpleKey record: 105 # (token_number, required, index, line, column, mark er)105 # (token_number, required, index, line, column, mark) 106 106 # A simple key may start with ALIAS, ANCHOR, TAG, SCALAR(flow), 107 107 # '[', or '{' tokens. … … 262 262 raise ScannerError("while scanning for the next token", None, 263 263 "found character %r that cannot start any token" 264 % ch.encode('utf-8'), self.reader.get_mark er())264 % ch.encode('utf-8'), self.reader.get_mark()) 265 265 266 266 # Simple keys treatment. … … 293 293 or self.reader.index-key.index > 1024: 294 294 if key.required: 295 raise ScannerError("while scanning a simple key", key.mark er,296 "could not found expected ':'", self.reader.get_mark er())295 raise ScannerError("while scanning a simple key", key.mark, 296 "could not found expected ':'", self.reader.get_mark()) 297 297 del self.possible_simple_keys[level] 298 298 … … 317 317 line = self.reader.line 318 318 column = self.reader.column 319 mark er = self.reader.get_marker()319 mark = self.reader.get_mark() 320 320 key = SimpleKey(token_number, required, 321 index, line, column, mark er)321 index, line, column, mark) 322 322 self.possible_simple_keys[self.flow_level] = key 323 323 … … 330 330 assert not key.required 331 331 #if key.required: 332 # raise ScannerError("while scanning a simple key", key.mark er,333 # "could not found expected ':'", self.reader.get_mark er())332 # raise ScannerError("while scanning a simple key", key.mark, 333 # "could not found expected ':'", self.reader.get_mark()) 334 334 335 335 # Indentation functions. … … 346 346 raise ScannerError(None, None, 347 347 "invalid intendation or unclosed '[' or '{'", 348 self.reader.get_mark er())348 self.reader.get_mark()) 349 349 350 350 # In block context, we may need to issue the BLOCK-END tokens. 351 351 while self.indent > column: 352 mark er = self.reader.get_marker()352 mark = self.reader.get_mark() 353 353
