I don't see any french text. Just a PDF of a blog article I wrote, the LaTeX source of the program-checking paper, and an empty LaTeX template. Lukas On 4 November 2010 13:30, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
Normally I added some text in french :( do not pay attention too much on the style dump information and like that we can get material to work on I think that having examples is the key point to get started.
On 4 November 2010 10:09, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
I'm adding some other files (in french) :( but I'm stuck with git....
git pull git add french-rewrite.tex git commit git push
Yeah, where do I find that chapter?
There is a section on the AST matching/search in my PhD as Helvetia builds on top of it. Not on the AST rewriting though, Helvetia uses a different mechanism there. Still it might be a good start.
Lukas
On 4 November 2010 09:49, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
lukas
I would love to have a chapter on Rules. I have a starter that I wrote long time ago for the squeak french book but it would be cool if you could add to it.
Stef
On Nov 4, 2010, at 12:55 AM, Lukas Renggli wrote:
If I try to match it like: Â '`@browser showOn: `@target; from: `@origin; using: [ `@browser ``@.statements]'
The match expression
  `@browser ``@.statements
doesn't make sense. Statements (.) cannot be a message selector that would be expected after a receiver. Also, you cannot have a selector list (@) if you don't give also an argument list to match. So the closest valid thing is
  `@browser `message
which looks for unary message sends (recursive is not necessary here either, because there is nothing to recurse into), or
  `@browser `@message: ``@message
which looks for arbitrary message sends and recursively into all arguments.
It seems to only get those appearances which contain a single appearance of browser inside the block.
As I wrote in the previous mail you need to do it with nested rewrites. Inside the block you match for any sequence of statements:
  `@.statements
And as replacement you use the `{ :context | ... } trick to perform a new rewrite somehow along the following untested lines:
  `{ :context |     RBParseTreeRewriter new       " replace whatever matched to `@browser with the variable a "       replaceTree: (context at: '`@browser') with: (RBParser parseExpression: 'a');       " execute on the list of statements "       executeTree: (context at: '`@.statements');       " return the rewritten tree "       tree }
Cheers, Lukas
-- Lukas Renggli www.lukas-renggli.ch
-- Lukas Renggli www.lukas-renggli.ch
-- Lukas Renggli www.lukas-renggli.ch
-- Lukas Renggli www.lukas-renggli.ch