racket/collects/syntax/parse/private/keywords.rkt
2010-10-04 11:54:03 -06:00

39 lines
885 B
Racket

#lang racket/base
(require (for-syntax racket/base))
;; == Keywords
(define-syntax-rule (define-keyword name)
(begin
(provide name)
(define-syntax name
(lambda (stx)
(raise-syntax-error #f "keyword used out of context" stx)))))
(define-keyword pattern)
(define-keyword ~var)
(define-keyword ~datum)
(define-keyword ~literal)
(define-keyword ~and)
(define-keyword ~or)
(define-keyword ~not)
(define-keyword ~seq)
(define-keyword ~between)
(define-keyword ~once)
(define-keyword ~optional)
(define-keyword ~rest)
(define-keyword ~describe)
(define-keyword ~!)
(define-keyword ~bind)
(define-keyword ~fail)
(define-keyword ~parse)
(define-keyword ~do)
(define-keyword ...+)
(define-keyword ~delimit-cut)
(define-keyword ~commit)
(define-keyword ~reflect)
(define-keyword ~splicing-reflect)
(define-keyword ~post)
(define-keyword ~eh-var)
(define-keyword ~peek)