================================================================================
Aliases in Block Sequence
================================================================================
- &a a
- &b b
- *a
- *b

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (alias
              (alias_name))))
        (block_sequence_item
          (flow_node
            (alias
              (alias_name))))))))

================================================================================
Aliases in Explicit Block Mapping
================================================================================
? &a a
: &b b
: *a

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Aliases in Flow Objects
================================================================================
{ &a [a, &b b]: *b, *a : [c, *b, d]}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (anchor
                  (anchor_name))
                (plain_scalar
                  (string_scalar)))))
          value: (flow_node
            (alias
              (alias_name))))
        (flow_pair
          key: (flow_node
            (alias
              (alias_name)))
          value: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (alias
                  (alias_name)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))))))

================================================================================
Aliases in Implicit Block Mapping
================================================================================
&a a: &b b
*a : *b

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (alias
              (alias_name)))
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Allowed characters in alias
================================================================================
a: &:@*!$"<foo>: scalar a
b: *:@*!$"<foo>:

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Allowed characters in keys
================================================================================
a!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~: safe
?foo: safe question mark
:foo: safe colon
-foo: safe dash
this is#not: a comment

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Allowed characters in plain scalars
================================================================================
safe: a!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~
     !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~
safe question mark: ?foo
safe colon: :foo
safe dash: -foo

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Allowed characters in quoted mapping key
================================================================================
"foo\nbar:baz\tx \\$%^&*()x": 23
'x\ny:z\tx $%^&*()x': 24

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (double_quote_scalar
              (escape_sequence)
              (escape_sequence)
              (escape_sequence)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (single_quote_scalar))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Anchor and alias as mapping key [INVALID]
================================================================================
key1: &alias value1
&b *alias : value2

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (anchor
        (anchor_name))
      (plain_scalar
        (string_scalar))))
  (flow_node
    (anchor
      (anchor_name))))

================================================================================
Anchor before sequence entry on same line [INVALID]
================================================================================
&anchor - sequence entry

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (anchor
      (anchor_name))))

================================================================================
Anchor before zero indented sequence
================================================================================
---
seq:
 &anchor
- a
- b

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Anchor for empty node
================================================================================
---
a: &anchor
b: *anchor

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Anchor plus Alias [INVALID]
================================================================================
key1: &a value
key2: &b *a

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (anchor
        (anchor_name))
      (plain_scalar
        (string_scalar))))
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (anchor
        (anchor_name)))))

================================================================================
Anchor with colon in the middle
================================================================================
---
key: &an:chor value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))))))

================================================================================
Anchor with unicode character
================================================================================
---
- &😁 unicode anchor

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))))))

================================================================================
Anchors and Tags
================================================================================
 - &a !!str a
 - !!int 2
 - !!int &c 4
 - &d d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (anchor
              (anchor_name))
            (tag)
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (tag)
            (plain_scalar
              (integer_scalar))))
        (block_sequence_item
          (flow_node
            (tag)
            (anchor
              (anchor_name))
            (plain_scalar
              (integer_scalar))))
        (block_sequence_item
          (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))))))

================================================================================
Anchors in Mapping
================================================================================
&a a: b
c: &d d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))))))

================================================================================
Anchors on Empty Scalars
================================================================================
- &a
- a
-
  &a : a
  b: &b
-
  &c : &a
-
  ? &d
-
  ? &e
  : &a

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (anchor
              (anchor_name))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (anchor
                    (anchor_name)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name)))
                value: (flow_node
                  (anchor
                    (anchor_name)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name)))
                value: (flow_node
                  (anchor
                    (anchor_name)))))))))))

================================================================================
Anchors With Colon in Name
================================================================================
&a: key: &a value
foo:
  *a:

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Backslashes in singlequotes
================================================================================
'foo: bar\': baz'

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (single_quote_scalar))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Bad indentation in mapping (2) [INVALID]
================================================================================
map:
  key1: "quoted1"
   key2: "bad indentation"

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (double_quote_scalar)))
              (ERROR))))))))

================================================================================
Bad indentation in mapping [INVALID]
================================================================================
map:
  key1: "quoted1"
 key2: "bad indentation"

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar)))
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (double_quote_scalar))))

================================================================================
Bare document after document end marker
================================================================================
---
scalar1
...
key: value

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar))))
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Blank lines
================================================================================
foo: 1

bar: 2
    
text: |
  a
    
  b

  c
 
  d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Block Mapping with Missing Keys
================================================================================
: a
: b

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Block Mapping with Missing Values
================================================================================
? a
? b
c:

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Block Mapping with Multiline Scalars
================================================================================
? a
  true
: null
  d
? e
  42

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Block Mappings in Block Sequence
================================================================================
 - key: value
   key2: value2
 -
   key3: value3

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Block scalar indicator order
================================================================================
- |2-
  explicit indent and chomp
- |-2
  chomp and explicit indent

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))))))

================================================================================
Block Scalar Keep
================================================================================
--- |+
 ab
 
  
...

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Block Scalar Strip
================================================================================
|-
 ab
 
 
...

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Block Scalar Strip [1.3]
================================================================================
--- |-
 ab
 
 
...

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Block scalar with spaces only
================================================================================
empty block scalar: >
 
  
   
 # comment

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (comment)))))

================================================================================
Block scalar with wrong indented line after spaces only [INVALID]
================================================================================
block scalar: >
 
  
   
 invalid

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (ERROR)))))

================================================================================
Block Sequence in Block Mapping
================================================================================
key:
 - item1
 - item2

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Block Sequence in Block Sequence
================================================================================
- - s1_i1
  - s1_i2
- s2

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Block Submapping
================================================================================
foo:
  bar: 1
baz: 2

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Colon and adjacent value after comment on next line
================================================================================
---
{ "foo" # comment
  :bar }

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (double_quote_scalar))
          (comment)
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Colon and adjacent value on next line
================================================================================
---
{ "foo"
  :bar }

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (double_quote_scalar))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Colon followed by comma
================================================================================
---
- :,

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Colon in Double Quoted String
================================================================================
"foo: bar\": baz"

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (double_quote_scalar
        (escape_sequence)))))

================================================================================
Comment and document-end marker
================================================================================
# comment
...

--------------------------------------------------------------------------------

(stream
  (comment)
  (document))

================================================================================
Comment between plain scalar lines [INVALID]
================================================================================
word1  # comment
word2

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar)))
  (comment))

================================================================================
Comment in flow sequence before comma
================================================================================
---
[ word1
# comment
, word2]

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_node
          (plain_scalar
            (string_scalar)))
        (comment)
        (flow_node
          (plain_scalar
            (string_scalar)))))))

================================================================================
Comment in plain multiline value [INVALID]
================================================================================
key: word1
#  xxx
  word2

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (comment)
        (ERROR)))))

================================================================================
Comment that looks like a mapping key [INVALID]
================================================================================
key: value
this is #not a: key

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (ERROR
          (flow_node
            (plain_scalar
              (string_scalar))))
        (comment)))))

================================================================================
Comment without whitespace after block scalar indicator [INVALID]
================================================================================
block: ># comment
  scalar

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Comment without whitespace after doublequoted scalar [INVALID]
================================================================================
key: "value"# invalid comment

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (double_quote_scalar))))

================================================================================
Construct Binary
================================================================================
canonical: !!binary "\
 R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\
 OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\
 +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\
 AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="
generic: !!binary |
 R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
 OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
 +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
 AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
description:
 The binary value above is a tiny arrow encoded as a gif image.

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (double_quote_scalar
              (escape_sequence)
              (escape_sequence)
              (escape_sequence)
              (escape_sequence))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (tag)
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Directive without document [INVALID]
================================================================================
%YAML 1.2
...

--------------------------------------------------------------------------------

(stream
  (ERROR
    (yaml_directive
      (yaml_version)))
  (document))

================================================================================
Document start on last line
================================================================================
---
a: b
---

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document))

================================================================================
Document with footer
================================================================================
aaa: bbb
...

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Document-end marker
================================================================================
...

--------------------------------------------------------------------------------

(stream
  (document))

================================================================================
Double quoted scalar with escaped single quote [INVALID]
================================================================================
---
double: "quoted \' scalar"

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar))))

================================================================================
Double quoted string without closing quote [INVALID]
================================================================================
---
key: "missing closing quote

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (ERROR)))))

================================================================================
Doublequoted scalar starting with a tab
================================================================================
---
tab: "\tstring"

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar
              (escape_sequence))))))))

================================================================================
Duplicate YAML directive
================================================================================
%YAML 1.2
%YAML 1.2
---

--------------------------------------------------------------------------------

(stream
  (document
    (yaml_directive
      (yaml_version))
    (yaml_directive
      (yaml_version))))

