text: var StringScanner = function(str) {
      this._str = str;
      this._at = 0;
      this.matched = "";
      return this._workingString = str;
  };
  StringScanner.prototype.scan = function(reg) {
      var res;
      res = reg.exec(this._workingString);
      if (res === null) {
          this.matched = "";
          return false;
      } else if (typeof res === "object") {
          this._at += res[0].length;
          this._workingString = this._workingString.substr(res[0].length);
          this.matched = res[0];
          return res;
      } else if (typeof res === "string") {
          this._at += res.length;
          this._workingString = this._workingString.substr(res.length);
          return res;
      } else {
          return false;
      };
  };
  
  StringScanner.prototype.check = function(reg) {
      return reg.exec(this._workingString);
  };
  StringScanner.prototype.peek = function(len) {
      return this._workingString.substr(0, len);
  };
  
  StringScanner.prototype.eos = function() {
    return this._workingString.length == 0;
  };
  
  exports.StringScanner = StringScanner;
  