; This is a version of the read-xcheck-print loop that will first read from
; a selected file before entering the interactive loop.  Run the
; readfile-xcheck-print function to load the xcheck-tests.xl file when you're
; ready to handin your final results
;
; SEE ALSO: the file read-xcheck-print.l
;
;
(load "read-xcheck-print.l")

(defun readfile-xcheck-print-loop ()
  (prog (infilename instream xsexpr alist)
    (setq alist (preload-built-ins))
    (read-line)
    (princ "Name of xcheck test file: ")
    (setq infilename (read-line))
    (setq instream (open infilename))

    file-read-loop
	(setq xsexpr (read instream nil 'eof))
	(cond ( (not (eq xsexpr 'eof))
		(setq result (xcheck xsexpr alist))
		(print (car result))
		(setq alist (cadr result))
		(go file-read-loop) )
	)
    (terpri) (terpri)
    (read-xcheck-print-loop-no-preload alist)
  )
)

(defun read-xcheck-print-loop-no-preload (alist)
  (prog (result)
    loop
	(princ "XC>")
	(setq result (xcheck (read) alist))
	(cond ( (eq (car result) ':q)
		(return 'Bye) )
	)
	(princ (car result))
	(setq alist (cadr result))
	(terpri)(terpri)
	(go loop)
  )
)