X-Git-Url: http://git.hcoop.net/bpt/coccinelle.git/blobdiff_plain/9f8e26f459677a621822918b7539ae94214621ac..785a3008ddade80f642257bb47d43158ac8b8311:/parsing_cocci/unparse_ast0.ml diff --git a/parsing_cocci/unparse_ast0.ml b/parsing_cocci/unparse_ast0.ml index 42e4acd..1e75e32 100644 --- a/parsing_cocci/unparse_ast0.ml +++ b/parsing_cocci/unparse_ast0.ml @@ -1,26 +1,5 @@ -(* - * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen - * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix - * This file is part of Coccinelle. - * - * Coccinelle is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, according to version 2 of the License. - * - * Coccinelle is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Coccinelle. If not, see . - * - * The authors reserve the right to distribute this or future versions of - * Coccinelle under other licenses. - *) - - open Format +module Ast = Ast_cocci module Ast0 = Ast0_cocci module U = Pretty_print_cocci @@ -51,7 +30,8 @@ let meta_pos = function (* Modified code *) let mcodekind brackets fn x info mc = - List.iter (function (s,_) -> print_string s) info.Ast0.strings_before; + let print = function Ast.Noindent s | Ast.Indent s -> print_string s in + List.iter (function (s,_) -> print s) info.Ast0.strings_before; (match mc with Ast0.MINUS(plus_stream) -> let (lb,rb) = @@ -91,7 +71,7 @@ let mcodekind brackets fn x info mc = let (plus_streams,_,_) = !plus_streams in U.print_around (function x -> print_string lb; fn x; print_string rb) x plus_streams); - List.iter (function (s,_) -> print_string s) info.Ast0.strings_after + List.iter (function (s,_) -> print s) info.Ast0.strings_after let mcode fn (x,_,info,mc,pos,adj) = let fn x = fn x; meta_pos !pos in @@ -102,7 +82,8 @@ let print_context x fn = (Ast0.get_mcodekind x) let print_meta (ctx,name) = - if !full_ids then (print_string ctx; print_string ":"); + (if !full_ids + then (print_string ctx; print_string ":")); print_string name (* --------------------------------------------------------------------- *) @@ -319,7 +300,8 @@ and declaration d = print_context d (function _ -> match Ast0.unwrap d with - Ast0.Init(stg,ty,id,eq,ini,sem) -> + Ast0.MetaDecl(name,_) | Ast0.MetaField(name,_) -> mcode print_meta name + | Ast0.Init(stg,ty,id,eq,ini,sem) -> print_option (mcode U.storage) stg; print_named_type ty id; print_string " "; @@ -635,33 +617,24 @@ let unparse_anything x = | Ast0.DotsStmtTag(d) -> print_string "StmDots:"; force_newline(); statement_dots d - | Ast0.DotsDeclTag(d) -> - declaration_dots d - | Ast0.DotsCaseTag(d) -> - case_dots d - | Ast0.IdentTag(d) -> - ident d + | Ast0.DotsDeclTag(d) -> declaration_dots d + | Ast0.DotsCaseTag(d) -> case_dots d + | Ast0.IdentTag(d) -> ident d | Ast0.ExprTag(d) | Ast0.ArgExprTag(d) | Ast0.TestExprTag(d) -> print_string "Exp:"; force_newline(); expression d - | Ast0.TypeCTag(d) -> - typeC d - | Ast0.ParamTag(d) -> - parameterTypeDef d - | Ast0.InitTag(d) -> - initialiser d - | Ast0.DeclTag(d) -> - declaration d - | Ast0.StmtTag(d) -> + | Ast0.TypeCTag(d) -> typeC d + | Ast0.ParamTag(d) -> parameterTypeDef d + | Ast0.InitTag(d) -> initialiser d + | Ast0.DeclTag(d) -> declaration d + | Ast0.StmtTag(d) -> print_string "Stm:"; force_newline(); statement "" d - | Ast0.CaseLineTag(d) -> - case_line "" d - | Ast0.TopTag(d) -> - top_level d - | Ast0.IsoWhenTag(x) -> U.print_when_modif x - | Ast0.IsoWhenTTag(e) -> expression e - | Ast0.IsoWhenFTag(e) -> expression e + | Ast0.CaseLineTag(d) -> case_line "" d + | Ast0.TopTag(d) -> top_level d + | Ast0.IsoWhenTag(x) -> U.print_when_modif x + | Ast0.IsoWhenTTag(e) -> expression e + | Ast0.IsoWhenFTag(e) -> expression e | Ast0.MetaPosTag(var) -> meta_pos var); quiet := q; print_newline()