[Pharo-project] Adding a statement programmatically

Norbert Hartl norbert at hartl.name
Thu Mar 8 11:24:39 EST 2012


Am 08.03.2012 um 17:08 schrieb Sean P. DeNigris:

> 
> Marcus Denker-4 wrote
>> 
>> -> Compile the code to an RB AST, this then has all the interfaces needed
>> to replace nodes or add nodes.
>> You can then pretty print it back to source.
>> 
> 
> Thanks Marcus. That's what I was trying to do. I got the AST and created the
> node:
>    body := (AbstractSound>>#initialize) parseTree body.
>    body addNode: (RBParser parseExpression: 'envelopes := nil').
> 
> But then I couldn't figure out how to get the source back...
> 
> "These both returned the statements without the header"
> body formattedCode.
> body newSource.
> 
> "This returned the full method, but without the added node"
> body source
> 
Sean,

you extracted the body first and operate on it. So you only have the body. Try

method := (AbstractSound>>#initialize) parseTree.
method body addNode: (RBParser parseExpression: 'envelopes := nil').
method formattedCode

Norbert



More information about the Pharo-dev mailing list