]>
git.saurik.com Git - wxWidgets.git/blob - src/common/dosyacc.c
2 static char yysccsid
[] = "@(#)yaccpar 1.7 (Berkeley) 09/09/90";
13 #define __EXTERN_C__ 1
16 #if defined(__cplusplus) || defined(__STDC__)
17 #if defined(__cplusplus) && defined(__EXTERN_C__)
24 int yyback(int *, int);
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
31 /* int yyoutput(int); */
37 #if defined(__cplusplus) || defined(__STDC__)
38 #if defined(__cplusplus) && defined(__EXTERN_C__)
45 /* struct pexpr *expr; */
58 #define CLOSE_SQUARE 10
63 0, 0, 1, 1, 1, 2, 2, 2, 3, 3,
64 3, 4, 4, 5, 5, 5, 5, 5, 5, 5,
67 0, 2, 2, 2, 2, 4, 2, 3, 0, 1,
68 3, 3, 1, 1, 1, 1, 3, 3, 5, 1,
70 short 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,
76 short yydgoto
[] = { 1,
79 short 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,
85 short 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,
91 short yygindex
[] = { 0,
94 #define YYTABLESIZE 254
95 short 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,
123 short 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,
155 #define YYMAXTOKEN 14
158 "end-of-file","INTEGER","WORD","STRING","OPEN","CLOSE","COMMA","NEWLINE",
159 "ERROR","OPEN_SQUARE","CLOSE_SQUARE","EQUALS",0,"PERIOD","EXP",
162 "$accept : 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",
173 "arglist : arg COMMA arglist",
174 "arg : WORD EQUALS arg1",
179 "arg1 : INTEGER PERIOD INTEGER",
180 "arg1 : INTEGER EXP INTEGER",
181 "arg1 : INTEGER PERIOD INTEGER EXP INTEGER",
185 #define yyclearin (yychar=(-1))
186 #define yyerrok (yyerrflag=0)
189 #define YYMAXDEPTH YYSTACKSIZE
193 #define YYSTACKSIZE YYMAXDEPTH
195 #define YYSTACKSIZE 600
196 #define YYMAXDEPTH 600
207 short yyss
[YYSTACKSIZE
];
208 YYSTYPE yyvs
[YYSTACKSIZE
];
209 #define yystacksize YYSTACKSIZE
213 #include "../common/doslex.c"
215 #include "../common/lex_yy.c"
226 /* Ansi prototype. If this doesn't work for you... uncomment
230 void yyerror(char *s
)
236 * Unfortunately, my DOS version of FLEX
237 * requires yywrap to be #def'ed, whereas
238 * the UNIX flex expects a proper function.
241 /* Not sure if __SC__ is the appropriate thing
251 int yywrap() { return 1; }
255 #define YYABORT goto yyabort
256 #define YYACCEPT goto yyaccept
257 #define YYERROR goto yyerrlab
261 register int yym
, yyn
, yystate
;
264 extern char *getenv();
266 if (yys
= getenv("YYDEBUG"))
269 if (yyn
>= '0' && yyn
<= '9')
280 *yyssp
= yystate
= 0;
283 if (yyn
= yydefred
[yystate
]) goto yyreduce
;
286 if ((yychar
= yylex()) < 0) yychar
= 0;
291 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
292 if (!yys
) yys
= "illegal-symbol";
293 printf("yydebug: state %d, reading %d (%s)\n", yystate
,
298 if ((yyn
= yysindex
[yystate
]) && (yyn
+= yychar
) >= 0 &&
299 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yychar
)
303 printf("yydebug: state %d, shifting to state %d\n",
304 yystate
, yytable
[yyn
]);
306 if (yyssp
>= yyss
+ yystacksize
- 1)
310 *++yyssp
= yystate
= yytable
[yyn
];
313 if (yyerrflag
> 0) --yyerrflag
;
316 if ((yyn
= yyrindex
[yystate
]) && (yyn
+= yychar
) >= 0 &&
317 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yychar
)
322 if (yyerrflag
) goto yyinrecovery
;
327 yyerror("syntax error");
339 if ((yyn
= yysindex
[*yyssp
]) && (yyn
+= YYERRCODE
) >= 0 &&
340 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == YYERRCODE
)
344 printf("yydebug: state %d, error recovery shifting\
345 to state %d\n", *yyssp
, yytable
[yyn
]);
347 if (yyssp
>= yyss
+ yystacksize
- 1)
351 *++yyssp
= yystate
= yytable
[yyn
];
359 printf("yydebug: error recovery discarding state %d\n",
362 if (yyssp
<= yyss
) goto yyabort
;
370 if (yychar
== 0) goto yyabort
;
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
);
387 printf("yydebug: state %d, reducing by rule %d (%s)\n",
388 yystate
, yyn
, yyrule
[yyn
]);
391 yyval
= yyvsp
[1-yym
];
396 {process_command(proio_cons(make_word(yyvsp
[-1].s
), NULL
)); free(yyvsp
[-1].s
);}
400 {process_command(yyvsp
[-1].s
);}
404 {syntax_error("Unrecognized command.");}
408 {yyval
.s
= proio_cons(make_word(yyvsp
[-3].s
), yyvsp
[-1].s
); free(yyvsp
[-3].s
);}
412 {yyval
.s
= proio_cons(NULL
, NULL
);}
416 {yyval
.s
= yyvsp
[-1].s
; }
424 {yyval
.s
= proio_cons(yyvsp
[0].s
, NULL
);}
428 {yyval
.s
= proio_cons(yyvsp
[-2].s
, yyvsp
[0].s
);}
432 {yyval
.s
= proio_cons(make_word("="), proio_cons(make_word(yyvsp
[-2].s
), proio_cons(yyvsp
[0].s
, NULL
)));
437 {yyval
.s
= yyvsp
[0].s
; }
441 {yyval
.s
= make_word(yyvsp
[0].s
); free(yyvsp
[0].s
);}
445 {yyval
.s
= make_string(yyvsp
[0].s
); free(yyvsp
[0].s
);}
449 {yyval
.s
= make_integer(yyvsp
[0].s
); free(yyvsp
[0].s
);}
453 {yyval
.s
= make_real(yyvsp
[-2].s
, yyvsp
[0].s
); free(yyvsp
[-2].s
); free(yyvsp
[0].s
); }
457 {yyval
.s
= make_exp(yyvsp
[-2].s
, yyvsp
[0].s
); free(yyvsp
[-2].s
); free(yyvsp
[0].s
); }
461 {yyval
.s
= make_exp2(yyvsp
[-4].s
, yyvsp
[-2].s
, yyvsp
[0].s
); free(yyvsp
[-4].s
); free(yyvsp
[-2].s
);
466 {yyval
.s
= yyvsp
[0].s
;}
474 if (yystate
== 0 && yym
== 0)
478 printf("yydebug: after reduction, shifting from state 0 to\
479 state %d\n", YYFINAL
);
486 if ((yychar
= yylex()) < 0) yychar
= 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
);
498 if (yychar
== 0) goto yyaccept
;
501 if ((yyn
= yygindex
[yym
]) && (yyn
+= yystate
) >= 0 &&
502 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yystate
)
503 yystate
= yytable
[yyn
];
505 yystate
= yydgoto
[yym
];
508 printf("yydebug: after reduction, shifting from state %d \
509 to state %d\n", *yyssp
, yystate
);
511 if (yyssp
>= yyss
+ yystacksize
- 1)
519 yyerror("yacc stack overflow");