]>
git.saurik.com Git - wxWidgets.git/blob - src/common/dosyacc.c
2 static char yysccsid
[] = "@(#)yaccpar 1.7 (Berkeley) 09/09/90";
7 #if defined(_MSC_VER) || defined(__VISAGECPP__)
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!
30 /* int yyoutput(int); */
36 #if defined(__cplusplus) || defined(__STDC__)
37 #if defined(__cplusplus) && defined(__EXTERN_C__)
44 /* struct pexpr *expr; */
57 #define CLOSE_SQUARE 10
62 0, 0, 1, 1, 1, 2, 2, 2, 3, 3,
63 3, 4, 4, 5, 5, 5, 5, 5, 5, 5,
66 0, 2, 2, 2, 2, 4, 2, 3, 0, 1,
67 3, 3, 1, 1, 1, 1, 3, 3, 5, 1,
69 short yydefred
[] = { 1,
70 0, 0, 0, 0, 2, 0, 5, 3, 0, 0,
71 0, 15, 7, 20, 0, 0, 13, 4, 0, 0,
72 0, 0, 8, 0, 6, 0, 18, 0, 12, 11,
75 short yydgoto
[] = { 1,
78 short yysindex
[] = { 0,
79 -2, 9, 2, 1, 0, 10, 0, 0, 11, -5,
80 17, 0, 0, 0, 14, -1, 0, 0, 33, 38,
81 41, 16, 0, 11, 0, 29, 0, 40, 0, 0,
84 short yyrindex
[] = { 0,
85 0, 0, 0, 0, 0, 0, 0, 0, 42, 21,
86 24, 0, 0, 0, 0, 30, 0, 0, 0, 0,
87 0, 0, 0, 31, 0, 27, 0, 24, 0, 0,
90 short yygindex
[] = { 0,
93 #define YYTABLESIZE 254
94 short yytable
[] = { 3,
95 19, 10, 11, 12, 24, 9, 4, 20, 21, 4,
96 13, 10, 11, 12, 8, 30, 10, 28, 12, 4,
97 9, 7, 18, 23, 4, 16, 16, 22, 14, 14,
98 16, 17, 17, 14, 10, 9, 17, 25, 26, 10,
99 9, 27, 31, 9, 32, 6, 9, 29, 0, 0,
100 0, 0, 0, 0, 0, 0, 0, 0, 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,
122 short yycheck
[] = { 2,
123 9, 1, 2, 3, 6, 4, 9, 13, 14, 9,
124 10, 1, 2, 3, 13, 24, 1, 2, 3, 9,
125 4, 13, 13, 10, 9, 5, 6, 11, 5, 6,
126 10, 5, 6, 10, 5, 5, 10, 5, 1, 10,
127 10, 1, 14, 4, 1, 1, 5, 22, -1, -1,
128 -1, -1, -1, -1, -1, -1, -1, -1, -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,
154 #define YYMAXTOKEN 14
157 "end-of-file","INTEGER","WORD","STRING","OPEN","CLOSE","COMMA","NEWLINE",
158 "ERROR","OPEN_SQUARE","CLOSE_SQUARE","EQUALS",0,"PERIOD","EXP",
161 "$accept : commands",
163 "commands : commands command",
164 "command : WORD PERIOD",
165 "command : expr PERIOD",
166 "command : error PERIOD",
167 "expr : WORD OPEN arglist CLOSE",
168 "expr : OPEN_SQUARE CLOSE_SQUARE",
169 "expr : OPEN_SQUARE arglist CLOSE_SQUARE",
172 "arglist : arg COMMA arglist",
173 "arg : WORD EQUALS arg1",
178 "arg1 : INTEGER PERIOD INTEGER",
179 "arg1 : INTEGER EXP INTEGER",
180 "arg1 : INTEGER PERIOD INTEGER EXP INTEGER",
184 #define yyclearin (yychar=(-1))
185 #define yyerrok (yyerrflag=0)
188 #define YYMAXDEPTH YYSTACKSIZE
192 #define YYSTACKSIZE YYMAXDEPTH
194 #define YYSTACKSIZE 600
195 #define YYMAXDEPTH 600
206 short yyss
[YYSTACKSIZE
];
207 YYSTYPE yyvs
[YYSTACKSIZE
];
208 #define yystacksize YYSTACKSIZE
212 #include "../common/doslex.c"
214 #include "../common/lex_yy.c"
225 /* Ansi prototype. If this doesn't work for you... uncomment
229 void yyerror(char *s
)
235 * Unfortunately, my DOS version of FLEX
236 * requires yywrap to be #def'ed, whereas
237 * the UNIX flex expects a proper function.
240 /* Not sure if __SC__ is the appropriate thing
250 int yywrap() { return 1; }
254 #define YYABORT goto yyabort
255 #define YYACCEPT goto yyaccept
256 #define YYERROR goto yyerrlab
260 register int yym
, yyn
, yystate
;
263 extern char *getenv();
265 yys
= getenv("YYDEBUG");
269 if (yyn
>= '0' && yyn
<= '9')
280 *yyssp
= yystate
= 0;
283 yyn
= yydefred
[yystate
];
284 if (yyn
!= 0) goto yyreduce
;
287 if ((yychar
= yylex()) < 0) yychar
= 0;
292 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
293 if (!yys
) yys
= "illegal-symbol";
294 printf("yydebug: state %d, reading %d (%s)\n", yystate
,
299 if ((yyn
= yysindex
[yystate
]) && (yyn
+= yychar
) >= 0 &&
300 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yychar
)
304 printf("yydebug: state %d, shifting to state %d\n",
305 yystate
, yytable
[yyn
]);
307 if (yyssp
>= yyss
+ yystacksize
- 1)
311 *++yyssp
= yystate
= yytable
[yyn
];
314 if (yyerrflag
> 0) --yyerrflag
;
317 if ((yyn
= yyrindex
[yystate
]) && (yyn
+= yychar
) >= 0 &&
318 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yychar
)
323 if (yyerrflag
) goto yyinrecovery
;
328 yyerror("syntax error");
340 if ((yyn
= yysindex
[*yyssp
]) && (yyn
+= YYERRCODE
) >= 0 &&
341 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == YYERRCODE
)
345 printf("yydebug: state %d, error recovery shifting\
346 to state %d\n", *yyssp
, yytable
[yyn
]);
348 if (yyssp
>= yyss
+ yystacksize
- 1)
352 *++yyssp
= yystate
= yytable
[yyn
];
360 printf("yydebug: error recovery discarding state %d\n",
363 if (yyssp
<= yyss
) goto yyabort
;
371 if (yychar
== 0) goto yyabort
;
376 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
377 if (!yys
) yys
= "illegal-symbol";
378 printf("yydebug: state %d, error recovery discards token %d (%s)\n",
379 yystate
, yychar
, yys
);
388 printf("yydebug: state %d, reducing by rule %d (%s)\n",
389 yystate
, yyn
, yyrule
[yyn
]);
392 yyval
= yyvsp
[1-yym
];
397 {process_command(proio_cons(wxmake_word(yyvsp
[-1].s
), NULL
)); free(yyvsp
[-1].s
);}
401 {process_command(yyvsp
[-1].s
);}
405 {syntax_error("Unrecognized command.");}
409 {yyval
.s
= proio_cons(wxmake_word(yyvsp
[-3].s
), yyvsp
[-1].s
); free(yyvsp
[-3].s
);}
413 {yyval
.s
= proio_cons(NULL
, NULL
);}
417 {yyval
.s
= yyvsp
[-1].s
; }
425 {yyval
.s
= proio_cons(yyvsp
[0].s
, NULL
);}
429 {yyval
.s
= proio_cons(yyvsp
[-2].s
, yyvsp
[0].s
);}
433 {yyval
.s
= proio_cons(wxmake_word("="), proio_cons(wxmake_word(yyvsp
[-2].s
), proio_cons(yyvsp
[0].s
, NULL
)));
438 {yyval
.s
= yyvsp
[0].s
; }
442 {yyval
.s
= wxmake_word(yyvsp
[0].s
); free(yyvsp
[0].s
);}
446 {yyval
.s
= wxmake_string(yyvsp
[0].s
); free(yyvsp
[0].s
);}
450 {yyval
.s
= wxmake_integer(yyvsp
[0].s
); free(yyvsp
[0].s
);}
454 {yyval
.s
= wxmake_real(yyvsp
[-2].s
, yyvsp
[0].s
); free(yyvsp
[-2].s
); free(yyvsp
[0].s
); }
458 {yyval
.s
= wxmake_exp(yyvsp
[-2].s
, yyvsp
[0].s
); free(yyvsp
[-2].s
); free(yyvsp
[0].s
); }
462 {yyval
.s
= wxmake_exp2(yyvsp
[-4].s
, yyvsp
[-2].s
, yyvsp
[0].s
); free(yyvsp
[-4].s
); free(yyvsp
[-2].s
);
467 {yyval
.s
= yyvsp
[0].s
;}
475 if (yystate
== 0 && yym
== 0)
479 printf("yydebug: after reduction, shifting from state 0 to\
480 state %d\n", YYFINAL
);
487 if ((yychar
= yylex()) < 0) yychar
= 0;
492 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
493 if (!yys
) yys
= "illegal-symbol";
494 printf("yydebug: state %d, reading %d (%s)\n",
495 YYFINAL
, yychar
, yys
);
499 if (yychar
== 0) goto yyaccept
;
502 if ((yyn
= yygindex
[yym
]) && (yyn
+= yystate
) >= 0 &&
503 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yystate
)
504 yystate
= yytable
[yyn
];
506 yystate
= yydgoto
[yym
];
509 printf("yydebug: after reduction, shifting from state %d \
510 to state %d\n", *yyssp
, yystate
);
512 if (yyssp
>= yyss
+ yystacksize
- 1)
520 yyerror("yacc stack overflow");