| 145 | } |
| 146 | |
| 147 | func (p *parser) parse() *Node { |
| 148 | p.init() |
| 149 | switch p.peek() { |
| 150 | case yaml_SCALAR_EVENT: |
| 151 | return p.scalar() |
| 152 | case yaml_ALIAS_EVENT: |
| 153 | return p.alias() |
| 154 | case yaml_MAPPING_START_EVENT: |
| 155 | return p.mapping() |
| 156 | case yaml_SEQUENCE_START_EVENT: |
| 157 | return p.sequence() |
| 158 | case yaml_DOCUMENT_START_EVENT: |
| 159 | return p.document() |
| 160 | case yaml_STREAM_END_EVENT: |
| 161 | // Happens when attempting to decode an empty buffer. |
| 162 | return nil |
| 163 | case yaml_TAIL_COMMENT_EVENT: |
| 164 | panic("internal error: unexpected tail comment event (please report)") |
| 165 | default: |
| 166 | panic("internal error: attempted to parse unknown event (please report): " + p.event.typ.String()) |
| 167 | } |
| 168 | } |
| 169 | |
| 170 | func (p *parser) node(kind Kind, defaultTag, tag, value string) *Node { |
| 171 | var style Style |