whole_func_string: function() {
      let result = [];
      while (this.token !== this.EOF && this.token !== "}") {
        const statement = this.read_top_statement();
        if (statement) {
          if (Array.isArray(statement)) {
            result = result.concat(statement);
          } else {
            result.push(statement);
          }
        }
      }
      return result;
    }
func_code_string: function() {
      let result = [];
      while (this.token !== this.EOF && this.token !== "}") {
        const statement = this.read_top_statement();
        if (statement) {
          if (Array.isArray(statement)) {
            result = result.concat(statement);
          } else {
            result.push(statement);
          }
        }
      }
      return result;
    }
func_documentation_string: reading a list of top statements (helper for top_statement*)
  ```ebnf
  top_statements ::= top_statement*
  ```