whole_func_string: function() {
      let expect = null;
      let shortForm = false;
      const result = this.node(ArrayExpr);
  
      if (this.token === this.tok.T_ARRAY) {
        this.next().expect("(");
        expect = ")";
      } else {
        shortForm = true;
        expect = "]";
      }
      let items = [];
      if (this.next().token !== expect) {
        items = this.read_array_pair_list(shortForm);
      }
      // check non empty entries
      /*for(let i = 0, size = items.length - 1; i < size; i++) {
        if (items[i] === null) {
          this.raiseError(
            "Cannot use empty array elements in arrays"
          );
        }
      }*/
      this.expect(expect);
      this.next();
      return result(shortForm, items);
    }
func_code_string: function() {
      let expect = null;
      let shortForm = false;
      const result = this.node(ArrayExpr);
  
      if (this.token === this.tok.T_ARRAY) {
        this.next().expect("(");
        expect = ")";
      } else {
        shortForm = true;
        expect = "]";
      }
      let items = [];
      if (this.next().token !== expect) {
        items = this.read_array_pair_list(shortForm);
      }
      // check non empty entries
      /*for(let i = 0, size = items.length - 1; i < size; i++) {
        if (items[i] === null) {
          this.raiseError(
            "Cannot use empty array elements in arrays"
          );
        }
      }*/
      this.expect(expect);
      this.next();
      return result(shortForm, items);
    }
func_documentation_string: Parse an array
  ```ebnf
  array ::= T_ARRAY '(' array_pair_list ')' |
  '[' array_pair_list ']'
  ```