bmake-ify mega_sas
[unleashed.git] / bin / yacc / skeleton.c
blob3f0ce924b2bc0d93b5635d4b0f61945db79cb6a3
1 /* $OpenBSD: skeleton.c,v 1.39 2015/12/31 23:22:39 guenther Exp $ */
2 /* $NetBSD: skeleton.c,v 1.10 1996/03/25 00:36:18 mrg Exp $ */
4 /*
5 * Copyright (c) 1989 The Regents of the University of California.
6 * All rights reserved.
8 * This code is derived from software contributed to Berkeley by
9 * Robert Paul Corbett.
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 * 3. Neither the name of the University nor the names of its contributors
20 * may be used to endorse or promote products derived from this software
21 * without specific prior written permission.
23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
36 #include "defs.h"
38 /* The definition of yysccsid in the banner should be replaced with */
39 /* a #pragma ident directive if the target C compiler supports */
40 /* #pragma ident directives. */
41 /* */
42 /* If the skeleton is changed, the banner should be changed so that */
43 /* the altered version can be easily distinguished from the original. */
44 /* */
45 /* The #defines included with the banner are there because they are */
46 /* useful in subsequent code. The macros #defined in the header or */
47 /* the body either are not useful outside of semantic actions or */
48 /* are conditional. */
50 char *banner[] =
52 "#include <stdlib.h>",
53 "#include <string.h>",
54 "#define YYBYACC 1",
55 "#define YYMAJOR 1",
56 "#define YYMINOR 9",
57 "#define YYLEX yylex()",
58 "#define YYEMPTY -1",
59 "#define yyclearin (yychar=(YYEMPTY))",
60 "#define yyerrok (yyerrflag=0)",
61 "#define YYRECOVERING() (yyerrflag!=0)",
62 NULL
66 char *tables[] =
68 "extern const short yylhs[];",
69 "extern const short yylen[];",
70 "extern const short yydefred[];",
71 "extern const short yydgoto[];",
72 "extern const short yysindex[];",
73 "extern const short yyrindex[];",
74 "extern const short yygindex[];",
75 "extern const short yytable[];",
76 "extern const short yycheck[];",
77 "#if YYDEBUG",
78 "extern const char *const yyname[];",
79 "extern const char *const yyrule[];",
80 "#endif",
81 NULL
85 char *header[] =
87 "#ifdef YYSTACKSIZE",
88 "#undef YYMAXDEPTH",
89 "#define YYMAXDEPTH YYSTACKSIZE",
90 "#else",
91 "#ifdef YYMAXDEPTH",
92 "#define YYSTACKSIZE YYMAXDEPTH",
93 "#else",
94 "#define YYSTACKSIZE 10000",
95 "#define YYMAXDEPTH 10000",
96 "#endif",
97 "#endif",
98 "#define YYINITSTACKSIZE 200",
99 "/* LINTUSED */",
100 "int yydebug;",
101 "int yynerrs;",
102 "int yyerrflag;",
103 "int yychar;",
104 "short *yyssp;",
105 "YYSTYPE *yyvsp;",
106 "YYSTYPE yyval;",
107 "YYSTYPE yylval;",
108 "short *yyss;",
109 "short *yysslim;",
110 "YYSTYPE *yyvs;",
111 "unsigned int yystacksize;",
112 "int yyparse(void);",
113 NULL
117 char *body[] =
119 "/* allocate initial stack or double stack size, up to YYMAXDEPTH */",
120 "static int yygrowstack(void)",
121 "{",
122 " unsigned int newsize;",
123 " long sslen;",
124 " short *newss;",
125 " YYSTYPE *newvs;",
127 " if ((newsize = yystacksize) == 0)",
128 " newsize = YYINITSTACKSIZE;",
129 " else if (newsize >= YYMAXDEPTH)",
130 " return -1;",
131 " else if ((newsize *= 2) > YYMAXDEPTH)",
132 " newsize = YYMAXDEPTH;",
133 " sslen = yyssp - yyss;",
134 "#ifdef SIZE_MAX",
135 "#define YY_SIZE_MAX SIZE_MAX",
136 "#else",
137 "#define YY_SIZE_MAX 0xffffffffU",
138 "#endif",
139 " if (newsize && YY_SIZE_MAX / newsize < sizeof *newss)",
140 " goto bail;",
141 " newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :",
142 " (short *)malloc(newsize * sizeof *newss); /* overflow check above */",
143 " if (newss == NULL)",
144 " goto bail;",
145 " yyss = newss;",
146 " yyssp = newss + sslen;",
147 " if (newsize && YY_SIZE_MAX / newsize < sizeof *newvs)",
148 " goto bail;",
149 " newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :",
150 " (YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */",
151 " if (newvs == NULL)",
152 " goto bail;",
153 " yyvs = newvs;",
154 " yyvsp = newvs + sslen;",
155 " yystacksize = newsize;",
156 " yysslim = yyss + newsize - 1;",
157 " return 0;",
158 "bail:",
159 " if (yyss)",
160 " free(yyss);",
161 " if (yyvs)",
162 " free(yyvs);",
163 " yyss = yyssp = NULL;",
164 " yyvs = yyvsp = NULL;",
165 " yystacksize = 0;",
166 " return -1;",
167 "}",
169 "#define YYABORT goto yyabort",
170 "#define YYREJECT goto yyabort",
171 "#define YYACCEPT goto yyaccept",
172 "#define YYERROR goto yyerrlab",
173 "int",
174 "yyparse(void)",
175 "{",
176 " int yym, yyn, yystate;",
177 "#if YYDEBUG",
178 " const char *yys;",
180 " if ((yys = getenv(\"YYDEBUG\")))",
181 " {",
182 " yyn = *yys;",
183 " if (yyn >= '0' && yyn <= '9')",
184 " yydebug = yyn - '0';",
185 " }",
186 "#endif /* YYDEBUG */",
188 " yynerrs = 0;",
189 " yyerrflag = 0;",
190 " yychar = (-1);",
192 " if (yyss == NULL && yygrowstack()) goto yyoverflow;",
193 " yyssp = yyss;",
194 " yyvsp = yyvs;",
195 " *yyssp = yystate = 0;",
197 "yyloop:",
198 " if ((yyn = yydefred[yystate]) != 0) goto yyreduce;",
199 " if (yychar < 0)",
200 " {",
201 " if ((yychar = yylex()) < 0) yychar = 0;",
202 "#if YYDEBUG",
203 " if (yydebug)",
204 " {",
205 " yys = 0;",
206 " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];",
207 " if (!yys) yys = \"illegal-symbol\";",
208 " printf(\"%sdebug: state %d, reading %d (%s)\\n\",",
209 " YYPREFIX, yystate, yychar, yys);",
210 " }",
211 "#endif",
212 " }",
213 " if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&",
214 " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)",
215 " {",
216 "#if YYDEBUG",
217 " if (yydebug)",
218 " printf(\"%sdebug: state %d, shifting to state %d\\n\",",
219 " YYPREFIX, yystate, yytable[yyn]);",
220 "#endif",
221 " if (yyssp >= yysslim && yygrowstack())",
222 " {",
223 " goto yyoverflow;",
224 " }",
225 " *++yyssp = yystate = yytable[yyn];",
226 " *++yyvsp = yylval;",
227 " yychar = (-1);",
228 " if (yyerrflag > 0) --yyerrflag;",
229 " goto yyloop;",
230 " }",
231 " if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&",
232 " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)",
233 " {",
234 " yyn = yytable[yyn];",
235 " goto yyreduce;",
236 " }",
237 " if (yyerrflag) goto yyinrecovery;",
238 "#if defined(__GNUC__)",
239 " goto yynewerror;",
240 "#endif",
241 "yynewerror:",
242 " yyerror(\"syntax error\");",
243 "#if defined(__GNUC__)",
244 " goto yyerrlab;",
245 "#endif",
246 "yyerrlab:",
247 " ++yynerrs;",
248 "yyinrecovery:",
249 " if (yyerrflag < 3)",
250 " {",
251 " yyerrflag = 3;",
252 " for (;;)",
253 " {",
254 " if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&",
255 " yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)",
256 " {",
257 "#if YYDEBUG",
258 " if (yydebug)",
259 " printf(\"%sdebug: state %d, error recovery shifting\\",
260 " to state %d\\n\", YYPREFIX, *yyssp, yytable[yyn]);",
261 "#endif",
262 " if (yyssp >= yysslim && yygrowstack())",
263 " {",
264 " goto yyoverflow;",
265 " }",
266 " *++yyssp = yystate = yytable[yyn];",
267 " *++yyvsp = yylval;",
268 " goto yyloop;",
269 " }",
270 " else",
271 " {",
272 "#if YYDEBUG",
273 " if (yydebug)",
274 " printf(\"%sdebug: error recovery discarding state %d\
275 \\n\",",
276 " YYPREFIX, *yyssp);",
277 "#endif",
278 " if (yyssp <= yyss) goto yyabort;",
279 " --yyssp;",
280 " --yyvsp;",
281 " }",
282 " }",
283 " }",
284 " else",
285 " {",
286 " if (yychar == 0) goto yyabort;",
287 "#if YYDEBUG",
288 " if (yydebug)",
289 " {",
290 " yys = 0;",
291 " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];",
292 " if (!yys) yys = \"illegal-symbol\";",
293 " printf(\"%sdebug: state %d, error recovery discards token %d\
294 (%s)\\n\",",
295 " YYPREFIX, yystate, yychar, yys);",
296 " }",
297 "#endif",
298 " yychar = (-1);",
299 " goto yyloop;",
300 " }",
301 "yyreduce:",
302 "#if YYDEBUG",
303 " if (yydebug)",
304 " printf(\"%sdebug: state %d, reducing by rule %d (%s)\\n\",",
305 " YYPREFIX, yystate, yyn, yyrule[yyn]);",
306 "#endif",
307 " yym = yylen[yyn];",
308 " if (yym)",
309 " yyval = yyvsp[1-yym];",
310 " else",
311 " memset(&yyval, 0, sizeof yyval);",
312 " switch (yyn)",
313 " {",
314 NULL
318 char *trailer[] =
320 " }",
321 " yyssp -= yym;",
322 " yystate = *yyssp;",
323 " yyvsp -= yym;",
324 " yym = yylhs[yyn];",
325 " if (yystate == 0 && yym == 0)",
326 " {",
327 "#if YYDEBUG",
328 " if (yydebug)",
329 " printf(\"%sdebug: after reduction, shifting from state 0 to\\",
330 " state %d\\n\", YYPREFIX, YYFINAL);",
331 "#endif",
332 " yystate = YYFINAL;",
333 " *++yyssp = YYFINAL;",
334 " *++yyvsp = yyval;",
335 " if (yychar < 0)",
336 " {",
337 " if ((yychar = yylex()) < 0) yychar = 0;",
338 "#if YYDEBUG",
339 " if (yydebug)",
340 " {",
341 " yys = 0;",
342 " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];",
343 " if (!yys) yys = \"illegal-symbol\";",
344 " printf(\"%sdebug: state %d, reading %d (%s)\\n\",",
345 " YYPREFIX, YYFINAL, yychar, yys);",
346 " }",
347 "#endif",
348 " }",
349 " if (yychar == 0) goto yyaccept;",
350 " goto yyloop;",
351 " }",
352 " if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&",
353 " yyn <= YYTABLESIZE && yycheck[yyn] == yystate)",
354 " yystate = yytable[yyn];",
355 " else",
356 " yystate = yydgoto[yym];",
357 "#if YYDEBUG",
358 " if (yydebug)",
359 " printf(\"%sdebug: after reduction, shifting from state %d \\",
360 "to state %d\\n\", YYPREFIX, *yyssp, yystate);",
361 "#endif",
362 " if (yyssp >= yysslim && yygrowstack())",
363 " {",
364 " goto yyoverflow;",
365 " }",
366 " *++yyssp = yystate;",
367 " *++yyvsp = yyval;",
368 " goto yyloop;",
369 "yyoverflow:",
370 " yyerror(\"yacc stack overflow\");",
371 "yyabort:",
372 " if (yyss)",
373 " free(yyss);",
374 " if (yyvs)",
375 " free(yyvs);",
376 " yyss = yyssp = NULL;",
377 " yyvs = yyvsp = NULL;",
378 " yystacksize = 0;",
379 " return (1);",
380 "yyaccept:",
381 " if (yyss)",
382 " free(yyss);",
383 " if (yyvs)",
384 " free(yyvs);",
385 " yyss = yyssp = NULL;",
386 " yyvs = yyvsp = NULL;",
387 " yystacksize = 0;",
388 " return (0);",
389 "}",
390 NULL
394 void
395 write_section(char *section[])
397 int i;
398 char *s;
400 for (i = 0; (s = section[i]); ++i) {
401 ++outline;
402 fputs(s, code_file);
403 putc('\n', code_file);