From: Jaskaran Singh <jaskaran.singh@collabora.com>
To: cocci@systeme.lip6.fr
Subject: [Cocci] [PATCH 01/24] parsing_cocci: visitor_ast0: Add attributefn to SmPL AST0 visitor
Date: Thu, 16 Jul 2020 18:29:52 +0530 [thread overview]
Message-ID: <20200716130016.23729-2-jaskaran.singh@collabora.com> (raw)
In-Reply-To: <20200716130016.23729-1-jaskaran.singh@collabora.com>
Add a public function for visiting attributes to the SmPL AST0 visitor.
Signed-off-by: Jaskaran Singh <jaskaran.singh@collabora.com>
---
parsing_cocci/visitor_ast0.ml | 21 +++++++++++++++++----
parsing_cocci/visitor_ast0.mli | 2 ++
parsing_cocci/visitor_ast0_types.ml | 6 ++++++
parsing_cocci/visitor_ast0_types.mli | 6 ++++++
4 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/parsing_cocci/visitor_ast0.ml b/parsing_cocci/visitor_ast0.ml
index a5902f8c..090fe625 100644
--- a/parsing_cocci/visitor_ast0.ml
+++ b/parsing_cocci/visitor_ast0.ml
@@ -25,7 +25,7 @@ let visitor mode bind option_default
dotsenumdeclfn dotscasefn dotsdefparfn
identfn exprfn assignOpfn binaryOpfn tyfn initfn paramfn declfn fieldfn
enumdeclfn
- stmtfn forinfofn casefn string_fragmentfn topfn =
+ stmtfn forinfofn casefn string_fragmentfn attributefn topfn =
let multibind l =
let rec loop = function
[] -> option_default
@@ -1155,7 +1155,7 @@ let visitor mode bind option_default
Ast0.Attribute(attr) ->
let (attr_n,attr) = string_mcode attr in
(attr_n,Ast0.Attribute(attr))) in
- k a
+ attributefn all_functions k a
(* we only include the when string mcode w because the parameterised
string_mcodefn function might have side-effects *)
@@ -1370,6 +1370,7 @@ let visitor mode bind option_default
VT0.case_line = case_line;
VT0.define_param = define_param;
VT0.string_fragment = string_fragment;
+ VT0.attribute = attribute;
VT0.top_level = top_level;
VT0.expression_dots = expression_dots;
VT0.statement_dots = statement_dots;
@@ -1419,6 +1420,7 @@ let combiner_functions =
VT0.combiner_forinfofn = (fun r k e -> k e);
VT0.combiner_casefn = (fun r k e -> k e);
VT0.combiner_string_fragmentfn = (fun r k e -> k e);
+ VT0.combiner_attributefn = (fun r k e -> k e);
VT0.combiner_topfn = (fun r k e -> k e)}
let combiner_dz r =
@@ -1458,6 +1460,8 @@ let combiner_dz r =
(function e -> let (n,_) = r.VT0.define_param e in n);
VT0.combiner_rec_string_fragment =
(function e -> let (n,_) = r.VT0.string_fragment e in n);
+ VT0.combiner_rec_attribute =
+ (function e -> let (n,_) = r.VT0.attribute e in n);
VT0.combiner_rec_top_level =
(function e -> let (n,_) = r.VT0.top_level e in n);
VT0.combiner_rec_expression_dots =
@@ -1524,6 +1528,7 @@ let combiner bind option_default functions =
(fun r k e -> (functions.VT0.combiner_forinfofn (dz r) (xk k) e, e))
(fun r k e -> (functions.VT0.combiner_casefn (dz r) (xk k) e, e))
(fun r k e -> (functions.VT0.combiner_string_fragmentfn (dz r) (xk k) e,e))
+ (fun r k e -> (functions.VT0.combiner_attributefn (dz r) (xk k) e, e))
(fun r k e -> (functions.VT0.combiner_topfn (dz r) (xk k) e, e)))
let flat_combiner bind option_default
@@ -1534,7 +1539,7 @@ let flat_combiner bind option_default
dotsenumdeclfn dotscasefn dotsdefparfn
identfn exprfn assignOpfn binaryOpfn tyfn initfn paramfn declfn fieldfn
enumdeclfn
- stmtfn forinfofn casefn string_fragmentfn topfn =
+ stmtfn forinfofn casefn string_fragmentfn attributefn topfn =
let dz = combiner_dz in
let xk k e = let (n,_) = k e in n in
combiner_dz (visitor COMBINER bind option_default
@@ -1575,6 +1580,7 @@ let flat_combiner bind option_default
(fun r k e -> (forinfofn (dz r) (xk k) e, e))
(fun r k e -> (casefn (dz r) (xk k) e, e))
(fun r k e -> (string_fragmentfn (dz r) (xk k) e, e))
+ (fun r k e -> (attributefn (dz r) (xk k) e, e))
(fun r k e -> (topfn (dz r) (xk k) e, e)))
let rebuilder_functions =
@@ -1615,6 +1621,7 @@ let rebuilder_functions =
VT0.rebuilder_forinfofn = (fun r k e -> k e);
VT0.rebuilder_casefn = (fun r k e -> k e);
VT0.rebuilder_string_fragmentfn = (fun r k e -> k e);
+ VT0.rebuilder_attributefn = (fun r k e -> k e);
VT0.rebuilder_topfn = (fun r k e -> k e)}
let rebuilder_dz r =
@@ -1652,6 +1659,8 @@ let rebuilder_dz r =
(function e -> let (_,e) = r.VT0.case_line e in e);
VT0.rebuilder_rec_string_fragment =
(function e -> let (_,e) = r.VT0.string_fragment e in e);
+ VT0.rebuilder_rec_attribute =
+ (function e -> let (_,e) = r.VT0.attribute e in e);
VT0.rebuilder_rec_top_level =
(function e -> let (_,e) = r.VT0.top_level e in e);
VT0.rebuilder_rec_expression_dots =
@@ -1714,6 +1723,7 @@ let rebuilder functions =
(fun r k e -> ((),functions.VT0.rebuilder_casefn (dz r) (xk k) e))
(fun r k e ->
((),functions.VT0.rebuilder_string_fragmentfn (dz r) (xk k) e))
+ (fun r k e -> ((),functions.VT0.rebuilder_attributefn (dz r) (xk k) e))
(fun r k e -> ((),functions.VT0.rebuilder_topfn (dz r) (xk k) e)))
let flat_rebuilder
@@ -1725,7 +1735,7 @@ let flat_rebuilder
dotsenumdeclfn dotscasefn dotsdefparfn
identfn exprfn assignOpfn arithOpfn tyfn initfn paramfn declfn fieldfn
enumdeclfn
- stmtfn forinfofn casefn string_fragmentfn topfn =
+ stmtfn forinfofn casefn string_fragmentfn attributefn topfn =
let dz = rebuilder_dz in
let xk k e = let (_,e) = k e in e in
rebuilder_dz
@@ -1767,6 +1777,7 @@ let flat_rebuilder
(fun r k e -> ((),forinfofn (dz r) (xk k) e))
(fun r k e -> ((),casefn (dz r) (xk k) e))
(fun r k e -> ((),string_fragmentfn (dz r) (xk k) e))
+ (fun r k e -> ((),attributefn (dz r) (xk k) e))
(fun r k e -> ((),topfn (dz r) (xk k) e)))
let combiner_rebuilder_functions =
@@ -1821,6 +1832,7 @@ let combiner_rebuilder_functions =
VT0.combiner_rebuilder_forinfofn = (fun r k e -> k e);
VT0.combiner_rebuilder_casefn = (fun r k e -> k e);
VT0.combiner_rebuilder_string_fragmentfn = (fun r k e -> k e);
+ VT0.combiner_rebuilder_attributefn = (fun r k e -> k e);
VT0.combiner_rebuilder_topfn = (fun r k e -> k e)}
let combiner_rebuilder bind option_default functions =
@@ -1862,4 +1874,5 @@ let combiner_rebuilder bind option_default functions =
functions.VT0.combiner_rebuilder_forinfofn
functions.VT0.combiner_rebuilder_casefn
functions.VT0.combiner_rebuilder_string_fragmentfn
+ functions.VT0.combiner_rebuilder_attributefn
functions.VT0.combiner_rebuilder_topfn
diff --git a/parsing_cocci/visitor_ast0.mli b/parsing_cocci/visitor_ast0.mli
index e801c983..53d51e4a 100644
--- a/parsing_cocci/visitor_ast0.mli
+++ b/parsing_cocci/visitor_ast0.mli
@@ -50,6 +50,7 @@ val flat_combiner :
((Ast0_cocci.forinfo,'a) Visitor_ast0_types.ccode) ->
((Ast0_cocci.case_line,'a) Visitor_ast0_types.ccode) ->
((Ast0_cocci.string_fragment,'a) Visitor_ast0_types.ccode) ->
+ ((Ast0_cocci.attr,'a) Visitor_ast0_types.ccode) ->
((Ast0_cocci.top_level,'a) Visitor_ast0_types.ccode) ->
'a Visitor_ast0_types.combiner_rec_functions
@@ -95,6 +96,7 @@ val flat_rebuilder :
(Ast0_cocci.forinfo Visitor_ast0_types.rcode) ->
(Ast0_cocci.case_line Visitor_ast0_types.rcode) ->
(Ast0_cocci.string_fragment Visitor_ast0_types.rcode) ->
+ (Ast0_cocci.attr Visitor_ast0_types.rcode) ->
(Ast0_cocci.top_level Visitor_ast0_types.rcode) ->
Visitor_ast0_types.rebuilder_rec_functions
diff --git a/parsing_cocci/visitor_ast0_types.ml b/parsing_cocci/visitor_ast0_types.ml
index 7a00c702..65892483 100644
--- a/parsing_cocci/visitor_ast0_types.ml
+++ b/parsing_cocci/visitor_ast0_types.ml
@@ -28,6 +28,7 @@ type 'n all_functions =
case_line : (Ast0.case_line,'n) inout;
define_param : (Ast0.define_param,'n) inout;
string_fragment : (Ast0.string_fragment,'n) inout;
+ attribute : (Ast0.attr,'n) inout;
top_level : (Ast0.top_level,'n) inout;
expression_dots : (Ast0.expression Ast0.dots,'n) inout;
statement_dots : (Ast0.statement Ast0.dots,'n) inout;
@@ -63,6 +64,7 @@ type 'n combiner_rec_functions =
combiner_rec_case_line : (Ast0.case_line,'n) combiner_inout;
combiner_rec_define_param : (Ast0.define_param,'n) combiner_inout;
combiner_rec_string_fragment : (Ast0.string_fragment,'n) combiner_inout;
+ combiner_rec_attribute : (Ast0.attr,'n) combiner_inout;
combiner_rec_top_level : (Ast0.top_level,'n) combiner_inout;
combiner_rec_expression_dots :
(Ast0.expression Ast0.dots,'n) combiner_inout;
@@ -122,6 +124,7 @@ type 'n combiner_functions =
combiner_forinfofn : (Ast0.forinfo,'n) ccode;
combiner_casefn : (Ast0.case_line,'n) ccode;
combiner_string_fragmentfn : (Ast0.string_fragment,'n) ccode;
+ combiner_attributefn : (Ast0.attr,'n) ccode;
combiner_topfn : (Ast0.top_level,'n) ccode}
(* ----------------------------------------------------------------------- *)
@@ -148,6 +151,7 @@ type rebuilder_rec_functions =
rebuilder_rec_forinfo : Ast0.forinfo rebuilder_inout;
rebuilder_rec_case_line : Ast0.case_line rebuilder_inout;
rebuilder_rec_string_fragment : Ast0.string_fragment rebuilder_inout;
+ rebuilder_rec_attribute : Ast0.attr rebuilder_inout;
rebuilder_rec_top_level : Ast0.top_level rebuilder_inout;
rebuilder_rec_expression_dots :
Ast0.expression Ast0.dots rebuilder_inout;
@@ -208,6 +212,7 @@ type rebuilder_functions =
rebuilder_forinfofn : Ast0.forinfo rcode;
rebuilder_casefn : Ast0.case_line rcode;
rebuilder_string_fragmentfn : Ast0.string_fragment rcode;
+ rebuilder_attributefn : Ast0.attr rcode;
rebuilder_topfn : Ast0.top_level rcode}
(* ----------------------------------------------------------------------- *)
@@ -256,4 +261,5 @@ type 'n combiner_rebuilder_functions =
combiner_rebuilder_forinfofn : (Ast0.forinfo,'n) rccode;
combiner_rebuilder_casefn : (Ast0.case_line,'n) rccode;
combiner_rebuilder_string_fragmentfn : (Ast0.string_fragment,'n) rccode;
+ combiner_rebuilder_attributefn : (Ast0.attr,'n) rccode;
combiner_rebuilder_topfn : (Ast0.top_level,'n) rccode}
diff --git a/parsing_cocci/visitor_ast0_types.mli b/parsing_cocci/visitor_ast0_types.mli
index d06baaf7..7c7c31aa 100644
--- a/parsing_cocci/visitor_ast0_types.mli
+++ b/parsing_cocci/visitor_ast0_types.mli
@@ -18,6 +18,7 @@ type 'n all_functions = {
case_line : (Ast0_cocci.case_line, 'n) inout;
define_param : (Ast0_cocci.define_param, 'n) inout;
string_fragment : (Ast0_cocci.string_fragment, 'n) inout;
+ attribute : (Ast0_cocci.attr, 'n) inout;
top_level : (Ast0_cocci.top_level, 'n) inout;
expression_dots : (Ast0_cocci.expression Ast0_cocci.dots, 'n) inout;
statement_dots : (Ast0_cocci.statement Ast0_cocci.dots, 'n) inout;
@@ -48,6 +49,7 @@ type 'n combiner_rec_functions = {
combiner_rec_case_line : (Ast0_cocci.case_line, 'n) combiner_inout;
combiner_rec_define_param : (Ast0_cocci.define_param, 'n) combiner_inout;
combiner_rec_string_fragment : (Ast0_cocci.string_fragment, 'n) combiner_inout;
+ combiner_rec_attribute : (Ast0_cocci.attr, 'n) combiner_inout;
combiner_rec_top_level : (Ast0_cocci.top_level, 'n) combiner_inout;
combiner_rec_expression_dots :
(Ast0_cocci.expression Ast0_cocci.dots, 'n) combiner_inout;
@@ -102,6 +104,7 @@ type 'n combiner_functions = {
combiner_forinfofn : (Ast0_cocci.forinfo, 'n) ccode;
combiner_casefn : (Ast0_cocci.case_line, 'n) ccode;
combiner_string_fragmentfn : (Ast0_cocci.string_fragment, 'n) ccode;
+ combiner_attributefn : (Ast0_cocci.attr, 'n) ccode;
combiner_topfn : (Ast0_cocci.top_level, 'n) ccode;
}
type 'a rebuilder_inout = 'a -> 'a
@@ -123,6 +126,7 @@ type rebuilder_rec_functions = {
rebuilder_rec_forinfo : Ast0_cocci.forinfo rebuilder_inout;
rebuilder_rec_case_line : Ast0_cocci.case_line rebuilder_inout;
rebuilder_rec_string_fragment : Ast0_cocci.string_fragment rebuilder_inout;
+ rebuilder_rec_attribute : Ast0_cocci.attr rebuilder_inout;
rebuilder_rec_top_level : Ast0_cocci.top_level rebuilder_inout;
rebuilder_rec_expression_dots : Ast0_cocci.expression Ast0_cocci.dots rebuilder_inout;
rebuilder_rec_statement_dots : Ast0_cocci.statement Ast0_cocci.dots rebuilder_inout;
@@ -175,6 +179,7 @@ type rebuilder_functions = {
rebuilder_forinfofn : Ast0_cocci.forinfo rcode;
rebuilder_casefn : Ast0_cocci.case_line rcode;
rebuilder_string_fragmentfn : Ast0_cocci.string_fragment rcode;
+ rebuilder_attributefn : Ast0_cocci.attr rcode;
rebuilder_topfn : Ast0_cocci.top_level rcode;
}
type ('mc, 'a) rcmcode = 'a -> 'mc Ast0_cocci.mcode -> 'a * 'mc Ast0_cocci.mcode
@@ -219,5 +224,6 @@ type 'n combiner_rebuilder_functions = {
combiner_rebuilder_forinfofn : (Ast0_cocci.forinfo, 'n) rccode;
combiner_rebuilder_casefn : (Ast0_cocci.case_line, 'n) rccode;
combiner_rebuilder_string_fragmentfn : (Ast0_cocci.string_fragment, 'n) rccode;
+ combiner_rebuilder_attributefn : (Ast0_cocci.attr, 'n) rccode;
combiner_rebuilder_topfn : (Ast0_cocci.top_level, 'n) rccode;
}
--
2.21.3
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
next prev parent reply other threads:[~2020-07-16 13:02 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-16 12:59 [Cocci] [PATCH 00/24] parsing_cocci: Add attributefn to the SmPL AST0 visitor Jaskaran Singh
2020-07-16 12:59 ` Jaskaran Singh [this message]
2020-07-16 12:59 ` [Cocci] [PATCH 02/24] parsing_cocci: ast0toast: Reflect attributefn in " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 03/24] parsing_cocci: check_meta: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 04/24] parsing_cocci: function_prototypes: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 05/24] parsing_cocci: iso_compile: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 06/24] parsing_cocci: iso_pattern: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 07/24] parsing_cocci: parse_cocci: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 08/24] parsing_cocci: single_statement: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 09/24] parsing_cocci: unitary_ast0: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 10/24] parsing_cocci: ast0_cocci: Add AttributeTag to SmPL AST0 Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 11/24] parsing_cocci: visitor_ast0: Reflect AttributeTag in " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 12/24] parsing_cocci: iso_pattern: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 13/24] parsing_cocci: unparse_ast0: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 14/24] parsing_cocci: context_neg: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 15/24] parsing_cocci: insert_plus: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 16/24] parsing_cocci: ast_cocci: Add AttributeTag to the SmPL AST Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 17/24] parsing_cocci: pretty_print_cocci: Reflect AttributeTag in " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 18/24] parsing_c: unparse_cocci: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 19/24] parsing_cocci: visitor_ast: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 20/24] parsing_cocci: ast0toast: Reflect AttributeTag in the SmPL ASTs Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 21/24] ocaml: coccilib: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 22/24] parsing_cocci: context_neg: Reflect attributefn in AST0 visitor Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 23/24] parsing_cocci: insert_plus: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 24/24] tools: spgen: " Jaskaran Singh
2020-07-18 13:59 ` [Cocci] [PATCH 00/24] parsing_cocci: Add attributefn to the SmPL " Julia Lawall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200716130016.23729-2-jaskaran.singh@collabora.com \
--to=jaskaran.singh@collabora.com \
--cc=cocci@systeme.lip6.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).