Advertisement
Guest User

Untitled

a guest
Aug 17th, 2011
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BNF 24.17 KB | None | 0 0
  1. [1]     c-printable ::=    #x9 | #xA | #xD | [#x20-#x7E]          /* 8 bit */
  2.                          | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] /* 16 bit */
  3.                          | [#x10000-#x10FFFF]                     /* 32 bit */
  4. [2]     nb-json ::=  #x9 | [#x20-#x10FFFF]
  5. [3]     c-byte-order-mark   ::=  #xFEFF
  6. [4]     c-sequence-entry    ::=  “-”
  7. [5]     c-mapping-key   ::=  “?”
  8. [6]     c-mapping-value ::=  “:
  9. [7]     c-collect-entry ::=  “,”
  10. [8]     c-sequence-start    ::=  “[
  11. [9]     c-sequence-end  ::=  “]
  12. [10]    c-mapping-start ::=  “{
  13. [11]    c-mapping-end   ::=  “}
  14. [12]    c-comment   ::=  “#”
  15. [13]    c-anchor    ::=  “&”
  16. [14]    c-alias ::=  “*
  17. [15]    c-tag   ::=  “!”
  18. [16]    c-literal   ::=  “|
  19. [17]    c-folded    ::=  “>
  20. [18]    c-single-quote  ::=  “'”
  21. [19]    c-double-quote  ::=  “"”
  22. [20]    c-directive ::=  “%”
  23. [21]    c-reserved  ::=  “@” | “`”
  24. [22]    c-indicator ::=    “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”
  25.                         | “#” | “&” | “*” | “!” | “|” | “>” | “'|"”
  26.                         | “%” | “@” | “`”
  27. [23]    c-flow-indicator    ::= “,” | “[” | “]” | “{” | “}”
  28. [24]    b-line-feed ::=  #xA    /* LF */
  29. [25]    b-carriage-return   ::=  #xD    /* CR */
  30. [26]    b-char  ::= b-line-feed | b-carriage-return
  31. [27]    nb-char ::= c-printable - b-char - c-byte-order-mark
  32. [28]    b-break ::=    ( b-carriage-return b-line-feed ) /* DOS, Windows */
  33.                     | b-carriage-return                 /* MacOS upto 9.x */
  34.                     | b-line-feed                       /* UNIX, MacOS X */
  35. [29]    b-as-line-feed  ::= b-break
  36. [30]    b-non-content   ::= b-break
  37. [31]    s-space ::=  #x20 /* SP */
  38. [32]    s-tab   ::=  #x9  /* TAB */
  39. [33]    s-white ::= s-space | s-tab
  40. [34]    ns-char ::= nb-char - s-white
  41. [35]    ns-dec-digit    ::=  [#x30-#x39] /* 0-9 */
  42. [36]    ns-hex-digit    ::=    ns-dec-digit
  43.                             | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */
  44. [37]    ns-ascii-letter ::=  [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */
  45. [38]    ns-word-char    ::= ns-dec-digit | ns-ascii-letter | “-”
  46. [39]    ns-uri-char ::=    “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”
  47.                         | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”
  48.                         | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”
  49. [40]    ns-tag-char ::= ns-uri-char - “!” - c-flow-indicator
  50. [41]    c-escape    ::=  “\”
  51. [42]    ns-esc-null ::=  “0”
  52. [43]    ns-esc-bell ::=  “a”
  53. [44]    ns-esc-backspace    ::=  “b”
  54. [45]    ns-esc-horizontal-tab   ::=  “t” | #x9
  55. [46]    ns-esc-line-feed    ::=  “n”
  56. [47]    ns-esc-vertical-tab ::=  “v”
  57. [48]    ns-esc-form-feed    ::=  “f”
  58. [49]    ns-esc-carriage-return  ::=  “r”
  59. [50]    ns-esc-escape   ::=  “e”
  60. [51]    ns-esc-space    ::=  #x20
  61. [52]    ns-esc-double-quote ::= “"
  62. [53]    ns-esc-slash    ::=  “/
  63. [54]    ns-esc-backslash    ::= “\”
  64. [55]    ns-esc-next-line    ::=  “N”
  65. [56]    ns-esc-non-breaking-space   ::=  “_”
  66. [57]    ns-esc-line-separator   ::=  “L”
  67. [58]    ns-esc-paragraph-separator  ::=  “P”
  68. [59]    ns-esc-8-bit    ::=  “x”
  69.                              ( ns-hex-digit × 2 )
  70. [60]    ns-esc-16-bit   ::=  “u”
  71.                              ( ns-hex-digit × 4 )
  72. [61]    ns-esc-32-bit   ::=  “U”
  73.                              ( ns-hex-digit × 8 )
  74. [62]    c-ns-esc-char   ::= “\”
  75.                              ( ns-esc-null | ns-esc-bell | ns-esc-backspace
  76.                              | ns-esc-horizontal-tab | ns-esc-line-feed
  77.                              | ns-esc-vertical-tab | ns-esc-form-feed
  78.                              | ns-esc-carriage-return | ns-esc-escape | ns-esc-space
  79.                              | ns-esc-double-quote | ns-esc-slash | ns-esc-backslash
  80.                              | ns-esc-next-line | ns-esc-non-breaking-space
  81.                              | ns-esc-line-separator | ns-esc-paragraph-separator
  82.                              | ns-esc-8-bit | ns-esc-16-bit | ns-esc-32-bit )
  83. [63]    s-indent(n) ::= s-space × n
  84. [64]    s-indent(<n)    ::= s-space × m /* Where m < n */
  85. [65]    s-indent(≤n)    ::= s-space × m /* Where m ≤ n */
  86. [66]    s-separate-in-line  ::= s-white+ | /* Start of line */
  87. [67]    s-line-prefix(n,c)  ::= c = block-out ⇒ s-block-line-prefix(n)
  88.                                 c = block-in  ⇒ s-block-line-prefix(n)
  89.                                 c = flow-out  ⇒ s-flow-line-prefix(n)
  90.                                 c = flow-in   ⇒ s-flow-line-prefix(n)
  91. [68]    s-block-line-prefix(n)  ::= s-indent(n)
  92. [69]    s-flow-line-prefix(n)   ::= s-indent(n) s-separate-in-line
  93. [70]    l-empty(n,c)    ::=  ( s-line-prefix(n,c) | s-indent(<n) )
  94.                              b-as-line-feed
  95. [71]    b-l-trimmed(n,c)    ::= b-non-content l-empty(n,c)+
  96. [72]    b-as-space  ::= b-break
  97. [73]    b-l-folded(n,c) ::= b-l-trimmed(n,c) | b-as-space
  98. [74]    s-flow-folded(n)    ::= s-separate-in-line? b-l-folded(n,flow-in)
  99.                                 s-flow-line-prefix(n)
  100. [75]    c-nb-comment-text   ::= “#” nb-char*
  101. [76]    b-comment   ::= b-non-content | /* End of file */
  102. [77]    s-b-comment ::=  ( s-separate-in-line c-nb-comment-text? )?
  103.                          b-comment
  104. [78]    l-comment   ::= s-separate-in-line c-nb-comment-text? b-comment
  105. [79]    s-l-comments    ::=  ( s-b-comment | /* Start of line */ )
  106.                              l-comment*
  107. [80]    s-separate(n,c) ::= c = block-out ⇒ s-separate-lines(n)
  108.                             c = block-in  ⇒ s-separate-lines(n)
  109.                             c = flow-out  ⇒ s-separate-lines(n)
  110.                             c = flow-in   ⇒ s-separate-lines(n)
  111.                             c = block-key ⇒ s-separate-in-line
  112.                             c = flow-key  ⇒ s-separate-in-line
  113. [81]    s-separate-lines(n) ::=    ( s-l-comments s-flow-line-prefix(n) )
  114.                                  | s-separate-in-line
  115. [82]    l-directive ::= “%”
  116.                         ( ns-yaml-directive
  117.                         | ns-tag-directive
  118.                         | ns-reserved-directive )
  119.                         s-l-comments
  120. [83]    ns-reserved-directive   ::= ns-directive-name
  121.                                     ( s-separate-in-line ns-directive-parameter )*
  122. [84]    ns-directive-name   ::= ns-char+
  123. [85]    ns-directive-parameter  ::= ns-char+
  124. [86]    ns-yaml-directive   ::=  “Y” “A” “M” “L”
  125.                                  s-separate-in-line ns-yaml-version
  126. [87]    ns-yaml-version ::= ns-dec-digit+ “.” ns-dec-digit+
  127. [88]    ns-tag-directive    ::=  “T” “A” “G”
  128.                                  s-separate-in-line c-tag-handle
  129.                                  s-separate-in-line ns-tag-prefix
  130. [89]    c-tag-handle    ::=    c-named-tag-handle
  131.                              | c-secondary-tag-handle
  132.                              | c-primary-tag-handle
  133. [90]    c-primary-tag-handle    ::= “!”
  134. [91]    c-secondary-tag-handle  ::= “!” “!”
  135. [92]    c-named-tag-handle  ::= “!” ns-word-char+ “!”
  136. [93]    ns-tag-prefix   ::= c-ns-local-tag-prefix | ns-global-tag-prefix
  137. [94]    c-ns-local-tag-prefix   ::= “!” ns-uri-char*
  138. [95]    ns-global-tag-prefix    ::= ns-tag-char ns-uri-char*
  139. [96]    c-ns-properties(n,c)    ::=    ( c-ns-tag-property
  140.                                          ( s-separate(n,c) c-ns-anchor-property )? )
  141.                                      | ( c-ns-anchor-property
  142.                                          ( s-separate(n,c) c-ns-tag-property )? )
  143. [97]    c-ns-tag-property   ::=    c-verbatim-tag
  144.                                  | c-ns-shorthand-tag
  145.                                  | c-non-specific-tag
  146. [98]    c-verbatim-tag  ::= “!” “<” ns-uri-char+ “>
  147. [99]    c-ns-shorthand-tag  ::= c-tag-handle ns-tag-char+
  148. [100]   c-non-specific-tag  ::= “!”
  149. [101]   c-ns-anchor-property    ::= “&” ns-anchor-name
  150. [102]   ns-anchor-char  ::= ns-char - c-flow-indicator
  151. [103]   ns-anchor-name  ::= ns-anchor-char+
  152. [104]   c-ns-alias-node ::=*” ns-anchor-name
  153. [105]   e-scalar    ::=  /* Empty */
  154. [106]   e-node  ::= e-scalar
  155. [107]   nb-double-char  ::= c-ns-esc-char | ( nb-json - “\” - “"” )
  156. [108]   ns-double-char  ::= nb-double-char - s-white
  157. [109]   c-double-quoted(n,c)    ::= “"” nb-double-text(n,c)"”
  158. [110]   nb-double-text(n,c) ::= c = flow-out  ⇒ nb-double-multi-line(n)
  159.                                c = flow-in   ⇒ nb-double-multi-line(n)
  160.                                c = block-key ⇒ nb-double-one-line
  161.                                c = flow-key  ⇒ nb-double-one-line
  162. [111]   nb-double-one-line  ::= nb-double-char*
  163. [112]   s-double-escaped(n) ::= s-white* “\” b-non-content
  164.                                l-empty(n,flow-in)* s-flow-line-prefix(n)
  165. [113]   s-double-break(n)   ::= s-double-escaped(n) | s-flow-folded(n)
  166. [114]   nb-ns-double-in-line    ::=  ( s-white* ns-double-char )*
  167. [115]   s-double-next-line(n)   ::= s-double-break(n)
  168.                                    ( ns-double-char nb-ns-double-in-line
  169.                                      ( s-double-next-line(n) | s-white* ) )?
  170. [116]   nb-double-multi-line(n) ::= nb-ns-double-in-line
  171.                                    ( s-double-next-line(n) | s-white* )
  172. [117]   c-quoted-quote  ::= “'” “'”
  173. [118]   nb-single-char  ::= c-quoted-quote | ( nb-json - “'” )
  174. [119]   ns-single-char  ::= nb-single-char - s-white
  175. [120]   c-single-quoted(n,c)    ::= “'” nb-single-text(n,c) “'”
  176. [121]   nb-single-text(n,c) ::= c = flow-out  ⇒ nb-single-multi-line(n)
  177.                                c = flow-in   ⇒ nb-single-multi-line(n)
  178.                                c = block-key ⇒ nb-single-one-line
  179.                                c = flow-key  ⇒ nb-single-one-line
  180. [122]   nb-single-one-line  ::= nb-single-char*
  181. [123]   nb-ns-single-in-line    ::=  ( s-white* ns-single-char )*
  182. [124]   s-single-next-line(n)   ::= s-flow-folded(n)
  183.                                    ( ns-single-char nb-ns-single-in-line
  184.                                      ( s-single-next-line(n) | s-white* ) )?
  185. [125]   nb-single-multi-line(n) ::= nb-ns-single-in-line
  186.                                    ( s-single-next-line(n) | s-white* )
  187. [126]   ns-plain-first(c)   ::=    ( ns-char - c-indicator )
  188.                                 | ( ( “?” | “:” | “-” )
  189.                                     /* Followed by an ns-plain-safe(c)) */ )
  190. [127]   ns-plain-safe(c)    ::= c = flow-out  ⇒ ns-plain-safe-out
  191.                                c = flow-in   ⇒ ns-plain-safe-in
  192.                                c = block-key ⇒ ns-plain-safe-out
  193.                                c = flow-key  ⇒ ns-plain-safe-in
  194. [128]   ns-plain-safe-out   ::= ns-char
  195. [129]   ns-plain-safe-in    ::= ns-char - c-flow-indicator
  196. [130]   ns-plain-char(c)    ::=    ( ns-plain-safe(c) - “:” - “#” )
  197.                                 | ( /* An ns-char preceding */ “#” )
  198.                                 | ( “:” /* Followed by an ns-plain-safe(c) */ )
  199. [131]   ns-plain(n,c)   ::= c = flow-out  ⇒ ns-plain-multi-line(n,c)
  200.                            c = flow-in   ⇒ ns-plain-multi-line(n,c)
  201.                            c = block-key ⇒ ns-plain-one-line(c)
  202.                            c = flow-key  ⇒ ns-plain-one-line(c)
  203. [132]   nb-ns-plain-in-line(c)  ::=  ( s-white* ns-plain-char(c) )*
  204. [133]   ns-plain-one-line(c)    ::= ns-plain-first(c) nb-ns-plain-in-line(c)
  205. [134]   s-ns-plain-next-line(n,c)   ::= s-flow-folded(n)
  206.                                        ns-plain-char(c) nb-ns-plain-in-line(c)
  207. [135]   ns-plain-multi-line(n,c)    ::= ns-plain-one-line(c)
  208.                                        s-ns-plain-next-line(n,c)*
  209. [136]   in-flow(c)  ::= c = flow-out  ⇒ flow-in
  210.                        c = flow-in   ⇒ flow-in
  211.                        c = block-key ⇒ flow-key
  212.                        c = flow-key  ⇒ flow-key
  213. [137]   c-flow-sequence(n,c)    ::= “[” s-separate(n,c)?
  214.                                    ns-s-flow-seq-entries(n,in-flow(c))? “]”
  215. [138]   ns-s-flow-seq-entries(n,c)  ::= ns-flow-seq-entry(n,c) s-separate(n,c)?
  216.                                        ( “,” s-separate(n,c)?
  217.                                          ns-s-flow-seq-entries(n,c)? )?
  218. [139]   ns-flow-seq-entry(n,c)  ::= ns-flow-pair(n,c) | ns-flow-node(n,c)
  219. [140]   c-flow-mapping(n,c) ::= “{” s-separate(n,c)?
  220.                                ns-s-flow-map-entries(n,in-flow(c))? “}”
  221. [141]   ns-s-flow-map-entries(n,c)  ::= ns-flow-map-entry(n,c) s-separate(n,c)?
  222.                                    ( “,” s-separate(n,c)?
  223.                                      ns-s-flow-map-entries(n,c)? )?
  224. [142]   ns-flow-map-entry(n,c)  ::=    ( “?” s-separate(n,c)
  225.                                         ns-flow-map-explicit-entry(n,c) )
  226.                                     | ns-flow-map-implicit-entry(n,c)
  227. [143]   ns-flow-map-explicit-entry(n,c) ::=    ns-flow-map-implicit-entry(n,c)
  228.                                     | ( e-node /* Key */
  229.                                         e-node /* Value */ )
  230. [144]   ns-flow-map-implicit-entry(n,c) ::=    ns-flow-map-yaml-key-entry(n,c)
  231.                                             | c-ns-flow-map-empty-key-entry(n,c)
  232.                                             | c-ns-flow-map-json-key-entry(n,c)
  233. [145]   ns-flow-map-yaml-key-entry(n,c) ::= ns-flow-yaml-node(n,c)
  234.                                            ( ( s-separate(n,c)?
  235.                                                c-ns-flow-map-separate-value(n,c) )
  236.                                            | e-node )
  237. [146]   c-ns-flow-map-empty-key-entry(n,c)  ::= e-node /* Key */
  238.                                                c-ns-flow-map-separate-value(n,c)
  239. [147]   c-ns-flow-map-separate-value(n,c)   ::= “:” /* Not followed by an
  240.                                                       ns-plain-safe(c) */
  241.                                                ( ( s-separate(n,c) ns-flow-node(n,c) )
  242.                                                | e-node /* Value */ )
  243. [148]   c-ns-flow-map-json-key-entry(n,c)   ::= c-flow-json-node(n,c)
  244.                                                ( ( s-separate(n,c)?
  245.                                                    c-ns-flow-map-adjacent-value(n,c) )
  246.                                                | e-node )
  247. [149]   c-ns-flow-map-adjacent-value(n,c)   ::= “:” ( ( s-separate(n,c)?
  248.                                                        ns-flow-node(n,c) )
  249.                                                    | e-node ) /* Value */
  250. [150]   ns-flow-pair(n,c)   ::=    ( “?” s-separate(n,c)
  251.                                     ns-flow-map-explicit-entry(n,c) )
  252.                                 | ns-flow-pair-entry(n,c)
  253. [151]   ns-flow-pair-entry(n,c) ::=    ns-flow-pair-yaml-key-entry(n,c)
  254.                                     | c-ns-flow-map-empty-key-entry(n,c)
  255.                                     | c-ns-flow-pair-json-key-entry(n,c)
  256. [152]   ns-flow-pair-yaml-key-entry(n,c)    ::= ns-s-implicit-yaml-key(flow-key)
  257.                                                c-ns-flow-map-separate-value(n,c)
  258. [153]   c-ns-flow-pair-json-key-entry(n,c)  ::= c-s-implicit-json-key(flow-key)
  259.                                                c-ns-flow-map-adjacent-value(n,c)
  260. [154]   ns-s-implicit-yaml-key(c)   ::= ns-flow-yaml-node(n/a,c) s-separate-in-line?
  261.                                        /* At most 1024 characters altogether */
  262. [155]   c-s-implicit-json-key(c)    ::= c-flow-json-node(n/a,c) s-separate-in-line?
  263.                                        /* At most 1024 characters altogether */
  264. [156]   ns-flow-yaml-content(n,c)   ::= ns-plain(n,c)
  265. [157]   c-flow-json-content(n,c)    ::=    c-flow-sequence(n,c) | c-flow-mapping(n,c)
  266.                                         | c-single-quoted(n,c) | c-double-quoted(n,c)
  267. [158]   ns-flow-content(n,c)    ::= ns-flow-yaml-content(n,c) | c-flow-json-content(n,c)
  268. [159]   ns-flow-yaml-node(n,c)  ::=    c-ns-alias-node
  269.                                     | ns-flow-yaml-content(n,c)
  270.                                     | ( c-ns-properties(n,c)
  271.                                         ( ( s-separate(n,c)
  272.                                             ns-flow-yaml-content(n,c) )
  273.                                         | e-scalar ) )
  274. [160]   c-flow-json-node(n,c)   ::=  ( c-ns-properties(n,c) s-separate(n,c) )?
  275.                                     c-flow-json-content(n,c)
  276. [161]   ns-flow-node(n,c)   ::=    c-ns-alias-node
  277.                                 | ns-flow-content(n,c)
  278.                                 | ( c-ns-properties(n,c)
  279.                                     ( ( s-separate(n,c)
  280.                                         ns-flow-content(n,c) )
  281.                                     | e-scalar ) )
  282. [162]   c-b-block-header(m,t)   ::=  ( ( c-indentation-indicator(m)
  283.                                         c-chomping-indicator(t) )
  284.                                     | ( c-chomping-indicator(t)
  285.                                         c-indentation-indicator(m) ) )
  286.                                     s-b-comment
  287. [163]   c-indentation-indicator(m)  ::= ns-dec-digit ⇒ m = ns-dec-digit - #x30
  288.                                        /* Empty */  ⇒ m = auto-detect()
  289. [164]   c-chomping-indicator(t) ::=  “-”         ⇒ t = strip
  290.                                     “+”         ⇒ t = keep
  291.                                     /* Empty */ ⇒ t = clip
  292. [165]   b-chomped-last(t)   ::= t = strip ⇒ b-non-content | /* End of file */
  293.                                t = clip  ⇒ b-as-line-feed | /* End of file */
  294.                                t = keep  ⇒ b-as-line-feed | /* End of file */
  295. [166]   l-chomped-empty(n,t)    ::= t = strip ⇒ l-strip-empty(n)
  296.                                    t = clip  ⇒ l-strip-empty(n)
  297.                                    t = keep  ⇒ l-keep-empty(n)
  298. [167]   l-strip-empty(n)    ::=  ( s-indent(≤n) b-non-content )*
  299.                                 l-trail-comments(n)?
  300. [168]   l-keep-empty(n) ::= l-empty(n,block-in)*
  301.                            l-trail-comments(n)?
  302. [169]   l-trail-comments(n) ::= s-indent(<n) c-nb-comment-text b-comment
  303.                                l-comment*
  304. [170]   c-l+literal(n)  ::= “|” c-b-block-header(m,t)
  305.                            l-literal-content(n+m,t)
  306. [171]   l-nb-literal-text(n)    ::= l-empty(n,block-in)*
  307.                                    s-indent(n) nb-char+
  308. [172]   b-nb-literal-next(n)    ::= b-as-line-feed
  309.                                    l-nb-literal-text(n)
  310. [173]   l-literal-content(n,t)  ::=  ( l-nb-literal-text(n) b-nb-literal-next(n)*
  311.                                       b-chomped-last(t) )?
  312.                                     l-chomped-empty(n,t)
  313. [174]   c-l+folded(n)   ::= “>” c-b-block-header(m,t)
  314.                            l-folded-content(n+m,t)
  315. [175]   s-nb-folded-text(n) ::= s-indent(n) ns-char nb-char*
  316. [176]   l-nb-folded-lines(n)    ::= s-nb-folded-text(n)
  317.                                    ( b-l-folded(n,block-in) s-nb-folded-text(n) )*
  318. [177]   s-nb-spaced-text(n) ::= s-indent(n) s-white nb-char*
  319. [178]   b-l-spaced(n)   ::= b-as-line-feed
  320.                            l-empty(n,block-in)*
  321. [179]   l-nb-spaced-lines(n)    ::= s-nb-spaced-text(n)
  322.                                    ( b-l-spaced(n) s-nb-spaced-text(n) )*
  323. [180]   l-nb-same-lines(n)  ::= l-empty(n,block-in)*
  324.                                ( l-nb-folded-lines(n) | l-nb-spaced-lines(n) )
  325. [181]   l-nb-diff-lines(n)  ::= l-nb-same-lines(n)
  326.                                ( b-as-line-feed l-nb-same-lines(n) )*
  327. [182]   l-folded-content(n,t)   ::=  ( l-nb-diff-lines(n) b-chomped-last(t) )?
  328.                                     l-chomped-empty(n,t)
  329. [183]   l+block-sequence(n) ::=  ( s-indent(n+m) c-l-block-seq-entry(n+m) )+
  330.                                 /* For some fixed auto-detected m > 0 */
  331. [184]   c-l-block-seq-entry(n)  ::= “-” /* Not followed by an ns-char */
  332.                                    s-l+block-indented(n,block-in)
  333. [185]   s-l+block-indented(n,c) ::=    ( s-indent(m)
  334.                                         ( ns-l-compact-sequence(n+1+m)
  335.                                         | ns-l-compact-mapping(n+1+m) ) )
  336.                                     | s-l+block-node(n,c)
  337.                                     | ( e-node s-l-comments )
  338. [186]   ns-l-compact-sequence(n)    ::= c-l-block-seq-entry(n)
  339.                                        ( s-indent(n) c-l-block-seq-entry(n) )*
  340. [187]   l+block-mapping(n)  ::=  ( s-indent(n+m) ns-l-block-map-entry(n+m) )+
  341.                                 /* For some fixed auto-detected m > 0 */
  342. [188]   ns-l-block-map-entry(n) ::=    c-l-block-map-explicit-entry(n)
  343.                                     | ns-l-block-map-implicit-entry(n)
  344. [189]   c-l-block-map-explicit-entry(n) ::= c-l-block-map-explicit-key(n)
  345.                                            ( l-block-map-explicit-value(n)
  346.                                            | e-node )
  347. [190]   c-l-block-map-explicit-key(n)   ::= “?” s-l+block-indented(n,block-out)
  348. [191]   l-block-map-explicit-value(n)   ::= s-indent(n)
  349.                                            “:” s-l+block-indented(n,block-out)
  350. [192]   ns-l-block-map-implicit-entry(n)    ::=  ( ns-s-block-map-implicit-key
  351.                                                 | e-node )
  352.                                                 c-l-block-map-implicit-value(n)
  353. [193]   ns-s-block-map-implicit-key ::=    c-s-implicit-json-key(block-key)
  354.                                         | ns-s-implicit-yaml-key(block-key)
  355. [194]   c-l-block-map-implicit-value(n) ::= “:” ( s-l+block-node(n,block-out)
  356.                                            | ( e-node s-l-comments ) )
  357. [195]   ns-l-compact-mapping(n) ::= ns-l-block-map-entry(n)
  358.                                    ( s-indent(n) ns-l-block-map-entry(n) )*
  359. [196]   s-l+block-node(n,c) ::= s-l+block-in-block(n,c) | s-l+flow-in-block(n)
  360. [197]   s-l+flow-in-block(n)    ::= s-separate(n+1,flow-out)
  361.                                    ns-flow-node(n+1,flow-out) s-l-comments
  362. [198]   s-l+block-in-block(n,c) ::= s-l+block-scalar(n,c) | s-l+block-collection(n,c)
  363. [199]   s-l+block-scalar(n,c)   ::= s-separate(n+1,c)
  364.                                    ( c-ns-properties(n+1,c) s-separate(n+1,c) )?
  365.                                    ( c-l+literal(n) | c-l+folded(n) )
  366. [200]   s-l+block-collection(n,c)   ::=  ( s-separate(n+1,c) c-ns-properties(n+1,c) )?
  367.                                         s-l-comments
  368.                                         ( l+block-sequence(seq-spaces(n,c))
  369.                                         | l+block-mapping(n) )
  370. [201]   seq-spaces(n,c) ::= c = block-out ⇒ n-1
  371.                            c = block-in  ⇒ n
  372. [202]   l-document-prefix   ::= c-byte-order-mark? l-comment*
  373. [203]   c-directives-end    ::=  “-” “-” “-”
  374. [204]   c-document-end  ::=  “.” “.” “.”
  375. [205]   l-document-suffix   ::= c-document-end s-l-comments
  376. [206]   c-forbidden ::=  /* Start of line */
  377.                         ( c-directives-end | c-document-end )
  378.                         ( b-char | s-white | /* End of file */ )
  379. [207]   l-bare-document ::= s-l+block-node(-1,block-in)
  380.                            /* Excluding c-forbidden content */
  381. [208]   l-explicit-document ::= c-directives-end
  382.                                ( l-bare-document
  383.                                | ( e-node s-l-comments ) )
  384. [209]   l-directive-document    ::= l-directive+
  385.                                    l-explicit-document
  386. [210]   l-any-document  ::=    l-directive-document
  387.                             | l-explicit-document
  388.                             | l-bare-document
  389. [211]   l-yaml-stream   ::= l-document-prefix* l-any-document?
  390.                            ( l-document-suffix+ l-document-prefix* l-any-document?
  391.                            | l-document-prefix* l-explicit-document? )*
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement