================================================================================
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
     (flow_node
      (plain_scalar
       (string_scalar)))
     (flow_node
      (anchor
       (anchor_name))
      (plain_scalar
       (string_scalar))))
    (block_mapping_pair
     (flow_node
      (plain_scalar
       (string_scalar)))
     (flow_node
      (alias
       (alias_name))))
    (block_mapping_pair
     (flow_node
      (plain_scalar
       (string_scalar)))
     (flow_node
      (anchor
       (anchor_name))
      (plain_scalar
       (string_scalar))))
    (block_mapping_pair
     (flow_node
      (plain_scalar
       (string_scalar)))
     (flow_node
      (alias
       (alias_name))))))))

================================================================================
Empty Content
================================================================================
{
  foo : !!str,
  !!str : bar,
}

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

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

================================================================================
Completely Empty Flow Nodes
================================================================================
{
  ? foo :,
  : bar,
}

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

(stream
 (document
  (flow_node
   (flow_mapping
    (flow_pair
     (flow_node
      (plain_scalar
       (string_scalar))))
    (flow_pair
     (flow_node
      (plain_scalar
       (string_scalar))))))))

================================================================================
Double Quoted Implicit Keys
================================================================================
"implicit block key" : [
  "implicit flow key" : value,
 ]

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

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

================================================================================
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)))))

================================================================================
Double Quoted Lines
================================================================================
" 1st non-empty



 2nd non-empty
	3rd non-empty "

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

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

================================================================================
Single Quoted Characters
================================================================================
 'here''s to "quotes"'

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

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

================================================================================
Single Quoted Implicit Keys
================================================================================
'implicit block key' : [
  'implicit flow key' : value,
 ]

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

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

================================================================================
Single Quoted Lines
================================================================================
' 1st non-empty



 2nd non-empty
	3rd non-empty '

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

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

================================================================================
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))))))))))

================================================================================
Plain Implicit Keys
================================================================================
implicit block key : [
  implicit flow key : value,
 ]

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

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

================================================================================
Plain Lines
================================================================================
1st non-empty



 2nd non-empty
	3rd non-empty

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

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

================================================================================
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))))))))))

================================================================================
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
     (flow_node
      (plain_scalar
       (string_scalar)))
     (flow_node
      (plain_scalar
       (string_scalar))))))))

================================================================================
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
        (flow_node
         (plain_scalar
          (string_scalar)))
        (flow_node
         (plain_scalar
          (string_scalar))))
       (flow_pair
        (flow_node
         (plain_scalar
          (string_scalar)))
        (flow_node
         (plain_scalar
          (string_scalar)))))))
    (block_sequence_item
     (flow_node
      (flow_mapping
       (flow_pair
        (flow_node
         (plain_scalar
          (string_scalar)))
        (flow_node
         (plain_scalar
          (string_scalar))))
       (flow_pair
        (flow_node
         (plain_scalar
          (string_scalar)))
        (flow_node
         (plain_scalar
          (string_scalar)))))))))))

================================================================================
Flow Mapping Entries
================================================================================
{
? explicit: entry,
implicit: entry,
?
}

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

(stream
 (document
  (flow_node
   (flow_mapping
    (flow_pair
     (flow_node
      (plain_scalar
       (string_scalar)))
     (flow_node
      (plain_scalar
       (string_scalar))))
    (flow_pair
     (flow_node
      (plain_scalar
       (string_scalar)))
     (flow_node
      (plain_scalar
       (string_scalar))))
    (flow_pair)))))

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

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

(stream
 (document
  (flow_node
   (flow_mapping
    (flow_pair
     (flow_node
      (plain_scalar
       (string_scalar)))
     (flow_node
      (double_quote_scalar)))
    (flow_node
     (plain_scalar
      (string_scalar)))
    (flow_pair
     (flow_node
      (plain_scalar
       (string_scalar))))
    (flow_pair
     (flow_node
      (plain_scalar
       (string_scalar))))))))

================================================================================
Flow Mapping Adjacent Values
================================================================================
{
"adjacent":value,
"readable": value,
"empty":
}

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

(stream
 (document
  (flow_node
   (flow_mapping
    (flow_pair
     (flow_node
      (double_quote_scalar))
     (flow_node
      (plain_scalar
       (string_scalar))))
    (flow_pair
     (flow_node
      (double_quote_scalar))
     (flow_node
      (plain_scalar
       (string_scalar))))
    (flow_pair
     (flow_node
      (double_quote_scalar)))))))

================================================================================
Single Pair Flow Mappings
================================================================================
[
foo: bar
]

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

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

================================================================================
Single Pair Explicit Entry
================================================================================
[
? foo
 bar : baz
]

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

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

================================================================================
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
        (flow_node
         (plain_scalar
          (string_scalar)))
        (flow_node
         (plain_scalar
          (string_scalar)))))))
    (block_sequence_item
     (flow_node
      (flow_sequence
       (flow_pair
        (flow_node
         (plain_scalar
          (string_scalar)))))))
    (block_sequence_item
     (flow_node
      (flow_sequence
       (flow_pair
        (flow_node
         (flow_mapping
          (flow_pair
           (flow_node
            (plain_scalar
             (string_scalar)))
           (flow_node
            (plain_scalar
             (string_scalar))))))
        (flow_node
         (plain_scalar
          (string_scalar)))))))))))

================================================================================
Invalid Implicit Keys
================================================================================
[ foo
 bar: invalid,
 "foo...>1K characters...bar": invalid ]

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

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

================================================================================
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
        (flow_node
         (plain_scalar
          (string_scalar)))
        (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))))))))

================================================================================
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)))))))
