private int cobolWordOrNumber(final Token token, final String text,
			final int start, final int length) {

		int match = tryCobolWord(text, start, length);
		if (match > 0) {
			// TODO Cobol word.
			final Token cobolWord = token.subtoken(start, start + match);
			cobolWord.addTag(AreaTag.PROGRAM_TEXT_AREA);
			cobolWord.addTag(SyntacticTag.CHARACTER_STRING);
			if (LOGGER.isTraceEnabled()) {
				LOGGER.trace("Cobol word: " + cobolWord);
			}
			enqueue(cobolWord);
			return start + match;
		}

		match = tryNumericLiteral(text, start, length);
		if (match > 0) {
			// TODO Cobol word.
			final Token numericLiteral = token.subtoken(start, start + match);
			numericLiteral.addTag(AreaTag.PROGRAM_TEXT_AREA);
			numericLiteral.addTag(SyntacticTag.CHARACTER_STRING);
			numericLiteral
					.addTag(isDecimal(numericLiteral) ? SyntacticTag.DECIMAL_LITERAL
							: SyntacticTag.INTEGER_LITERAL);
			numericLiteral.addTag(SyntacticTag.UNSIGNED);
			if (LOGGER.isTraceEnabled()) {
				LOGGER.trace("Unsigned numeric literal: " + numericLiteral);
			}
			enqueue(numericLiteral);
			return start + match;
		}

		return start;
	}