Annotation of 3BSD/cmd/liszt/compmacs.l, revision 1.1.1.1

1.1       root        1: ;---file: compmacs.l
                      2: ;----------- macros for the compiler -------------
                      3: 
                      4: 
                      5: (declare (special old-top-level compiler-name
                      6:                  readtable original-readtable raw-readtable
                      7:                  poport piport
                      8:                  v-root v-ifile v-sfile
                      9:                  vps-include vps-crap vp-sfile
                     10:                  er-fatal ibase
                     11:                  macros
                     12:                  x-spec
                     13:                  fl-asm fl-macl faslflag fl-inter
                     14:                  k-macros k-lams k-nlams k-free internal-macros
                     15:                  k-fnum k-current k-code k-ptrs k-ftype  k-pid
                     16:                  k-back k-regs
                     17:                  twa-list
                     18:                  s-inst
                     19:                  x-con x-asg x-dont                    ; check on this
                     20:                  x-reg x-leap x-opt
                     21:                  x-emit
                     22:                  w-vars w-labs w-ret w-save
                     23:                  r-xv
                     24:                  x-spfh x-spfn x-spfq x-spf
                     25:                  w-bind
                     26:                  w-name w-bv w-locs w-atmt cm-alv v-cnt
                     27:                  $gccount$))
                     28: 
                     29: (def $pr$ (macro (x) `(patom ,(cadr x) vp-sfile)))
                     30: 
                     31: (def put 
                     32:   (macro (x)
                     33:         ((lambda (atm prp arg)
                     34:                  `(progn (putprop ,atm ,arg ,prp) ,atm))
                     35:          (cadr x) (caddr x) (cadddr x))))
                     36: 
                     37: ;--- comp-err
                     38: ;    comp-warn
                     39: ;    comp-note
                     40: ;    comp-gerr
                     41: ; these are the compiler message producing macros.  The form is
                     42: ; (comp-xxxx val1 val2 val3 ... valn) , all values are printed according
                     43: ;  to this scheme. If vali is an atom, it is patomed, if vali is a
                     44: ;  list, it is evaluated and printed. If vali is N a newline is printed
                     45: ; 
                     46: ; furthermore
                     47: ;    the name of the current function is printed first
                     48: ;    after comp-err prints the message, it does a throw to Comp-err .
                     49: ;    errors are preceeded by Error: 
                     50: ;      warnings by %Warning: and
                     51: ;      notes by %Note:
                     52: ;     The message is sent to the message file
                     53: ;
                     54: (def comp-err
                     55:   (macro (l)
                     56:         `(progn ,@(comp-msg 
                     57:                             `( Error: (or k-current) ": " ,@(cdr l) N))
                     58:                 (throw nil Comp-error))))
                     59: 
                     60: (def comp-warn
                     61:   (macro (l)
                     62:         `(progn ,@(comp-msg
                     63:                             `( %Warning: (or k-current) ": " ,@(cdr l) N)))))
                     64: 
                     65: (def comp-note
                     66:   (macro (l)
                     67:         `(progn ,@(comp-msg
                     68:                             `( %Note:  ,@(cdr l) N)))))
                     69: 
                     70: (def comp-gerr
                     71:   (macro (l)
                     72:         `(progn ,@(comp-msg
                     73:                        `(?Error: ,@(cdr l) N)) 
                     74:                 (setq er-fatal (add1 er-fatal)))))
                     75: ;--- comp-msg - port
                     76: ;            - lst
                     77: ;  prints the lst to the given port.  The lst is printed in the manner
                     78: ; described above, that is atoms are patomed, and lists are evaluated
                     79: ; and printed, and N prints a newline.   The output is always drained.
                     80: ;
                     81: (eval-when (compile eval)
                     82:   (def comp-msg
                     83:        (lambda (lis)
                     84:               (cond ((null lis) `((drain)))
                     85:                     (t `(,(cond ((atom (car lis))
                     86:                                  (cond ((eq (car lis) 'N)
                     87:                                         `(terpr))
                     88:                                        (t `(patom ',(car lis)))))
                     89:                                 (t `(print ,(car lis))))
                     90:                           ,@(comp-msg (cdr lis))))))))
                     91: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.