xref: /csrg-svn/old/lisp/fp/fp.vax/runFp.l (revision 12092)
1*12092Sbaden (setq SCCS-runFp.l "@(#)runFp.l	1.2	04/29/83")
212071Sbaden ;  FP interpreter/compiler
312071Sbaden ;  Copyright (c) 1982  Scott B. Baden
412071Sbaden ;  Berkeley, California
512071Sbaden 
612071Sbaden ; FASL (or load if no object files exist) then run FP.
712071Sbaden ; also set up  user-top-level to 'runFp'.
812071Sbaden 
912071Sbaden (include specials.l)
1012071Sbaden 
1112071Sbaden (declare
1212071Sbaden   (localf make_chset setup init addHelp initHelp)
1312071Sbaden   (special user-top-level))
1412071Sbaden 
1512071Sbaden (sstatus translink on)
1612071Sbaden 
1712071Sbaden (mapcar  'load
1812071Sbaden   '(fpMain handlers scanner parser codeGen primFp utils fpPP fpMeasures))
1912071Sbaden 
2012071Sbaden 
2112071Sbaden (defun runFp nil
2212071Sbaden   (cond ((null (make_chset))
2312071Sbaden 	 (patom "Illegal Character set")
2412071Sbaden 	 (terpri)
2512071Sbaden 	 (exit))
2612071Sbaden 
2712071Sbaden 	(t
2812071Sbaden 	 (setup)					; set up FP syntax funnies
2912071Sbaden 	 (init)
3012071Sbaden 	 (Tyi)
31*12092Sbaden 	 (msg N "FP, v. 4.2, (4/28/83)" N (B 6))))
3212071Sbaden 
3312071Sbaden   (setq user-top-level 'res_fp)		; from now on just resume FP--
3412071Sbaden   ; no need for extensive initializations
3512071Sbaden 
3612071Sbaden   (signal 2 'break-resp)
3712071Sbaden   (fpMain nil t))			; invoke fp, exit to shell when done
3812071Sbaden 
3912071Sbaden (defun res_fp nil			; restart fp after infinite recursion,
4012071Sbaden 					; simpler initializatin than runFp.
4112071Sbaden    (signal 2 'break-resp)
4212071Sbaden    (msg N (B 6))
4312071Sbaden    (setq in_def nil infile nil outfile nil fn_name 'tmp$$ in_buf nil)
4412071Sbaden    (setq level 0)
4512071Sbaden    (fpMain nil t))
4612071Sbaden 
4712071Sbaden 
4812071Sbaden (defun make_chset nil
4912071Sbaden   (putprop 'fonts "+-,>!%&*/:=@{}()[]?~TF;#" 'asc)
5012071Sbaden   (cond ((null (setq rsrvd (get 'fonts char_set))))
5112071Sbaden 	(t (setq e_rsrvd (explodec rsrvd)))))
5212071Sbaden 
5312071Sbaden 
5412071Sbaden (defun setup nil
5512071Sbaden   (setq newreadtable (makereadtable nil))
5612071Sbaden   (let ((readtable newreadtable))
5712071Sbaden        (mapcar '(lambda (z) (setsyntax z 66)) (exploden rsrvd))
5812071Sbaden        (setsyntax #/< 'macro 'readit))
5912071Sbaden 
6012071Sbaden   (setsyntax #/< 'macro 'readit))
6112071Sbaden 
6212071Sbaden 
6312071Sbaden (defun init nil
6412071Sbaden   ; these are the only chars which may delimit numbers
6512071Sbaden   ; (select operator)
6612071Sbaden 
6712071Sbaden   (setq num_delim$ '(#/, #/] #/@ #/: #/} 41 59 32 9 10 #/-))
6812071Sbaden 
6912071Sbaden   (setq timeIt nil)
7012071Sbaden   (setq char_set (concat 'scan$ char_set))
7112071Sbaden   (setq in_def nil)
7212071Sbaden   (setq infile nil)
7312071Sbaden   (setq outfile nil)
7412071Sbaden   (setq fn_name 'tmp$$)
7512071Sbaden   (setq in_buf nil)
7612071Sbaden   (setq level 0) 		; initialize level to 0
7712071Sbaden   (setq TracedFns nil) ; just to make sure TracedFns is defined
7812071Sbaden   (setq DynTraceFlg nil) ; default of no dynamic tracing
7912071Sbaden 
8012071Sbaden 
8112071Sbaden 
8212071Sbaden   ; These are the builtin function names
8312071Sbaden 
8412071Sbaden   (setq builtins
8512071Sbaden 	'(
8612071Sbaden 	  out					; output fn - for debug only
8712071Sbaden 	  tl					; left tail
8812071Sbaden 	  id					; id
8912071Sbaden 	  atom					; atom
9012071Sbaden 	  eq					; equal
9112071Sbaden 	  not					; not
9212071Sbaden 	  and					; and
9312071Sbaden 	  or					; or
9412071Sbaden 	  xor					; xor
9512071Sbaden 	  null					; null
9612071Sbaden 	  iota					; counting sequence generator
9712071Sbaden 	  ; (library functions)
9812071Sbaden 	  sin
9912071Sbaden 	  asin
10012071Sbaden 	  cos
10112071Sbaden 	  acos
10212071Sbaden 	  log					; natural
10312071Sbaden 	  exp
10412071Sbaden 	  mod
10512071Sbaden 	  ; (unary origin)
10612071Sbaden 	  first					; the first element
10712071Sbaden 	  last					; the last element
10812071Sbaden 	  front					; all except last
10912071Sbaden 	  pick					; get nth element
11012071Sbaden 	  concat				; concat
11112071Sbaden 	  pair					; makes pairs
11212071Sbaden 	  split					; splits into two
11312071Sbaden 	  reverse				; reverse
11412071Sbaden 	  distl					; distribute left
11512071Sbaden 	  distr					; distribute right
11612071Sbaden 	  length				; length
11712071Sbaden 	  trans					; transpose
11812071Sbaden 	  while					; while
11912071Sbaden 	  apndl					; append left
12012071Sbaden 	  apndr					; append right
12112071Sbaden 	  tlr					; right tail
12212071Sbaden 	  rotl					; rotate left
12312071Sbaden 	  rotr))				; rotate right
12412071Sbaden 
12512071Sbaden   (initStats)
12612071Sbaden   (initHelp))
12712071Sbaden 
12812071Sbaden (defun addHelp (text cmd)
12912071Sbaden   (putprop 'helpCmd text cmd))
13012071Sbaden 
13112071Sbaden (defun initHelp nil
13212071Sbaden   (addHelp "fsave <file>			Same as csave except without pretty-printing" 'fsave)
13312071Sbaden   (addHelp "cload <file>			Load Lisp code from a file (may be compiled)" 'cload)
13412071Sbaden   (addHelp "csave <file>			Output Lisp code for all user-defined fns" 'csave)
13512071Sbaden   (addHelp "debug on/off			Turn debugger output on/off" 'debug)
13612071Sbaden   (addHelp "lisp				Exit to the lisp system (return with '^D')" 'help)
13712071Sbaden   (addHelp "help		This text" 'help)
13812071Sbaden   (addHelp "script open/close/append [file] Open or close a script-file" 'script)
13912071Sbaden   (addHelp "timer on/off			Turn timer on/off" 'timing)
14012071Sbaden   (addHelp "trace on/off <fn1> ...		Start/Stop exec trace of <fn1> ..." 'trace)
14112071Sbaden   (addHelp "stats on/off/reset/print [file] collect and output dynamic stats" 'stats)
14212071Sbaden   (addHelp "fns				List all functions" 'fns)
14312071Sbaden   (addHelp "delete <fn1> ...		Delete <fn1> ..." 'delete)
14412071Sbaden   (addHelp "pfn <fn1> ...			Print source text of <fn1> ..." 'pfn)
14512071Sbaden   (addHelp "save <file>			Save defined fns in <file>" 'save)
14612071Sbaden   (addHelp "load <file>			Redirect input from <file>" 'load)
14712071Sbaden   )
14812071Sbaden 
14912071Sbaden 
15012071Sbaden   (setq user-top-level 'runFp)
15112071Sbaden   (setq char_set 'asc)			; set to the type of character set
15212071Sbaden 					; desired at the moment only ascii (asc)
15312071Sbaden 					; supported (no APL at this time).
15412071Sbaden 
155