




(defun show-and-tell-type (symbol)
  (format t "~%~S IS A ~A" symbol
	  (cond ((get symbol 'si:type-predicate)
		 'SPECIFIER)
		((fboundp symbol)
		 (selectq (type-of (fsymeval symbol))
		   (cons 'MACRO)
		   (compiled-function 'FUNCTION)
		   (closure 'SPECIAL-FORM)))
		((get symbol 'system:system-constant)
		 'CONSTANT)
		((assq symbol si:*interpreter-declaration-type-alist*)
		 'DECLARATION)
		(t 'VARIABLE))))


(defun tester ()
  (progn
    (dolist (each '(unwind-protect	;things that are fboundp: macros, functions, and special forms
		       make-package  	
		     defvar))		
      (show-and-tell-type each))
    (dolist (each '(*package*	        ;things that are boundp: constants and variables
		     boole-and
		     ))		
      (show-and-tell-type each))
    (dolist (each '(short-float		;specifiers and declarations (elements of si:*standard-system-type-specifiers*)
		    notinline))
      (show-and-tell-type each))))


(defun parse-pair (infile outfile)
  (do ((item (read infile nil) (read infile nil))
       (route (read infile nil) (read infile nil)))
      ((null (print route)) '*done*)
    (when (fixnump (first route))
      (print item outfile)
      (prin1-then-space (cons
			  (cond ((get item 'si:type-predicate) 'ts)	;type specifier
				((fboundp item)
				 (selectq (type-of (fsymeval item))
				   (cons 'dm)		;defined macro
				   (compiled-function 'df)	;defined function
				   (closure 'sf)))		;special form
				((get item 'system:system-constant)
				 'sc)			;system constant
				((assq item si:*interpreter-declaration-type-alist*)
				 'ds)			;declaration specifier
				(t 'gv))			;global variable
			  route)
			outfile))))



(setq *myfile* "gl:valid.valid-code;newbase.text")
(setq *yourfile* "gl:valid.valid-code;output-newbase.text")

(defun do-it (&optional (*infile* *myfile*) (*outfile* *yourfile*))
  (with-open-file (infile *infile* :direction ':input)
    (with-open-file (outfile *outfile* :direction ':output)
      (when (eq (parse-pair infile outfile) '*done*)
	   (return '*done*))))))


