--- gforth/kernel/Attic/special.fs 1997/06/06 17:28:16 1.2 +++ gforth/kernel/Attic/special.fs 1999/03/23 20:24:27 1.8 @@ -1,6 +1,6 @@ \ words with non-default and non-immediate compilation semantics -\ Copyright (C) 1996 Free Software Foundation, Inc. +\ Copyright (C) 1996,1998 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -21,12 +21,23 @@ \ this file comes last, because these words override cross' words. create s"-buffer /line chars allot -:noname [char] " parse - /line min >r s"-buffer r@ cmove - s"-buffer r> ; -:noname [char] " parse postpone SLiteral ; +has? compiler 0= +[IF] : s" [ELSE] :noname [THEN] + [char] " parse + /line min >r s"-buffer r@ cmove + s"-buffer r> ; +has? compiler [IF] +:noname [char] " parse postpone SLiteral ; interpret/compile: S" ( compilation 'ccc"' -- ; run-time -- c-addr u ) \ core,file s-quote + \G Compilation: Parse a string @var{ccc} delimited by a @code{"} + \G (double quote). At run-time, return the length, @var{u}, and the + \G start address, @var{c-addr} of the string. Interpretation: parse + \G the string as before, and return @var{c-addr}, @var{u}. The + \G string is stored in a temporary buffer which may be overwritten + \G by subsequent uses of @code{S"}. +[THEN] +has? compiler [IF] : [IS] ( compilation "name" -- ; run-time xt -- ) \ possibly-gforth bracket-is ' >body postpone ALiteral postpone ! ; immediate restrict @@ -41,6 +52,11 @@ interpret/compile: What's ( "name" -- ad :noname [char] " parse type ; :noname postpone (.") ," align ; interpret/compile: ." ( compilation 'ccc"' -- ; run-time -- ) \ core dot-quote + \G Compilation: Parse a string @var{ccc} delimited by a " (double + \G quote). At run-time, display the string. Interpretation semantics + \G for this word are undefined in ANS Forth. Gforth's interpretation + \G semantics are to display the string. This is the simplest way to + \G display a string from within a definition; see examples below. \ DOES> 17mar93py @@ -55,4 +71,13 @@ interpret/compile: DOES> ( compilation ' IS Alias TO ( addr "name" -- ) \ core-ext immediate +[THEN] + +has? compiler [IF] +: interpret/compile? ( xt -- flag ) + >does-code ['] S" >does-code = ; +[ELSE] +: interpret/compile? + false ; +[THEN]