| \ converts primitives to, e.g., C code |
\ converts primitives to, e.g., C code |
| |
|
| \ Copyright (C) 1995 Free Software Foundation, Inc. |
\ Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. |
| |
|
| \ This file is part of Gforth. |
\ This file is part of Gforth. |
| |
|
| f-comment 2@ nip |
f-comment 2@ nip |
| IF cr f-comment 2@ 2 /string 1- |
IF cr f-comment 2@ 2 /string 1- |
| dup IF |
dup IF |
| |
2dup s" -" compare 0= |
| |
IF |
| |
flush-comment @ 1 = |
| |
IF ." #else" |
| |
ELSE ." [ELSE]" THEN |
| |
ELSE |
| flush-comment @ 1 = |
flush-comment @ 1 = |
| IF ." #ifdef HAS_" bounds ?DO I c@ toupper emit LOOP |
IF ." #ifdef HAS_" bounds ?DO I c@ toupper emit LOOP |
| ELSE ." has? " type ." [IF]" THEN cr |
ELSE ." has? " type ." [IF]" THEN |
| |
THEN cr |
| ELSE flush-comment @ 1 = IF ." #endif" ELSE ." [THEN]" THEN |
ELSE flush-comment @ 1 = IF ." #endif" ELSE ." [THEN]" THEN |
| cr THEN |
cr THEN |
| 0 0 f-comment 2! THEN ; |
0 0 f-comment 2! THEN ; |
| |
|
| : output-label ( -- ) 1 flush-comment ! |
: output-label ( -- ) 1 flush-comment ! |
| ?flush-comment |
?flush-comment |
| ." [" -2 primitive-number @ - 0 .r ." ] " |
|
| ." (Label)&&I_" c-name 2@ type ." ," cr |
." (Label)&&I_" c-name 2@ type ." ," cr |
| -1 primitive-number +! ; |
-1 primitive-number +! ; |
| |
|
| : output-alias ( -- ) flush-comment on |
: output-alias ( -- ) flush-comment on |
| ?flush-comment |
?flush-comment |
| primitive-number @ . ." alias " forth-name 2@ type cr |
( primitive-number @ . ." alias " ) ." Primitive " forth-name 2@ type cr |
| -1 primitive-number +! ; |
-1 primitive-number +! ; |
| |
|
| : output-forth ( -- ) flush-comment on |
: output-forth ( -- ) flush-comment on |
| : process ( xt -- ) |
: process ( xt -- ) |
| bl word count rot |
bl word count rot |
| process-file ; |
process-file ; |
| |
|