================================================================================
Empty flow collections
================================================================================
---
nested sequences:
- - - []
- - - {}
key1: []
key2: {}

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (block_node
                  (block_sequence
                    (block_sequence_item
                      (block_node
                        (block_sequence
                          (block_sequence_item
                            (flow_node
                              (flow_sequence)))))))))
              (block_sequence_item
                (block_node
                  (block_sequence
                    (block_sequence_item
                      (block_node
                        (block_sequence
                          (block_sequence_item
                            (flow_node
                              (flow_mapping))))))))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_mapping)))))))

================================================================================
Empty Lines at End of Document
================================================================================
:




--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair)))))

================================================================================
Empty Lines Between Mapping Elements
================================================================================
1: 2


3: 4

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (integer_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (integer_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Empty Stream
================================================================================

--------------------------------------------------------------------------------

(stream)

================================================================================
Escaped slash in double quotes
================================================================================
escaped slash: "a\/b"

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar
              (escape_sequence))))))))

================================================================================
Explicit key and value seperated by comment
================================================================================
---
? key
# comment
: value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          (comment)
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Explicit Non-Specific Tag
================================================================================
! a

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (tag)
      (plain_scalar
        (string_scalar)))))

================================================================================
Explicit Non-Specific Tag [1.3]
================================================================================
---
! a

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (tag)
      (plain_scalar
        (string_scalar)))))

================================================================================
Flow Mapping
================================================================================
{foo: you, bar: far}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Flow mapping colon on line after key
================================================================================
{"foo"
: "bar"}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (double_quote_scalar))
          value: (flow_node
            (double_quote_scalar)))))))

================================================================================
Flow Mapping in Block Sequence
================================================================================
- {a: b}

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Flow Mapping Key on two lines [INVALID]
================================================================================
[23
]: 42

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_node
          (plain_scalar
            (integer_scalar))))))
  (MISSING _eof))

================================================================================
Flow mapping missing a separating comma [INVALID]
================================================================================
---
{
 foo: 1
 bar: 2 }

--------------------------------------------------------------------------------

(ERROR
  (flow_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Flow Sequence
================================================================================
[foo, bar, 42]

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_node
          (plain_scalar
            (string_scalar)))
        (flow_node
          (plain_scalar
            (string_scalar)))
        (flow_node
          (plain_scalar
            (integer_scalar)))))))

================================================================================
Flow Sequence in Block Mapping
================================================================================
a: [b, c]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))))))

================================================================================
Flow Sequence in Flow Mapping
================================================================================
{a: [b, c], [d, e]: f}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))
        (flow_pair
          key: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Flow Sequence in Flow Sequence
================================================================================
[a, [b, c]]

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_node
          (plain_scalar
            (string_scalar)))
        (flow_node
          (flow_sequence
            (flow_node
              (plain_scalar
                (string_scalar)))
            (flow_node
              (plain_scalar
                (string_scalar)))))))))

================================================================================
Flow sequence with invalid comma at the beginning [INVALID]
================================================================================
---
[ , a, b, c ]

--------------------------------------------------------------------------------

(ERROR)

================================================================================
Flow sequence with invalid extra closing bracket [INVALID]
================================================================================
---
[ a, b, c ] ]

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (flow_sequence
      (flow_node
        (plain_scalar
          (string_scalar)))
      (flow_node
        (plain_scalar
          (string_scalar)))
      (flow_node
        (plain_scalar
          (string_scalar))))))

================================================================================
Flow sequence with invalid extra comma [INVALID]
================================================================================
---
[ a, b, c, , ]

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar)))
  (flow_node
    (plain_scalar
      (string_scalar)))
  (flow_node
    (plain_scalar
      (string_scalar))))

================================================================================
Flow sequence without closing bracket [INVALID]
================================================================================
---
[ [ a, b, c ]

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (flow_sequence
      (flow_node
        (plain_scalar
          (string_scalar)))
      (flow_node
        (plain_scalar
          (string_scalar)))
      (flow_node
        (plain_scalar
          (string_scalar))))))

================================================================================
Folded Block Scalar
================================================================================
>
 ab
 cd
 
 ef


 gh

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Folded Block Scalar [1.3]
================================================================================
--- >
 ab
 cd
 
 ef


 gh

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Implicit Flow Mapping Key on one line
================================================================================
[flow]: block

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Implicit key followed by newline [INVALID]
================================================================================
---
[ key
  : value ]

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar))))

================================================================================
Implicit key followed by newline and adjacent value [INVALID]
================================================================================
[ "key"
  :value ]

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (double_quote_scalar)))

================================================================================
Invalid anchor in zero indented sequence [INVALID]
================================================================================
---
seq:
&anchor
- a
- b

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar))))
  (flow_node
    (anchor
      (anchor_name))))

================================================================================
Invalid block mapping key on same line as previous key [INVALID]
================================================================================
---
x: { y: z }in: valid

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Invalid comment after comma [INVALID]
================================================================================
---
[ a, b, c,#invalid
]

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar)))
  (flow_node
    (plain_scalar
      (string_scalar)))
  (flow_node
    (plain_scalar
      (string_scalar))))

================================================================================
Invalid comment after end of flow sequence [INVALID]
================================================================================
---
[ a, b, c, ]#invalid

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (flow_sequence
      (flow_node
        (plain_scalar
          (string_scalar)))
      (flow_node
        (plain_scalar
          (string_scalar)))
      (flow_node
        (plain_scalar
          (string_scalar))))))

================================================================================
Invalid content after document end marker [INVALID]
================================================================================
---
key: value
... invalid

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (MISSING _eof))

================================================================================
Invalid document markers in flow style [INVALID]
================================================================================
[
--- ,
...
]

--------------------------------------------------------------------------------

(ERROR
  (string_scalar))

================================================================================
Invalid document-end marker in single quoted string [INVALID]
================================================================================
---
'
...
'

--------------------------------------------------------------------------------

(ERROR
  (document
    (ERROR)))

================================================================================
Invalid document-start marker in doublequoted tring [INVALID]
================================================================================
---
"
---
"

--------------------------------------------------------------------------------

(ERROR
  (ERROR))

================================================================================
Invalid escape in double quoted string [INVALID]
================================================================================
---
"\."

--------------------------------------------------------------------------------

(ERROR)

================================================================================
Invalid item after end of flow sequence [INVALID]
================================================================================
---
[
sequence item
]
invalid item

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_node
          (plain_scalar
            (string_scalar))))))
  (MISSING _eof))

================================================================================
Invalid mapping after sequence [INVALID]
================================================================================
- item1
- item2
invalid: x

--------------------------------------------------------------------------------

(ERROR
  (block_sequence_item
    (flow_node
      (plain_scalar
        (string_scalar))))
  (flow_node
    (plain_scalar
      (string_scalar)))
  (string_scalar))

================================================================================
Invalid mapping in plain multiline [INVALID]
================================================================================
this
 is
  invalid: x

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar))))
  (MISSING _eof))

================================================================================
Invalid Mapping in plain scalar [INVALID]
================================================================================
key:
  word1 word2
  no: key

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Invalid mapping in plain single line value [INVALID]
================================================================================
a: b: c: d

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Invalid nested mapping [INVALID]
================================================================================
---
a: 'b': c

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (single_quote_scalar))))

================================================================================
Invalid scalar after sequence [INVALID]
================================================================================
- item1
- item2
invalid

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (ERROR
          (string_scalar))))))

================================================================================
Invalid scalar at the end of mapping [INVALID]
================================================================================
key:
 - item1
 - item2
invalid

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (ERROR
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Invalid scalar at the end of sequence [INVALID]
================================================================================
key:
 - bar
 - baz
 invalid

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (ERROR
                (string_scalar)))))))))

================================================================================
Invalid sequene item on same line as previous item [INVALID]
================================================================================
---
- { y: z }- invalid

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (flow_mapping
      (flow_pair
        key: (flow_node
          (plain_scalar
            (string_scalar)))
        value: (flow_node
          (plain_scalar
            (string_scalar)))))))

================================================================================
Invalid tabs as indendation in a mapping [INVALID]
================================================================================
---
a:
	b:
		c: value

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Invalid tag [INVALID]
================================================================================
---
!invalid{}tag scalar

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (tag)
    (flow_mapping)))

================================================================================
Invalid text after block scalar indicator [INVALID]
================================================================================
---
folded: > first line
  second line

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar))))

================================================================================
Invalid value after mapping [INVALID]
================================================================================
foo:
  bar
