]> git.saurik.com Git - wxWidgets.git/blame - contrib/src/deprecated/dosyacc.c
minor corrections for compilation with gcc 3.3 (use cast of address instead
[wxWidgets.git] / contrib / src / deprecated / dosyacc.c
CommitLineData
4a3bdee6
JS
1/* include platform.h first to get __WIN32__ definition */
2#include "wx/platform.h"
3#if defined(__WIN32__) || defined(__GNUWIN32__)
4/* all Win32 compilers can handle C++ comments, and C++ comments
5 is the only C++ in setup.h */
6#include "wx/setup.h"
c6dafd93 7#include "wx/deprecated/setup.h"
4a3bdee6
JS
8#endif
9
10#if !defined(wxUSE_PROLOGIO) || wxUSE_PROLOGIO
11
12#ifndef lint
13static char yysccsid[] = "@(#)yaccpar 1.7 (Berkeley) 09/09/90";
14#endif
15#define YYBYACC 1
16#line 2 "parser.y"
17#include "string.h"
18#if defined(_MSC_VER) || defined(__VISAGECPP__)
19#include <io.h>
20#endif
21#include "wx/deprecated/expr.h"
22
23#ifndef __EXTERN_C__
24#define __EXTERN_C__ 1
25#endif
26
27#if defined(__cplusplus) || defined(__STDC__)
28#if defined(__cplusplus) && defined(__EXTERN_C__)
29extern "C" {
30#endif
31#endif
32int yylex(void);
33int yylook(void);
34int yywrap(void);
35int yyback(int *, int);
36
37/* You may need to put /DLEX_SCANNER in your makefile
38 * if you're using LEX!
39 */
40#ifdef LEX_SCANNER
41/* int yyoutput(int); */
42void yyoutput(int);
43#else
44void yyoutput(int);
45#endif
46
47#if defined(__cplusplus) || defined(__STDC__)
48#if defined(__cplusplus) && defined(__EXTERN_C__)
49}
50#endif
51#endif
52#line 36 "parser.y"
53typedef union {
54 char *s;
55/* struct pexpr *expr; */
56} YYSTYPE;
57#line 44 "y_tab.c"
58#define INTEGER 1
59#define WORD 2
60#define STRING 3
61#define PERIOD 13
62#define OPEN 4
63#define CLOSE 5
64#define COMMA 6
65#define NEWLINE 7
66#define ERROR 8
67#define OPEN_SQUARE 9
68#define CLOSE_SQUARE 10
69#define EQUALS 11
70#define EXP 14
71#define YYERRCODE 256
72short yylhs[] = { -1,
73 0, 0, 1, 1, 1, 2, 2, 2, 3, 3,
74 3, 4, 4, 5, 5, 5, 5, 5, 5, 5,
75};
76short yylen[] = { 2,
77 0, 2, 2, 2, 2, 4, 2, 3, 0, 1,
78 3, 3, 1, 1, 1, 1, 3, 3, 5, 1,
79};
80short yydefred[] = { 1,
81 0, 0, 0, 0, 2, 0, 5, 3, 0, 0,
82 0, 15, 7, 20, 0, 0, 13, 4, 0, 0,
83 0, 0, 8, 0, 6, 0, 18, 0, 12, 11,
84 0, 19,
85};
86short yydgoto[] = { 1,
87 5, 14, 15, 16, 17,
88};
89short yysindex[] = { 0,
90 -2, 9, 2, 1, 0, 10, 0, 0, 11, -5,
91 17, 0, 0, 0, 14, -1, 0, 0, 33, 38,
92 41, 16, 0, 11, 0, 29, 0, 40, 0, 0,
93 44, 0,
94};
95short yyrindex[] = { 0,
96 0, 0, 0, 0, 0, 0, 0, 0, 42, 21,
97 24, 0, 0, 0, 0, 30, 0, 0, 0, 0,
98 0, 0, 0, 31, 0, 27, 0, 24, 0, 0,
99 0, 0,
100};
101short yygindex[] = { 0,
102 0, 45, -8, 0, 26,
103};
104#define YYTABLESIZE 254
105short yytable[] = { 3,
106 19, 10, 11, 12, 24, 9, 4, 20, 21, 4,
107 13, 10, 11, 12, 8, 30, 10, 28, 12, 4,
108 9, 7, 18, 23, 4, 16, 16, 22, 14, 14,
109 16, 17, 17, 14, 10, 9, 17, 25, 26, 10,
110 9, 27, 31, 9, 32, 6, 9, 29, 0, 0,
111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
131 0, 0, 0, 2,
132};
133short yycheck[] = { 2,
134 9, 1, 2, 3, 6, 4, 9, 13, 14, 9,
135 10, 1, 2, 3, 13, 24, 1, 2, 3, 9,
136 4, 13, 13, 10, 9, 5, 6, 11, 5, 6,
137 10, 5, 6, 10, 5, 5, 10, 5, 1, 10,
138 10, 1, 14, 4, 1, 1, 5, 22, -1, -1,
139 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
140 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
141 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
142 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
143 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
144 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
146 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
147 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
148 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
149 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
150 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
151 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
152 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
153 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
154 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
155 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
156 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
159 -1, -1, -1, 256,
160};
161#define YYFINAL 1
162#ifndef YYDEBUG
163#define YYDEBUG 0
164#endif
165#define YYMAXTOKEN 14
166#if YYDEBUG
167char *yyname[] = {
168"end-of-file","INTEGER","WORD","STRING","OPEN","CLOSE","COMMA","NEWLINE",
169"ERROR","OPEN_SQUARE","CLOSE_SQUARE","EQUALS",0,"PERIOD","EXP",
170};
171char *yyrule[] = {
172"$accept : commands",
173"commands :",
174"commands : commands command",
175"command : WORD PERIOD",
176"command : expr PERIOD",
177"command : error PERIOD",
178"expr : WORD OPEN arglist CLOSE",
179"expr : OPEN_SQUARE CLOSE_SQUARE",
180"expr : OPEN_SQUARE arglist CLOSE_SQUARE",
181"arglist :",
182"arglist : arg",
183"arglist : arg COMMA arglist",
184"arg : WORD EQUALS arg1",
185"arg : arg1",
186"arg1 : WORD",
187"arg1 : STRING",
188"arg1 : INTEGER",
189"arg1 : INTEGER PERIOD INTEGER",
190"arg1 : INTEGER EXP INTEGER",
191"arg1 : INTEGER PERIOD INTEGER EXP INTEGER",
192"arg1 : expr",
193};
194#endif
195#define yyclearin (yychar=(-1))
196#define yyerrok (yyerrflag=0)
197#ifdef YYSTACKSIZE
198#ifndef YYMAXDEPTH
199#define YYMAXDEPTH YYSTACKSIZE
200#endif
201#else
202#ifdef YYMAXDEPTH
203#define YYSTACKSIZE YYMAXDEPTH
204#else
205#define YYSTACKSIZE 600
206#define YYMAXDEPTH 600
207#endif
208#endif
209int yydebug;
210int yynerrs;
211int yyerrflag;
212int yychar;
213short *yyssp;
214YYSTYPE *yyvsp;
215YYSTYPE yyval;
216YYSTYPE yylval;
217short yyss[YYSTACKSIZE];
218YYSTYPE yyvs[YYSTACKSIZE];
219#define yystacksize YYSTACKSIZE
220#line 118 "parser.y"
221
222#ifdef IDE_INVOKED
c6dafd93 223#include "doslex.c"
4a3bdee6 224#else
c6dafd93 225#include "lex_yy.c"
4a3bdee6
JS
226#endif
227
228/*
229void yyerror(s)
230char *s;
231{
232 syntax_error(s);
233}
234*/
235
236/* Ansi prototype. If this doesn't work for you... uncomment
237 the above instead.
238 */
239
240void yyerror(char *s)
241{
242 syntax_error(s);
243}
244
245/*
246 * Unfortunately, my DOS version of FLEX
247 * requires yywrap to be #def'ed, whereas
248 * the UNIX flex expects a proper function.
249 */
250
251/* Not sure if __SC__ is the appropriate thing
252 * to test
253 */
254
255#ifndef __SC__
256#ifdef USE_DEFINE
257#ifndef yywrap
258#define yywrap() 1
259#endif
260#else
261# if !(defined(__VISAGECPP__) && __IBMC__ >= 400)
262/* VA 4.0 thinks this is multiply defined (in lex_yy.c) */
263 int yywrap() { return 1; }
264# endif
265#endif
266#endif
267#line 247 "y_tab.c"
268#define YYABORT goto yyabort
269#define YYACCEPT goto yyaccept
270#define YYERROR goto yyerrlab
271int
272PROIO_yyparse()
273{
274 register int yym, yyn, yystate;
275#if YYDEBUG
276 register char *yys;
277 extern char *getenv();
278
279 yys = getenv("YYDEBUG");
280 if (yys)
281 {
282 yyn = *yys;
283 if (yyn >= '0' && yyn <= '9')
284 yydebug = yyn - '0';
285 }
286#endif
287
288 yynerrs = 0;
289 yyerrflag = 0;
290 yychar = (-1);
291
292 yyssp = yyss;
293 yyvsp = yyvs;
294 *yyssp = yystate = 0;
295
296yyloop:
297 yyn = yydefred[yystate];
298 if (yyn != 0) goto yyreduce;
299 if (yychar < 0)
300 {
301 if ((yychar = yylex()) < 0) yychar = 0;
302#if YYDEBUG
303 if (yydebug)
304 {
305 yys = 0;
306 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
307 if (!yys) yys = "illegal-symbol";
308 printf("yydebug: state %d, reading %d (%s)\n", yystate,
309 yychar, yys);
310 }
311#endif
312 }
313 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
314 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
315 {
316#if YYDEBUG
317 if (yydebug)
318 printf("yydebug: state %d, shifting to state %d\n",
319 yystate, yytable[yyn]);
320#endif
321 if (yyssp >= yyss + yystacksize - 1)
322 {
323 goto yyoverflow;
324 }
325 *++yyssp = yystate = yytable[yyn];
326 *++yyvsp = yylval;
327 yychar = (-1);
328 if (yyerrflag > 0) --yyerrflag;
329 goto yyloop;
330 }
331 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
332 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
333 {
334 yyn = yytable[yyn];
335 goto yyreduce;
336 }
337 if (yyerrflag) goto yyinrecovery;
338#ifdef lint
339 goto yynewerror;
340#endif
341yynewerror:
342 yyerror("syntax error");
343#ifdef lint
344 goto yyerrlab;
345#endif
346yyerrlab:
347 ++yynerrs;
348yyinrecovery:
349 if (yyerrflag < 3)
350 {
351 yyerrflag = 3;
352 for (;;)
353 {
354 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
355 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
356 {
357#if YYDEBUG
358 if (yydebug)
359 printf("yydebug: state %d, error recovery shifting\
360 to state %d\n", *yyssp, yytable[yyn]);
361#endif
362 if (yyssp >= yyss + yystacksize - 1)
363 {
364 goto yyoverflow;
365 }
366 *++yyssp = yystate = yytable[yyn];
367 *++yyvsp = yylval;
368 goto yyloop;
369 }
370 else
371 {
372#if YYDEBUG
373 if (yydebug)
374 printf("yydebug: error recovery discarding state %d\n",
375 *yyssp);
376#endif
377 if (yyssp <= yyss) goto yyabort;
378 --yyssp;
379 --yyvsp;
380 }
381 }
382 }
383 else
384 {
385 if (yychar == 0) goto yyabort;
386#if YYDEBUG
387 if (yydebug)
388 {
389 yys = 0;
390 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
391 if (!yys) yys = "illegal-symbol";
392 printf("yydebug: state %d, error recovery discards token %d (%s)\n",
393 yystate, yychar, yys);
394 }
395#endif
396 yychar = (-1);
397 goto yyloop;
398 }
399yyreduce:
400#if YYDEBUG
401 if (yydebug)
402 printf("yydebug: state %d, reducing by rule %d (%s)\n",
403 yystate, yyn, yyrule[yyn]);
404#endif
405 yym = yylen[yyn];
406 yyval = yyvsp[1-yym];
407 switch (yyn)
408 {
409case 3:
410#line 68 "parser.y"
411{process_command(proio_cons(wxmake_word(yyvsp[-1].s), NULL)); free(yyvsp[-1].s);}
412break;
413case 4:
414#line 70 "parser.y"
415{process_command(yyvsp[-1].s);}
416break;
417case 5:
418#line 72 "parser.y"
419{syntax_error("Unrecognized command.");}
420break;
421case 6:
422#line 76 "parser.y"
423{yyval.s = proio_cons(wxmake_word(yyvsp[-3].s), yyvsp[-1].s); free(yyvsp[-3].s);}
424break;
425case 7:
426#line 78 "parser.y"
427{yyval.s = proio_cons(NULL, NULL);}
428break;
429case 8:
430#line 80 "parser.y"
431{yyval.s = yyvsp[-1].s; }
432break;
433case 9:
434#line 84 "parser.y"
435{yyval.s = NULL;}
436break;
437case 10:
438#line 86 "parser.y"
439{yyval.s = proio_cons(yyvsp[0].s, NULL);}
440break;
441case 11:
442#line 89 "parser.y"
443{yyval.s = proio_cons(yyvsp[-2].s, yyvsp[0].s);}
444break;
445case 12:
446#line 93 "parser.y"
447{yyval.s = proio_cons(wxmake_word("="), proio_cons(wxmake_word(yyvsp[-2].s), proio_cons(yyvsp[0].s, NULL)));
448 free(yyvsp[-2].s); }
449break;
450case 13:
451#line 96 "parser.y"
452{yyval.s = yyvsp[0].s; }
453break;
454case 14:
455#line 99 "parser.y"
456{yyval.s = wxmake_word(yyvsp[0].s); free(yyvsp[0].s);}
457break;
458case 15:
459#line 101 "parser.y"
460{yyval.s = wxmake_string(yyvsp[0].s); free(yyvsp[0].s);}
461break;
462case 16:
463#line 103 "parser.y"
464{yyval.s = wxmake_integer(yyvsp[0].s); free(yyvsp[0].s);}
465break;
466case 17:
467#line 105 "parser.y"
468{yyval.s = wxmake_real(yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-2].s); free(yyvsp[0].s); }
469break;
470case 18:
471#line 107 "parser.y"
472{yyval.s = wxmake_exp(yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-2].s); free(yyvsp[0].s); }
473break;
474case 19:
475#line 110 "parser.y"
476{yyval.s = wxmake_exp2(yyvsp[-4].s, yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-4].s); free(yyvsp[-2].s);
477 free(yyvsp[0].s); }
478break;
479case 20:
480#line 114 "parser.y"
481{yyval.s = yyvsp[0].s;}
482break;
483#line 461 "y_tab.c"
484 }
485 yyssp -= yym;
486 yystate = *yyssp;
487 yyvsp -= yym;
488 yym = yylhs[yyn];
489 if (yystate == 0 && yym == 0)
490 {
491#if YYDEBUG
492 if (yydebug)
493 printf("yydebug: after reduction, shifting from state 0 to\
494 state %d\n", YYFINAL);
495#endif
496 yystate = YYFINAL;
497 *++yyssp = YYFINAL;
498 *++yyvsp = yyval;
499 if (yychar < 0)
500 {
501 if ((yychar = yylex()) < 0) yychar = 0;
502#if YYDEBUG
503 if (yydebug)
504 {
505 yys = 0;
506 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
507 if (!yys) yys = "illegal-symbol";
508 printf("yydebug: state %d, reading %d (%s)\n",
509 YYFINAL, yychar, yys);
510 }
511#endif
512 }
513 if (yychar == 0) goto yyaccept;
514 goto yyloop;
515 }
516 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
517 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
518 yystate = yytable[yyn];
519 else
520 yystate = yydgoto[yym];
521#if YYDEBUG
522 if (yydebug)
523 printf("yydebug: after reduction, shifting from state %d \
524to state %d\n", *yyssp, yystate);
525#endif
526 if (yyssp >= yyss + yystacksize - 1)
527 {
528 goto yyoverflow;
529 }
530 *++yyssp = yystate;
531 *++yyvsp = yyval;
532 goto yyloop;
533yyoverflow:
534 yyerror("yacc stack overflow");
535yyabort:
536 return (1);
537yyaccept:
538 return (0);
539}
540
541#endif /* wxUSE_PROLOGIO */