2021-06-09 21:05:51 +00:00
|
|
|
#lang racket/base
|
|
|
|
;;; SPDX-License-Identifier: LGPL-3.0-or-later
|
2023-01-16 14:57:29 +00:00
|
|
|
;;; SPDX-FileCopyrightText: Copyright © 2021-2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
2021-06-09 21:05:51 +00:00
|
|
|
|
2021-06-10 08:00:22 +00:00
|
|
|
(provide (for-syntax <when>
|
|
|
|
<name>
|
2021-06-15 10:43:27 +00:00
|
|
|
<daemon?>
|
2021-06-18 11:48:12 +00:00
|
|
|
<link?>
|
|
|
|
<matches>))
|
2021-06-09 21:05:51 +00:00
|
|
|
|
|
|
|
(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))
|
2021-06-15 10:43:27 +00:00
|
|
|
(pattern (~seq) #:attr D #'#f))
|
|
|
|
|
|
|
|
(define-splicing-syntax-class <link?>
|
|
|
|
(pattern (~seq #:link? L))
|
2021-06-18 11:48:12 +00:00
|
|
|
(pattern (~seq) #:attr L #'#f))
|
|
|
|
|
|
|
|
(define-splicing-syntax-class <matches>
|
|
|
|
(pattern (~seq (~seq #:match [pattern-pieces ...+ discriminant]) ...))))
|