#full { background:#fff; } #full ul { list-style: none; } .left { width:46%; margin:1%; float:left; background:#fff; } .right { width:46%; margin:1%; float:left; background:#fff; } What follows is an attempt to break the Yaml language down into meaningful chunks….

Each block below is a complete feature set.

A person implementing a Yaml parser would likely implement a single block at a time.

Lower blocks may depend on higher blocks. Lower blocks also tend to be of greater complexity than higher blocks. Blocks on the left and right are completely independent of each other.

Those at the same vertical level are of roughly the same complexity. With the exception of double quoted strings, each feature exists in only one block. Each colored set of blocks represents a unique category of the Yaml language. Parsers might differentiate themselves by how many categories they support.

Simplified Yaml Link to heading

  • Yaml documents

  • Lines

  • Indentation

  • Directives

  • Content

  • Comments

  • Sequence blocks

  • Map blocks

  • Comments

Simple Json Link to heading

  • Json tokens

  • Json values

  • Double-quoted strings

  • Json collections

  • Sequence flows

  • Map flows

Basic Strings Link to heading

  • Double-quoted strings
  • Single-quoted strings
  • Multi-line plain scalars
  • Multi-line quoted scalars

Scalar Blocks Link to heading

  • Literal blocks
  • Folded blocks
  • Blocks modifiers

Simple Types (Complete Json) Link to heading

  • Simple types

  • Strings, numbers, booleans, nulls

Complete Types Link to heading

  • Explict types
  • Additional scalar types
  • Additional collection types
  • Taguris

Anchors Link to heading

  • Anchors
  • Alias

Full Collection Syntax Link to heading

  • Scalar keys
  • Complex mappings

Formal Yaml Link to heading

  • Documents
  • Directives
  • Unicode