summaryrefslogtreecommitdiff
path: root/usr/src/common/ficl/softcore/prefix.fr
blob: 609719f22c61be200cee492d9b7201356490e44b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
\ **
\ ** Prefix words for ficl
\ ** submitted by Larry Hastings, larry@hastings.org
\ **
\ (jws) To make a prefix, simply create a new definition in the <prefixes>
\ wordlist. start-prefixes and end-prefixes handle the bookkeeping

variable save-current

: start-prefixes   get-current save-current ! <prefixes> set-current ;
: end-prefixes     save-current @ set-current ;
: show-prefixes    <prefixes> >search  words  search> drop ;

start-prefixes

S" FICL_WANT_EXTENDED_PREFIX" ENVIRONMENT? drop [if]

\ define " (double-quote) as an alias for s", and make it a prefix
: " postpone s" ; immediate


\ make .( a prefix (we just create an alias for it in the prefixes list)
: .( postpone .( ; immediate


\ make \ a prefix, and add // (same thing) as a prefix too
: \ postpone \ ; immediate
: // postpone \ ; immediate


\ ** add 0b, 0o, 0d, 0x and $ as prefixes
\ ** these temporarily shift the base to 2, 8, 10, and 16 respectively
\ ** and consume the next number in the input stream, pushing/compiling
\ ** as normal
\ **
\ ** __tempbase is precompiled, see prefix.c

: 0b  2 __tempbase ; immediate
: 0o  8 __tempbase ; immediate

[endif]

: 0d 10 __tempbase ; immediate
: 0x 16 __tempbase ; immediate
: $ 16 __tempbase ; immediate

end-prefixes