| title |
|---|
YAML Spec |
c-printable::= ...nb-json::=#x9|[#x20-#x10FFFF]c-byte-order-mark::=#xFEFFc-sequence-entry::=-c-mapping-key::=?c-mapping-value::=:c-collect-entry::=,c-sequence-start::=[c-sequence-end::=[c-mapping-start::={c-mapping-end::=}c-comment::=#c-anchor::=&c-alias::=*c-tag::=!c-literal::=|c-folded::=|c-single-quoted::='c-double-quoted::='c-directive::=%c-reserved::=@| BACKTICKc-indicator::=[-?:,\[\]{}#&*!|>'"%@]| BACKTICKc-flow-indicator::=[,\[\]{}]b-line-feed::=#xA/* LF */b-carriage-return::=#xD/* CR */b-char::=b-line-feed|b-carriage-returnnb-char::=c-printable-b-char- [c-byte-order-mark]b-break::= (b-carriage-returnb-line-feed) |b-carriage-return|b-line-feedb-as-line-feed::=b-breakb-non-content::=b-breakb-non-content::=s-space::=#x20/* SP */s-tab::=#x9/* TAB */s-white::=s-space|s-tab
63. s-indent(n) ::= s-space x n
66. s-separate-in-line ::= s-white+ | ^
67. s-line-prefix ::=
* c = block-out => s-block-line-prefix(n)
* c = block-in => s-block-line-prefix(n)
* c = flow-out => s-flow-line-prefix(n)
* c = flow-in => s-flow-line-prefix(n)
68. s-block-line-prefix(n) ::= s-indent(n)
69. s-flow-line-prefix(n) ::= s-indent(n) s-separate-in-line?
80. s-separate(n, c) ::=
* c = block-out => s-separate-lines(n)
* c = block-in => s-separate-lines(n)
* c = flow-out => s-separate-lines(n)
* c = flow-in => s-separate-lines(n)
* c = block-key => s-separate-in-line
* c = flow-key => s-separate-in-line
81. s-separate-lines(n) ::= ( s-l-comments s-flow-line-prefix(n) ) | s-separate-in-line
89. c-tag-handle ::= c-named-tag-handle | c-secondary-tag-handle | c-primary-tag-handle
90. c-primary-tag-handle ::= !
91. c-secondary-tag-handle ::= !!
92. c-named-tag-handle ::= ! ns-word-char+ !
96. c-ns-properties(n, c) ::= ( c-ns-tag-property ( s-separate(n, c) c-ns-anchor-property )? )
| ( c-ns-anchor-property ( s-separate(n, c) c-ns-tag-property )? )
97. c-ns-tag-property ::= c-verbatim-tag | c-ns-shorthand-tag | c-non-specific-tag
98. c-verbatim-tag ::= !< ns-uri-char+ >
99. c-ns-shorthand-tag ::= c-tag-handle ns-tag-char+
100. c-non-specific-tag ::= !
101. c-ns-anchor-property ::= & ns-anchor-name
102. ns-anchor-char ::= ns-char - c-flow-indicator
103. ns-anchor-name ::= ns-anchor-char+
104. c-ns-alias-node ::= * ns-anchor-name
137. c-flow-sequence(n, c) ::= [ s-separate(n, c)? ns-s-flow-seq-entries(n, in-flow(c))? ]
140. c-flow-mapping(n, c) ::= { s-separate(n, c)? [ns-s-flow-map-entries](#ns-s-flow-map-entries(n, in-flow(c))? }
154. ns-s-implicit-yaml-key(c) ::= ns-flow-yaml-node(n/a, c) s-separate-in-line? /* At most 1024 chars */
155. c-s-implicit-json-key(c) ::= c-flow-json-node(n/a, c) s-separate-in-line? /* At most 1024 chars */
156. ns-flow-yaml-content(n, c) ::= ns-plain(n, c)
157. c-flow-json-content(n, c) ::= c-flow-sequence(n, c) | c-flow-mapping(n, c) | c-single-quoted(n, c) | c-double-quoted(n, c)
158. ns-flow-content(n, c) ::= ns-flow-yaml-content(n, c) | c-flow-json-content(n, c)
159. ns-flow-yaml-node(n, c) ::= c-ns-alias-node | ns-flow-yaml-content(n, c) | ( c-ns-properties(n, c) ( ( s-separate(n, c) ns-flow-yaml-content(n, c) ) | e-scalar ) )
160. c-flow-json-node(n, c) ::= ( c-ns-properties(n, c) s-separate(n, c) )? c-flow-json-content(n, c)
161. ns-flow-node(n, c) ::= c-ns-alias-node | ns-flow-content(n, c) | c-ns-properties(n, c) ( ( s-separate(n, c) ns-flow-content(n, c) ) | e-scalar ) )
165. b-chomped-last(t) ::= * t = strip => b-non-content | EOF t = clip => b-as-line-feed | EOF
* t = keep => b-as-line-feed | EOF
166. l-chomped-empty(n, t) ::=
* t = strip => l-strip-empty(n)
* t = clip => l-strip-empty(n)
* t = keep => l-keep-empty(n)
170. c-l+literal(n) ::= | c-b-block-header(m, t) l-literal-content(n+m, t) /* WHAT IS m?? /
171. l-nb-literal-text(n) ::= l-empty(n, block-in) s-indent(n) nb-char+
172. b-nb-literal-next(n) ::= b-as-line-feed l-nb-literal-text(n)
173. l-literal-content(n, t) ::= ( l-nb-literal-text(n) b-nb-literal-next(n)* b-chomped-last(t) )? l-chomped-empty(n, t)
174. c-l+folded(n) ::= > c-b-block-header(m, t) l-literal-content(n+m, t) /* WHAT IS m?? */
183. l+block-sequence(n, c) ::= ( s-indent(n+m) c-l-block-seq-entry(n+m) )+ /* For some fixed auto-detected m > 0 */
184. c-l-block-seq-entry(n) ::= - /* Not followed by an ns-char */ s-l+block-indented(n, block-in)
187. l+block-mapping(n) ::= ( s-indent(n+m) ns-l-block-map-entry(n+m) )+
188. ns-l-block-map-entry(n) ::= c-l-block-map-explicit-entry(n) | ns-l-block-map-implicit-entry(n)
189. c-l-block-map-explicit-entry(n) ::= c-l-block-map-explicit-key(n) ( l-block-map-explicit-value(n) | e-node)
190. c-l-block-map-explicit-key(n) ::= ? s-l+block-indented(n, block-out)
191. l-block-map-explicit-value(n) ::= s-indent(n) : s-l+block-indented(n, block-out)
192. ns-l-block-map-implicit-entry(n) ::= ( ns-s-block-map-implicit-key | e-node) c-l-block-map-implicit-value
193. ns-s-block-map-implicit-key(n) ::= ( c-s-implicit-json-key(block-key) | ns-s-implicit-yaml-key(block-key)
194. c-l-block-map-implicit-value(n) ::= : ( s-l+block-node(n, block-out) | ( e-node s-l-comments ) )
196. s-l+block-node(n, c) ::= s-l+block-in-block(n, c) | s-l+flow-in-block(n)
- [197]
s-l+flow-in-block(n) ::=s-separate(n+1, flow-out)ns-flow-node(n+1, flow-out)s-l-comments s-l+block-in-block(n, c) ::=s-l+block-scalar(n, c) |s-l+block-collection(n, c)s-l+block-scalar(n, c) ::=s-separate(n+1, c) (c-ns-properties(n+1, c)s-separate(n+1, c) )? (c-l+literal(n) |c-l+folded(n) )s-l+block-collection(n, c) ::= (s-separate(n+1, c)c-ns-properties(n+1, c) )?s-l-comments(l+block-sequence(seq-spaces(n, c)) |l+block-mapping(n) )- [201]
seq-spaces(n, c) ::= - [202]
l-document-prefix::=c-byte-order-mark?l-comment* - [203]
c-directives-end::=--- - [204]
c-document-end::=... - [205]
l-document-suffix::=c-document-ends-l-comments - [206]
c-forbidden::=^(c-directives-end|c-document-end) (b-char|s-white| EOF )
207. l-bare-document ::= s-l+block-node(-1, block-in)
Firsts:
b-as-line-feed[29]:#xD|#xAb-break[28]:#xD|#xAb-carriage-return[25]:#xD/* CR */b-char[26]:#xD|#xAb-line-feed[24]:#xA/* LF */b-nb-literal-next[172]: WHITESPACEb-non-content[28]:#xD|#xAc-alias[14]:*c-anchor[13]:&c-byte-order-mark[3]:#xFEFFc-collect-entry[7]:,c-comment[12]:#c-directive[20]:%c-double-quoted[19]:"c-flow-indicator[23]:[,\[\]{}]c-flow-json-content[157]:[\[{'"]c-flow-json-node[160]:!|&|[|{|'|"c-indicator[22]:[-?:,\[\]{}#&*!|>'"%@]| BACKTICKc-l-block-map-explicit-entry[189]:?c-l-block-map-explicit-key[190]:?c-l-block-map-implicit-value[194]::c-l-block-seq-entry[184]:-(not followed by ns-char)c-l+literal[170]:|c-l+folded[174]:>c-literal[16]:|c-mapping-end[11]:}c-mapping-key[5]:?c-mapping-start[10]:}c-mapping-value[6]::c-named-tag-handle[92]:!c-non-specific-tag[100]:!c-ns-alias-node[104]:*c-ns-anchor-property[101]:&c-ns-properties[96]:[!&]c-ns-shorthand-tag[99]:!c-ns-tag-property[97]:!c-primary-tag-handle[90]:!c-printable[1]: ...c-reserved[21]:@| BACKTICKc-s-implicit-json-key[155]:[!&\[{'"]c-secondary-tag-handle[91]:!c-sequence-end[9]:]c-sequence-entry[4]:-c-sequence-start[8]:[c-single-quoted[18]:'c-tag[15]:!c-tag-handle[89]:!c-verbatim-tag[98]:!<l-bare-document[207]:[?:-!&|>\[{'"*]orns-plainl-block-map-explicit-value[191]: WHITESPACE |:l+block-mapping[187]:[?:!&\[{'"*]orns-plainl+block-sequence[183]: WHITESPACE |-l-nb-literal-text[171]: See [171]l-literal-content[173]: See [173]nb-char[27]: ...ns-anchor-char[102]:ns-char-c-flow-indicatorns-anchor-name[103]: See [102]ns-flow-content[158]:ns-plainor[\[{'"]ns-flow-node[161]:[!&*\[{'"]orns-plainns-flow-yaml-content[156]:ns-plainns-flow-yaml-node[159]:ns-plainor[!&*]ns-l-block-map-entry[188]:[?:!&\[{'"*]orns-plainns-l-block-map-implicit-entry[192]:[:!&\[{'"*]orns-plainns-s-block-map-implicit-key[193]:[!&\[{'"*]orns-plainns-s-implicit-yaml-key[154]:[!&*]orns-plains-block-line-prefix[68]: WHITESPACEs-flow-line-prefix[68]: WHITESPACEs-indent[63]:#x20/* SP */s-l+block-collection[200]: WHITESPACE or[?:-!&\[{'"*]orns-plains-l+block-in-block[198]:[?:-!&|>\[{'"*]orns-plains-l+block-node[196]:[?:-!&|>\[{'"*]orns-plains-l+block-scalar[199]: WHITESPACE or[!&|>]s-l+flow-in-block[197]: WHITESPACE or[!&*\[{'"]orns-plains-line-prefix[67]: WHITESPACEs-separate[80]: WHITESPACEs-separate-lines[81]: WHITESPACEs-separate-in-line[66]: WHITESPACEs-space[31]:#x20/* SP */s-tab[32]:#x9/* TAB */s-white[33]:#x20|#x9