| variable skipsynclines \ are sync lines ("#line ...") invisible to the parser? |
variable skipsynclines \ are sync lines ("#line ...") invisible to the parser? |
| skipsynclines on |
skipsynclines on |
| |
|
| |
Variable flush-comment flush-comment off |
| |
|
| |
: ?flush-comment |
| |
flush-comment @ 0= ?EXIT |
| |
f-comment 2@ nip |
| |
IF cr f-comment 2@ 2 /string type 0 0 f-comment 2! THEN ; |
| |
|
| : start ( -- addr ) |
: start ( -- addr ) |
| cookedinput @ ; |
cookedinput @ ; |
| |
|
| nowhite ++ |
nowhite ++ |
| <- name ( -- ) |
<- name ( -- ) |
| |
|
| (( {{ start }} ` \ nonl ** nl {{ end |
(( {{ ?flush-comment start }} ` \ nonl ** nl {{ end |
| 2dup 2 min s" \+" compare 0= IF f-comment 2! ELSE 2drop THEN }} |
2dup 2 min s" \+" compare 0= IF f-comment 2! ELSE 2drop THEN }} |
| )) <- comment ( -- ) |
)) <- comment ( -- ) |
| |
|
| : output-label ( -- ) |
: output-label ( -- ) |
| ." &&I_" c-name 2@ type ." ," cr ; |
." &&I_" c-name 2@ type ." ," cr ; |
| |
|
| : output-alias ( -- ) |
: output-alias ( -- ) flush-comment on |
| f-comment 2@ nip |
?flush-comment |
| IF cr f-comment 2@ 2 /string type 0 0 f-comment 2! THEN |
|
| primitive-number @ . ." alias " forth-name 2@ type cr |
primitive-number @ . ." alias " forth-name 2@ type cr |
| -1 primitive-number +! ; |
-1 primitive-number +! ; |
| |
|
| : output-forth ( -- ) |
: output-forth ( -- ) flush-comment on |
| f-comment 2@ 2 min s" \+" compare 0= |
?flush-comment |
| IF cr f-comment 2@ 2 /string type 0 0 f-comment 2! THEN |
|
| forth-code @ 0= |
forth-code @ 0= |
| IF output-alias |
IF output-alias |
| ELSE ." : " forth-name 2@ type ." ( " |
ELSE ." : " forth-name 2@ type ." ( " |