Hello,
I need to do some Smalltalk code generation from Smalltalk. So I have implemented a library (although it may be seen as an embedded language). One important thing is that I need to compose generated code from other generated code.
A usage example:
cb := self commandBuilder m := cb methodNamed: #conditionMethod withFormalArgs: #() comment: 'Condition method'. m send: #ifTrue:ifFalse: to: (cb send: #isNil to: cb nil) with: (cb block: [:blk | blk return: (cb literal:'true')])
with: (cb block: [:blk | blk return: (cb literal: 'false')]).
The "pretty" printing of the generated method m would be:
conditionMethod "Condition method"
nil isNil ifTrue:[^true] ifFalse:[^false]
I want to do something like this, so I cant work on plain strings or do some preprocessing:
ASTVisitor>>visitAnd: node ^cb send: #and: to: (node exp1 accept: self) with: (cb block:[:blk | node exp2 accept: self])
And the question is: Is there a better/easier/trivial/standard way of doing this that I am missing?
Please don't doubt to criticize it, I want to learn :-) .
Thank you very much for your time
Marian
___________________________________________________________ 1GB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo http://correo.yahoo.com.ar