; lexical scanner ; ------- lib ------------ (def != (a b) () (if (= a b) 0 1)) (def nop () () 0) (def print a () (sys 1 a)) (def printc c () (sys 2 c)) (def space () () (sys 2 32)) (def nl () () (sys 2 10)) (def exit () () (sys 13)) ; -------- header ---------- (enum 127 EOF) (enum 0 NIL) ; --------- string ---------- ; input output of string functions are pointers ; to dereference it, use (vec s 0) ; print string (def prstr s () (while (vec s 0) (do (printc (vec s 0)) (set s (+ s 1))))) ; ---------------------- (let tok) (def tokenise () () (do (set tok (sys 3)) ; (prstr tok) ; (space) (nop))) (def testtok () () (do (tokenise) (while (!= (vec tok 0) EOF) (do (prstr tok) (space) (tokenise))))) (def main () () (do (sys 11) ; read-in file (testtok))) ; End