Thank you both for your help! This is what I ended up with: (define port (open-input-file "...")) (with-module-reading-parameterization (lambda () (pretty-print (syntax->datum (parameterize ([current-namespace (make-base-namespace)]) (expand (read-syntax (object-name port) port)))))))
I apologize for sending out two different emails on the same question. I had sent one before subscribing and thought it was discarded when it was actually only queued for approval. -- Tom On Wed, Feb 18, 2015 at 8:49 PM, Spencer Florence <spen...@florence.io> wrote: > There is also a `with-module-reading-parameterization` that sets up the > reader to do this. > > On Wed, Feb 18, 2015, 10:36 PM Sam Tobin-Hochstadt <sa...@cs.indiana.edu> > wrote: > >> On Wed, Feb 18, 2015 at 10:22 PM, Thomas Gilray <thomas.gil...@gmail.com> >> wrote: >> > Hi everyone, >> > >> > I am trying to figure out how to use read-syntax on a port for an entire >> > .rkt file. I then want to call (expand ...) on this and get back a >> (begin >> > ...) or (module ...) for the entire file in fully expanded form. >> > >> > If I run (expand #`(define ...)) under a #lang racket, everything >> works. If >> > I place this in a file and use read-syntax however, each top-level >> > expression is returned individually, the language declaration isn't >> > supported, and without this information the expander complains that >> "define" >> > isn't defined. How do I properly read-syntax a whole file at once? >> > >> > Any ideas would be greatly appreciated. >> >> I've implemented this a couple times recently, probably the best >> version is here: >> https://github.com/samth/pycket/blob/master/pycket/pycket-lang/expand.rkt >> >> The short answer is that you want to use `read-accept-lang` to enable >> #lang, call `read-syntax` once on the port, and the call `expand` in a >> new namespace (probably created with `make-base-namespace`). >> >> Sam >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users >> >
____________________ Racket Users list: http://lists.racket-lang.org/users