* Re: [Cocci] [PATCH] Python scripts also support comments metavar
[not found] <MAXPR01MB39833362F9B533717A9DE485B21B0@MAXPR01MB3983.INDPRD01.PROD.OUTLOOK.COM>
@ 2019-06-02 8:38 ` Julia Lawall
0 siblings, 0 replies; only message in thread
From: Julia Lawall @ 2019-06-02 8:38 UTC (permalink / raw)
To: Wen Yang; +Cc: cocci
Applied, thanks.
julia
On Sun, 2 Jun 2019, Wen Yang wrote:
> Extending the comment support to python
>
> Signed-off-by: Wen Yang <yellowriver2010@hotmail.com>
> ---
> demos/comments.cocci | 28 +++++++++++++++++++++++++++-
> python/coccilib/elems.py | 6 ++++++
> python/yes_pycocci.ml | 22 +++++++++++++++++++++-
> 3 files changed, 54 insertions(+), 2 deletions(-)
>
> diff --git a/demos/comments.cocci b/demos/comments.cocci
> index cdca955b..abfcc6b8 100644
> --- a/demos/comments.cocci
> +++ b/demos/comments.cocci
> @@ -33,4 +33,30 @@ Printf.printf "c3a: %s\n\n" (String.concat " " c3a);
> Printf.printf "c4b: %s\n" (String.concat " " c4b);
> Printf.printf "c4m: %s\n" (String.concat " " c4m);
> Printf.printf "c4a: %s\n\n" (String.concat " " c4a);
> -Printf.printf "-------------------\n"
> \ No newline at end of file
> +Printf.printf "-------------------\n"
> +
> +@script:python@
> +c1 << r.c1;
> +c2 << r.c2;
> +c3 << r.c3;
> +c4 << r.c4;
> +@@
> +
> +print("python test begin ...")
> +print("c1b: ", c1[0].before)
> +print("c1m: ", c1[0].middle)
> +print("c1a: ", c1[0].after)
> +
> +print("c2b: ", c2[0].before)
> +print("c2m: ", c2[0].middle)
> +print("c2a: ", c2[0].after)
> +
> +print("c3b: ", c3[0].before)
> +print("c3m: ", c3[0].middle)
> +print("c3a: ", c3[0].after)
> +
> +print("c4b: ", c4[0].before)
> +print("c4m: ", c4[0].middle)
> +print("c4a: ", c4[0].after)
> +
> +print("python test end \n")
> diff --git a/python/coccilib/elems.py b/python/coccilib/elems.py
> index ddb508b0..4d11a79a 100644
> --- a/python/coccilib/elems.py
> +++ b/python/coccilib/elems.py
> @@ -11,6 +11,12 @@ class Location:
> self.line_end = line_end
> self.column_end = column_end
>
> +class Comment:
> + def __init__(self, comment_before, comment_middle, comment_after):
> + self.before = comment_before
> + self.middle = comment_middle
> + self.after = comment_after
> +
> class ElemBase:
> def __init__(self):
> pass
> diff --git a/python/yes_pycocci.ml b/python/yes_pycocci.ml
> index 0e0e654c..038ad2a9 100644
> --- a/python/yes_pycocci.ml
> +++ b/python/yes_pycocci.ml
> @@ -366,7 +366,27 @@ let construct_variables mv e =
> let pylocs = Py.Tuple.of_list locs in
> let _ = build_variable py pylocs in
> ()
> - | Some (_, Ast_c.MetaComValList l) -> failwith "comments not yet supported"
> + | Some (_, Ast_c.MetaComValList l) ->
> + let coms =
> + List.map
> + (function (bef, mid, aft) ->
> + let com_strings l =
> + List.rev
> + (List.fold_left
> + (fun prev cur ->
> + match cur with
> + (Token_c.TComment,_) -> (Token_c.str_of_token cur) :: prev
> + | (Token_c.TCommentCpp _,_) -> (Token_c.str_of_token cur) :: prev
> + | _ -> prev)
> + [] l) in
> + pycocci_instantiate_class "coccilib.elems.Comment"
> + (Py.Tuple.of_list_map Py.String.of_string
> + [String.concat "\n" (com_strings bef);
> + String.concat "\n" (com_strings mid);
> + String.concat "\n" (com_strings aft)])) l in
> + let pycoms = Py.Tuple.of_list coms in
> + let _ = build_variable py pycoms in
> + ()
> | Some (_,binding) ->
> let _ =
> build_variable py
> --
> 2.21.0
>
>
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-06-02 8:39 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <MAXPR01MB39833362F9B533717A9DE485B21B0@MAXPR01MB3983.INDPRD01.PROD.OUTLOOK.COM>
2019-06-02 8:38 ` [Cocci] [PATCH] Python scripts also support comments metavar Julia Lawall
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).