Le 27/02/2015 20:26, Marcus Denker a écrit :
On 27 Feb 2015, at 19:48, Thierry Goubier <[email protected]> wrote:
Hi Markus,
if I understand correctly some of the possibilities:
- I can use RBParseTreeSearcher / RBParseTreeRewriter on the twin AST.
(any example how to install / invalidate the twin AST after an effective
RBParseTreeRewriter operation?)
Yes, but I would do it on a copy… that is, do the change in run:with:in: on a
copy, generate code from that,
keep the original.
An AST that follows the text is kind of nice for e.g. navigation.
- Any change to the Twin AST is reflected in the method bytecode (as long as
one does invalidate).
yes.
This would mean being able to put tracing code with RB patterns, no? And
without having to do a recompilation of the traced method?
Yes. At first I want to have something simple: a MOP based on the MetaLinks.
But one could do the same with RB transformations:
put them as annotation on the method, then on recompile take them into account.
Maybe I'm not understanding everything, so would that be correct:
- If I inject additional behavior with meta-links, then they just
annotate the AST and do not really change it.
Now, since writing dedicated ast visitors takes quite some code, what
could work is to have a RBParseTreeMetaWriter: use a RB pattern to find
the right ast node, and add whatever meta-link there.
Thierry