public void init(String ruleSpec) throws MaltChainedException {
		String spec = ruleSpec.trim();
		String[] items = spec.split("\t");
		if (items.length != 3) {
			throw new HeadRuleException("The specification of the head rule is not correct '"+ruleSpec+"'. ");
		}
		
		int index = items[0].indexOf(':');
		if (index != -1) {
			SymbolTable t = getDataFormatInstance().getSymbolTables().getSymbolTable(items[0].substring(0, index));
			if (t == null) {
				throw new HeadRuleException("The specification of the head rule is not correct '"+ruleSpec+"'. ");
			}
			setTable(t);
			setSymbolCode(table.addSymbol(items[0].substring(index+1)));
		} else {
			throw new HeadRuleException("The specification of the head rule is not correct '"+ruleSpec+"'. ");
		}
		if (items[1].charAt(0) == 'r') {
			defaultDirection = Direction.RIGHT;	
		} else if (items[1].charAt(0) == 'l') {
			defaultDirection = Direction.LEFT;
		} else {
			throw new HeadRuleException("Could not determine the default direction of the head rule '"+ruleSpec+"'. ");
		}
		if (items[2].length() > 1) {
			if (items[2].indexOf(';') == -1) {
				add(new PrioList(this, items[2]));
			} else {
				String[] lists = items[2].split(";");
				for (int i = 0; i < lists.length; i++) {
					add(new PrioList(this, lists[i]));
				}
			}
		}
	}