int (int start) { if (start == myBufferEnd) { myState = AFTER_LAST_QUOTE; } if (myState == AFTER_LAST_QUOTE) return start; int i = start; if (myBuffer.charAt(i) == '\\') { LOG.assertTrue(myState == AFTER_FIRST_QUOTE, this); i++; if (i == myBufferEnd || myBuffer.charAt(i) == '\n' && !myCanEscapeEolOrFramingSpaces) { myState = AFTER_LAST_QUOTE; return i; } if (myAllowOctal && myBuffer.charAt(i) >= '0' && myBuffer.charAt(i) <= '7') { char first = myBuffer.charAt(i); i++; if (i < myBufferEnd && myBuffer.charAt(i) >= '0' && myBuffer.charAt(i) <= '7') { i++; if (i < myBufferEnd && first <= '3' && myBuffer.charAt(i) >= '0' && myBuffer.charAt(i) <= '7') { i++; } } return i; } if (myAllowHex && myBuffer.charAt(i) == 'x') { return locateHexEscapeSequence(start, i); } if (myBuffer.charAt(i) == 'u') { return locateUnicodeEscapeSequence(start, i); } int additionalLocation = locateAdditionalEscapeSequence(start, i); if (additionalLocation != -1) { return additionalLocation; } return i + 1; } LOG.assertTrue(myState == AFTER_FIRST_QUOTE || myBuffer.charAt(i) == myQuoteChar, this); while (i < myBufferEnd) { if (myBuffer.charAt(i) == '\\') { return i; } if (myState == AFTER_FIRST_QUOTE && myBuffer.charAt(i) == myQuoteChar) { if (i + 1 == myBufferEnd) myState = AFTER_LAST_QUOTE; return i + 1; } i++; myState = AFTER_FIRST_QUOTE; } return i; }