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
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