NAME

YAML::PP::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

---
RULE_ALIAS_KEY_OR_NODE:
  ALIAS:
    match: cb_start_alias
    EOL: { match: cb_got_scalar, new: END }
    WS:
      COLON:
        match: cb_insert_map
        EOL: { new: FULLNODE, return: 1 }
        WS: { new: FULLMAPVALUE, return: 1 }

RULE_COMPLEX:
  QUESTION:
    match: cb_questionstart
    EOL: { new: FULLNODE, return: 1 }
    WS: { new: FULLNODE, return: 1 }

NODETYPE_COMPLEX:
  COLON:
    match: cb_complexcolon
    EOL: { new: FULLNODE, return: 1 }
    WS: { new: FULLNODE, return: 1 }
  DEFAULT:
    match: cb_empty_complexvalue
    QUESTION:
      match: cb_question
      EOL: { new: FULLNODE, return: 1 }
      WS: { new: FULLNODE, return: 1 }
    DEFAULT: { new: FULL_MAPKEY }

RULE_SINGLEQUOTED_KEY_OR_NODE:
  SINGLEQUOTE:
    match: cb_start_quoted
    SINGLEQUOTED:
      match: cb_take
      SINGLEQUOTE:
        EOL: { match: cb_got_scalar, new: END }
        COLON:
          match: cb_insert_map
          EOL: { new: FULLNODE, return: 1 }
          WS: { new: FULLMAPVALUE, return: 1 }
        WS:
          COLON:
            match: cb_insert_map
            EOL: { new: FULLNODE, return: 1 }
            WS: { new: FULLMAPVALUE, return: 1 }
    SINGLEQUOTED_LINE:
      match: cb_take
      EOL: { fetch: 1, new: MULTILINE_SINGLEQUOTED }

MULTILINE_SINGLEQUOTED:
  SINGLEQUOTED_LINE:
    match: cb_take
    EOL: { fetch: 1, new: MULTILINE_SINGLEQUOTED }
    SINGLEQUOTE:
      EOL: { match: cb_got_scalar, new: END }
  EOL: { match: cb_empty_quoted_line, fetch: 1, new: MULTILINE_SINGLEQUOTED }

RULE_DOUBLEQUOTED_KEY_OR_NODE:
  DOUBLEQUOTE:
    match: cb_start_quoted
    DOUBLEQUOTED:
      match: cb_take
      DOUBLEQUOTE:
        EOL: { match: cb_got_scalar, new: END }
        WS:
          COLON:
            match: cb_insert_map
            EOL: { new: FULLNODE , return: 1}
            WS: { new: FULLMAPVALUE, return: 1 }
          DEFAULT: { match: cb_got_scalar, new: ERROR }
        COLON:
          match: cb_insert_map
          EOL: { new: FULLNODE , return: 1}
          WS: { new: FULLMAPVALUE, return: 1 }
        DEFAULT: { new: ERROR }
    DOUBLEQUOTED_LINE:
      match: cb_take
      EOL: { fetch: 1, new: MULTILINE_DOUBLEQUOTED  }

MULTILINE_DOUBLEQUOTED:
  DOUBLEQUOTED_LINE:
    match: cb_take
    EOL: { fetch: 1, new: MULTILINE_DOUBLEQUOTED  }
    DOUBLEQUOTE:
      EOL: { match: cb_got_scalar, new: END }
  EOL: { match: cb_empty_quoted_line, fetch: 1, new: MULTILINE_DOUBLEQUOTED }

RULE_PLAIN_KEY_OR_NODE:
  SCALAR:
    match: cb_start_plain
    COMMENT:
      match: cb_got_scalar
      EOL: { new: END }
    EOL: { match: cb_got_multiscalar, new: END }
    WS:
      COLON:
        match: cb_insert_map
        EOL: { new: FULLNODE , return: 1}
        WS: { new: FULLMAPVALUE, return: 1 }
    COLON:
      match: cb_insert_map
      EOL: { new: FULLNODE , return: 1}
      WS: { new: FULLMAPVALUE, return: 1 }
  COLON:
    match: cb_insert_map
    EOL: { new: FULLNODE , return: 1}
    WS: { new: FULLMAPVALUE, return: 1 }

RULE_PLAIN:
  SCALAR:
    match: cb_start_plain
    COMMENT:
      match: cb_got_multiscalar
      EOL: { new: END }
    EOL: { match: cb_got_multiscalar, new: END }

