functionality as the system already provides for +, -, list, etc.
Shorten some of the warning messages.
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/make.scm,v 4.3 1988/04/23 08:25:27 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/make.scm,v 4.4 1988/05/11 04:18:27 jinx Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(make-environment
(define :name "SF")
(define :version 4)
- (define :modification 3)
+ (define :modification 4)
(define :files)
(define :rcs-header ;RCS sets up this string.
- "$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/make.scm,v 4.3 1988/04/23 08:25:27 cph Exp $")
+ "$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/make.scm,v 4.4 1988/05/11 04:18:27 jinx Exp $")
(define :files-lists
(list
(cons package/cgen
'("cgen.bin")) ; Internal -> SCode
(cons package/expansion
- '("usiexp.bin")) ; Usual Integrations: Expanders
+ '("usiexp.bin" ; Usual Integrations: Expanders
+ "reduct.bin")) ; User defined expanders
(cons package/declarations
'("pardec.bin")) ; Declaration Parser
(cons package/copy
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/pardec.scm,v 3.7 1988/04/23 08:50:50 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/pardec.scm,v 3.8 1988/05/11 04:18:50 jinx Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(define (declarations/known? declaration)
(assq (car declaration) known-declarations))
+;; before-bindings? should be true if binding <name> should nullify
+;; the declaration. It should be false if a binding and the
+;; declaration can "coexist".
+
(define (define-declaration name before-bindings? parser)
(let ((entry (assq name known-declarations)))
(if entry
(finish value)))
(variable/final-value variable environment finish if-not))))))
\f
-;;;; User provided expansions and processors
+;;;; User provided reductions and expansions
+
+;;; Reductions. See reduct.scm for a description.
+
+(define-declaration 'REDUCE-OPERATOR false
+ (lambda (block table/cons table reduction-rules)
+ block ; ignored
+ ;; Maybe it wants to be exported?
+ (bind/general table/cons table false 'EXPAND false
+ (map car reduction-rules)
+ (map (lambda (rule)
+ (reducer/make rule block))
+ reduction-rules))))
+
+;; Expansions. These should be used with great care, and require
+;; knowing a fair amount about the internals of sf. This declaration
+;; is purely a hook, with no convenience.
(define expander-evaluation-environment
(access package/expansion
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/subst.scm,v 3.9 1988/04/23 08:51:21 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/subst.scm,v 3.10 1988/05/11 04:19:05 jinx Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(if (and (not (variable/integrated var))
(not (variable/referenced var))
(not (variable/can-ignore? var)))
- (warn "Open block variable bound and unreferenced:"
+ (warn "Unreferenced defined variable:"
(variable/name var))))
vars))
(if (open-block/optimized expression)
(if (and (not (variable/referenced variable))
(not (variable/integrated variable))
(not (variable/can-ignore? variable)))
- (warn "Procedure variable bound and unreferenced:"
+ (warn "Unreferenced bound variable:"
(variable/name variable)
*current-block-names*)))
(if rest
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/usiexp.scm,v 3.7 1988/04/23 08:52:33 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/sf/usiexp.scm,v 3.8 1988/05/11 04:19:27 jinx Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(map cons
usual-integrations/expansion-names
usual-integrations/expansion-values))
+\f
+;;;; Hooks and utilities for user defined reductions and expanders
+
+;;; User defined reductions appear in reduct.scm
;;; Scode->Scode expanders
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/sf/make.scm,v 4.3 1988/04/23 08:25:27 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/sf/make.scm,v 4.4 1988/05/11 04:18:27 jinx Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(make-environment
(define :name "SF")
(define :version 4)
- (define :modification 3)
+ (define :modification 4)
(define :files)
(define :rcs-header ;RCS sets up this string.
- "$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/sf/make.scm,v 4.3 1988/04/23 08:25:27 cph Exp $")
+ "$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/sf/make.scm,v 4.4 1988/05/11 04:18:27 jinx Exp $")
(define :files-lists
(list
(cons package/cgen
'("cgen.bin")) ; Internal -> SCode
(cons package/expansion
- '("usiexp.bin")) ; Usual Integrations: Expanders
+ '("usiexp.bin" ; Usual Integrations: Expanders
+ "reduct.bin")) ; User defined expanders
(cons package/declarations
'("pardec.bin")) ; Declaration Parser
(cons package/copy