@Override
	public AbstractComponent parse(String string) throws BookParseException {
		if (string == null) {
			throw new BookParseException("String is null");
		}
		try {
			TextComponent component = (TextComponent) factory
					.newComponent(EComponentType.WORD);
			Pattern letterPattern = Pattern.compile(LETTER_REGEX,
					Pattern.UNICODE_CHARACTER_CLASS);
			Matcher letterMatcher = letterPattern.matcher(string);
			while (letterMatcher.find()) {
				component.addComponent(characterParser.parse(letterMatcher
						.group()));
			}
			return component;
		} catch (ComponentException e) {
			throw new BookParseException("Word parser failed", e);
		}
	}