private ArrayList parseListElement(String str, ValueParser parser)
			throws Exception {
		StringTokenizer st = new StringTokenizer(str, "/");
		int size = st.countTokens();
		if (size < 1 || size > 2) {
			throw new Exception("syntax error");
		}
		ArrayList values;
		try {
			values = parseRange(st.nextToken(), parser);
		} catch (Exception e) {
			throw new Exception("invalid range, " + e.getMessage());
		}
		if (size == 2) {
			String dStr = st.nextToken();
			int div;
			try {
				div = Integer.parseInt(dStr);
			} catch (NumberFormatException e) {
				throw new Exception("invalid divisor \"" + dStr + "\"");
			}
			if (div < 1) {
				throw new Exception("non positive divisor \"" + div + "\"");
			}
			ArrayList values2 = new ArrayList();
			for (int i = 0; i < values.size(); i += div) {
				values2.add(values.get(i));
			}
			return values2;
		} else {
			return values;
		}
	}