What does require forbidden or parse recursively means? The code I posted roughly works like this:
Some reader file, like load-reader.rkt -- for example, modifying the SRFI-105 reader, and the client code of this reader can use require
;; custom reader
#lang racket
(require syntax/strip-context)
(provide (rename-out [literal-read read]
[literal-read-syntax read-syntax]))
(define (literal-read in)
(syntax->datum
(literal-read-syntax #f in)))
(define (literal-read-syntax src in)
(define lst-code (read-all-and-print in))
(strip-context `(module anything racket/load (compile-enforce-module-constants #f) ,@lst-code)))
(define (read-all-and-print in)
(define expr (read in))
(if (eof-object? expr)
'()
(list* `(printf "Running ~s\n" ',expr)
expr
(read-all-and-print in))))
Some client code:
#lang reader "load-reader.rkt"
(displayln (+ 3 4))
(require racket/unsafe/ops)
(displayln unsafe-fx+)