;; Interface for zodiac compatibility layer, ;; for programs that used to manipulate the ;; output of zodiac elaboration. (module zodiac-sig mzscheme (require (lib "unitsig.ss")) (provide zodiac^) (define-signature zodiac^ (;; Syntax -> zodiac compatibility: syntax->zodiac ;; Zodiac compatibility -> syntax: zodiac->syntax structurize-syntax zread-object ; = (compose syntax-e zodiac-stx) ;; origin struct: origin-who ; 'source or 'macro origin-how ; #f or tree of syntax objects, ; as repotred by the 'origin ; property of the syntax object. ;; location struct: location-line ; = syntax line location-column ; = syntax col location-file ; = syntax src ;; Note: there is no location-offset, yet ;; EOF eof? ;; zodiac struct: ;; zodiac (stx) ; used to be (origin start finish) (struct zodiac (stx)) zodiac-origin ; = identity zodiac-start ; = identity zodiac-finish ; = zodiac-start ;; reader structs: ;; zodiac (stx) ;; zread ; used to have (object) ;; The sub-tree has been cut off; inspect ;; the stx object, instead. (struct zread ()) ;; elaborator structs: (struct parsed (back)) (struct varref (var)) (struct top-level-varref (module slot exptime? expdef? position)) ; added module, exptime?, position create-top-level-varref (struct bound-varref (binding)) create-bound-varref (struct binding (var orig-name)) create-binding make-lexical-varref lexical-varref? create-lexical-varref ; alias for bound-varref make-lexical-binding lexical-binding? create-lexical-binding ; alias for binding (struct app (fun args)) create-app (struct if-form (test then else)) create-if-form (struct quote-form (expr)) create-quote-form (struct begin-form (bodies)) create-begin-form (struct begin0-form (bodies)) create-begin0-form (struct let-values-form (vars vals body)) create-let-values-form (struct letrec-values-form (vars vals body)) create-letrec-values-form (struct define-values-form (vars val)) create-define-values-form (struct set!-form (var val)) create-set!-form (struct case-lambda-form (args bodies)) create-case-lambda-form (struct with-continuation-mark-form (key val body)) create-with-continuation-mark-form ;; Thess are new: (struct quote-syntax-form (expr)) create-quote-syntax-form (struct define-syntaxes-form (names expr)) create-define-syntaxes-form (struct define-for-syntax-form (names expr)) create-define-for-syntax-form (struct module-form (name requires ; lstof stx for module paths for-syntax-requires ; lstof stx for module paths for-template-requires ; lstof stx for module paths body ; begin form syntax-body ; begin form provides ; lstof (sym | (def-sym . prvd-sym) | (mod-path def-sym . prvd-sym)) syntax-provides ; ditto indirect-provides ; lstof sym kernel-reprovide-hint ; #f | #t | exclude-sym self-path-index)) ; module path index create-module-form (struct require/provide-form ()) create-require/provide-form ;; These forms are highly mzc-specific. They are recongized ;; as applications of the corresponding quoted symbols to the ;; right kinds of arguments. (struct global-prepare (vec pos)) create-global-prepare (struct global-lookup (vec pos)) create-global-lookup (struct global-assign (vec pos expr)) create-global-assign (struct safe-vector-ref (vec pos)) create-safe-vector-ref global-prepare-id global-lookup-id global-assign-id safe-vector-ref-id ;; args: (struct arglist (vars)) (struct sym-arglist ()) (struct list-arglist ()) (struct ilist-arglist ()) make-empty-back-box register-client)))