Annotation of 42BSD/ucb/fp/fpMacs.l, revision 1.1.1.1

1.1       root        1: (setq SCCS-fpMacs.l "@(#)fpMacs.l      1.1     4/27/83")
                      2: ;  FP interpreter/compiler
                      3: ;  Copyright (c) 1982  Scott B. Baden
                      4: ;  Berkeley, California
                      5: 
                      6: (declare
                      7:   (macros t)
                      8:   (special ptport infile))
                      9: 
                     10: 
                     11: (eval-when (compile eval load)
                     12: 
                     13:   (setq whiteSpace ''(9 10 32))
                     14:   (setq blankOrTab ''(9 32))
                     15:   (setq CR 10)
                     16:   (setq BLANK 32)
                     17:   (setq lAngle '|<|)
                     18:   (setq rAngle '|>|)
                     19:   
                     20:   (setq funcForms
                     21:        ''(alpha$fp
                     22:           insert$fp
                     23:           constant$fp
                     24:           condit$fp
                     25:           constr$fp
                     26:           compos$fp
                     27:           while$fp
                     28:           ti$fp))
                     29:   
                     30:   (setq multiAdicFns
                     31:        ''(select$fp
                     32:           tl$fp
                     33:           tlr$fp
                     34:           id$fp
                     35:           atom$fp
                     36:           null$fp
                     37:           reverse$fp
                     38:           distl$fp
                     39:           distr$fp
                     40:           length$fp
                     41:           apndl$fp
                     42:           apndr$fp
                     43:           rotl$fp
                     44:           rotr$fp
                     45:           trans$fp
                     46:           first$fp
                     47:           last$fp
                     48:           front$fp
                     49:           pick$fp
                     50:           concat$fp
                     51:           pair$fp
                     52:           split$fp))
                     53:   
                     54:   (setq dyadFns
                     55:        ''(plus$fp
                     56:           sub$fp
                     57:           times$fp
                     58:           div$fp
                     59:           and$fp
                     60:           or$fp
                     61:           xor$fp
                     62:           not$fp
                     63:           lt$fp
                     64:           le$fp
                     65:           eq$fp
                     66:           ge$fp
                     67:           gt$fp
                     68:           ne$fp))
                     69:   
                     70:   
                     71:   (setq libFns
                     72:        ''(sin$fp
                     73:           asin$fp
                     74:           cos$fp
                     75:           acos$fp
                     76:           log$fp
                     77:           exp$fp
                     78:           mod$fp))
                     79:   
                     80:   (setq miscFns
                     81:        ''(iota$fp))
                     82:   )
                     83: 
                     84: 
                     85: (defmacro Tyi nil
                     86:   `(let ((z (tyi)))
                     87:        (cond ((and (null infile) ptport) (tyo z ptport))
                     88:              (t z))))
                     89: 
                     90: (defmacro peekc nil
                     91:        `(tyipeek infile))
                     92: 
                     93: (defmacro Getc nil
                     94:   `(let ((piport infile))
                     95:        (prog (c)
                     96:              (cond ((eq 'eof$$ (setq c (readc piport 'eof$$)))
                     97:                     (*throw 'parse$err 'eof$$))
                     98:                    (t (setq c (car (exploden c)))
                     99:                       (cond
                    100:                        ((not (and (null in_buf) (memq c #.whiteSpace)))
                    101:                         (setq in_buf (cons c in_buf))))))
                    102:              (cond ((and (null infile) ptport)
                    103:                     (cond
                    104:                      ((not (and (null in_buf) (memq c #.whiteSpace)))
                    105:                       (tyo c ptport)))))
                    106:              (return c))))
                    107: 
                    108: (defmacro Read nil
                    109:   `(let ((z (read)))
                    110:        (prog nil
                    111:              (cond ((and (null infile) ptport (not (listp z))) (patom z ptport)))
                    112:              (cond ((and (null infile) ptport (not (listp z)))
                    113:                     (do
                    114:                      ((c (tyipeek) (tyipeek)))
                    115:                      ((or (and (eq c #.CR) (Tyi) t)
                    116:                           (null (memq c #.blankOrTab))))
                    117:                      (Tyi))))
                    118:              
                    119:              (return z))))
                    120: 
                    121: (defmacro find (flg lst)
                    122:   `(cond ((atom ,lst) (eq ,flg ,lst))
                    123:         ((not (listp ,lst)) nil)
                    124:         (t (memq ,flg ,lst))))
                    125: 
                    126: 
                    127: ; we want top-level size, not total number of arguments
                    128: 
                    129: (defmacro size (x)
                    130:   `(cond ((atom ,x) 1)
                    131:         (t (length ,x))))
                    132: 
                    133: (defmacro twop (x)
                    134:   `(eq 2 ,x))
                    135: 
                    136: 
                    137: ;; Special macros to help out tree insert
                    138: 
                    139: (defmacro treeIns (fn input Len)
                    140:   `(cond ((zerop ,Len) (unitTreeInsert ,fn))
                    141:         ((onep ,Len) (car ,input))
                    142:         ((twop ,Len) (funcall ,fn  ,input))
                    143:         (t (treeInsWithLen ,fn ,input ,Len))))
                    144: 
                    145: 
                    146: (defmacro unitTreeInsert (fn)
                    147:   `(let ((ufn (get 'u-fnc ,fn)))
                    148:        (cond (ufn  (funcall ufn))
                    149:              (t (bottom)))))
                    150: 
                    151: 
                    152: (putprop 'fpMacs t 'loaded)
                    153: 

unix.superglobalmegacorp.com

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