whole_func_string: function() {
      while (this.offset < this.size) {
        const ch = this.input();
        if (ch === "\n" || ch === "\r") {
          return this.tok.T_COMMENT;
        } else if (
          ch === "?" &&
          !this.aspTagMode &&
          this._input[this.offset] === ">"
        ) {
          this.unput(1);
          return this.tok.T_COMMENT;
        } else if (
          ch === "%" &&
          this.aspTagMode &&
          this._input[this.offset] === ">"
        ) {
          this.unput(1);
          return this.tok.T_COMMENT;
        }
      }
      return this.tok.T_COMMENT;
    }
func_code_string: function() {
      while (this.offset < this.size) {
        const ch = this.input();
        if (ch === "\n" || ch === "\r") {
          return this.tok.T_COMMENT;
        } else if (
          ch === "?" &&
          !this.aspTagMode &&
          this._input[this.offset] === ">"
        ) {
          this.unput(1);
          return this.tok.T_COMMENT;
        } else if (
          ch === "%" &&
          this.aspTagMode &&
          this._input[this.offset] === ">"
        ) {
          this.unput(1);
          return this.tok.T_COMMENT;
        }
      }
      return this.tok.T_COMMENT;
    }
func_documentation_string: Reads a single line comment