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