1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; UrForth level
1: self
-hosting
32-bit Forth compiler
4 ;; Copyright
(C
) 2020 Ketmar Dark
// Invisible Vector
6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 vocabulary
(concomp
-flow
) (hidden
) also
(concomp
-flow
) definitions
10 : [IF] ( level
-- newlevel
) 1+ ;
14 : [ELSE] ( level
-- newlevel
) 1- dup
if 1+ endif ;
17 : [ENDIF] ( level
-- newlevel
) 1- ;
28 [DEFINED
] parse
-name
-ex
[IF] parse
-name
-ex
[ELSE] parse
-skip
-comments parse
-name
[ENDIF]
29 dup ifnot tc
-refill not ERR
-UNBALANCED
-IFDEF ?error
endif
31 vocid
: (concomp
-flow
) voc
-search
-noimm
if execute
else 2drop
endif
34 alias tc
-[ELSE] tc
-$
ELSE
36 : tc
-[ENDIF] ( -- ) ; immediate
37 alias tc
-[ENDIF] tc
-[THEN]
38 alias tc
-[ENDIF] tc
-$
endif
42 ifnot
[compile
] tc
-[ELSE] endif
45 : tc
-[IFNOT
] ( cond
-- )
46 if [compile
] tc
-[ELSE] endif
50 : tc
-[IFDEF
] ( -- ) \ word
51 parse
-name has
-word? ifnot
[compile
] tc
-[ELSE] endif
54 : tc
-[IFNDEF
] ( -- ) \ word
55 parse
-name has
-word?
if [compile
] tc
-[ELSE] endif
58 : tc
-[DEFINED
] ( -- flag
) \ word
62 : tc
-[UNDEFINED
] ( -- flag
) \ word
63 parse
-name has
-word? not
68 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
69 : tc
-$
IF ( -- ) \ expr
70 asmx86
:lexer
:PrepareLineParser
72 asmx86
:macro
-instrs
:(if-eval
-cond
)
73 asmx86
:tk
-eol? not
-?abort
" eol expected"
74 ifnot
[compile
] tc
-[ELSE] endif