+ restore-parse-idx
+ true
+;
+
+: character? ( -- bool )
+ nextchar [char] # <> if false exit then
+
+ store-parse-idx
+ inc-parse-idx
+
+ nextchar [char] \ <> if restore-parse-idx false exit then
+
+ inc-parse-idx
+
+ charavailable? false = if restore-parse-idx false exit then
+
+ restore-parse-idx true
+;
+
+: readnum ( -- num-atom )
+ minus? dup if
+ inc-parse-idx
+ then
+
+ 0
+
+ begin digit? while
+ 10 * nextchar [char] 0 - +
+ inc-parse-idx
+ repeat
+
+ swap if negate then
+
+ number-type
+;
+
+: readbool ( -- bool-atom )
+ inc-parse-idx
+
+ nextchar [char] f = if
+ false
+ else
+ true