|
|
1.1 ! root 1: (setq SCCS-runFp.l "@(#)runFp.l 1.2 4/29/83") ! 2: ; FP interpreter/compiler ! 3: ; Copyright (c) 1982 Scott B. Baden ! 4: ; Berkeley, California ! 5: ! 6: ; FASL (or load if no object files exist) then run FP. ! 7: ; also set up user-top-level to 'runFp'. ! 8: ! 9: (include specials.l) ! 10: ! 11: (declare ! 12: (localf make_chset setup init addHelp initHelp) ! 13: (special user-top-level)) ! 14: ! 15: (sstatus translink on) ! 16: ! 17: (mapcar 'load ! 18: '(fpMain handlers scanner parser codeGen primFp utils fpPP fpMeasures)) ! 19: ! 20: ! 21: (defun runFp nil ! 22: (cond ((null (make_chset)) ! 23: (patom "Illegal Character set") ! 24: (terpri) ! 25: (exit)) ! 26: ! 27: (t ! 28: (setup) ; set up FP syntax funnies ! 29: (init) ! 30: (Tyi) ! 31: (msg N "FP, v. 4.2, (4/28/83)" N (B 6)))) ! 32: ! 33: (setq user-top-level 'res_fp) ; from now on just resume FP-- ! 34: ; no need for extensive initializations ! 35: ! 36: (signal 2 'break-resp) ! 37: (fpMain nil t)) ; invoke fp, exit to shell when done ! 38: ! 39: (defun res_fp nil ; restart fp after infinite recursion, ! 40: ; simpler initializatin than runFp. ! 41: (signal 2 'break-resp) ! 42: (msg N (B 6)) ! 43: (setq in_def nil infile nil outfile nil fn_name 'tmp$$ in_buf nil) ! 44: (setq level 0) ! 45: (fpMain nil t)) ! 46: ! 47: ! 48: (defun make_chset nil ! 49: (putprop 'fonts "+-,>!%&*/:=@{}()[]?~TF;#" 'asc) ! 50: (cond ((null (setq rsrvd (get 'fonts char_set)))) ! 51: (t (setq e_rsrvd (explodec rsrvd))))) ! 52: ! 53: ! 54: (defun setup nil ! 55: (setq newreadtable (makereadtable nil)) ! 56: (let ((readtable newreadtable)) ! 57: (mapcar '(lambda (z) (setsyntax z 66)) (exploden rsrvd)) ! 58: (setsyntax #/< 'macro 'readit)) ! 59: ! 60: (setsyntax #/< 'macro 'readit)) ! 61: ! 62: ! 63: (defun init nil ! 64: ; these are the only chars which may delimit numbers ! 65: ; (select operator) ! 66: ! 67: (setq num_delim$ '(#/, #/] #/@ #/: #/} 41 59 32 9 10 #/-)) ! 68: ! 69: (setq timeIt nil) ! 70: (setq char_set (concat 'scan$ char_set)) ! 71: (setq in_def nil) ! 72: (setq infile nil) ! 73: (setq outfile nil) ! 74: (setq fn_name 'tmp$$) ! 75: (setq in_buf nil) ! 76: (setq level 0) ; initialize level to 0 ! 77: (setq TracedFns nil) ; just to make sure TracedFns is defined ! 78: (setq DynTraceFlg nil) ; default of no dynamic tracing ! 79: ! 80: ! 81: ! 82: ; These are the builtin function names ! 83: ! 84: (setq builtins ! 85: '( ! 86: out ; output fn - for debug only ! 87: tl ; left tail ! 88: id ; id ! 89: atom ; atom ! 90: eq ; equal ! 91: not ; not ! 92: and ; and ! 93: or ; or ! 94: xor ; xor ! 95: null ; null ! 96: iota ; counting sequence generator ! 97: ; (library functions) ! 98: sin ! 99: asin ! 100: cos ! 101: acos ! 102: log ; natural ! 103: exp ! 104: mod ! 105: ; (unary origin) ! 106: first ; the first element ! 107: last ; the last element ! 108: front ; all except last ! 109: pick ; get nth element ! 110: concat ; concat ! 111: pair ; makes pairs ! 112: split ; splits into two ! 113: reverse ; reverse ! 114: distl ; distribute left ! 115: distr ; distribute right ! 116: length ; length ! 117: trans ; transpose ! 118: while ; while ! 119: apndl ; append left ! 120: apndr ; append right ! 121: tlr ; right tail ! 122: rotl ; rotate left ! 123: rotr)) ; rotate right ! 124: ! 125: (initStats) ! 126: (initHelp)) ! 127: ! 128: (defun addHelp (text cmd) ! 129: (putprop 'helpCmd text cmd)) ! 130: ! 131: (defun initHelp nil ! 132: (addHelp "fsave <file> Same as csave except without pretty-printing" 'fsave) ! 133: (addHelp "cload <file> Load Lisp code from a file (may be compiled)" 'cload) ! 134: (addHelp "csave <file> Output Lisp code for all user-defined fns" 'csave) ! 135: (addHelp "debug on/off Turn debugger output on/off" 'debug) ! 136: (addHelp "lisp Exit to the lisp system (return with '^D')" 'help) ! 137: (addHelp "help This text" 'help) ! 138: (addHelp "script open/close/append [file] Open or close a script-file" 'script) ! 139: (addHelp "timer on/off Turn timer on/off" 'timing) ! 140: (addHelp "trace on/off <fn1> ... Start/Stop exec trace of <fn1> ..." 'trace) ! 141: (addHelp "stats on/off/reset/print [file] collect and output dynamic stats" 'stats) ! 142: (addHelp "fns List all functions" 'fns) ! 143: (addHelp "delete <fn1> ... Delete <fn1> ..." 'delete) ! 144: (addHelp "pfn <fn1> ... Print source text of <fn1> ..." 'pfn) ! 145: (addHelp "save <file> Save defined fns in <file>" 'save) ! 146: (addHelp "load <file> Redirect input from <file>" 'load) ! 147: ) ! 148: ! 149: ! 150: (setq user-top-level 'runFp) ! 151: (setq char_set 'asc) ; set to the type of character set ! 152: ; desired at the moment only ascii (asc) ! 153: ; supported (no APL at this time). ! 154:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.