invalid

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (ERROR
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Key with anchor after missing explicit mapping value
================================================================================
---
a: 1
? b
&anchor c: 3

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Literal Block Scalar
================================================================================
a: |
 ab
 
 cd
 ef
 

...

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Literal block scalar with more spaces in first line [INVALID]
================================================================================
---
block scalar: |
     
  more spaces at the beginning
  are invalid

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (ERROR)))))

================================================================================
Literal unicode
================================================================================
---
wanted: love ♥ and peace ☮

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Lookahead test cases
================================================================================
- bla"keks: foo
- bla]keks: foo

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Mapping starting at --- line [INVALID]
================================================================================
--- key1: value1
    key2: value2

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar))))
  (MISSING _eof))

================================================================================
Mapping with anchor on document start line [INVALID]
================================================================================
--- &anchor a: b

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (anchor
        (anchor_name))
      (plain_scalar
        (string_scalar))))
  (MISSING _eof))

================================================================================
Mapping, key and flow sequence item anchors
================================================================================
---
&mapping
&key [ &item a, b, c ]: value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (anchor
        (anchor_name))
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (flow_sequence
              (flow_node
                (anchor
                  (anchor_name))
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Missing colon [INVALID]
================================================================================
top1:
  key1: val1
top2

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (ERROR
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Missing comma in flow [INVALID]
================================================================================
key: [ word1
#  xxx
  word2 ]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (ERROR
          (flow_node
            (plain_scalar
              (string_scalar)))
          (comment))))))

================================================================================
Missing document-end marker before directive [INVALID]
================================================================================
---
scalar1 # comment
%YAML 1.2
---
scalar2

--------------------------------------------------------------------------------

(stream
  (document)
  (ERROR
    (flow_node
      (plain_scalar
        (string_scalar)))
    (comment))
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Missing space in YAML directive
================================================================================
%YAML1.2
---
key: value

--------------------------------------------------------------------------------

(stream
  (document
    (reserved_directive
      (directive_name))
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Mixed Block Mapping (explicit to implicit)
================================================================================
? a
: 13
1.5: d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (float_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Mixed Block Mapping (implicit to explicit)
================================================================================
a: 4.2
? 23
: d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (float_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (integer_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
More indented lines at the beginning of folded block scalars
================================================================================
---
a: >2
   more indented
  regular
b: >2


   more indented
  regular

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Multi-level Mapping Indent
================================================================================
a:
  b:
    c: d
  e:
    f: g
h: i

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar)))))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Multiline double quoted flow mapping key
================================================================================
---
- { "single line": value}
- { "multi
  line": value}

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (double_quote_scalar))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (double_quote_scalar))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Multiline double quoted implicit keys [INVALID]
================================================================================
"a\nb": 1
"c
 d": 1

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (double_quote_scalar
              (escape_sequence)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (ERROR)))))

================================================================================
Multiline doublequoted flow mapping key without value
================================================================================
---
- { "single line", a: b}
- { "multi
  line", a: b}

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_node
                (double_quote_scalar))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_node
                (double_quote_scalar))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Multiline implicit keys [INVALID]
================================================================================
a\nb: 1
c
 d: 1

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (plain_scalar
        (integer_scalar)))))

================================================================================
Multiline plain flow mapping key
================================================================================
---
- { single line: value}
- { multi
  line: value}

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Multiline plain flow mapping key without value
================================================================================
---
- { single line, a: b}
- { multi
  line, a: b}

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Multiline plain scalar with empty line
================================================================================
---
plain: a
 b

 c

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Multiline plain value with tabs on empty lines
================================================================================
key:
  value
  with
  	
  tabs

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Multiline Scalar at Top Level
================================================================================
a
b  
  c
d

e

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Multiline Scalar at Top Level [1.3]
================================================================================
---
a
b  
  c
d

e

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Multiline Scalar in Mapping
================================================================================
a: b
 c
d:
 e
  f

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Multiline scalar that looks like a YAML directive
================================================================================
---
scalar
%YAML 1.2

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Multiline single quoted implicit keys [INVALID]
================================================================================
'a\nb': 1
'c
 d': 1

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (single_quote_scalar))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (ERROR)))))

================================================================================
Multiple Entry Block Sequence
================================================================================
- foo
- bar
- 42

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Multiple Pair Block Mapping
================================================================================
foo: blue
bar: arrr
baz: jazz

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Nested flow collections
================================================================================
---
{
 a: [
  b, c, {
   d: [e, f]
  }
 ]
}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (flow_mapping
                  (flow_pair
                    key: (flow_node
                      (plain_scalar
                        (string_scalar)))
                    value: (flow_node
                      (flow_sequence
                        (flow_node
                          (plain_scalar
                            (string_scalar)))
                        (flow_node
                          (plain_scalar
                            (string_scalar)))))))))))))))

================================================================================
Nested flow collections on one line
================================================================================
---
{ a: [b, c, { d: [e, f] } ] }

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (flow_mapping
                  (flow_pair
                    key: (flow_node
                      (plain_scalar
                        (string_scalar)))
                    value: (flow_node
                      (flow_sequence
                        (flow_node
                          (plain_scalar
                            (string_scalar)))
                        (flow_node
                          (plain_scalar
                            (string_scalar)))))))))))))))

================================================================================
Nested flow mapping sequence and mappings
================================================================================
---
{ top1: [item1, {key2: value2}, item3], top2: value2 }

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (flow_mapping
                  (flow_pair
                    key: (flow_node
                      (plain_scalar
                        (string_scalar)))
                    value: (flow_node
                      (plain_scalar
                        (string_scalar))))))
              (flow_node
                (plain_scalar
                  (string_scalar))))))
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Nested implicit complex keys
================================================================================
---
[
  [ a, [ [[b,c]]: d, e]]: 23
]

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_pair
          key: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (flow_sequence
                  (flow_pair
                    key: (flow_node
                      (flow_sequence
                        (flow_node
                          (flow_sequence
                            (flow_node
                              (plain_scalar
                                (string_scalar)))
                            (flow_node
                              (plain_scalar
                                (string_scalar)))))))
                    value: (flow_node
                      (plain_scalar
                        (string_scalar))))
                  (flow_node
                    (plain_scalar
                      (string_scalar)))))))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Nested top level flow mapping
================================================================================
{ key: [[[
  value
 ]]]
}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence
              (flow_node
                (flow_sequence
                  (flow_node
                    (flow_sequence
                      (flow_node
                        (plain_scalar
                          (string_scalar))))))))))))))

================================================================================
Node Anchor and Tag on Seperate Lines
================================================================================
key: &anchor
 !!map
  a: b

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (tag)
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Node anchor in sequence [INVALID]
================================================================================
- item1
&node
- item2

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar))))

================================================================================
Node anchor not indented [INVALID]
================================================================================
key: &x
!!map
  a: b

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))))
        (ERROR
          (tag))))))

================================================================================
Node and Mapping Key Anchors
================================================================================
---
top1: &node1
  &k1 key1: one
top2: &node2 # comment
  key2: two
top3:
  &k3 key3: three
top4:
  &node4
  &k4 key4: four
top5:
  &node5
  key5: five
top6: &val6
  six
top7:
  &val7 seven

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (comment)
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))))))

================================================================================
Node and Mapping Key Anchors [1.3]
================================================================================
---
top1: &node1
  &k1 key1: one
top2: &node2 # comment
  key2: two
top3:
  &k3 key3: three
top4: &node4
  &k4 key4: four
top5: &node5
  key5: five
top6: &val6
  six
top7:
  &val7 seven

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (comment)
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))))))

================================================================================
Non-Specific Tags on Scalars
================================================================================
- plain
- "double quoted"
- 'single quoted'
- >
  block
- plain again

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (double_quote_scalar)))
        (block_sequence_item
          (flow_node
            (single_quote_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Plain mapping key ending with colon
================================================================================
---
key ends with two colons::: value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Plain Scalar looking like key, comment, anchor and tag
================================================================================
k:#foo
 &a !t s

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Plain Scalar looking like key, comment, anchor and tag [1.3]
================================================================================
---
k:#foo
 &a !t s

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Plain scalar with backslashes
================================================================================
---
plain\value\with\backslashes

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Plain URL in flow mapping
================================================================================
- { url: http://example.org }

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Scalar value with two anchors [INVALID]
================================================================================
top1: &node1
  &k1 key1: val1
top2: &node2
  &v2 val2

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))))
        (ERROR
          (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))))))

================================================================================
Scalars on --- line
================================================================================
--- "quoted
string"
--- &node foo

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (double_quote_scalar)))
  (document
    (flow_node
      (anchor
        (anchor_name))
      (plain_scalar
        (string_scalar)))))

================================================================================
Sequence entry that looks like two with wrong indentation
================================================================================
- single multiline
 - sequence entry

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Sequence Indent
================================================================================
foo:
- 42
bar:
  - 44

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (integer_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (integer_scalar)))))))))))

