--- gforth/kernel/Attic/special.fs 1998/05/02 21:29:09 1.5 +++ gforth/kernel/Attic/special.fs 1999/05/17 15:07:05 1.12 @@ -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. @@ -20,6 +20,8 @@ \ this file comes last, because these words override cross' words. +require ./vars.fs + create s"-buffer /line chars allot has? compiler 0= [IF] : s" [ELSE] :noname [THEN] @@ -29,6 +31,12 @@ has? compiler 0= 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 @i{ccc} delimited by a @code{"} + \G (double quote). At run-time, return the length, @i{u}, and the + \G start address, @i{c-addr} of the string. Interpretation: parse + \G the string as before, and return @i{c-addr}, @i{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] @@ -37,7 +45,7 @@ has? compiler [IF] :noname ' >body ! ; ' [IS] -interpret/compile: IS ( addr "name" -- ) \ gforth +interpret/compile: IS ( xt "name" -- ) \ gforth :noname ' >body @ ; :noname ' >body postpone ALiteral postpone @ ; @@ -46,6 +54,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 @i{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 @@ -53,11 +66,13 @@ interpret/compile: ." ( compilation 'ccc dodoes, here !does ] defstart :-hook ; :noname - ;-hook postpone (does>) ?struc dodoes, + ;-hook ?struc + [ has? xconds [IF] ] exit-like [ [THEN] ] + postpone (does>) dodoes, defstart :-hook ; interpret/compile: DOES> ( compilation colon-sys1 -- colon-sys2 ; run-time nest-sys -- ) \ core does -' IS Alias TO ( addr "name" -- ) \ core-ext +' IS Alias TO ( w "name" -- ) \ core-ext immediate [THEN]