                     throw JsonParserError(code: ErrorCode.ParsingError.code, domain: JSValueErrorDomain, userInfo: info)
                 }
             
-            case (_, Token.HorizontalTab):
-                    let info = [
-                        ErrorKeys.LocalizedDescription: ErrorCode.ParsingError.message,
-                        ErrorKeys.LocalizedFailureReason: "An unescaped TAB character is not allowed in a string."]
-                    throw JsonParserError(code: ErrorCode.ParsingError.code, domain: JSValueErrorDomain, userInfo: info)
-
-            case (_, Token.Linefeed):
-                    let info = [
-                        ErrorKeys.LocalizedDescription: ErrorCode.ParsingError.message,
-                        ErrorKeys.LocalizedFailureReason: "An unescaped linefeed character is not allowed in a string."]
-                    throw JsonParserError(code: ErrorCode.ParsingError.code, domain: JSValueErrorDomain, userInfo: info)
-
-            case (_, Token.CarriageReturn):
-                    let info = [
-                        ErrorKeys.LocalizedDescription: ErrorCode.ParsingError.message,
-                        ErrorKeys.LocalizedFailureReason: "An unescaped carriage return character is not allowed in a string."]
-                    throw JsonParserError(code: ErrorCode.ParsingError.code, domain: JSValueErrorDomain, userInfo: info)
-
-            case (_, Token.Formfeed):
-                    let info = [
-                        ErrorKeys.LocalizedDescription: ErrorCode.ParsingError.message,
-                        ErrorKeys.LocalizedFailureReason: "An unescaped formfeed character is not allowed in a string."]
+            case (_, Token.Null...Token.ShiftIn):
+                    let info = [
+                        ErrorKeys.LocalizedDescription: ErrorCode.ParsingError.message,
+                        ErrorKeys.LocalizedFailureReason: "An unescaped control character is not allowed in a string."]
                     throw JsonParserError(code: ErrorCode.ParsingError.code, domain: JSValueErrorDomain, userInfo: info)
 
             case (_, Token.Backslash):

    fileprivate init() {}

    // Control Codes
    static let Linefeed         = UInt8(10)
    static let Backspace        = UInt8(8)
    static let Formfeed         = UInt8(12)
    static let CarriageReturn   = UInt8(13)
    static let HorizontalTab    = UInt8(9)

    // Tokens for JSON
    static let LeftBracket      = UInt8(91)


    /// Determines if the `UnicodeScalar` represents one of the standard Unicode whitespace characters.
    ///
    /// :return: `true` if the scalar is a valid JSON whitespace character; `false` otherwise.
    func isWhitespace() -> Bool {
        switch self {
        case 0x09: return true /* horizontal tab */
        case 0x0A: return true /* line feed or new line */
        case 0x20: return true /* space */
        case 0x0D: return true /* carriage return */
        default: return false
        }
    }

    /// Determines if the `UnicodeScalar` represents a numeric digit.
