(*
- * 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
let op = normal_mcode op in
let right = expression right in
mkres e (Ast0.Assignment(left,op,right,simple)) left right
+ | Ast0.Sequence(left,op,right) ->
+ let left = expression left in
+ let op = normal_mcode op in
+ let right = expression right in
+ mkres e (Ast0.Sequence(left,op,right)) left right
| Ast0.CondExpr(exp1,why,exp2,colon,exp3) ->
let exp1 = expression exp1 in
let why = normal_mcode why in
| Ast0.UniqueExp(exp) ->
let exp = expression exp in
mkres e (Ast0.UniqueExp(exp)) exp exp
+ | Ast0.AsExpr _ -> failwith "not possible"
and expression_dots x = dots is_exp_dots None expression x
let ty = typeC ty in mkres t (Ast0.OptType(ty)) ty ty
| Ast0.UniqueType(ty) ->
let ty = typeC ty in mkres t (Ast0.UniqueType(ty)) ty ty
+ | Ast0.AsType _ -> failwith "not possible"
(* --------------------------------------------------------------------- *)
(* Variable declaration *)
let rp = normal_mcode rp in
let sem = normal_mcode sem in
mkres d (Ast0.MacroDecl(name,lp,args,rp,sem)) name (promote_mcode sem)
+ | Ast0.MacroDeclInit(name,lp,args,rp,eq,ini,sem) ->
+ let name = ident name in
+ let lp = normal_mcode lp in
+ let args = dots is_exp_dots (Some(promote_mcode lp)) expression args in
+ let rp = normal_mcode rp in
+ let eq = normal_mcode eq in
+ let ini = initialiser ini in
+ let sem = normal_mcode sem in
+ mkres d (Ast0.MacroDeclInit(name,lp,args,rp,eq,ini,sem))
+ name (promote_mcode sem)
| Ast0.TyDecl(ty,sem) ->
let ty = typeC ty in
let sem = normal_mcode sem in
| Ast0.UniqueDecl(decl) ->
let decl = declaration decl in
mkres d (Ast0.UniqueDecl(declaration decl)) decl decl
+ | Ast0.AsDecl _ -> failwith "not possible"
(* --------------------------------------------------------------------- *)
(* Initializer *)
| Ast0.UniqueIni(ini) ->
let ini = initialiser ini in
mkres i (Ast0.UniqueIni(ini)) ini ini
+ | Ast0.AsInit _ -> failwith "not possible"
and designator = function
Ast0.DesignatorField(dot,id) ->
| Ast0.OptStm(stm) ->
let stm = statement stm in mkres s (Ast0.OptStm(stm)) stm stm
| Ast0.UniqueStm(stm) ->
- let stm = statement stm in mkres s (Ast0.UniqueStm(stm)) stm stm in
+ let stm = statement stm in mkres s (Ast0.UniqueStm(stm)) stm stm
+ | Ast0.AsStmt _ -> failwith "not possible" in
Ast0.set_dots_bef_aft res
(match Ast0.get_dots_bef_aft res with
Ast0.NoDots -> Ast0.NoDots