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