added unions to c-expr