Changeset 118 for pyyaml/trunk/lib
- Timestamp:
- 03/19/06 08:00:38 (6 years ago)
- Location:
- pyyaml/trunk/lib/yaml
- Files:
-
- 5 modified
-
composer.py (modified) (2 diffs)
-
events.py (modified) (1 diff)
-
parser.py (modified) (6 diffs)
-
scanner.py (modified) (4 diffs)
-
tokens.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
pyyaml/trunk/lib/yaml/composer.py
r116 r118 16 16 self.complete_anchors = {} 17 17 18 # Drop the STREAM-START event. 19 self.parser.get() 20 18 21 def check(self): 19 22 # If there are more documents available? … … 31 34 32 35 def compose_document(self): 36 37 # Drop the DOCUMENT-START event. 38 self.parser.get() 39 40 # Compose the root node. 33 41 node = self.compose_node() 42 43 # Drop the DOCUMENT-END event. 44 self.parser.get() 45 34 46 self.all_anchors = {} 35 47 self.complete_anchors = {} -
pyyaml/trunk/lib/yaml/events.py
r116 r118 45 45 pass 46 46 47 class DocumentStartEvent(Event): 48 pass 49 50 class DocumentEndEvent(Event): 51 pass 52 53 class StreamStartEvent(Event): 54 pass 55 47 56 class StreamEndEvent(Event): 48 57 pass -
pyyaml/trunk/lib/yaml/parser.py
r116 r118 3 3 # 4 4 # We use the following production rules: 5 # stream ::= implicit_document? explicit_document* STREAM-END5 # stream ::= STREAM-START implicit_document? explicit_document* STREAM-END 6 6 # explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END? 7 7 # implicit_document ::= block_node DOCUMENT-END? … … 43 43 44 44 # FIRST sets: 45 # stream: FIRST(block_node) + { DIRECTIVE DOCUMENT-START }45 # stream: { STREAM-START } 46 46 # explicit_document: { DIRECTIVE DOCUMENT-START } 47 47 # implicit_document: FIRST(block_node) … … 127 127 128 128 def parse_stream(self): 129 # implicit_document? explicit_document* STREAM-END 129 # STREAM-START implicit_document? explicit_document* STREAM-END 130 131 # Parse start of stream. 132 token = self.scanner.get() 133 yield StreamStartEvent(token.start_mark, token.end_mark) 130 134 131 135 # Parse implicit document. … … 133 137 StreamEndToken): 134 138 self.tag_handles = self.DEFAULT_TAGS 139 token = self.scanner.peek() 140 start_mark = end_mark = token.start_mark 141 yield DocumentStartEvent(start_mark, end_mark) 135 142 for event in self.parse_block_node(): 136 143 yield event 144 token = self.scanner.peek() 145 start_mark = end_mark = token.start_mark 146 while self.scanner.check(DocumentEndToken): 147 token = self.scanner.get() 148 end_mark = token.end_mark 149 yield DocumentEndEvent(start_mark, end_mark) 137 150 138 151 # Parse explicit documents. 139 152 while not self.scanner.check(StreamEndToken): 153 token = self.scanner.peek() 154 start_mark = token.start_mark 140 155 self.process_directives() 141 156 if not self.scanner.check(DocumentStartToken): … … 145 160 self.scanner.peek().start_mark) 146 161 token = self.scanner.get() 162 end_mark = token.end_mark 163 yield DocumentStartEvent(start_mark, end_mark) 147 164 if self.scanner.check(DirectiveToken, 148 165 DocumentStartToken, DocumentEndToken, StreamEndToken): … … 151 168 for event in self.parse_block_node(): 152 169 yield event 170 token = self.scanner.peek() 171 start_mark = end_mark = token.start_mark 153 172 while self.scanner.check(DocumentEndToken): 154 self.scanner.get() 173 token = self.scanner.get() 174 end_mark = token.end_mark 175 yield DocumentEndEvent(start_mark, end_mark) 155 176 156 177 # Parse end of stream. -
pyyaml/trunk/lib/yaml/scanner.py
r117 r118 1 1 2 2 # Scanner produces tokens of the following types: 3 # STREAM-START 4 # STREAM-END 3 5 # DIRECTIVE(name, value) 4 6 # DOCUMENT-START 5 7 # DOCUMENT-END 6 # STREAM-END7 8 # BLOCK-SEQUENCE-START 8 9 # BLOCK-MAPPING-START … … 69 70 self.tokens = [] 70 71 72 # Add the STREAM-START token. 73 self.fetch_stream_start() 74 71 75 # Number of tokens that were emitted through the `get_token` method. 72 76 self.tokens_taken = 0 … … 369 373 # Fetchers. 370 374 375 def fetch_stream_start(self): 376 # We always add STREAM-START as the first token and STREAM-END as the 377 # last token. 378 379 # Read the token. 380 mark = self.reader.get_mark() 381 382 # Add STREAM-END. 383 self.tokens.append(StreamStartToken(mark, mark)) 384 385 371 386 def fetch_stream_end(self): 372 387 … … 381 396 mark = self.reader.get_mark() 382 397 383 # Add END.398 # Add STREAM-END. 384 399 self.tokens.append(StreamEndToken(mark, mark)) 385 400 -
pyyaml/trunk/lib/yaml/tokens.py
r116 r118 28 28 class DocumentEndToken(Token): 29 29 id = '<document end>' 30 31 class StreamStartToken(Token): 32 id = '<stream start>' 30 33 31 34 class StreamEndToken(Token):
