X-Git-Url: https://git.hcoop.net/bpt/coccinelle.git/blobdiff_plain/d3f655c619238baba11f20bc9f55769e66d3e428..7fe62b653dbe13c8fc74c58c3ca4b8af523c1637:/parsing_cocci/unparse_ast0.ml diff --git a/parsing_cocci/unparse_ast0.ml b/parsing_cocci/unparse_ast0.ml index 2a45b3c..4e108b5 100644 --- a/parsing_cocci/unparse_ast0.ml +++ b/parsing_cocci/unparse_ast0.ml @@ -43,18 +43,21 @@ let print_between = Common.print_between (* --------------------------------------------------------------------- *) (* Positions *) -let meta_pos = function - Ast0.MetaPos(name,_,_) -> - print_string "@"; - let (_,name) = Ast0.unwrap_mcode name in - print_string name - | Ast0.NoMetaPos -> () +let meta_pos l = + List.iter + (function + Ast0.MetaPos(name,_,_) -> + print_string "@"; + let (_,name) = Ast0.unwrap_mcode name in + print_string name) + l (* --------------------------------------------------------------------- *) (* Modified code *) let mcodekind brackets fn x info mc = - let print = function Ast.Noindent s | Ast.Indent s -> print_string s in + let print = function + Ast.Noindent s | Ast.Indent s | Ast.Space s -> print_string s in List.iter (function (s,_) -> print s) info.Ast0.strings_before; (match mc with Ast0.MINUS(plus_stream) -> @@ -70,7 +73,9 @@ let mcodekind brackets fn x info mc = then fn x else (print_string "-"; print_string lb; fn x; print_string rb); - U.print_anything ">>> " plus_stream + (match plus_stream with + Ast.NOREPLACEMENT -> () + | Ast.REPLACEMENT(plus_stream,_) -> U.print_anything ">>> " plus_stream) | Ast0.CONTEXT(plus_streams) -> let (lb,rb) = if !quiet @@ -150,7 +155,7 @@ let rec ident i = (function _ -> match Ast0.unwrap i with Ast0.Id(name) -> mcode print_string name - | Ast0.MetaId(name,_,_) -> mcode print_meta name + | Ast0.MetaId(name,_,_,_) -> mcode print_meta name | Ast0.MetaFunc(name,_,_) -> mcode print_meta name | Ast0.MetaLocalFunc(name,_,_) -> mcode print_meta name | Ast0.DisjId(_,id_list,_,_) -> do_disj id_list ident @@ -213,6 +218,9 @@ let rec expression e = mcode print_string_box lp; typeC ty; close_box(); mcode print_string rp | Ast0.TypeExp(ty) -> typeC ty + | Ast0.Constructor(lp,ty,rp,init) -> + mcode print_string_box lp; typeC ty; close_box(); + mcode print_string rp; initialiser init | Ast0.MetaErr(name,_,_) -> mcode print_meta name | Ast0.MetaExpr(name,_,ty,_,pure) -> mcode print_meta name; print_types ty(*; @@ -329,7 +337,9 @@ and declaration d = print_context d (function _ -> match Ast0.unwrap d with - Ast0.MetaDecl(name,_) | Ast0.MetaField(name,_) -> mcode print_meta name + Ast0.MetaDecl(name,_) | Ast0.MetaField(name,_) + | Ast0.MetaFieldList(name,_,_) -> + mcode print_meta name | Ast0.Init(stg,ty,id,eq,ini,sem) -> print_option (mcode U.storage) stg; print_named_type ty id; @@ -370,6 +380,7 @@ and initialiser i = (function _ -> match Ast0.unwrap i with Ast0.MetaInit(name,_)-> mcode print_meta name; print_string " " + | Ast0.MetaInitList(name,_,_)-> mcode print_meta name; print_string " " | Ast0.InitExpr(exp) -> expression exp | Ast0.InitList(lb,initlist,rb,ordered) -> (*doesn't show commas dropped in unordered case*) @@ -441,13 +452,14 @@ and statement arity s = dots force_newline (statement arity) body; end_block(); print_string arity; mcode print_string rbrace | Ast0.ExprStatement(exp,sem) -> - print_string arity; expression exp; mcode print_string sem + print_string arity; print_option expression exp; + mcode print_string sem | Ast0.IfThen(iff,lp,exp,rp,branch1,(info,aft)) -> print_string arity; mcode print_string iff; print_string " "; mcode print_string_box lp; expression exp; close_box(); mcode print_string rp; print_string " "; statement arity branch1; - mcode (function _ -> ()) ((),(),info,aft,ref Ast0.NoMetaPos,-1) + mcode (function _ -> ()) ((),(),info,aft,ref [],-1) | Ast0.IfThenElse(iff,lp,exp,rp,branch1,els,branch2,(info,aft)) -> print_string arity; mcode print_string iff; print_string " "; mcode print_string_box lp; @@ -455,13 +467,13 @@ and statement arity s = statement arity branch1; print_string arity; mcode print_string els; print_string " "; statement arity branch2; - mcode (function _ -> ()) ((),(),info,aft,ref Ast0.NoMetaPos,-1) + mcode (function _ -> ()) ((),(),info,aft,ref [],-1) | Ast0.While(whl,lp,exp,rp,body,(info,aft)) -> print_string arity; mcode print_string whl; print_string " "; mcode print_string_box lp; expression exp; close_box(); mcode print_string rp; print_string " "; statement arity body; - mcode (function _ -> ()) ((),(),info,aft,ref Ast0.NoMetaPos,-1) + mcode (function _ -> ()) ((),(),info,aft,ref [],-1) | Ast0.Do(d,body,whl,lp,exp,rp,sem) -> print_string arity; mcode print_string d; print_string " "; statement arity body; @@ -476,14 +488,14 @@ and statement arity s = print_option expression e2; mcode print_string sem2; print_option expression e3; close_box(); mcode print_string rp; print_string " "; statement arity body; - mcode (function _ -> ()) ((),(),info,aft,ref Ast0.NoMetaPos,-1) + mcode (function _ -> ()) ((),(),info,aft,ref [],-1) | Ast0.Iterator(nm,lp,args,rp,body,(info,aft)) -> print_string arity; ident nm; print_string " "; mcode print_string_box lp; let _ = dots (function _ -> ()) expression args in close_box(); mcode print_string rp; print_string " "; statement arity body; - mcode (function _ -> ()) ((),(),info,aft,ref Ast0.NoMetaPos,-1) + mcode (function _ -> ()) ((),(),info,aft,ref [],-1) | Ast0.Switch(switch,lp,exp,rp,lb,decls,cases,rb) -> print_string arity; mcode print_string switch; print_string " "; @@ -622,8 +634,8 @@ let top_level t = Ast0.FILEINFO(old_file,new_file) -> print_string "--- "; mcode print_string old_file; force_newline(); print_string "+++ "; mcode print_string new_file - | Ast0.DECL(stmt) -> statement "" stmt - | Ast0.CODE(stmt_dots) -> + | Ast0.NONDECL(stmt) -> statement "" stmt + | Ast0.CODE(stmt_dots) | Ast0.TOPCODE(stmt_dots) -> dots force_newline (statement "") stmt_dots | Ast0.ERRORWORDS(exps) -> print_string "error words = ["; @@ -667,7 +679,7 @@ let unparse_anything x = | Ast0.IsoWhenTag(x) -> U.print_when_modif x | Ast0.IsoWhenTTag(e) -> expression e | Ast0.IsoWhenFTag(e) -> expression e - | Ast0.MetaPosTag(var) -> meta_pos var); + | Ast0.MetaPosTag(var) -> meta_pos [var]); quiet := q; print_newline()