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

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