NODETYPE_MAP:
  QUESTION:
    match: cb_question
    EOL: { new: FULLNODE , return: 1}
    WS: { new: FULLNODE , return: 1}
  ALIAS:
    match: cb_mapkey_alias
    WS:
      COLON:
        EOL: { new: FULLNODE , return: 1}
        WS: { new: FULLMAPVALUE, return: 1 }
  DOUBLEQUOTE:
    DOUBLEQUOTED:
      match: cb_doublequoted_key
      DOUBLEQUOTE:
        WS:
          COLON:
            EOL: { new: FULLNODE , return: 1}
            WS: { new: FULLMAPVALUE, return: 1 }
        COLON:
          EOL: { new: FULLNODE , return: 1}
          WS: { new: FULLMAPVALUE, return: 1 }
  SINGLEQUOTE:
    SINGLEQUOTED:
      match: cb_singlequoted_key
      SINGLEQUOTE:
        WS:
          COLON:
            EOL: { new: FULLNODE , return: 1}
            WS: { new: FULLMAPVALUE, return: 1 }
        COLON:
          EOL: { new: FULLNODE , return: 1}
          WS: { new: FULLMAPVALUE, return: 1 }
  SCALAR:
    match: cb_mapkey
    WS:
      COLON:
        EOL: { new: FULLNODE , return: 1}
        WS: { new: FULLMAPVALUE, return: 1 }
    COLON:
      EOL: { new: FULLNODE , return: 1}
      WS: { new: FULLMAPVALUE, return: 1 }
  COLON:
    match: cb_empty_mapkey
    EOL: { new: FULLNODE , return: 1}
    WS: { new: FULLMAPVALUE, return: 1 }

RULE_SEQSTART:
  DASH:
    match: cb_seqstart
    EOL: { new: FULLNODE , return: 1}
    WS: { new: FULLNODE , return: 1}

NODETYPE_SEQ:
  DASH:
    match: cb_seqitem
    EOL: { new: FULLNODE , return: 1}
    WS: { new: FULLNODE , return: 1}

RULE_BLOCK_SCALAR:
  LITERAL:
    match: cb_block_scalar
    new: RULE_BLOCK_SCALAR_HEADER
  FOLDED:
    match: cb_block_scalar
    new: RULE_BLOCK_SCALAR_HEADER

RULE_BLOCK_SCALAR_HEADER:
  BLOCK_SCALAR_INDENT:
    match: cb_add_block_scalar_indent
    BLOCK_SCALAR_CHOMP:
      match: cb_add_block_scalar_chomp
      EOL:
        match: cb_fetch_tokens_block_scalar
        new: RULE_BLOCK_SCALAR_START
    EOL:
      match: cb_fetch_tokens_block_scalar
      new: RULE_BLOCK_SCALAR_START
  BLOCK_SCALAR_CHOMP:
    match: cb_add_block_scalar_chomp
    BLOCK_SCALAR_INDENT:
      match: cb_add_block_scalar_indent
      EOL:
        match: cb_fetch_tokens_block_scalar
        new: RULE_BLOCK_SCALAR_START
    EOL:
      match: cb_fetch_tokens_block_scalar
      new: RULE_BLOCK_SCALAR_START
  EOL:
    match: cb_fetch_tokens_block_scalar
    new: RULE_BLOCK_SCALAR_START

RULE_BLOCK_SCALAR_START:
  EOL: { match: cb_block_scalar_empty_line, new: RULE_BLOCK_SCALAR_START }
  INDENT:
    match: cb_block_scalar_start_indent
    EOL: { match: cb_block_scalar_empty_line, new: RULE_BLOCK_SCALAR_START }
    BLOCK_SCALAR_CONTENT:
      match: cb_block_scalar_start_content
      EOL: { match: cb_fetch_tokens_block_scalar, new: RULE_BLOCK_SCALAR_CONTENT }
  END: { new: END, return: 1 }

RULE_BLOCK_SCALAR_CONTENT:
  EOL: { match: cb_block_scalar_empty_line, new: RULE_BLOCK_SCALAR_CONTENT }
  INDENT:
    EOL: { match: cb_block_scalar_empty_line, new: RULE_BLOCK_SCALAR_CONTENT }
    BLOCK_SCALAR_CONTENT:
      match: cb_block_scalar_content
      EOL: { match: cb_fetch_tokens_block_scalar, new: RULE_BLOCK_SCALAR_CONTENT }
  END: { new: END, return: 1 }

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

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

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

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

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



# END OF YAML INLINE