int readAttType() throws java.lang.Exception
    {
        String typeString;
        Integer type;

        if (tryRead('(')) {
            parseEnumeration();
            return ATTRIBUTE_ENUMERATED;
        } else {
            typeString = readNmtoken(true);
            if (typeString.equals("NOTATION")) {
                parseNotationType();
            }
            type = (Integer) attributeTypeHash.get(typeString);
            if (type == null) {
                error("illegal attribute type", typeString, null);
                return ATTRIBUTE_UNDECLARED;
            } else {
                return type.intValue();
            }
        }
    }