21 lines
493 B
Racket
21 lines
493 B
Racket
|
#lang racket/base
|
||
|
;; Common syntax classes.
|
||
|
|
||
|
(provide (for-syntax assertions
|
||
|
name))
|
||
|
|
||
|
(require racket/set)
|
||
|
|
||
|
(require (for-syntax racket/base))
|
||
|
(require (for-syntax syntax/parse))
|
||
|
(require (for-syntax syntax/srcloc))
|
||
|
|
||
|
(begin-for-syntax
|
||
|
(define-splicing-syntax-class assertions
|
||
|
(pattern (~seq #:assertions [exprs ...]))
|
||
|
(pattern (~seq) #:attr (exprs 1) #'()))
|
||
|
|
||
|
(define-splicing-syntax-class name
|
||
|
(pattern (~seq #:name N))
|
||
|
(pattern (~seq) #:attr N #'#f)))
|