(FILECREATED " 6-Oct-86 23:07:21" ("compiled on " {ERIS}SOURCES>CMLPARSE.;8) " 1-Oct-86 20:23:15" "COMPILE-FILEd" in "Xerox Lisp 1-Oct-86 ..." dated " 1-Oct-86 21:24:44") (FILECREATED " 6-Oct-86 23:06:21" {ERIS}SOURCES>CMLPARSE.;8 39673 changes to: (FUNCTIONS ANALYZE) previous date: "29-Sep-86 18:50:56" {ERIS}SOURCES>CMLPARSE.;7) (RPAQQ CMLPARSECOMS ((* ;; "Parsing bodies and argument lists") (VARIABLES %%ARG-COUNT %%MIN-ARGS %%UNBOUNDED-ARG-COUNT %%LET-LIST %%KEYWORD-TESTS %%ENV-ARG-USED %%CTX-ARG-USED %%ENV-ARG-NAME %%CTX-ARG-NAME) (VARIABLES *DEFAULT-DEFAULT* *KEY-FINDER*) (FUNCTIONS PARSE-BODY) (FUNCTIONS PARSE-DEFMACRO ANALYZE ANALYZE-AUX ANALYZE-KEY ANALYZE-PARAMETER CHECK-PARAMETER-NAME PUSH-KEYWORD-BINDING ANALYZE-REST RECURSIVELY-ANALYZE DEFMACRO-ARG-TEST) (* ;; "Testing the argument-list parsing") (VARIABLES ANALYZE-TESTS) (* ;; "Runtime support functions") ( FUNCTIONS KEYWORD-TEST FIND-KEYWORD) (* ;; "Arrange to use the correct compiler") (PROP FILETYPE CMLPARSE))) (PROCLAIM (QUOTE (SPECIAL %%ARG-COUNT))) (OR (BOUNDP (QUOTE %%ARG-COUNT)) (SETQ %%ARG-COUNT NIL)) (PROCLAIM (QUOTE (SPECIAL %%MIN-ARGS))) (OR (BOUNDP (QUOTE %%MIN-ARGS)) (SETQ %%MIN-ARGS NIL)) (PROCLAIM (QUOTE (SPECIAL %%UNBOUNDED-ARG-COUNT))) (OR (BOUNDP (QUOTE %%UNBOUNDED-ARG-COUNT)) (SETQ %%UNBOUNDED-ARG-COUNT 0)) (PROCLAIM (QUOTE (SPECIAL %%LET-LIST))) (OR (BOUNDP (QUOTE %%LET-LIST)) (SETQ %%LET-LIST NIL)) (PROCLAIM (QUOTE (SPECIAL %%KEYWORD-TESTS))) (OR (BOUNDP (QUOTE %%KEYWORD-TESTS)) (SETQ %%KEYWORD-TESTS NIL)) (PROCLAIM (QUOTE (SPECIAL %%ENV-ARG-USED))) (OR (BOUNDP (QUOTE %%ENV-ARG-USED)) (SETQ %%ENV-ARG-USED NIL)) (PROCLAIM (QUOTE (SPECIAL %%CTX-ARG-USED))) (OR (BOUNDP (QUOTE %%CTX-ARG-USED)) (SETQ %%CTX-ARG-USED NIL)) (PROCLAIM (QUOTE (SPECIAL %%ENV-ARG-NAME))) (OR (BOUNDP (QUOTE %%ENV-ARG-NAME)) (SETQ %%ENV-ARG-NAME NIL)) (PROCLAIM (QUOTE (SPECIAL %%CTX-ARG-NAME))) (OR (BOUNDP (QUOTE %%CTX-ARG-NAME)) (SETQ %%CTX-ARG-NAME NIL)) (PROCLAIM (QUOTE (SPECIAL *DEFAULT-DEFAULT*))) (OR (BOUNDP (QUOTE *DEFAULT-DEFAULT*)) (SETQ *DEFAULT-DEFAULT* NIL)) (PROCLAIM (QUOTE (SPECIAL *KEY-FINDER*))) (OR (BOUNDP (QUOTE *KEY-FINDER*)) (SETQ *KEY-FINDER* NIL)) PARSE-BODYA0001A0002 D1 (L (0 PROCEED-CASE) P 1 *PRINT-LENGTH* P 0 *PRINT-LEVEL* I 1 *STANDARD-OUTPUT* F 2 FORM) ldioR (16Q FORMAT) NIL ( 12Q "Assume that ~S does not expand into a declaration.") PARSE-BODYA0001 D1 (P 0 *PROCEED-CASES* F 1 PROCEED-CASE1057 F 2 *PROCEED-CASES* F 3 FORM F 4 ENVIRONMENT) 0ggggQgjghgg RST (53Q \MVLIST 50Q MACROEXPAND 36Q MAKE-PROCEED-CASE) (32Q PARSE-BODYA0001A0002 27Q :REPORT 23Q :TEST 17Q :SELECTOR 13Q :TAG 10Q PROCEED 5 :NAME 2 :NORMAL) () PARSE-BODYA0003 D1 (L (0 IGNORE) F 0 FORM) PNIL NIL () PARSE-BODY D1 (L (0 -args-) P 16Q PROCEED-CASE1057 P 15Q FORM P 2 ENVIRONMENT) eka lalHilaI! O OOOhiKO_OmOlhi`Odgm NhOg __OOgN $gjNdMk]nhl4 ML_OO O gOO_O_B(305Q VALUES 300Q REVERSE 255Q \LISPERROR 217Q VALUES-LIST 171Q \CATCH-FUNCALL 150Q SPECIAL-FORM-P) (312Q DECLARE 224Q PARSE-BODYA0003 211Q :NORMAL 166Q PARSE-BODYA0001 141Q DECLARE) () PARSE-DEFMACRO D1 (L (0 -args-) P 53Q %%CTX-ARG-USED P 52Q %%ENV-ARG-USED P 51Q %%KEYWORD-TESTS P 50Q %%LET-LIST P 47Q %%UNBOUNDED-ARG-COUNT P 46Q %%MIN-ARGS P 45Q %%ARG-COUNT P 32Q *KEY-FINDER* P 27Q *DEFAULT-DEFAULT* P 16Q %%CTX-ARG-NAME P 13Q %%ENV-ARG-NAME) ,ekaP$lalalalaHl_OdNgJh_Hl__OdOh_Hl__OdOh_Hl_ _O dOh_"Hl_&_$O&dO$i_(Hl_,_*O,dO*h_.Hl_2_0O2dO0g_4Hl_8_6O8dO6Ig Ig_:KMO( _<_>O<_@_BO@_DjdR+IO:gOhagOkaOl_agOkaOl_agOkaOl_agO kaO l_ agO&kaO&l_&agO,kaO,l_,agO2kaO2l_2agO8kaO8l_8OLJ O"O gOP OBORO> _H_F(gOFgO"gLhgOhhOHhOHOFhiIhiggJhhhOOThiggOhhhOOVhiggOhhh ODOLONhOJ (1250Q VALUES 1231Q \APPEND2 1226Q \APPEND2 1014Q \APPEND2 1011Q \APPEND2 1000Q REVERSE 770Q DEFMACRO-ARG-TEST 757Q ANALYZE 373Q \MVLIST 370Q PARSE-BODY) (1211Q IGNORE 1206Q DECLARE 1155Q IGNORE 1152Q DECLARE 1122Q IGNORE 1117Q DECLARE 1051Q CL:LENGTH 1042Q QUOTE 1035Q CL:ERROR 1030Q CL:IF 773Q LET* 724Q :REMOVE-COMMENTS 674Q :KEY-FINDER 644Q :DEFAULT-DEFAULT 614Q :DOC-STRING-ALLOWED 564Q :ERROR-STRING 534Q :CONTEXT 504Q :ENVIRONMENT 454Q :PATH 440Q REMOVE-COMMENTS 355Q %%ORIGINAL-DEFINITION 344Q &WHOLE 310Q FIND-KEYWORD 62Q CDR) () ANALYZE D1 (L (3 WHOLE 2 ERRLOC 1 PATH 0 ARGLIST) F 5 %%LET-LIST F 6 %%ARG-COUNT F 7 %%UNBOUNDED-ARG-COUNT F 10Q %%ENV-ARG-NAME F 11Q %%CTX-ARG-NAME F 12Q %%MIN-ARGS F 13Q *DEFAULT-DEFAULT* F 14Q %%CTX-ARG-USED F 15Q %%ENV-ARG-USED) [ @Aho@ iHAhUc Hb@AHHicHAhUc Zdg(CHHCB icHoB g=W.H)Hl HB HWhUc icHoB Jdg>W.H)Hl HB HWhUc icHeoB XgIooB iY>JgJdgHHABC gicKAhUc HKB JdgooB gHB IVkc Jdl)B JgAgAhhiWhhhUc }ooB mJgAgAhhiJJWhhB Jhi?JB JggAhhhUc WkcVkc JgAhB HHgAh\gAhhUc LbHX(1077Q GENSYM 1051Q ANALYZE-PARAMETER 765Q CHECK-PARAMETER-NAME 743Q ANALYZE-PARAMETER 674Q CERROR 613Q CHECK-PARAMETER-NAME 563Q ANALYZE-AUX 545Q CERROR 520Q ANALYZE-KEY 472Q GENSYM 460Q ANALYZE-REST 421Q CERROR 372Q CL:ERROR 333Q CHECK-PARAMETER-NAME 266Q CL:ERROR 227Q CHECK-PARAMETER-NAME 165Q CL:ERROR 143Q ANALYZE-PARAMETER 34Q GENSYM 23Q ASSERT-FAIL 5 VALUES) (1103Q CDR 1066Q CDR 1041Q CAR 1000Q NULL 775Q NOT 707Q CAR 703Q COND 624Q CAR 620Q COND 553Q &AUX 526Q &ALLOW-OTHER-KEYS 464Q &KEY 442Q &BODY 433Q &REST 400Q &OPTIONAL 276Q &CONTEXT 173Q &ENVIRONMENT 117Q &WHOLE) ( 670Q "Non-symbol variable name in ~S." 664Q "Ignore this item." 541Q "Stray &ALLOW-OTHER-KEYS in arglist of ~S." 535Q "Ignore it." 415Q "Redundant &optional flag in varlist of ~S." 411Q "Ignore it." 366Q "Illegal or ill-formed &context arg in ~S." 262Q "Illegal or ill-formed &environment arg in ~S." 161Q "Illegal or ill-formed &whole arg in ~S." 17Q "The argument list ~S was not a list.") ANALYZE-AUX D1 (L (1 ERRLOC 0 ARGLIST) F 1 %%LET-LIST) p@HdooA hHdlA HoQc7oH(HlHA HHhQcoHA HX(150Q CL:ERROR 115Q CHECK-PARAMETER-NAME 45Q CHECK-PARAMETER-NAME 25Q CERROR) NIL ( 141Q "Non-symbolic &AUX parameter %"~S%" in arglist of ~S." 72Q "Non-symbolic &AUX parameter %"~S%" in arglist of ~S." 54Q (NIL) 21Q "Dotted arglist after &AUX in ~S." 15Q "Ignore the illegal terminator.") ANALYZE-KEY D1 (L (2 ERRLOC 1 RESTVAR 0 ARGLIST) F 10Q %%LET-LIST F 11Q %%KEYWORD-TESTS) \iHWc@AKK+ooB \dghY#g"KB IgAgJhhWcLdl LMhdAHB MJZooLB Ldl" LLMLNAHB MJZL hiLdooLB {l4L] hioMB LLMLNAHB MJZ@L] hioMB _LOMLNAHB MJLOB K[(523Q RECURSIVELY-ANALYZE 504Q PUSH-KEYWORD-BINDING 456Q GENSYM 452Q CL:ERROR 434Q KEYWORDP 416Q PUSH-KEYWORD-BINDING 370Q CL:ERROR 352Q KEYWORDP 330Q CERROR 275Q KEYWORDP 253Q PUSH-KEYWORD-BINDING 227Q MAKE-KEYWORD 207Q CERROR 160Q PUSH-KEYWORD-BINDING 144Q MAKE-KEYWORD 77Q ANALYZE-AUX 43Q CERROR 2 GENSYM) (113Q QUOTE 107Q KEYWORD-TEST 66Q &AUX 53Q &ALLOW-OTHER-KEYS) ( 445Q "%"~S%" should be a keyword, in arglist of ~S." 363Q "%"~S%" should be a keyword, in arglist of ~S." 322Q "~S -- ill-formed keyword arg in ~S." 316Q "Ignore this item." 202Q "~S -- non-symbol variable name in arglist of ~S." 176Q "Ignore this item." 37Q "Dotted arglist after &key in ~S." 33Q "Ignore the illegal terminator.") ANALYZE-PARAMETER D1 (L (2 ERRLOC 1 PATH 0 PARAM) F 1 %%LET-LIST) =@dlB @AhQcoo@B HAhQc@HBH (72Q RECURSIVELY-ANALYZE 47Q GENSYM 43Q CERROR 12Q CHECK-PARAMETER-NAME) NIL ( 36Q "Non-symbol variable name %"~S%" in ~S." 32Q "Ignore this item.") CHECK-PARAMETER-NAME D1 (L (1 ERRLOC 0 NAME) F 0 LAMBDA-LIST-KEYWORDS) S@l@ooA o oo@A @Pgg oo@A (120Q CERROR 101Q MEMBER 65Q CERROR 47Q KEYWORDP 41Q ASSERT-FAIL 31Q CERROR 11Q VALUES) (76Q EQ 73Q :TEST) ( 113Q "The lambda-list keyword ~S was used as a parameter name in ~S" 107Q "Use it anyway. This is UGLY..." 60Q "The keyword ~S was used as a parameter name in ~S" 54Q "Use it anyway. This is UGLY..." 36Q "CHECK-PARAMETER-NAME should only be called with a symbol!" 25Q "NIL used as a parameter name in ~S" 21Q "Try to continue. Good luck!") PUSH-KEYWORD-BINDING D1 (L (6 ERRLOC 5 TEMP-VAR 4 REST-VAR 3 SUPPLIED-P-VAR 2 DEFAULT 1 KEYWORD 0 VARIABLE) F 0 %%LET-LIST F 1 *KEY-FINDER* F 2 *DEFAULT-DEFAULT*) r@F ClhioCF @ggEQgAhDhhgEhhiBRhhhPcChiCF CggEhhhPc(132Q CHECK-PARAMETER-NAME 27Q CL:ERROR 4 CHECK-PARAMETER-NAME) (141Q NULL 136Q NOT 64Q CAR 44Q QUOTE 37Q CL:SETQ 34Q COND) ( 22Q "Non-symbolic supplied-p parameter %"~S%" found in arglist of ~S.") ANALYZE-REST D1 (L (4 WHOLE 3 ERRLOC 2 PATH 1 ARGLIST 0 KEYWORD) F 7 %%LET-LIST F 10Q %%ENV-ARG-NAME F 11Q %%CTX-ARG-NAME F 12Q %%UNBOUNDED-ARG-COUNT F 13Q %%ENV-ARG-USED F 14Q %%CTX-ARG-USED) Ao@C icA!Hd@g@gHddHBC HxH kpWhio HHHhNggBWMhihhhWcKgNhC LgNhC MgNhC oC AYdhooC ZdgHooC IHC gIC JdgooC g1D#IIlIDhWcIYoC Jdg6W'I"IlIWhWcicIYRoC Hg4W'I"IlIWhWcicIYoC ooIC I(717Q CERROR 700Q CL:ERROR 607Q CL:ERROR 512Q CL:ERROR 425Q CERROR 400Q ANALYZE-AUX 364Q ANALYZE-KEY 352Q CERROR 321Q CERROR 273Q CL:ERROR 260Q ANALYZE-PARAMETER 236Q ANALYZE-PARAMETER 221Q ANALYZE-PARAMETER 140Q GENSYM 123Q CL:ERROR 101Q CL:LENGTH 66Q ANALYZE-PARAMETER 13Q CL:ERROR) (614Q &CONTEXT 522Q &ENVIRONMENT 433Q &WHOLE 406Q &ALLOW-OTHER-KEYS 370Q &AUX 330Q &KEY 250Q THIRD 226Q SECOND 211Q CL:FIRST 154Q PARSE-BODY 151Q MULTIPLE-VALUE-LIST 44Q &BODY 36Q &REST) ( 711Q "Stray parameter %"~S%" found in arglist of ~S." 705Q "Ignore it." 674Q "Ill-formed or illegal &context arg in ~S." 603Q "Ill-formed or illegal &environment arg in ~S." 506Q "Ill-formed or illegal &whole arg in ~S." 421Q "Stray &ALLOW-OTHER-KEYS in arglist of ~S." 415Q "Ignore it." 346Q "The parsing version of &body was mixed with &key in arglist of ~S." 342Q "Ignore the keywords." 315Q "Dotted arglist terminator after &rest arg in ~S." 311Q "Ignore the illegal terminator." 267Q "Bad &rest or &body arg in ~S." 120Q "The parsing version of &body is not allowed when no lexical environment is available." 6 "Bad ~S arg in ~S.") RECURSIVELY-ANALYZE D1 (L (3 WHOLE 2 ERRLOC 1 PATH 0 ARGLIST) P 4 %%CTX-ARG-NAME P 3 %%ENV-ARG-NAME P 2 %%UNBOUNDED-ARG-COUNT P 1 %%ARG-COUNT P 0 %%MIN-ARGS) jd2@ABC (13Q ANALYZE) NIL () DEFMACRO-ARG-TEST D1 (L (0 ARGS) F 0 %%MIN-ARGS F 1 %%ARG-COUNT F 2 %%UNBOUNDED-ARG-COUNT) PjPd RhPjPR'gg@hPh gg@hQhPQ gg@hPhggg@hQhgg@hPhh(107Q %%= 60Q \FZEROP 13Q \FZEROP) (160Q CL:LENGTH 155Q < 141Q CL:LENGTH 136Q > 133Q OR 116Q CL:LENGTH 113Q /= 70Q CL:LENGTH 65Q > 43Q CL:LENGTH 40Q <) () (PROCLAIM (QUOTE (SPECIAL ANALYZE-TESTS))) (OR (BOUNDP (QUOTE ANALYZE-TESTS)) (SETQ ANALYZE-TESTS (QUOTE ((MULTIPLE-VALUE-LIST (PARSE-DEFMACRO ( QUOTE ((&WHOLE HEAD MOUTH &OPTIONAL EYE1 (EYE2 7 EYE2-P)) ((FIN1 LENGTH1 &KEY ONE (TWO 8) ((:THREE TROIS) 3 TRES-P) ((:FOUR (QUATRE QUATRO)) (QUOTE (4 4)))) &OPTIONAL ((FIN2 LENGTH2) 9 FL2-P)) TAIL &REST (FOO BAR BAZ) &ENVIRONMENT ENV)) (QUOTE WHOLE-ARG) (QUOTE ((CODE))) (QUOTE ERRLOC) :ENVIRONMENT (QUOTE *ENV*) :ERROR-STRING "Ack!")) (QUOTE ((&WHOLE HEAD MOUTH EYE1 EYE2) ((FIN1 LENGTH1) (FIN2 LENGTH2)) TAIL)) (QUOTE ((&WHOLE HEAD MOUTH &OPTIONAL EYE1 (EYE2 7 EYE2-P)) ((FIN1 LENGTH1 &KEY ONE ( TWO 8) ((:THREE TROIS) 3 TRES-P) ((:FOUR (QUATRE QUATRO)) (QUOTE (4 4)))) &OPTIONAL ((FIN2 LENGTH2) 9 FL2-P)) TAIL &REST (FOO BAR BAZ) &ENVIRONMENT ENV)))))) KEYWORD-TEST D1 (L (1 KEYS 0 ARGS)) B0@'dZdgJAgg hiJHIhi oH (77Q CL:ERROR 40Q CL:MEMBER 35Q SYMBOL-FUNCTION) (32Q EQ 27Q :TEST 14Q :ALLOW-OTHER-KEYS) ( 73Q "Extraneous keyword %"~S%" given.") FIND-KEYWORD D1 (L (1 KEYLIST 0 KEYWORD)) 1AHIoo Hh&hHd@hHX(30Q CERROR) NIL ( 25Q "Unpaired item in keyword portion of macro call." 21Q "Stick a NIL on the end and go on.") (PUTPROPS CMLPARSE FILETYPE COMPILE-FILE) (PUTPROPS CMLPARSE COPYRIGHT ("Xerox Corporation" 1986)) NIL