================================================================================
Sequence on same Line as Mapping Key [INVALID]
================================================================================
key: - a
     - b

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Sequence With Same Indentation as Parent Mapping
================================================================================
1:
- 2
- 3
4: 5

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (integer_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (integer_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (integer_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (integer_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Simple Mapping Indent
================================================================================
foo:
  bar: baz

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Single block sequence with anchor
================================================================================
&sequence
- a

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (anchor
        (anchor_name))
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Single block sequence with anchor and explicit document start
================================================================================
--- &sequence
- a

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (anchor
        (anchor_name))
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Single Entry Block Sequence
================================================================================
- foo

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Single Pair Block Mapping
================================================================================
foo: bar

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 2.1. Sequence of Scalars
================================================================================
- Mark McGwire
- Sammy Sosa
- Ken Griffey

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 2.2. Mapping Scalars to Scalars
================================================================================
hr:  65    # Home runs
avg: 0.278 # Batting average
rbi: 147   # Runs Batted In

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (comment)
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (float_scalar))))
        (comment)
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (comment)))))

================================================================================
Spec Example 2.3. Mapping Scalars to Sequences
================================================================================
american:
  - Boston Red Sox
  - Detroit Tigers
  - New York Yankees
national:
  - New York Mets
  - Chicago Cubs
  - Atlanta Braves

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 2.4. Sequence of Mappings
================================================================================
-
  name: Mark McGwire
  hr:   65
  avg:  0.278
-
  name: Sammy Sosa
  hr:   63
  avg:  0.288

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (float_scalar)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (float_scalar)))))))))))

================================================================================
Spec Example 2.5. Sequence of Sequences
================================================================================
- [name        , hr, avg  ]
- [Mark McGwire, 65, 0.278]
- [Sammy Sosa  , 63, 0.288]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (integer_scalar)))
              (flow_node
                (plain_scalar
                  (float_scalar))))))
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (integer_scalar)))
              (flow_node
                (plain_scalar
                  (float_scalar))))))))))

================================================================================
Spec Example 2.6. Mapping of Mappings
================================================================================
Mark McGwire: {hr: 65, avg: 0.278}
Sammy Sosa: {
    hr: 63,
    avg: 0.288
  }

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar))))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (float_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar))))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (float_scalar)))))))))))

================================================================================
Spec Example 2.7. Two Documents in a Stream
================================================================================
# Ranking of 1998 home runs
---
- Mark McGwire
- Sammy Sosa
- Ken Griffey

# Team ranking
---
- Chicago Cubs
- St Louis Cardinals

--------------------------------------------------------------------------------

(stream
  (comment)
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (comment))))
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 2.8. Play by Play Feed from a Game
================================================================================
---
time: 20:03:20
player: Sammy Sosa
action: strike (miss)
...
---
time: 20:03:47
player: Sammy Sosa
action: grand slam
...

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 2.9. Single Document with Two Comments
================================================================================
---
hr: # 1998 hr ranking
  - Mark McGwire
  - Sammy Sosa
rbi:
  # 1998 rbi ranking
  - Sammy Sosa
  - Ken Griffey

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          (comment)
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          (comment)
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 2.10. Node for “Sammy Sosa” appears twice in this document
================================================================================
---
hr:
  - Mark McGwire
  # Following node labeled SS
  - &SS Sammy Sosa
rbi:
  - *SS # Subsequent occurrence
  - Ken Griffey

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (comment)
              (block_sequence_item
                (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (alias
                    (alias_name))))
              (comment)
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 2.11. Mapping between Sequences
================================================================================
? - Detroit Tigers
  - Chicago cubs
:
  - 2001-07-23

? [ New York Yankees,
    Atlanta Braves ]
: [ 2001-07-02, 2001-08-12,
    2001-08-14 ]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))))
          value: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))))))

================================================================================
Spec Example 2.12. Compact Nested Mapping
================================================================================
---
# Products purchased
- item    : Super Hoop
  quantity: 1
- item    : Basketball
  quantity: 4
- item    : Big Shoes
  quantity: 1

--------------------------------------------------------------------------------

(stream
  (document
    (comment)
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar)))))))))))

================================================================================
Spec Example 2.13. In literals, newlines are preserved
================================================================================
# ASCII Art
--- |
  \//||\/||
  // ||  ||__

--------------------------------------------------------------------------------

(stream
  (comment)
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 2.14. In the folded scalars, newlines become spaces
================================================================================
--- >
  Mark McGwire's
  year was crippled
  by a knee injury.

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 2.15. Folded newlines are preserved for "more indented" and blank lines
================================================================================
>
 Sammy Sosa completed another
 fine season with great stats.

   63 Home Runs
   0.288 Batting Average

 What a year!

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 2.16. Indentation determines scope
================================================================================
name: Mark McGwire
accomplishment: >
  Mark set a major league
  home run record in 1998.
stats: |
  65 Home Runs
  0.278 Batting Average

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Spec Example 2.17. Quoted Scalars
================================================================================
unicode: "Sosa did fine.\u263A"
control: "\b1998\t1999\t2000\n"
hex esc: "\x0d\x0a is \r\n"

single: '"Howdy!" he cried.'
quoted: ' # Not a ''comment''.'
tie-fighter: '|\-*-/|'

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar
              (escape_sequence))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar
              (escape_sequence)
              (escape_sequence)
              (escape_sequence)
              (escape_sequence))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar
              (escape_sequence)
              (escape_sequence)
              (escape_sequence)
              (escape_sequence))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (single_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (single_quote_scalar
              (escape_sequence)
              (escape_sequence))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (single_quote_scalar)))))))

================================================================================
Spec Example 2.18. Multi-line Flow Scalars
================================================================================
plain:
  This unquoted scalar
  spans many lines.

quoted: "So does this
  quoted scalar.\n"

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar
              (escape_sequence))))))))

================================================================================
Spec Example 2.23. Various Explicit Tags
================================================================================
---
not-date: !!str 2002-04-28

picture: !!binary |
 R0lGODlhDAAMAIQAAP//9/X
 17unp5WZmZgAAAOfn515eXv
 Pz7Y6OjuDg4J+fn5OTk6enp
 56enmleECcgggoBADs=

application specific tag: !something |
 The semantics of the tag
 above may be different for
 different documents.

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (tag)
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (tag)
            (block_scalar)))))))

================================================================================
Spec Example 2.24. Global Tags
================================================================================
%TAG ! tag:clarkevans.com,2002:
--- !shape
  # Use the ! handle for presenting
  # tag:clarkevans.com,2002:circle
- !circle
  center: &ORIGIN {x: 73, y: 129}
  radius: 7
- !line
  start: *ORIGIN
  finish: { x: 89, y: 102 }
- !label
  start: *ORIGIN
  color: 0xFFEEBB
  text: Pretty vector drawing.

--------------------------------------------------------------------------------

(stream
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (block_node
      (tag)
      (comment)
      (comment)
      (block_sequence
        (block_sequence_item
          (block_node
            (tag)
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (anchor
                    (anchor_name))
                  (flow_mapping
                    (flow_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar))))
                    (flow_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar)))))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar)))))))
        (block_sequence_item
          (block_node
            (tag)
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (alias
                    (alias_name))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (flow_mapping
                    (flow_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar))))
                    (flow_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar))))))))))
        (block_sequence_item
          (block_node
            (tag)
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (alias
                    (alias_name))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 2.25. Unordered Sets
================================================================================
# Sets are represented as a
# Mapping where each key is
# associated with a null value
--- !!set
? Mark McGwire
? Sammy Sosa
? Ken Griff

--------------------------------------------------------------------------------

(stream
  (comment)
  (comment)
  (comment)
  (document
    (block_node
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 2.26. Ordered Mappings
================================================================================
# Ordered maps are represented as
# A sequence of mappings, with
# each mapping having one key
--- !!omap
- Mark McGwire: 65
- Sammy Sosa: 63
- Ken Griffy: 58

--------------------------------------------------------------------------------

(stream
  (comment)
  (comment)
  (comment)
  (document
    (block_node
      (tag)
      (block_sequence
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (integer_scalar)))))))))))

