;
: farbendemo'' !" ====" ;
: farbendemo'
7 0 +do
i postpone literal postpone
7 0 +do
i postpone literal postpone farbendemo''
loop
postpone
loop
; immediate
: farbendemo farbendemo' ;
256 Constant max-line
Create line-buffer max-line 2 + allot
0 Value fd-in
: open-input ( addr u -- ) r/o open-file throw to fd-in ;
: printsource ( from to addr u -- )
open-input
cr
0
begin
1+
line-buffer max-line fd-in read-line throw
while
swap 2over rot swap over >= if
swap over <= if
dup 0 U.R s" -> " type swap line-buffer swap type cr
else swap drop
endif
else swap drop swap drop
endif
repeat
2drop 2drop
fd-in close-file throw ;
: printCodeHeader ( end start namelen addr -- ) \ prints source code header containing line numbers
swap 2dup type 2swap \ s" (" type 0 U.R s" -" type 0 U.R s" ): " type cr cr type ;
swap 2swap cr printsource cr ; \ type emit emit ;
: {source} ( -- ) ;
: ( -- , xt-{/source} ) ['] {/source} , , , , , ;
!" Dies ist eine Testpraesentation!"
!" Eines Tages hatten wir [" !" Harald Steinlechner"
!" und " !" Denis Knauf"
!" ] die tolle Idee, eine Praesentationssoftware zu schreiben."
<||> !" Forth eignet sich gut für Domain specific languages." ||>
<||> !" Makros sind ein Heidenspass." ||>
<||> !" Execution tokens erzeugen unseren Code." ||>