preserves/implementations/racket/preserves/preserves-schema/lang/reader.rkt

22 lines
761 B
Racket

#lang racket/base
(provide (rename-out [read-preserves-schema-module read-syntax]))
(require preserves)
(require racket/port)
(require "../reader.rkt")
(require "../compiler.rkt")
(define (read-preserves-schema-module src [p (current-input-port)])
(define-values (_dirname filename _must-be-dir) (split-path src))
(define module-stx
(schema->module-stx
(string->symbol (path->string (path-replace-extension filename "")))
(parse-schema-dsl (port->list (lambda (p) (read-preserve p #:read-syntax? #t #:source src)) p)
#:source src
#:read-include (lambda (src) (file->preserves src #:read-syntax? #t)))))
;; (local-require racket/pretty)
;; (pretty-write module-stx) (newline)
module-stx)