(set cbuf '((nil))) (def open args (let s (apply ops args) (push (list s) cbuf) s)) (def close (s) (pull s cbuf caris) (cls s)) (def peek ((o s ins)) (if ((cor no stream) s) (let c (wait (fn () (atomic (let p (get s cbuf) (or (cdr p) (aif (bitc s) (xdr p it) nil)))))) (if (= c 'eof) nil c)) (car (car s)))) (def rdc ((o s ins)) (if ((cor no stream) s) (let c (wait (fn () (atomic (let p (get s cbuf) (aif (cdr p) (do (xdr p nil) it) (bitc s)))))) (if (= c 'eof) nil c)) (deq s))) (set bbuf nil) (def bitc ((o s ins)) (let bits (get s bbuf) (aif (gets (rev (cdr bits)) chars) (do (pull s bbuf caris) (car it)) (let b (rdb s) (if (in b nil 'eof) b (do (if bits (push b (cdr bits)) (push (list s b) bbuf)) (bitc s))))))) (def digit (c (o base i10)) (mem c (udrop (udrop base i16) "fedcba9876543210"))) (set breakc (cor no whitec (is \;) [get _ syntax])) (def signc (c) (in c \+ \-)) (def intrac (c) (in c \. \!))