TABLE - KEY TABLES FOR INDEX MACRO M1113 15-FEB-80 10:10 PAGE 2 1 .TITLE TABLE - KEY TABLES FOR INDEX 2 .IDENT /V02/ 3 4 ; 5 ; AUTHOR: GARY L. MAXWELL 6 ; DATE: 13-AUG-79 7 ; 8 ; THIS MODULE REPLACES THE OLD TABLE MODULE FOR INDEX 9 ; 10 ; THESE TABLES ARE COMPLETELY CODIFIED SO TABLE ENTRIES ARE 11 ; REFERRED SYMBOLICALLY THROUGHOUT THE IDX PROGRAM. 12 ; 13 ; THIS MODULE CONTAINS A TABLE (STARTING AT LOCATION KEY) 14 ; OF FORTRAN CONTROL AND KEY WORDS IN ASCII WHICH IS SCANNED 15 ; BY THE SCANLN ROUTINE. IF A MATCH IS FOUND, THE SEQUENCE OF 16 ; THIS ENTRY IN THE TABLE INDEXES INTO ANOTHER TABLE (STARTING 17 ; AT EVLRTN) WHICH POINTS TO A PARSING ROUTINE WHICH WILL 18 ; PROCESS THE SOURCE LINE. 19 ; 20 ; A MACRO, KEYDEF, BUILDS THE KEY AND ENTRY POINT TABLE. 21 ; IT IS INVOKED WITH THE CALL: 22 ; 23 ; KEYDEF ,KEYSYM,EVALRTN 24 ; 25 ; WHERE: 26 ; KEYWORD IS THE FORTRAN 'TOKEN' THAT WILL BE MATCHED 27 ; WITH THE INPUT STREAM. 28 ; KEYSYM IS A SYMBOL, FOUR LETTERS MAXIMUM IN LENGTH, 29 ; THAT WILL BE APPENDED TO THE LETTERS 'KY' AND 30 ; DEFINED AS THE GLOBAL SEQUENCE NUMBER (TOKEN 31 ; VALUE) OF THE KEYWORD. THUS, IF THE KEYSYM 32 ; ARGUMENT WAS "SUB", THEN THE GLOBAL SYMBOL 33 ; "KYSUB" IS DEFINED WITH THE UNIQUE VALUE OF 34 ; "KEYWORD"'S SEQUENCE IN THE KEY TABLE. 35 ; EVALRTN IS THE NUMBER ID OF THE EVALUATION PARSER THAT 36 ; WILL BE PARSING THIS KEY LINE 37 ; 38 ; MACRO EVL DEFINES THE GLOBAL ENTRY POINT INTO AN EVALUATION 39 ; ROUTINE BY ISSUING A .WORD DIRECTIVE IN THE EVLRTN TABLE 40 ; 41 .MACRO EVL A 42 .PSECT ROUTSC,D 43 .GLOBL EVL'A 44 .WORD EVL'A 45 .ENDM 46 ; 47 .MACRO KEYDEF KEY,KEYSYM,EVLRTN 48 .PSECT KEYSEC,D 49 KEYVAL = KEYVAL + 1 50 KY'KEYSYM == KEYVAL 51 .ASCIZ ^KEY^ 52 EVL EVLRTN 53 .PSECT TABLE 54 .ENDM TABLE - KEY TABLES FOR INDEX MACRO M1113 15-FEB-80 10:10 PAGE 3 56 ;+ 57 ; THE VTYPDF MACRO BELOW DEFINES THE CODES USED IN THE 58 ; CREF LISTING, AND THE TOKENS WHOSE VALUES CORRESPOND TO 59 ; THESE CODES. 60 ;- 61 .MACRO VTYPDF VCODE,VTOKEN 62 VARVAL = VARVAL + 1 63 VT'VTOKEN == VARVAL 64 .ASCII ^VCODE^ 65 .ENDM 66 ;+ 67 ; INITIALIZE SYMBOLS FOR THIS MODULE 68 ;- 69 000000 KEYVAL = 0 70 177777 VARVAL = -1 TABLE - KEY TABLES FOR INDEX MACRO M1113 15-FEB-80 10:10 PAGE 4 72 000000 .PSECT KEYSEC,D 73 000000 KEY:: 74 ; 75 000000 .PSECT ROUTSC,D 76 000000 EVLRTN:: 77 000000 EVL 40 ; TYPE 0 SHOULD NOT OCCUR 78 ; 79 000002 KEYDEF ,ACC,2 ; ACCEPT: GO TO EVL2 80 000000 KEYDEF ,ASN,3 ; ASSIGN: GO TO EVL3 81 000000 KEYDEF ,BKSP,4 ; BACKSPACE: GO TO EVL4 82 000000 KEYDEF ,BKDT,14 ; BLOCKDATA: GO TO EVL14 83 000000 KEYDEF ,BYTE,15 ; BYTE: GO TO EVL15 84 000000 KEYDEF ,CALL,5 ; CALL: GO TO EVL5 85 000000 KEYDEF ,CLOS,19 ; CLOSE(: GO TO EVL19 86 000000 KEYDEF ,COM,6 ; COMMON: GO TO EVL6 87 000000 KEYDEF ,CPX,15 ; COMPLEX: GO TO EVL15 88 000000 KEYDEF ,CONT,0 ; CONTINUE: GO TO EVL0 89 000000 KEYDEF ,DATA,7 ; DATA: GO TO EVL7 90 000000 KEYDEF ,DCOD,8 ; DECODE(: GO TO EVL8 91 000000 KEYDEF ,DEFF,9 ; DEFINEFILE: GO TO EVL9 92 000000 KEYDEF ,DIM,10 ; DIMENSION: GO TO EVL10 93 000000 KEYDEF ,DBP,15 ; DOUBLEPRECISION: GO TO EVL15 94 000000 KEYDEF ,DO,11 ; DO: GO TO EVL11 95 000000 KEYDEF ,ENDF,4 ; ENDFILE: GO TO EVL4 96 000000 KEYDEF ,ENC,8 ; ENCODE(: GO TO EVL8 97 000000 KEYDEF ,END,12 ; END: GO TO EVL12 98 000000 KEYDEF ,ENT,14 ; ENTRY: GO TO EVL14 99 000000 KEYDEF ,EQV,10 ; EQUIVALENCE: GO TO EVL10 100 000000 KEYDEF ,EXT,10 ; EXTERNAL: GO TO EVL10 101 000000 KEYDEF ,FIND,13 ; FIND(: GO TO EVL13 102 000000 KEYDEF ,FMT,22 ; FORMAT(: GO TO EVL22 103 000000 KEYDEF ,FUNC,14 ; FUNCTION: GO TO EVL14 104 000000 KEYDEF ,GOTO,18 ; GOTO: GO TO EVL18 105 000000 KEYDEF ,IF,16 ; IF(: GO TO EVL16 106 000000 KEYDEF ,IMPL,0 ; IMPLICIT: GO TO EVL0 107 000000 KEYDEF ,INCL,21 ; INCLUDE: GO TO EVL21 108 000000 KEYDEF ,INT,15 ; INTEGER: GO TO EVL15 109 000000 KEYDEF ,LOGI,15 ; LOGICAL: GO TO EVL15 110 000000 KEYDEF ,OPEN,19 ; OPEN(: GO TO EVL19 111 000000 KEYDEF ,PARM,20 ; PARAMETER: GO TO EVL20 112 000000 KEYDEF ,PAUS,0 ; PAUSE: GO TO EVL0 113 000000 KEYDEF ,PRIN,2 ; PRINT: GO TO EVL2 114 000000 KEYDEF ,PROG,14 ; PROGRAM: GO TO EVL14 115 000000 KEYDEF ,RDF,17 ; READ(: GO TO EVL17 116 000000 KEYDEF ,RDUF,2 ; READ: GO TO EVL2 117 000000 KEYDEF ,REAL,15 ; REAL: GO TO EVL15 118 000000 KEYDEF ,RET,0 ; RETURN: GO TO EVL0 119 000000 KEYDEF ,RWND,4 ; REWIND: GO TO EVL4 120 000000 KEYDEF ,STOP,0 ; STOP: GO TO EVL0 121 000000 KEYDEF ,SUB,14 ; SUBROUTINE: GO TO EVL14 122 000000 KEYDEF ,TYPE,2 ; TYPE: GO TO EVL2 123 000000 KEYDEF ,VIRT,10 ; VIRTUAL: GO TO EVL10 124 000000 KEYDEF ,WRIT,17 ; WRITE(: GO TO EVL17 125 ; 126 000526 .PSECT KEYSEC,D 127 000526 000 .BYTE 0 ; END OF KEYWORD LIST 128 000057 KYARTH == KEYVAL + 1 TABLE - KEY TABLES FOR INDEX MACRO M1113 15-FEB-80 10:10 PAGE 4-1 129 000060 KYERR == KEYVAL + 2 130 ; 131 000136 .PSECT ROUTSC,D 132 000136 EVL 1 ; EVALUATE ARITHMETIC STATEMENTS 133 000140 EVL 40 ; PROCESS ILLEGAL LINES TABLE - KEY TABLES FOR INDEX MACRO M1113 15-FEB-80 10:10 PAGE 5 135 000000 .PSECT VTABSC,D 136 000000 VARNEM:: 137 000000 VTYPDF < >,ARTH ; ARITHMETIC STATEMENT 138 000002 VTYPDF <= >,ASNS ; ASSIGNMENT STATEMENT 139 000004 VTYPDF <* >,LDEF ; LABEL DEFINITION 140 000006 VTYPDF ,ACC ; ACCEPT 141 000010 VTYPDF ,ARG ; ARGUMENT TO SUBPROGRAM 142 000012 VTYPDF ,ASN ; ASSIGN 143 000014 VTYPDF ,BKSP ; BACKSPACE 144 000016 VTYPDF ,BKDT ; BLOCK DATA 145 000020 VTYPDF ,BYTE ; BYTE 146 000022 VTYPDF ,CALL ; CALL 147 000024 VTYPDF ,COM ; COMMON 148 000026 VTYPDF ,COMN ; COMMON BLOCK NAME 149 000030 VTYPDF ,CLOS ; CLOSE FILE 150 000032 VTYPDF ,CPX ; COMPLEX 151 000034 VTYPDF ,DATA ; DATA STATEMENT 152 000036 VTYPDF ,DCOD ; DECODE 153 000040 VTYPDF ,DEFF ; DEFINE FILE 154 000042 VTYPDF ,DIM ; DIMENSION 155 000044 VTYPDF ,DO ; DO STATEMENT 156 000046 VTYPDF ,DBP ; DOUBLE PRECISION 157 000050 VTYPDF ,ENDF ; ENDFILE 158 000052 VTYPDF ,ENC ; ENCODE 159 000054 VTYPDF ,EQV ; EQUIVALENCE 160 000056 VTYPDF ,EXT ; EXTERNAL 161 000060 VTYPDF ,ENT ; ENTRY POINT 162 000062 VTYPDF ,BFUN ; BYTE FUNCTION 163 000064 VTYPDF ,CFUN ; COMPLEX FUNCTION 164 000066 VTYPDF ,DFUN ; DOUBLE PRECISION FUNCTION 165 000070 VTYPDF ,IFUN ; INTEGER FUNCTION 166 000072 VTYPDF ,LFUN ; LOGICAL FUNCTION 167 000074 VTYPDF ,FMT ; FORMAT STATEMENT 168 000076 VTYPDF ,FIND ; FIND RECORD 169 000100 VTYPDF ,RFUN ; REAL FUNCTION 170 000102 VTYPDF ,FUNC ; PLAIN FUNCTION 171 000104 VTYPDF ,GOTO ; GO TO STATEMENT 172 000106 VTYPDF ,IF ; IF STATEMENT 173 000110 VTYPDF ,INT ; INTEGER 174 000112 VTYPDF ,LOGI ; LOGICAL DECL. 175 000114 VTYPDF ,OPEN ; OPEN FILE 176 000116 VTYPDF ,PARM ; PARAMETER DEF. 177 000120 VTYPDF ,PROG ; PROGRAM STATEMENT 178 000122 VTYPDF ,PRIN ; PRINT STATEMENT 179 000124 VTYPDF ,READ ; ALL READ STATEMENTS 180 000126 VTYPDF ,REAL ; REAL DECLARATION 181 000130 VTYPDF ,RWND ; REWIND FILE 182 000132 VTYPDF ,SUB ; SUBROUTINE 183 000134 VTYPDF ,TYPE ; TYPE STATEMENT 184 000136 VTYPDF ,WRIT ; WRITE STATEMENT 185 ; TABLE - KEY TABLES FOR INDEX MACRO M1113 15-FEB-80 10:10 PAGE 6 187 188 000140 LOGNEM:: ;LOGICAL OPERATOR NEMONICS 189 000140 056 101 116 .ASCIZ /.AND./ 000143 104 056 000 190 000146 056 117 122 .ASCIZ /.OR./ 000151 056 000 191 000153 056 130 117 .ASCIZ /.XOR./ 000156 122 056 000 192 000161 056 116 117 .ASCIZ /.NOT./ 000164 124 056 000 193 000167 056 105 121 .ASCIZ /.EQU./ 000172 125 056 000 194 000175 056 114 124 .ASCIZ /.LT./ 000200 056 000 195 000202 056 114 105 .ASCIZ /.LE./ 000205 056 000 196 000207 056 105 121 .ASCIZ /.EQ./ 000212 056 000 197 000214 056 116 105 .ASCIZ /.NE./ 000217 056 000 198 000221 056 107 124 .ASCIZ /.GT./ 000224 056 000 199 000226 056 107 105 .ASCIZ /.GE./ 000231 056 000 200 000233 056 124 122 .ASCIZ /.TRUE./ 000236 125 105 056 000241 000 201 000242 056 106 101 .ASCIZ /.FALSE./ 000245 114 123 105 000250 056 000 202 000252 000 .BYTE 0 203 .EVEN 204 000001 .END TABLE - KEY TABLES FOR INDEX MACRO M1113 15-FEB-80 10:10 PAGE 6-1 SYMBOL TABLE EVLRTN 000000RG 003 KEY 000000RG 002 KYFIND= 000027 G R$$SX = 000000 VTENDF= 000024 G EVL0 = ****** G KEYVAL= 000056 KYFMT = 000030 G VARNEM 000000RG 005 VTENT = 000030 G EVL1 = ****** G KYACC = 000001 G KYFUNC= 000031 G VARVAL= 000057 VTEQV = 000026 G EVL10 = ****** G KYARTH= 000057 G KYGOTO= 000032 G VTACC = 000003 G VTEXT = 000027 G EVL11 = ****** G KYASN = 000002 G KYIF = 000033 G VTARG = 000004 G VTFIND= 000037 G EVL12 = ****** G KYBKDT= 000004 G KYIMPL= 000034 G VTARTH= 000000 G VTFMT = 000036 G EVL13 = ****** G KYBKSP= 000003 G KYINCL= 000035 G VTASN = 000005 G VTFUNC= 000041 G EVL14 = ****** G KYBYTE= 000005 G KYINT = 000036 G VTASNS= 000001 G VTGOTO= 000042 G EVL15 = ****** G KYCALL= 000006 G KYLOGI= 000037 G VTBFUN= 000031 G VTIF = 000043 G EVL16 = ****** G KYCLOS= 000007 G KYOPEN= 000040 G VTBKDT= 000007 G VTIFUN= 000034 G EVL17 = ****** G KYCOM = 000010 G KYPARM= 000041 G VTBKSP= 000006 G VTINT = 000044 G EVL18 = ****** G KYCONT= 000012 G KYPAUS= 000042 G VTBYTE= 000010 G VTLDEF= 000002 G EVL19 = ****** G KYCPX = 000011 G KYPRIN= 000043 G VTCALL= 000011 G VTLFUN= 000035 G EVL2 = ****** G KYDATA= 000013 G KYPROG= 000044 G VTCFUN= 000032 G VTLOGI= 000045 G EVL20 = ****** G KYDBP = 000017 G KYRDF = 000045 G VTCLOS= 000014 G VTOPEN= 000046 G EVL21 = ****** G KYDCOD= 000014 G KYRDUF= 000046 G VTCOM = 000012 G VTPARM= 000047 G EVL22 = ****** G KYDEFF= 000015 G KYREAL= 000047 G VTCOMN= 000013 G VTPRIN= 000051 G EVL3 = ****** G KYDIM = 000016 G KYRET = 000050 G VTCPX = 000015 G VTPROG= 000050 G EVL4 = ****** G KYDO = 000020 G KYRWND= 000051 G VTDATA= 000016 G VTREAD= 000052 G EVL40 = ****** G KYENC = 000022 G KYSTOP= 000052 G VTDBP = 000023 G VTREAL= 000053 G EVL5 = ****** G KYEND = 000023 G KYSUB = 000053 G VTDCOD= 000017 G VTRFUN= 000040 G EVL6 = ****** G KYENDF= 000021 G KYTYPE= 000054 G VTDEFF= 000020 G VTRWND= 000054 G EVL7 = ****** G KYENT = 000024 G KYVIRT= 000055 G VTDFUN= 000033 G VTSUB = 000055 G EVL8 = ****** G KYEQV = 000025 G KYWRIT= 000056 G VTDIM = 000021 G VTTYPE= 000056 G EVL9 = ****** G KYERR = 000060 G LOGNEM 000140RG 005 VTDO = 000022 G VTWRIT= 000057 G E$$IS = 000000 KYEXT = 000026 G L$$INC= 000003 VTENC = 000025 G . ABS. 000000 000 000000 001 KEYSEC 000527 002 ROUTSC 000142 003 TABLE 000000 004 VTABSC 000254 005 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 973 WORDS ( 4 PAGES) DYNAMIC MEMORY: 2822 WORDS ( 10 PAGES) ELAPSED TIME: 00:00:10 TABLE,TABLE/-SP=RSXPRE,TABLE