1
module Ast0 = Ast0_cocci
2
module V0 = Visitor_ast0
3
module VT0 = Visitor_ast0_types
5
let compute_adjacency p =
7
let mcode (a,b,c,d,e,_) = (a,b,c,d,e,!counter) in
8
let string_mcode ((str,_,info,mc,_,_) as x) =
10
"..." | "<..." | "...>" | "<+..." | "...+>" ->
12
Ast0.MINUS _ -> mcode x
13
| Ast0.CONTEXT _ -> counter := !counter + 1; x
14
| _ -> failwith "unexpected mcode for ...")
18
{V0.rebuilder_functions with
19
VT0.rebuilder_meta_mcode = mcode;
20
VT0.rebuilder_string_mcode = string_mcode;
21
VT0.rebuilder_const_mcode = mcode;
22
VT0.rebuilder_assign_mcode = mcode;
23
VT0.rebuilder_fix_mcode = mcode;
24
VT0.rebuilder_unary_mcode = mcode;
25
VT0.rebuilder_binary_mcode = mcode;
26
VT0.rebuilder_cv_mcode = mcode;
27
VT0.rebuilder_sign_mcode = mcode;
28
VT0.rebuilder_struct_mcode = mcode;
29
VT0.rebuilder_storage_mcode = mcode;
30
VT0.rebuilder_inc_mcode = mcode;} in
31
List.map fn.VT0.rebuilder_rec_top_level p