blob: 846d89f7570a5f795c773aa0c44b8241b22b14a7 (
about) (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
;;; flic-walker.scm -- macros for defining code walkers for flic
;;;
;;; author : Sandra Loosemore
;;; date : 7 May 1992
;;;
;;; (define-flic-walker foo (object))
;;; creates a macro (define-foo type (object) . body)
;;; and a function (foo object) that dispatches on the type of object.
(define-syntax (define-flic-walker name args)
(let ((accessor-name (symbol-append 'flic-td- name '-walker))
(definer-name (symbol-append 'define- name)))
`(begin
(define-walker ,name ,accessor-name)
(define-local-syntax (,definer-name type args . body)
`(define-walker-method ,',name ,type ,args ,@body))
(define (,name ,@args)
(call-walker ,name ,@args)))))
|