src/parser/class.js
function(flags) {
    const result = this.node("propertystatement");

    const properties = this.read_list(
      /**
       * Reads a variable declaration
       *
       * ```ebnf
       *  variable_declaration ::= T_VARIABLE '=' scalar
       * ```
       */
      function read_variable_declaration() {
        const result = this.node("property");
        this.expect(this.tok.T_VARIABLE);
        let propName = this.node("identifier");
        const name = this.text().substring(1); // ignore $
        this.next();
        propName = propName(name);
        if (this.token === ";" || this.token === ",") {
          return result(propName, null);
        } else if (this.token === "=") {
          // https://github.com/php/php-src/blob/master/Zend/zend_language_parser.y#L815
          return result(propName, this.next().read_expr());
        } else {
          this.expect([",", ";", "="]);
          return result(propName, null);
        }
      },
      ","
    );

    return result(null, properties, flags);
  }
function(flags) {
    const result = this.node("propertystatement");

    const properties = this.read_list(
      /**
       * Reads a variable declaration
       *
       * ```ebnf
       *  variable_declaration ::= T_VARIABLE '=' scalar
       * ```
       */
      function read_variable_declaration() {
        const result = this.node("property");
        this.expect(this.tok.T_VARIABLE);
        let propName = this.node("identifier");
        const name = this.text().substring(1); // ignore $
        this.next();
        propName = propName(name);
        if (this.token === ";" || this.token === ",") {
          return result(propName, null);
        } else if (this.token === "=") {
          // https://github.com/php/php-src/blob/master/Zend/zend_language_parser.y#L815
          return result(propName, this.next().read_expr());
        } else {
          this.expect([",", ";", "="]);
          return result(propName, null);
        }
      },
      ","
    );

    return result(null, properties, flags);
  }
Reads variable list
```ebnf
variable_list ::= (variable_declaration ',')* variable_declaration
```