#lang scheme/base
(require
"../rpn.ss"
"../ns.ss"
"../scat.ss"
"op.ss")
(provide macro
macro:
macro-push
macro->dictionary
)
(define-syntax-rule (macro-push val p sub) (let ((p ((lit val) p))) sub))
(define-syntax-rule (macro . form) (ns (macro) . form))
(define-syntax-rule (macro->dictionary compile-dict code ...)
(rpn-parse (compile-dict (macro) scat-apply macro-push macro-push macro: (rpn-lambda) ) code ...))
(define-syntax-rule (macro: code ...)
(make-word (macro->dictionary rpn:-compile code ...)))