int parseTrBlockContent(int currentOffset,char openQuote,char closeQuote){
  int blockStartOffset=currentOffset;
  CharSequence buffer=getBuffer();
  int bufferEnd=getBufferEnd();
  boolean isEscaped=false;
  boolean isQuoteDiffers=openQuote != closeQuote;
  int quotesLevel=0;
  while (currentOffset < bufferEnd) {
    char currentChar=buffer.charAt(currentOffset);
    if (!isEscaped && quotesLevel == 0 && currentChar == closeQuote) {
      if (currentOffset > blockStartOffset) {
        pushPreparsedToken(blockStartOffset,currentOffset,STRING_CONTENT);
      }
      break;
    }
    if (isQuoteDiffers && !isEscaped) {
      if (currentChar == openQuote) {
        quotesLevel++;
      }
 else       if (currentChar == closeQuote) {
        quotesLevel--;
      }
    }
    isEscaped=(currentChar == '\\' && !isEscaped);
    currentOffset++;
  }
  return currentOffset;
}

int parseTrBlockContent ( int currentOffset , char openQuote , char closeQuote ) { int blockStartOffset = currentOffset ; CharSequence buffer = getBuffer ( ) ; int bufferEnd = getBufferEnd ( ) ; boolean isEscaped = false ; boolean isQuoteDiffers = openQuote != closeQuote ; int quotesLevel = 0 ; while ( currentOffset < bufferEnd ) { char currentChar = buffer . charAt ( currentOffset ) ; if ( ! isEscaped && quotesLevel == 0 && currentChar == closeQuote ) { if ( currentOffset > blockStartOffset ) { pushPreparsedToken ( blockStartOffset , currentOffset , STRING_CONTENT ) ; } break ; } if ( isQuoteDiffers && ! isEscaped ) { if ( currentChar == openQuote ) { quotesLevel ++ ; } else if ( currentChar == closeQuote ) { quotesLevel -- ; } } isEscaped = ( currentChar == '\\' && ! isEscaped ) ; currentOffset ++ ; } return currentOffset ; }
parsing tr block content till close quote
