Re: [Cocci] [PATCH 00/13] cocci: Align the C AST and SmPL AST for enum
On Mon, 2020-03-09 at 15:15 +0100, Julia Lawall wrote: > > On Sun, 8 Mar 2020, Jaskaran Singh wrote: > > > The C AST and SmPL AST differs with respect to the enum type. > > > > For an enumerator, the C AST is as follows: > > Enum -> list of (name, (info, expression)) > > > > For the same, the SmPL AST is as follows: > > EnumDef -> list of expression > > > > While the SmPL parser does make sure that enumerators are > > parsed as per C rules, the OCaml types for an enumerator themselves > > mismatch, due to their organization. This causes bugs/mismatches > > for > > cases where enums are in disjunctions. > > > > This patch series makes the enumerator type of the SmPL AST > > closer to that of the C AST. Various places in the codebase that > > handle an enum are also changed to match the new type, and > > collateral evolutions caused by changed in the SmPL visitors are > > handled as well. > > > > Changes are also made to Cocci_vs_c to correctly match two > > enumerators, and in Pretty_print_cocci and Unparse_cocci to > > correctly print an enumerator. > > I have applied all of the changes. In the end, I squashed all of the > commits together, to only commit something that compiles, but I > appreciated having the changes broken up into more understandable > units. > Sorry about that. Will be more careful about these big changes next time, and thanks for applying. Cheers, Jaskaran. > thanks, > julia > > > > [PATCH 01/13] parsing_cocci: Align C AST and SmPL AST for enum > > [PATCH 02/13] ocaml: coccilib: Reflect changes in SmPL AST for > > [PATCH 03/13] parsing_cocci: parser: Parse enumerators correctly > > [PATCH 04/13] parsing_cocci: Add EnumDeclTag and EnumDeclDotsTag to > > [PATCH 05/13] ocaml: coccilib: Reflect EnumDeclTag and > > [PATCH 06/13] parsing_cocci: visitor_ast0: Add visitor functions > > for > > [PATCH 07/13] parsing_cocci: Reflect visitor_ast0 changes in > > [PATCH 08/13] parsing_cocci: Add visitor functions for enum_decl in > > [PATCH 09/13] cocci: Reflect changes in SmPL visitor_ast in > > codebase > > [PATCH 10/13] engine: cocci_vs_c: Match enumerators properly as per > > [PATCH 11/13] cocci: pretty print EnumDef as per enum_decl type > > [PATCH 12/13] tests: Add test case for assigned enumerator > > [PATCH 13/13] tools: spgen: Reflect visitor changes > > > > cocci.ml |4 - > > engine/asttoctl2.ml | 21 +--- > > engine/asttomember.ml | 17 --- > > engine/cocci_vs_c.ml | 46 --- > > engine/transformation_c.ml|4 - > > ocaml/coccilib.mli| 22 - > > parsing_c/unparse_cocci.ml| 27 ++- > > parsing_c/unparse_hrule.ml|4 - > > parsing_cocci/arity.ml| 25 ++ > > parsing_cocci/ast0_cocci.ml | 15 +- > > parsing_cocci/ast0_cocci.mli | 14 + > > parsing_cocci/ast0toast.ml| 30 +++- > > parsing_cocci/ast0toast.mli |4 + > > parsing_cocci/ast_cocci.ml| 13 + > > parsing_cocci/ast_cocci.mli | 12 - > > parsing_cocci/check_meta.ml | 17 +-- > > parsing_cocci/cleanup_rules.ml|5 +- > > parsing_cocci/commas_on_lists.ml | 10 ++-- > > parsing_cocci/compute_lines.ml| 25 ++ > > parsing_cocci/context_neg.ml | 47 +-- > > parsing_cocci/disjdistr.ml| 29 +--- > > parsing_cocci/free_vars.ml| 27 +-- > > parsing_cocci/function_prototypes.ml |7 +- > > parsing_cocci/get_constants2.ml |7 +- > > parsing_cocci/index.ml|7 ++ > > parsing_cocci/index.mli |2 > > parsing_cocci/insert_plus.ml | 39 +--- > > parsing_cocci/iso_compile.ml |4 - > > parsing_cocci/iso_pattern.ml | 80 > > -- > > parsing_cocci/parse_aux.ml|5 ++ > > parsing_cocci/parse_aux.mli |9 +++ > > parsing_cocci/parse_cocci.ml |4 - > > parsing_cocci/parser_cocci_menhir.mly | 13 ++--- > > parsing_cocci/pretty_print_cocci.ml | 18 +++ > > parsing_cocci/re_constraints.ml | 10 ++-- > > parsing_cocci/safe_for_multi_decls.ml | 11 ++-- > > parsing_cocci/single_statement.ml |5 +- > > parsing_cocci/stmtlist.ml |4 - > > parsing_cocci/unify_ast.ml| 29 ++-- > > parsing_cocci/unitary_ast0.ml |5 +- > > parsing_cocci/unparse_ast0.ml | 22 - > > parsing_cocci/visitor_ast.ml | 72 > > +++--- > > parsing_cocci/visitor_ast.mli |8 +++ > > parsing_cocci/visitor_ast0.ml | 72 > > -- > > parsing_cocci/visitor_ast0.mli|4 + > >
Re: [Cocci] [PATCH 00/13] cocci: Align the C AST and SmPL AST for enum
On Sun, 8 Mar 2020, Jaskaran Singh wrote: > The C AST and SmPL AST differs with respect to the enum type. > > For an enumerator, the C AST is as follows: > Enum -> list of (name, (info, expression)) > > For the same, the SmPL AST is as follows: > EnumDef -> list of expression > > While the SmPL parser does make sure that enumerators are > parsed as per C rules, the OCaml types for an enumerator themselves > mismatch, due to their organization. This causes bugs/mismatches for > cases where enums are in disjunctions. > > This patch series makes the enumerator type of the SmPL AST > closer to that of the C AST. Various places in the codebase that > handle an enum are also changed to match the new type, and > collateral evolutions caused by changed in the SmPL visitors are > handled as well. > > Changes are also made to Cocci_vs_c to correctly match two > enumerators, and in Pretty_print_cocci and Unparse_cocci to > correctly print an enumerator. I have applied all of the changes. In the end, I squashed all of the commits together, to only commit something that compiles, but I appreciated having the changes broken up into more understandable units. thanks, julia > > [PATCH 01/13] parsing_cocci: Align C AST and SmPL AST for enum > [PATCH 02/13] ocaml: coccilib: Reflect changes in SmPL AST for > [PATCH 03/13] parsing_cocci: parser: Parse enumerators correctly > [PATCH 04/13] parsing_cocci: Add EnumDeclTag and EnumDeclDotsTag to > [PATCH 05/13] ocaml: coccilib: Reflect EnumDeclTag and > [PATCH 06/13] parsing_cocci: visitor_ast0: Add visitor functions for > [PATCH 07/13] parsing_cocci: Reflect visitor_ast0 changes in > [PATCH 08/13] parsing_cocci: Add visitor functions for enum_decl in > [PATCH 09/13] cocci: Reflect changes in SmPL visitor_ast in codebase > [PATCH 10/13] engine: cocci_vs_c: Match enumerators properly as per > [PATCH 11/13] cocci: pretty print EnumDef as per enum_decl type > [PATCH 12/13] tests: Add test case for assigned enumerator > [PATCH 13/13] tools: spgen: Reflect visitor changes > > cocci.ml |4 - > engine/asttoctl2.ml | 21 +--- > engine/asttomember.ml | 17 --- > engine/cocci_vs_c.ml | 46 --- > engine/transformation_c.ml|4 - > ocaml/coccilib.mli| 22 - > parsing_c/unparse_cocci.ml| 27 ++- > parsing_c/unparse_hrule.ml|4 - > parsing_cocci/arity.ml| 25 ++ > parsing_cocci/ast0_cocci.ml | 15 +- > parsing_cocci/ast0_cocci.mli | 14 + > parsing_cocci/ast0toast.ml| 30 +++- > parsing_cocci/ast0toast.mli |4 + > parsing_cocci/ast_cocci.ml| 13 + > parsing_cocci/ast_cocci.mli | 12 - > parsing_cocci/check_meta.ml | 17 +-- > parsing_cocci/cleanup_rules.ml|5 +- > parsing_cocci/commas_on_lists.ml | 10 ++-- > parsing_cocci/compute_lines.ml| 25 ++ > parsing_cocci/context_neg.ml | 47 +-- > parsing_cocci/disjdistr.ml| 29 +--- > parsing_cocci/free_vars.ml| 27 +-- > parsing_cocci/function_prototypes.ml |7 +- > parsing_cocci/get_constants2.ml |7 +- > parsing_cocci/index.ml|7 ++ > parsing_cocci/index.mli |2 > parsing_cocci/insert_plus.ml | 39 +--- > parsing_cocci/iso_compile.ml |4 - > parsing_cocci/iso_pattern.ml | 80 > -- > parsing_cocci/parse_aux.ml|5 ++ > parsing_cocci/parse_aux.mli |9 +++ > parsing_cocci/parse_cocci.ml |4 - > parsing_cocci/parser_cocci_menhir.mly | 13 ++--- > parsing_cocci/pretty_print_cocci.ml | 18 +++ > parsing_cocci/re_constraints.ml | 10 ++-- > parsing_cocci/safe_for_multi_decls.ml | 11 ++-- > parsing_cocci/single_statement.ml |5 +- > parsing_cocci/stmtlist.ml |4 - > parsing_cocci/unify_ast.ml| 29 ++-- > parsing_cocci/unitary_ast0.ml |5 +- > parsing_cocci/unparse_ast0.ml | 22 - > parsing_cocci/visitor_ast.ml | 72 +++--- > parsing_cocci/visitor_ast.mli |8 +++ > parsing_cocci/visitor_ast0.ml | 72 -- > parsing_cocci/visitor_ast0.mli|4 + > parsing_cocci/visitor_ast0_types.ml | 14 + > parsing_cocci/visitor_ast0_types.mli | 12 + > popl/popltoctl.ml |2 > popl09/popltoctl.ml |5 +- > tests/enum_assign.c |6 ++ > tests/enum_assign.cocci | 11 > tests/enum_assign.res |7 ++ > tools/spgen/source/detect_patch.ml|
Re: [Cocci] [PATCH 12/13] tests: Add test case for assigned enumerator
> minused assigned enumerators, plussed assigned enumerators Does this description contain typos? Regards, Markus ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci
Re: [Cocci] [PATCH 09/13] cocci: Reflect changes in SmPL visitor_ast in codebase
> as well as adding the additional arguments needed in the visitor How do you think about to reconsider such a wording? Regards, Markus ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci
Re: [Cocci] [PATCH 07/13] parsing_cocci: Reflect visitor_ast0 changes in parsing_cocci
> The SmPL AST0 visitor has functions for handling enumerators > separately. Handle these collateral evolutions in parsing_cocci I got the impression that an other change description would be easier to understand. Regards, Markus ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci
Re: [Cocci] [PATCH 04/13] parsing_cocci: Add EnumDeclTag and EnumDeclDotsTag to SmPL ASTs
> constructs w/r/t changes in the SmPL AST. Would an other change description be more helpful? Regards, Markus ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci
Re: [Cocci] [PATCH 01/13] parsing_cocci: Align C AST and SmPL AST for enum
> Make the enumerator type of the SmPL AST closer to that of > the C AST. Are any deviations between these data structures still relevant (or undesirable)? Regards, Markus ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci
Re: [Cocci] [PATCH 00/13] cocci: Align the C AST and SmPL AST for enum
> The C AST and SmPL AST differs with respect to the enum type. I suggest to consider wording variants. “The … and … differ ….” > collateral evolutions caused by changed in the SmPL visitors are “… by changes in …” Regards, Markus ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci