On Mon, Aug 22, 2011 at 12:49 AM, Nicolas Palix <[email protected]>wrote:
> Hi, > > Since the OCaml scripting was added, we also add access to some > internal objects about the C tree. > > Could a pretty-printer of those objects help ? > Sounds very good. Ideally I'd like at least enough info to be able to reconstruct the source file exactly from the pretty-printed C tree. And have yet more info which identifies individual C statements and their parts. Thanks, Simon Nico > > On Mon, Aug 22, 2011 at 7:21 AM, Julia Lawall <[email protected]> wrote: > > Within a function definition, for statement-level things, you can do > > something like the following: > > > > @r@ > > statement S; > > position p; > > @@ > > > > S@p > > > > @script:ocaml s@ > > p << r.p; > > label_start; > > label_end; > > @@ > > > > label_start := Printf.sprintf "// <statement line: %d>" (List.hd p).line; > > label_end := Printf.sprintf "// </statement line: %d>" (List.hd p).line > > > > @@ > > position r.p; > > statement S; > > identifier s.label_start, s.label_end; > > @@ > > > > + label_start; > > S@p > > + label_end; > > > > For the C file: > > > > int main () { > > foo(); > > if (y) > > x = 12; > > if (y) { > > x = 12; > > } > > return 15; > > } > > > > You get: > > > > int main () { > > // <statement line: 2>; > > foo(); > > // </statement line: 2>; > > // <statement line: 3>; > > if (y) { > > // <statement line: 4>; > > x = 12; > > // </statement line: 4>; > > } > > // </statement line: 3>; > > // <statement line: 5>; > > if (y) { > > // <statement line: 5>; > > { > > // <statement line: 6>; > > x = 12; > > // </statement line: 6>; > > } > > // </statement line: 5>; > > } > > // </statement line: 5>; > > // <statement line: 8>; > > return 15; > > // </statement line: 8>; > > } > > > > Note { } were added in the first if branch, because it thinks that > newcode > > was added so the braces are needed. > > > > This is only possible in cases where it is possible to use an identifier. > > So I don't see how it would be possible to do the same for an expression > > or for a top-level item. It is, however, possible to add comments around > > things. Maybe metavariables could be instantiated within these added > > comments. > > > > julia > > _______________________________________________ > > Cocci mailing list > > [email protected] > > http://lists.diku.dk/mailman/listinfo/cocci > > (Web access from inside DIKUs LAN only) > > > > > > -- > Nicolas Palix > http://sardes.inrialpes.fr/~npalix/ >
_______________________________________________ Cocci mailing list [email protected] http://lists.diku.dk/mailman/listinfo/cocci (Web access from inside DIKUs LAN only)
