1(module redact-gensyms ()
2  (import (scheme))
3  (import (chicken base))
4  (import (chicken irregex))
5  (import (chicken type))
6  (import (only (chicken io) read-line)
7          (only (chicken process-context) command-line-arguments)
8          (only (chicken string) string-split))
9
10  (define prefixes (if (null? (command-line-arguments))
11                       '("tmp" "g" "scm:")
12                       (string-split (car (command-line-arguments)) ",")))
13
14  (let ((rege (irregex `(: bow ($ (or ,@prefixes)) (+ numeric)))))
15    (print ";; numbers replaced with XXX by redact-gensyms.scm")
16    (print ";; prefixes: " prefixes)
17    (let lp ()
18      (let ((l (read-line)))
19        (if (not (eof-object? l))
20            (begin
21              (print (irregex-replace/all rege l 1 "XXX"))
22              (lp)))))))
23