#lang scheme/base
(require
scheme/unit
(for-syntax
scheme/base
"../rpn/parse-tx.ss"
"../ns-tx.ss"))
(provide (all-defined-out))
(define-signature-form (define-syntaxes-ns stx)
(syntax-case stx ()
((_ ns (id ...) expr)
(list
(let ((ids (for/list ((id (syntax->list #'(id ...))))
(ns-prefixed #'ns id ))))
#`(define-syntaxes #,ids expr))))))
(define-signature-form (prefix-parsers stx)
(syntax-case stx ()
((_ namespace ((name arg ...) template) ...)
(list
#'(define-syntaxes-ns namespace (name ...)
(values (rpn-syntax-rules () ((_ arg ...) template)) ...))))))