================================================================================
Spec Example 2.27. Invoice
================================================================================
--- !<tag:clarkevans.com,2002:invoice>
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments:
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (block_node
                        (block_scalar)))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar))))))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (float_scalar)))))))
              (block_sequence_item
                (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (float_scalar))))))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (float_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (float_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 2.28. Log File
================================================================================
---
Time: 2001-11-23 15:01:42 -5
User: ed
Warning:
  This is an error message
  for the log file
---
Time: 2001-11-23 15:02:31 -5
User: ed
Warning:
  A slightly different error
  message.
---
Date: 2001-11-23 15:03:17 -5
User: ed
Fatal:
  Unknown variable "bar"
Stack:
  - file: TopClass.py
    line: 23
    code: |
      x = MoreObject("345\n")
  - file: MoreClass.py
    line: 58
    code: |-
      foo = bar

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (block_node
                        (block_scalar))))))
              (block_sequence_item
                (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (integer_scalar))))
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (block_node
                        (block_scalar)))))))))))))

================================================================================
Spec Example 5.3. Block Structure Indicators
================================================================================
sequence:
- one
- two
mapping:
  ? sky
  : blue
  sea : green

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 5.4. Flow Collection Indicators
================================================================================
sequence: [ one, two, ]
mapping: { sky: blue, sea: green }

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 5.5. Comment Indicator
================================================================================
# Comment only.

--------------------------------------------------------------------------------

(stream
  (comment))

================================================================================
Spec Example 5.6. Node Property Indicators
================================================================================
anchored: !local &anchor value
alias: *anchor

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Spec Example 5.7. Block Scalar Indicators
================================================================================
literal: |
  some
  text
folded: >
  some
  text

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Spec Example 5.8. Quoted Scalar Indicators
================================================================================
single: 'text'
double: "text"

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (single_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))))))

================================================================================
Spec Example 5.9. Directive Indicator
================================================================================
%YAML 1.2
--- text

--------------------------------------------------------------------------------

(stream
  (document
    (yaml_directive
      (yaml_version))
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Spec Example 5.12. Tabs and Spaces
================================================================================
# Tabs and spaces
quoted: "Quoted 	"
block:	|
  void main() {
  	printf("Hello, world!\n");
  }

--------------------------------------------------------------------------------

(stream
  (comment)
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Spec Example 6.1. Indentation Spaces
================================================================================
  # Leading comment line spaces are
   # neither content nor indentation.
    
Not indented:
 By one space: |
    By four
      spaces
 Flow style: [    # Leading spaces
   By two,        # in flow style
  Also by two,    # are neither
  	Still by two   # content nor
    ]             # indentation.

--------------------------------------------------------------------------------

(stream
  (comment)
  (comment)
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (block_node
                  (block_scalar)))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (flow_sequence
                    (comment)
                    (flow_node
                      (plain_scalar
                        (string_scalar)))
                    (comment)
                    (flow_node
                      (plain_scalar
                        (string_scalar)))
                    (comment)
                    (flow_node
                      (plain_scalar
                        (string_scalar)))
                    (comment))))
              (comment))))))))

================================================================================
Spec Example 6.2. Indentation Indicators
================================================================================
? a
: -	b
  -  -	c
     - d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (block_node
                  (block_sequence
                    (block_sequence_item
                      (flow_node
                        (plain_scalar
                          (string_scalar))))
                    (block_sequence_item
                      (flow_node
                        (plain_scalar
                          (string_scalar))))))))))))))

================================================================================
Spec Example 6.3. Separation Spaces
================================================================================
- foo:	 bar
- - baz
  -	baz

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 6.4. Line Prefixes
================================================================================
plain: text
  lines
quoted: "text
  	lines"
block: |
  text
   	lines

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Spec Example 6.5. Empty Lines
================================================================================
Folding:
  "Empty line
   	
  as a line feed"
Chomping: |
  Clipped empty lines
 


--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Spec Example 6.5. Empty Lines [1.3]
================================================================================
Folding:
  "Empty line

  as a line feed"
Chomping: |
  Clipped empty lines
 


--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Spec Example 6.6. Line Folding
================================================================================
>-
  trimmed
  
 

  as
  space

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 6.6. Line Folding [1.3]
================================================================================
--- >-
  trimmed
  
 

  as
  space

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 6.7. Block Folding
================================================================================
>
  foo 
 
  	 bar

  baz

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 6.8. Flow Folding
================================================================================
"
  foo 
 
  	 bar

  baz
"

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (double_quote_scalar))))

================================================================================
Spec Example 6.8. Flow Folding [1.3]
================================================================================
---
"
  foo 
 
    bar

  baz
"

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (double_quote_scalar))))

================================================================================
Spec Example 6.9. Separated Comment
================================================================================
key:    # Comment
  value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          (comment)
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 6.10. Comment Lines
================================================================================
  # Comment
   



--------------------------------------------------------------------------------

(stream
  (comment))

================================================================================
Spec Example 6.11. Multi-Line Comments
================================================================================
key:    # Comment
        # lines
  value



--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          (comment)
          (comment)
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 6.12. Separation Spaces
================================================================================
{ first: Sammy, last: Sosa }:
# Statistics:
  hr:  # Home runs
     65
  avg: # Average
   0.278

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))))
          (comment)
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                (comment)
                value: (flow_node
                  (plain_scalar
                    (integer_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                (comment)
                value: (flow_node
                  (plain_scalar
                    (float_scalar)))))))))))

================================================================================
Spec Example 6.13. Reserved Directives
================================================================================
%FOO  bar baz # Should be ignored
              # with a warning.
--- "foo"

--------------------------------------------------------------------------------

(stream
  (document
    (reserved_directive
      (directive_name)
      (directive_parameter)
      (directive_parameter))
    (comment)
    (comment)
    (flow_node
      (double_quote_scalar))))

================================================================================
Spec Example 6.13. Reserved Directives [1.3]
================================================================================
%FOO  bar baz # Should be ignored
              # with a warning.
---
"foo"

--------------------------------------------------------------------------------

(stream
  (document
    (reserved_directive
      (directive_name)
      (directive_parameter)
      (directive_parameter))
    (comment)
    (comment)
    (flow_node
      (double_quote_scalar))))

================================================================================
Spec Example 6.14. “YAML” directive
================================================================================
%YAML 1.3 # Attempt parsing
          # with a warning
---
"foo"

--------------------------------------------------------------------------------

(stream
  (document
    (yaml_directive
      (yaml_version))
    (comment)
    (comment)
    (flow_node
      (double_quote_scalar))))

================================================================================
Spec Example 6.16. “TAG” directive
================================================================================
%TAG !yaml! tag:yaml.org,2002:
---
!yaml!str "foo"

--------------------------------------------------------------------------------

(stream
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (flow_node
      (tag)
      (double_quote_scalar))))

================================================================================
Spec Example 6.18. Primary Tag Handle
================================================================================
# Private
!foo "bar"
...
# Global
%TAG ! tag:example.com,2000:app/
---
!foo "bar"

--------------------------------------------------------------------------------

(stream
  (comment)
  (document
    (flow_node
      (tag)
      (double_quote_scalar)))
  (comment)
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (flow_node
      (tag)
      (double_quote_scalar))))

================================================================================
Spec Example 6.18. Primary Tag Handle [1.3]
================================================================================
# Private
---
!foo "bar"
...
# Global
%TAG ! tag:example.com,2000:app/
---
!foo "bar"

--------------------------------------------------------------------------------

(stream
  (comment)
  (document
    (flow_node
      (tag)
      (double_quote_scalar)))
  (comment)
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (flow_node
      (tag)
      (double_quote_scalar))))

================================================================================
Spec Example 6.19. Secondary Tag Handle
================================================================================
%TAG !! tag:example.com,2000:app/
---
!!int 1 - 3 # Interval, not integer

--------------------------------------------------------------------------------

(stream
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (flow_node
      (tag)
      (plain_scalar
        (string_scalar))))
  (comment))

================================================================================
Spec Example 6.20. Tag Handles
================================================================================
%TAG !e! tag:example.com,2000:app/
---
!e!foo "bar"

--------------------------------------------------------------------------------

(stream
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (flow_node
      (tag)
      (double_quote_scalar))))

================================================================================
Spec Example 6.21. Local Tag Prefix
================================================================================
%TAG !m! !my-
--- # Bulb here
!m!light fluorescent
...
%TAG !m! !my-
--- # Color here
!m!light green

--------------------------------------------------------------------------------

(stream
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (comment)
    (flow_node
      (tag)
      (plain_scalar
        (string_scalar))))
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (comment)
    (flow_node
      (tag)
      (plain_scalar
        (string_scalar)))))

================================================================================
Spec Example 6.22. Global Tag Prefix
================================================================================
%TAG !e! tag:example.com,2000:app/
---
- !e!foo "bar"

--------------------------------------------------------------------------------

(stream
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (tag)
            (double_quote_scalar)))))))

================================================================================
Spec Example 6.23. Node Properties
================================================================================
!!str &a1 "foo":
  !!str bar
