================================================================================ Aliases in Block Sequence ================================================================================ - &a a - &b b - *a - *b -------------------------------------------------------------------------------- (stream (document (block_node (block_sequence (block_sequence_item (flow_node (anchor) (plain_scalar))) (block_sequence_item (flow_node (anchor) (plain_scalar))) (block_sequence_item (flow_node (alias))) (block_sequence_item (flow_node (alias))))))) ================================================================================ Aliases in Explicit Block Mapping ================================================================================ ? &a a : &b b : *a -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair value: (flow_node (alias))))))) ================================================================================ 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) (flow_sequence (flow_node (plain_scalar)) (flow_node (anchor) (plain_scalar)))) value: (flow_node (alias))) (flow_pair key: (flow_node (alias)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (alias)) (flow_node (plain_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) (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (alias)) value: (flow_node (alias))))))) ================================================================================ Allowed characters in alias ================================================================================ a: &:@*!$": scalar a b: *:@*!$": -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))))))) ================================================================================ 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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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))) (block_mapping_pair key: (flow_node (single_quote_scalar)) value: (flow_node (plain_scalar))))))) ================================================================================ Anchor and alias as mapping key [INVALID] ================================================================================ key1: &alias value1 &b *alias : value2 -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (flow_node (anchor))) ================================================================================ Anchor before sequence entry on same line [INVALID] ================================================================================ &anchor - sequence entry -------------------------------------------------------------------------------- (ERROR (flow_node (anchor))) ================================================================================ Anchor before zero indented sequence ================================================================================ --- seq: &anchor - a - b -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar)))))))))) ================================================================================ Anchor for empty node ================================================================================ --- a: &anchor b: *anchor -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))))))) ================================================================================ Anchor plus Alias [INVALID] ================================================================================ key1: &a value key2: &b *a -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor)))) ================================================================================ Anchor with colon in the middle ================================================================================ --- key: &an:chor value -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_scalar))))))) ================================================================================ Anchor with unicode character ================================================================================ --- - &šŸ˜ unicode anchor -------------------------------------------------------------------------------- (stream (document (block_node (block_sequence (block_sequence_item (flow_node (anchor) (plain_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) (tag) (plain_scalar))) (block_sequence_item (flow_node (tag) (plain_scalar))) (block_sequence_item (flow_node (tag) (anchor) (plain_scalar))) (block_sequence_item (flow_node (anchor) (plain_scalar))))))) ================================================================================ Anchors in Mapping ================================================================================ &a a: b c: &d d -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_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))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor)) value: (flow_node (anchor)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor)) value: (flow_node (anchor)))))))))) ================================================================================ Anchors With Colon in Name ================================================================================ &a: key: &a value foo: *a: -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))))))) ================================================================================ 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))))))) ================================================================================ 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)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (double_quote_scalar))) (ERROR)))))))) ================================================================================ Bad indentation in mapping [INVALID] ================================================================================ map: key1: "quoted1" key2: "bad indentation" -------------------------------------------------------------------------------- (ERROR (flow_node (plain_scalar)) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (double_quote_scalar)))) ================================================================================ Bare document after document end marker ================================================================================ --- scalar1 ... key: value -------------------------------------------------------------------------------- (stream (document (flow_node (plain_scalar))) (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_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))) (block_mapping_pair value: (flow_node (plain_scalar))))))) ================================================================================ Block Mapping with Missing Values ================================================================================ ? a ? b c: -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) 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)) 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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_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))) (block_sequence_item (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (plain_scalar))))))) ================================================================================ Block Submapping ================================================================================ foo: bar: 1 baz: 2 -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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))))))) ================================================================================ 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))))))) ================================================================================ Colon followed by comma ================================================================================ --- - :, -------------------------------------------------------------------------------- (stream (document (block_node (block_sequence (block_sequence_item (flow_node (plain_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)) (comment)) ================================================================================ Comment in flow sequence before comma ================================================================================ --- [ word1 # comment , word2] -------------------------------------------------------------------------------- (stream (document (flow_node (flow_sequence (flow_node (plain_scalar)) (comment) (flow_node (plain_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)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (ERROR (flow_node (plain_scalar))) (comment))))) ================================================================================ Comment without whitespace after block scalar indicator [INVALID] ================================================================================ block: ># comment scalar -------------------------------------------------------------------------------- (ERROR (flow_node (plain_scalar))) ================================================================================ Comment without whitespace after doublequoted scalar [INVALID] ================================================================================ key: "value"# invalid comment -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (tag) (double_quote_scalar (escape_sequence) (escape_sequence) (escape_sequence) (escape_sequence)))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (tag) (block_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (document)) ================================================================================ Document with footer ================================================================================ aaa: bbb ... -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))) ================================================================================ Document-end marker ================================================================================ ... -------------------------------------------------------------------------------- (stream (document)) ================================================================================ Double quoted scalar with escaped single quote [INVALID] ================================================================================ --- double: "quoted \' scalar" -------------------------------------------------------------------------------- (ERROR (flow_node (plain_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))) (ERROR))))) ================================================================================ Doublequoted scalar starting with a tab ================================================================================ --- tab: "\tstring" -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_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)) 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)) value: (flow_node (flow_sequence))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) 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)) (comment) value: (flow_node (plain_scalar))))))) ================================================================================ Explicit Non-Specific Tag ================================================================================ ! a -------------------------------------------------------------------------------- (stream (document (flow_node (tag) (plain_scalar)))) ================================================================================ Explicit Non-Specific Tag [1.3] ================================================================================ --- ! a -------------------------------------------------------------------------------- (stream (document (flow_node (tag) (plain_scalar)))) ================================================================================ Flow Mapping ================================================================================ {foo: you, bar: far} -------------------------------------------------------------------------------- (stream (document (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Flow Mapping Key on two lines [INVALID] ================================================================================ [23 ]: 42 -------------------------------------------------------------------------------- (stream (document (flow_node (flow_sequence (flow_node (plain_scalar))))) (MISSING _eof)) ================================================================================ Flow mapping missing a separating comma [INVALID] ================================================================================ --- { foo: 1 bar: 2 } -------------------------------------------------------------------------------- (ERROR (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))) ================================================================================ Flow Sequence ================================================================================ [foo, bar, 42] -------------------------------------------------------------------------------- (stream (document (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_scalar)))))) ================================================================================ Flow Sequence in Block Mapping ================================================================================ a: [b, c] -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_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)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar))))) (flow_pair key: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)))) value: (flow_node (plain_scalar))))))) ================================================================================ Flow Sequence in Flow Sequence ================================================================================ [a, [b, c]] -------------------------------------------------------------------------------- (stream (document (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_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)) (flow_node (plain_scalar)) (flow_node (plain_scalar))))) ================================================================================ Flow sequence with invalid extra comma [INVALID] ================================================================================ --- [ a, b, c, , ] -------------------------------------------------------------------------------- (ERROR (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_scalar))) ================================================================================ Flow sequence without closing bracket [INVALID] ================================================================================ --- [ [ a, b, c ] -------------------------------------------------------------------------------- (ERROR (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_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)))) value: (flow_node (plain_scalar))))))) ================================================================================ Implicit key followed by newline [INVALID] ================================================================================ --- [ key : value ] -------------------------------------------------------------------------------- (ERROR (flow_node (plain_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))) (flow_node (anchor))) ================================================================================ 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)) value: (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))) ================================================================================ Invalid comment after comma [INVALID] ================================================================================ --- [ a, b, c,#invalid ] -------------------------------------------------------------------------------- (ERROR (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_scalar))) ================================================================================ Invalid comment after end of flow sequence [INVALID] ================================================================================ --- [ a, b, c, ]#invalid -------------------------------------------------------------------------------- (ERROR (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (MISSING _eof)) ================================================================================ Invalid document markers in flow style [INVALID] ================================================================================ [ --- , ... ] -------------------------------------------------------------------------------- (ERROR (plain_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))))) (MISSING _eof)) ================================================================================ Invalid mapping after sequence [INVALID] ================================================================================ - item1 - item2 invalid: x -------------------------------------------------------------------------------- (ERROR (block_sequence_item (flow_node (plain_scalar))) (flow_node (plain_scalar)) (plain_scalar)) ================================================================================ Invalid mapping in plain multiline [INVALID] ================================================================================ this is invalid: x -------------------------------------------------------------------------------- (stream (document (flow_node (plain_scalar))) (MISSING _eof)) ================================================================================ Invalid Mapping in plain scalar [INVALID] ================================================================================ key: word1 word2 no: key -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))) ================================================================================ Invalid mapping in plain single line value [INVALID] ================================================================================ a: b: c: d -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))) ================================================================================ Invalid nested mapping [INVALID] ================================================================================ --- a: 'b': c -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_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))) (block_sequence_item (flow_node (plain_scalar))) (ERROR (plain_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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar)))))) (ERROR (flow_node (plain_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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar))) (ERROR (plain_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)) value: (flow_node (plain_scalar)))))) ================================================================================ Invalid tabs as indendation in a mapping [INVALID] ================================================================================ --- a: b: c: value -------------------------------------------------------------------------------- (ERROR (flow_node (plain_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))) ================================================================================ Invalid value after mapping [INVALID] ================================================================================ foo: bar invalid -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (ERROR (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar))))))) ================================================================================ Literal Block Scalar ================================================================================ a: | ab cd ef ... -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_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)) 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)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Mapping starting at --- line [INVALID] ================================================================================ --- key1: value1 key2: value2 -------------------------------------------------------------------------------- (ERROR (flow_node (plain_scalar))) ================================================================================ Mapping with anchor on document start line [INVALID] ================================================================================ --- &anchor a: b -------------------------------------------------------------------------------- (stream (document (flow_node (anchor) (plain_scalar))) (MISSING _eof)) ================================================================================ Mapping, key and flow sequence item anchors ================================================================================ --- &mapping &key [ &item a, b, c ]: value -------------------------------------------------------------------------------- (stream (document (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (anchor) (flow_sequence (flow_node (anchor) (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_scalar)))) value: (flow_node (plain_scalar))))))) ================================================================================ Missing colon [INVALID] ================================================================================ top1: key1: val1 top2 -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (ERROR (flow_node (plain_scalar))))))) ================================================================================ Missing comma in flow [INVALID] ================================================================================ key: [ word1 # xxx word2 ] -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar))) (ERROR (flow_node (plain_scalar)) (comment)))))) ================================================================================ Missing document-end marker before directive [INVALID] ================================================================================ --- scalar1 # comment %YAML 1.2 --- scalar2 -------------------------------------------------------------------------------- (stream (document) (ERROR (flow_node (plain_scalar)) (comment)) (document (flow_node (plain_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)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)))))) (block_sequence_item (flow_node (flow_mapping (flow_pair key: (flow_node (double_quote_scalar)) value: (flow_node (plain_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))) (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)) value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (flow_mapping (flow_node (double_quote_scalar)) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Multiline implicit keys [INVALID] ================================================================================ a\nb: 1 c d: 1 -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (flow_mapping (flow_node (plain_scalar)) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))))))) ================================================================================ Multiline Scalar at Top Level ================================================================================ a b c d e -------------------------------------------------------------------------------- (stream (document (flow_node (plain_scalar)))) ================================================================================ Multiline Scalar at Top Level [1.3] ================================================================================ --- a b c d e -------------------------------------------------------------------------------- (stream (document (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))) ================================================================================ Multiline scalar that looks like a YAML directive ================================================================================ --- scalar %YAML 1.2 -------------------------------------------------------------------------------- (stream (document (flow_node (plain_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))) (ERROR))))) ================================================================================ Multiple Entry Block Sequence ================================================================================ - foo - bar - 42 -------------------------------------------------------------------------------- (stream (document (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))) ================================================================================ Nested flow collections ================================================================================ --- { a: [ b, c, { d: [e, f] } ] } -------------------------------------------------------------------------------- (stream (document (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_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)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_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)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))) (flow_node (plain_scalar))))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) (flow_node (flow_sequence (flow_pair key: (flow_node (flow_sequence (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)))))) value: (flow_node (plain_scalar))) (flow_node (plain_scalar)))))) value: (flow_node (plain_scalar))))))) ================================================================================ Nested top level flow mapping ================================================================================ { key: [[[ value ]]] } -------------------------------------------------------------------------------- (stream (document (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_sequence (flow_node (flow_sequence (flow_node (flow_sequence (flow_node (plain_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)) value: (block_node (anchor) (tag) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Node anchor in sequence [INVALID] ================================================================================ - item1 &node - item2 -------------------------------------------------------------------------------- (stream (document (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (ERROR (anchor)) (block_sequence_item (flow_node (plain_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)) value: (flow_node (anchor))) (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)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (comment) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_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)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (comment) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_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))) (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))))))) ================================================================================ 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)) value: (flow_node (plain_scalar))))))) ================================================================================ Plain Scalar looking like key, comment, anchor and tag ================================================================================ k:#foo &a !t s -------------------------------------------------------------------------------- (stream (document (flow_node (plain_scalar)))) ================================================================================ Plain Scalar looking like key, comment, anchor and tag [1.3] ================================================================================ --- k:#foo &a !t s -------------------------------------------------------------------------------- (stream (document (flow_node (plain_scalar)))) ================================================================================ Plain scalar with backslashes ================================================================================ --- plain\value\with\backslashes -------------------------------------------------------------------------------- (stream (document (flow_node (plain_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)) value: (flow_node (plain_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)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor))) (ERROR (flow_node (anchor) (plain_scalar))))))) ================================================================================ Scalars on --- line ================================================================================ --- "quoted string" --- &node foo -------------------------------------------------------------------------------- (stream (document (flow_node (double_quote_scalar))) (document (flow_node (anchor) (plain_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))))))) ================================================================================ Sequence Indent ================================================================================ foo: - 42 bar: - 44 -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar)))))))))) ================================================================================ Sequence on same Line as Mapping Key [INVALID] ================================================================================ key: - a - b -------------------------------------------------------------------------------- (ERROR (flow_node (plain_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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))) ================================================================================ Simple Mapping Indent ================================================================================ foo: bar: baz -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Single block sequence with anchor ================================================================================ &sequence - a -------------------------------------------------------------------------------- (stream (document (block_node (anchor) (block_sequence (block_sequence_item (flow_node (plain_scalar))))))) ================================================================================ Single block sequence with anchor and explicit document start ================================================================================ --- &sequence - a -------------------------------------------------------------------------------- (stream (document (block_node (anchor) (block_sequence (block_sequence_item (flow_node (plain_scalar))))))) ================================================================================ Single Entry Block Sequence ================================================================================ - foo -------------------------------------------------------------------------------- (stream (document (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))))))) ================================================================================ Single Pair Block Mapping ================================================================================ foo: bar -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_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)) value: (flow_node (plain_scalar))) (comment) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (comment) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) (flow_node (plain_scalar)) (flow_node (plain_scalar))))) (block_sequence_item (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_scalar))))) (block_sequence_item (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_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)) value: (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar))) (comment)))) (document (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) (comment) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) (comment) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (comment) (block_sequence_item (flow_node (anchor) (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_sequence (block_sequence_item (flow_node (alias))) (comment) (block_sequence_item (flow_node (plain_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))) (block_sequence_item (flow_node (plain_scalar))))) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)))) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar)) (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (double_quote_scalar (escape_sequence)))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (double_quote_scalar (escape_sequence) (escape_sequence) (escape_sequence) (escape_sequence)))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (double_quote_scalar (escape_sequence) (escape_sequence) (escape_sequence) (escape_sequence)))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (single_quote_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (single_quote_scalar (escape_sequence) (escape_sequence)))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (tag) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (tag) (block_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (anchor) (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (tag) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))))) (block_sequence_item (block_node (tag) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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))) (block_mapping_pair key: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Spec Example 2.27. 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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_sequence (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_sequence (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_scalar))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (tag) (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))))))) ================================================================================ 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)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (single_quote_scalar))) (block_mapping_pair key: (flow_node (plain_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)))) ================================================================================ 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)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (flow_sequence (comment) (flow_node (plain_scalar)) (comment) (flow_node (plain_scalar)) (comment) (flow_node (plain_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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_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)) (comment) value: (flow_node (plain_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)) (comment) (comment) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))) (comment) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) (comment) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) (comment) value: (flow_node (plain_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))) (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))) (document (tag_directive (tag_handle) (tag_prefix)) (comment) (flow_node (tag) (plain_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) (double_quote_scalar)) value: (flow_node (tag) (plain_scalar))) (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (alias))))))) ================================================================================ Spec Example 6.24. Verbatim Tags ================================================================================ ! foo : ! baz -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (tag) (plain_scalar)) value: (flow_node (tag) (plain_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))) (block_sequence_item (flow_node (tag) (plain_scalar))) (block_sequence_item (flow_node (tag) (plain_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))) (block_sequence_item (flow_node (tag) (plain_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)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))))))) ================================================================================ 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)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (anchor) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (alias))))))) ================================================================================ Spec Example 7.2. Empty Content ================================================================================ { foo : !!str, !!str : bar, } -------------------------------------------------------------------------------- (stream (document (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (tag))) (flow_pair key: (flow_node (tag)) value: (flow_node (plain_scalar))))))) ================================================================================ Spec Example 7.3. Completely Empty Flow Nodes ================================================================================ { ? foo :, : bar, } -------------------------------------------------------------------------------- (stream (document (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar))) (flow_pair value: (flow_node (plain_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)))))))))) ================================================================================ 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)))))))))) ================================================================================ 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))) (block_sequence_item (flow_node (double_quote_scalar))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar))) (comment) (block_sequence_item (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (double_quote_scalar)) (flow_node (double_quote_scalar)) (flow_node (plain_scalar)) (flow_node (plain_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)) value: (flow_node (flow_sequence (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Spec Example 7.12. Plain Lines ================================================================================ 1st non-empty 2nd non-empty 3rd non-empty -------------------------------------------------------------------------------- (stream (document (flow_node (plain_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)) (flow_node (plain_scalar))))) (block_sequence_item (flow_node (flow_sequence (flow_node (plain_scalar)) (flow_node (plain_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)) (flow_node (flow_sequence (flow_node (plain_scalar)))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (double_quote_scalar))) (flow_node (plain_scalar)) (flow_pair key: (flow_node (plain_scalar))) (flow_pair value: (flow_node (plain_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))) (flow_pair key: (flow_node (double_quote_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_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)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (flow_sequence (flow_pair value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (flow_sequence (flow_pair key: (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))) value: (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (flow_sequence (flow_pair value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (flow_sequence (flow_pair key: (flow_node (double_quote_scalar)) value: (flow_node (plain_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)) (flow_node (plain_scalar))))) (block_sequence_item (flow_node (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (block_sequence_item (flow_node (double_quote_scalar))) (block_sequence_item (flow_node (single_quote_scalar))) (block_sequence_item (flow_node (plain_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) (double_quote_scalar))) (block_sequence_item (flow_node (alias))) (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)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (block_scalar))) (comment) (comment) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_scalar))) (comment) (comment) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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))) (comment) (block_sequence_item (flow_node (plain_scalar))) (comment)))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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))) (comment) (block_mapping_pair key: (block_node (block_scalar)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (comment) (block_sequence_item (flow_node (plain_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)) value: (flow_node (plain_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)))))))))) ================================================================================ 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)) value: (flow_node (plain_scalar)))))) (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_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)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (block_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (tag) (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (block_node (tag) (block_sequence (block_sequence_item (flow_node (plain_scalar))))))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (tag) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Spec Example 9.2. Document Markers ================================================================================ %YAML 1.2 --- Document ... # Suffix -------------------------------------------------------------------------------- (stream (document (yaml_directive (yaml_version)) (flow_node (plain_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))) (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)) value: (flow_node (plain_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))) (document (comment)) (document (yaml_directive (yaml_version)) (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (document (comment)) (document (yaml_directive (yaml_version)) (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))) ================================================================================ Tab after document header ================================================================================ --- scalar -------------------------------------------------------------------------------- (stream (document (flow_node (plain_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)) value: (flow_node (plain_scalar)))))) (document (block_node (tag) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))))) (document (block_node (tag) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (block_node (tag) (block_sequence (block_sequence_item (flow_node (tag) (plain_scalar))) (block_sequence_item (block_node (tag) (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (tag) (plain_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)) value: (flow_node (tag) (flow_sequence (flow_node (plain_scalar)) (flow_node (tag) (plain_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)) value: (flow_node (plain_scalar)))))) (document (block_node (tag) (block_sequence (block_sequence_item (flow_node (tag) (plain_scalar)))))) (document (flow_node (tag) (plain_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))) (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (tag) (plain_scalar))) (block_sequence_item (flow_node (plain_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)) value: (flow_node (tag) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (tag) (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (tag) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (tag) (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (tag) (plain_scalar)) value: (flow_node (tag) (plain_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))) (block_mapping_pair key: (flow_node (plain_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)))) ================================================================================ Three dashes and content without space [1.3] ================================================================================ --- ---word1 word2 -------------------------------------------------------------------------------- (stream (document (flow_node (plain_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)) value: (flow_node (plain_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)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_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)) value: (block_node (block_mapping (block_mapping_pair key: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))))))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))))) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))))) value: (block_node (block_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (block_node (block_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))))) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_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) (tag) (plain_scalar))) (document (flow_node (tag) (anchor) (plain_scalar))) (document (flow_node (anchor) (tag) (plain_scalar))) (document (block_node (anchor) (tag) (block_mapping (block_mapping_pair key: (flow_node (anchor) (tag) (plain_scalar)) value: (flow_node (plain_scalar)))))) (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (document (block_node (tag) (block_mapping (block_mapping_pair key: (flow_node (anchor) (tag) (plain_scalar)) value: (flow_node (plain_scalar)))))) (document (block_node (tag) (block_mapping (block_mapping_pair key: (flow_node (tag) (anchor) (plain_scalar)) value: (flow_node (plain_scalar)))))) (document (flow_node (tag) (anchor) (plain_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)) value: (flow_node (single_quote_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (single_quote_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (single_quote_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (double_quote_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (single_quote_scalar))) (block_mapping_pair key: (flow_node (plain_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) (flow_sequence (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar))) (flow_node (flow_mapping (flow_pair key: (flow_node (anchor) (plain_scalar)) value: (flow_node (plain_scalar))))) (flow_node (anchor) (flow_mapping (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) value: (flow_node (double_quote_scalar))) (comment) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (comment) (block_mapping_pair key: (flow_node (plain_scalar)) (comment) value: (flow_node (plain_scalar))) (block_mapping_pair (comment) key: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))))) (comment) value: (block_node (block_sequence (block_sequence_item (comment) (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (comment) (block_sequence (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (double_quote_scalar))) (comment) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (comment) (block_mapping_pair key: (flow_node (plain_scalar)) (comment) value: (flow_node (plain_scalar))) (block_mapping_pair (comment) key: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))))) (comment) value: (block_node (block_sequence (block_sequence_item (comment) (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (comment) (block_sequence (block_sequence_item (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))))))))) (block_mapping_pair key: (flow_node (plain_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)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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)) (flow_node (plain_scalar)) (flow_node (plain_scalar))))) (block_sequence_item (flow_node (flow_mapping (flow_pair key: (flow_node (double_quote_scalar)) value: (flow_node (plain_scalar))) (flow_pair key: (flow_node (plain_scalar)) value: (flow_node (single_quote_scalar))) (flow_pair key: (flow_node (plain_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) (plain_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) (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (anchor) (block_mapping (block_mapping_pair key: (flow_node (alias)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (alias)) value: (flow_node (plain_scalar)))))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar))) (block_mapping_pair key: (flow_node (plain_scalar)) value: (block_node (block_mapping (block_mapping_pair key: (flow_node (anchor) (single_quote_scalar)) value: (flow_node (plain_scalar)))))))))) ================================================================================ Wrong indendation in Map [INVALID] ================================================================================ key: ok: 1 wrong: 2 -------------------------------------------------------------------------------- (ERROR (flow_node (plain_scalar)) (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))) ================================================================================ Wrong indendation in mapping [INVALID] ================================================================================ k1: v1 k2: v2 -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))) ================================================================================ Wrong indendation in Sequence [INVALID] ================================================================================ key: - ok - also ok - wrong -------------------------------------------------------------------------------- (ERROR (flow_node (plain_scalar)) (block_sequence_item (flow_node (plain_scalar))) (flow_node (plain_scalar))) ================================================================================ Wrong indented flow sequence [INVALID] ================================================================================ --- flow: [a, b, c] -------------------------------------------------------------------------------- (stream (document (block_node (block_mapping (block_mapping_pair key: (flow_node (plain_scalar))) (ERROR (flow_node (plain_scalar)) (plain_scalar) (plain_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))) (ERROR (flow_node (plain_scalar)) (flow_node (plain_scalar))))))) ================================================================================ Wrong indented sequence item [INVALID] ================================================================================ - key: value - item1 -------------------------------------------------------------------------------- (ERROR (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_scalar)))) ================================================================================ YAML directive without document end marker [INVALID] ================================================================================ --- key: value %YAML 1.2 --- -------------------------------------------------------------------------------- (stream (ERROR (block_mapping_pair key: (flow_node (plain_scalar)) value: (flow_node (plain_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))) (block_sequence_item (flow_node (plain_scalar))))) value: (block_node (block_sequence (block_sequence_item (flow_node (plain_scalar))) (block_sequence_item (flow_node (plain_scalar))))))))))