method dot_expr =
fun f e ->
let () = o#node f e Ast.loc_of_expr
in
match e with
| Ast.ExAcc (_, e,
(Ast.ExId (_, (Ast.IdLid (_, "val"))))) ->
pp f "@[<2>!@,%a@]" o#simple_expr e
| Ast.ExAcc (_, e1, e2) ->
pp f "@[<2>%a.@,%a@]" o#dot_expr e1 o#dot_expr e2
| Ast.ExAre (_, e1, e2) ->
pp f "@[<2>%a.@,(%a)@]" o#dot_expr e1 o#expr e2
| Ast.ExSte (_, e1, e2) ->
pp f "%a.@[<1>[@,%a@]@,]" o#dot_expr e1 o#expr e2
| Ast.ExSnd (_, e, s) ->
pp f "@[<2>%a#@,%s@]" o#dot_expr e s
| e -> o#simple_expr f e