On Sep 13, 2010, at 4:32 AM, openbios-request@openbios.org wrote:
Programmingkid wrote:
I need a little help on how to take compile-time code and change it so that it executes a different set of code at run-time. I want to take this code: "4 -> cat" and change it to "4 cat !" at run-time. The "->" word needs to be able to do this. Would anyone know how?
compile time: 4 -> cat run-time: 4 cat !
In the context of local variables, would you be able to get away with parsing this as a string?
ATB,
Mark.
-- Mark Cave-Ayland - Senior Technical Architect PostgreSQL - PostGIS Sirius Corporation plc - control through freedom http://www.siriusit.co.uk t: +44 870 608 0063
Sirius Labs: http://www.siriusit.co.uk/labs
I was thinking about parsing them as strings, but that would make viewing and debugging the code difficult. I was really hoping for translating the compile-time code into the run-time code I have presented.
I made some code examples that I would like to obtain some feedback on. Tell me which of these run-time code examples seems the most plausible to work.
Example 1:
compile-time code:
: myword { ; dog cat hamster } 4 -> dog 3 -> cat 1 -> hamster dog @ cat @ + hamster @ + cr " animals = " . cr ;
run-time code:
: myword
\ Note: myword_wordlist and standardlist are raw numbers - not variables
myword_wordlist standardlist 2 set-order \ setup dictionary search order definitions
variable dog variable cat variable hamster
4 dog ! 3 cat ! 1 hamster ! dog @ cat @ + hamster @ + cr " animals = " . cr
standardlist 1 set-order \ restore dictionary search order definitions ;
Another possible run-time code translation:
: myword
variable dog variable cat variable hamster
4 dog ! 3 cat ! 1 hamster !
dog @ cat @ + hamster @ + cr " animals = " . cr
forget dog forget cat forget hamster ;
Example 2:
compile-time code:
\ assigning top stack value to variables
: myword { dog cat hamster } dog @ cat @ + hamster @ + cr " animals = " . cr ;
run-time code:
: myword
variable dog variable cat variable hamster
dog ! cat ! hamster !
dog @ cat @ + hamster @ + cr " animals = " . cr
forget dog forget cat forget hamster ;
In each example, the compile-time code would be something that the user enters or is found in a boot script.