6.17.5.5 Performing translator actions

There are the following words for performing the various translator actions:

interpreting ( translator –  ) gforth-experimental

perform interpreter action of translator

compiling ( translator –  ) gforth-experimental

perform compile action of translator

postponing ( translator –  ) gforth-experimental

perform postpone action of translator

?found ( token|0 – token  ) gforth-experimental “question-found”

throws -13 (undefined word) if token is 0.

Their typical use is in a text interpreter. A simple text interpreter could look like this:

: myinterpret ( -- )
  \ refill happens outside
  begin
    parse-name dup while
      forth-recognize ?found state @ if compiling else interpreting then
  repeat
  2drop ;

This text interpreter itself does not deal with postponing; ]] can be implemented as a text interpreter that performs the postponing:

: ]] ( -- )
  \ works only within a line
  begin
    parse-name dup 0= abort" [[ missing"
    2dup "[[" str= 0= while
      forth-recognize ?found postponing
   repeat
   2drop ; immediate