Add new operation to extract the set of undefined names.
authorChris Hanson <org/chris-hanson/cph>
Tue, 16 Dec 1986 06:25:33 +0000 (06:25 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 16 Dec 1986 06:25:33 +0000 (06:25 +0000)
v7/src/compiler/back/symtab.scm

index f7a8a8414596044a2e5d27ae44189e7071845e8e..357e612bc403f4c262aced1de3982225fca595f9 100644 (file)
@@ -37,6 +37,8 @@
 
 ;;;; Symbol Tables
 
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/symtab.scm,v 1.37 1986/12/16 06:25:33 cph Exp $
+
 (declare (usual-integrations))
 \f
 (define (make-symbol-table)
@@ -52,7 +54,7 @@
   (let ((entry (assq key (cdr table))))
     (if entry
        (cdr entry)
-       (let ((nothing (vector #!FALSE '())))
+       (let ((nothing (vector #F '())))
          (set-cdr! table (cons (cons key nothing) (cdr table)))
          nothing))))
 
     (or (and entry (vector-ref (cdr entry) 0))
        (error "SYMBOL-TABLE-VALUE: Undefined key" key))))
 
-(define (binding-value binding)
+(define (symbol-table-undefined-names table)
+  (let loop ((entries (cdr table)))
+    (cond ((null? entries) '())
+         ((binding-value (cdr (car entries))) (loop (cdr entries)))
+         (else (cons (car (car entries)) (loop (cdr entries)))))))
+
+(define-integrable (binding-value binding)
   (vector-ref binding 0))
 
 (define (set-binding-value! binding value)