2 static const char yysccsid
[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
11 #define YYPATCH 20090221
14 #define yyclearin (yychar = YYEMPTY)
15 #define yyerrok (yyerrflag = 0)
16 #define YYRECOVERING() (yyerrflag != 0)
18 /* compatibility with bison */
20 /* compatibility with FreeBSD */
21 #ifdef YYPARSE_PARAM_TYPE
22 #define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
24 #define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
27 #define YYPARSE_DECL() yyparse(void)
28 #endif /* YYPARSE_PARAM */
30 extern int YYPARSE_DECL();
32 static int yygrowstack(void);
45 # define YYMAXDEPTH 10000 /* for OSF and other less endowed yaccs */
47 # define F0 (LIST *(*)(PARSE *, LOL *, int *))0
48 # define P0 (PARSE *)0
51 # define pappend( l,r ) parse_make( compile_append,l,r,P0,S0,S0,0 )
52 # define pbreak( l,f ) parse_make( compile_break,l,P0,P0,S0,S0,f )
53 # define peval( c,l,r ) parse_make( compile_eval,l,r,P0,S0,S0,c )
54 # define pfor( s,l,r ) parse_make( compile_foreach,l,r,P0,s,S0,0 )
55 # define pif( l,r,t ) parse_make( compile_if,l,r,t,S0,S0,0 )
56 # define pincl( l ) parse_make( compile_include,l,P0,P0,S0,S0,0 )
57 # define plist( s ) parse_make( compile_list,P0,P0,P0,s,S0,0 )
58 # define plocal( l,r,t ) parse_make( compile_local,l,r,t,S0,S0,0 )
59 # define pnull() parse_make( compile_null,P0,P0,P0,S0,S0,0 )
60 # define pon( l,r ) parse_make( compile_on,l,r,P0,S0,S0,0 )
61 # define prule( a,p ) parse_make( compile_rule,a,p,P0,S0,S0,0 )
62 # define prules( l,r ) parse_make( compile_rules,l,r,P0,S0,S0,0 )
63 # define pset( l,r,a ) parse_make( compile_set,l,r,P0,S0,S0,a )
64 # define pset1( l,r,t,a ) parse_make( compile_settings,l,r,t,S0,S0,a )
65 # define psetc( s,l,r ) parse_make( compile_setcomp,l,r,P0,s,S0,0 )
66 # define psete( s,l,s1,f ) parse_make( compile_setexec,l,P0,P0,s,s1,f )
67 # define pswitch( l,r ) parse_make( compile_switch,l,r,P0,S0,S0,0 )
68 # define pwhile( l,r ) parse_make( compile_while,l,r,P0,S0,S0,0 )
70 # define pnode( l,r ) parse_make( F0,l,r,P0,S0,S0,0 )
71 # define psnode( s,l ) parse_make( F0,l,P0,P0,s,S0,0 )
75 #define _LANGLE_EQUALS_t 258
78 #define _RANGLE_EQUALS_t 261
84 #define _BANG_EQUALS_t 267
85 #define _QUESTION_EQUALS_t 268
88 #define _LBRACKET_t 271
89 #define _RBRACKET_t 272
93 #define _AMPERAMPER_t 276
94 #define _PLUS_EQUALS_t 277
99 #define CONTINUE_t 282
100 #define DEFAULT_t 283
102 #define EXISTING_t 285
107 #define INCLUDE_t 290
109 #define MAXLINE_t 292
111 #define PIECEMEAL_t 294
112 #define QUIETLY_t 295
116 #define TOGETHER_t 299
117 #define UPDATED_t 300
121 #define YYERRCODE 256
122 static const short yylhs
[] = { -1,
123 0, 0, 2, 2, 1, 1, 1, 1, 3, 3,
124 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
125 3, 3, 3, 13, 14, 3, 7, 7, 7, 7,
126 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
127 9, 9, 9, 9, 8, 8, 15, 10, 10, 10,
128 6, 6, 4, 16, 16, 5, 18, 5, 17, 17,
129 17, 11, 11, 19, 19, 19, 19, 19, 19, 19,
132 static const short yylen
[] = { 2,
133 0, 1, 0, 1, 1, 2, 4, 6, 3, 3,
134 3, 4, 6, 3, 3, 3, 7, 5, 5, 7,
135 5, 6, 3, 0, 0, 9, 1, 1, 1, 2,
136 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
137 3, 3, 2, 3, 0, 2, 4, 0, 3, 1,
138 1, 3, 1, 0, 2, 1, 0, 4, 2, 4,
139 4, 0, 2, 1, 1, 1, 1, 1, 1, 2,
142 static const short yydefred
[] = { 0,
143 57, 0, 62, 54, 54, 0, 0, 54, 54, 0,
144 54, 0, 54, 0, 56, 0, 2, 0, 0, 0,
145 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
146 0, 0, 0, 0, 0, 0, 0, 0, 6, 27,
147 29, 28, 0, 54, 0, 0, 54, 0, 54, 0,
148 9, 69, 66, 0, 68, 67, 65, 64, 0, 63,
149 14, 55, 15, 54, 43, 0, 54, 0, 0, 0,
150 0, 0, 0, 0, 0, 0, 0, 0, 10, 54,
151 0, 23, 16, 0, 0, 0, 0, 30, 0, 54,
152 11, 0, 0, 59, 58, 70, 54, 0, 0, 44,
153 42, 34, 35, 0, 36, 37, 0, 0, 0, 0,
154 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
155 54, 52, 12, 54, 54, 72, 24, 0, 0, 0,
156 49, 0, 0, 18, 46, 21, 0, 61, 60, 0,
157 0, 0, 8, 22, 0, 13, 25, 17, 20, 47,
160 static const short yydgoto
[] = { 16,
161 21, 22, 18, 45, 30, 46, 47, 118, 31, 85,
162 23, 98, 140, 151, 119, 25, 50, 20, 60,
164 static const short yysindex
[] = { -134,
165 0, -134, 0, 0, 0, -294, -260, 0, 0, -253,
166 0, -288, 0, -260, 0, 0, 0, -134, -214, -261,
167 0, -240, -198, -218, -253, -206, -239, -260, -260, -228,
168 -9, -197, -199, -102, -191, -238, -193, 47, 0, 0,
169 0, 0, -177, 0, -181, -179, 0, -253, 0, -183,
170 0, 0, 0, -209, 0, 0, 0, 0, -184, 0,
171 0, 0, 0, 0, 0, 67, 0, -260, -260, -260,
172 -260, -260, -260, -260, -260, -134, -260, -260, 0, 0,
173 -134, 0, 0, -166, -173, -178, -134, 0, -200, 0,
174 0, -158, -245, 0, 0, 0, 0, -164, -155, 0,
175 0, 0, 0, -71, 0, 0, -133, -133, -71, -167,
176 2, 2, -142, 0, -238, -134, -162, -151, -178, -138,
177 0, 0, 0, 0, 0, 0, 0, -134, -139, -134,
178 0, -125, -114, 0, 0, 0, -110, 0, 0, -148,
179 -116, -102, 0, 0, -134, 0, 0, 0, 0, 0,
182 static const short yyrindex
[] = { 160,
183 0, -109, 0, 0, 0, 0, 0, 0, 0, 0,
184 0, 0, 0, 0, 0, 0, 0, 3, -236, 0,
185 0, 0, 0, 0, -56, 0, 0, 0, 0, -29,
186 0, 0, 0, 0, 0, -107, 0, 0, 0, 0,
187 0, 0, 0, 0, -224, 0, 0, 0, 0, 0,
188 0, 0, 0, 0, 0, 0, 0, 0, -103, 0,
189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
190 0, 0, 0, 0, 0, -109, 0, 0, 0, 0,
191 4, 0, 0, -101, 0, -100, -109, 0, 0, 0,
192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
193 0, 0, 0, 77, 0, 0, -226, -132, 92, 0,
194 101, 110, 0, 0, -107, -109, 0, 0, -100, 0,
195 0, 0, 0, 0, 0, 0, 0, -109, 1, 4,
196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
197 0, 0, 0, 0, -250, 0, 0, 0, 0, 0,
200 static const short yygindex
[] = { 0,
201 20, -54, -34, 8, 5, -47, 84, 56, 42, 62,
202 0, 0, 0, 0, 0, 0, 0, 0, 0,
204 #define YYTABLESIZE 386
205 static const short yytable
[] = { 82,
206 19, 94, 5, 3, 19, 28, 19, 27, 29, 1,
207 1, 24, 26, 36, 34, 32, 33, 1, 35, 17,
208 37, 110, 19, 3, 49, 1, 114, 54, 54, 62,
209 3, 48, 120, 51, 54, 40, 40, 39, 19, 51,
210 15, 15, 122, 40, 40, 61, 40, 51, 15, 64,
211 124, 89, 93, 41, 92, 38, 15, 63, 40, 80,
212 67, 132, 42, 84, 81, 54, 79, 41, 43, 65,
213 66, 99, 83, 141, 101, 143, 42, 139, 44, 86,
214 19, 88, 43, 90, 91, 19, 52, 113, 95, 53,
215 150, 19, 96, 54, 97, 55, 56, 125, 115, 116,
216 57, 58, 117, 59, 126, 123, 129, 149, 127, 102,
217 103, 104, 105, 106, 107, 108, 109, 128, 111, 112,
218 19, 130, 134, 68, 69, 70, 71, 72, 137, 41,
219 41, 138, 19, 75, 19, 136, 1, 41, 2, 133,
220 41, 77, 78, 3, 142, 4, 19, 5, 144, 19,
221 145, 6, 7, 146, 147, 8, 9, 148, 10, 1,
222 152, 11, 12, 13, 3, 48, 14, 15, 1, 71,
223 2, 50, 121, 45, 135, 3, 131, 4, 0, 5,
224 0, 0, 0, 6, 7, 68, 69, 8, 71, 72,
225 10, 0, 0, 11, 12, 13, 0, 0, 14, 15,
226 53, 53, 53, 53, 53, 53, 53, 53, 53, 0,
227 53, 53, 0, 53, 0, 53, 53, 0, 53, 53,
228 53, 0, 0, 0, 0, 0, 53, 31, 31, 31,
229 31, 31, 31, 31, 0, 0, 0, 31, 0, 0,
230 31, 0, 0, 31, 0, 31, 31, 68, 69, 70,
231 71, 72, 73, 74, 0, 0, 0, 75, 68, 69,
232 70, 71, 72, 76, 0, 77, 78, 0, 75, 0,
233 0, 19, 0, 19, 19, 0, 5, 3, 19, 0,
234 19, 19, 19, 5, 3, 0, 19, 19, 0, 0,
235 19, 19, 0, 19, 0, 0, 19, 19, 19, 0,
236 0, 19, 19, 68, 69, 70, 71, 72, 73, 74,
237 0, 0, 0, 75, 0, 0, 0, 0, 0, 87,
238 0, 77, 78, 68, 69, 70, 71, 72, 73, 74,
239 0, 0, 0, 75, 0, 32, 100, 0, 32, 32,
240 0, 77, 78, 32, 0, 0, 32, 0, 0, 32,
241 33, 32, 32, 33, 33, 0, 0, 0, 33, 0,
242 0, 33, 38, 38, 33, 0, 33, 33, 0, 0,
243 38, 39, 39, 38, 0, 38, 38, 0, 0, 39,
246 static const short yycheck
[] = { 34,
247 0, 49, 0, 0, 0, 266, 2, 302, 269, 271,
248 271, 4, 5, 302, 10, 8, 9, 271, 11, 0,
249 13, 76, 18, 274, 20, 271, 81, 264, 265, 25,
250 281, 293, 87, 274, 271, 262, 263, 18, 34, 264,
251 302, 302, 90, 270, 259, 264, 273, 272, 302, 289,
252 296, 44, 48, 268, 47, 14, 302, 264, 259, 259,
253 289, 116, 277, 302, 264, 302, 264, 268, 283, 28,
254 29, 64, 264, 128, 67, 130, 277, 125, 293, 273,
255 76, 259, 283, 265, 264, 81, 285, 80, 272, 288,
256 145, 87, 302, 292, 279, 294, 295, 93, 265, 273,
257 299, 300, 281, 302, 97, 264, 274, 142, 273, 68,
258 69, 70, 71, 72, 73, 74, 75, 273, 77, 78,
259 116, 264, 274, 257, 258, 259, 260, 261, 121, 262,
260 263, 124, 128, 267, 130, 274, 271, 270, 273, 302,
261 273, 275, 276, 278, 284, 280, 142, 282, 274, 145,
262 265, 286, 287, 264, 303, 290, 291, 274, 293, 0,
263 274, 296, 297, 298, 274, 273, 301, 302, 271, 273,
264 273, 273, 89, 274, 119, 278, 115, 280, -1, 282,
265 -1, -1, -1, 286, 287, 257, 258, 290, 260, 261,
266 293, -1, -1, 296, 297, 298, -1, -1, 301, 302,
267 257, 258, 259, 260, 261, 262, 263, 264, 265, -1,
268 267, 268, -1, 270, -1, 272, 273, -1, 275, 276,
269 277, -1, -1, -1, -1, -1, 283, 257, 258, 259,
270 260, 261, 262, 263, -1, -1, -1, 267, -1, -1,
271 270, -1, -1, 273, -1, 275, 276, 257, 258, 259,
272 260, 261, 262, 263, -1, -1, -1, 267, 257, 258,
273 259, 260, 261, 273, -1, 275, 276, -1, 267, -1,
274 -1, 271, -1, 273, 274, -1, 274, 274, 278, -1,
275 280, 281, 282, 281, 281, -1, 286, 287, -1, -1,
276 290, 291, -1, 293, -1, -1, 296, 297, 298, -1,
277 -1, 301, 302, 257, 258, 259, 260, 261, 262, 263,
278 -1, -1, -1, 267, -1, -1, -1, -1, -1, 273,
279 -1, 275, 276, 257, 258, 259, 260, 261, 262, 263,
280 -1, -1, -1, 267, -1, 259, 270, -1, 262, 263,
281 -1, 275, 276, 267, -1, -1, 270, -1, -1, 273,
282 259, 275, 276, 262, 263, -1, -1, -1, 267, -1,
283 -1, 270, 262, 263, 273, -1, 275, 276, -1, -1,
284 270, 262, 263, 273, -1, 275, 276, -1, -1, 270,
285 -1, -1, 273, -1, 275, 276,
291 #define YYMAXTOKEN 303
293 static const char *yyname
[] = {
295 "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
296 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
297 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
298 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
300 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
301 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"_LANGLE_t","_LANGLE_EQUALS_t",
302 "_EQUALS_t","_RANGLE_t","_RANGLE_EQUALS_t","_BAR_t","_BARBAR_t","_SEMIC_t",
303 "_COLON_t","_BANG_t","_BANG_EQUALS_t","_QUESTION_EQUALS_t","_LPAREN_t",
304 "_RPAREN_t","_LBRACKET_t","_RBRACKET_t","_LBRACE_t","_RBRACE_t","_AMPER_t",
305 "_AMPERAMPER_t","_PLUS_EQUALS_t","ACTIONS_t","BIND_t","BREAK_t","CASE_t",
306 "CONTINUE_t","DEFAULT_t","ELSE_t","EXISTING_t","FOR_t","IF_t","IGNORE_t","IN_t",
307 "INCLUDE_t","LOCAL_t","MAXLINE_t","ON_t","PIECEMEAL_t","QUIETLY_t","RETURN_t",
308 "RULE_t","SWITCH_t","TOGETHER_t","UPDATED_t","WHILE_t","ARG","STRING",
310 static const char *yyrule
[] = {
317 "rules : rule rules",
318 "rules : LOCAL_t list _SEMIC_t block",
319 "rules : LOCAL_t list _EQUALS_t list _SEMIC_t block",
320 "rule : _LBRACE_t block _RBRACE_t",
321 "rule : INCLUDE_t list _SEMIC_t",
322 "rule : arg lol _SEMIC_t",
323 "rule : arg assign list _SEMIC_t",
324 "rule : arg ON_t list assign list _SEMIC_t",
325 "rule : BREAK_t list _SEMIC_t",
326 "rule : CONTINUE_t list _SEMIC_t",
327 "rule : RETURN_t list _SEMIC_t",
328 "rule : FOR_t ARG IN_t list _LBRACE_t block _RBRACE_t",
329 "rule : SWITCH_t list _LBRACE_t cases _RBRACE_t",
330 "rule : IF_t expr _LBRACE_t block _RBRACE_t",
331 "rule : IF_t expr _LBRACE_t block _RBRACE_t ELSE_t rule",
332 "rule : WHILE_t expr _LBRACE_t block _RBRACE_t",
333 "rule : RULE_t ARG params _LBRACE_t block _RBRACE_t",
334 "rule : ON_t arg rule",
337 "rule : ACTIONS_t eflags ARG bindlist _LBRACE_t $$1 STRING $$2 _RBRACE_t",
338 "assign : _EQUALS_t",
339 "assign : _PLUS_EQUALS_t",
340 "assign : _QUESTION_EQUALS_t",
341 "assign : DEFAULT_t _EQUALS_t",
343 "expr : expr _EQUALS_t expr",
344 "expr : expr _BANG_EQUALS_t expr",
345 "expr : expr _LANGLE_t expr",
346 "expr : expr _LANGLE_EQUALS_t expr",
347 "expr : expr _RANGLE_t expr",
348 "expr : expr _RANGLE_EQUALS_t expr",
349 "expr : expr _AMPER_t expr",
350 "expr : expr _AMPERAMPER_t expr",
351 "expr : expr _BAR_t expr",
352 "expr : expr _BARBAR_t expr",
353 "expr : arg IN_t list",
354 "expr : _BANG_t expr",
355 "expr : _LPAREN_t expr _RPAREN_t",
357 "cases : case cases",
358 "case : CASE_t ARG _COLON_t block",
360 "params : ARG _COLON_t params",
363 "lol : list _COLON_t lol",
369 "arg : _LBRACKET_t $$3 func _RBRACKET_t",
371 "func : ON_t arg arg lol",
372 "func : ON_t arg RETURN_t list",
374 "eflags : eflags eflag",
376 "eflag : TOGETHER_t",
379 "eflag : PIECEMEAL_t",
380 "eflag : EXISTING_t",
381 "eflag : MAXLINE_t ARG",
383 "bindlist : BIND_t list",
394 /* define the initial stack-sizes */
397 #define YYMAXDEPTH YYSTACKSIZE
400 #define YYSTACKSIZE YYMAXDEPTH
402 #define YYSTACKSIZE 500
403 #define YYMAXDEPTH 500
407 #define YYINITSTACKSIZE 500
418 /* variables for the parser stack */
420 static short *yysslim
;
421 static YYSTYPE
*yyvs
;
422 static unsigned yystacksize
;
423 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
424 static int yygrowstack(void)
431 if ((newsize
= yystacksize
) == 0)
432 newsize
= YYINITSTACKSIZE
;
433 else if (newsize
>= YYMAXDEPTH
)
435 else if ((newsize
*= 2) > YYMAXDEPTH
)
436 newsize
= YYMAXDEPTH
;
440 ? (short *)realloc(yyss
, newsize
* sizeof(*newss
))
441 : (short *)malloc(newsize
* sizeof(*newss
));
448 ? (YYSTYPE
*)realloc(yyvs
, newsize
* sizeof(*newvs
))
449 : (YYSTYPE
*)malloc(newsize
* sizeof(*newvs
));
455 yystacksize
= newsize
;
456 yysslim
= yyss
+ newsize
- 1;
460 #define YYABORT goto yyabort
461 #define YYREJECT goto yyabort
462 #define YYACCEPT goto yyaccept
463 #define YYERROR goto yyerrlab
468 int yym
, yyn
, yystate
;
472 if ((yys
= getenv("YYDEBUG")) != 0)
475 if (yyn
>= '0' && yyn
<= '9')
485 if (yyss
== NULL
&& yygrowstack()) goto yyoverflow
;
492 if ((yyn
= yydefred
[yystate
]) != 0) goto yyreduce
;
495 if ((yychar
= yylex()) < 0) yychar
= 0;
500 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
501 if (!yys
) yys
= "illegal-symbol";
502 printf("%sdebug: state %d, reading %d (%s)\n",
503 YYPREFIX
, yystate
, yychar
, yys
);
507 if ((yyn
= yysindex
[yystate
]) && (yyn
+= yychar
) >= 0 &&
508 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yychar
)
512 printf("%sdebug: state %d, shifting to state %d\n",
513 YYPREFIX
, yystate
, yytable
[yyn
]);
515 if (yyssp
>= yysslim
&& yygrowstack())
519 yystate
= yytable
[yyn
];
520 *++yyssp
= yytable
[yyn
];
523 if (yyerrflag
> 0) --yyerrflag
;
526 if ((yyn
= yyrindex
[yystate
]) && (yyn
+= yychar
) >= 0 &&
527 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yychar
)
532 if (yyerrflag
) goto yyinrecovery
;
534 yyerror("syntax error");
547 if ((yyn
= yysindex
[*yyssp
]) && (yyn
+= YYERRCODE
) >= 0 &&
548 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == YYERRCODE
)
552 printf("%sdebug: state %d, error recovery shifting\
553 to state %d\n", YYPREFIX
, *yyssp
, yytable
[yyn
]);
555 if (yyssp
>= yysslim
&& yygrowstack())
559 yystate
= yytable
[yyn
];
560 *++yyssp
= yytable
[yyn
];
568 printf("%sdebug: error recovery discarding state %d\n",
571 if (yyssp
<= yyss
) goto yyabort
;
579 if (yychar
== 0) goto yyabort
;
584 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
585 if (!yys
) yys
= "illegal-symbol";
586 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
587 YYPREFIX
, yystate
, yychar
, yys
);
597 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
598 YYPREFIX
, yystate
, yyn
, yyrule
[yyn
]);
602 yyval
= yyvsp
[1-yym
];
604 memset(&yyval
, 0, sizeof yyval
);
608 #line 130 "jamgram.y"
609 { parse_save( yyvsp
[0].parse
); }
612 #line 141 "jamgram.y"
613 { yyval
.parse
= pnull(); }
616 #line 143 "jamgram.y"
617 { yyval
.parse
= yyvsp
[0].parse
; }
620 #line 147 "jamgram.y"
621 { yyval
.parse
= yyvsp
[0].parse
; }
624 #line 149 "jamgram.y"
625 { yyval
.parse
= prules( yyvsp
[-1].parse
, yyvsp
[0].parse
); }
628 #line 151 "jamgram.y"
629 { yyval
.parse
= plocal( yyvsp
[-2].parse
, pnull(), yyvsp
[0].parse
); }
632 #line 153 "jamgram.y"
633 { yyval
.parse
= plocal( yyvsp
[-4].parse
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
636 #line 157 "jamgram.y"
637 { yyval
.parse
= yyvsp
[-1].parse
; }
640 #line 159 "jamgram.y"
641 { yyval
.parse
= pincl( yyvsp
[-1].parse
); }
644 #line 161 "jamgram.y"
645 { yyval
.parse
= prule( yyvsp
[-2].parse
, yyvsp
[-1].parse
); }
648 #line 163 "jamgram.y"
649 { yyval
.parse
= pset( yyvsp
[-3].parse
, yyvsp
[-1].parse
, yyvsp
[-2].number
); }
652 #line 165 "jamgram.y"
653 { yyval
.parse
= pset1( yyvsp
[-5].parse
, yyvsp
[-3].parse
, yyvsp
[-1].parse
, yyvsp
[-2].number
); }
656 #line 167 "jamgram.y"
657 { yyval
.parse
= pbreak( yyvsp
[-1].parse
, JMP_BREAK
); }
660 #line 169 "jamgram.y"
661 { yyval
.parse
= pbreak( yyvsp
[-1].parse
, JMP_CONTINUE
); }
664 #line 171 "jamgram.y"
665 { yyval
.parse
= pbreak( yyvsp
[-1].parse
, JMP_RETURN
); }
668 #line 173 "jamgram.y"
669 { yyval
.parse
= pfor( yyvsp
[-5].string
, yyvsp
[-3].parse
, yyvsp
[-1].parse
); }
672 #line 175 "jamgram.y"
673 { yyval
.parse
= pswitch( yyvsp
[-3].parse
, yyvsp
[-1].parse
); }
676 #line 177 "jamgram.y"
677 { yyval
.parse
= pif( yyvsp
[-3].parse
, yyvsp
[-1].parse
, pnull() ); }
680 #line 179 "jamgram.y"
681 { yyval
.parse
= pif( yyvsp
[-5].parse
, yyvsp
[-3].parse
, yyvsp
[0].parse
); }
684 #line 181 "jamgram.y"
685 { yyval
.parse
= pwhile( yyvsp
[-3].parse
, yyvsp
[-1].parse
); }
688 #line 183 "jamgram.y"
689 { yyval
.parse
= psetc( yyvsp
[-4].string
, yyvsp
[-3].parse
, yyvsp
[-1].parse
); }
692 #line 185 "jamgram.y"
693 { yyval
.parse
= pon( yyvsp
[-1].parse
, yyvsp
[0].parse
); }
696 #line 187 "jamgram.y"
697 { yymode( SCAN_STRING
); }
700 #line 189 "jamgram.y"
701 { yymode( SCAN_NORMAL
); }
704 #line 191 "jamgram.y"
705 { yyval
.parse
= psete( yyvsp
[-6].string
,yyvsp
[-5].parse
,yyvsp
[-2].string
,yyvsp
[-7].number
); }
708 #line 199 "jamgram.y"
709 { yyval
.number
= VAR_SET
; }
712 #line 201 "jamgram.y"
713 { yyval
.number
= VAR_APPEND
; }
716 #line 203 "jamgram.y"
717 { yyval
.number
= VAR_DEFAULT
; }
720 #line 205 "jamgram.y"
721 { yyval
.number
= VAR_DEFAULT
; }
724 #line 213 "jamgram.y"
725 { yyval
.parse
= peval( EXPR_EXISTS
, yyvsp
[0].parse
, pnull() ); }
728 #line 215 "jamgram.y"
729 { yyval
.parse
= peval( EXPR_EQUALS
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
732 #line 217 "jamgram.y"
733 { yyval
.parse
= peval( EXPR_NOTEQ
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
736 #line 219 "jamgram.y"
737 { yyval
.parse
= peval( EXPR_LESS
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
740 #line 221 "jamgram.y"
741 { yyval
.parse
= peval( EXPR_LESSEQ
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
744 #line 223 "jamgram.y"
745 { yyval
.parse
= peval( EXPR_MORE
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
748 #line 225 "jamgram.y"
749 { yyval
.parse
= peval( EXPR_MOREEQ
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
752 #line 227 "jamgram.y"
753 { yyval
.parse
= peval( EXPR_AND
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
756 #line 229 "jamgram.y"
757 { yyval
.parse
= peval( EXPR_AND
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
760 #line 231 "jamgram.y"
761 { yyval
.parse
= peval( EXPR_OR
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
764 #line 233 "jamgram.y"
765 { yyval
.parse
= peval( EXPR_OR
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
768 #line 235 "jamgram.y"
769 { yyval
.parse
= peval( EXPR_IN
, yyvsp
[-2].parse
, yyvsp
[0].parse
); }
772 #line 237 "jamgram.y"
773 { yyval
.parse
= peval( EXPR_NOT
, yyvsp
[0].parse
, pnull() ); }
776 #line 239 "jamgram.y"
777 { yyval
.parse
= yyvsp
[-1].parse
; }
780 #line 249 "jamgram.y"
781 { yyval
.parse
= P0
; }
784 #line 251 "jamgram.y"
785 { yyval
.parse
= pnode( yyvsp
[-1].parse
, yyvsp
[0].parse
); }
788 #line 255 "jamgram.y"
789 { yyval
.parse
= psnode( yyvsp
[-2].string
, yyvsp
[0].parse
); }
792 #line 264 "jamgram.y"
793 { yyval
.parse
= P0
; }
796 #line 266 "jamgram.y"
797 { yyval
.parse
= psnode( yyvsp
[-2].string
, yyvsp
[0].parse
); }
800 #line 268 "jamgram.y"
801 { yyval
.parse
= psnode( yyvsp
[0].string
, P0
); }
804 #line 277 "jamgram.y"
805 { yyval
.parse
= pnode( P0
, yyvsp
[0].parse
); }
808 #line 279 "jamgram.y"
809 { yyval
.parse
= pnode( yyvsp
[0].parse
, yyvsp
[-2].parse
); }
812 #line 289 "jamgram.y"
813 { yyval
.parse
= yyvsp
[0].parse
; yymode( SCAN_NORMAL
); }
816 #line 293 "jamgram.y"
817 { yyval
.parse
= pnull(); yymode( SCAN_PUNCT
); }
820 #line 295 "jamgram.y"
821 { yyval
.parse
= pappend( yyvsp
[-1].parse
, yyvsp
[0].parse
); }
824 #line 299 "jamgram.y"
825 { yyval
.parse
= plist( yyvsp
[0].string
); }
828 #line 300 "jamgram.y"
829 { yymode( SCAN_NORMAL
); }
832 #line 301 "jamgram.y"
833 { yyval
.parse
= yyvsp
[-1].parse
; }
836 #line 310 "jamgram.y"
837 { yyval
.parse
= prule( yyvsp
[-1].parse
, yyvsp
[0].parse
); }
840 #line 312 "jamgram.y"
841 { yyval
.parse
= pon( yyvsp
[-2].parse
, prule( yyvsp
[-1].parse
, yyvsp
[0].parse
) ); }
844 #line 314 "jamgram.y"
845 { yyval
.parse
= pon( yyvsp
[-2].parse
, yyvsp
[0].parse
); }
848 #line 323 "jamgram.y"
849 { yyval
.number
= 0; }
852 #line 325 "jamgram.y"
853 { yyval
.number
= yyvsp
[-1].number
| yyvsp
[0].number
; }
856 #line 329 "jamgram.y"
857 { yyval
.number
= RULE_UPDATED
; }
860 #line 331 "jamgram.y"
861 { yyval
.number
= RULE_TOGETHER
; }
864 #line 333 "jamgram.y"
865 { yyval
.number
= RULE_IGNORE
; }
868 #line 335 "jamgram.y"
869 { yyval
.number
= RULE_QUIETLY
; }
872 #line 337 "jamgram.y"
873 { yyval
.number
= RULE_PIECEMEAL
; }
876 #line 339 "jamgram.y"
877 { yyval
.number
= RULE_EXISTING
; }
880 #line 341 "jamgram.y"
881 { yyval
.number
= atoi( yyvsp
[0].string
) * RULE_MAXLINE
; }
884 #line 350 "jamgram.y"
885 { yyval
.parse
= pnull(); }
888 #line 352 "jamgram.y"
889 { yyval
.parse
= yyvsp
[0].parse
; }
897 if (yystate
== 0 && yym
== 0)
901 printf("%sdebug: after reduction, shifting from state 0 to\
902 state %d\n", YYPREFIX
, YYFINAL
);
909 if ((yychar
= yylex()) < 0) yychar
= 0;
914 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
915 if (!yys
) yys
= "illegal-symbol";
916 printf("%sdebug: state %d, reading %d (%s)\n",
917 YYPREFIX
, YYFINAL
, yychar
, yys
);
921 if (yychar
== 0) goto yyaccept
;
924 if ((yyn
= yygindex
[yym
]) && (yyn
+= yystate
) >= 0 &&
925 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yystate
)
926 yystate
= yytable
[yyn
];
928 yystate
= yydgoto
[yym
];
931 printf("%sdebug: after reduction, shifting from state %d \
932 to state %d\n", YYPREFIX
, *yyssp
, yystate
);
934 if (yyssp
>= yysslim
&& yygrowstack())
938 *++yyssp
= (short) yystate
;
943 yyerror("yacc stack overflow");