You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
603 B
Scheme
20 lines
603 B
Scheme
(module actions mzscheme
|
|
(provide (all-defined))
|
|
(require (lib "stx.ss" "syntax"))
|
|
|
|
;; get-special-action: (syntax-object list) syntax-object syntax-object -> syntax-object
|
|
;; Returns the first action from a rule of the form ((which-special) action)
|
|
(define (get-special-action rules which-special none)
|
|
(cond
|
|
((null? rules) none)
|
|
(else
|
|
(syntax-case (car rules) ()
|
|
(((special) act)
|
|
(module-or-top-identifier=? (syntax special) which-special)
|
|
(syntax act))
|
|
(_ (get-special-action (cdr rules) which-special none))))))
|
|
|
|
|
|
|
|
)
|