Thanks. I will look into this.
In the meantime, I have another question: is there a way to specify that a
certain pattern can appear multiple times and that I am interested in all
occurrences?
For example, I can have multiple appearances of "browser xyz" inside the
following block:
browser showOn: #xxx; from: #yyy; using: [
browser list ...
browser tree ...
browser text ]
If I try to match it like:
'`...@browser showOn: `...@target; from: `...@origin; using: [ `...@browser
`[email protected]]'
It seems to only get those appearances which contain a single appearance of
browser inside the block.
Cheers,
Doru
On 3 Nov 2010, at 16:55, Lukas Renggli wrote:
>> However, the problem here is that I do not know how to replace all the
>> "browser" appearances with "a" inside the andShow: block. I tried multiple
>> variations like the one below, but I could not seem to get it to work as I
>> want.
>>
>> replace: '`...@browser showOn: `...@target; from: `...@origin; using:
>> [
>> `...@browser `[email protected]]' with: '`...@browser transmit
>> to: `...@target; from: `...@origin; andShow: [:a | a `[email protected]]';
>>
>>
>> Can anyone point me into the right direction?
>
> Yes, you can put in the replacement code some code snippets like
>
> `{ :context | ... }
>
> Replace the "..." with some Smalltalk code that returns a parse tree
> node (or a collection of parse-tree nodes). The context-variable is a
> dictionary containing the current bindings of the matched nodes. So
> you can perform a sub-rewrite on `[email protected] to replace all
> accesses to `...@browser with the variable a; and you return the
> transformed tree.
>
> Lukas
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>
--
www.tudorgirba.com
"Be rather willing to give than demanding to get."