&a2 baz : *a1

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (tag)
            (anchor
              (anchor_name))
            (double_quote_scalar))
          value: (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Spec Example 6.24. Verbatim Tags
================================================================================
!<tag:yaml.org,2002:str> foo :
  !<!bar> baz

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (tag)
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 6.26. Tag Shorthands
================================================================================
%TAG !e! tag:example.com,2000:app/
---
- !local foo
- !!str bar
- !e!tag%21 baz

--------------------------------------------------------------------------------

(stream
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 6.28. Non-Specific Tags
================================================================================
# Assuming conventional resolution:
- "12"
- 12
- ! 12

--------------------------------------------------------------------------------

(stream
  (comment)
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (double_quote_scalar)))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_sequence_item
          (flow_node
            (tag)
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Spec Example 6.29. Node Anchors
================================================================================
First occurrence: &anchor Value
Second occurrence: *anchor

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Spec Example 7.1. Alias Nodes
================================================================================
First occurrence: &anchor Foo
Second occurrence: *anchor
Override anchor: &anchor Bar
Reuse anchor: *anchor

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (alias
              (alias_name))))))))

================================================================================
Spec Example 7.2. Empty Content
================================================================================
{
  foo : !!str,
  !!str : bar,
}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)))
        (flow_pair
          key: (flow_node
            (tag))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 7.3. Completely Empty Flow Nodes
================================================================================
{
  ? foo :,
  : bar,
}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_pair
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 7.4. Double Quoted Implicit Keys
================================================================================
"implicit block key" : [
  "implicit flow key" : value,
 ]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (double_quote_scalar))
          value: (flow_node
            (flow_sequence
              (flow_pair
                key: (flow_node
                  (double_quote_scalar))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 7.5. Double Quoted Line Breaks
================================================================================
"folded 
to a space,	
 
to a line feed, or 	\
 \ 	non-content"

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (double_quote_scalar
        (escape_sequence)
        (escape_sequence)))))

================================================================================
Spec Example 7.5. Double Quoted Line Breaks [1.3]
================================================================================
---
"folded 
to a space,
 
to a line feed, or 	\
 \ 	non-content"

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (double_quote_scalar
        (escape_sequence)
        (escape_sequence)))))

================================================================================
Spec Example 7.6. Double Quoted Lines
================================================================================
" 1st non-empty

 2nd non-empty 
	3rd non-empty "

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (double_quote_scalar))))

================================================================================
Spec Example 7.6. Double Quoted Lines [1.3]
================================================================================
---
" 1st non-empty

 2nd non-empty 
 3rd non-empty "

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (double_quote_scalar))))

================================================================================
Spec Example 7.7. Single Quoted Characters
================================================================================
'here''s to "quotes"'

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (single_quote_scalar
        (escape_sequence)))))

================================================================================
Spec Example 7.7. Single Quoted Characters [1.3]
================================================================================
---
'here''s to "quotes"'

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (single_quote_scalar
        (escape_sequence)))))

================================================================================
Spec Example 7.8. Single Quoted Implicit Keys
================================================================================
'implicit block key' : [
  'implicit flow key' : value,
 ]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (single_quote_scalar))
          value: (flow_node
            (flow_sequence
              (flow_pair
                key: (flow_node
                  (single_quote_scalar))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 7.9. Single Quoted Lines
================================================================================
' 1st non-empty

 2nd non-empty 
	3rd non-empty '

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (single_quote_scalar))))

================================================================================
Spec Example 7.9. Single Quoted Lines [1.3]
================================================================================
---
' 1st non-empty

 2nd non-empty 
 3rd non-empty '

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (single_quote_scalar))))

================================================================================
Spec Example 7.10. Plain Characters
================================================================================
# Outside flow collection:
- ::vector
- ": - ()"
- Up, up, and away!
- -123
- http://example.com/foo#bar
# Inside flow collection:
- [ ::vector,
  ": - ()",
  "Up, up and away!",
  -123,
  http://example.com/foo#bar ]

--------------------------------------------------------------------------------

(stream
  (comment)
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (double_quote_scalar)))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (comment)
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (double_quote_scalar))
              (flow_node
                (double_quote_scalar))
              (flow_node
                (plain_scalar
                  (integer_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))))))

================================================================================
Spec Example 7.11. Plain Implicit Keys
================================================================================
implicit block key : [
  implicit flow key : value,
 ]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (flow_sequence
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 7.12. Plain Lines
================================================================================
1st non-empty

 2nd non-empty 
	3rd non-empty

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Spec Example 7.13. Flow Sequence
================================================================================
- [ one, two, ]
- [three ,four]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))))))

================================================================================
Spec Example 7.14. Flow Sequence Entries
================================================================================
[
"double
 quoted", 'single
           quoted',
plain
 text, [ nested ],
single: pair,
]

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_node
          (double_quote_scalar))
        (flow_node
          (single_quote_scalar))
        (flow_node
          (plain_scalar
            (string_scalar)))
        (flow_node
          (flow_sequence
            (flow_node
              (plain_scalar
                (string_scalar)))))
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 7.15. Flow Mappings
================================================================================
- { one : two , three: four , }
- {five: six,seven : eight}

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 7.16. Flow Mapping Entries
================================================================================
{
? explicit: entry,
implicit: entry,
?
}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_pair)))))

================================================================================
Spec Example 7.17. Flow Mapping Separate Values
================================================================================
{
unquoted : "separate",
http://foo.com,
omitted value:,
: omitted key,
}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (flow_node
          (plain_scalar
            (string_scalar)))
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_pair
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 7.18. Flow Mapping Adjacent Values
================================================================================
{
"adjacent":value,
"readable": value,
"empty":
}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (double_quote_scalar))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_pair
          key: (flow_node
            (double_quote_scalar))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_pair
          key: (flow_node
            (double_quote_scalar)))))))

================================================================================
Spec Example 7.19. Single Pair Flow Mappings
================================================================================
[
foo: bar
]

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 7.20. Single Pair Explicit Entry
================================================================================
[
? foo
 bar : baz
]

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_sequence
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 7.21. Single Pair Implicit Entries
================================================================================
- [ YAML : separate ]
- [ : empty key entry ]
- [ {JSON: like}:adjacent ]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_pair
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_pair
                key: (flow_node
                  (flow_mapping
                    (flow_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 7.21. Single Pair Implicit Entries [1.3
================================================================================
- [ YAML : separate ]
- [ : empty key entry ]
- [ "JSON like":adjacent ]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_pair
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_pair
                key: (flow_node
                  (double_quote_scalar))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 7.23. Flow Content
================================================================================
- [ a, b ]
- { a: b }
- "a"
- 'b'
- c

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (flow_node
            (double_quote_scalar)))
        (block_sequence_item
          (flow_node
            (single_quote_scalar)))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Spec Example 7.24. Flow Nodes
================================================================================
- !!str "a"
- 'b'
- &anchor "c"
- *anchor
- !!str

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (tag)
            (double_quote_scalar)))
        (block_sequence_item
          (flow_node
            (single_quote_scalar)))
        (block_sequence_item
          (flow_node
            (anchor
              (anchor_name))
            (double_quote_scalar)))
        (block_sequence_item
          (flow_node
            (alias
              (alias_name))))
        (block_sequence_item
          (flow_node
            (tag)))))))

================================================================================
Spec Example 8.1. Block Scalar Header
================================================================================
- | # Empty header↓
 literal
- >1 # Indentation indicator↓
  folded
- |+ # Chomping indicator↓
 keep

- >1- # Both indicators↓
  strip

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_scalar
              (comment))))
        (block_sequence_item
          (block_node
            (block_scalar
              (comment))))
        (block_sequence_item
          (block_node
            (block_scalar
              (comment))))
        (block_sequence_item
          (block_node
            (block_scalar
              (comment))))))))

================================================================================
Spec Example 8.2. Block Indentation Indicator
================================================================================
- |
 detected
- >
 
  
  # detected
- |1
  explicit
- >
 	
 detected

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))))))

================================================================================
Spec Example 8.2. Block Indentation Indicator [1.3]
================================================================================
- |
 detected
- >
 
  
  # detected
- |1
  explicit
- >
 detected

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))))))

================================================================================
Spec Example 8.4. Chomping Final Line Break
================================================================================
strip: |-
  text
clip: |
  text
keep: |+
  text

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Spec Example 8.5. Chomping Trailing Lines
================================================================================
 # Strip
  # Comments:
strip: |-
  # text
  
 # Clip
  # comments:

clip: |
  # text
 
 # Keep
  # comments:

keep: |+
  # text

 # Trail
  # comments.

--------------------------------------------------------------------------------

(stream
  (comment)
  (comment)
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (comment)
        (comment)
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (comment)
        (comment)
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (comment)
        (comment)))))

