8 create car memsize allot
9 create cdr memsize allot
10 create types memsize allot
12 0 constant symbol-type
21 create here 1+ , allot ;
33 2dup = abort" Stack underflow."
36 -rot swap ( v sp' s0 )
45 : inc-parse-idx parse-idx +! ;
46 : dec-parse-idx parse-idx -! ;
48 : ?charavailable ( -- bool )
49 parse-str @ @ parse-idx @ >
52 : nextchar ( -- char )
54 parse-str @ 1+ parse-idx @ + @
60 : ?whitespace ( -- bool )
67 nextchar [char] ( = or
68 nextchar [char] ) = or
85 nextchar [char] # <> if exit then
89 nextchar dup [char] t = swap [char] f = or
109 nextchar [char] ( = if
114 nextchar [char] ) = if
124 \ Parse a counted string into a scheme expression
125 : parseexp ( straddr n -- exp )
136 : escape 27 emit [char] [ emit ;
137 : escape-end [char] m emit ;
140 escape [char] 3 emit [char] 0 + emit escape-end
144 escape [char] 0 escape-end
161 create repl-buffer 161 allot
164 repl-buffer parse-str !
171 repl-buffer 1+ 160 expect cr