Welcome to the CHICKEN Scheme pasting service
Seems sane enough. added by zilti on Sun Jan 7 13:23:29 2018
(define (read-keyword location l)
(if (char=? (peek-char) #\space)
(let ((s (apply string (reverse l))))
(case s
("abstract" (begin (set! location (cons abstract: location))
(make-lexical-token 'U_ABSTRACT location s)))
("class" (begin (set! location (cons class: location))
(make-lexical-token 'U_CLASS location s)))
("mixin" (begin (set! location (cons mixin: location))
(make-lexical-token 'U_MIXIN location s)))
("interface" (begin (set! location (cons interface: location))
(make-lexical-token 'U_INTERFACE location s)))
("type" (begin (set! location (cons type: location))
(make-lexical-token 'U_TYPE location s)))
("const" (begin (set! location (cons const: location))
(make-lexical-token 'U_CONST location s)))
("var" (begin (set! location (cons var: location))
(make-lexical-token 'U_VAR location s)))
("struct" (begin (set! location (cons struct: location))
(make-lexical-token 'U_STRUCT location s)))
("enum" (begin (set! location (cons enum: location))
(make-lexical-token 'U_ENUM location s)))))
(read-keyword location (cons (read-char) l))))