let print_expr = function
ILexpCoerce( t, n ) -> "("^(print_c_type t)^")"^(print_id n)
| ILexpConstant c -> print_c_constants c
| ILexpBinop( o, n1, n2 ) -> (print_id n1)^" "^(print_binary_operator o)^" "^(print_id n2)
| ILexpUnaryop( o, n ) -> (print_unary_operator o)^" "^(print_id n)
| ILexpInvoke( lv, l ) -> (print_lvalue lv)^"("^(print_list print_id "," l)^")"
| ILexpAddress( lv, l ) -> "&"^(print_field l)
| ILexpArgument n -> "incoming_arg("^(string_of_int n)^")"
| ILexpIdent n -> print_id n