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