Add syntax/parse/lib/function-header library.

This commit is contained in:
Leif Andersen 2014-09-29 22:36:49 -04:00 committed by Ryan Culpepper
parent af6c39611d
commit ca365d17c1

View File

@ -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])))