1#lang racket/base 2 3(define filename "stypes.h") 4 5(define lines 6 (with-input-from-file filename 7 (lambda () 8 (let loop () 9 (let ([l (read-line)]) 10 (if (eof-object? l) 11 null 12 (cons l (loop)))))))) 13 14(define n 0) 15 16(with-output-to-file filename 17 #:exists 'truncate 18 (lambda () 19 (for-each 20 (lambda (l) 21 (cond 22 [(regexp-match #rx"^( +[a-z_A-Z][a-z_A-Z0-9]*,) *(?:/[*] [0-9]* [*]/)? *$" l) 23 => (lambda (m) 24 (let ([s (cadr m)]) 25 (printf "~a~a\n" 26 s 27 (format "~a/* ~a */" 28 (make-string (max 0 (- 40 (string-length s))) #\space) 29 n))) 30 (set! n (add1 n)))] 31 [(regexp-match #rx"^ +[a-zA-Z_][a-z_A-Z0-9]*," l) 32 (set! n (add1 n)) 33 (printf "~a\n" l)] 34 [else 35 (printf "~a\n" l)])) 36 lines))) 37