let rec print_parsed_expression fmt = function
| PVar s -> Format.fprintf fmt "%s" s
| PPrm (f,s) -> Format.fprintf fmt "%s().%s" f s
| PCst (IntConstant s) -> Format.fprintf fmt "%s" s
| PCst (FloatConstant s) -> Format.fprintf fmt "%s" s
| PCst (StringConstant s) -> Format.fprintf fmt "%S" s
| PCst (WStringConstant s) -> Format.fprintf fmt "%S" s
| PBinop(bop,e1,e2) ->
Format.fprintf fmt "(@[%a@])@ %a@ (@[%a@])"
print_parsed_expression e1 Cil.d_binop (Logic_typing.type_binop bop)
print_parsed_expression e2
| PUnop(uop,e) -> Format.fprintf fmt "%s@;(@[%a@])"
(string_of_unop uop)
print_parsed_expression e
| PArrget(e1,e2) -> Format.fprintf fmt "%a@;[@(%a@]]"
print_parsed_expression e1 print_parsed_expression e2
| PField(e,s) -> Format.fprintf fmt "%a.%s" print_parsed_expression e s
| PArrow(e,s) -> Format.fprintf fmt "%a->%s" print_parsed_expression e s