================================================================================
Spec Example 8.6. Empty Scalar Chomping
================================================================================
strip: >-

clip: >

keep: |+


--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))))))

================================================================================
Spec Example 8.7. Literal Scalar
================================================================================
|
 literal
 	text



--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 8.7. Literal Scalar [1.3]
================================================================================
--- |
 literal
 	text



--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 8.8. Literal Content
================================================================================
|
 
  
  literal
   
  
  text

 # Comment

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar)))
  (comment))

================================================================================
Spec Example 8.8. Literal Content [1.3]
================================================================================
--- |
 
  
  literal
   
  
  text

 # Comment

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar)))
  (comment))

================================================================================
Spec Example 8.9. Folded Scalar
================================================================================
>
 folded
 text



--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 8.9. Folded Scalar [1.3]
================================================================================
--- >
 folded
 text



--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 8.10. Folded Lines - 8.13. Final Empty Lines
================================================================================
>

 folded
 line

 next
 line
   * bullet

   * list
   * lines

 last
 line

# Comment

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar)))
  (comment))

================================================================================
Spec Example 8.14. Block Sequence
================================================================================
block sequence:
  - one
  - two : three

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))))))))))))

================================================================================
Spec Example 8.15. Block Sequence Entry Types
================================================================================
- # Empty
- |
 block node
- - one # Compact
  - two # sequence
- one: two # Compact mapping

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item)
        (comment)
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (comment)
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (comment))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (comment))))))))

================================================================================
Spec Example 8.16. Block Mappings
================================================================================
block mapping:
 key: value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 8.17. Explicit Block Mapping Entries
================================================================================
? explicit key # Empty value
? |
  block key
: - one # Explicit compact
  - two # block value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (comment)
        (block_mapping_pair
          key: (block_node
            (block_scalar))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (comment)
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (comment))))))))

================================================================================
Spec Example 8.18. Implicit Block Mapping Entries
================================================================================
plain key: in-line value
: # Both empty
"quoted key":
- entry

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair)
        (comment)
        (block_mapping_pair
          key: (flow_node
            (double_quote_scalar))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 8.19. Compact Block Mappings
================================================================================
- sun: yellow
- ? earth: blue
  : moon: white

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))))
                value: (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))))))))))))

================================================================================
Spec Example 8.20. Block Node Types
================================================================================
-
  "flow in block"
- >
 Block scalar
- !!map # Block collection
  foo : bar

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (double_quote_scalar)))
        (block_sequence_item
          (block_node
            (block_scalar)))
        (block_sequence_item
          (block_node
            (tag)
            (comment)
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 8.21. Block Scalar Nodes
================================================================================
literal: |2
  value
folded:
   !foo
  >1
 value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (tag)
            (block_scalar)))))))

================================================================================
Spec Example 8.21. Block Scalar Nodes [1.3]
================================================================================
literal: |2
  value
folded: !foo >1
 value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (tag)
            (block_scalar)))))))

================================================================================
Spec Example 8.22. Block Collection Nodes
================================================================================
sequence: !!seq
- entry
- !!seq
 - nested
mapping: !!map
 foo: bar

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (tag)
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (block_node
                  (tag)
                  (block_sequence
                    (block_sequence_item
                      (flow_node
                        (plain_scalar
                          (string_scalar))))))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (tag)
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Spec Example 9.2. Document Markers
================================================================================
%YAML 1.2
---
Document
... # Suffix

--------------------------------------------------------------------------------

(stream
  (document
    (yaml_directive
      (yaml_version))
    (flow_node
      (plain_scalar
        (string_scalar))))
  (comment))

================================================================================
Spec Example 9.3. Bare Documents
================================================================================
Bare
document
...
# No document
...
|
%!PS-Adobe-2.0 # Not the first line

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar))))
  (comment)
  (document)
  (document
    (block_node
      (block_scalar))))

================================================================================
Spec Example 9.4. Explicit Documents
================================================================================
---
{ matches
% : 20 }
...
---
# Empty
...

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar)))))))
  (document
    (comment)))

================================================================================
Spec Example 9.5. Directives Documents
================================================================================
%YAML 1.2
--- |
%!PS-Adobe-2.0
...
%YAML 1.2
---
# Empty
...

--------------------------------------------------------------------------------

(stream
  (document
    (yaml_directive
      (yaml_version))
    (block_node
      (block_scalar)))
  (document
    (yaml_directive
      (yaml_version))
    (comment)))

================================================================================
Spec Example 9.6. Stream
================================================================================
Document
---
# Empty
...
%YAML 1.2
---
matches %: 20

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar))))
  (document
    (comment))
  (document
    (yaml_directive
      (yaml_version))
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Spec Example 9.6. Stream [1.3]
================================================================================
Mapping: Document
---
# Empty
...
%YAML 1.2
---
matches %: 20

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (comment))
  (document
    (yaml_directive
      (yaml_version))
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))))))

================================================================================
Tab after document header
================================================================================
---	scalar

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Tab at beginning of line followed by a flow mapping
================================================================================
	{}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (flow_mapping))))

================================================================================
Tag shorthand used in documents but only defined in the first
================================================================================
%TAG !prefix! tag:example.com,2011:
--- !prefix!A
a: b
--- !prefix!B
c: d
--- !prefix!C
e: f

--------------------------------------------------------------------------------

(stream
  (document
    (tag_directive
      (tag_handle)
      (tag_prefix))
    (block_node
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (block_node
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (block_node
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Tags for Block Objects
================================================================================
foo: !!seq
  - !!str a
  - !!map
    key: !!str value

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (tag)
            (block_sequence
              (block_sequence_item
                (flow_node
                  (tag)
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (block_node
                  (tag)
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (tag)
                        (plain_scalar
                          (string_scalar))))))))))))))

================================================================================
Tags for Flow Objects
================================================================================
!!map {
  k: !!seq
  [ a, !!str b]
}

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (tag)
      (flow_mapping
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (tag)
                (plain_scalar
                  (string_scalar))))))))))

================================================================================
Tags for Root Objects
================================================================================
--- !!map
? a
: b
--- !!seq
- !!str c
--- !!str
d
e

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (block_node
      (tag)
      (block_sequence
        (block_sequence_item
          (flow_node
            (tag)
            (plain_scalar
              (string_scalar)))))))
  (document
    (flow_node
      (tag)
      (plain_scalar
        (string_scalar)))))

================================================================================
Tags in Block Sequence
================================================================================
 - !!str a
 - b
 - !!int 42
 - d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))
        (block_sequence_item
          (flow_node
            (tag)
            (plain_scalar
              (integer_scalar))))
        (block_sequence_item
          (flow_node
            (plain_scalar
              (string_scalar))))))))

================================================================================
Tags in Explicit Mapping
================================================================================
? !!str a
: !!int 47
? c
: !!str d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (tag)
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))))))

================================================================================
Tags in Implicit Mapping
================================================================================
!!str a: b
c: !!int 42
e: !!str f
g: h
!!int 23: !!bool false

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (tag)
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (tag)
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (tag)
            (plain_scalar
              (integer_scalar)))
          value: (flow_node
            (tag)
            (plain_scalar
              (boolean_scalar))))))))

================================================================================
Tags on Empty Scalars
================================================================================
- !!str
-
  !!null : a
  b: !!str
- !!str : !!null

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (tag)))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (tag))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_mapping_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (tag))))))
        (block_sequence_item
          (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (tag))
                value: (flow_node
                  (tag))))))))))

================================================================================
Three dashes and content without space
================================================================================
---word1
word2

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Three dashes and content without space [1.3]
================================================================================
---
---word1
word2

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Trailing comment in multiline plain scalar [INVALID]
================================================================================
---
plain: a
       b # end of scalar
       c

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (comment)
        (ERROR)))))

================================================================================
Trailing content after quoted value [INVALID]
================================================================================
key1: "quoted1"
key2: "quoted2" trailing content
key3: "quoted3"

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (double_quote_scalar)))
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (double_quote_scalar))))

================================================================================
Trailing content that looks like a mapping [INVALID]
================================================================================
key1: "quoted1"
key2: "quoted2" no key: nor value
key3: "quoted3"

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (double_quote_scalar)))
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (double_quote_scalar))))

================================================================================
Two document start markers
================================================================================
---
---

--------------------------------------------------------------------------------

(stream
  (document)
  (document))

================================================================================
Various combinations of explicit block mappings
================================================================================
complex1:
  ? - a
complex2:
  ? - a
  : b
complex3:
  ? - a
  : >
    b
complex4:
  ? >
    a
  :
