YAML::PP::Grammar(3)

NAME
YAML::PP::Grammar - YAML grammar

GRAMMAR
This is the Grammar in YAML

    # START OF YAML INLINE

    # DO NOT CHANGE THIS
    # This grammar is automatically generated from etc/grammar.yaml

    ---
    NODETYPE_NODE:
      DASH:
        match: cb_seqstart
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }

      DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }

    NODETYPE_SCALAR_OR_MAP:

      # Flow nodes can follow tabs
      WS: { new: FULLMAPVALUE_INLINE }

      ALIAS:
        match: cb_alias
        EOL: { match: cb_send_alias_from_stack }
        WS:
          COLON:
            match: cb_insert_map_alias
            EOL: { new: FULLNODE }
            WS: { new: FULLMAPVALUE_INLINE }

      QUESTION:
        match: cb_questionstart
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }

      QUOTED:
        match: cb_take_quoted
        EOL: { match: cb_send_scalar }
        WS:
          COLON:
            match: cb_insert_map
            EOL: { new: FULLNODE }
            WS: { new: FULLMAPVALUE_INLINE }
        COLON:
          match: cb_insert_map
          EOL: { new: FULLNODE }
          WS: { new: FULLMAPVALUE_INLINE }

      QUOTED_MULTILINE:
        match: cb_quoted_multiline
        EOL: {  }

      PLAIN:
        match: cb_start_plain
        EOL:
          match: cb_send_scalar
        WS:
          COLON:
            match: cb_insert_map
            EOL: { new: FULLNODE }
            WS: { new: FULLMAPVALUE_INLINE }
        COLON:
          match: cb_insert_map
          EOL: { new: FULLNODE }
          WS: { new: FULLMAPVALUE_INLINE }

      PLAIN_MULTI:
        match: cb_send_plain_multi
        EOL: { }

      COLON:
        match: cb_insert_empty_map
        EOL: { new: FULLNODE }
        WS: { new: FULLMAPVALUE_INLINE }

      BLOCK_SCALAR:
        match: cb_send_block_scalar
        EOL: { }

      FLOWSEQ_START:
        match: cb_start_flowseq
        new: NEWFLOWSEQ

      FLOWMAP_START:
        match: cb_start_flowmap
        new: NEWFLOWMAP

      DOC_END:
        match: cb_end_document
        EOL: { }

      DOC_START:
        match: cb_end_doc_start_document
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }

      EOL:
        new: NODETYPE_SCALAR_OR_MAP

    NODETYPE_COMPLEX:
      COLON:
        match: cb_complexcolon
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }
      DEFAULT:
        match: cb_empty_complexvalue
        new: NODETYPE_MAP
      EOL:
        new: NODETYPE_COMPLEX

    RULE_FULLFLOWSCALAR:
      ANCHOR:
        match: cb_anchor
        EOL: { new: RULE_FULLFLOWSCALAR_ANCHOR }
        DEFAULT: { new: RULE_FULLFLOWSCALAR_ANCHOR }
      TAG:
        match: cb_tag
        EOL: { new: RULE_FULLFLOWSCALAR_TAG }
        DEFAULT: { new: RULE_FULLFLOWSCALAR_TAG }
      DEFAULT: { new: RULE_FLOWSCALAR }

    RULE_FULLFLOWSCALAR_ANCHOR:
      WS: { new: RULE_FULLFLOWSCALAR_ANCHOR }
      TAG:
        match: cb_tag
        WS: { new: RULE_FLOWSCALAR }
        EOL: { new: RULE_FLOWSCALAR }
      DEFAULT: { new: RULE_FLOWSCALAR }

    RULE_FULLFLOWSCALAR_TAG:
      WS: { new: RULE_FULLFLOWSCALAR_TAG }
      ANCHOR:
        match: cb_anchor
        WS: { new: RULE_FLOWSCALAR }
        EOL: { new: RULE_FLOWSCALAR }
      DEFAULT: { new: RULE_FLOWSCALAR }

    RULE_FLOWSCALAR:
      FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ }
      FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP }

      ALIAS: { match: cb_send_alias, return: 1 }

      QUOTED:
        match: cb_take_quoted
        EOL: { match: cb_send_scalar }
        WS: { match: cb_send_scalar, return: 1 }
        DEFAULT: { match: cb_send_scalar, return: 1 }

      QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 }

      PLAIN:
        match: cb_start_plain
        EOL: { match: cb_send_scalar }
        DEFAULT: { match: cb_send_scalar, return: 1 }

      PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 }

      FLOW_COMMA: { match: cb_empty_flow_mapkey, return: 1 }

      FLOWMAP_END:
        match: cb_end_flowmap_empty
        return: 1

    FLOWSEQ:
      FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ }
      FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP }

      ALIAS: { match: cb_send_flow_alias, new: FLOWSEQ_NEXT }

      PLAIN:
        match: cb_start_plain
        EOL:
          match: cb_send_scalar
          new: FLOWSEQ_NEXT
        DEFAULT:
          new: FLOWSEQ_MAYBE_KEY
      PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT }

      QUOTED:
        match: cb_take_quoted
        EOL:
          match: cb_send_scalar
          new: FLOWSEQ_NEXT
        DEFAULT:
          new: FLOWSEQ_MAYBE_KEY
      QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT }

      COLON:
        WS:
          match: cb_insert_empty_implicit_flowseq_map
          new: RULE_FULLFLOWSCALAR
        EOL:
          match: cb_insert_empty_implicit_flowseq_map
          new: RULE_FULLFLOWSCALAR

    FLOWSEQ_PROPS:
      FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ }
      FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP }

      PLAIN:
        match: cb_start_plain
        EOL:
          match: cb_send_scalar
          new: FLOWSEQ_NEXT
        DEFAULT:
          new: FLOWSEQ_MAYBE_KEY
      PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT }

      QUOTED:
        match: cb_take_quoted
        EOL:
          match: cb_send_scalar
          new: FLOWSEQ_NEXT
        DEFAULT:
          new: FLOWSEQ_MAYBE_KEY
      QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT }

      FLOW_COMMA:
        match: cb_empty_flowseq_comma
        return: 1
      FLOWSEQ_END:
        match: cb_empty_flowseq_end
        return: 1

      COLON:
        WS:
          match: cb_insert_empty_implicit_flowseq_map
          new: RULE_FULLFLOWSCALAR
        EOL:
          match: cb_insert_empty_implicit_flowseq_map
          new: RULE_FULLFLOWSCALAR

    FLOWSEQ_EMPTY:
      FLOW_COMMA:
        match: cb_empty_flowseq_comma
        return: 1
      FLOWSEQ_END:
        match: cb_empty_flowseq_end
        return: 1

    FLOWSEQ_NEXT:
      WS: { new: FLOWSEQ_NEXT }
      EOL: { new: FLOWSEQ_NEXT }

      FLOW_COMMA:
        match: cb_flow_comma
        return: 1
      FLOWSEQ_END:
        match: cb_end_flowseq
        return: 1

    FLOWSEQ_MAYBE_KEY:
      WS: { new: FLOWSEQ_MAYBE_KEY }

      COLON:
        WS:
          match: cb_insert_implicit_flowseq_map
          new: RULE_FULLFLOWSCALAR
        EOL:
          match: cb_insert_implicit_flowseq_map
          new: RULE_FULLFLOWSCALAR
        DEFAULT:
          match: cb_insert_implicit_flowseq_map
          new: RULE_FULLFLOWSCALAR
      DEFAULT:
        new: FLOWSEQ_NEXT

    FLOWMAP_CONTENT:
      FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ }
      FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP }

      ALIAS: { match: cb_send_alias, return: 1 }

      PLAIN: { match: cb_flowkey_plain, return: 1 }
      PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 }

      QUOTED: { match: cb_flowkey_quoted, return: 1 }
      QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 }

      COLON:
        WS:
          match: cb_empty_flow_mapkey
          new: RULE_FULLFLOWSCALAR
        EOL:
          match: cb_empty_flow_mapkey
          new: RULE_FULLFLOWSCALAR

    FLOWMAP_PROPS:
      FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ }
      FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP }

      PLAIN: { match: cb_flowkey_plain, return: 1 }
      PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 }

      QUOTED: { match: cb_flowkey_quoted, return: 1 }
      QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 }

      COLON:
        WS:
          match: cb_empty_flow_mapkey
          new: RULE_FULLFLOWSCALAR
        EOL:
          match: cb_empty_flow_mapkey
          new: RULE_FULLFLOWSCALAR
      FLOW_COMMA:
        match: cb_empty_flowmap_key_value
        return: 1
      FLOWMAP_END:
        match: cb_end_empty_flowmap_key_value
        return: 1

    FLOWMAP_EMPTYKEY:
      FLOW_COMMA:
        match: cb_empty_flowmap_key_value
        return: 1
      FLOWMAP_END:
        match: cb_end_empty_flowmap_key_value
        return: 1

    NEWFLOWSEQ:
      EOL: { new: NEWFLOWSEQ }
      WS: { new: NEWFLOWSEQ }

      ANCHOR:
        match: cb_anchor
        WS: { new: NEWFLOWSEQ_ANCHOR_SPC }
        EOL: { new: NEWFLOWSEQ_ANCHOR_SPC }
        DEFAULT: { new: NEWFLOWSEQ_ANCHOR }

      TAG:
        match: cb_tag
        WS: { new: NEWFLOWSEQ_TAG_SPC }
        EOL: { new: NEWFLOWSEQ_TAG_SPC }
        DEFAULT: { new: NEWFLOWSEQ_TAG }

      FLOWSEQ_END:
        match: cb_end_flowseq
        return: 1

      DEFAULT: { new: FLOWSEQ }

    NODETYPE_FLOWSEQ:
      EOL: { new: NODETYPE_FLOWSEQ }
      WS: { new: NODETYPE_FLOWSEQ }
      FLOWSEQ_END:
        match: cb_end_flowseq
        return: 1
      DEFAULT: { new: NEWFLOWSEQ }

    NODETYPE_FLOWMAPVALUE:
      WS: { new: NODETYPE_FLOWMAPVALUE }
      EOL: { new: NODETYPE_FLOWMAPVALUE }
      COLON:
        match: cb_flow_colon
        WS: { new: RULE_FULLFLOWSCALAR }
        EOL: { new: RULE_FULLFLOWSCALAR }
        DEFAULT: { new: RULE_FULLFLOWSCALAR }
      FLOW_COMMA:
        match: cb_empty_flowmap_value
        return: 1
      FLOWMAP_END:
        match: cb_end_flowmap_empty
        return: 1

    NEWFLOWSEQ_ANCHOR:
      DEFAULT: { new: FLOWSEQ_EMPTY }
    NEWFLOWSEQ_TAG:
      DEFAULT: { new: FLOWSEQ_EMPTY }

    NEWFLOWSEQ_ANCHOR_SPC:
      WS: { new: NEWFLOWSEQ_ANCHOR_SPC }
      EOL: { new: NEWFLOWSEQ_ANCHOR_SPC }
      TAG:
        match: cb_tag
        WS: { new: FLOWSEQ_PROPS }
        EOL: { new: FLOWSEQ_PROPS }
        DEFAULT: { new: FLOWSEQ_EMPTY }
      DEFAULT: { new: FLOWSEQ_PROPS }

    NEWFLOWSEQ_TAG_SPC:
      WS: { new: NEWFLOWSEQ_TAG_SPC }
      EOL: { new: NEWFLOWSEQ_TAG_SPC }
      ANCHOR:
        match: cb_anchor
        WS: { new: FLOWSEQ_PROPS }
        EOL: { new: FLOWSEQ_PROPS }
        DEFAULT: { new: FLOWSEQ_EMPTY }
      DEFAULT: { new: FLOWSEQ_PROPS }

    NEWFLOWMAP_ANCHOR:
      DEFAULT: { new: FLOWMAP_EMPTYKEY }
    NEWFLOWMAP_TAG:
      DEFAULT: { new: FLOWMAP_EMPTYKEY }

    NEWFLOWMAP_ANCHOR_SPC:
      WS: { new: NEWFLOWMAP_ANCHOR_SPC }
      EOL: { new: NEWFLOWMAP_ANCHOR_SPC }
      TAG:
        match: cb_tag
        WS: { new: FLOWMAP_PROPS }
        EOL: { new: FLOWMAP_PROPS }
        DEFAULT: { new: FLOWMAP_EMPTYKEY }
      DEFAULT: { new: FLOWMAP_PROPS }

    NEWFLOWMAP_TAG_SPC:
      WS: { new: NEWFLOWMAP_TAG_SPC }
      EOL: { new: NEWFLOWMAP_TAG_SPC }
      ANCHOR:
        match: cb_anchor
        WS: { new: FLOWMAP_PROPS }
        EOL: { new: FLOWMAP_PROPS }
        DEFAULT: { new: FLOWMAP_EMPTYKEY }
      DEFAULT: { new: FLOWMAP_PROPS }

    NEWFLOWMAP:
      EOL: { new: NEWFLOWMAP }
      WS: { new: NEWFLOWMAP }
      QUESTION: { match: cb_flow_question, new: FLOWMAP_EXPLICIT_KEY }
      DEFAULT: { new: FLOWMAP }

    FLOWMAP_EXPLICIT_KEY:
      WS: { new: FLOWMAP_EXPLICIT_KEY }
      EOL: { new: FLOWMAP_EXPLICIT_KEY }
      FLOWMAP_END:
        match: cb_end_empty_flowmap_key_value
        return: 1
      FLOW_COMMA:
        match: cb_empty_flowmap_key_value
        return: 1
      DEFAULT: { new: FLOWMAP }

    FLOWMAP:
      EOL: { new: FLOWMAP }
      WS: { new: FLOWMAP }

      ANCHOR:
        match: cb_anchor
        WS: { new: NEWFLOWMAP_ANCHOR_SPC }
        EOL: { new: NEWFLOWMAP_ANCHOR_SPC }
        DEFAULT: { new: NEWFLOWMAP_ANCHOR }
      TAG:
        match: cb_tag
        WS: { new: NEWFLOWMAP_TAG_SPC }
        EOL: { new: NEWFLOWMAP_TAG_SPC }
        DEFAULT: { new: NEWFLOWMAP_TAG }

      FLOWMAP_END:
        match: cb_end_flowmap
        return: 1

      COLON:
        WS:
          match: cb_empty_flow_mapkey
          new: RULE_FULLFLOWSCALAR
        EOL:
          match: cb_empty_flow_mapkey
          new: RULE_FULLFLOWSCALAR

      DEFAULT: { new: FLOWMAP_CONTENT }

    NODETYPE_FLOWMAP:
      EOL: { new: NODETYPE_FLOWMAP }
      WS: { new: NODETYPE_FLOWMAP }
      FLOWMAP_END:
        match: cb_end_flowmap
        return: 1
      FLOW_COMMA: { match: cb_flow_comma, new: NEWFLOWMAP }
      DEFAULT: { new: NEWFLOWMAP }

    END_FLOW:
      EOL:
        match: cb_end_outer_flow
        return: 1

    RULE_MAPKEY:
      QUESTION:
        match: cb_question
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }
      ALIAS:
        match: cb_send_alias_key
        WS:
          COLON:
            EOL: { new: FULLNODE }
            WS: { new: FULLMAPVALUE_INLINE }

      QUOTED:
        match: cb_take_quoted_key
        WS:
          COLON:
            EOL: { new: FULLNODE }
            WS: { new: FULLMAPVALUE_INLINE }
        COLON:
          EOL: { new: FULLNODE }
          WS: { new: FULLMAPVALUE_INLINE }

      PLAIN:
        match: cb_mapkey
        WS:
          COLON:
            match: cb_send_mapkey
            EOL: { new: FULLNODE }
            WS: { new: FULLMAPVALUE_INLINE }
        COLON:
          match: cb_send_mapkey
          EOL: { new: FULLNODE }
          WS: { new: FULLMAPVALUE_INLINE }

      COLON:
        match: cb_empty_mapkey
        EOL: { new: FULLNODE }
        WS: { new: FULLMAPVALUE_INLINE }

      DOC_END:
        match: cb_end_document
        EOL: { }

      DOC_START:
        match: cb_end_doc_start_document
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }

      EOL:
        new: RULE_MAPKEY

    NODETYPE_SEQ:
      DASH:
        match: cb_seqitem
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }
      DOC_END:
        match: cb_end_document
        EOL: { }
      DOC_START:
        match: cb_end_doc_start_document
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }

      EOL:
        new: NODETYPE_SEQ

    NODETYPE_MAP:
      ANCHOR:
        match: cb_anchor
        WS:
          TAG:
            match: cb_tag
            WS: { new: RULE_MAPKEY  }
          DEFAULT: { new: RULE_MAPKEY }
      TAG:
        match: cb_tag
        WS:
          ANCHOR:
            match: cb_anchor
            WS: { new: RULE_MAPKEY  }
          DEFAULT: { new: RULE_MAPKEY }
      DEFAULT: { new: RULE_MAPKEY }

    FULLNODE_ANCHOR:
      TAG:
        match: cb_tag
        EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR }
        WS:
          ANCHOR:
            match: cb_anchor
            WS: { new: NODETYPE_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      ANCHOR:
        match: cb_anchor
        WS:
          TAG:
            match: cb_tag
            WS: { new: NODETYPE_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      EOL: { new: FULLNODE_ANCHOR }
      DEFAULT: { new: NODETYPE_NODE }

    FULLNODE_TAG:
      ANCHOR:
        match: cb_anchor
        EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR }
        WS:
          TAG:
            match: cb_tag
            WS: { new: NODETYPE_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP, }
      TAG:
        match: cb_tag
        WS:
          ANCHOR:
            match: cb_anchor
            WS: { new: NODETYPE_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      EOL: { new: FULLNODE_TAG }
      DEFAULT: { new: NODETYPE_NODE }

    FULLNODE_TAG_ANCHOR:
      ANCHOR:
        match: cb_anchor
        WS:
          TAG:
            match: cb_tag
            WS: { new: NODETYPE_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      TAG:
        match: cb_tag
        WS:
          ANCHOR:
            match: cb_anchor
            WS: { new: NODETYPE_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      EOL: { new: FULLNODE_TAG_ANCHOR }
      DEFAULT: { new: NODETYPE_NODE }

    FULLNODE:
      ANCHOR:
        match: cb_anchor
        EOL: { match: cb_property_eol, new: FULLNODE_ANCHOR }
        WS:
          TAG:
            match: cb_tag
            EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR }
            WS: { new: NODETYPE_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      TAG:
        match: cb_tag
        EOL: { match: cb_property_eol, new: FULLNODE_TAG }
        WS:
          ANCHOR:
            match: cb_anchor
            EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR }
            WS: { new: NODETYPE_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      EOL: { new: FULLNODE }
      DEFAULT: { new: NODETYPE_NODE }

    FULLMAPVALUE_INLINE:
      ANCHOR:
        match: cb_anchor
        EOL: { match: cb_property_eol, new: FULLNODE_ANCHOR }
        WS:
          TAG:
            match: cb_tag
            EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR }
            WS: { new: NODETYPE_MAPVALUE_INLINE  }
          DEFAULT: { new: NODETYPE_MAPVALUE_INLINE }
      TAG:
        match: cb_tag
        EOL: { match: cb_property_eol, new: FULLNODE_TAG }
        WS:
          ANCHOR:
            match: cb_anchor
            EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR }
            WS: { new: NODETYPE_MAPVALUE_INLINE  }
          DEFAULT: { new: NODETYPE_MAPVALUE_INLINE }
      DEFAULT: { new: NODETYPE_MAPVALUE_INLINE }

    NODETYPE_MAPVALUE_INLINE:
      ALIAS:
        match: cb_send_alias
        EOL: { }

      QUOTED:
        match: cb_take_quoted
        EOL: { match: cb_send_scalar }

      QUOTED_MULTILINE:
        match: cb_quoted_multiline
        EOL: { }

      PLAIN:
        match: cb_start_plain
        EOL:
          match: cb_send_scalar

      PLAIN_MULTI:
        match: cb_send_plain_multi
        EOL: { }

      BLOCK_SCALAR:
        match: cb_send_block_scalar
        EOL: { }

      FLOWSEQ_START:
        match: cb_start_flowseq
        new: NEWFLOWSEQ

      FLOWMAP_START:
        match: cb_start_flowmap
        new: NEWFLOWMAP

      DOC_END:
        match: cb_end_document
        EOL: { }

    DOCUMENT_END:
      DOC_END:
        match: cb_end_document
        EOL: { }
      DOC_START:
        match: cb_end_doc_start_document
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }

      EOL:
        new: DOCUMENT_END

    STREAM:

      DOC_END:
        match: cb_end_document_empty
        EOL: {  }
      DOC_START:
        match: cb_doc_start_explicit
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }
      YAML_DIRECTIVE:
        match: cb_set_yaml_version_directive
        EOL: { new: DIRECTIVE }
        WS: { new: DIRECTIVE }
      RESERVED_DIRECTIVE:
        match: cb_reserved_directive
        EOL: { new: DIRECTIVE }
        WS: { new: DIRECTIVE }
      TAG_DIRECTIVE:
        match: cb_tag_directive
        EOL: { new: DIRECTIVE }
        WS: { new: DIRECTIVE }

      EOL:
        new: STREAM

      DEFAULT:
        match: cb_doc_start_implicit
        new: FULLNODE

    DIRECTIVE:
      DOC_START:
        match: cb_doc_start_explicit
        EOL: { new: FULLNODE }
        WS: { new: FULLNODE }

      YAML_DIRECTIVE:
        match: cb_set_yaml_version_directive
        EOL: { new: DIRECTIVE }
        WS: { new: DIRECTIVE }
      RESERVED_DIRECTIVE:
        match: cb_reserved_directive
        EOL: { new: DIRECTIVE }
        WS: { new: DIRECTIVE }
      TAG_DIRECTIVE:
        match: cb_tag_directive
        EOL: { new: DIRECTIVE }
        WS: { new: DIRECTIVE }

      EOL:
        new: DIRECTIVE

    # END OF YAML INLINE