mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-21 23:29:16 +00:00
0b6d503134
and output files for test case comparison. See README.gno for implementation notes. NOTE: some test cases in tests/dotests are commented-out because they depend on pipes working and/or the "sort" utility.
2196 lines
79 KiB
C
2196 lines
79 KiB
C
|
|
/* $Id: ytab.c,v 1.2 1998/04/07 16:14:07 tribby Exp $ */
|
|
|
|
#ifdef __ORCAC__
|
|
segment "lex";
|
|
#endif
|
|
|
|
/* NOTE: line directives commented-out in GNO version, for debugger */
|
|
/* # line 26 "awkgram.y" */
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "awk.h"
|
|
|
|
void checkdup(Node *list, Cell *item);
|
|
int yywrap(void) { return(1); }
|
|
|
|
Node *beginloc = 0;
|
|
Node *endloc = 0;
|
|
int infunc = 0; /* = 1 if in arglist or body of func */
|
|
int inloop = 0; /* = 1 if in while, for, do */
|
|
char *curfname = 0; /* current function name */
|
|
Node *arglist = 0; /* list of args for current function */
|
|
|
|
/* # line 41 "awkgram.y" */
|
|
typedef union {
|
|
Node *p;
|
|
Cell *cp;
|
|
int i;
|
|
char *s;
|
|
} YYSTYPE;
|
|
#ifdef __cplusplus
|
|
# include <stdio.h>
|
|
# include <yacc.h>
|
|
#endif /* __cplusplus */
|
|
# define FIRSTTOKEN 257
|
|
# define PROGRAM 258
|
|
# define PASTAT 259
|
|
# define PASTAT2 260
|
|
# define XBEGIN 261
|
|
# define XEND 262
|
|
# define NL 263
|
|
# define ARRAY 264
|
|
# define MATCH 265
|
|
# define NOTMATCH 266
|
|
# define MATCHOP 267
|
|
# define FINAL 268
|
|
# define DOT 269
|
|
# define ALL 270
|
|
# define CCL 271
|
|
# define NCCL 272
|
|
# define CHAR 273
|
|
# define OR 274
|
|
# define STAR 275
|
|
# define QUEST 276
|
|
# define PLUS 277
|
|
# define AND 278
|
|
# define BOR 279
|
|
# define APPEND 280
|
|
# define EQ 281
|
|
# define GE 282
|
|
# define GT 283
|
|
# define LE 284
|
|
# define LT 285
|
|
# define NE 286
|
|
# define IN 287
|
|
# define ARG 288
|
|
# define BLTIN 289
|
|
# define BREAK 290
|
|
# define CLOSE 291
|
|
# define CONTINUE 292
|
|
# define DELETE 293
|
|
# define DO 294
|
|
# define EXIT 295
|
|
# define FOR 296
|
|
# define FUNC 297
|
|
# define SUB 298
|
|
# define GSUB 299
|
|
# define IF 300
|
|
# define INDEX 301
|
|
# define LSUBSTR 302
|
|
# define MATCHFCN 303
|
|
# define NEXT 304
|
|
# define NEXTFILE 305
|
|
# define ADD 306
|
|
# define MINUS 307
|
|
# define MULT 308
|
|
# define DIVIDE 309
|
|
# define MOD 310
|
|
# define ASSIGN 311
|
|
# define ASGNOP 312
|
|
# define ADDEQ 313
|
|
# define SUBEQ 314
|
|
# define MULTEQ 315
|
|
# define DIVEQ 316
|
|
# define MODEQ 317
|
|
# define POWEQ 318
|
|
# define PRINT 319
|
|
# define PRINTF 320
|
|
# define SPRINTF 321
|
|
# define ELSE 322
|
|
# define INTEST 323
|
|
# define CONDEXPR 324
|
|
# define POSTINCR 325
|
|
# define PREINCR 326
|
|
# define POSTDECR 327
|
|
# define PREDECR 328
|
|
# define VAR 329
|
|
# define IVAR 330
|
|
# define VARNF 331
|
|
# define CALL 332
|
|
# define NUMBER 333
|
|
# define STRING 334
|
|
# define REGEXPR 335
|
|
# define GETLINE 336
|
|
# define RETURN 337
|
|
# define SPLIT 338
|
|
# define SUBSTR 339
|
|
# define WHILE 340
|
|
# define CAT 341
|
|
# define NOT 342
|
|
# define UMINUS 343
|
|
# define POWER 344
|
|
# define DECR 345
|
|
# define INCR 346
|
|
# define INDIRECT 347
|
|
# define LASTTOKEN 348
|
|
#define yyclearin yychar = -1
|
|
#define yyerrok yyerrflag = 0
|
|
extern int yychar;
|
|
#ifndef YYMAXDEPTH
|
|
#define YYMAXDEPTH 150
|
|
#endif
|
|
|
|
/* __YYSCLASS defines the scoping/storage class for global objects
|
|
* that are NOT renamed by the -p option. By default these names
|
|
* are going to be 'static' so that multi-definition errors
|
|
* will not occur with multiple parsers.
|
|
* If you want (unsupported) access to internal names you need
|
|
* to define this to be null so it implies 'extern' scope.
|
|
* This should not be used in conjunction with -p.
|
|
*/
|
|
#ifndef __YYSCLASS
|
|
# define __YYSCLASS static
|
|
#endif
|
|
YYSTYPE yylval;
|
|
__YYSCLASS YYSTYPE yyval;
|
|
typedef int yytabelem;
|
|
# define YYERRCODE 256
|
|
|
|
/* # line 444 "awkgram.y" */
|
|
|
|
|
|
void setfname(Cell *p)
|
|
{
|
|
if (isarr(p))
|
|
ERROR "%s is an array, not a function", p->nval SYNTAX;
|
|
else if (isfcn(p))
|
|
ERROR "you can't define function %s more than once", p->nval SYNTAX;
|
|
curfname = p->nval;
|
|
}
|
|
|
|
int constnode(Node *p)
|
|
{
|
|
return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
|
|
}
|
|
|
|
char *strnode(Node *p)
|
|
{
|
|
return ((Cell *)(p->narg[0]))->sval;
|
|
}
|
|
|
|
Node *notnull(Node *n)
|
|
{
|
|
switch (n->nobj) {
|
|
case LE: case LT: case EQ: case NE: case GT: case GE:
|
|
case BOR: case AND: case NOT:
|
|
return n;
|
|
default:
|
|
return op2(NE, n, nullnode);
|
|
}
|
|
}
|
|
|
|
void checkdup(Node *vl, Cell *cp) /* check if name already in list */
|
|
{
|
|
char *s = cp->nval;
|
|
for ( ; vl; vl = vl->nnext) {
|
|
if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
|
|
ERROR "duplicate argument %s", s SYNTAX;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
__YYSCLASS yytabelem yyexca[] ={
|
|
-1, 0,
|
|
0, 28,
|
|
261, 28,
|
|
262, 28,
|
|
123, 28,
|
|
40, 28,
|
|
47, 28,
|
|
288, 28,
|
|
289, 28,
|
|
297, 28,
|
|
298, 28,
|
|
299, 28,
|
|
301, 28,
|
|
303, 28,
|
|
321, 28,
|
|
329, 28,
|
|
330, 28,
|
|
331, 28,
|
|
332, 28,
|
|
333, 28,
|
|
334, 28,
|
|
336, 28,
|
|
338, 28,
|
|
339, 28,
|
|
43, 28,
|
|
45, 28,
|
|
342, 28,
|
|
345, 28,
|
|
346, 28,
|
|
347, 28,
|
|
-2, 0,
|
|
-1, 1,
|
|
0, -1,
|
|
-2, 0,
|
|
-1, 157,
|
|
59, 30,
|
|
-2, 0,
|
|
-1, 176,
|
|
124, 0,
|
|
267, 0,
|
|
281, 0,
|
|
282, 0,
|
|
283, 0,
|
|
284, 0,
|
|
285, 0,
|
|
286, 0,
|
|
287, 0,
|
|
-2, 63,
|
|
-1, 177,
|
|
124, 0,
|
|
267, 0,
|
|
281, 0,
|
|
282, 0,
|
|
283, 0,
|
|
284, 0,
|
|
285, 0,
|
|
286, 0,
|
|
287, 0,
|
|
-2, 64,
|
|
-1, 178,
|
|
124, 0,
|
|
267, 0,
|
|
281, 0,
|
|
282, 0,
|
|
283, 0,
|
|
284, 0,
|
|
285, 0,
|
|
286, 0,
|
|
287, 0,
|
|
-2, 65,
|
|
-1, 179,
|
|
124, 0,
|
|
267, 0,
|
|
281, 0,
|
|
282, 0,
|
|
283, 0,
|
|
284, 0,
|
|
285, 0,
|
|
286, 0,
|
|
287, 0,
|
|
-2, 66,
|
|
-1, 180,
|
|
124, 0,
|
|
267, 0,
|
|
281, 0,
|
|
282, 0,
|
|
283, 0,
|
|
284, 0,
|
|
285, 0,
|
|
286, 0,
|
|
287, 0,
|
|
-2, 67,
|
|
-1, 181,
|
|
124, 0,
|
|
267, 0,
|
|
281, 0,
|
|
282, 0,
|
|
283, 0,
|
|
284, 0,
|
|
285, 0,
|
|
286, 0,
|
|
287, 0,
|
|
-2, 68,
|
|
-1, 183,
|
|
124, 0,
|
|
267, 0,
|
|
281, 0,
|
|
282, 0,
|
|
283, 0,
|
|
284, 0,
|
|
285, 0,
|
|
286, 0,
|
|
287, 0,
|
|
-2, 70,
|
|
-1, 288,
|
|
267, 0,
|
|
287, 0,
|
|
-2, 53,
|
|
-1, 332,
|
|
41, 30,
|
|
-2, 0,
|
|
-1, 354,
|
|
41, 30,
|
|
-2, 0,
|
|
};
|
|
# define YYNPROD 184
|
|
# define YYLAST 4423
|
|
__YYSCLASS yytabelem yyact[]={
|
|
|
|
17, 137, 66, 228, 253, 276, 243, 124, 138, 102,
|
|
42, 103, 104, 111, 112, 42, 100, 155, 109, 107,
|
|
307, 108, 185, 110, 100, 214, 100, 100, 100, 42,
|
|
253, 121, 122, 123, 249, 82, 253, 42, 83, 103,
|
|
104, 223, 103, 104, 313, 252, 113, 205, 232, 139,
|
|
311, 41, 22, 43, 53, 42, 41, 22, 43, 142,
|
|
7, 146, 309, 7, 48, 149, 150, 152, 153, 23,
|
|
41, 22, 43, 163, 23, 100, 111, 156, 41, 140,
|
|
43, 109, 85, 273, 217, 143, 110, 105, 23, 51,
|
|
62, 16, 190, 244, 274, 11, 41, 113, 43, 10,
|
|
100, 50, 317, 79, 80, 133, 190, 100, 100, 100,
|
|
100, 100, 100, 100, 9, 268, 334, 148, 323, 190,
|
|
277, 190, 190, 190, 283, 100, 264, 190, 259, 190,
|
|
258, 190, 277, 190, 168, 169, 188, 351, 86, 190,
|
|
11, 315, 100, 219, 350, 349, 100, 221, 156, 24,
|
|
320, 134, 100, 226, 319, 257, 330, 218, 170, 167,
|
|
230, 158, 157, 100, 132, 130, 129, 128, 16, 127,
|
|
126, 125, 100, 120, 100, 119, 100, 100, 100, 100,
|
|
100, 100, 100, 4, 100, 154, 251, 100, 100, 21,
|
|
270, 144, 49, 131, 316, 346, 360, 363, 1, 72,
|
|
20, 100, 199, 39, 233, 224, 100, 234, 100, 100,
|
|
100, 5, 58, 100, 100, 67, 96, 222, 61, 60,
|
|
248, 81, 8, 159, 114, 216, 116, 117, 118, 160,
|
|
2, 0, 100, 100, 100, 100, 163, 0, 163, 163,
|
|
163, 163, 275, 182, 163, 238, 100, 0, 0, 236,
|
|
0, 292, 0, 140, 293, 100, 100, 3, 0, 0,
|
|
0, 0, 0, 166, 6, 0, 140, 6, 47, 0,
|
|
0, 269, 162, 165, 0, 96, 0, 0, 0, 211,
|
|
0, 0, 100, 156, 184, 100, 100, 100, 0, 100,
|
|
0, 100, 308, 0, 0, 0, 100, 0, 100, 100,
|
|
116, 239, 100, 0, 100, 100, 100, 96, 193, 194,
|
|
195, 196, 197, 198, 18, 163, 333, 27, 156, 26,
|
|
112, 44, 202, 204, 0, 206, 340, 332, 341, 0,
|
|
0, 210, 100, 68, 0, 230, 345, 100, 0, 100,
|
|
0, 0, 96, 100, 100, 0, 96, 229, 0, 0,
|
|
0, 355, 96, 156, 0, 358, 0, 230, 359, 0,
|
|
0, 0, 354, 242, 238, 361, 0, 238, 238, 238,
|
|
312, 238, 96, 238, 96, 0, 96, 96, 96, 96,
|
|
96, 96, 96, 112, 96, 0, 18, 96, 96, 27,
|
|
287, 26, 347, 44, 0, 0, 0, 16, 0, 357,
|
|
0, 96, 0, 0, 0, 68, 260, 337, 96, 96,
|
|
96, 299, 300, 96, 96, 0, 0, 0, 0, 238,
|
|
239, 0, 0, 239, 239, 239, 0, 239, 0, 239,
|
|
0, 289, 96, 278, 279, 280, 165, 0, 165, 165,
|
|
165, 165, 296, 0, 165, 0, 96, 291, 0, 0,
|
|
0, 0, 0, 302, 0, 96, 96, 18, 0, 0,
|
|
27, 0, 26, 0, 44, 310, 0, 0, 0, 16,
|
|
0, 0, 339, 0, 0, 239, 68, 0, 0, 0,
|
|
0, 0, 242, 0, 0, 242, 242, 242, 19, 242,
|
|
0, 242, 0, 0, 0, 0, 96, 0, 96, 96,
|
|
0, 0, 96, 335, 96, 96, 96, 0, 281, 0,
|
|
284, 285, 286, 288, 115, 165, 290, 18, 0, 0,
|
|
27, 0, 26, 0, 44, 0, 0, 0, 0, 0,
|
|
75, 0, 96, 0, 0, 0, 68, 242, 0, 96,
|
|
16, 0, 306, 96, 96, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 164, 42, 28, 55, 56, 57, 73, 69, 59,
|
|
70, 0, 45, 46, 71, 33, 0, 34, 63, 64,
|
|
0, 0, 0, 0, 0, 0, 101, 336, 0, 27,
|
|
0, 26, 0, 77, 78, 37, 0, 0, 0, 0,
|
|
16, 0, 75, 41, 22, 43, 29, 35, 38, 52,
|
|
32, 65, 36, 40, 76, 0, 25, 0, 0, 30,
|
|
31, 23, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 42, 28, 55, 56, 57, 73,
|
|
69, 59, 70, 0, 45, 46, 71, 33, 0, 34,
|
|
63, 64, 0, 0, 0, 0, 18, 0, 0, 27,
|
|
0, 26, 0, 44, 0, 77, 78, 37, 0, 0,
|
|
0, 0, 0, 75, 0, 41, 22, 43, 29, 35,
|
|
38, 0, 32, 65, 36, 40, 76, 0, 25, 0,
|
|
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 42, 28, 55, 56, 57,
|
|
73, 69, 59, 70, 0, 45, 46, 71, 33, 0,
|
|
34, 63, 64, 0, 164, 0, 164, 164, 164, 164,
|
|
0, 0, 164, 75, 0, 0, 77, 78, 37, 0,
|
|
271, 0, 0, 0, 0, 0, 41, 22, 43, 29,
|
|
35, 38, 0, 32, 65, 36, 40, 76, 0, 25,
|
|
0, 0, 30, 31, 23, 42, 28, 55, 56, 57,
|
|
73, 69, 59, 70, 0, 45, 46, 71, 33, 0,
|
|
34, 63, 64, 18, 0, 0, 27, 0, 26, 0,
|
|
44, 0, 0, 0, 0, 0, 77, 78, 37, 0,
|
|
0, 0, 68, 164, 0, 0, 41, 22, 43, 29,
|
|
35, 38, 0, 32, 65, 36, 40, 76, 0, 25,
|
|
0, 0, 30, 31, 23, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 42, 28, 0, 0, 0, 0,
|
|
0, 0, 0, 18, 45, 46, 27, 33, 26, 34,
|
|
44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 68, 0, 0, 0, 16, 37, 247, 0,
|
|
0, 0, 75, 0, 0, 41, 22, 43, 29, 35,
|
|
38, 0, 32, 0, 36, 40, 0, 0, 99, 0,
|
|
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 18, 42, 28, 27, 0, 26, 73,
|
|
44, 0, 0, 0, 45, 46, 0, 33, 0, 34,
|
|
0, 0, 68, 0, 0, 0, 16, 0, 246, 0,
|
|
0, 0, 0, 0, 0, 77, 78, 37, 0, 0,
|
|
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
|
|
38, 0, 32, 0, 36, 40, 0, 0, 25, 0,
|
|
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
|
|
18, 0, 0, 27, 0, 26, 0, 44, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 16, 0, 225, 68,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
|
|
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, 42, 28, 55, 56, 57, 73, 69, 59, 70,
|
|
0, 45, 46, 71, 33, 0, 34, 63, 64, 0,
|
|
0, 0, 0, 16, 0, 215, 0, 0, 0, 75,
|
|
0, 0, 77, 78, 37, 0, 0, 0, 0, 0,
|
|
0, 256, 41, 22, 43, 29, 35, 38, 0, 32,
|
|
65, 36, 40, 76, 0, 25, 0, 0, 30, 31,
|
|
23, 42, 28, 55, 56, 57, 73, 69, 59, 70,
|
|
0, 45, 46, 71, 33, 0, 34, 63, 64, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
|
|
0, 0, 77, 78, 37, 0, 0, 0, 0, 0,
|
|
0, 0, 41, 22, 43, 29, 35, 38, 0, 32,
|
|
65, 36, 40, 76, 0, 25, 0, 0, 30, 31,
|
|
23, 42, 28, 55, 56, 57, 73, 69, 59, 70,
|
|
0, 45, 46, 71, 33, 0, 34, 63, 64, 18,
|
|
0, 0, 27, 0, 26, 0, 44, 189, 191, 0,
|
|
0, 0, 77, 78, 37, 0, 75, 0, 68, 0,
|
|
0, 0, 41, 22, 43, 29, 35, 38, 0, 32,
|
|
65, 36, 40, 76, 0, 25, 0, 0, 30, 31,
|
|
23, 0, 0, 0, 0, 0, 0, 0, 42, 28,
|
|
55, 56, 57, 73, 69, 59, 70, 0, 45, 46,
|
|
71, 33, 235, 34, 63, 64, 18, 0, 0, 27,
|
|
0, 26, 0, 44, 0, 0, 0, 0, 0, 77,
|
|
78, 37, 16, 0, 135, 68, 0, 0, 0, 41,
|
|
22, 43, 29, 35, 38, 0, 32, 65, 36, 40,
|
|
76, 0, 25, 0, 0, 30, 31, 23, 0, 261,
|
|
262, 263, 0, 265, 266, 267, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 189, 0,
|
|
101, 329, 0, 27, 190, 26, 0, 0, 0, 16,
|
|
294, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 84, 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, 322, 325, 327, 328, 0, 0,
|
|
0, 0, 0, 0, 189, 75, 101, 326, 0, 27,
|
|
190, 26, 0, 0, 95, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
|
|
0, 0, 0, 0, 0, 0, 0, 42, 28, 55,
|
|
56, 57, 73, 69, 59, 70, 0, 45, 46, 71,
|
|
33, 0, 34, 63, 64, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 77, 78,
|
|
37, 0, 75, 0, 0, 0, 0, 0, 41, 22,
|
|
43, 29, 35, 38, 0, 32, 65, 36, 40, 76,
|
|
95, 25, 0, 0, 30, 31, 23, 0, 0, 0,
|
|
0, 0, 0, 0, 42, 28, 55, 56, 57, 73,
|
|
69, 59, 70, 0, 45, 46, 71, 33, 0, 34,
|
|
63, 64, 0, 0, 0, 0, 0, 0, 101, 324,
|
|
0, 27, 190, 26, 0, 77, 78, 37, 0, 0,
|
|
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
|
|
38, 84, 32, 65, 36, 40, 76, 93, 25, 0,
|
|
0, 30, 31, 23, 0, 0, 0, 0, 98, 97,
|
|
0, 87, 88, 89, 90, 91, 92, 94, 42, 28,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
|
|
0, 33, 0, 34, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 37, 95, 0, 0, 0, 0, 0, 0, 41,
|
|
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
|
|
0, 0, 99, 93, 0, 30, 31, 23, 101, 0,
|
|
0, 27, 0, 26, 98, 97, 0, 87, 88, 89,
|
|
90, 91, 92, 94, 42, 28, 0, 139, 0, 0,
|
|
0, 84, 0, 0, 45, 46, 0, 33, 0, 34,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 37, 0, 0,
|
|
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
|
|
38, 0, 32, 0, 36, 40, 0, 0, 99, 0,
|
|
0, 30, 31, 23, 101, 192, 0, 27, 190, 26,
|
|
0, 0, 95, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 84, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
|
|
88, 89, 90, 91, 92, 94, 42, 28, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
|
|
0, 34, 0, 0, 0, 0, 0, 0, 95, 0,
|
|
0, 0, 0, 0, 0, 101, 353, 0, 27, 37,
|
|
26, 0, 0, 0, 0, 0, 0, 41, 22, 43,
|
|
29, 35, 38, 0, 32, 0, 36, 40, 84, 0,
|
|
99, 0, 0, 30, 31, 23, 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, 140, 0, 0, 0, 93, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
|
|
88, 89, 90, 91, 92, 94, 42, 28, 0, 95,
|
|
101, 352, 0, 27, 0, 26, 45, 46, 0, 33,
|
|
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 84, 0, 0, 0, 0, 0, 37,
|
|
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
|
|
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
|
|
99, 93, 0, 30, 31, 23, 0, 0, 0, 0,
|
|
0, 0, 98, 97, 0, 87, 88, 89, 90, 91,
|
|
92, 94, 42, 28, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 45, 46, 95, 33, 0, 34, 101, 348,
|
|
0, 27, 0, 26, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 37, 0, 0, 0, 0,
|
|
0, 84, 0, 41, 22, 43, 29, 35, 38, 0,
|
|
32, 0, 36, 40, 0, 0, 99, 0, 0, 30,
|
|
31, 23, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 93, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 98, 97, 0, 87, 88, 89, 90,
|
|
91, 92, 94, 42, 28, 0, 0, 0, 0, 0,
|
|
0, 0, 95, 45, 46, 0, 33, 0, 34, 0,
|
|
101, 0, 0, 27, 0, 26, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 37, 0, 0, 344,
|
|
0, 0, 0, 84, 41, 22, 43, 29, 35, 38,
|
|
0, 32, 0, 36, 40, 0, 0, 99, 0, 0,
|
|
30, 31, 23, 0, 0, 0, 0, 93, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 98, 97,
|
|
0, 87, 88, 89, 90, 91, 92, 94, 42, 28,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
|
|
0, 33, 0, 34, 95, 0, 0, 0, 0, 0,
|
|
0, 0, 101, 321, 0, 27, 0, 26, 0, 0,
|
|
0, 37, 0, 0, 0, 0, 0, 0, 0, 41,
|
|
22, 43, 29, 35, 38, 84, 32, 0, 36, 40,
|
|
0, 0, 99, 0, 0, 30, 31, 23, 0, 0,
|
|
0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
|
|
88, 89, 90, 91, 92, 94, 42, 28, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
|
|
0, 34, 0, 0, 0, 0, 95, 0, 0, 0,
|
|
101, 318, 0, 27, 0, 26, 0, 0, 0, 37,
|
|
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
|
|
29, 35, 38, 84, 32, 0, 36, 40, 0, 0,
|
|
99, 0, 0, 30, 31, 23, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 93, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 98, 97,
|
|
0, 87, 88, 89, 90, 91, 92, 94, 42, 28,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
|
|
0, 33, 0, 34, 95, 101, 277, 0, 27, 0,
|
|
26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 37, 0, 0, 0, 0, 0, 0, 84, 41,
|
|
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
|
|
0, 0, 99, 0, 0, 30, 31, 23, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
98, 97, 0, 87, 88, 89, 90, 91, 92, 94,
|
|
42, 28, 0, 0, 0, 0, 0, 0, 0, 95,
|
|
45, 46, 0, 33, 0, 34, 101, 0, 0, 27,
|
|
190, 26, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 37, 0, 0, 0, 0, 0, 84,
|
|
0, 41, 22, 43, 29, 35, 38, 0, 32, 0,
|
|
36, 40, 0, 0, 99, 0, 0, 30, 31, 23,
|
|
0, 0, 0, 0, 0, 0, 0, 93, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 98, 97,
|
|
0, 87, 88, 89, 90, 91, 92, 94, 42, 28,
|
|
0, 0, 101, 192, 0, 27, 0, 26, 45, 46,
|
|
95, 33, 0, 34, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 84, 0, 0, 0, 0,
|
|
0, 37, 0, 0, 0, 0, 0, 0, 0, 41,
|
|
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
|
|
0, 0, 99, 0, 0, 30, 31, 23, 0, 0,
|
|
0, 0, 93, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 98, 97, 0, 87, 88, 89, 90,
|
|
91, 92, 94, 42, 28, 0, 95, 0, 0, 0,
|
|
0, 0, 101, 45, 46, 27, 33, 26, 34, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
250, 0, 0, 0, 0, 84, 37, 0, 0, 0,
|
|
0, 0, 0, 0, 41, 22, 43, 29, 35, 38,
|
|
0, 32, 0, 36, 40, 0, 0, 99, 0, 0,
|
|
30, 31, 23, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 93, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 98, 97, 0, 87, 88, 89,
|
|
90, 91, 92, 94, 42, 28, 95, 0, 101, 0,
|
|
0, 27, 0, 26, 45, 46, 0, 33, 0, 34,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 84, 0, 0, 0, 0, 0, 37, 0, 0,
|
|
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
|
|
38, 0, 32, 0, 36, 40, 0, 0, 99, 93,
|
|
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
|
|
98, 97, 0, 87, 88, 89, 90, 91, 92, 94,
|
|
42, 28, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
45, 46, 95, 33, 101, 34, 0, 27, 0, 26,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
|
|
0, 41, 22, 43, 29, 35, 38, 0, 32, 0,
|
|
36, 40, 0, 0, 99, 0, 0, 30, 31, 23,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
98, 97, 0, 87, 88, 89, 90, 91, 92, 94,
|
|
42, 28, 0, 0, 0, 0, 0, 0, 95, 101,
|
|
45, 46, 27, 33, 26, 34, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
|
|
0, 41, 22, 43, 29, 35, 38, 0, 32, 0,
|
|
36, 40, 0, 0, 99, 54, 0, 30, 31, 23,
|
|
0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
|
|
88, 89, 90, 91, 92, 94, 42, 28, 0, 0,
|
|
0, 0, 0, 95, 0, 0, 45, 46, 0, 33,
|
|
0, 34, 0, 0, 0, 0, 0, 0, 0, 136,
|
|
0, 0, 0, 0, 0, 0, 0, 147, 0, 37,
|
|
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
|
|
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
|
|
99, 0, 0, 30, 31, 23, 0, 0, 0, 0,
|
|
0, 93, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 98, 0, 0, 87, 88, 89, 90, 91,
|
|
92, 94, 42, 28, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 45, 46, 0, 33, 0, 34, 0, 136,
|
|
18, 0, 0, 27, 0, 26, 0, 44, 0, 0,
|
|
220, 0, 0, 0, 136, 37, 0, 0, 0, 0,
|
|
227, 0, 0, 41, 22, 43, 29, 35, 38, 0,
|
|
32, 0, 36, 40, 136, 136, 99, 0, 0, 30,
|
|
31, 23, 0, 0, 0, 0, 93, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
87, 88, 89, 90, 91, 92, 94, 42, 28, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 45, 46, 74,
|
|
33, 0, 34, 16, 15, 0, 0, 0, 272, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 106, 0,
|
|
37, 0, 0, 0, 0, 0, 0, 0, 41, 22,
|
|
43, 29, 35, 38, 0, 32, 0, 36, 40, 0,
|
|
0, 99, 0, 0, 30, 31, 23, 0, 0, 15,
|
|
0, 15, 0, 0, 0, 136, 141, 101, 0, 145,
|
|
27, 0, 26, 0, 0, 151, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 314, 0, 0, 0, 0,
|
|
237, 0, 0, 0, 171, 173, 175, 176, 177, 178,
|
|
179, 180, 181, 183, 0, 0, 0, 0, 0, 0,
|
|
0, 186, 187, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 200, 0, 0, 0, 0, 0, 200,
|
|
200, 0, 0, 0, 0, 207, 208, 209, 200, 212,
|
|
213, 101, 356, 136, 27, 0, 26, 0, 0, 0,
|
|
0, 12, 13, 0, 0, 0, 362, 0, 0, 364,
|
|
101, 0, 0, 27, 237, 26, 0, 0, 231, 0,
|
|
0, 106, 0, 0, 0, 0, 0, 245, 42, 28,
|
|
0, 0, 0, 0, 0, 0, 0, 14, 45, 46,
|
|
0, 33, 0, 34, 0, 0, 0, 0, 0, 254,
|
|
0, 255, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 37, 0, 0, 0, 0, 0, 0, 0, 41,
|
|
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
|
|
0, 0, 25, 0, 0, 30, 31, 23, 18, 0,
|
|
0, 27, 0, 26, 0, 44, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 200, 0, 0, 139, 0, 0,
|
|
295, 0, 0, 0, 0, 0, 297, 0, 0, 0,
|
|
0, 298, 301, 0, 0, 303, 304, 305, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
18, 0, 106, 27, 240, 26, 0, 44, 0, 0,
|
|
0, 0, 0, 0, 0, 98, 97, 0, 0, 0,
|
|
0, 0, 0, 0, 241, 42, 28, 0, 331, 0,
|
|
0, 0, 0, 0, 0, 45, 46, 0, 33, 0,
|
|
34, 0, 338, 0, 0, 0, 0, 0, 342, 0,
|
|
343, 0, 0, 0, 0, 0, 0, 0, 37, 0,
|
|
0, 0, 0, 0, 0, 0, 41, 22, 43, 29,
|
|
35, 38, 0, 32, 0, 36, 40, 0, 240, 99,
|
|
0, 0, 30, 31, 23, 0, 0, 0, 101, 98,
|
|
97, 27, 0, 26, 0, 0, 0, 240, 241, 42,
|
|
28, 0, 0, 0, 0, 0, 0, 0, 98, 45,
|
|
46, 0, 33, 0, 34, 0, 0, 241, 42, 28,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
|
|
0, 33, 37, 34, 0, 0, 0, 0, 0, 0,
|
|
41, 22, 43, 29, 35, 38, 0, 32, 0, 36,
|
|
40, 37, 0, 99, 0, 0, 30, 31, 23, 41,
|
|
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
|
|
0, 140, 99, 0, 0, 30, 31, 23, 282, 0,
|
|
0, 27, 0, 26, 0, 44, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 42, 28, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
|
|
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 253, 0, 0, 0, 0, 0, 37,
|
|
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
|
|
29, 35, 38, 0, 32, 0, 36, 40, 42, 28,
|
|
25, 0, 0, 30, 31, 23, 0, 0, 45, 46,
|
|
0, 33, 0, 34, 282, 0, 0, 27, 0, 26,
|
|
0, 44, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 37, 0, 0, 0, 0, 0, 0, 0, 41,
|
|
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
|
|
0, 0, 25, 0, 0, 30, 31, 23, 0, 0,
|
|
0, 0, 0, 0, 0, 240, 282, 0, 0, 27,
|
|
0, 26, 0, 44, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 241, 42, 28, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
|
|
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 37,
|
|
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
|
|
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
|
|
99, 0, 0, 30, 31, 23, 0, 18, 203, 0,
|
|
27, 174, 26, 0, 44, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 18, 201, 0, 27,
|
|
0, 26, 0, 44, 0, 0, 42, 28, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
|
|
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 37,
|
|
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
|
|
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
|
|
25, 0, 0, 30, 31, 23, 0, 172, 18, 0,
|
|
0, 27, 0, 26, 0, 44, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 42, 28, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 45, 46, 0, 33, 0, 34, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 253,
|
|
0, 0, 0, 18, 0, 37, 27, 0, 26, 0,
|
|
44, 0, 0, 41, 22, 43, 29, 35, 38, 0,
|
|
32, 0, 36, 40, 42, 28, 25, 0, 0, 30,
|
|
31, 23, 0, 0, 45, 46, 0, 33, 0, 34,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 18, 0, 37, 27, 0,
|
|
26, 0, 44, 0, 0, 41, 22, 43, 29, 35,
|
|
38, 0, 32, 0, 36, 40, 0, 0, 25, 0,
|
|
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 42, 28, 282, 0, 0,
|
|
27, 0, 26, 0, 44, 45, 46, 0, 33, 0,
|
|
34, 0, 0, 0, 42, 28, 161, 0, 0, 27,
|
|
0, 26, 0, 44, 45, 46, 0, 33, 37, 34,
|
|
0, 0, 0, 0, 0, 0, 41, 22, 43, 29,
|
|
35, 38, 0, 32, 0, 36, 40, 37, 0, 25,
|
|
0, 0, 30, 31, 23, 41, 22, 43, 29, 35,
|
|
38, 174, 32, 0, 36, 40, 0, 0, 25, 0,
|
|
0, 30, 31, 23, 0, 0, 101, 0, 0, 27,
|
|
0, 26, 0, 44, 0, 0, 42, 28, 0, 0,
|
|
0, 0, 0, 0, 0, 101, 45, 46, 27, 33,
|
|
26, 34, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 172, 0, 0, 37,
|
|
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
|
|
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
|
|
25, 42, 28, 30, 31, 23, 0, 0, 0, 0,
|
|
0, 45, 46, 0, 33, 0, 34, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 37, 0, 0, 0, 0, 0,
|
|
0, 0, 41, 22, 43, 29, 35, 38, 0, 32,
|
|
0, 36, 40, 42, 28, 25, 0, 0, 30, 31,
|
|
23, 0, 0, 45, 46, 0, 33, 0, 34, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 37, 0, 0, 0,
|
|
0, 0, 0, 0, 41, 22, 43, 29, 35, 38,
|
|
0, 32, 0, 36, 40, 42, 28, 25, 0, 0,
|
|
30, 31, 23, 0, 0, 45, 46, 0, 33, 0,
|
|
34, 0, 0, 0, 42, 28, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 45, 46, 0, 33, 37, 34,
|
|
0, 0, 0, 0, 0, 0, 41, 22, 43, 29,
|
|
35, 38, 0, 32, 0, 36, 40, 37, 0, 25,
|
|
0, 0, 30, 31, 23, 41, 22, 43, 29, 35,
|
|
38, 0, 32, 0, 36, 40, 0, 0, 25, 0,
|
|
0, 30, 31, 23, 42, 28, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 45, 46, 0, 33, 0, 34,
|
|
0, 0, 0, 42, 28, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 45, 46, 0, 33, 37, 34, 0,
|
|
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
|
|
38, 0, 32, 0, 36, 40, 37, 0, 25, 0,
|
|
0, 30, 31, 23, 41, 22, 43, 29, 35, 38,
|
|
0, 0, 0, 36, 40, 0, 0, 99, 0, 0,
|
|
30, 31, 23 };
|
|
__YYSCLASS yytabelem yypact[]={
|
|
|
|
1, -3000, -3000, -3000, 2970, 5, -3000, -3000, 4, -3000,
|
|
45, 346, -32, -32, -294, 2618, -3000, -303, 3925, -3000,
|
|
-24, 6, -3000, 546, -3000, 4056, 546, 546, 135, 133,
|
|
-273, -273, -278, 131, 130, -3000, 129, 127, -3000, 126,
|
|
125, -3000, -3000, -3000, -3000, -3000, -3000, -3000, -3000, 2970,
|
|
346, 3925, -3000, 1129, -3000, -10, 3925, -10, -178, 3278,
|
|
-3000, 1196, 346, -10, -10, 3278, -10, -3000, -184, -3000,
|
|
122, 121, 3996, -251, 2618, -3000, 119, -3000, -3000, 346,
|
|
346, 118, -3000, -3000, 3925, 3873, 3818, 3925, 3925, 3925,
|
|
3925, 3925, 3925, 3925, -251, -314, -24, -3000, -3000, 546,
|
|
-334, 3925, 3925, -3000, -3000, 95, 1654, 546, 546, 546,
|
|
546, 546, 546, 3925, -3000, -3000, -330, -330, -330, 3746,
|
|
3727, -3000, -3000, -238, 546, 3925, 3925, 3925, 3925, 3925,
|
|
3925, -310, -3000, 930, -32, -3000, -3000, -3000, -179, -184,
|
|
-3000, 1578, -3000, -3000, 1196, 1578, -3000, -281, 863, -3000,
|
|
-3000, 1578, -3000, -3000, 1196, -3000, -179, 616, 3925, -76,
|
|
78, 3925, 3181, -306, -3000, -24, 2, 3925, 803, 743,
|
|
-295, 2532, -3000, 2704, -3000, 2789, 4075, 4075, 4075, 4075,
|
|
4075, 4075, -3000, 4075, -3000, -273, 2442, 2618, -242, 3330,
|
|
-3000, 3330, -3000, 39, 39, -330, -330, -330, -330, 62,
|
|
2618, -3000, 89, -3000, 87, 546, -24, 2366, 2366, 2366,
|
|
85, 78, 2366, 2366, 68, -3000, 346, -3000, -3000, -3000,
|
|
-3000, -3000, 477, -3000, -180, -3000, -3000, -3000, 35, -45,
|
|
-3000, 2275, 546, 546, 546, 3646, 83, 3977, 3594, 3508,
|
|
3977, -251, -24, 3977, 3925, 2275, -3000, -3000, 79, -3000,
|
|
3925, -3000, -251, -3000, 2618, 2618, 3330, -3000, -3000, -3000,
|
|
-24, 3330, 3330, -233, -3000, 3330, 3330, 3330, -3000, 417,
|
|
-320, -3000, -3000, -3000, 3, -251, -213, -3000, -24, -24,
|
|
-24, 3181, 3925, -243, 3107, 3200, 3418, -3000, 4075, -3000,
|
|
3181, 48, -213, -213, -227, 2618, -3000, 2618, 2190, 113,
|
|
109, 2102, 77, 1468, 1346, 1270, -3000, 116, 3925, -184,
|
|
91, -3000, 75, -251, 3977, -3000, -32, -3000, -3000, -3000,
|
|
-3000, -3000, 3330, -3000, -3000, -259, -3000, -259, 3330, -3000,
|
|
3925, 2010, 616, -213, -243, -3000, 3181, 346, 1918, 104,
|
|
103, 96, 1830, 1745, -184, 91, 1196, 274, -3000, -3000,
|
|
-3000, -3000, -3000, -10, 616, -213, -3000, -3000, -3000, 91,
|
|
1196, -213, -3000, 1196, -3000 };
|
|
__YYSCLASS yytabelem yypgo[]={
|
|
|
|
0, 230, 3089, 272, 87, 229, 202, 223, 200, 488,
|
|
99, 114, 222, 149, 2, 3, 2875, 54, 0, 189,
|
|
221, 220, 219, 218, 217, 215, 212, 1, 211, 183,
|
|
90, 205, 5, 1071, 8, 17, 138, 82, 203, 199,
|
|
198, 197, 196, 195, 194, 193, 191, 190, 185 };
|
|
__YYSCLASS yytabelem yyr1[]={
|
|
|
|
0, 40, 40, 36, 36, 37, 37, 33, 33, 26,
|
|
26, 24, 24, 41, 22, 42, 22, 43, 22, 20,
|
|
20, 23, 30, 30, 34, 34, 35, 35, 29, 29,
|
|
15, 15, 1, 1, 10, 11, 11, 11, 11, 11,
|
|
11, 11, 44, 11, 12, 12, 6, 6, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
|
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
2, 2, 2, 2, 2, 2, 2, 2, 4, 4,
|
|
5, 5, 7, 7, 7, 39, 39, 28, 28, 28,
|
|
28, 31, 31, 9, 9, 45, 13, 32, 32, 14,
|
|
14, 14, 14, 14, 14, 14, 14, 27, 27, 16,
|
|
16, 16, 46, 47, 16, 16, 16, 16, 16, 16,
|
|
16, 16, 16, 16, 16, 16, 48, 16, 16, 17,
|
|
17, 38, 38, 8, 8, 8, 8, 8, 8, 8,
|
|
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
|
|
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
|
|
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
|
|
8, 8, 8, 18, 18, 18, 18, 21, 21, 21,
|
|
19, 19, 19, 25 };
|
|
__YYSCLASS yytabelem yyr2[]={
|
|
|
|
0, 3, 3, 2, 4, 2, 4, 2, 4, 2,
|
|
4, 2, 4, 1, 25, 1, 21, 1, 17, 3,
|
|
3, 9, 2, 4, 2, 4, 1, 2, 1, 2,
|
|
1, 2, 3, 7, 3, 3, 9, 7, 13, 7,
|
|
9, 9, 1, 19, 2, 7, 2, 7, 7, 11,
|
|
7, 7, 7, 7, 7, 11, 5, 2, 2, 7,
|
|
11, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
7, 7, 11, 9, 7, 5, 2, 2, 7, 7,
|
|
2, 7, 1, 2, 7, 2, 2, 2, 2, 4,
|
|
4, 2, 4, 3, 5, 1, 9, 2, 4, 9,
|
|
9, 9, 5, 11, 5, 3, 3, 2, 4, 5,
|
|
7, 5, 1, 1, 19, 7, 5, 2, 9, 5,
|
|
7, 5, 5, 7, 5, 4, 1, 7, 5, 2,
|
|
5, 2, 2, 7, 7, 7, 7, 7, 7, 5,
|
|
5, 5, 7, 9, 3, 7, 9, 5, 5, 5,
|
|
5, 9, 7, 5, 3, 13, 13, 7, 13, 13,
|
|
3, 17, 17, 13, 9, 3, 13, 13, 17, 17,
|
|
17, 13, 2, 2, 9, 3, 5, 1, 3, 7,
|
|
3, 3, 3, 9 };
|
|
__YYSCLASS yytabelem yychk[]={
|
|
|
|
-3000, -40, -1, 256, -29, -28, 263, 59, -12, -11,
|
|
-10, -30, 261, 262, 297, -2, 123, -18, 40, -9,
|
|
-8, -19, 330, 347, -13, 342, 45, 43, 289, 332,
|
|
345, 346, 336, 301, 303, 333, 338, 321, 334, -38,
|
|
339, 329, 288, 331, 47, 298, 299, 263, 59, -29,
|
|
-30, 44, 263, -17, -16, 290, 291, 292, -26, 295,
|
|
-22, -23, -30, 304, 305, 337, -14, -25, 59, 294,
|
|
296, 300, -39, 293, -2, 256, 340, 319, 320, -30,
|
|
-30, -20, 329, 332, 63, -37, -36, 281, 282, 283,
|
|
284, 285, 286, 267, 287, 124, -8, 279, 278, 342,
|
|
-18, 40, 312, 345, 346, -4, -2, 43, 45, 42,
|
|
47, 37, 344, 91, -8, -9, -8, -8, -8, 40,
|
|
40, -18, -18, -18, 285, 40, 40, 40, 40, 40,
|
|
40, -45, -11, -17, -10, 125, -16, -27, -34, 59,
|
|
263, -2, -27, 263, -46, -2, -27, -16, -17, -27,
|
|
-27, -2, -27, -27, -48, -35, -34, 40, 40, -7,
|
|
-5, 40, -3, -18, -9, -8, -19, 40, -17, -17,
|
|
40, -2, 263, -2, 263, -2, -2, -2, -2, -2,
|
|
-2, -2, -13, -2, -19, 336, -2, -2, 41, -33,
|
|
44, -33, 41, -8, -8, -8, -8, -8, -8, -6,
|
|
-2, 41, -6, 41, -6, 285, -8, -2, -2, -2,
|
|
-6, -13, -2, -2, 335, 125, -30, 263, -35, -27,
|
|
-16, -27, -24, 322, -31, 125, -27, -16, -15, -19,
|
|
-14, -2, 124, 280, 283, -33, -4, 63, -37, -36,
|
|
267, 287, -8, 312, 91, -2, 125, 125, -21, 329,
|
|
58, -18, 287, 263, -2, -2, -33, 93, 41, 41,
|
|
-8, -33, -33, -33, 41, -33, -33, -33, 47, -17,
|
|
-47, 263, -16, 263, 59, 287, -32, 41, -8, -8,
|
|
-8, -3, 40, 41, -3, -3, -3, -13, -3, -19,
|
|
-3, -6, -32, -32, -33, -2, -19, -2, -2, -13,
|
|
-13, -2, -19, -2, -2, -2, 125, 340, -35, 59,
|
|
-19, 263, -4, 287, 58, 93, -44, 329, 41, 41,
|
|
41, 41, -33, 41, 41, -33, 41, -33, -33, 41,
|
|
40, -2, -35, -32, 41, -19, -3, -30, -2, -13,
|
|
-18, -18, -2, -2, 59, -15, -43, -17, 41, 41,
|
|
41, 41, 41, 41, -35, -32, -16, 125, -27, -15,
|
|
-42, -32, -16, -41, -16 };
|
|
__YYSCLASS yytabelem yydef[]={
|
|
|
|
-2, -2, 1, 2, 32, 29, 87, 88, 28, 44,
|
|
35, 0, 0, 0, 0, 34, 22, 172, 0, 76,
|
|
77, 173, 175, 0, 93, 0, 0, 0, 144, 0,
|
|
0, 0, 154, 0, 0, 160, 0, 0, 165, 0,
|
|
0, 180, 181, 182, 95, 131, 132, 89, 90, 33,
|
|
0, 0, 23, 0, 129, 0, 0, 0, 112, 0,
|
|
117, 0, 0, 0, 0, 0, 0, 126, 26, 9,
|
|
0, 0, 82, 0, 105, 106, 0, 85, 86, 0,
|
|
0, 0, 19, 20, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 75, 5, 3, 0,
|
|
172, 0, 0, 149, 150, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 176, 94, 141, 139, 140, 0,
|
|
0, 147, 148, 153, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 45, 0, 37, 39, 130, 109, 107, 26,
|
|
24, 0, 111, 10, 0, 0, 116, 119, 0, 121,
|
|
122, 0, 124, 125, 0, 128, 27, -2, 0, 102,
|
|
83, 0, 80, 172, 57, 58, 104, 0, 0, 0,
|
|
177, 0, 6, 61, 4, 62, -2, -2, -2, -2,
|
|
-2, -2, 69, -2, 71, 74, 0, 59, 0, 0,
|
|
7, 0, 157, 133, 134, 135, 136, 137, 138, 0,
|
|
46, 142, 0, 145, 0, 0, 152, 0, 0, 0,
|
|
0, 93, 0, 0, 0, 36, 0, 25, 108, 110,
|
|
113, 115, 0, 11, 120, 91, 123, 127, 0, 173,
|
|
31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 56, 0, 0, 0, 40, 41, 0, 178,
|
|
0, 73, 0, 8, 79, 78, 0, 174, 143, 146,
|
|
151, 0, 0, 0, 164, 0, 0, 0, 96, 0,
|
|
0, 12, 118, 92, 26, 0, 21, 97, 99, 100,
|
|
101, 81, 0, 84, 0, 50, 51, 52, -2, 54,
|
|
48, 0, 183, 42, 0, 60, 72, 47, 0, 93,
|
|
93, 0, 0, 0, 0, 0, 38, 0, 0, 26,
|
|
0, 98, 0, 0, 0, 103, 0, 179, 155, 156,
|
|
158, 159, 0, 163, 166, 0, 167, 0, 0, 171,
|
|
0, 0, -2, 17, 0, 55, 49, 0, 0, 93,
|
|
0, 0, 0, 0, 26, 0, 0, 0, 161, 162,
|
|
168, 169, 170, 0, -2, 15, 18, 43, 114, 0,
|
|
0, 13, 16, 0, 14 };
|
|
typedef struct { char *t_name; int t_val; } yytoktype;
|
|
#ifndef YYDEBUG
|
|
# define YYDEBUG 0 /* don't allow debugging */
|
|
#endif
|
|
|
|
#if YYDEBUG
|
|
|
|
__YYSCLASS yytoktype yytoks[] =
|
|
{
|
|
"FIRSTTOKEN", 257,
|
|
"PROGRAM", 258,
|
|
"PASTAT", 259,
|
|
"PASTAT2", 260,
|
|
"XBEGIN", 261,
|
|
"XEND", 262,
|
|
"NL", 263,
|
|
",", 44,
|
|
"{", 123,
|
|
"(", 40,
|
|
"|", 124,
|
|
";", 59,
|
|
"/", 47,
|
|
")", 41,
|
|
"}", 125,
|
|
"[", 91,
|
|
"]", 93,
|
|
"ARRAY", 264,
|
|
"MATCH", 265,
|
|
"NOTMATCH", 266,
|
|
"MATCHOP", 267,
|
|
"FINAL", 268,
|
|
"DOT", 269,
|
|
"ALL", 270,
|
|
"CCL", 271,
|
|
"NCCL", 272,
|
|
"CHAR", 273,
|
|
"OR", 274,
|
|
"STAR", 275,
|
|
"QUEST", 276,
|
|
"PLUS", 277,
|
|
"AND", 278,
|
|
"BOR", 279,
|
|
"APPEND", 280,
|
|
"EQ", 281,
|
|
"GE", 282,
|
|
"GT", 283,
|
|
"LE", 284,
|
|
"LT", 285,
|
|
"NE", 286,
|
|
"IN", 287,
|
|
"ARG", 288,
|
|
"BLTIN", 289,
|
|
"BREAK", 290,
|
|
"CLOSE", 291,
|
|
"CONTINUE", 292,
|
|
"DELETE", 293,
|
|
"DO", 294,
|
|
"EXIT", 295,
|
|
"FOR", 296,
|
|
"FUNC", 297,
|
|
"SUB", 298,
|
|
"GSUB", 299,
|
|
"IF", 300,
|
|
"INDEX", 301,
|
|
"LSUBSTR", 302,
|
|
"MATCHFCN", 303,
|
|
"NEXT", 304,
|
|
"NEXTFILE", 305,
|
|
"ADD", 306,
|
|
"MINUS", 307,
|
|
"MULT", 308,
|
|
"DIVIDE", 309,
|
|
"MOD", 310,
|
|
"ASSIGN", 311,
|
|
"ASGNOP", 312,
|
|
"ADDEQ", 313,
|
|
"SUBEQ", 314,
|
|
"MULTEQ", 315,
|
|
"DIVEQ", 316,
|
|
"MODEQ", 317,
|
|
"POWEQ", 318,
|
|
"PRINT", 319,
|
|
"PRINTF", 320,
|
|
"SPRINTF", 321,
|
|
"ELSE", 322,
|
|
"INTEST", 323,
|
|
"CONDEXPR", 324,
|
|
"POSTINCR", 325,
|
|
"PREINCR", 326,
|
|
"POSTDECR", 327,
|
|
"PREDECR", 328,
|
|
"VAR", 329,
|
|
"IVAR", 330,
|
|
"VARNF", 331,
|
|
"CALL", 332,
|
|
"NUMBER", 333,
|
|
"STRING", 334,
|
|
"REGEXPR", 335,
|
|
"?", 63,
|
|
":", 58,
|
|
"GETLINE", 336,
|
|
"RETURN", 337,
|
|
"SPLIT", 338,
|
|
"SUBSTR", 339,
|
|
"WHILE", 340,
|
|
"CAT", 341,
|
|
"+", 43,
|
|
"-", 45,
|
|
"*", 42,
|
|
"%", 37,
|
|
"NOT", 342,
|
|
"UMINUS", 343,
|
|
"POWER", 344,
|
|
"DECR", 345,
|
|
"INCR", 346,
|
|
"INDIRECT", 347,
|
|
"LASTTOKEN", 348,
|
|
"-unknown-", -1 /* ends search */
|
|
};
|
|
|
|
__YYSCLASS char * yyreds[] =
|
|
{
|
|
"-no such reduction-",
|
|
"program : pas",
|
|
"program : error",
|
|
"and : AND",
|
|
"and : and NL",
|
|
"bor : BOR",
|
|
"bor : bor NL",
|
|
"comma : ','",
|
|
"comma : comma NL",
|
|
"do : DO",
|
|
"do : do NL",
|
|
"else : ELSE",
|
|
"else : else NL",
|
|
"for : FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen",
|
|
"for : FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen stmt",
|
|
"for : FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen",
|
|
"for : FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen stmt",
|
|
"for : FOR '(' varname IN varname rparen",
|
|
"for : FOR '(' varname IN varname rparen stmt",
|
|
"funcname : VAR",
|
|
"funcname : CALL",
|
|
"if : IF '(' pattern rparen",
|
|
"lbrace : '{'",
|
|
"lbrace : lbrace NL",
|
|
"nl : NL",
|
|
"nl : nl NL",
|
|
"opt_nl : /* empty */",
|
|
"opt_nl : nl",
|
|
"opt_pst : /* empty */",
|
|
"opt_pst : pst",
|
|
"opt_simple_stmt : /* empty */",
|
|
"opt_simple_stmt : simple_stmt",
|
|
"pas : opt_pst",
|
|
"pas : opt_pst pa_stats opt_pst",
|
|
"pa_pat : pattern",
|
|
"pa_stat : pa_pat",
|
|
"pa_stat : pa_pat lbrace stmtlist '}'",
|
|
"pa_stat : pa_pat ',' pa_pat",
|
|
"pa_stat : pa_pat ',' pa_pat lbrace stmtlist '}'",
|
|
"pa_stat : lbrace stmtlist '}'",
|
|
"pa_stat : XBEGIN lbrace stmtlist '}'",
|
|
"pa_stat : XEND lbrace stmtlist '}'",
|
|
"pa_stat : FUNC funcname '(' varlist rparen",
|
|
"pa_stat : FUNC funcname '(' varlist rparen lbrace stmtlist '}'",
|
|
"pa_stats : pa_stat",
|
|
"pa_stats : pa_stats opt_pst pa_stat",
|
|
"patlist : pattern",
|
|
"patlist : patlist comma pattern",
|
|
"ppattern : var ASGNOP ppattern",
|
|
"ppattern : ppattern '?' ppattern ':' ppattern",
|
|
"ppattern : ppattern bor ppattern",
|
|
"ppattern : ppattern and ppattern",
|
|
"ppattern : ppattern MATCHOP reg_expr",
|
|
"ppattern : ppattern MATCHOP ppattern",
|
|
"ppattern : ppattern IN varname",
|
|
"ppattern : '(' plist ')' IN varname",
|
|
"ppattern : ppattern term",
|
|
"ppattern : re",
|
|
"ppattern : term",
|
|
"pattern : var ASGNOP pattern",
|
|
"pattern : pattern '?' pattern ':' pattern",
|
|
"pattern : pattern bor pattern",
|
|
"pattern : pattern and pattern",
|
|
"pattern : pattern EQ pattern",
|
|
"pattern : pattern GE pattern",
|
|
"pattern : pattern GT pattern",
|
|
"pattern : pattern LE pattern",
|
|
"pattern : pattern LT pattern",
|
|
"pattern : pattern NE pattern",
|
|
"pattern : pattern MATCHOP reg_expr",
|
|
"pattern : pattern MATCHOP pattern",
|
|
"pattern : pattern IN varname",
|
|
"pattern : '(' plist ')' IN varname",
|
|
"pattern : pattern '|' GETLINE var",
|
|
"pattern : pattern '|' GETLINE",
|
|
"pattern : pattern term",
|
|
"pattern : re",
|
|
"pattern : term",
|
|
"plist : pattern comma pattern",
|
|
"plist : plist comma pattern",
|
|
"pplist : ppattern",
|
|
"pplist : pplist comma ppattern",
|
|
"prarg : /* empty */",
|
|
"prarg : pplist",
|
|
"prarg : '(' plist ')'",
|
|
"print : PRINT",
|
|
"print : PRINTF",
|
|
"pst : NL",
|
|
"pst : ';'",
|
|
"pst : pst NL",
|
|
"pst : pst ';'",
|
|
"rbrace : '}'",
|
|
"rbrace : rbrace NL",
|
|
"re : reg_expr",
|
|
"re : NOT re",
|
|
"reg_expr : '/'",
|
|
"reg_expr : '/' REGEXPR '/'",
|
|
"rparen : ')'",
|
|
"rparen : rparen NL",
|
|
"simple_stmt : print prarg '|' term",
|
|
"simple_stmt : print prarg APPEND term",
|
|
"simple_stmt : print prarg GT term",
|
|
"simple_stmt : print prarg",
|
|
"simple_stmt : DELETE varname '[' patlist ']'",
|
|
"simple_stmt : DELETE varname",
|
|
"simple_stmt : pattern",
|
|
"simple_stmt : error",
|
|
"st : nl",
|
|
"st : ';' opt_nl",
|
|
"stmt : BREAK st",
|
|
"stmt : CLOSE pattern st",
|
|
"stmt : CONTINUE st",
|
|
"stmt : do",
|
|
"stmt : do stmt",
|
|
"stmt : do stmt WHILE '(' pattern ')' st",
|
|
"stmt : EXIT pattern st",
|
|
"stmt : EXIT st",
|
|
"stmt : for",
|
|
"stmt : if stmt else stmt",
|
|
"stmt : if stmt",
|
|
"stmt : lbrace stmtlist rbrace",
|
|
"stmt : NEXT st",
|
|
"stmt : NEXTFILE st",
|
|
"stmt : RETURN pattern st",
|
|
"stmt : RETURN st",
|
|
"stmt : simple_stmt st",
|
|
"stmt : while",
|
|
"stmt : while stmt",
|
|
"stmt : ';' opt_nl",
|
|
"stmtlist : stmt",
|
|
"stmtlist : stmtlist stmt",
|
|
"subop : SUB",
|
|
"subop : GSUB",
|
|
"term : term '+' term",
|
|
"term : term '-' term",
|
|
"term : term '*' term",
|
|
"term : term '/' term",
|
|
"term : term '%' term",
|
|
"term : term POWER term",
|
|
"term : '-' term",
|
|
"term : '+' term",
|
|
"term : NOT term",
|
|
"term : BLTIN '(' ')'",
|
|
"term : BLTIN '(' patlist ')'",
|
|
"term : BLTIN",
|
|
"term : CALL '(' ')'",
|
|
"term : CALL '(' patlist ')'",
|
|
"term : DECR var",
|
|
"term : INCR var",
|
|
"term : var DECR",
|
|
"term : var INCR",
|
|
"term : GETLINE var LT term",
|
|
"term : GETLINE LT term",
|
|
"term : GETLINE var",
|
|
"term : GETLINE",
|
|
"term : INDEX '(' pattern comma pattern ')'",
|
|
"term : INDEX '(' pattern comma reg_expr ')'",
|
|
"term : '(' pattern ')'",
|
|
"term : MATCHFCN '(' pattern comma reg_expr ')'",
|
|
"term : MATCHFCN '(' pattern comma pattern ')'",
|
|
"term : NUMBER",
|
|
"term : SPLIT '(' pattern comma varname comma pattern ')'",
|
|
"term : SPLIT '(' pattern comma varname comma reg_expr ')'",
|
|
"term : SPLIT '(' pattern comma varname ')'",
|
|
"term : SPRINTF '(' patlist ')'",
|
|
"term : STRING",
|
|
"term : subop '(' reg_expr comma pattern ')'",
|
|
"term : subop '(' pattern comma pattern ')'",
|
|
"term : subop '(' reg_expr comma pattern comma var ')'",
|
|
"term : subop '(' pattern comma pattern comma var ')'",
|
|
"term : SUBSTR '(' pattern comma pattern comma pattern ')'",
|
|
"term : SUBSTR '(' pattern comma pattern ')'",
|
|
"term : var",
|
|
"var : varname",
|
|
"var : varname '[' patlist ']'",
|
|
"var : IVAR",
|
|
"var : INDIRECT term",
|
|
"varlist : /* empty */",
|
|
"varlist : VAR",
|
|
"varlist : varlist comma VAR",
|
|
"varname : VAR",
|
|
"varname : ARG",
|
|
"varname : VARNF",
|
|
"while : WHILE '(' pattern rparen",
|
|
};
|
|
#endif /* YYDEBUG */
|
|
#define YYFLAG (-3000)
|
|
/* @(#) $Revision: 1.2 $ */
|
|
|
|
/*
|
|
** Skeleton parser driver for yacc output
|
|
*/
|
|
|
|
#if defined(NLS) && !defined(NL_SETN)
|
|
#include <msgbuf.h>
|
|
#endif
|
|
|
|
#ifndef nl_msg
|
|
#define nl_msg(i,s) (s)
|
|
#endif
|
|
|
|
/*
|
|
** yacc user known macros and defines
|
|
*/
|
|
#define YYERROR goto yyerrlab
|
|
|
|
#ifndef __RUNTIME_YYMAXDEPTH
|
|
#define YYACCEPT return(0)
|
|
#define YYABORT return(1)
|
|
#else
|
|
#define YYACCEPT {free_stacks(); return(0);}
|
|
#define YYABORT {free_stacks(); return(1);}
|
|
#endif
|
|
|
|
#define YYBACKUP( newtoken, newvalue )\
|
|
{\
|
|
if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
|
|
{\
|
|
yyerror( (nl_msg(30001,"syntax error - cannot backup")) );\
|
|
goto yyerrlab;\
|
|
}\
|
|
yychar = newtoken;\
|
|
yystate = *yyps;\
|
|
yylval = newvalue;\
|
|
goto yynewstate;\
|
|
}
|
|
#define YYRECOVERING() (!!yyerrflag)
|
|
#ifndef YYDEBUG
|
|
# define YYDEBUG 1 /* make debugging available */
|
|
#endif
|
|
|
|
/*
|
|
** user known globals
|
|
*/
|
|
int yydebug; /* set to 1 to get debugging */
|
|
|
|
/*
|
|
** driver internal defines
|
|
*/
|
|
/* define for YYFLAG now generated by yacc program. */
|
|
/*#define YYFLAG (FLAGVAL)*/
|
|
|
|
/*
|
|
** global variables used by the parser
|
|
*/
|
|
# ifndef __RUNTIME_YYMAXDEPTH
|
|
__YYSCLASS YYSTYPE yyv[ YYMAXDEPTH ]; /* value stack */
|
|
__YYSCLASS int yys[ YYMAXDEPTH ]; /* state stack */
|
|
# else
|
|
__YYSCLASS YYSTYPE *yyv; /* pointer to malloc'ed value stack */
|
|
__YYSCLASS int *yys; /* pointer to malloc'ed stack stack */
|
|
|
|
#if defined(__STDC__) || defined (__cplusplus)
|
|
#include <stdlib.h>
|
|
#else
|
|
extern char *malloc();
|
|
extern char *realloc();
|
|
extern void free();
|
|
#endif /* __STDC__ or __cplusplus */
|
|
|
|
|
|
static int allocate_stacks();
|
|
static void free_stacks();
|
|
# ifndef YYINCREMENT
|
|
# define YYINCREMENT (YYMAXDEPTH/2) + 10
|
|
# endif
|
|
# endif /* __RUNTIME_YYMAXDEPTH */
|
|
long yymaxdepth = YYMAXDEPTH;
|
|
|
|
__YYSCLASS YYSTYPE *yypv; /* top of value stack */
|
|
__YYSCLASS int *yyps; /* top of state stack */
|
|
|
|
__YYSCLASS int yystate; /* current state */
|
|
__YYSCLASS int yytmp; /* extra var (lasts between blocks) */
|
|
|
|
int yynerrs; /* number of errors */
|
|
__YYSCLASS int yyerrflag; /* error recovery flag */
|
|
int yychar; /* current input token number */
|
|
|
|
|
|
|
|
/*
|
|
** yyparse - return 0 if worked, 1 if syntax error not recovered from
|
|
*/
|
|
int
|
|
#ifndef __STDC__
|
|
yyparse()
|
|
#else
|
|
yyparse(void)
|
|
#endif
|
|
{
|
|
register YYSTYPE *yypvt; /* top of value stack for $vars */
|
|
|
|
/*
|
|
** Initialize externals - yyparse may be called more than once
|
|
*/
|
|
# ifdef __RUNTIME_YYMAXDEPTH
|
|
if (allocate_stacks()) YYABORT;
|
|
# endif
|
|
yypv = &yyv[-1];
|
|
yyps = &yys[-1];
|
|
yystate = 0;
|
|
yytmp = 0;
|
|
yynerrs = 0;
|
|
yyerrflag = 0;
|
|
yychar = -1;
|
|
|
|
goto yystack;
|
|
{
|
|
register YYSTYPE *yy_pv; /* top of value stack */
|
|
register int *yy_ps; /* top of state stack */
|
|
register int yy_state; /* current state */
|
|
register int yy_n; /* internal state number info */
|
|
|
|
/*
|
|
** get globals into registers.
|
|
** branch to here only if YYBACKUP was called.
|
|
*/
|
|
yynewstate:
|
|
yy_pv = yypv;
|
|
yy_ps = yyps;
|
|
yy_state = yystate;
|
|
goto yy_newstate;
|
|
|
|
/*
|
|
** get globals into registers.
|
|
** either we just started, or we just finished a reduction
|
|
*/
|
|
yystack:
|
|
yy_pv = yypv;
|
|
yy_ps = yyps;
|
|
yy_state = yystate;
|
|
|
|
/*
|
|
** top of for (;;) loop while no reductions done
|
|
*/
|
|
yy_stack:
|
|
/*
|
|
** put a state and value onto the stacks
|
|
*/
|
|
#if YYDEBUG
|
|
/*
|
|
** if debugging, look up token value in list of value vs.
|
|
** name pairs. 0 and negative (-1) are special values.
|
|
** Note: linear search is used since time is not a real
|
|
** consideration while debugging.
|
|
*/
|
|
if ( yydebug )
|
|
{
|
|
register int yy_i;
|
|
|
|
printf( "State %d, token ", yy_state );
|
|
if ( yychar == 0 )
|
|
printf( "end-of-file\n" );
|
|
else if ( yychar < 0 )
|
|
printf( "-none-\n" );
|
|
else
|
|
{
|
|
for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
|
|
yy_i++ )
|
|
{
|
|
if ( yytoks[yy_i].t_val == yychar )
|
|
break;
|
|
}
|
|
printf( "%s\n", yytoks[yy_i].t_name );
|
|
}
|
|
}
|
|
#endif /* YYDEBUG */
|
|
if ( ++yy_ps >= &yys[ yymaxdepth ] ) /* room on stack? */
|
|
{
|
|
# ifndef __RUNTIME_YYMAXDEPTH
|
|
yyerror( (nl_msg(30002,"yacc stack overflow")) );
|
|
YYABORT;
|
|
# else
|
|
/* save old stack bases to recalculate pointers */
|
|
YYSTYPE * yyv_old = yyv;
|
|
int * yys_old = yys;
|
|
yymaxdepth += YYINCREMENT;
|
|
yys = (int *) realloc(yys, yymaxdepth * sizeof(int));
|
|
yyv = (YYSTYPE *) realloc(yyv, yymaxdepth * sizeof(YYSTYPE));
|
|
if (yys==0 || yyv==0) {
|
|
yyerror( (nl_msg(30002,"yacc stack overflow")) );
|
|
YYABORT;
|
|
}
|
|
/* Reset pointers into stack */
|
|
yy_ps = (yy_ps - yys_old) + yys;
|
|
yyps = (yyps - yys_old) + yys;
|
|
yy_pv = (yy_pv - yyv_old) + yyv;
|
|
yypv = (yypv - yyv_old) + yyv;
|
|
# endif
|
|
|
|
}
|
|
*yy_ps = yy_state;
|
|
*++yy_pv = yyval;
|
|
|
|
/*
|
|
** we have a new state - find out what to do
|
|
*/
|
|
yy_newstate:
|
|
if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
|
|
goto yydefault; /* simple state */
|
|
#if YYDEBUG
|
|
/*
|
|
** if debugging, need to mark whether new token grabbed
|
|
*/
|
|
yytmp = yychar < 0;
|
|
#endif
|
|
if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
|
|
yychar = 0; /* reached EOF */
|
|
#if YYDEBUG
|
|
if ( yydebug && yytmp )
|
|
{
|
|
register int yy_i;
|
|
|
|
printf( "Received token " );
|
|
if ( yychar == 0 )
|
|
printf( "end-of-file\n" );
|
|
else if ( yychar < 0 )
|
|
printf( "-none-\n" );
|
|
else
|
|
{
|
|
for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
|
|
yy_i++ )
|
|
{
|
|
if ( yytoks[yy_i].t_val == yychar )
|
|
break;
|
|
}
|
|
printf( "%s\n", yytoks[yy_i].t_name );
|
|
}
|
|
}
|
|
#endif /* YYDEBUG */
|
|
if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
|
|
goto yydefault;
|
|
if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar ) /*valid shift*/
|
|
{
|
|
yychar = -1;
|
|
yyval = yylval;
|
|
yy_state = yy_n;
|
|
if ( yyerrflag > 0 )
|
|
yyerrflag--;
|
|
goto yy_stack;
|
|
}
|
|
|
|
yydefault:
|
|
if ( ( yy_n = yydef[ yy_state ] ) == -2 )
|
|
{
|
|
#if YYDEBUG
|
|
yytmp = yychar < 0;
|
|
#endif
|
|
if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
|
|
yychar = 0; /* reached EOF */
|
|
#if YYDEBUG
|
|
if ( yydebug && yytmp )
|
|
{
|
|
register int yy_i;
|
|
|
|
printf( "Received token " );
|
|
if ( yychar == 0 )
|
|
printf( "end-of-file\n" );
|
|
else if ( yychar < 0 )
|
|
printf( "-none-\n" );
|
|
else
|
|
{
|
|
for ( yy_i = 0;
|
|
yytoks[yy_i].t_val >= 0;
|
|
yy_i++ )
|
|
{
|
|
if ( yytoks[yy_i].t_val
|
|
== yychar )
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
printf( "%s\n", yytoks[yy_i].t_name );
|
|
}
|
|
}
|
|
#endif /* YYDEBUG */
|
|
/*
|
|
** look through exception table
|
|
*/
|
|
{
|
|
register int *yyxi = yyexca;
|
|
|
|
while ( ( *yyxi != -1 ) ||
|
|
( yyxi[1] != yy_state ) )
|
|
{
|
|
yyxi += 2;
|
|
}
|
|
while ( ( *(yyxi += 2) >= 0 ) &&
|
|
( *yyxi != yychar ) )
|
|
;
|
|
if ( ( yy_n = yyxi[1] ) < 0 )
|
|
YYACCEPT;
|
|
}
|
|
}
|
|
|
|
/*
|
|
** check for syntax error
|
|
*/
|
|
if ( yy_n == 0 ) /* have an error */
|
|
{
|
|
/* no worry about speed here! */
|
|
switch ( yyerrflag )
|
|
{
|
|
case 0: /* new error */
|
|
yyerror( (nl_msg(30003,"syntax error")) );
|
|
yynerrs++;
|
|
goto skip_init;
|
|
yyerrlab:
|
|
/*
|
|
** get globals into registers.
|
|
** we have a user generated syntax type error
|
|
*/
|
|
yy_pv = yypv;
|
|
yy_ps = yyps;
|
|
yy_state = yystate;
|
|
yynerrs++;
|
|
skip_init:
|
|
case 1:
|
|
case 2: /* incompletely recovered error */
|
|
/* try again... */
|
|
yyerrflag = 3;
|
|
/*
|
|
** find state where "error" is a legal
|
|
** shift action
|
|
*/
|
|
while ( yy_ps >= yys )
|
|
{
|
|
yy_n = yypact[ *yy_ps ] + YYERRCODE;
|
|
if ( yy_n >= 0 && yy_n < YYLAST &&
|
|
yychk[yyact[yy_n]] == YYERRCODE) {
|
|
/*
|
|
** simulate shift of "error"
|
|
*/
|
|
yy_state = yyact[ yy_n ];
|
|
goto yy_stack;
|
|
}
|
|
/*
|
|
** current state has no shift on
|
|
** "error", pop stack
|
|
*/
|
|
#if YYDEBUG
|
|
# define _POP_ "Error recovery pops state %d, uncovers state %d\n"
|
|
if ( yydebug )
|
|
printf( _POP_, *yy_ps,
|
|
yy_ps[-1] );
|
|
# undef _POP_
|
|
#endif
|
|
yy_ps--;
|
|
yy_pv--;
|
|
}
|
|
/*
|
|
** there is no state on stack with "error" as
|
|
** a valid shift. give up.
|
|
*/
|
|
YYABORT;
|
|
case 3: /* no shift yet; eat a token */
|
|
#if YYDEBUG
|
|
/*
|
|
** if debugging, look up token in list of
|
|
** pairs. 0 and negative shouldn't occur,
|
|
** but since timing doesn't matter when
|
|
** debugging, it doesn't hurt to leave the
|
|
** tests here.
|
|
*/
|
|
if ( yydebug )
|
|
{
|
|
register int yy_i;
|
|
|
|
printf( "Error recovery discards " );
|
|
if ( yychar == 0 )
|
|
printf( "token end-of-file\n" );
|
|
else if ( yychar < 0 )
|
|
printf( "token -none-\n" );
|
|
else
|
|
{
|
|
for ( yy_i = 0;
|
|
yytoks[yy_i].t_val >= 0;
|
|
yy_i++ )
|
|
{
|
|
if ( yytoks[yy_i].t_val
|
|
== yychar )
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
printf( "token %s\n",
|
|
yytoks[yy_i].t_name );
|
|
}
|
|
}
|
|
#endif /* YYDEBUG */
|
|
if ( yychar == 0 ) /* reached EOF. quit */
|
|
YYABORT;
|
|
yychar = -1;
|
|
goto yy_newstate;
|
|
}
|
|
}/* end if ( yy_n == 0 ) */
|
|
/*
|
|
** reduction by production yy_n
|
|
** put stack tops, etc. so things right after switch
|
|
*/
|
|
#if YYDEBUG
|
|
/*
|
|
** if debugging, print the string that is the user's
|
|
** specification of the reduction which is just about
|
|
** to be done.
|
|
*/
|
|
if ( yydebug )
|
|
printf( "Reduce by (%d) \"%s\"\n",
|
|
yy_n, yyreds[ yy_n ] );
|
|
#endif
|
|
yytmp = yy_n; /* value to switch over */
|
|
yypvt = yy_pv; /* $vars top of value stack */
|
|
/*
|
|
** Look in goto table for next state
|
|
** Sorry about using yy_state here as temporary
|
|
** register variable, but why not, if it works...
|
|
** If yyr2[ yy_n ] doesn't have the low order bit
|
|
** set, then there is no action to be done for
|
|
** this reduction. So, no saving & unsaving of
|
|
** registers done. The only difference between the
|
|
** code just after the if and the body of the if is
|
|
** the goto yy_stack in the body. This way the test
|
|
** can be made before the choice of what to do is needed.
|
|
*/
|
|
{
|
|
/* length of production doubled with extra bit */
|
|
register int yy_len = yyr2[ yy_n ];
|
|
|
|
if ( !( yy_len & 01 ) )
|
|
{
|
|
yy_len >>= 1;
|
|
yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
|
|
yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
|
|
*( yy_ps -= yy_len ) + 1;
|
|
if ( yy_state >= YYLAST ||
|
|
yychk[ yy_state =
|
|
yyact[ yy_state ] ] != -yy_n )
|
|
{
|
|
yy_state = yyact[ yypgo[ yy_n ] ];
|
|
}
|
|
goto yy_stack;
|
|
}
|
|
yy_len >>= 1;
|
|
yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
|
|
yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
|
|
*( yy_ps -= yy_len ) + 1;
|
|
if ( yy_state >= YYLAST ||
|
|
yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
|
|
{
|
|
yy_state = yyact[ yypgo[ yy_n ] ];
|
|
}
|
|
}
|
|
/* save until reenter driver code */
|
|
yystate = yy_state;
|
|
yyps = yy_ps;
|
|
yypv = yy_pv;
|
|
}
|
|
/*
|
|
** code supplied by user is placed in this switch
|
|
*/
|
|
switch( yytmp )
|
|
{
|
|
|
|
case 1:
|
|
/* # line 98 "awkgram.y" */
|
|
{ if (errorflag==0)
|
|
winner = (Node *)stat3(PROGRAM, beginloc, yypvt[-0].p, endloc); } break;
|
|
case 2:
|
|
/* # line 100 "awkgram.y" */
|
|
{ yyclearin; bracecheck(); ERROR "bailing out" SYNTAX; } break;
|
|
case 13:
|
|
/* # line 124 "awkgram.y" */
|
|
{inloop++;} break;
|
|
case 14:
|
|
/* # line 125 "awkgram.y" */
|
|
{ --inloop; yyval.p = stat4(FOR, yypvt[-9].p, notnull(yypvt[-6].p), yypvt[-3].p, yypvt[-0].p); } break;
|
|
case 15:
|
|
/* # line 126 "awkgram.y" */
|
|
{inloop++;} break;
|
|
case 16:
|
|
/* # line 127 "awkgram.y" */
|
|
{ --inloop; yyval.p = stat4(FOR, yypvt[-7].p, NIL, yypvt[-3].p, yypvt[-0].p); } break;
|
|
case 17:
|
|
/* # line 128 "awkgram.y" */
|
|
{inloop++;} break;
|
|
case 18:
|
|
/* # line 129 "awkgram.y" */
|
|
{ --inloop; yyval.p = stat3(IN, yypvt[-5].p, makearr(yypvt[-3].p), yypvt[-0].p); } break;
|
|
case 19:
|
|
/* # line 133 "awkgram.y" */
|
|
{ setfname(yypvt[-0].cp); } break;
|
|
case 20:
|
|
/* # line 134 "awkgram.y" */
|
|
{ setfname(yypvt[-0].cp); } break;
|
|
case 21:
|
|
/* # line 138 "awkgram.y" */
|
|
{ yyval.p = notnull(yypvt[-1].p); } break;
|
|
case 26:
|
|
/* # line 150 "awkgram.y" */
|
|
{ yyval.i = 0; } break;
|
|
case 28:
|
|
/* # line 155 "awkgram.y" */
|
|
{ yyval.i = 0; } break;
|
|
case 30:
|
|
/* # line 161 "awkgram.y" */
|
|
{ yyval.p = 0; } break;
|
|
case 32:
|
|
/* # line 166 "awkgram.y" */
|
|
{ yyval.p = 0; } break;
|
|
case 33:
|
|
/* # line 167 "awkgram.y" */
|
|
{ yyval.p = yypvt[-1].p; } break;
|
|
case 34:
|
|
/* # line 171 "awkgram.y" */
|
|
{ yyval.p = notnull(yypvt[-0].p); } break;
|
|
case 35:
|
|
/* # line 175 "awkgram.y" */
|
|
{ yyval.p = stat2(PASTAT, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break;
|
|
case 36:
|
|
/* # line 176 "awkgram.y" */
|
|
{ yyval.p = stat2(PASTAT, yypvt[-3].p, yypvt[-1].p); } break;
|
|
case 37:
|
|
/* # line 177 "awkgram.y" */
|
|
{ yyval.p = pa2stat(yypvt[-2].p, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break;
|
|
case 38:
|
|
/* # line 178 "awkgram.y" */
|
|
{ yyval.p = pa2stat(yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
|
|
case 39:
|
|
/* # line 179 "awkgram.y" */
|
|
{ yyval.p = stat2(PASTAT, NIL, yypvt[-1].p); } break;
|
|
case 40:
|
|
/* # line 181 "awkgram.y" */
|
|
{ beginloc = linkum(beginloc, yypvt[-1].p); yyval.p = 0; } break;
|
|
case 41:
|
|
/* # line 183 "awkgram.y" */
|
|
{ endloc = linkum(endloc, yypvt[-1].p); yyval.p = 0; } break;
|
|
case 42:
|
|
/* # line 184 "awkgram.y" */
|
|
{infunc++;} break;
|
|
case 43:
|
|
/* # line 185 "awkgram.y" */
|
|
{ infunc--; curfname=0; defn((Cell *)yypvt[-7].p, yypvt[-5].p, yypvt[-1].p); yyval.p = 0; } break;
|
|
case 45:
|
|
/* # line 190 "awkgram.y" */
|
|
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 47:
|
|
/* # line 195 "awkgram.y" */
|
|
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 48:
|
|
/* # line 199 "awkgram.y" */
|
|
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 49:
|
|
/* # line 201 "awkgram.y" */
|
|
{ yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 50:
|
|
/* # line 203 "awkgram.y" */
|
|
{ yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
|
|
case 51:
|
|
/* # line 205 "awkgram.y" */
|
|
{ yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
|
|
case 52:
|
|
/* # line 206 "awkgram.y" */
|
|
{ yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break;
|
|
case 53:
|
|
/* # line 208 "awkgram.y" */
|
|
{ if (constnode(yypvt[-0].p))
|
|
yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(strnode(yypvt[-0].p), 0));
|
|
else
|
|
yyval.p = op3(yypvt[-1].i, (Node *)1, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 54:
|
|
/* # line 212 "awkgram.y" */
|
|
{ yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break;
|
|
case 55:
|
|
/* # line 213 "awkgram.y" */
|
|
{ yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break;
|
|
case 56:
|
|
/* # line 214 "awkgram.y" */
|
|
{ yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break;
|
|
case 59:
|
|
/* # line 220 "awkgram.y" */
|
|
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 60:
|
|
/* # line 222 "awkgram.y" */
|
|
{ yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 61:
|
|
/* # line 224 "awkgram.y" */
|
|
{ yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
|
|
case 62:
|
|
/* # line 226 "awkgram.y" */
|
|
{ yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
|
|
case 63:
|
|
/* # line 227 "awkgram.y" */
|
|
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 64:
|
|
/* # line 228 "awkgram.y" */
|
|
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 65:
|
|
/* # line 229 "awkgram.y" */
|
|
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 66:
|
|
/* # line 230 "awkgram.y" */
|
|
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 67:
|
|
/* # line 231 "awkgram.y" */
|
|
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 68:
|
|
/* # line 232 "awkgram.y" */
|
|
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 69:
|
|
/* # line 233 "awkgram.y" */
|
|
{ yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break;
|
|
case 70:
|
|
/* # line 235 "awkgram.y" */
|
|
{ if (constnode(yypvt[-0].p))
|
|
yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(strnode(yypvt[-0].p), 0));
|
|
else
|
|
yyval.p = op3(yypvt[-1].i, (Node *)1, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 71:
|
|
/* # line 239 "awkgram.y" */
|
|
{ yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break;
|
|
case 72:
|
|
/* # line 240 "awkgram.y" */
|
|
{ yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break;
|
|
case 73:
|
|
/* # line 241 "awkgram.y" */
|
|
{
|
|
if (safe) ERROR "cmd | getline is unsafe" SYNTAX;
|
|
else yyval.p = op3(GETLINE, yypvt[-0].p, (Node*)yypvt[-2].i, yypvt[-3].p); } break;
|
|
case 74:
|
|
/* # line 244 "awkgram.y" */
|
|
{
|
|
if (safe) ERROR "cmd | getline is unsafe" SYNTAX;
|
|
else yyval.p = op3(GETLINE, (Node*)0, (Node*)yypvt[-1].i, yypvt[-2].p); } break;
|
|
case 75:
|
|
/* # line 247 "awkgram.y" */
|
|
{ yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break;
|
|
case 78:
|
|
/* # line 253 "awkgram.y" */
|
|
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 79:
|
|
/* # line 254 "awkgram.y" */
|
|
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 81:
|
|
/* # line 259 "awkgram.y" */
|
|
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 82:
|
|
/* # line 263 "awkgram.y" */
|
|
{ yyval.p = rectonode(); } break;
|
|
case 84:
|
|
/* # line 265 "awkgram.y" */
|
|
{ yyval.p = yypvt[-1].p; } break;
|
|
case 93:
|
|
/* # line 282 "awkgram.y" */
|
|
{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypvt[-0].s, 0)); } break;
|
|
case 94:
|
|
/* # line 283 "awkgram.y" */
|
|
{ yyval.p = op1(NOT, notnull(yypvt[-0].p)); } break;
|
|
case 95:
|
|
/* # line 287 "awkgram.y" */
|
|
{startreg();} break;
|
|
case 96:
|
|
/* # line 287 "awkgram.y" */
|
|
{ yyval.s = yypvt[-1].s; } break;
|
|
case 99:
|
|
/* # line 295 "awkgram.y" */
|
|
{
|
|
if (safe) ERROR "print | is unsafe" SYNTAX;
|
|
else yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
|
|
case 100:
|
|
/* # line 298 "awkgram.y" */
|
|
{
|
|
if (safe) ERROR "print >> is unsafe" SYNTAX;
|
|
else yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
|
|
case 101:
|
|
/* # line 301 "awkgram.y" */
|
|
{
|
|
if (safe) ERROR "print > is unsafe" SYNTAX;
|
|
else yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
|
|
case 102:
|
|
/* # line 304 "awkgram.y" */
|
|
{ yyval.p = stat3(yypvt[-1].i, yypvt[-0].p, NIL, NIL); } break;
|
|
case 103:
|
|
/* # line 305 "awkgram.y" */
|
|
{ yyval.p = stat2(DELETE, makearr(yypvt[-3].p), yypvt[-1].p); } break;
|
|
case 104:
|
|
/* # line 306 "awkgram.y" */
|
|
{ yyval.p = stat2(DELETE, makearr(yypvt[-0].p), 0); } break;
|
|
case 105:
|
|
/* # line 307 "awkgram.y" */
|
|
{ yyval.p = exptostat(yypvt[-0].p); } break;
|
|
case 106:
|
|
/* # line 308 "awkgram.y" */
|
|
{ yyclearin; ERROR "illegal statement" SYNTAX; } break;
|
|
case 109:
|
|
/* # line 317 "awkgram.y" */
|
|
{ if (!inloop) ERROR "break illegal outside of loops" SYNTAX;
|
|
yyval.p = stat1(BREAK, NIL); } break;
|
|
case 110:
|
|
/* # line 319 "awkgram.y" */
|
|
{ yyval.p = stat1(CLOSE, yypvt[-1].p); } break;
|
|
case 111:
|
|
/* # line 320 "awkgram.y" */
|
|
{ if (!inloop) ERROR "continue illegal outside of loops" SYNTAX;
|
|
yyval.p = stat1(CONTINUE, NIL); } break;
|
|
case 112:
|
|
/* # line 322 "awkgram.y" */
|
|
{inloop++;} break;
|
|
case 113:
|
|
/* # line 322 "awkgram.y" */
|
|
{--inloop;} break;
|
|
case 114:
|
|
/* # line 323 "awkgram.y" */
|
|
{ yyval.p = stat2(DO, yypvt[-6].p, notnull(yypvt[-2].p)); } break;
|
|
case 115:
|
|
/* # line 324 "awkgram.y" */
|
|
{ yyval.p = stat1(EXIT, yypvt[-1].p); } break;
|
|
case 116:
|
|
/* # line 325 "awkgram.y" */
|
|
{ yyval.p = stat1(EXIT, NIL); } break;
|
|
case 118:
|
|
/* # line 327 "awkgram.y" */
|
|
{ yyval.p = stat3(IF, yypvt[-3].p, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 119:
|
|
/* # line 328 "awkgram.y" */
|
|
{ yyval.p = stat3(IF, yypvt[-1].p, yypvt[-0].p, NIL); } break;
|
|
case 120:
|
|
/* # line 329 "awkgram.y" */
|
|
{ yyval.p = yypvt[-1].p; } break;
|
|
case 121:
|
|
/* # line 330 "awkgram.y" */
|
|
{ if (infunc)
|
|
ERROR "next is illegal inside a function" SYNTAX;
|
|
yyval.p = stat1(NEXT, NIL); } break;
|
|
case 122:
|
|
/* # line 333 "awkgram.y" */
|
|
{ if (infunc)
|
|
ERROR "nextfile is illegal inside a function" SYNTAX;
|
|
yyval.p = stat1(NEXTFILE, NIL); } break;
|
|
case 123:
|
|
/* # line 336 "awkgram.y" */
|
|
{ yyval.p = stat1(RETURN, yypvt[-1].p); } break;
|
|
case 124:
|
|
/* # line 337 "awkgram.y" */
|
|
{ yyval.p = stat1(RETURN, NIL); } break;
|
|
case 126:
|
|
/* # line 339 "awkgram.y" */
|
|
{inloop++;} break;
|
|
case 127:
|
|
/* # line 339 "awkgram.y" */
|
|
{ --inloop; yyval.p = stat2(WHILE, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 128:
|
|
/* # line 340 "awkgram.y" */
|
|
{ yyval.p = 0; } break;
|
|
case 130:
|
|
/* # line 345 "awkgram.y" */
|
|
{ yyval.p = linkum(yypvt[-1].p, yypvt[-0].p); } break;
|
|
case 133:
|
|
/* # line 353 "awkgram.y" */
|
|
{ yyval.p = op2(ADD, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 134:
|
|
/* # line 354 "awkgram.y" */
|
|
{ yyval.p = op2(MINUS, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 135:
|
|
/* # line 355 "awkgram.y" */
|
|
{ yyval.p = op2(MULT, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 136:
|
|
/* # line 356 "awkgram.y" */
|
|
{ yyval.p = op2(DIVIDE, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 137:
|
|
/* # line 357 "awkgram.y" */
|
|
{ yyval.p = op2(MOD, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 138:
|
|
/* # line 358 "awkgram.y" */
|
|
{ yyval.p = op2(POWER, yypvt[-2].p, yypvt[-0].p); } break;
|
|
case 139:
|
|
/* # line 359 "awkgram.y" */
|
|
{ yyval.p = op1(UMINUS, yypvt[-0].p); } break;
|
|
case 140:
|
|
/* # line 360 "awkgram.y" */
|
|
{ yyval.p = yypvt[-0].p; } break;
|
|
case 141:
|
|
/* # line 361 "awkgram.y" */
|
|
{ yyval.p = op1(NOT, notnull(yypvt[-0].p)); } break;
|
|
case 142:
|
|
/* # line 362 "awkgram.y" */
|
|
{ yyval.p = op2(BLTIN, (Node *) yypvt[-2].i, rectonode()); } break;
|
|
case 143:
|
|
/* # line 363 "awkgram.y" */
|
|
{ yyval.p = op2(BLTIN, (Node *) yypvt[-3].i, yypvt[-1].p); } break;
|
|
case 144:
|
|
/* # line 364 "awkgram.y" */
|
|
{ yyval.p = op2(BLTIN, (Node *) yypvt[-0].i, rectonode()); } break;
|
|
case 145:
|
|
/* # line 365 "awkgram.y" */
|
|
{ yyval.p = op2(CALL, celltonode(yypvt[-2].cp,CVAR), NIL); } break;
|
|
case 146:
|
|
/* # line 366 "awkgram.y" */
|
|
{ yyval.p = op2(CALL, celltonode(yypvt[-3].cp,CVAR), yypvt[-1].p); } break;
|
|
case 147:
|
|
/* # line 367 "awkgram.y" */
|
|
{ yyval.p = op1(PREDECR, yypvt[-0].p); } break;
|
|
case 148:
|
|
/* # line 368 "awkgram.y" */
|
|
{ yyval.p = op1(PREINCR, yypvt[-0].p); } break;
|
|
case 149:
|
|
/* # line 369 "awkgram.y" */
|
|
{ yyval.p = op1(POSTDECR, yypvt[-1].p); } break;
|
|
case 150:
|
|
/* # line 370 "awkgram.y" */
|
|
{ yyval.p = op1(POSTINCR, yypvt[-1].p); } break;
|
|
case 151:
|
|
/* # line 371 "awkgram.y" */
|
|
{ yyval.p = op3(GETLINE, yypvt[-2].p, (Node *)yypvt[-1].i, yypvt[-0].p); } break;
|
|
case 152:
|
|
/* # line 372 "awkgram.y" */
|
|
{ yyval.p = op3(GETLINE, NIL, (Node *)yypvt[-1].i, yypvt[-0].p); } break;
|
|
case 153:
|
|
/* # line 373 "awkgram.y" */
|
|
{ yyval.p = op3(GETLINE, yypvt[-0].p, NIL, NIL); } break;
|
|
case 154:
|
|
/* # line 374 "awkgram.y" */
|
|
{ yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
|
|
case 155:
|
|
/* # line 376 "awkgram.y" */
|
|
{ yyval.p = op2(INDEX, yypvt[-3].p, yypvt[-1].p); } break;
|
|
case 156:
|
|
/* # line 378 "awkgram.y" */
|
|
{ ERROR "index() doesn't permit regular expressions" SYNTAX;
|
|
yyval.p = op2(INDEX, yypvt[-3].p, (Node*)yypvt[-1].s); } break;
|
|
case 157:
|
|
/* # line 380 "awkgram.y" */
|
|
{ yyval.p = yypvt[-1].p; } break;
|
|
case 158:
|
|
/* # line 382 "awkgram.y" */
|
|
{ yyval.p = op3(MATCHFCN, NIL, yypvt[-3].p, (Node*)makedfa(yypvt[-1].s, 1)); } break;
|
|
case 159:
|
|
/* # line 384 "awkgram.y" */
|
|
{ if (constnode(yypvt[-1].p))
|
|
yyval.p = op3(MATCHFCN, NIL, yypvt[-3].p, (Node*)makedfa(strnode(yypvt[-1].p), 1));
|
|
else
|
|
yyval.p = op3(MATCHFCN, (Node *)1, yypvt[-3].p, yypvt[-1].p); } break;
|
|
case 160:
|
|
/* # line 388 "awkgram.y" */
|
|
{ yyval.p = celltonode(yypvt[-0].cp, CCON); } break;
|
|
case 161:
|
|
/* # line 390 "awkgram.y" */
|
|
{ yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), yypvt[-1].p, (Node*)STRING); } break;
|
|
case 162:
|
|
/* # line 392 "awkgram.y" */
|
|
{ yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), (Node*)makedfa(yypvt[-1].s, 1), (Node *)REGEXPR); } break;
|
|
case 163:
|
|
/* # line 394 "awkgram.y" */
|
|
{ yyval.p = op4(SPLIT, yypvt[-3].p, makearr(yypvt[-1].p), NIL, (Node*)STRING); } break;
|
|
case 164:
|
|
/* # line 395 "awkgram.y" */
|
|
{ yyval.p = op1(yypvt[-3].i, yypvt[-1].p); } break;
|
|
case 165:
|
|
/* # line 396 "awkgram.y" */
|
|
{ yyval.p = celltonode(yypvt[-0].cp, CCON); } break;
|
|
case 166:
|
|
/* # line 398 "awkgram.y" */
|
|
{ yyval.p = op4(yypvt[-5].i, NIL, (Node*)makedfa(yypvt[-3].s, 1), yypvt[-1].p, rectonode()); } break;
|
|
case 167:
|
|
/* # line 400 "awkgram.y" */
|
|
{ if (constnode(yypvt[-3].p))
|
|
yyval.p = op4(yypvt[-5].i, NIL, (Node*)makedfa(strnode(yypvt[-3].p), 1), yypvt[-1].p, rectonode());
|
|
else
|
|
yyval.p = op4(yypvt[-5].i, (Node *)1, yypvt[-3].p, yypvt[-1].p, rectonode()); } break;
|
|
case 168:
|
|
/* # line 405 "awkgram.y" */
|
|
{ yyval.p = op4(yypvt[-7].i, NIL, (Node*)makedfa(yypvt[-5].s, 1), yypvt[-3].p, yypvt[-1].p); } break;
|
|
case 169:
|
|
/* # line 407 "awkgram.y" */
|
|
{ if (constnode(yypvt[-5].p))
|
|
yyval.p = op4(yypvt[-7].i, NIL, (Node*)makedfa(strnode(yypvt[-5].p), 1), yypvt[-3].p, yypvt[-1].p);
|
|
else
|
|
yyval.p = op4(yypvt[-7].i, (Node *)1, yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
|
|
case 170:
|
|
/* # line 412 "awkgram.y" */
|
|
{ yyval.p = op3(SUBSTR, yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
|
|
case 171:
|
|
/* # line 414 "awkgram.y" */
|
|
{ yyval.p = op3(SUBSTR, yypvt[-3].p, yypvt[-1].p, NIL); } break;
|
|
case 174:
|
|
/* # line 420 "awkgram.y" */
|
|
{ yyval.p = op2(ARRAY, makearr(yypvt[-3].p), yypvt[-1].p); } break;
|
|
case 175:
|
|
/* # line 421 "awkgram.y" */
|
|
{ yyval.p = op1(INDIRECT, celltonode(yypvt[-0].cp, CVAR)); } break;
|
|
case 176:
|
|
/* # line 422 "awkgram.y" */
|
|
{ yyval.p = op1(INDIRECT, yypvt[-0].p); } break;
|
|
case 177:
|
|
/* # line 426 "awkgram.y" */
|
|
{ arglist = yyval.p = 0; } break;
|
|
case 178:
|
|
/* # line 427 "awkgram.y" */
|
|
{ arglist = yyval.p = celltonode(yypvt[-0].cp,CVAR); } break;
|
|
case 179:
|
|
/* # line 428 "awkgram.y" */
|
|
{
|
|
checkdup(yypvt[-2].p, yypvt[-0].cp);
|
|
arglist = yyval.p = linkum(yypvt[-2].p,celltonode(yypvt[-0].cp,CVAR)); } break;
|
|
case 180:
|
|
/* # line 434 "awkgram.y" */
|
|
{ yyval.p = celltonode(yypvt[-0].cp, CVAR); } break;
|
|
case 181:
|
|
/* # line 435 "awkgram.y" */
|
|
{ yyval.p = op1(ARG, (Node *) yypvt[-0].i); } break;
|
|
case 182:
|
|
/* # line 436 "awkgram.y" */
|
|
{ yyval.p = op1(VARNF, (Node *) yypvt[-0].cp); } break;
|
|
case 183:
|
|
/* # line 441 "awkgram.y" */
|
|
{ yyval.p = notnull(yypvt[-1].p); } break;
|
|
}
|
|
goto yystack; /* reset registers in driver code */
|
|
}
|
|
|
|
# ifdef __RUNTIME_YYMAXDEPTH
|
|
|
|
static int allocate_stacks() {
|
|
/* allocate the yys and yyv stacks */
|
|
yys = (int *) malloc(yymaxdepth * sizeof(int));
|
|
yyv = (YYSTYPE *) malloc(yymaxdepth * sizeof(YYSTYPE));
|
|
|
|
if (yys==0 || yyv==0) {
|
|
yyerror( (nl_msg(30004,"unable to allocate space for yacc stacks")) );
|
|
return(1);
|
|
}
|
|
else return(0);
|
|
|
|
}
|
|
|
|
|
|
static void free_stacks() {
|
|
if (yys!=0) free((char *) yys);
|
|
if (yyv!=0) free((char *) yyv);
|
|
}
|
|
|
|
# endif /* defined(__RUNTIME_YYMAXDEPTH) */
|