|
|
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.