On Sep 25, 2010, at 6:00 AM, openbios-request(a)openbios.org wrote:
> Message: 2
> Date: Fri, 24 Sep 2010 09:25:28 -0400
> From: Tarl Neustaedter <tarl-b2(a)tarl.net>
> To: The OpenBIOS Mailinglist <openbios(a)openbios.org>
> Subject: Re: [OpenBIOS] Help with some code
> Message-ID: <4C9CA6C8.2050009(a)tarl.net>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> You should get in the habit of putting stack diagram comments on every line
> of code - it will help you keep track of what you are playing with. By
> convention, a stack diagram starting with $ indicates a addr,len string
> pointer, which you should use in this code for clarity.
>
> As best I can tell without stack diagrams, you are generating strings of the
> form "foo: set-foo foo ! ; foo", and it's probably barfing on "foo:" . I'm not
> sure what this is supposed to accomplish.
What I'm trying to do is create a new word. The new word's name will be set-_variable_name_. What would be another way to create a new word inside another word?
>
> Replace the "eval" with a "type" and you should be able to see what it's
> generating.
I tried your suggestion, but everything looked just fine. The problem shows up at compile-time. Using this code:
variable dog
: myword
4 -> dog
;
What the code should create at compile-time is this:
: myword
4 set-dog
;
but creates this instead
: myword
4 : set-dog
;
The problem is with the extra colon between the 4 and the set-dog word. I need a way to eliminate it from the myword word. Other times the compiler will say the word set-dog is undefined. Any clue how to fix this problem?