Eval in a function

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+)