public InterpretedLine(String source) throws AssemblyException {
		this.source = source;
		List<String> tokens = tokenize(source);
		switch(tokens.size()) {
		case 3: 
			label = tokens.get(0);
			opCode = parseOpCode(tokens.get(1), true);
			loc = tokens.get(2);
			break;
		case 2: 
			OpCode op =  parseOpCode(tokens.get(0), false);
			if (op == null) { //Must be label OPCODE
				label = tokens.get(0);
				opCode = parseOpCode(tokens.get(1), true);
				loc = null;
			}
			else { //Must be OPCODE loc
				label = null;
				opCode = op;
				loc = tokens.get(1);
			}
			break;
		default:
			throw new AssemblyException("Invalid line: " + source);
		}
		validateOpCode();
	}