! File: ERROR.BEG ! ! This work was supported by the Advanced Research ! Projects Agency of the Office of the Secretary of ! Defense (F44620-73-C-0074) and is monitored by the ! Air Force Office of Scientific Research. ! ! ! ! DECLARATIONS NEEDED BY MODULES THAT PARTICIPATE IN ERROR HANDLING. ! ! !----------------------------------------------------------------------- !15. HERE ARE "EXTERNAL" DECLARATIONS OF VARIOUS ROUTINES AND ! GLOBAL COUNTERS AND FLAGS ASSOCIATED WITH ERROR HANDLING. EXTERNAL ERRORR, ! FROM SYNTAX; FATAL SYNTAX ERROR HANDLER (CALLS ERRPRNT) WARNEM, ! FROM DRIVER; NON-FATAL ERROR HANDLER ERRPRNT, ! FROM DRIVER; FATAL ERROR HANDLER % THE FOLLOWING "LOCATION" POINTERS REFER TO THE POSITION OF SOME PIECE OF SOURCE TEXT, AND ARE IN THE FORMAT: (LINE NUMBER) ^ 22 + (CHARACTER POSITION WITHIN LINE) % LCBRAC, ! LOCATION OF LAST "GOOD" CLOSING BRACKET LOBRAC, ! LOCATION OF "CURRENT" OPEN BRACKET NCBUFF, ! LOCATION OF LAST CHARACTER SCANNED ! NATOM, ! (USED IN LEXAN TO FILL NSYM, NDEL) NDEL, ! LOCATION OF LAST DELIMITER SCANNED NSYM, ! LOCATION OF LAST NON-DELIMITER SCANNED SCANCHANGE, ! VALUE OF NATOM WHEN SCANTYPE LAST CHANGED ! (START OF STRING, COMMENT, OR MACRO DEFINITION) %% ERRINFO, ! TWO WORDS OF EXTRA INFORMATION WHICH MAY ! OPTIONALLY BE FILLED DURING A CALL ON ERROR, ! ERRPRNT, OR WARNEM (AND USED BY ERROUT). ERRLEVEL, ! TRUE IF "PANIC SCAN" IS BEING DONE AND ERRORS ! ARE TO BE IGNORED. ERRORFOUND, ! COUNT OF FATAL ERRORS FOUND WARNINGFOUND, ! COUNT OF NON-FATAL ERRORS FOUND LASTLINE, ! NUMBER OF LAST SOURCE LINE MANYACTS; ! CURRENT STRUCTURE ACCESS MAY HAVE ! INDEFINITELY MANY ACTUAL PARAMETERS. !----------------------------------------------------------------------- !16. THE FOLLOWING ARE THE NUMBERS ASSOCIATED WITH THE POSSIBLE ! ERRORS WHICH MAY OCCUR IN BLISS DURING A COMPILATION. BIND IDERR=0, ! UNDECLARED IDENTIFIER DCLERR=1, ! DECLARATION AWAY FROM BLOCK HEAD EXPRERR=2, ! EXPRESSION IN WRONG CONTEXT BRACERR=3, ! END APPEARS MATCHING ( OR ! ) APPEARS MATCHING BEGIN OPERR1=4, ! UNARY (BINARY) OPERATOR IN WRONG CONTEXT OPERR2=5, ! CONTROL EXPRESSION MUST BE PARENTHESIZED OPERR3=6, ! MISSING OR EXTRA OPERAND OPERR4=7, ! MISSING OPERAND IFERR=8, ! IF APPEARS WITHOUT THEN WUERR=9, ! WHILE (UNTIL) WITHOUT DO DOERR=10, ! DO WITHOUT WHILE (UNTIL) ! REPERR1=11, ! IMPROPERLY DEFINED CONTROL VARIABLE REPERR2=12, ! DO MISSING IN INCR (DECR) STATEMENT PARAERR=13, ! PARAMETER LIST NOT CLOSED PROPERLY CASERR1=14, ! MISSING OF IN CASE CASERR2=15, ! CASE WITHOUT SET CASERR3=16, ! SET WITHOUT TES SELERR1=17, ! MISSING OF IN SELECT SELERR2=18, ! SELECT WITHOUT NSET SELERR3=19, ! COLON MISSING IN SELECT SELERR4=20, ! MISSING TESN WALOCERR=21, ! ADDRESS ARITHMETIC ON LOCAL ERILLPTR=22, ! ILLEGAL OCCURRENCE OF POINTER EXPRESSION PERR1=23, ! INVALID POSITION EXPRESSION IN POINTER PERR2=24, ! INVALID SIZE EXPRESSION IN POINTER WAPSOVFL=25, ! POINTER EXPRESSION TRIES TO ACCESS FIELD WHICH CROSSES A WORD BOUNDARY WAPOSOVFL=26, ! POSITION SPECIFIED IS GREATER THAN 16 INERR1=27, ! BAD SYNTAX FOR INLINE INERR2=28, ! PARAMETER TO INLINE MUST BE LITERAL OR LONG STRING INERR3=29, ! USE OF INLINE (WARNING) ENERR1=30, ! COLON MISSING IN ENABLE ENERR2=31, ! MISSING ELBANE ENERR0=32, ! MORE THAN ONE ENABLE FOR THIS BLOCK CREATERR1=33, ! INVALID 1ST ARGUMENT TO CREATE. CREATERR2=34, ! AT MISSING IN CREATE. CREATERR3=35, ! LENGTH MISSING IN CREATE. CREATERR4=36, ! THEN MISSING IN CREATE. WABLKMTCH=37, ! BLOCK BEGIN & END NAMES DO NOT MATCH WATMPARMS=38, ! TOO MANY PARAMETERS PASSED TO SPEC. FUN. OR ROUTINE CALL BADSYMERR=39, ! NON-ADDRESSABLE SYMBOL USED AS EXPRESSION EXITERR0=40, ! LABEL NOT USED ON THIS EXPRESSION. NOFOUNDEXERR=41,! LABEL NOT YET ENCOUNTERED ON EXPRESSION. LABELERR=42, ! OBJECT OF LEAVE EXPRESSION ! IS NOT LABEL. LABUSERR=43, ! ANOTHER EXPRESSION GIVEN SAME LABEL EXITERR1=44, ! RETURN (EXITLOOP) OUTSIDE ROUTINE (LOOP) WILLNSARG=45, ! ARGUMENT TO $NAME OR $STRING NOT LITERAL OR STRING. WACANTRES=46, ! REGISTER NOT AVAILABLE FOR RESERVATION ERMISSBRC=47, ! TOO MANY CLOSE BRACKETS OR MISSING OPEN BRACKET WABADMOD=48, ! ERROR IN MODULE HEAD; SCAN RESTARTED AT ! "BEGIN" POINTED TO BY ERROR POINTER WASWNONX=49, ! INVALID SWITCH SPECIFIED WASMPREV=50, ! SYMBOL PREVIOUSLY DECLARED AT CURRENT BLOCKLEVEL WASWSYN=51, ! SYNTAX ERROR IN SWITCH SPECIFICATION ERMBADEXP=52, ! LITERAL EXPECTED IN THIS CONTEXT. WAINVSTRUC=53, ! STRUCTURE NAME NOT A NAME WASMNOTSTR=54, ! STRUCTURE NAME NOT A STRUCTURE, OR UNDECLARED ! DEFINED AS ONE. ERSYMEQ=55, ! MISSING EQUAL SIGN DCLDELERR=56, ! DECLARATOR DELIMITER ERROR. MUST BE A COMMA ! OR SEMICOLON. ERSYMNPRD=57, ! IN A FORWARD DECLARATION, THERE ! MUST BE ONLY A SINGLE LITERAL EXPRESSION IN ! PARENTHESIS. DECLSYMERR=58, ! ILLEGAL SYMBOL BEFORE DECLARATOR NAME ERSMNDEC=59, ! REGISTER NOT AVAILABLE ERSYMBRAC=60, ! NO "]" AFTER SIZE FIELD ERSYMGRLD=61, ! NO SEMICOLON AFTER DECLARATION ! EXPRESSION. ERSYINVMDEC=62, ! MODULE DECLARATION FOUND WITHIN ! MODULE BODY. LSIZERR=63, ! LABEL DECLARATIONS MAY NOT HAVE A SIZE FIELD. WANOEQL=64, ! "=" NOT ALLOWED IN DECLARATION ERREQRDEC=65, ! NO "=" IN ROUTINE DECL. NOOPERATOR=66, ! ATOMIC OPERANDS NOT SEPARATED BY DELIMITER ERRBYTEFOL=67, ! NO DECLARATION FOLLOWING 'BYTE' ERDCLRESWD=68, ! TRIED TO DECLARE RESERVED WORD. ERSNMBDOT=69, ! STRUCTURE NAME MUST BE DOTTED IN ITS BODY ERNODOTS=70, ! MUST NOT DOT A FORMAL IN SIZE EXPRESSION ERSMSQBCLOSE=71, ! MISSING PARAM LIST CLOSING BRACKET ERSYMFOL=72, ! SYMBOL OR LITERAL MUST NOT FOLLOW A ! CLOSING BRACKET (SEE RUNDE). ERMEQ=73, ! EQUAL SIGN MISSING IN STRUCT OR MACRO ERMPL=74, ! MISSING ACTUAL PARAMETER LIST ERMFPL=75, ! MISSING ACTUAL PARAMETER ERXACTS=76, ! EXTRA ACTUAL PARAMETERS TO A STRUCTURE WAMSPLNKG=77, ! MISSPELLED LINKAGE NAME WACANTMAP=78, ! SYMBOL NOT SUITED FOR "MAP" DECLARATION ERMAPLD=79, ! MISSING ACTUAL PARAMETER LIST DELIMITER ERSYIQC=80, ! INVALID ESCAPE CHARACTER ERSYMRQ=81, ! MISSING RIGHT QUOTE ERSYPLMRP=82, ! MISSING RIGHT PAREN IN A PLIT ERSMPLNLI=83, ! DUPLICATION FACTOR NOT LITERAL ERSMPLNLO=84, ! NOT LITERAL AT LOAD TIME ERILSUSE=85, ! LONG STRING MAY NOT BE USED HERE ERMRD=86, ! MISSING ROUTINE DEF. DECLARED FORWARD ERISEDS=87, ! INITIAL VALUE SIZE EXCEDES DECLARED SIZE ERNEEDLS=88, ! STRING FUNCTION REQUIRES STRING ARGUMENT WBADCSECT=89, ! CSECT DECLARATION ERROR - IGNORED LNKGNOEQUAL=90, ! MISSING EQUAL IN LINKAGE DECLARATION LNKGNOTYP=91, ! NO LINKAGE TYPE SPECIFIED LNKGTOOMANYP=92,! TOO MANY PARAMETERS IN LINKAGE DECLARATION LNKGINVSYNTAX=93,! MISSING COMMA IN LINKAGE DECLARATION LNKGINVPARM=94, ! INVALID PARAMETER TYPE LNKGNOTREG=95, ! INVALID REGISTER NUMBER WATRAPLNKG=96, ! CANNOT MAP "TRAP" LINKAGE TYPE WABADRAD50=97, ! ILLEGAL CHARACTER IN RADIX 50 STRING NOTENUFREGS=98, ! REGISTER ALLOCATION FAILURE (ARLST) REGTOOCROWD=99, ! REGISTER ALLOCATION FAILURE (SRLST) DIVERR=100, ! ATTEMPT TO DIVIDE BY ZERO ERNOSYM=101, ! MISSING SYMBOL IN DECLARATION WASTATERR=102, ! I/O ERROR DURING COMPILER STATISTICS WRITEOUT ERUPLVL=103, ! ILLEGAL UP-LEVEL ADDRESSING WAMODDOM=104, ! EXTRA OR MISSING "ELUDOM" NOTIMPL=105, ! NOT IMPLEMENTED ERREQNEST=106, ! REQUIRE FILES NESTED TOO DEEP ERREQDEV=107, ! REQUIRE DEVICE NOT AVAILABLE ERREQDPPN=108, ! INVALID DEC-PPN FORMAT FOR REQUIRE ERREQCPPN=109, ! INVALID CMU-PPN FOR REQUIRE ERREQFIND=110, ! REQUIRE FILE NOT FOUND ERUNTCOM=111, ! UNTERMINATED COMMENT ERUNTMAC=112, ! UNTERMINATED MACRO DEFINITION ERMSEND=113, ! MISSING END OR RIGHT PAREN ERINVBNSYN=114, ! INVALID BLOCK NAME SYNTAX ERINVBNARG=115, ! INVALID BLOCK NAME WASTRUCTREC=116,! STRUCTURE MAY NOT CALL ITSELF RECURSIVELY ERSYMOR=#675, ! SYMBOL TYPE NOT ADDRESSABLE (DELAY) ERINVMODE=#676, ! MODE OF NODE INVALID IN DELAY (ADDCLASS) ERINVLEXT=#677; ! LEXEME TYPE INVALID IN DELAY (ADDCLASS) !--------------------------------------------------------------------- !17. THE FOLLOWING ARE: A FLAG TO INFORM "RUNC" OF THE PROPER REACTION ! TO CERTAIN OPEN BRACKETS, AND MACROS (CALLED IN "DCLARE" AND ! "EXPRESSION") TO SET AND RESTORE THAT FLAG. EXTERNAL INDECL; MACRO INDCL = INDECL_.INDECL^1 + 1 $, INEXP = INDECL_.INDECL^1 + 0 $, RESINDECL = INDECL_.INDECL^(-1) $; !--------------------------------------------------------------------- !18. HERE IS THE "PANIC STOP" EQUIPMENT: NAMES FOR THE INDICES INTO THE ! PANICSTOP TABLE IN "ERRORR", AND MACROS FOR SETTING AND RESTORING ! "LASTEND", WHICH IS THE "CURRENT" INDEX. BIND PSPARSEM = 1, PSENDSEM = 2, PSOF = 3, PSTES = 4, PSTESSEM = 5, PSTESN = 6, PSTESNCOLSEM = 7, PSELBCOLSEM = 8, PSCOMSEM = 9, PSCOMSQBC = 10, PSPARCOM = 11, PSPAR = 12, PSDO = 13, PSWU = 14, PSTHEN = 15, PSAT = 16, PSLENGTH = 17, PSSEM = 18, PSPOI = 19, PSEND = 20; EXTERNAL LASTEND; MACRO NEWLASTEND(N) = SAVEL_.LASTEND; LASTEND_N $, RESLASTEND = LASTEND_.SAVEL $;