The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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

    ---
    NODETYPE_NODE:
      DASH:
        match: cb_seqstart
        EOL: { node: FULLNODE , return: 1}
        WS: { node: FULLNODE }
    
      DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
    
    NODETYPE_SCALAR_OR_MAP:
      ALIAS:
        match: cb_alias
        EOL: { match: cb_send_alias_from_stack, return: 1 }
        WS:
          COLON:
            match: cb_insert_map_alias
            EOL: { node: FULLNODE, return: 1 }
            WS: { node: FULLMAPVALUE_INLINE }
    
      QUESTION:
        match: cb_questionstart
        EOL: { node: FULLNODE, return: 1 }
        WS: { node: FULLNODE, return: 1 }
    
      SINGLEQUOTE:
        match: cb_start_quoted
        SINGLEQUOTED:
          match: cb_take
          SINGLEQUOTE:
            EOL: { match: cb_send_scalar, return: 1 }
            COLON:
              match: cb_insert_map
              EOL: { node: FULLNODE, return: 1 }
              WS: { node: FULLMAPVALUE_INLINE, return: 1 }
            WS:
              COLON:
                match: cb_insert_map
                EOL: { node: FULLNODE, return: 1 }
                WS: { node: FULLMAPVALUE_INLINE, return: 1 }
        SINGLEQUOTED_LINE:
          match: cb_take
          EOL: { match: cb_fetch_tokens_quoted, new: MULTILINE_SINGLEQUOTED }
    
      DOUBLEQUOTE:
        match: cb_start_quoted
        DOUBLEQUOTED:
          match: cb_take
          DOUBLEQUOTE:
            EOL: { match: cb_send_scalar, return: 1 }
            WS:
              COLON:
                match: cb_insert_map
                EOL: { node: FULLNODE , return: 1}
                WS: { node: FULLMAPVALUE_INLINE, return: 1 }
            COLON:
              match: cb_insert_map
              EOL: { node: FULLNODE , return: 1}
              WS: { node: FULLMAPVALUE_INLINE, return: 1 }
        DOUBLEQUOTED_LINE:
          match: cb_take
          EOL: { match: cb_fetch_tokens_quoted, new: MULTILINE_DOUBLEQUOTED  }
    
      PLAIN:
        match: cb_start_plain
        COMMENT:
          match: cb_send_scalar
          EOL: { return: 1 }
        EOL: { match: cb_fetch_tokens_plain, new: RULE_PLAIN_MULTI }
        WS:
          COLON:
            match: cb_insert_map
            EOL: { node: FULLNODE , return: 1}
            WS: { node: FULLMAPVALUE_INLINE, return: 1 }
        COLON:
          match: cb_insert_map
          EOL: { node: FULLNODE , return: 1}
          WS: { node: FULLMAPVALUE_INLINE, return: 1 }
    
      COLON:
        match: cb_insert_empty_map
        EOL: { node: FULLNODE , return: 1}
        WS: { node: FULLMAPVALUE_INLINE, return: 1 }
    
      LITERAL:
        match: cb_block_scalar
        new: RULE_BLOCK_SCALAR_HEADER
      FOLDED:
        match: cb_block_scalar
        new: RULE_BLOCK_SCALAR_HEADER
    
      FLOWSEQ_START:
        match: cb_start_flowseq
        DEFAULT: { new: NEWFLOWSEQ }
    
      FLOWMAP_START:
        match: cb_start_flowmap
        DEFAULT: { new: NEWFLOWMAP }
    
    
    
    
    NODETYPE_COMPLEX:
      COLON:
        match: cb_complexcolon
        EOL: { node: FULLNODE, return: 1 }
        WS: { node: FULLNODE, return: 1 }
      DEFAULT:
        match: cb_empty_complexvalue
        new: NODETYPE_MAP
    
    MULTILINE_SINGLEQUOTED:
      SINGLEQUOTED_LINE:
        match: cb_take
        EOL: { match: cb_fetch_tokens_quoted, new: MULTILINE_SINGLEQUOTED }
        SINGLEQUOTE:
          EOL: { match: cb_send_scalar, return: 1 }
          DEFAULT: { match: cb_send_scalar, return: 1 }
      EOL: { match: cb_empty_quoted_line, new: MULTILINE_SINGLEQUOTED }
    
    MULTILINE_DOUBLEQUOTED:
      DOUBLEQUOTED_LINE:
        match: cb_take
        EOL: { match: cb_fetch_tokens_quoted, new: MULTILINE_DOUBLEQUOTED  }
        DOUBLEQUOTE:
          EOL: { match: cb_send_scalar, return: 1 }
          DEFAULT: { match: cb_send_scalar, return: 1 }
      EOL: { match: cb_empty_quoted_line, new: MULTILINE_DOUBLEQUOTED }
    
    RULE_FULLFLOWSCALAR:
      ANCHOR:
        match: cb_anchor
        WS:
          TAG:
            match: cb_tag
            WS: { new: RULE_FLOWSCALAR }
          DEFAULT: { new: RULE_FLOWSCALAR }
        EOL: { new: RULE_FULLFLOWSCALAR_ANCHOR, return: 1 }
        DEFAULT: { new: RULE_FLOWSCALAR }
      TAG:
        match: cb_tag
        WS:
          ANCHOR:
            match: cb_anchor
            WS: { new: RULE_FLOWSCALAR }
          DEFAULT: { new: RULE_FLOWSCALAR }
        EOL: { new: RULE_FULLFLOWSCALAR_TAG, return: 1 }
        DEFAULT: { new: RULE_FLOWSCALAR }
      DEFAULT: { new: RULE_FLOWSCALAR }
    
    RULE_FULLFLOWSCALAR_TAG:
      ANCHOR:
        match: cb_anchor
        WS: { new: RULE_FLOWSCALAR }
        EOL: { new: RULE_FLOWSCALAR, return: 1 }
      DEFAULT: { new: RULE_FLOWSCALAR }
    
    RULE_FLOWSCALAR:
      FLOWSEQ_START:
        match: cb_start_flowseq
        DEFAULT: { new: NEWFLOWSEQ }
      FLOWMAP_START:
        match: cb_start_flowmap
        DEFAULT: { new: NEWFLOWMAP }
    
      ALIAS:
        match: cb_send_alias
        return: 1
    
      SINGLEQUOTE:
        match: cb_start_quoted
        SINGLEQUOTED:
          match: cb_take
          SINGLEQUOTE:
            EOL: { match: cb_send_scalar, return: 1 }
            WS: { match: cb_send_scalar, return: 1 }
        SINGLEQUOTED_LINE:
          match: cb_take
          EOL: { match: cb_fetch_tokens_quoted, new: MULTILINE_SINGLEQUOTED }
    
      DOUBLEQUOTE:
        match: cb_start_quoted
        DOUBLEQUOTED:
          match: cb_take
          DOUBLEQUOTE:
            EOL: { match: cb_send_scalar, return: 1 }
            WS: { match: cb_send_scalar, return: 1 }
            DEFAULT: { match: cb_send_scalar, return: 1 }
        DOUBLEQUOTED_LINE:
          match: cb_take
          EOL: { match: cb_fetch_tokens_quoted, new: MULTILINE_DOUBLEQUOTED  }
    
      PLAIN:
        match: cb_start_plain
        EOL: { match: cb_fetch_tokens_plain, new: RULE_PLAIN_MULTI_FLOW }
        COMMENT:
          match: cb_send_scalar
          return: 1
        DEFAULT:
          match: cb_send_scalar
          return: 1
    
    #  DEFAULT: { match: cb_empty_flowmap_value, return: 1 }
    
    
    NEWFLOWSEQ:
      EOL: { new: NEWFLOWSEQ, return: 1 }
      WS: { new: NEWFLOWSEQ }
      FLOWSEQ_END:
        match: cb_end_flowseq
        EOL: { return: 1 }
        DEFAULT: { return: 1 }
      DEFAULT: { new: RULE_FULLFLOWSCALAR }
    
    NODETYPE_FLOWSEQ:
      EOL: { new: NODETYPE_FLOWSEQ, return: 1 }
      WS: { new: NODETYPE_FLOWSEQ }
      FLOWSEQ_END:
        match: cb_end_flowseq
        EOL: { return: 1 }
        DEFAULT: { return: 1 }
      FLOW_COMMA: { match: cb_flow_comma, new: NEWFLOWSEQ }
    
    NODETYPE_FLOWMAPVALUE:
      COLON:
        match: cb_flow_colon
        WS: { new: RULE_FULLFLOWSCALAR }
        EOL: { new: RULE_FULLFLOWSCALAR, return: 1 }
        DEFAULT: { new: RULE_FULLFLOWSCALAR }
      WS: { new: NODETYPE_FLOWMAPVALUE }
      DEFAULT:
        match: cb_empty_flowmap_value
        return: 1
    
    
    NEWFLOWMAP:
      EOL: { new: NEWFLOWMAP, return: 1 }
      WS: { new: NEWFLOWMAP }
      FLOWMAP_END:
        match: cb_end_flowmap
        EOL: { return: 1 }
        DEFAULT: { return: 1 }
      DEFAULT: { new: RULE_FULLFLOWSCALAR }
    
    NODETYPE_FLOWMAP:
      EOL: { new: NODETYPE_FLOWMAP, return: 1 }
      WS: { new: NODETYPE_FLOWMAP }
      FLOWMAP_END:
        match: cb_end_flowmap
        EOL: { return: 1 }
        DEFAULT: { return: 1 }
      FLOW_COMMA: { match: cb_flow_comma, new: NEWFLOWMAP }
      DEFAULT: { new: RULE_FULLFLOWSCALAR }
    
    
    
    RULE_PLAIN_MULTI:
      END: { match: cb_send_scalar, return: 1 }
      EOL: { match: cb_empty_plain, new: RULE_PLAIN_MULTI }
      WS:
        PLAIN:
          match: cb_take
          EOL: { match: cb_fetch_tokens_plain, new: RULE_PLAIN_MULTI }
          COMMENT:
            EOL: { match: cb_send_scalar, return: 1 }
      INDENT:
        WS:
          PLAIN:
            match: cb_take
            EOL: { match: cb_fetch_tokens_plain, new: RULE_PLAIN_MULTI }
            COMMENT:
              EOL: { match: cb_send_scalar, return: 1 }
    
    RULE_PLAIN_MULTI_FLOW:
      END: { match: cb_send_scalar, return: 1 }
      EOL: { match: cb_empty_plain, new: RULE_PLAIN_MULTI }
      WS:
        PLAIN:
          match: cb_take
          EOL: { match: cb_fetch_tokens_plain, new: RULE_PLAIN_MULTI }
          COMMENT:
            EOL: { match: cb_send_scalar, return: 1 }
      INDENT:
        WS:
          PLAIN:
            match: cb_take
            EOL: { match: cb_fetch_tokens_plain, new: RULE_PLAIN_MULTI_FLOW }
            COMMENT:
              EOL: { match: cb_send_scalar, return: 1 }
            DEFAULT: { match: cb_send_scalar, return: 1 }
          DEFAULT: { match: cb_send_scalar, return: 1 }
      DEFAULT: { match: cb_send_scalar, return: 1 }
    
    
    RULE_MAPKEY:
      QUESTION:
        match: cb_question
        EOL: { node: FULLNODE , return: 1}
        WS: { node: FULLNODE , return: 1}
      ALIAS:
        match: cb_send_alias
        WS:
          COLON:
            EOL: { node: FULLNODE , return: 1}
            WS: { node: FULLMAPVALUE_INLINE, return: 1 }
      DOUBLEQUOTE:
        match: cb_start_quoted
        DOUBLEQUOTED:
          match: cb_take
          DOUBLEQUOTE:
            match: cb_send_mapkey
            WS:
              COLON:
                EOL: { node: FULLNODE , return: 1}
                WS: { node: FULLMAPVALUE_INLINE, return: 1 }
            COLON:
              EOL: { node: FULLNODE , return: 1}
              WS: { node: FULLMAPVALUE_INLINE, return: 1 }
      SINGLEQUOTE:
        match: cb_start_quoted
        SINGLEQUOTED:
          match: cb_take
          SINGLEQUOTE:
            match: cb_send_mapkey
            WS:
              COLON:
                EOL: { node: FULLNODE , return: 1}
                WS: { node: FULLMAPVALUE_INLINE, return: 1 }
            COLON:
              EOL: { node: FULLNODE , return: 1}
              WS: { node: FULLMAPVALUE_INLINE, return: 1 }
      PLAIN:
        match: cb_mapkey
        WS:
          COLON:
            match: cb_send_mapkey
            EOL: { node: FULLNODE , return: 1}
            WS: { node: FULLMAPVALUE_INLINE, return: 1 }
        COLON:
          match: cb_send_mapkey
          EOL: { node: FULLNODE , return: 1}
          WS: { node: FULLMAPVALUE_INLINE, return: 1 }
      COLON:
        match: cb_empty_mapkey
        EOL: { node: FULLNODE , return: 1}
        WS: { node: FULLMAPVALUE_INLINE, return: 1 }
    
    NODETYPE_SEQ:
      DASH:
        match: cb_seqitem
        EOL: { node: FULLNODE , return: 1}
        WS: { node: FULLNODE }
    
    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: { match: cb_send_scalar, 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: { match: cb_send_scalar, return: 1 }
    
    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 , return: 1}
        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 }
      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_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 }
      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 }
      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_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      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_SCALAR_OR_MAP  }
          DEFAULT: { new: NODETYPE_SCALAR_OR_MAP }
      DEFAULT: { new: NODETYPE_NODE }
    
    FULLMAPVALUE_INLINE:
      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_MAPVALUE_INLINE  }
          DEFAULT: { new: NODETYPE_MAPVALUE_INLINE }
      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_MAPVALUE_INLINE  }
          DEFAULT: { new: NODETYPE_MAPVALUE_INLINE }
      DEFAULT: { new: NODETYPE_MAPVALUE_INLINE }
    
    
    NODETYPE_MAPVALUE_INLINE:
      ALIAS:
        match: cb_send_alias
        EOL: { return: 1 }
    
      SINGLEQUOTE:
        match: cb_start_quoted
        SINGLEQUOTED:
          match: cb_take
          SINGLEQUOTE:
            EOL: { match: cb_send_scalar, return: 1 }
        SINGLEQUOTED_LINE:
          match: cb_take
          EOL: { match: cb_fetch_tokens_quoted, new: MULTILINE_SINGLEQUOTED }
    
      DOUBLEQUOTE:
        match: cb_start_quoted
        DOUBLEQUOTED:
          match: cb_take
          DOUBLEQUOTE:
            EOL: { match: cb_send_scalar, return: 1 }
        DOUBLEQUOTED_LINE:
          match: cb_take
          EOL: { match: cb_fetch_tokens_quoted, new: MULTILINE_DOUBLEQUOTED  }
    
      PLAIN:
        match: cb_start_plain
        COMMENT:
          match: cb_send_scalar
          EOL: { return: 1 }
        EOL: { match: cb_fetch_tokens_plain, new: RULE_PLAIN_MULTI }
    
      LITERAL:
        match: cb_block_scalar
        new: RULE_BLOCK_SCALAR_HEADER
      FOLDED:
        match: cb_block_scalar
        new: RULE_BLOCK_SCALAR_HEADER
    
      FLOWSEQ_START:
        match: cb_start_flowseq
        DEFAULT: { new: NEWFLOWSEQ }
    
      FLOWMAP_START:
        match: cb_start_flowmap
        DEFAULT: { new: NEWFLOWMAP }


    # END OF YAML INLINE