\ tag: Forth Decompiler \ \ this code implements IEEE 1275-1994 ch. 7.5.3.2 \ \ Copyright (C) 2003 Stefan Reinauer \ \ See the file "COPYING" for further information about \ the copyright and warranty status of this work. \ 1 value (see-indent) : (see-cr) cr (see-indent) spaces ; : indent+ (see-indent) 2+ to (see-indent) ; : indent- (see-indent) 2- to (see-indent) ; : (see-colon) dup ." : " cell - lfa2name type (see-cr) begin cell+ dup @ dup ['] (semis) <> while space dup case ['] do?branch of ." if" (see-cr) indent+ drop cell+ endof ['] dobranch of ." then" indent- (see-cr) drop cell+ endof ['] (begin) of ." begin" indent+ (see-cr) drop endof ['] (again) of ." again" (see-cr) drop endof ['] (until) of ." until" (see-cr) drop endof ['] (while) of indent- (see-cr) ." while" indent+ (see-cr) drop 2 cells + endof ['] (repeat) of indent- (see-cr) ." repeat" (see-cr) drop 2 cells + endof ['] (lit) of ." ( lit ) h# " drop 1 cells + dup @ u. endof ['] (") of 22 emit space drop dup cell+ @ 2dup swap 2 cells + swap type 22 emit + aligned cell+ endof cell - lfa2name type endcase repeat cr ." ;" 2drop ; : (see) ( xt -- ) cr dup @ case 1 of (see-colon) endof 3 of ." constant " dup cell - lfa2name type ." = " execute . endof 4 of ." variable " dup cell - lfa2name type ." = " execute @ . endof 5 of ." defer " dup cell - lfa2name type cr ." is " cell+ @ cell - lfa2name type cr endof ." primword " swap cell - lfa2name type endcase cr ; : see ' (see) ;