1 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; and now
for something completely different
...
5 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7 ;; colon calls defered word
"COMPILER:(TRACE-COLON)"
8 ;; semi calls defered word
"COMPILER:(TRACE-SEMI)"
10 ALSO COMPILER DEFINITIONS
12 0 VALUE TRACE
-ENTER
-EXIT
15 : (DO-TRACE
-ENTER
) ( -- )
19 " >>>ENTER: " STRLITERAL COMPILE TYPE
20 LATEST
-NFA DUP C@ SWAP CELL
+ SWAP STRLITERAL COMPILE XTYPE
22 \ COMPILE DEBUG
:BACKTRACE
26 ' (DO-TRACE-ENTER) TO (TRACE-COLON)
29 : (DO-TRACE-EXIT) ( -- )
33 " >>>EXIT: " STRLITERAL COMPILE TYPE
34 LATEST-NFA DUP C@ SWAP CELL+ SWAP STRLITERAL COMPILE XTYPE
36 \ COMPILE DEBUG:BACKTRACE
40 ' (DO-TRACE
-EXIT
) TO (TRACE
-SEMI
)
43 : (DO-TRACE
-DOES
) ( -- )
47 " >>>DOES: " STRLITERAL COMPILE TYPE
48 LATEST
-NFA DUP C@ SWAP CELL
+ SWAP STRLITERAL COMPILE XTYPE
49 " -- PFA: " STRLITERAL COMPILE TYPE
52 \ COMPILE DEBUG
:BACKTRACE
56 ' (DO-TRACE-DOES) TO (TRACE-DOES)
62 ALSO DEBUG DEFINITIONS
64 : (REPLACE) ( what-cfa with-cfa -- )
65 COMPILER:(CREATE-NAMELESS) CFA->PFA SWAP
66 STATE @ >R [COMPILE] ]
67 COMPILE DROP [COMPILE] CFALITERAL COMPILE EXECUTE-TAIL
72 : REPLACE ( -- ) \ what with
73 -FIND-REQUIRED -FIND-REQUIRED (REPLACE)