From ca365d17c1859306d339f0bfc598876c56a8e48e Mon Sep 17 00:00:00 2001 From: Leif Andersen Date: Mon, 29 Sep 2014 22:36:49 -0400 Subject: [PATCH] Add syntax/parse/lib/function-header library. --- .../syntax/parse/lib/function-header.rkt | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 racket/collects/syntax/parse/lib/function-header.rkt diff --git a/racket/collects/syntax/parse/lib/function-header.rkt b/racket/collects/syntax/parse/lib/function-header.rkt new file mode 100644 index 0000000000..4343597e03 --- /dev/null +++ b/racket/collects/syntax/parse/lib/function-header.rkt @@ -0,0 +1,26 @@ +#lang racket/base + +(require "../../parse.rkt" + "../experimental/template.rkt") + +(provide (all-defined-out)) + +(define-syntax-class function-header + (pattern ((~or header:function-header name:id) . args:args) + #:attr params + (template ((?@ . (?? header.params ())) + . args.params)))) + +(define-syntax-class args + (pattern (arg:arg ...) + #:attr params #'(arg.name ...)) + (pattern (arg:arg ... . rest:id) + #:attr params #'(arg.name ... rest))) + +(define-splicing-syntax-class arg + #:attributes (name) + (pattern name:id) + (pattern [name:id default]) + (pattern (~seq kw:keyword name:id)) + (pattern (~seq kw:keyword [name:id default]))) +