1: /*
2: ** GLOBALS.H -- Equel declarations
3: **
4: ** Compilation Flags:
5: ** xDEBUG -- for Chardebug, to provide compatability
6: ** with older Equels' "-c" flag, and for
7: ** Lex_debug for the "-v" flag.
8: **
9: ** Version:
10: ** @(#)globals.h 8.1 12/31/84
11: */
12:
13:
14:
15: /*
16: ** Structure declarations
17: */
18:
19:
20: /* parser keyword and operator table node */
21:
22: struct optab
23: {
24: char *op_term; /* pointer to terminal */
25: int op_token; /* lexical token */
26: int op_code; /* code to distinguish different op_terms
27: * with the same .op_token
28: */
29: };
30:
31:
32: /* C variable tree node */
33:
34: struct cvar
35: {
36: char *c_id; /* identifier */
37: char c_type; /* type */
38: char c_indir; /* indirection level (- 1 for strings) */
39: struct cvar *c_left; /* < sub-tree */
40: struct cvar *c_right; /* > sub-tree */
41: };
42:
43: /* Display structures (linked list of strings) */
44:
45: struct disp_node
46: {
47: char *d_elm; /* display element */
48: struct disp_node *d_next; /* next node */
49: int d_line; /* for Symsp nodes, line
50: * where lexeme was seen
51: */
52: };
53:
54: struct display
55: {
56: struct disp_node *disp_first; /* first node in display */
57: struct disp_node *disp_last; /* last node in display */
58: };
59:
60: /* Retrieval list */
61:
62: struct ret_var
63: {
64: char *r_elm; /* string invoking variable
65: * e.g. "*intpa [2]"
66: */
67: struct ret_var *r_next; /* next variable used in "tupret" */
68: char r_type; /* type of variable */
69: };
70:
71: struct ret_list
72: {
73: struct ret_var *ret_first; /* first node in ret_var chain */
74: struct ret_var *ret_last; /* last node in chain */
75: };
76:
77:
78: /* "# include" file processing stack (list) */
79:
80: struct inc_file
81: {
82: int inc_yyline; /* old file's yyline */
83: int inc_lineout; /* " " Lineout */
84: char *inc_fid; /* name */
85: FILE *inc_infile; /* In_file */
86: FILE *inc_outfile; /* Out_file */
87: struct inc_file *inc_next;
88: };
89:
90:
91: /*
92: ** Structure for yacc generated terminal codes
93: ** This avoids having to include functions in
94: ** [grammar.y] for the function to know the
95: ** parser generated token numbers.
96: */
97:
98: struct special
99: {
100: int sp_name; /* NAME */
101: int sp_sconst; /* SCONST */
102: int sp_i2const; /* I2CONST */
103: int sp_i4const; /* I4CONST */
104: int sp_f8const; /* F8CONST */
105: int sp_quote; /* QUOTE */
106: int sp_bgncmnt; /* BGNCMNT */
107: int sp_endcmnt; /* ENDCMNT */
108: int sp_c_code; /* C_CODE */
109: int sp_struct_var;
110: };
111:
112:
113: /*
114: ** Global definitions
115: */
116:
117: int Opcode; /* operator code to distinguis tokens */
118: extern int yychar; /* yacc input token */
119: int yyline; /* yacc external line counter */
120: extern int yydebug; /* set by "-y" command line arg,
121: * has yacc parser give details
122: * of parse
123: */
124: int Newline; /* less than one token has been
125: * read from the input line, and
126: * yylex isn't sure yet whether it is
127: * C_CODE or not
128: */
129: int Lineout; /* output line count */
130: int In_quote; /* set if inside an IIwrite("... */
131: char *Input_file_name; /* input file name */
132: int Type_spec; /* used in parser, in C-declarations */
133: int C_code_flg; /* set to indicate C-code in scanner */
134: int Pre_proc_flg; /* set to indicate a
135: * pre-processor line
136: */
137: int Block_level; /* > 0 local, 0 global */
138: int Indir_level; /* holds indirection level
139: * of a reference to a C-var
140: */
141: int Field_indir; /* indirection on a field of
142: * a structure variable
143: */
144: int Opflag; /* mode in which to interpret syntax */
145: int In_string; /* set if output is in a string */
146: int Fillmode; /* set if output line is being filled */
147: int Fillcnt; /* count to fill a line to */
148: int Charcnt; /* # chars written onto output line */
149: int Lastc; /* type of last char read (OPCHAR or
150: * KEYCHAR)
151: */
152: int Arg_error; /* set in argproc() [main.c] on
153: * error in prcessing command line
154: * arguments.
155: */
156: int Rtdb; /* set by "-d" command line arg,
157: * supplies equel runtime support
158: * with info to report file name
159: * and line number in case of an
160: * error
161: */
162: int Kwrdnum; /* # of entries in Kwrdtab [tokens.y] */
163: char Line_buf [MAXSTRING + 1]; /* buffer for input line */
164: char *Line_pos; /* position in input line */
165: int Peekc [2]; /* holds backup character */
166: int Struct_flag; /* while processing a structure
167: * variable declaration, is set
168: */
169: struct cvar *Cvarp, *Fieldp; /* to process C variables */
170:
171:
172:
173: struct optab Kwrdtab []; /* table of key words [tokens.y] */
174: struct optab Optab []; /* table of operators [tokens.y] */
175: struct special Tokens; /* holds yacc generated lex codes
176: * [tokens.y]
177: */
178: char Cmap []; /* a type for each character [cmap.c] */
179: struct cvar *C_globals; /* Global C-variable tree */
180: struct cvar *C_locals; /* Local C-variable tree */
181: struct cvar *F_locals; /* Local structure fields */
182: struct cvar *F_globals; /* Global structure fields */
183: struct display Displays [1]; /* Cv_display is set to point at this
184: * so that Cv_display may be passed
185: * as a parameter instead of &Cv_display
186: */
187: struct display *Cv_display; /* display into which "cvarx"'s
188: * get put
189: */
190: struct display Symsp; /* storage for symbols read by
191: * yylex()
192: */
193: struct ret_list Ret_list; /* list of variables in a "ctlelm" */
194: struct inc_file *Inc_files; /* stack of files pushed by #includes */
195:
196:
197:
198:
199: /*
200: ** I/O manipulation data structures
201: */
202:
203: FILE *In_file; /* input file */
204: FILE *Out_file; /* output file */
205:
206: # ifdef xDEBUG
207: char Lex_debug; /* debugging info for lexemes in yylex()
208: * [yylex.c]
209: */
210: char Chardebug; /* print debugging info for routine
211: * in getch.c
212: */
213: # endif
214:
215: extern struct cvar *getcvar(), *getfield();
216: extern struct disp_node *addsym();
Defined variables
Cmap
defined in line
178; used 12 times
Cv_display
defined in line
187; used 26 times
- in /usr/ingres/source/equel/grammar.y line
316-319(2),
326,
421-425(2),
613,
630,
636,
676,
686,
692-695(2),
719-726(3),
737,
762,
770,
788-792(3),
802,
820,
827,
861,
867
Cvarp
defined in line
169; used 29 times
- in /usr/ingres/source/equel/grammar.y line
312-318(3),
327,
414-417(2),
426,
615,
621(2),
631,
637,
653-656(2),
675,
705,
718-727(4),
736,
782-785(2),
803,
817-819(2),
854-857(2),
868
Fieldp
defined in line
169; used 32 times
- in /usr/ingres/source/equel/grammar.y line
314-317(4),
327,
416-417(3),
426,
615,
631,
637-647(3),
687,
705,
718-727(7),
784-785(3),
803,
818(2),
856(2),
868
Opflag
defined in line
144; used 51 times
- in /usr/ingres/source/equel/grammar.y line
435,
474-478(2),
488,
560,
572,
715,
732,
755-759(2),
767,
787-796(4),
839,
933-934(3),
1009-1014(2),
1021,
1028,
1036-1046(3),
1053,
1060,
1067,
1079,
1086,
1093,
1101,
1107-1108(2),
1114-1115(2),
1123,
1130-1131(2),
1137,
1144,
1152,
1160,
1166,
1173,
1180,
1187,
1196,
1213-1214(2)
Peekc
defined in line
165; used 11 times
Rtdb
defined in line
156; used 3 times
Defined struct's
cvar
defined in line
34; used 58 times
- in line 39-40(4),
169(2),
179-182(8),
215(2)
- in /usr/ingres/source/equel/cvar.c line
42-43(4),
69-70(4),
92-102(8),
139-143(6),
201-206(6),
262(2),
273(2),
289(2),
296(2)
- in /usr/ingres/source/equel/grammar.y line
116(2)
- in /usr/ingres/source/equel/name.c line
45-46(4)
optab
defined in line
22; used 18 times
Usage of this include