whole_func_string: function(flags) {
      if (this.expect(this.tok.T_CONST)) {
        this.next();
      }
      const result = this.node("classconstant");
      const items = this.read_list(
        /**
         * Reads a constant declaration
         *
         * ```ebnf
         *  constant_declaration ::= (T_STRING | IDENTIFIER) '=' expr
         * ```
         * @return {Constant} [:link:](AST.md#constant)
         */
        function read_constant_declaration() {
          const result = this.node("constant");
          let constName = null;
          let value = null;
          if (
            this.token === this.tok.T_STRING ||
            (this.php7 && this.is("IDENTIFIER"))
          ) {
            constName = this.node("identifier");
            const name = this.text();
            this.next();
            constName = constName(name);
          } else {
            this.expect("IDENTIFIER");
          }
          if (this.expect("=")) {
            value = this.next().read_expr();
          }
          return result(constName, value);
        },
        ","
      );
  
      return result(null, items, flags);
    }
func_code_string: function(flags) {
      if (this.expect(this.tok.T_CONST)) {
        this.next();
      }
      const result = this.node("classconstant");
      const items = this.read_list(
        /**
         * Reads a constant declaration
         *
         * ```ebnf
         *  constant_declaration ::= (T_STRING | IDENTIFIER) '=' expr
         * ```
         * @return {Constant} [:link:](AST.md#constant)
         */
        function read_constant_declaration() {
          const result = this.node("constant");
          let constName = null;
          let value = null;
          if (
            this.token === this.tok.T_STRING ||
            (this.php7 && this.is("IDENTIFIER"))
          ) {
            constName = this.node("identifier");
            const name = this.text();
            this.next();
            constName = constName(name);
          } else {
            this.expect("IDENTIFIER");
          }
          if (this.expect("=")) {
            value = this.next().read_expr();
          }
          return result(constName, value);
        },
        ","
      );
  
      return result(null, items, flags);
    }
func_documentation_string: Reads constant list
  ```ebnf
  constant_list ::= T_CONST (constant_declaration ',')* constant_declaration
  ```