syndicate-rkt/syndicate/syntax-classes.rkt

24 lines
663 B
Racket
Raw Normal View History

2021-06-09 21:05:51 +00:00
#lang racket/base
;;; SPDX-License-Identifier: LGPL-3.0-or-later
;;; SPDX-FileCopyrightText: Copyright © 2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2021-06-10 08:00:22 +00:00
(provide (for-syntax <when>
<name>
2021-06-09 21:05:51 +00:00
<daemon?>))
(require (for-syntax racket/base))
(require (for-syntax syntax/parse))
(begin-for-syntax
2021-06-10 08:00:22 +00:00
(define-splicing-syntax-class <when>
(pattern (~seq #:when E))
(pattern (~seq) #:attr E #'#t))
2021-06-09 21:05:51 +00:00
(define-splicing-syntax-class <name>
(pattern (~seq #:name N))
(pattern (~seq) #:attr N #''?))
(define-splicing-syntax-class <daemon?>
(pattern (~seq #:daemon? D))
(pattern (~seq) #:attr D #'#f)))