racket/collects/compiler/commands/expand.rkt
2010-04-27 16:50:15 -06:00

27 lines
833 B
Racket

#lang scheme/base
(require scheme/cmdline
raco/command-name
scheme/pretty)
(define source-files
(command-line
#:program (short-program+command-name)
#:args source-file
source-file))
(for ([src-file source-files])
(let ([src-file (path->complete-path src-file)])
(let-values ([(base name dir?) (split-path src-file)])
(parameterize ([current-load-relative-directory base]
[current-namespace (make-base-namespace)]
[read-accept-reader #t])
(call-with-input-file*
src-file
(lambda (in)
(port-count-lines! in)
(let loop ()
(let ([e (read-syntax src-file in)])
(unless (eof-object? e)
(pretty-print (syntax->datum (expand e)))
(loop))))))))))