type visitor = {
exp : Eva__.Eva_ast_types.exp_node Eva__.Eva_ast_types.tag ->
Eva__.Eva_ast_types.exp_node Eva__.Eva_ast_types.tag;
lval : (Eva__.Eva_ast_types.lhost * Eva__.Eva_ast_types.offset)
Eva__.Eva_ast_types.tag ->
(Eva__.Eva_ast_types.lhost * Eva__.Eva_ast_types.offset)
Eva__.Eva_ast_types.tag;
varinfo : Frama_c_kernel.Cil_types.varinfo -> Frama_c_kernel.Cil_types.varinfo;
offset : Eva__.Eva_ast_types.offset -> Eva__.Eva_ast_types.offset;
}
type rewriter = {
rewrite_exp : visitor:visitor ->
Eva__.Eva_ast_types.exp_node Eva__.Eva_ast_types.tag ->
Eva__.Eva_ast_types.exp_node Eva__.Eva_ast_types.tag;
rewrite_lval : visitor:visitor ->
(Eva__.Eva_ast_types.lhost * Eva__.Eva_ast_types.offset)
Eva__.Eva_ast_types.tag ->
(Eva__.Eva_ast_types.lhost * Eva__.Eva_ast_types.offset)
Eva__.Eva_ast_types.tag;
rewrite_varinfo : visitor:visitor ->
Frama_c_kernel.Cil_types.varinfo ->
Frama_c_kernel.Cil_types.varinfo;
rewrite_offset : visitor:visitor ->
Eva__.Eva_ast_types.offset ->
Eva__.Eva_ast_types.offset;
}
val visit_exp :
rewriter ->
Eva__.Eva_ast_types.exp_node Eva__.Eva_ast_types.tag ->
Eva__.Eva_ast_types.exp_node Eva__.Eva_ast_types.tag
val visit_lval :
rewriter ->
(Eva__.Eva_ast_types.lhost * Eva__.Eva_ast_types.offset)
Eva__.Eva_ast_types.tag ->
(Eva__.Eva_ast_types.lhost * Eva__.Eva_ast_types.offset)
Eva__.Eva_ast_types.tag