From 4f8bc6e5af628cdecf13127588732a7dd12c76f2 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 7 Aug 2017 11:21:09 -0400 Subject: [PATCH] Ugh, forgot to git-add this --- racket/syndicate/syntax-classes.rkt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 racket/syndicate/syntax-classes.rkt diff --git a/racket/syndicate/syntax-classes.rkt b/racket/syndicate/syntax-classes.rkt new file mode 100644 index 0000000..1504a46 --- /dev/null +++ b/racket/syndicate/syntax-classes.rkt @@ -0,0 +1,21 @@ +#lang racket/base +;; Common syntax classes. + +(provide (for-syntax assertions + name)) + +(require (for-syntax racket/base)) +(require (for-syntax syntax/parse)) +(require (for-syntax syntax/srcloc)) + +(require "trie.rkt") + +(begin-for-syntax + (define-splicing-syntax-class assertions + (pattern (~seq #:assertions P0) #:attr P #'(pattern->trie ' P0)) + (pattern (~seq #:assertions* P)) ;; P should be an expression yielding a trie + (pattern (~seq) #:attr P #'trie-empty)) + + (define-splicing-syntax-class name + (pattern (~seq #:name N)) + (pattern (~seq) #:attr N #'#f)))