public static JSONValue parse(TokenReader tokens, String currentToken)
			throws IOException, ParseException {
		int c = currentToken.charAt(0);
		if (TokenReader.isNumber(c)) {
			return JSONNumber.parse(tokens, currentToken);
		}

		switch (c) {
		case 'n':
		case 't':
		case 'f':
			return JSONLiteral.parse(tokens, currentToken);
		case '"':
			return JSONString.parse(tokens, currentToken);
		case '[':
			return JSONArray.parse(tokens, currentToken);
		case '{':
			return JSONObject.parse(tokens, currentToken);
		}

		throw new IOException(currentToken + " is not a recognized JSON value");
	}