IElementType () { if (myStart >= myEnd) return null; if (myBuffer.charAt(myStart) != '\\') { mySeenEscapedSpacesOnly = false; return myOriginalLiteralToken; } if (myStart + 1 >= myEnd) { return handleSingleSlashEscapeSequence(); } char nextChar = myBuffer.charAt(myStart + 1); mySeenEscapedSpacesOnly &= nextChar == ' '; if (myCanEscapeEolOrFramingSpaces && (nextChar == '\n' || nextChar == ' ' && (mySeenEscapedSpacesOnly || isTrailingSpace(myStart+2)))) { return StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN; } if (nextChar == 'u') { return getUnicodeEscapeSequenceType(); } if (nextChar == 'x' && myAllowHex) { return getHexCodedEscapeSeq(); } switch (nextChar) { case '0': if (shouldAllowSlashZero()) return StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN; case '1': case '2': case '3': case '4': case '5': case '6': case '7': if (!myAllowOctal) return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN; case 'n': case 'r': case 'b': case 't': case 'f': case '\'': case '\"': case '\\': return StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN; } if (myAdditionalValidEscapes != null && myAdditionalValidEscapes.indexOf(nextChar) != -1) { return StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN; } return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN; }