|
|
1.1 ! root 1: # ! 2: /* ! 3: ** SCANNER.H ! 4: ** contains the global structures and variable declarations needed ! 5: ** by the lexical analyzer. This includes Manifest Constants and ! 6: ** certain variables for internal communication purposes. Therefore, ! 7: ** extreme care should be exercised when modifying this file. ! 8: ** ! 9: ** Version: ! 10: ** @(#)scanner.h 8.2 2/8/85 ! 11: */ ! 12: ! 13: ! 14: /* MANIFEST CONSTANTS */ ! 15: # define SBUFSIZ 2000 /* max size of symbol table for */ ! 16: # define MAXSTRING 255 /* max length of strings */ ! 17: # define GOVAL -1 /* semantic value for command names */ ! 18: ! 19: # ifndef WARN ! 20: # define WARN 0 ! 21: # define FATAL 1 ! 22: # endif ! 23: ! 24: /* CONSTANTS FOR THE GET_SCANNER CALL */ ! 25: # define NORMAL 0 /* get a character from front */ ! 26: # define PRIME 1 /* prime the front end */ ! 27: # define SYNC 2 /* sync the front end */ ! 28: ! 29: /* CHARACTER TYPES */ ! 30: # define ALPHA 1 ! 31: # define NUMBR 2 ! 32: # define OPATR 3 ! 33: # define PUNCT 4 ! 34: # define CNTRL 5 ! 35: ! 36: /* Modes for input from EQUEL front end */ ! 37: # define CVAR_I2 '\1' /* 2 byte integer */ ! 38: # define CVAR_F8 '\4' /* 8 byte floating number */ ! 39: # define CVAR_S '\3' /* string with null byte */ ! 40: # define CVAR_I4 '\6' /* 4 byte integer */ ! 41: ! 42: /* Number of PAT_SPEC indices allowed. */ ! 43: /* Already defined in ovqp.h. */ ! 44: /* Temporarily defining here too. */ ! 45: # define PATNUM 10 ! 46: ! 47: /* Bits used with Patspec_flag[] */ ! 48: # define TARGBIT 1 /* Set when index used in target list */ ! 49: # define QUALBIT 2 /* Set when index used in qual list */ ! 50: ! 51: /* KEYWORD and OPERATOR TABLE */ ! 52: struct optab /* key word/operator tables */ ! 53: { ! 54: char *term; /* key word/operator body */ ! 55: int token; /* associated parser token */ ! 56: int opcode; /* associated parser opcode */ ! 57: }; ! 58: ! 59: /* SPECIAL TOKENS for scanner */ ! 60: struct special ! 61: { ! 62: int sconst; ! 63: int bgncmnt; ! 64: int endcmnt; ! 65: int i2const; ! 66: int i4const; ! 67: int f4const; ! 68: int f8const; ! 69: int name; ! 70: }; ! 71: ! 72: /* last token struct */ ! 73: struct lastok ! 74: { ! 75: int toktyp; ! 76: char *tok; ! 77: int tokop; ! 78: }; ! 79: ! 80: /* declarations */ ! 81: struct special Tokens; /* special tokens table */ ! 82: struct optab Optab[]; /* operator table */ ! 83: struct optab Keyword[]; /* keyword table */ ! 84: struct lastok Lastok; ! 85: int Opcode; /* opcode for current token */ ! 86: int Lcase; /* UPPER->lower conversion flag */ ! 87: int Pars; /* flag for call to getcvar or not */ ! 88: int Newline; /* set if last char read was a newline */ ! 89: int Cflag; /* set if line of C-code recognized */ ! 90: int Keyent; /* number of entries in the Keyword table */ ! 91: unsigned Patspec_flag[PATNUM]; /* Flag array for determining correct */ ! 92: /* usage of PAT_SPEC indices. */ ! 93: /* Patspec_flag[0] is not used. */ ! 94: ! 95: char Sbuf[SBUFSIZ]; /* symbol table buffer */ ! 96: /* ! 97: ** TRACE FLAG ASSIGNMENTS ! 98: ** Comment, Expand 70 ! 99: ** Name, String 71 ! 100: ** Number, Yylex 72 ! 101: ** Operator 73 ! 102: ** Inout 74 ! 103: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.