[comp.lang.forth] X3J14's BASIS10 def'n for LEAVE

dwp@willett.UUCP (Doug Philips) (01/16/90)

Thanks to Wil Baden for pointing this out:
As I understand BASIS10, LEAVE will work as follows:

DO .... LEAVE ... DO ... LOOP (b) ... LOOP (c) ...
          |--------------------^
that is, it will jump to point (b) instead of point (c).

WHY?  Surely LEAVE should work the same whether or not the inner DO...LOOP
is explicit or whether it is part of another word, or whether it is 
the result of immediate word execution(s) during compilation?  What benefit
has been gained from this behaviour that will more than offset the utility
which has been lost?  Is there existing practice to justify it?

		-Doug

---
Fastest: (willett!dwp@gateway.sei.cmu.edu OR ...!sei!willett!dwp)
...!{uunet,nfsun,sei}!willett!dwp  [in a pinch: dwp@vega.fac.cs.cmu.edu]

peter@ficc.uu.net (Peter da Silva) (01/17/90)

> As I understand BASIS10, LEAVE will work as follows:

> DO .... LEAVE ... DO ... LOOP (b) ... LOOP (c) ...
>           |--------------------^
> that is, it will jump to point (b) instead of point (c).


> WHY?  Surely LEAVE should work the same whether or not the inner DO...LOOP
> is explicit or whether it is part of another word...

...or even whether it exists at all. I agree, this definition seems pretty
looney-tunes. The only rationale I can see for this is that it might
make metacompiling with a non-stack-based metacompiler a fraction
easier.

Surely this isn't what's meant. Could it be a typo or an overly strict
reading of the standard? Over in comp.std.c such things often turn out
to be erroneous.
-- 
 _--_|\  Peter da Silva. +1 713 274 5180. <peter@ficc.uu.net>.
/      \
\_.--._/ Xenix Support -- it's not just a job, it's an adventure!
      v  "Have you hugged your wolf today?" `-_-'