docs: function(first, startLine, startCol){
          var delim   = first,
              string  = first,
              reader  = this._reader,
              prev    = first,
              tt      = Tokens.STRING,
              c       = reader.read();
              
          while(c){
              string += c;
              
              //if the delimiter is found with an escapement, we're done.
              if (c == delim && prev != "\\"){
                  break;
              }
  
              //if there's a newline without an escapement, it's an invalid string
              if (isNewLine(reader.peek()) && c != "\\"){
                  tt = Tokens.INVALID;
                  break;
              }
          
              //save previous and get next
              prev = c;
              c = reader.read();
          }
          
          //if c is null, that means we're out of input and the string was never closed
          if (c == null){
              tt = Tokens.INVALID;
          }
              
          return this.createToken(tt, string, startLine, startCol);        
      }