private void analyseOperandFormat(String line) throws AssemblerException {

		line = line.trim();

		String[] mnemFormatSplit = line.split("\\s+"); 
		ArrayList<String> mnemFormatList = new ArrayList<String>();

		for (String formatTerm : mnemFormatSplit) {
			formatTerm = formatTerm.replaceAll("^,+", "");
			formatTerm = formatTerm.replaceAll(",+$", "");
			
			if(!formatTerm.isEmpty())
				mnemFormatList.add(formatTerm);
		}

		// Check format token has been defined somewhere in tree
		ArrayList<String> assemblyOpTreeTokens = data.getAssemblyOpTree().getAssemblyOpTreeTokens();

		for (String formatToken : mnemFormatList) {
			if (!assemblyOpTreeTokens.contains(formatToken)) {				
				abortMnem = true;				
				throw new AssemblerException(
						"MnemonicData error: Operand format token \""
								+ formatToken
								+ "\" not found in AssemblyOpTree.");
			}
		}

		currentMnemFormat = new OperandFormat();
		currentMnemFormat.setMnemFormat(line);
		currentMnemonic.getOperandsFormats().add(line);
		
		if(currentMnemonic.getOperandFormatHash().get(line) != null)
			throw new AssemblerException(
					"MnemonicData error: Operand format \"" + line + "\" already defined for mnemonic \"" + currentMnemonic.getMnemonic() + "\".");
		
		currentMnemonic.getOperandFormatHash().put(line, currentMnemFormat);
	}