private void precompileOperation(int index)
	{
		OperationNode op = (OperationNode) args.get(index);
		if (op.isPrefixOperation())
		{
			Node arg = args.get(index+1);
			if (op.getSourcePos() < arg.getSourcePos()-1)
				throw new EvaluationException(arg, "Prefix-Operator must not seperate from operand.");
			
			if (arg instanceof Operation)
				args.set(index, new PrefixOperation(op, arg));
			else
				args.set(index, Symbols.resolveOneArg(op, arg) );
			
			args.remove(index+1);
		}
		else if (op.isInfixOperation())
		{
			Node left = args.get(index-1);
			Node right = args.get(index+1);
			if (op.getOperator() == Operator.DOT || op.getOperator() == Operator.INDEX)
			{
				if (isWhiteSpace(string.charAt(op.getSourcePos()-1)))
					throw new EvaluationException(op, op.getOperator().name() + "-Operator must not seperate from operand.");
			}
			
			if (left instanceof Operation || right instanceof Operation)
				args.set(index-1, new InfixOperation(left, op, right));
			else
				args.set(index-1, Symbols.resolveTwoArgs(op, left, right) );
			
			args.remove(index+1);
			args.remove(index);
		}
		else
		{
			throw new UnsupportedOperationException("Operation not implemented.");
		}
	}