From 4e987026148fe65c323afbc93cd560c07bf06b3f Mon Sep 17 00:00:00 2001 From: Yale AI Dept Date: Wed, 14 Jul 1993 13:08:00 -0500 Subject: Import to github. --- flic/flic-walker.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 flic/flic-walker.scm (limited to 'flic/flic-walker.scm') diff --git a/flic/flic-walker.scm b/flic/flic-walker.scm new file mode 100644 index 0000000..846d89f --- /dev/null +++ b/flic/flic-walker.scm @@ -0,0 +1,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))))) + -- cgit v1.2.3