complex5:
  ? - a
  : - b

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (block_node
                  (block_sequence
                    (block_sequence_item
                      (flow_node
                        (plain_scalar
                          (string_scalar))))))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (block_node
                  (block_sequence
                    (block_sequence_item
                      (flow_node
                        (plain_scalar
                          (string_scalar))))))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (block_node
                  (block_sequence
                    (block_sequence_item
                      (flow_node
                        (plain_scalar
                          (string_scalar))))))
                value: (block_node
                  (block_scalar))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (block_node
                  (block_scalar))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (block_node
                  (block_sequence
                    (block_sequence_item
                      (flow_node
                        (plain_scalar
                          (string_scalar))))))
                value: (block_node
                  (block_sequence
                    (block_sequence_item
                      (flow_node
                        (plain_scalar
                          (string_scalar))))))))))))))

================================================================================
Various combinations of tags and anchors
================================================================================
---
&a1
!!str
scalar1
---
!!str
&a2
scalar2
---
&a3
!!str scalar3
---
&a4 !!map
&a5 !!str key5: value4
---
a6: 1
&anchor6 b6: 2
---
!!map
&a8 !!str key8: value7
---
!!map
!!str &a10 key10: value9
---
!!str &a11
value11

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (anchor
        (anchor_name))
      (tag)
      (plain_scalar
        (string_scalar))))
  (document
    (flow_node
      (tag)
      (anchor
        (anchor_name))
      (plain_scalar
        (string_scalar))))
  (document
    (flow_node
      (anchor
        (anchor_name))
      (tag)
      (plain_scalar
        (string_scalar))))
  (document
    (block_node
      (anchor
        (anchor_name))
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (tag)
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar))))
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (integer_scalar)))))))
  (document
    (block_node
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (tag)
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (block_node
      (tag)
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (tag)
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar)))))))
  (document
    (flow_node
      (tag)
      (anchor
        (anchor_name))
      (plain_scalar
        (string_scalar)))))

================================================================================
Various empty or newline only quoted strings
================================================================================
---
a: '
  '
b: '  
  '
c: "
  "
d: "  
  "
e: '

  '
f: "

  "
g: '


  '
h: "


  "

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (single_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (single_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (single_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (single_quote_scalar)))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))))))

================================================================================
Various location of anchors in flow sequence
================================================================================
&flowseq [
 a: b,
 &c c: d,
 { &e e: f },
 &g { g: h }
]

--------------------------------------------------------------------------------

(stream
  (document
    (flow_node
      (anchor
        (anchor_name))
      (flow_sequence
        (flow_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_pair
          key: (flow_node
            (anchor
              (anchor_name))
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (flow_node
          (flow_mapping
            (flow_pair
              key: (flow_node
                (anchor
                  (anchor_name))
                (plain_scalar
                  (string_scalar)))
              value: (flow_node
                (plain_scalar
                  (string_scalar))))))
        (flow_node
          (anchor
            (anchor_name))
          (flow_mapping
            (flow_pair
              key: (flow_node
                (plain_scalar
                  (string_scalar)))
              value: (flow_node
                (plain_scalar
                  (string_scalar))))))))))

================================================================================
Various Trailing Comments
================================================================================
a: "double
  quotes" # lala
b: plain
 value  # lala
c  : #lala
  d
? # lala
 - seq1
: # lala
 - #lala
  seq2
e:
 &node # lala
 - x: y
block: > # lala
  abcde

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (comment)
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (comment)
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          (comment)
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          (comment)
          key: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))))
          (comment)
          value: (block_node
            (block_sequence
              (block_sequence_item
                (comment)
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (comment)
            (block_sequence
              (block_sequence_item
                (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar
              (comment))))))))

================================================================================
Various Trailing Comments [1.3]
================================================================================
a: "double
  quotes" # lala
b: plain
 value  # lala
c  : #lala
  d
? # lala
 - seq1
: # lala
 - #lala
  seq2
e: &node # lala
 - x: y
block: > # lala
  abcde

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (double_quote_scalar)))
        (comment)
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (comment)
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          (comment)
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          (comment)
          key: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))))
          (comment)
          value: (block_node
            (block_sequence
              (block_sequence_item
                (comment)
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (comment)
            (block_sequence
              (block_sequence_item
                (block_node
                  (block_mapping
                    (block_mapping_pair
                      key: (flow_node
                        (plain_scalar
                          (string_scalar)))
                      value: (flow_node
                        (plain_scalar
                          (string_scalar))))))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_scalar
              (comment))))))))

================================================================================
Various trailing tabs
================================================================================
a: b	
seq:	
 - a	
c: d	#X

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (comment)))))

================================================================================
Whitespace After Scalars in Flow
================================================================================
- [a, b , c ]
- { "a"  : b
   , c : 'd' ,
   e   : "f"
  }
- [      ]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_sequence
        (block_sequence_item
          (flow_node
            (flow_sequence
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar)))
              (flow_node
                (plain_scalar
                  (string_scalar))))))
        (block_sequence_item
          (flow_node
            (flow_mapping
              (flow_pair
                key: (flow_node
                  (double_quote_scalar))
                value: (flow_node
                  (plain_scalar
                    (string_scalar))))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (single_quote_scalar)))
              (flow_pair
                key: (flow_node
                  (plain_scalar
                    (string_scalar)))
                value: (flow_node
                  (double_quote_scalar))))))
        (block_sequence_item
          (flow_node
            (flow_sequence)))))))

================================================================================
Whitespace around colon in mappings
================================================================================
"top1" : 
  "key1" : &alias1 scalar1
'top2' : 
  'key2' : &alias2 scalar2
top3: &node3 
  *alias1 : scalar3
top4: 
  *alias2 : scalar4
top5   :    
  scalar5
top6: 
  &anchor6 'key6' : scalar6

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (double_quote_scalar))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (double_quote_scalar))
                value: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (single_quote_scalar))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (single_quote_scalar))
                value: (flow_node
                  (anchor
                    (anchor_name))
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (anchor
              (anchor_name))
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (alias
                    (alias_name)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (alias
                    (alias_name)))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (flow_node
            (plain_scalar
              (string_scalar))))
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar)))
          value: (block_node
            (block_mapping
              (block_mapping_pair
                key: (flow_node
                  (anchor
                    (anchor_name))
                  (single_quote_scalar))
                value: (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))

================================================================================
Wrong indendation in Map [INVALID]
================================================================================
key:
  ok: 1
 wrong: 2

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar)))
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (plain_scalar
        (integer_scalar)))))

================================================================================
Wrong indendation in mapping [INVALID]
================================================================================
k1: v1
 k2: v2

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
Wrong indendation in Sequence [INVALID]
================================================================================
key:
   - ok
   - also ok
  - wrong

--------------------------------------------------------------------------------

(ERROR
  (flow_node
    (plain_scalar
      (string_scalar)))
  (block_sequence_item
    (flow_node
      (plain_scalar
        (string_scalar))))
  (flow_node
    (plain_scalar
      (string_scalar))))

================================================================================
Wrong indented flow sequence [INVALID]
================================================================================
---
flow: [a,
b,
c]

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (ERROR
          (flow_node
            (plain_scalar
              (string_scalar)))
          (string_scalar)
          (string_scalar))))))

================================================================================
Wrong indented multiline quoted scalar [INVALID]
================================================================================
---
quoted: "a
b
c"

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (flow_node
            (plain_scalar
              (string_scalar))))
        (ERROR
          (string_scalar)
          (string_scalar))))))

================================================================================
Wrong indented sequence item [INVALID]
================================================================================
- key: value
 - item1

--------------------------------------------------------------------------------

(ERROR
  (block_mapping_pair
    key: (flow_node
      (plain_scalar
        (string_scalar)))
    value: (flow_node
      (plain_scalar
        (string_scalar)))))

================================================================================
YAML directive without document end marker [INVALID]
================================================================================
---
key: value
%YAML 1.2
---

--------------------------------------------------------------------------------

(stream
  (ERROR
    (block_mapping_pair
      key: (flow_node
        (plain_scalar
          (string_scalar)))
      value: (flow_node
        (plain_scalar
          (string_scalar)))))
  (document
    (yaml_directive
      (yaml_version))))

================================================================================
Zero indented block scalar
================================================================================
--- >
line1
line2
line3

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Zero indented block scalar with line that looks like a comment
================================================================================
--- >
line1
# no comment
line3

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_scalar))))

================================================================================
Zero-indented sequences in explicit mapping keys
================================================================================
---
?
- a
- b
:
- c
- d

--------------------------------------------------------------------------------

(stream
  (document
    (block_node
      (block_mapping
        (block_mapping_pair
          key: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))))
          value: (block_node
            (block_sequence
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar))))
              (block_sequence_item
                (flow_node
                  (plain_scalar
                    (string_scalar)))))))))))
