private String associativeOperator(List tokens, BinaryOperator op) {
        String result = "";
        Token token = null;
        Iterator it = tokens.iterator();
        while (it.hasNext() && result.equals("")) { //find first non-null token
            token = (Token)it.next();
            if (token.getVariantValue()==null) continue; //skip null-token
            result = token.getVariantValue().trim();
        }
        while (it.hasNext() && !result.equals("")) {
            token = (Token)it.next();
            if (token.getVariantValue()==null) continue; //skip null-token
            String string = token.getVariantValue().trim();
            result = op.applyTo(result,string);
        }
        return result;
    }