The following Request for Interpretation from Anton Ertl is recognized as Q0008. Loring Craymer is assigned to draft the TC's response, please acknowledge to me, Loring. Discussion on x3j14 list please.
- Greg


Anton Ertl wrote on Mon, 13 May 1996 19:24:15 +0200 (MET DST) :

The definition of "execution token" and of some words related to execution tokens appears unclear to me.

   2.1 Definitions of terms
   ...
       execution token:
         A value that identifies the execution semantics of a definition.
 
   6.1.0070 '
   tick CORE
   ( <spaces>name -- xt )
 
   Skip leading space delimiters. Parse name delimited by a space. Find name and
   return xt, the execution token for name. An ambiguous condition exists if
   name is not found.
 
   When interpreting, ' xyz EXECUTE is equivalent to xyz.

The last sentence indicates that the value returned by ' identifies the interpretation semantics, not the execution semantics.

If an implementation does define an interpretation semantics for a word like "COMPILE," (e.g., performing a -14 THROW), is

 
 ' COMPILE, EXECUTE
required to perform these interpretation semantics rather than the execution semantics? What about other (system- or user-defined) words with differing execution and interpretation semantics?

   6.1.1550 FIND
   CORE
   ( c-addr -- c-addr 0 | xt 1 | xt -1 )
 
   Find the definition named in the counted string at c-addr. If the definition
   is not found, return c-addr and zero. If the definition is found, return its
   execution token xt. If the definition is immediate, also return one (1),
   otherwise also return minus-one (-1). For a given string, the values returned
   by FIND while compiling may differ from those returned while not compiling.

Does this mean that FIND can return a different xt when compiling than when interpreting? If yes, what execution semantics do these xts identify?

- anton