Google
 

Trailing-Edge - PDP-10 Archives - -
There are no other files named in the archive.
00010	
00020	
00030	(DEFPROP &SCANTYPE 
00040	 T 
00050	SPECIAL)
00060	
00070	(DEFPROP &SCANVAL 
00080	 T 
00090	SPECIAL)
00100	
00110	(DEFPROP &CURFUNCT 
00120	 T 
00130	SPECIAL)
00140	
00150	(DEFPROP &ERRORCNT 
00160	 T 
00170	SPECIAL)
00180	
00190	(DEFPROP &REDEFCNT 
00200	 T 
00210	SPECIAL)
00220	
00230	(DEFPROP &SPECLIST 
00240	 T 
00250	SPECIAL)
00260	
00270	(DEFPROP &FUNCLIST 
00280	 T 
00290	SPECIAL)
00300	
00310	(DEFPROP MLISP 
00320	 (LAMBDA (&FILE)
00330	  (PROG (&SCANVAL &EX &TIME &ERRORCNT &REDEFCNT &SPECLIST &FUNCLIST)
00340		(TERPRI)
00350		(COND (&FILE
00360		       (COND
00370			((NOT (EQ (CAR &FILE) (QUOTE TTY)))
00380			 (EVAL (LIST (QUOTE INC) (LIST (QUOTE INPUT) (QUOTE DSK:) (CAR &FILE)))))))
00390		      (T (INC T)))
00400		(PRINT STAR)
00410		(SETQ &TIME (TIME))
00420		(SETQ &EX (MTRANS))
00430		(PUTPROP (&TEST (QUOTE RESTART) (QUOTE EXPR)) (LIST (QUOTE LAMBDA) NIL &EX) (QUOTE EXPR))
00440		(SETQ &TIME (QUOTIENT (DIFFERENCE (TIME) &TIME) 1000.0))
00450		(PRINT STAR)
00460		(PRINT &TIME)
00470		(PRINTSTR (QUOTE " SECONDS TRANSLATION TIME"))
00480		(PRINT (COND ((ZEROP &ERRORCNT) (QUOTE NO)) (T &ERRORCNT)))
00490		(PRINTSTR (QUOTE "ERRORS WERE DETECTED"))
00500		(PRINT (COND ((ZEROP &REDEFCNT) (QUOTE NO)) (T &REDEFCNT)))
00510		(PRINTSTR (QUOTE "FUNCTIONS WERE REDEFINED"))
00520		(TERPRI)
00530		(INC NIL T)
00540		(COND ((AND &FILE (CDR &FILE))
00550		       (PROG NIL
00560			     (COND
00570			      (&SPECLIST (SETQ &SPECLIST (&MERGE &SPECLIST NIL))
00580					 (PRINTSTR (QUOTE "SPECIAL DECLARATIONS:"))
00590					 (PRINT &SPECLIST)
00600					 (TERPRI)
00610					 (TERPRI)))
00620			     (SETQ &FUNCLIST
00630				   (REVERSE
00640				    (COND
00650				     ((EQUAL (GET (QUOTE RESTART) (QUOTE EXPR)) (QUOTE (LAMBDA NIL (PROG NIL))))
00660				      (CDR &FUNCLIST))
00670				     (T &FUNCLIST))))
00680			     (MAPC (FUNCTION
00690				    (LAMBDA (&SCANVAL)
00700				     (COND
00710				      ((MEMBER &SCANVAL &SPECLIST)
00720				       (PRINTSTR
00730					(CAT (QUOTE "***WARNING***, FUNCTION ")
00740					     (CAT &SCANVAL (QUOTE " ALSO DECLARED SPECIAL"))))))))
00750	 			   &FUNCLIST)
00760			     (COND ((CADR &FILE) (PRINTSTR
00770						  (CAT (QUOTE "COMPILING ONTO ") (CAT (CAR &FILE) (QUOTE ".LAP"))))
00780						 (SETQ BASE 8.)
00790						 (EVAL
00800						  (LIST (QUOTE OUTPUT) (QUOTE DSK:) (CONS (CAR &FILE) (QUOTE LAP))))
00810						 (OUTC T T)
00820						 (EVAL (CONS (QUOTE SPECIAL) &SPECLIST))
00830						 (MAPC (FUNCTION
00840							(LAMBDA (&SCANVAL)
00850							 (PROG2 (EVAL (LIST (QUOTE COMPILE) &SCANVAL))
00860								(OR (AND (REMPROP &SCANVAL (QUOTE EXPR))
00870									 (PUTPROP &SCANVAL T (QUOTE *EXPR)))
00880								    (AND (REMPROP &SCANVAL (QUOTE FEXPR))
00890									 (PUTPROP &SCANVAL T (QUOTE *FEXPR)))))))
00900	 					       &FUNCLIST)
00910						 (SETQ BASE 10.))
00920				   (T (PRINTSTR (CAT (QUOTE "GRINDEFING ONTO ") (CAT (CAR &FILE) (QUOTE ".LSP"))))
00930				      (SETQ *NOPOINT NIL)
00940				      (EVAL (LIST (QUOTE OUTPUT) (QUOTE DSK:) (CONS (CAR &FILE) (QUOTE LSP))))
00950				      (OUTC T T)
00960				      (MAPC (FUNCTION
00970					     (LAMBDA (&SCANVAL)
00980					      (PRINT (LIST (QUOTE DEFPROP) &SCANVAL T (QUOTE SPECIAL)))))
00990	 				    &SPECLIST)
01000				      (TERPRI)
01010				      (MAPC (FUNCTION
01020					     (LAMBDA (&SCANVAL)
01030					      (COND
01040					       ((GET &SCANVAL (QUOTE FEXPR))
01050						(PRINT (LIST (QUOTE DEFPROP) &SCANVAL T (QUOTE *FEXPR)))))))
01060	 				    &FUNCLIST)
01070				      (EVAL (CONS (QUOTE GRINDEF) &FUNCLIST))
01080				      (SETQ *NOPOINT T)))
01090			     (OUTC NIL T)))
01100		      (T (RESTART) (OUTC NIL T)))
01110		(TERPRI)
01120		(TERPRI)
01130		(PRINTSTR (QUOTE "END OF RUN"))
01140		(INC NIL))) 
01150	FEXPR)
01160	
01170	(DEFPROP &MERGE 
01180	 (LAMBDA (&X &Y)
01190	  (PROG NIL
01200	   L    (COND ((NULL &X) (RETURN &Y)) ((MEMBER (CAR &X) &Y) NIL) (T (SETQ &Y (CONS (CAR &X) &Y))))
01210		(SETQ &X (CDR &X))
01220		(GO L))) 
01230	EXPR)
01240	
01250	(DEFPROP MTRANS 
01260	 (LAMBDA  NIL
01270	  (PROG (&SCANTYPE &SCANVAL &CURFUNCT)
01280		(SETQ &ERRORCNT 0.)
01290		(SETQ &REDEFCNT 0.)
01300		(SCANSET)
01310		(INITFN (QUOTE SCANRESET))
01320		(&SCAN)
01330		(RETURN (&DO2 (&EXPR) (SCANRESET))))) 
01340	EXPR)
01350	
01360	(DEFPROP &SCAN 
01370	 (LAMBDA  NIL
01380	  (COND ((EQUAL (SETQ &SCANTYPE (SCAN)) IDTYPE) (SETQ &SCANVAL (INTERN SCNVAL)))
01390		((EQUAL &SCANTYPE DELIMTYPE) (SETQ &SCANVAL (INTERN (ASCII SCNVAL))))
01400		(T (SETQ &SCANVAL SCNVAL)))) 
01410	EXPR)
01420	
01430	(DEFPROP &BASIC 
01440	 (LAMBDA (&X) (COND ((EQ &X &SCANVAL) (&DO2 T (&SCAN))))) 
01450	EXPR)
01460	
01470	(DEFPROP &EXPR 
01480	 (LAMBDA NIL (&MORETERMS (&SIMPEX) (COND ((NOT (NUMBERP &SCANVAL)) (&OPR (GET &SCANVAL (QUOTE OPR))))))) 
01490	EXPR)
01500	
01510	(DEFPROP &MORETERMS 
01520	 (LAMBDA (&X &OP) (COND (&OP (LIST &OP &X (&EXPR))) (T &X))) 
01530	EXPR)
01540	
01550	(DEFPROP &OPR 
01560	 (LAMBDA (&OP) (COND (&OP (&DO2SCAN &OP)) ((&ID) (&DO2SCAN &SCANVAL)) (T NIL))) 
01570	EXPR)
01580	
01590	(DEFPROP &SIMPEX 
01600	 (LAMBDA  NIL
01610	  (COND ((NUMBERP &SCANVAL) (&DO2SCAN &SCANVAL))
01620		((GET &SCANVAL (QUOTE RW))
01630		 (COND ((&BASIC (QUOTE BEGIN)) (&TRANSPROG (CONS (QUOTE PROG) (CONS (&DECL) (&EXLIST)))))
01640		       ((&BASIC (QUOTE IF)) (CONS (QUOTE COND) (&TRANSCOND (&EXPR))))
01650		       ((&BASIC (QUOTE FOR)) (&TRANSFOR))
01660		       ((&BASIC (QUOTE WHILE)) (&TRANSWHILE (&EXPR)))
01670		       ((&BASIC (QUOTE DO)) (&TRANSDO (&EXPR)))
01680		       ((&BASIC (QUOTE COLLECT)) (&TRANSCOLLECT (&EXPR)))
01690		       ((&BASIC (QUOTE LAMBDA)) (&TRANSLAMBDA (&LAMB)))
01700		       ((EQ &SCANVAL (QUOTE OCTAL)) (&OCTALNUM))
01710		       (T NIL)))
01720		((GET &SCANVAL (QUOTE PREFIX))
01730		 (COND ((&BASIC PLUSS) (&SIMPEX))
01740		       ((&BASIC DASH) (LIST (QUOTE MINUS) (&SIMPEX)))
01750		       (T (LIST (&DO2SCAN &SCANVAL) (&SIMPEX)))))
01760		((GET &SCANVAL (QUOTE FUNCTYPE)) (&FNDEF &SCANVAL (&SCAN) &CURFUNCT))
01770		((EQUAL &SCANTYPE IDTYPE) (&IDCHECK (&DO2SCAN &SCANVAL)))
01780		((EQUAL &SCANTYPE STRTYPE) (&DO2SCAN (LIST (QUOTE QUOTE) &SCANVAL)))
01790		((EQ &SCANVAL (QUOTE ')) (&DO2SCAN (LIST (QUOTE QUOTE) (READ))))
01800		((&BASIC (QUOTE <)) (CONS (QUOTE LIST) (&TRANSLIST)))
01810		((&BASIC LPAR) (&TERM (&EXPR)))
01820		(T (&ERROR (QUOTE "INDECIPHERABLE SIMPLE EXPRESSION"))))) 
01830	EXPR)
01840	
01850	(DEFPROP &TERM 
01860	 (LAMBDA (&EX) (COND ((&BASIC RPAR) &EX) (T (&ERROR (QUOTE "ILLEGAL PARENTHESIZED EXPRESSION"))))) 
01870	EXPR)
01880	
01890	(DEFPROP &IDCHECK 
01900	 (LAMBDA (&X)
01910	  (COND ((&BASIC LPAR) (CONS &X (&ARGLIST))) ((&BASIC LARROW) (LIST (QUOTE SETQ) &X (&EXPR))) (T &X))) 
01920	EXPR)
01930	
01940	(DEFPROP &TRANSPROG 
01950	 (LAMBDA (&EX)
01960	  (COND ((&BASIC (QUOTE END)) &EX)
01970		(T (&ERROR (QUOTE "ILLEGAL STATEMENT IN BEGIN-END BLOCK OR MISSING SEMICOLON"))))) 
01980	EXPR)
01990	
02000	(DEFPROP &DECL 
02010	 (LAMBDA NIL (COND ((&BASIC (QUOTE NEW)) (&NEWS)) ((&BASIC (QUOTE SPECIAL)) (&SPECS)) (T NIL))) 
02020	EXPR)
02030	
02040	(DEFPROP &NEWS 
02050	 (LAMBDA  NIL
02060	  (COND ((&ID) (CONS (&DO2SCAN &SCANVAL) (&MOREDECLS T)))
02070		(T (&ERROR (QUOTE "RESERVED WORD OR DELIMITER IN DECLARATION LIST"))))) 
02080	EXPR)
02090	
02100	(DEFPROP &MOREDECLS 
02110	 (LAMBDA (&X)
02120	  (COND ((&BASIC COMMA) (COND (&X (&NEWS)) (T (&SPECS))))
02130		((&BASIC (QUOTE ;)) (&DECL))
02140		(T (&ERROR (QUOTE "MISSING COMMA OR SEMICOLON IN DECLARATION LIST"))))) 
02150	EXPR)
02160	
02170	(DEFPROP &SPECS 
02180	 (LAMBDA  NIL
02190	  (COND ((&ID) (PROG2 (SETQ &SPECLIST (CONS (&DO2SCAN &SCANVAL) &SPECLIST)) (&MOREDECLS NIL)))
02200		(T (&ERROR (QUOTE "RESERVED WORD OR DELIMITER IN SPECIAL DECLARATION LIST"))))) 
02210	EXPR)
02220	
02230	(DEFPROP &EXLIST 
02240	 (LAMBDA  NIL
02250	  (PROG (&EX &V)
02260	   L    (SETQ &V (COND ((NULL (SETQ &EX (&EXPR))) &V) (T (CONS &EX &V))))
02270		(COND ((&BASIC (QUOTE ;)) (GO L)) (T (RETURN (REVERSE &V)))))) 
02280	EXPR)
02290	
02300	(DEFPROP &TRANSCOND 
02310	 (LAMBDA (&EX)
02320	  (COND ((&BASIC (QUOTE THEN)) (&TC1 (LIST &EX (&EXPR))))
02330		(T (&ERROR (QUOTE "ILLEGAL EXPRESSION FOLLOWING IF"))))) 
02340	EXPR)
02350	
02360	(DEFPROP &TC1 
02370	 (LAMBDA (&EX)
02380	  (COND ((&BASIC (QUOTE ELSE))
02390		 (COND ((&BASIC (QUOTE IF)) (CONS &EX (&TRANSCOND (&EXPR)))) (T (LIST &EX (LIST T (&EXPR))))))
02400		(T (LIST &EX)))) 
02410	EXPR)
02420	
02430	(DEFPROP &TRANSFOR 
02440	 (LAMBDA  NIL
02450	  (COND ((&ID) (&TF1 (&DO2SCAN &SCANVAL)))
02460		((&BASIC (QUOTE NEW))
02470		 (COND ((&ID) (&TF1 (&DO2SCAN (CONS &SCANVAL NIL))))
02480		       (T (&ERROR (QUOTE "RESERVED WORD OR SYMBOL FOLLOWING NEW IN FOR-LOOP")))))
02490		(T (&ERROR (QUOTE "RESERVED WORD OR SYMBOL FOLLOWING FOR"))))) 
02500	EXPR)
02510	
02520	(DEFPROP &TF1 
02530	 (LAMBDA (&VAR)
02540	  (COND ((&BASIC (QUOTE IN)) (&TF2 &VAR T (&EXPR)))
02550		((&BASIC (QUOTE ON)) (&TF2 &VAR NIL (&EXPR)))
02560		((&BASIC LARROW) (&TRANSFORLOOP &VAR (&EXPR)))
02570		(T (&ERROR (QUOTE "EXPECTED IN /, ON /, OR _ AFTER CONTROL VARIABLE IN FOR-LOOP"))))) 
02580	EXPR)
02590	
02600	(DEFPROP &TF2 
02610	 (LAMBDA (&VAR &IN &EX)
02620	  (COND ((&BASIC (QUOTE DO)) (&TF3 &VAR &IN &EX T (&EXPR)))
02630		((&BASIC (QUOTE COLLECT)) (&TF3 &VAR &IN &EX NIL (&EXPR)))
02640		(T (&ERROR (QUOTE "EXPECTED DO OR COLLECT IN FOR-LOOP"))))) 
02650	EXPR)
02660	
02670	(DEFPROP &TF3 
02680	 (LAMBDA (&VAR &IN &EX &DO &EX1)
02690	  (COND ((&BASIC (QUOTE UNTIL))
02700		 (LIST (QUOTE &FOR)
02710		       (LIST (QUOTE QUOTE) &VAR)
02720		       (LIST (QUOTE QUOTE) (CONS &IN &DO))
02730	 	       &EX
02740		       (COND (&EX1 (LIST (QUOTE QUOTE) &EX1)))
02750		       (LIST (QUOTE QUOTE) (&EXPR))))
02760		(T
02770		 (LIST (QUOTE &FOR)
02780		       (LIST (QUOTE QUOTE) &VAR)
02790		       (LIST (QUOTE QUOTE) (CONS &IN &DO))
02800	 	       &EX
02810		       (COND (&EX1 (LIST (QUOTE QUOTE) &EX1)))
02820	 	       NIL)))) 
02830	EXPR)
02840	
02850	(DEFPROP &TRANSFORLOOP 
02860	 (LAMBDA (&VAR &LOWER)
02870	  (COND ((&BASIC (QUOTE TO)) (&TFL1 &VAR &LOWER (&EXPR)))
02880		(T (&ERROR (QUOTE "ILLEGAL LOWER RANGE SPECIFICATION IN FOR-LOOP"))))) 
02890	EXPR)
02900	
02910	(DEFPROP &TFL1 
02920	 (LAMBDA (&VAR &LOWER &UPPER)
02930	  (COND ((&BASIC (QUOTE BY)) (&TFL2 &VAR &LOWER &UPPER (&EXPR))) (T (&TFL2 &VAR &LOWER &UPPER 1.)))) 
02940	EXPR)
02950	
02960	(DEFPROP &TFL2 
02970	 (LAMBDA (&VAR &LOWER &UPPER &INC)
02980	  (COND ((&BASIC (QUOTE DO)) (&TFL3 &VAR (LIST &LOWER &UPPER &INC) T (&EXPR)))
02990		((&BASIC (QUOTE COLLECT)) (&TFL3 &VAR (LIST &LOWER &UPPER &INC) NIL (&EXPR)))
03000		(T (&ERROR (QUOTE "EXPECTED DO OR COLLECT IN FOR-LOOP"))))) 
03010	EXPR)
03020	
03030	(DEFPROP &TFL3 
03040	 (LAMBDA (&VAR &X &DO &EX1)
03050	  (COND ((&BASIC (QUOTE UNTIL))
03060		 (LIST (QUOTE &FORLOOP)
03070		       (LIST (QUOTE QUOTE) &VAR)
03080		       (LIST (QUOTE QUOTE) &X)
03090	 	       &DO
03100		       (COND (&EX1 (LIST (QUOTE QUOTE) &EX1)))
03110		       (LIST (QUOTE QUOTE) (&EXPR))))
03120		(T
03130		 (LIST (QUOTE &FORLOOP)
03140		       (LIST (QUOTE QUOTE) &VAR)
03150		       (LIST (QUOTE QUOTE) &X)
03160	 	       &DO
03170		       (COND (&EX1 (LIST (QUOTE QUOTE) &EX1)))
03180	 	       NIL)))) 
03190	EXPR)
03200	
03210	(DEFPROP &TRANSDO 
03220	 (LAMBDA (&EX)
03230	  (COND ((&BASIC (QUOTE UNTIL)) (&GENTRANS (QUOTE &DOUNTIL) &EX (&EXPR)))
03240		(T (&ERROR (QUOTE "MISSING UNTIL IN DO STATEMENT"))))) 
03250	EXPR)
03260	
03270	(DEFPROP &TRANSCOLLECT 
03280	 (LAMBDA (&EX)
03290	  (COND ((&BASIC (QUOTE UNTIL)) (&GENTRANS (QUOTE &LISTUNTIL) &EX (&EXPR)))
03300		(T (&ERROR (QUOTE "MISSING UNTIL IN COLLECT STATEMENT"))))) 
03310	EXPR)
03320	
03330	(DEFPROP &TRANSWHILE 
03340	 (LAMBDA (&EX)
03350	  (COND ((&BASIC (QUOTE DO)) (&GENTRANS (QUOTE &WHILEDO) &EX (&EXPR)))
03360		((&BASIC (QUOTE COLLECT)) (&GENTRANS (QUOTE &WHILELIST) &EX (&EXPR)))
03370		(T (&ERROR (QUOTE "MISSING DO OR COLLECT IN WHILE STATEMENT"))))) 
03380	EXPR)
03390	
03400	(DEFPROP &GENTRANS 
03410	 (LAMBDA (&FUNC &EX &EX1) (LIST &FUNC (LIST (QUOTE QUOTE) &EX) (LIST (QUOTE QUOTE) &EX1))) 
03420	EXPR)
03430	
03440	(DEFPROP &TRANSLAMBDA 
03450	 (LAMBDA (&X)
03460	  (COND ((&BASIC (QUOTE ;))
03470		 (COND ((&BASIC LPAR) (CONS &X (&ARGLIST))) (T (&ERROR (QUOTE "ILLEGAL LAMBDA EXPRESSION")))))
03480		(T &X))) 
03490	EXPR)
03500	
03510	(DEFPROP &OCTALNUM 
03520	 (LAMBDA  NIL
03530	  (PROG NIL
03540		(SETQ IBASE 8.)
03550		(&SCAN)
03560		(SETQ IBASE 10.)
03570		(COND ((NUMBERP &SCANVAL) (RETURN (&DO2SCAN &SCANVAL)))
03580		      (T (&ERROR (QUOTE "RESERVED WORD OCTAL NOT FOLLOWED BY A NUMBER")))))) 
03590	EXPR)
03600	
03610	(DEFPROP &TRANSLIST 
03620	 (LAMBDA  NIL
03630	  (COND ((&BASIC (QUOTE >)) NIL)
03640		(T (CONS (&EXPR) (&ARGLIST1 (QUOTE >) (QUOTE "ILLEGAL ARGUMENT IN LIST BRACKETS")))))) 
03650	EXPR)
03660	
03670	(DEFPROP &FNDEF 
03680	 (LAMBDA (&IND &FUNC &CURFUNC)
03690	  (PROG2 (PUTPROP (&TEST &FUNC &IND) (PROG2 (&SCAN) (&LAMB)) (PROG2 (SETQ &CURFUNCT &CURFUNC) &IND)) NIL)) 
03700	EXPR)
03710	
03720	(DEFPROP &LAMB 
03730	 (LAMBDA  NIL
03740	  (COND ((&BASIC LPAR)
03750		 (LIST (QUOTE LAMBDA) (COND ((&BASIC RPAR) (&VARLIST NIL)) (T (&VARLIST (&VAR1 T)))) (&EXPR)))
03760		(T (&ERROR (QUOTE "EXPECTED LEFT PARENTHESIS FOR LAMBDA VARIABLE LIST IN FUNCTION DEFINITION"))))) 
03770	EXPR)
03780	
03790	(DEFPROP &VARLIST 
03800	 (LAMBDA (&X)
03810	  (COND ((&BASIC (QUOTE ;)) &X)
03820		(T (&ERROR (QUOTE "SEMICOLON REQUIRED AFTER LAMBDA VARIABLES IN FUNCTION DEFINITION"))))) 
03830	EXPR)
03840	
03850	(DEFPROP &VAR1 
03860	 (LAMBDA (&X)
03870	  (COND ((&ID)
03880		 (COND (&X (CONS (&DO2SCAN &SCANVAL) (&VAR2)))
03890		       (T (PROG2 (SETQ &SPECLIST (CONS &SCANVAL &SPECLIST)) (CONS (&DO2SCAN &SCANVAL) (&VAR2))))))
03900		((AND &X (&BASIC (QUOTE SPECIAL))) (&VAR1 NIL))
03910		(T (&ERROR (QUOTE "RESERVED WORD OR DELIMITER USED AS LAMBDA VARIABLE IN FUNCTION DEFINITION"))))) 
03920	EXPR)
03930	
03940	(DEFPROP &VAR2 
03950	 (LAMBDA  NIL
03960	  (COND ((&BASIC RPAR) NIL)
03970		((&BASIC COMMA) (&VAR1 T))
03980		(T (&ERROR (QUOTE "ILLEGAL LAMBDA VARIABLE IN FUNCTION DEFINITION"))))) 
03990	EXPR)
04000	
04010	(DEFPROP &TEST 
04020	 (LAMBDA (&X &IND)
04030	  (PROG NIL
04040		(SETQ &CURFUNCT (PRINT &X))
04050		(COND
04060		 ((GETL &X (QUOTE (EXPR FEXPR SUBR FSUBR MACRO LEXPR LSUBR)))
04070		  (PROG2 (PRINTSTR (CAT (QUOTE "  ***WARNING***, FUNCTION ") (CAT &X (QUOTE " REDEFINED"))))
04080			 (SETQ &REDEFCNT (ADD1 &REDEFCNT)))))
04090		(SETQ &FUNCLIST (CONS &X &FUNCLIST))
04100		(RETURN &X))) 
04110	EXPR)
04120	
04130	(DEFPROP &ARGLIST 
04140	 (LAMBDA  NIL
04150	  (COND ((&BASIC RPAR) NIL) (T (CONS (&EXPR) (&ARGLIST1 RPAR (QUOTE "ILLEGAL EXPRESSION IN ARGUMENT LIST")))))) 
04160	EXPR)
04170	
04180	(DEFPROP &ARGLIST1 
04190	 (LAMBDA (&ENDER &MSG)
04200	  (COND ((&BASIC COMMA) (CONS (&EXPR) (&ARGLIST1 &ENDER &MSG))) ((&BASIC &ENDER) NIL) (T (&ERROR &MSG)))) 
04210	EXPR)
04220	
04230	(DEFPROP &ID 
04240	 (LAMBDA NIL (AND (EQUAL &SCANTYPE IDTYPE) (NOT (GET &SCANVAL (QUOTE RW))))) 
04250	EXPR)
04260	
04270	(DEFPROP &ERROR 
04280	 (LAMBDA (&MSG)
04290	  (PROG NIL
04300		(TERPRI)
04310		(PRINTSTR (CAT (QUOTE "*** ERROR IN FUNCTION ") (CAT &CURFUNCT (QUOTE " ***"))))
04320		(PRINTSTR (CAT (QUOTE "*** ERROR ") (CAT (SETQ &ERRORCNT (ADD1 &ERRORCNT)) (CAT (QUOTE ": ") &MSG))))
04330		(PRINTSTR (CAT (QUOTE "CURRENT SYMBOL IS ") &SCANVAL))
04340		(PRINTSTR (CAT (QUOTE "LINE NUMBER ") (&WHERE (PGLINE))))
04350		(PRINTSTR (QUOTE "SKIPPING TO NEXT SEMICOLON"))
04360		(&RECOVER (&SCAN)))) 
04370	EXPR)
04380	
04390	(DEFPROP &WHERE 
04400	 (LAMBDA (&X) (CAT (CDR &X) (CAT SLASH (CAR &X)))) 
04410	EXPR)
04420	
04430	(DEFPROP &RECOVER 
04440	 (LAMBDA (&X) (COND ((&BASIC (QUOTE ;)) (&EXLIST)) (T (&RECOVER (&SCAN))))) 
04450	EXPR)
04460	
04470	(DEFPROP &DO2 
04480	 (LAMBDA (&X &Y) &X) 
04490	EXPR)
04500	
04510	(DEFPROP &DO2SCAN 
04520	 (LAMBDA (&X) (&DO2 &X (&SCAN))) 
04530	EXPR)