[Cocci] insert after #include
Julia Lawall
julia at diku.dk
Thu Mar 25 13:43:24 CET 2010
On Thu, 25 Mar 2010, Aaen, Andreas.Bach wrote:
> Thanks,
>
> I have applied this patch. It works fine.
>
> Btw. If anyone have an rpm spec file for menhir, then I would like a copy.
Perhaps ask the menhir people. For what it is worth, it is part of
ubuntu.
julia
> Regards
> Andreas Bach Aaen
>
> -----Original Message-----
> From: Julia Lawall [mailto:julia at diku.dk]
> Sent: 24. marts 2010 22:56
> To: Aaen, Andreas.Bach
> Cc: cocci at diku.dk
> Subject: Re: [Cocci] insert after #include
>
> Fixed. A patch for 0.2.2 is below.
>
> julia
>
> --------------
>
> diff -u -p a/parsing_cocci/parser_cocci_menhir.mly b/parsing_cocci/parser_cocci_menhir.mly
> --- a/parsing_cocci/parser_cocci_menhir.mly 2010-03-12 16:34:04.000000000 +0100
> +++ b/parsing_cocci/parser_cocci_menhir.mly 2010-03-24 22:50:57.000000000 +0100
> @@ -680,6 +680,8 @@ includes:
> P.clt2mcode
> (Ast.NonLocal (Parse_aux.str2inc (P.id2name $1)))
> (P.drop_bef clt))) }
> +| d=defineop TLineEnd
> + { d (Ast0.wrap(Ast0.DOTS([]))) }
> | d=defineop t=ctype TLineEnd
> { let ty = Ast0.wrap(Ast0.TopExp(Ast0.wrap(Ast0.TypeExp(t)))) in
> d (Ast0.wrap(Ast0.DOTS([ty]))) }
> diff -u -p a/parsing_cocci/compute_lines.ml b/parsing_cocci/compute_lines.ml
> --- a/parsing_cocci/compute_lines.ml 2010-03-12 16:34:05.000000000 +0100
> +++ b/parsing_cocci/compute_lines.ml 2010-03-24 22:51:34.000000000 +0100
> @@ -205,17 +205,21 @@ let dots is_dots prev fn d =
> (* --------------------------------------------------------------------- *)
> (* Identifier *)
>
> -let rec ident i =
> +(* for #define name, with no value, to compute right side *) let
> +mkidres a b c d r = (mkres a b c d,r)
> +
> +let rec full_ident i =
> match Ast0.unwrap i with
> Ast0.Id(name) as ui ->
> - let name = promote_mcode name in mkres i ui name name
> + let name = promote_mcode name in mkidres i ui name name name
> | Ast0.MetaId(name,_,_)
> | Ast0.MetaFunc(name,_,_) | Ast0.MetaLocalFunc(name,_,_) as ui ->
> - let name = promote_mcode name in mkres i ui name name
> + let name = promote_mcode name in mkidres i ui name name name
> | Ast0.OptIdent(id) ->
> - let id = ident id in mkres i (Ast0.OptIdent(id)) id id
> + let (id,r) = full_ident id in mkidres i (Ast0.OptIdent(id)) id id r
> | Ast0.UniqueIdent(id) ->
> - let id = ident id in mkres i (Ast0.UniqueIdent(id)) id id
> + let (id,r) = full_ident id in mkidres i (Ast0.UniqueIdent(id)) id id r
> +and ident i = let (id,_) = full_ident i in id
>
> (* --------------------------------------------------------------------- *)
> (* Expression *)
> @@ -593,14 +597,14 @@ let rec define_param p =
> let res = define_param dp in
> mkres p (Ast0.UniqueDParam(res)) res res
>
> -let define_parameters x =
> +let define_parameters x id =
> match Ast0.unwrap x with
> - Ast0.NoParams -> x (* no info, should be ignored *)
> + Ast0.NoParams -> (x,id) (* no info, should be ignored *)
> | Ast0.DParams(lp,dp,rp) ->
> let dp = dots is_define_param_dots None define_param dp in
> let l = promote_mcode lp in
> let r = promote_mcode rp in
> - mkres x (Ast0.DParams(lp,dp,rp)) l r
> + (mkres x (Ast0.DParams(lp,dp,rp)) l r, r)
>
> (* --------------------------------------------------------------------- *)
> (* Top-level code *)
> @@ -791,9 +795,9 @@ let rec statement s =
> | Ast0.Include(inc,stm) ->
> mkres s (Ast0.Include(inc,stm)) (promote_mcode inc) (promote_mcode stm)
> | Ast0.Define(def,id,params,body) ->
> - let id = ident id in
> - let params = define_parameters params in
> - let body = dots is_stm_dots None statement body in
> + let (id,right) = full_ident id in
> + let (params,prev) = define_parameters params right in
> + let body = dots is_stm_dots (Some prev) statement body in
> mkres s (Ast0.Define(def,id,params,body)) (promote_mcode def) body
> | Ast0.OptStm(stm) ->
> let stm = statement stm in mkres s (Ast0.OptStm(stm)) stm stm
>
>
>
More information about the Cocci
mailing list