(define-module (modules lexer lexer) #:export (read-tokens-from-port)) (define (read-tokens-from-port port) "" (display (read-char port))) (define (read-token) (define (read-token-loop first-char) (cond ((or (char-whitespace? first-char)) (read-token) ((eq? first-char #\() (cons 'left-paren #\()) ((eq? first-char #\)) (cons 'right-paren #\))) ((eq? first-char #\{) (cons 'right-bracket #\{)) ((eq? first-char #\}) (cons 'right-bracket #\})) (#t (error "illegal lexical syntax"))))) (let ((first-char (read-char))) (if (eof-object? first-char) '() (cons (read-token-loop first-char) '()))))