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