Coccinelle release-1.0.0-rc11
[bpt/coccinelle.git] / parsing_cocci / pretty_print_cocci.ml
index 7d0ab01..96236b5 100644 (file)
@@ -1,5 +1,7 @@
 (*
- * Copyright 2010, INRIA, University of Copenhagen
+ * Copyright 2012, INRIA
+ * Julia Lawall, Gilles Muller
+ * Copyright 2010-2011, INRIA, University of Copenhagen
  * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
  * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
  * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
@@ -230,6 +232,9 @@ let rec expression e =
   | Ast.Assignment(left,op,right,simple) ->
       expression left; print_string " "; mcode assignOp op;
       print_string " "; expression right
+  | Ast.Sequence(left,op,right) ->
+      expression left; mcode print_string op;
+      print_string " "; expression right
   | Ast.CondExpr(exp1,why,exp2,colon,exp3) ->
       expression exp1; print_string " "; mcode print_string why;
       print_option (function e -> print_string " "; expression e) exp2;
@@ -271,6 +276,7 @@ let rec expression e =
   | Ast.MetaExpr(name,_,keep,ty,form,inherited) ->
       mcode print_meta name; print_type keep inherited ty
   | Ast.MetaExprList(name,_,_,_) -> mcode print_meta name
+  | Ast.AsExpr(exp,asexp) -> expression exp; print_string "@"; expression asexp
   | Ast.EComma(cm) -> mcode print_string cm; print_space()
   | Ast.DisjExpr(exp_list) -> print_disj_list expression exp_list
   | Ast.NestExpr(starter,expr_dots,ender,Some whencode,multi) ->
@@ -352,9 +358,10 @@ and storage = function
 
 and fullType ft =
   match Ast.unwrap ft with
-    Ast.Type(cv,ty) ->
+    Ast.Type(_,cv,ty) ->
       print_option (function x -> mcode const_vol x; print_string " ") cv;
       typeC ty
+  | Ast.AsType(ty,asty) -> fullType ty; print_string "@"; fullType asty
   | Ast.DisjType(decls) -> print_disj_list fullType decls
   | Ast.OptType(ty) -> print_string "?"; fullType ty
   | Ast.UniqueType(ty) -> print_string "!"; fullType ty
@@ -442,7 +449,7 @@ and const_vol = function
 
 and print_named_type ty id =
   match Ast.unwrap ty with
-    Ast.Type(None,ty1) ->
+    Ast.Type(_,None,ty1) ->
       (match Ast.unwrap ty1 with
        Ast.FunctionPointer(ty,lp1,star,rp1,lp2,params,rp2) ->
          print_function_pointer (ty,lp1,star,rp1,lp2,params,rp2)
@@ -455,7 +462,10 @@ and print_named_type ty id =
            match Ast.unwrap ty with
              Ast.Array(ty,lb,size,rb) ->
                (match Ast.unwrap ty with
-                 Ast.Type(None,ty) ->
+                 Ast.Type(_,cv,ty) ->
+                   print_option
+                     (function x -> mcode const_vol x; print_string " ")
+                     cv;
                    loop ty
                      (function _ ->
                        k ();
@@ -473,6 +483,8 @@ and declaration d =
     Ast.MetaDecl(name,_,_) | Ast.MetaField(name,_,_)
   | Ast.MetaFieldList(name,_,_,_) ->
       mcode print_meta name
+  | Ast.AsDecl(decl,asdecl) -> declaration decl; print_string "@";
+      declaration asdecl
   | Ast.Init(stg,ty,id,eq,ini,sem) ->
       print_option (mcode storage) stg; print_named_type ty id;
       print_string " "; mcode print_string eq;
@@ -484,6 +496,12 @@ and declaration d =
       ident name; mcode print_string_box lp;
       dots (function _ -> ()) expression args;
       close_box(); mcode print_string rp; mcode print_string sem
+  | Ast.MacroDeclInit(name,lp,args,rp,eq,ini,sem) ->
+      ident name; mcode print_string_box lp;
+      dots (function _ -> ()) expression args;
+      close_box(); mcode print_string rp;
+      print_string " "; mcode print_string eq;
+      print_string " "; initialiser ini; mcode print_string sem
   | Ast.TyDecl(ty,sem) -> fullType ty; mcode print_string sem
   | Ast.Typedef(stg,ty,id,sem) ->
       mcode print_string stg; print_string " "; fullType ty; typeC id;
@@ -504,6 +522,8 @@ and initialiser i =
       mcode print_meta name; print_string " "
   | Ast.MetaInitList(name,_,_,_) ->
       mcode print_meta name; print_string " "
+  | Ast.AsInit(ini,asini) -> initialiser ini; print_string "@";
+      initialiser asini
   | Ast.InitExpr(exp) -> expression exp
   | Ast.ArInitList(lb,initlist,rb) ->
       mcode print_string lb; open_box 0;
@@ -723,6 +743,8 @@ and statement arity s =
   | Ast.Define(header,body) ->
       rule_elem arity header; print_string " ";
       dots force_newline (statement arity) body
+  | Ast.AsStmt(stm,asstm) ->
+      statement arity stm; print_string "@"; statement arity asstm
   | Ast.Nest(starter,stmt_dots,ender,whn,multi,_,_) ->
       print_string arity;
       nest_dots starter ender (statement arity)