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(
      
      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); 
        this.next();
        propName = propName(name);
        if (this.token === ";" || this.token === ",") {
          return result(propName, null);
        } else if (this.token === "=") {
          
          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
```
Reads variable list ebnf variable_list :: = ( variable_declaration ) * variable_declaration