Changeset 118 for pyyaml/trunk/lib/yaml/parser.py
- Timestamp:
- 03/19/06 08:00:38 (7 years ago)
- File:
-
- 1 edited
-
pyyaml/trunk/lib/yaml/parser.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
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.
Note: See TracChangeset
for help on using the changeset viewer.
