title |
---|
YAML Spec |
c-printable
::= ...nb-json
::=#x9
|[#x20-#x10FFFF]
c-byte-order-mark
::=#xFEFF
c-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-return
nb-char
::=c-printable
-b-char
- [c-byte-order-mark
]b-break
::= (b-carriage-return
b-line-feed
) |b-carriage-return
|b-line-feed
b-as-line-feed
::=b-break
b-non-content
::=b-break
b-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-end
s-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
|#xA
b-break
[28]:#xD
|#xA
b-carriage-return
[25]:#xD
/* CR */b-char
[26]:#xD
|#xA
b-line-feed
[24]:#xA
/* LF */b-nb-literal-next
[172]: WHITESPACEb-non-content
[28]:#xD
|#xA
c-alias
[14]:*
c-anchor
[13]:&
c-byte-order-mark
[3]:#xFEFF
c-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-plain
l-block-map-explicit-value
[191]: WHITESPACE |:
l+block-mapping
[187]:[?:!&\[{'"*]
orns-plain
l+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-indicator
ns-anchor-name
[103]: See [102]ns-flow-content
[158]:ns-plain
or[\[{'"]
ns-flow-node
[161]:[!&*\[{'"]
orns-plain
ns-flow-yaml-content
[156]:ns-plain
ns-flow-yaml-node
[159]:ns-plain
or[!&*]
ns-l-block-map-entry
[188]:[?:!&\[{'"*]
orns-plain
ns-l-block-map-implicit-entry
[192]:[:!&\[{'"*]
orns-plain
ns-s-block-map-implicit-key
[193]:[!&\[{'"*]
orns-plain
ns-s-implicit-yaml-key
[154]:[!&*]
orns-plain
s-block-line-prefix
[68]: WHITESPACEs-flow-line-prefix
[68]: WHITESPACEs-indent
[63]:#x20
/* SP */s-l+block-collection
[200]: WHITESPACE or[?:-!&\[{'"*]
orns-plain
s-l+block-in-block
[198]:[?:-!&|>\[{'"*]
orns-plain
s-l+block-node
[196]:[?:-!&|>\[{'"*]
orns-plain
s-l+block-scalar
[199]: WHITESPACE or[!&|>]
s-l+flow-in-block
[197]: WHITESPACE or[!&*\[{'"]
orns-plain
s-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