1/* A Bison parser, made by GNU Bison 2.0.  */
2
3/* Skeleton parser for Yacc-like parsing with Bison,
4   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software
18   Foundation, Inc., 59 Temple Place - Suite 330,
19   Boston, MA 02111-1307, USA.  */
20
21/* As a special exception, when this file is copied by Bison into a
22   Bison output file, you may use that output file without restriction.
23   This special exception was added by the Free Software Foundation
24   in version 1.24 of Bison.  */
25
26/* Written by Richard Stallman by simplifying the original so called
27   ``semantic'' parser.  */
28
29/* All symbols defined below should begin with yy or YY, to avoid
30   infringing on user name space.  This should be done even for local
31   variables, as they might otherwise be expanded by user macros.
32   There are some unavoidable exceptions within include files to
33   define necessary library symbols; they are noted "INFRINGES ON
34   USER NAME SPACE" below.  */
35
36/* Identify Bison output.  */
37#define YYBISON 1
38
39/* Skeleton name.  */
40#define YYSKELETON_NAME "yacc.c"
41
42/* Pure parsers.  */
43#define YYPURE 0
44
45/* Using locations.  */
46#define YYLSP_NEEDED 0
47
48
49
50/* Tokens.  */
51#ifndef YYTOKENTYPE
52# define YYTOKENTYPE
53   /* Put the tokens into the symbol table, so that GDB and other debuggers
54      know about them.  */
55   enum yytokentype {
56     FIRSTTOKEN = 258,
57     PROGRAM = 259,
58     PASTAT = 260,
59     PASTAT2 = 261,
60     XBEGIN = 262,
61     XEND = 263,
62     NL = 264,
63     ARRAY = 265,
64     MATCH = 266,
65     NOTMATCH = 267,
66     MATCHOP = 268,
67     FINAL = 269,
68     DOT = 270,
69     ALL = 271,
70     CCL = 272,
71     NCCL = 273,
72     CHAR = 274,
73     OR = 275,
74     STAR = 276,
75     QUEST = 277,
76     PLUS = 278,
77     EMPTYRE = 279,
78     AND = 280,
79     BOR = 281,
80     APPEND = 282,
81     EQ = 283,
82     GE = 284,
83     GT = 285,
84     LE = 286,
85     LT = 287,
86     NE = 288,
87     IN = 289,
88     ARG = 290,
89     BLTIN = 291,
90     BREAK = 292,
91     CLOSE = 293,
92     CONTINUE = 294,
93     DELETE = 295,
94     DO = 296,
95     EXIT = 297,
96     FOR = 298,
97     FUNC = 299,
98     SUB = 300,
99     GSUB = 301,
100     IF = 302,
101     INDEX = 303,
102     LSUBSTR = 304,
103     MATCHFCN = 305,
104     NEXT = 306,
105     NEXTFILE = 307,
106     ADD = 308,
107     MINUS = 309,
108     MULT = 310,
109     DIVIDE = 311,
110     MOD = 312,
111     ASSIGN = 313,
112     ASGNOP = 314,
113     ADDEQ = 315,
114     SUBEQ = 316,
115     MULTEQ = 317,
116     DIVEQ = 318,
117     MODEQ = 319,
118     POWEQ = 320,
119     PRINT = 321,
120     PRINTF = 322,
121     SPRINTF = 323,
122     ELSE = 324,
123     INTEST = 325,
124     CONDEXPR = 326,
125     POSTINCR = 327,
126     PREINCR = 328,
127     POSTDECR = 329,
128     PREDECR = 330,
129     VAR = 331,
130     IVAR = 332,
131     VARNF = 333,
132     CALL = 334,
133     NUMBER = 335,
134     STRING = 336,
135     REGEXPR = 337,
136     GETLINE = 338,
137     SUBSTR = 339,
138     SPLIT = 340,
139     RETURN = 341,
140     WHILE = 342,
141     CAT = 343,
142     UMINUS = 344,
143     NOT = 345,
144     POWER = 346,
145     INCR = 347,
146     DECR = 348,
147     INDIRECT = 349,
148     LASTTOKEN = 350
149   };
150#endif
151#define FIRSTTOKEN 258
152#define PROGRAM 259
153#define PASTAT 260
154#define PASTAT2 261
155#define XBEGIN 262
156#define XEND 263
157#define NL 264
158#define ARRAY 265
159#define MATCH 266
160#define NOTMATCH 267
161#define MATCHOP 268
162#define FINAL 269
163#define DOT 270
164#define ALL 271
165#define CCL 272
166#define NCCL 273
167#define CHAR 274
168#define OR 275
169#define STAR 276
170#define QUEST 277
171#define PLUS 278
172#define EMPTYRE 279
173#define AND 280
174#define BOR 281
175#define APPEND 282
176#define EQ 283
177#define GE 284
178#define GT 285
179#define LE 286
180#define LT 287
181#define NE 288
182#define IN 289
183#define ARG 290
184#define BLTIN 291
185#define BREAK 292
186#define CLOSE 293
187#define CONTINUE 294
188#define DELETE 295
189#define DO 296
190#define EXIT 297
191#define FOR 298
192#define FUNC 299
193#define SUB 300
194#define GSUB 301
195#define IF 302
196#define INDEX 303
197#define LSUBSTR 304
198#define MATCHFCN 305
199#define NEXT 306
200#define NEXTFILE 307
201#define ADD 308
202#define MINUS 309
203#define MULT 310
204#define DIVIDE 311
205#define MOD 312
206#define ASSIGN 313
207#define ASGNOP 314
208#define ADDEQ 315
209#define SUBEQ 316
210#define MULTEQ 317
211#define DIVEQ 318
212#define MODEQ 319
213#define POWEQ 320
214#define PRINT 321
215#define PRINTF 322
216#define SPRINTF 323
217#define ELSE 324
218#define INTEST 325
219#define CONDEXPR 326
220#define POSTINCR 327
221#define PREINCR 328
222#define POSTDECR 329
223#define PREDECR 330
224#define VAR 331
225#define IVAR 332
226#define VARNF 333
227#define CALL 334
228#define NUMBER 335
229#define STRING 336
230#define REGEXPR 337
231#define GETLINE 338
232#define SUBSTR 339
233#define SPLIT 340
234#define RETURN 341
235#define WHILE 342
236#define CAT 343
237#define UMINUS 344
238#define NOT 345
239#define POWER 346
240#define INCR 347
241#define DECR 348
242#define INDIRECT 349
243#define LASTTOKEN 350
244
245
246
247
248/* Copy the first part of user declarations.  */
249#line 25 "awkgram.y"
250
251#include <stdio.h>
252#include <string.h>
253#include "awk.h"
254
255void checkdup(Node *list, Cell *item);
256int yywrap(void) { return(1); }
257
258Node	*beginloc = 0;
259Node	*endloc = 0;
260int	infunc	= 0;	/* = 1 if in arglist or body of func */
261int	inloop	= 0;	/* = 1 if in while, for, do */
262char	*curfname = 0;	/* current function name */
263Node	*arglist = 0;	/* list of args for current function */
264
265
266/* Enabling traces.  */
267#ifndef YYDEBUG
268# define YYDEBUG 0
269#endif
270
271/* Enabling verbose error messages.  */
272#ifdef YYERROR_VERBOSE
273# undef YYERROR_VERBOSE
274# define YYERROR_VERBOSE 1
275#else
276# define YYERROR_VERBOSE 0
277#endif
278
279#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
280#line 41 "awkgram.y"
281typedef union YYSTYPE {
282	Node	*p;
283	Cell	*cp;
284	int	i;
285	char	*s;
286} YYSTYPE;
287/* Line 190 of yacc.c.  */
288#line 289 "y.tab.c"
289# define yystype YYSTYPE /* obsolescent; will be withdrawn */
290# define YYSTYPE_IS_DECLARED 1
291# define YYSTYPE_IS_TRIVIAL 1
292#endif
293
294
295
296/* Copy the second part of user declarations.  */
297
298
299/* Line 213 of yacc.c.  */
300#line 301 "y.tab.c"
301
302#if ! defined (yyoverflow) || YYERROR_VERBOSE
303
304# ifndef YYFREE
305#  define YYFREE free
306# endif
307# ifndef YYMALLOC
308#  define YYMALLOC malloc
309# endif
310
311/* The parser invokes alloca or malloc; define the necessary symbols.  */
312
313# ifdef YYSTACK_USE_ALLOCA
314#  if YYSTACK_USE_ALLOCA
315#   ifdef __GNUC__
316#    define YYSTACK_ALLOC __builtin_alloca
317#   else
318#    define YYSTACK_ALLOC alloca
319#   endif
320#  endif
321# endif
322
323# ifdef YYSTACK_ALLOC
324   /* Pacify GCC's `empty if-body' warning. */
325#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
326# else
327#  if defined (__STDC__) || defined (__cplusplus)
328#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
329#   define YYSIZE_T size_t
330#  endif
331#  define YYSTACK_ALLOC YYMALLOC
332#  define YYSTACK_FREE YYFREE
333# endif
334#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
335
336
337#if (! defined (yyoverflow) \
338     && (! defined (__cplusplus) \
339	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
340
341/* A type that is properly aligned for any stack member.  */
342union yyalloc
343{
344  short int yyss;
345  YYSTYPE yyvs;
346  };
347
348/* The size of the maximum gap between one aligned stack and the next.  */
349# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
350
351/* The size of an array large to enough to hold all stacks, each with
352   N elements.  */
353# define YYSTACK_BYTES(N) \
354     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
355      + YYSTACK_GAP_MAXIMUM)
356
357/* Copy COUNT objects from FROM to TO.  The source and destination do
358   not overlap.  */
359# ifndef YYCOPY
360#  if defined (__GNUC__) && 1 < __GNUC__
361#   define YYCOPY(To, From, Count) \
362      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
363#  else
364#   define YYCOPY(To, From, Count)		\
365      do					\
366	{					\
367	  register YYSIZE_T yyi;		\
368	  for (yyi = 0; yyi < (Count); yyi++)	\
369	    (To)[yyi] = (From)[yyi];		\
370	}					\
371      while (0)
372#  endif
373# endif
374
375/* Relocate STACK from its old location to the new one.  The
376   local variables YYSIZE and YYSTACKSIZE give the old and new number of
377   elements in the stack, and YYPTR gives the new location of the
378   stack.  Advance YYPTR to a properly aligned location for the next
379   stack.  */
380# define YYSTACK_RELOCATE(Stack)					\
381    do									\
382      {									\
383	YYSIZE_T yynewbytes;						\
384	YYCOPY (&yyptr->Stack, Stack, yysize);				\
385	Stack = &yyptr->Stack;						\
386	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
387	yyptr += yynewbytes / sizeof (*yyptr);				\
388      }									\
389    while (0)
390
391#endif
392
393#if defined (__STDC__) || defined (__cplusplus)
394   typedef signed char yysigned_char;
395#else
396   typedef short int yysigned_char;
397#endif
398
399/* YYFINAL -- State number of the termination state. */
400#define YYFINAL  8
401/* YYLAST -- Last index in YYTABLE.  */
402#define YYLAST   4600
403
404/* YYNTOKENS -- Number of terminals. */
405#define YYNTOKENS  112
406/* YYNNTS -- Number of nonterminals. */
407#define YYNNTS  49
408/* YYNRULES -- Number of rules. */
409#define YYNRULES  185
410/* YYNRULES -- Number of states. */
411#define YYNSTATES  367
412
413/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
414#define YYUNDEFTOK  2
415#define YYMAXUTOK   350
416
417#define YYTRANSLATE(YYX) 						\
418  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
419
420/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
421static const unsigned char yytranslate[] =
422{
423       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
424       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
425       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
426       2,     2,     2,     2,     2,     2,     2,   104,     2,     2,
427      12,    16,   103,   101,     9,   102,     2,    15,     2,     2,
428       2,     2,     2,     2,     2,     2,     2,     2,    94,    14,
429       2,     2,     2,    93,     2,     2,     2,     2,     2,     2,
430       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
431       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
432       2,    18,     2,    19,     2,     2,     2,     2,     2,     2,
433       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
434       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
435       2,     2,     2,    11,    13,    17,     2,     2,     2,     2,
436       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
437       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
438       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
439       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
440       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
441       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
442       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
443       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
444       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
445       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
446       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
447       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
448       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
449       5,     6,     7,     8,    10,    20,    21,    22,    23,    24,
450      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
451      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
452      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
453      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
454      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
455      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
456      85,    86,    87,    88,    89,    90,    91,    92,    95,    96,
457      97,    98,    99,   100,   105,   106,   107,   108,   109,   110,
458     111
459};
460
461#if YYDEBUG
462/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
463   YYRHS.  */
464static const unsigned short int yyprhs[] =
465{
466       0,     0,     3,     5,     7,     9,    12,    14,    17,    19,
467      22,    24,    27,    29,    32,    33,    46,    47,    58,    59,
468      68,    70,    72,    77,    79,    82,    84,    87,    88,    90,
469      91,    93,    94,    96,    98,   102,   104,   106,   111,   115,
470     122,   126,   131,   136,   137,   147,   149,   153,   155,   159,
471     163,   169,   173,   177,   181,   185,   189,   195,   198,   200,
472     202,   206,   212,   216,   220,   224,   228,   232,   236,   240,
473     244,   248,   252,   256,   262,   267,   271,   274,   276,   278,
474     282,   286,   288,   292,   293,   295,   299,   301,   303,   305,
475     307,   310,   313,   315,   318,   320,   323,   324,   329,   331,
476     334,   339,   344,   349,   352,   358,   361,   363,   365,   367,
477     370,   373,   376,   377,   378,   388,   392,   395,   397,   402,
478     405,   409,   412,   415,   419,   422,   425,   426,   430,   433,
479     435,   438,   440,   442,   447,   451,   455,   459,   463,   467,
480     471,   474,   477,   480,   484,   489,   491,   495,   500,   503,
481     506,   509,   512,   515,   520,   524,   527,   529,   536,   543,
482     547,   554,   561,   563,   572,   581,   588,   593,   595,   602,
483     609,   618,   627,   636,   643,   645,   647,   652,   654,   657,
484     658,   660,   664,   666,   668,   670
485};
486
487/* YYRHS -- A `-1'-separated list of the rules' RHS. */
488static const short int yyrhs[] =
489{
490     113,     0,    -1,   130,    -1,     1,    -1,    35,    -1,   114,
491      10,    -1,    36,    -1,   115,    10,    -1,     9,    -1,   116,
492      10,    -1,    51,    -1,   117,    10,    -1,    79,    -1,   118,
493      10,    -1,    -1,    53,    12,   129,    14,   127,   137,    14,
494     127,   129,   147,   120,   150,    -1,    -1,    53,    12,   129,
495      14,    14,   127,   129,   147,   121,   150,    -1,    -1,    53,
496      12,   159,    44,   159,   147,   122,   150,    -1,    86,    -1,
497      89,    -1,    57,    12,   137,   147,    -1,    11,    -1,   125,
498      10,    -1,    10,    -1,   126,    10,    -1,    -1,   126,    -1,
499      -1,   142,    -1,    -1,   148,    -1,   128,    -1,   128,   134,
500     128,    -1,   137,    -1,   131,    -1,   131,   125,   154,    17,
501      -1,   131,     9,   131,    -1,   131,     9,   131,   125,   154,
502      17,    -1,   125,   154,    17,    -1,     7,   125,   154,    17,
503      -1,     8,   125,   154,    17,    -1,    -1,    54,   123,    12,
504     158,   147,   133,   125,   154,    17,    -1,   132,    -1,   134,
505     128,   132,    -1,   137,    -1,   135,   116,   137,    -1,   157,
506      69,   136,    -1,   136,    93,   136,    94,   136,    -1,   136,
507     115,   136,    -1,   136,   114,   136,    -1,   136,    23,   145,
508      -1,   136,    23,   136,    -1,   136,    44,   159,    -1,    12,
509     138,    16,    44,   159,    -1,   136,   156,    -1,   144,    -1,
510     156,    -1,   157,    69,   137,    -1,   137,    93,   137,    94,
511     137,    -1,   137,   115,   137,    -1,   137,   114,   137,    -1,
512     137,    38,   137,    -1,   137,    39,   137,    -1,   137,    40,
513     137,    -1,   137,    41,   137,    -1,   137,    42,   137,    -1,
514     137,    43,   137,    -1,   137,    23,   145,    -1,   137,    23,
515     137,    -1,   137,    44,   159,    -1,    12,   138,    16,    44,
516     159,    -1,   137,    13,    95,   157,    -1,   137,    13,    95,
517      -1,   137,   156,    -1,   144,    -1,   156,    -1,   137,   116,
518     137,    -1,   138,   116,   137,    -1,   136,    -1,   139,   116,
519     136,    -1,    -1,   139,    -1,    12,   138,    16,    -1,    76,
520      -1,    77,    -1,    10,    -1,    14,    -1,   142,    10,    -1,
521     142,    14,    -1,    17,    -1,   143,    10,    -1,   145,    -1,
522     106,   144,    -1,    -1,    15,   146,    92,    15,    -1,    16,
523      -1,   147,    10,    -1,   141,   140,    13,   156,    -1,   141,
524     140,    37,   156,    -1,   141,   140,    40,   156,    -1,   141,
525     140,    -1,    50,   159,    18,   135,    19,    -1,    50,   159,
526      -1,   137,    -1,     1,    -1,   126,    -1,    14,   127,    -1,
527      47,   149,    -1,    49,   149,    -1,    -1,    -1,   117,   151,
528     150,   152,    99,    12,   137,    16,   149,    -1,    52,   137,
529     149,    -1,    52,   149,    -1,   119,    -1,   124,   150,   118,
530     150,    -1,   124,   150,    -1,   125,   154,   143,    -1,    61,
531     149,    -1,    62,   149,    -1,    98,   137,   149,    -1,    98,
532     149,    -1,   148,   149,    -1,    -1,   160,   153,   150,    -1,
533      14,   127,    -1,   150,    -1,   154,   150,    -1,    55,    -1,
534      56,    -1,   156,    15,    69,   156,    -1,   156,   101,   156,
535      -1,   156,   102,   156,    -1,   156,   103,   156,    -1,   156,
536      15,   156,    -1,   156,   104,   156,    -1,   156,   107,   156,
537      -1,   102,   156,    -1,   101,   156,    -1,   106,   156,    -1,
538      46,    12,    16,    -1,    46,    12,   135,    16,    -1,    46,
539      -1,    89,    12,    16,    -1,    89,    12,   135,    16,    -1,
540      48,   156,    -1,   109,   157,    -1,   108,   157,    -1,   157,
541     109,    -1,   157,   108,    -1,    95,   157,    42,   156,    -1,
542      95,    42,   156,    -1,    95,   157,    -1,    95,    -1,    58,
543      12,   137,   116,   137,    16,    -1,    58,    12,   137,   116,
544     145,    16,    -1,    12,   137,    16,    -1,    60,    12,   137,
545     116,   145,    16,    -1,    60,    12,   137,   116,   137,    16,
546      -1,    90,    -1,    97,    12,   137,   116,   159,   116,   137,
547      16,    -1,    97,    12,   137,   116,   159,   116,   145,    16,
548      -1,    97,    12,   137,   116,   159,    16,    -1,    78,    12,
549     135,    16,    -1,    91,    -1,   155,    12,   145,   116,   137,
550      16,    -1,   155,    12,   137,   116,   137,    16,    -1,   155,
551      12,   145,   116,   137,   116,   157,    16,    -1,   155,    12,
552     137,   116,   137,   116,   157,    16,    -1,    96,    12,   137,
553     116,   137,   116,   137,    16,    -1,    96,    12,   137,   116,
554     137,    16,    -1,   157,    -1,   159,    -1,   159,    18,   135,
555      19,    -1,    87,    -1,   110,   156,    -1,    -1,    86,    -1,
556     158,   116,    86,    -1,    86,    -1,    45,    -1,    88,    -1,
557      99,    12,   137,   147,    -1
558};
559
560/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
561static const unsigned short int yyrline[] =
562{
563       0,    98,    98,   100,   104,   104,   108,   108,   112,   112,
564     116,   116,   120,   120,   124,   124,   126,   126,   128,   128,
565     133,   134,   138,   142,   142,   146,   146,   150,   151,   155,
566     156,   161,   162,   166,   167,   171,   175,   176,   177,   178,
567     179,   180,   182,   184,   184,   189,   190,   194,   195,   199,
568     200,   202,   204,   206,   207,   212,   213,   214,   215,   216,
569     220,   221,   223,   225,   227,   228,   229,   230,   231,   232,
570     233,   234,   239,   240,   241,   244,   247,   248,   249,   253,
571     254,   258,   259,   263,   264,   265,   269,   269,   273,   273,
572     273,   273,   277,   277,   281,   283,   287,   287,   291,   291,
573     295,   298,   301,   304,   305,   306,   307,   308,   312,   313,
574     317,   319,   321,   321,   321,   323,   324,   325,   326,   327,
575     328,   329,   332,   335,   336,   337,   338,   338,   339,   343,
576     344,   348,   348,   352,   353,   354,   355,   356,   357,   358,
577     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
578     369,   370,   371,   372,   373,   374,   375,   376,   378,   381,
579     382,   384,   389,   390,   392,   394,   396,   397,   398,   400,
580     405,   407,   412,   414,   416,   420,   421,   422,   423,   427,
581     428,   429,   435,   436,   437,   442
582};
583#endif
584
585#if YYDEBUG || YYERROR_VERBOSE
586/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
587   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
588static const char *const yytname[] =
589{
590  "$end", "error", "$undefined", "FIRSTTOKEN", "PROGRAM", "PASTAT",
591  "PASTAT2", "XBEGIN", "XEND", "','", "NL", "'{'", "'('", "'|'", "';'",
592  "'/'", "')'", "'}'", "'['", "']'", "ARRAY", "MATCH", "NOTMATCH",
593  "MATCHOP", "FINAL", "DOT", "ALL", "CCL", "NCCL", "CHAR", "OR", "STAR",
594  "QUEST", "PLUS", "EMPTYRE", "AND", "BOR", "APPEND", "EQ", "GE", "GT",
595  "LE", "LT", "NE", "IN", "ARG", "BLTIN", "BREAK", "CLOSE", "CONTINUE",
596  "DELETE", "DO", "EXIT", "FOR", "FUNC", "SUB", "GSUB", "IF", "INDEX",
597  "LSUBSTR", "MATCHFCN", "NEXT", "NEXTFILE", "ADD", "MINUS", "MULT",
598  "DIVIDE", "MOD", "ASSIGN", "ASGNOP", "ADDEQ", "SUBEQ", "MULTEQ", "DIVEQ",
599  "MODEQ", "POWEQ", "PRINT", "PRINTF", "SPRINTF", "ELSE", "INTEST",
600  "CONDEXPR", "POSTINCR", "PREINCR", "POSTDECR", "PREDECR", "VAR", "IVAR",
601  "VARNF", "CALL", "NUMBER", "STRING", "REGEXPR", "'?'", "':'", "GETLINE",
602  "SUBSTR", "SPLIT", "RETURN", "WHILE", "CAT", "'+'", "'-'", "'*'", "'%'",
603  "UMINUS", "NOT", "POWER", "INCR", "DECR", "INDIRECT", "LASTTOKEN",
604  "$accept", "program", "and", "bor", "comma", "do", "else", "for", "@1",
605  "@2", "@3", "funcname", "if", "lbrace", "nl", "opt_nl", "opt_pst",
606  "opt_simple_stmt", "pas", "pa_pat", "pa_stat", "@4", "pa_stats",
607  "patlist", "ppattern", "pattern", "plist", "pplist", "prarg", "print",
608  "pst", "rbrace", "re", "reg_expr", "@5", "rparen", "simple_stmt", "st",
609  "stmt", "@6", "@7", "@8", "stmtlist", "subop", "term", "var", "varlist",
610  "varname", "while", 0
611};
612#endif
613
614# ifdef YYPRINT
615/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
616   token YYLEX-NUM.  */
617static const unsigned short int yytoknum[] =
618{
619       0,   256,   257,   258,   259,   260,   261,   262,   263,    44,
620     264,   123,    40,   124,    59,    47,    41,   125,    91,    93,
621     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
622     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
623     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
624     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
625     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
626     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
627     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
628     335,   336,   337,    63,    58,   338,   339,   340,   341,   342,
629     343,    43,    45,    42,    37,   344,   345,   346,   347,   348,
630     349,   350
631};
632# endif
633
634/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
635static const unsigned char yyr1[] =
636{
637       0,   112,   113,   113,   114,   114,   115,   115,   116,   116,
638     117,   117,   118,   118,   120,   119,   121,   119,   122,   119,
639     123,   123,   124,   125,   125,   126,   126,   127,   127,   128,
640     128,   129,   129,   130,   130,   131,   132,   132,   132,   132,
641     132,   132,   132,   133,   132,   134,   134,   135,   135,   136,
642     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
643     137,   137,   137,   137,   137,   137,   137,   137,   137,   137,
644     137,   137,   137,   137,   137,   137,   137,   137,   137,   138,
645     138,   139,   139,   140,   140,   140,   141,   141,   142,   142,
646     142,   142,   143,   143,   144,   144,   146,   145,   147,   147,
647     148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
648     150,   150,   151,   152,   150,   150,   150,   150,   150,   150,
649     150,   150,   150,   150,   150,   150,   153,   150,   150,   154,
650     154,   155,   155,   156,   156,   156,   156,   156,   156,   156,
651     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
652     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
653     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
654     156,   156,   156,   156,   156,   157,   157,   157,   157,   158,
655     158,   158,   159,   159,   159,   160
656};
657
658/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
659static const unsigned char yyr2[] =
660{
661       0,     2,     1,     1,     1,     2,     1,     2,     1,     2,
662       1,     2,     1,     2,     0,    12,     0,    10,     0,     8,
663       1,     1,     4,     1,     2,     1,     2,     0,     1,     0,
664       1,     0,     1,     1,     3,     1,     1,     4,     3,     6,
665       3,     4,     4,     0,     9,     1,     3,     1,     3,     3,
666       5,     3,     3,     3,     3,     3,     5,     2,     1,     1,
667       3,     5,     3,     3,     3,     3,     3,     3,     3,     3,
668       3,     3,     3,     5,     4,     3,     2,     1,     1,     3,
669       3,     1,     3,     0,     1,     3,     1,     1,     1,     1,
670       2,     2,     1,     2,     1,     2,     0,     4,     1,     2,
671       4,     4,     4,     2,     5,     2,     1,     1,     1,     2,
672       2,     2,     0,     0,     9,     3,     2,     1,     4,     2,
673       3,     2,     2,     3,     2,     2,     0,     3,     2,     1,
674       2,     1,     1,     4,     3,     3,     3,     3,     3,     3,
675       2,     2,     2,     3,     4,     1,     3,     4,     2,     2,
676       2,     2,     2,     4,     3,     2,     1,     6,     6,     3,
677       6,     6,     1,     8,     8,     6,     4,     1,     6,     6,
678       8,     8,     8,     6,     1,     1,     4,     1,     2,     0,
679       1,     3,     1,     1,     1,     4
680};
681
682/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
683   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
684   means the default is an error.  */
685static const unsigned char yydefact[] =
686{
687       0,     3,    88,    89,     0,    33,     2,    30,     1,     0,
688       0,    23,     0,    96,   183,   145,     0,     0,   131,   132,
689       0,     0,     0,   182,   177,   184,     0,   162,   167,   156,
690       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
691      45,    29,    35,    77,    94,     0,    78,   174,   175,    90,
692      91,     0,     0,     0,     0,     0,     0,     0,     0,   148,
693     174,    20,    21,     0,     0,     0,     0,     0,     0,   155,
694       0,     0,   141,   140,    95,   142,   150,   149,   178,   107,
695      24,    27,     0,     0,     0,    10,     0,     0,     0,     0,
696       0,    86,    87,     0,     0,   112,   117,     0,     0,   106,
697      83,     0,   129,     0,   126,     0,     0,    34,     0,     0,
698       4,     6,     0,     0,     0,     0,     0,     0,     0,     0,
699       0,     0,    76,     0,     0,     0,     0,     0,     0,     0,
700       0,   152,   151,     0,     0,     0,     8,   159,     0,     0,
701       0,     0,   143,     0,    47,     0,   179,     0,     0,     0,
702     146,     0,   154,     0,     0,     0,    25,    28,   128,    27,
703     108,   110,   111,   105,     0,   116,     0,     0,   121,   122,
704       0,   124,     0,    11,     0,   119,     0,     0,    81,    84,
705     103,    58,    59,   174,   125,    40,   130,     0,    38,     0,
706      46,    75,    71,    70,    64,    65,    66,    67,    68,    69,
707      72,     0,     5,    63,     7,    62,     0,    94,     0,   137,
708     134,   135,   136,   138,   139,    60,     0,    41,    42,     9,
709      79,     0,    80,    97,   144,     0,   180,     0,     0,     0,
710     166,   147,   153,     0,     0,    26,   109,     0,   115,     0,
711      32,   175,     0,   123,     0,   113,    12,     0,    92,   120,
712       0,     0,     0,     0,     0,     0,    57,     0,     0,     0,
713       0,     0,   127,     0,    37,    74,     0,     0,     0,   133,
714     176,    73,    48,    98,     0,    43,     0,    94,     0,    94,
715       0,     0,     0,    27,     0,    22,   185,     0,    13,   118,
716      93,    85,     0,    54,    53,    55,     0,    52,    51,    82,
717     100,   101,   102,    49,     0,    61,     0,     0,   181,    99,
718       0,   157,   158,   161,   160,   173,     0,   165,     0,   104,
719      27,     0,     0,     0,     0,     0,     0,    39,   169,     0,
720     168,     0,     0,     0,     0,    94,     0,     0,    18,     0,
721      56,     0,    50,     0,     0,     0,   172,   163,   164,     0,
722      27,     0,     0,   171,   170,    44,    16,     0,    19,     0,
723       0,     0,   114,    17,    14,     0,    15
724};
725
726/* YYDEFGOTO[NTERM-NUM]. */
727static const short int yydefgoto[] =
728{
729      -1,     4,   120,   121,   225,    95,   247,    96,   365,   360,
730     351,    63,    97,    98,   160,   158,     5,   239,     6,    39,
731      40,   310,    41,   143,   178,    99,    54,   179,   180,   100,
732       7,   249,    43,    44,    55,   275,   101,   161,   102,   174,
733     287,   187,   103,    45,    46,    47,   227,    48,   104
734};
735
736/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
737   STATE-NUM.  */
738#define YYPACT_NINF -322
739static const short int yypact[] =
740{
741     680,  -322,  -322,  -322,    25,  1583,  -322,    17,  -322,    34,
742      34,  -322,  4136,  -322,  -322,    39,  4490,    16,  -322,  -322,
743      44,    63,    74,  -322,  -322,  -322,    92,  -322,  -322,   255,
744     102,   133,  4490,  4490,  4195,   -40,   -40,  4490,   811,   113,
745    -322,    55,  3462,  -322,  -322,   143,    -4,   -35,    76,  -322,
746    -322,   811,   811,  1674,    62,   -12,  3959,  4136,  4490,    -4,
747      52,  -322,  -322,   160,  4136,  4136,  4136,  4018,  4490,    83,
748    4136,  4136,    66,    66,  -322,    66,  -322,  -322,  -322,  -322,
749    -322,   176,    82,    82,   -33,  -322,  2198,   188,   190,    82,
750      82,  -322,  -322,  2198,   199,   178,  -322,  1424,   811,  3462,
751    4254,    82,  -322,   879,  -322,  4136,   811,  1583,   117,  4136,
752    -322,  -322,  4136,  4136,  4136,  4136,  4136,  4136,   -33,  4136,
753    2257,  2316,    -4,  4136,  4313,  4490,  4490,  4490,  4490,  4490,
754    4136,  -322,  -322,  4136,   947,  1015,  -322,  -322,  2375,   173,
755    2375,   203,  -322,   124,  3462,  2643,   138,  2038,  2038,   140,
756    -322,   149,    -4,  4490,  2038,  2038,  -322,   217,  -322,   176,
757     217,  -322,  -322,   212,  2139,  -322,  1491,  4136,  -322,  -322,
758    2139,  -322,  4136,  -322,  1424,   152,  1083,  4136,  3841,   223,
759      22,  -322,    -4,    -2,  -322,  -322,  -322,  1424,    34,  1151,
760    -322,   -40,  3713,  -322,  3713,  3713,  3713,  3713,  3713,  3713,
761    -322,  2734,  -322,  3633,  -322,  3553,  2038,   223,  4490,    66,
762     169,   169,    66,    66,    66,  3462,    21,  -322,  -322,  -322,
763    3462,   -33,  3462,  -322,  -322,  2375,  -322,   154,  2375,  2375,
764    -322,  -322,    -4,  2375,    31,  -322,  -322,  4136,  -322,   219,
765    -322,   -11,  2825,  -322,  2825,  -322,  -322,  1220,  -322,   224,
766     155,  4372,   -33,  4372,  2434,  2493,    -4,  2552,  4490,  4490,
767    4490,  4372,  -322,   811,  -322,  -322,  4136,  2375,  2375,    -4,
768    -322,  -322,  3462,  -322,     4,   226,  2916,   230,  3007,   231,
769    1765,   189,    68,   106,   -33,   226,   226,   153,  -322,  -322,
770    -322,   204,  4136,  4431,  -322,  -322,  3772,  4077,  3900,  3841,
771      -4,    -4,    -4,  3841,  1288,  3462,  1856,  1947,  -322,  -322,
772      34,  -322,  -322,  -322,  -322,  -322,  2375,  -322,  2375,  -322,
773     176,  4136,   239,   245,   -33,   192,  4372,  -322,  -322,    56,
774    -322,    56,   811,  3098,  3189,   247,  1558,  3280,   226,  4136,
775    -322,   204,  3841,   250,   258,  1356,  -322,  -322,  -322,   239,
776     176,  1424,  3371,  -322,  -322,  -322,   226,  1558,  -322,    82,
777    1424,   239,  -322,  -322,   226,  1424,  -322
778};
779
780/* YYPGOTO[NTERM-NUM].  */
781static const short int yypgoto[] =
782{
783    -322,  -322,  -146,   -83,   200,  -322,  -322,  -322,  -322,  -322,
784    -322,  -322,  -322,    19,   -80,  -153,   220,  -321,  -322,   174,
785     171,  -322,  -322,   -44,    14,   526,  -174,  -322,  -322,  -322,
786    -322,  -322,   -32,   -60,  -322,  -234,  -162,   -29,   -53,  -322,
787    -322,  -322,   -13,  -322,   269,   -16,  -322,   -75,  -322
788};
789
790/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
791   positive, shift that token.  If negative, reduce the rule which
792   number is the opposite.  If zero, do what YYDEFACT says.
793   If YYTABLE_NINF, syntax error.  */
794#define YYTABLE_NINF -32
795static const short int yytable[] =
796{
797      60,   157,    74,   250,   240,    14,   236,   133,   285,   163,
798     286,   124,    14,    69,   219,   349,    60,    60,    60,    76,
799      77,    60,   149,   151,    38,     8,    60,    49,    51,    52,
800     136,    50,   254,   284,   130,   258,   361,    60,   134,   135,
801     270,   219,    60,   200,   175,    11,    23,    24,    25,   193,
802     186,    56,    60,    23,   162,    25,    64,   165,   106,   259,
803     168,   169,   260,   207,   171,     2,   219,   261,   181,     3,
804      37,   136,   184,   131,   132,    65,    14,   136,   139,   157,
805     141,   186,   186,    60,   183,   176,    66,   319,   338,   216,
806     308,   241,   156,   189,   133,   255,   159,   125,   126,   127,
807     128,    14,    61,   129,    67,    62,   131,   132,    60,    60,
808      60,    60,    60,    60,    70,   356,   156,    23,   325,    25,
809     320,   245,   105,   186,    11,   153,    38,   364,    60,    60,
810     321,    60,    60,   136,   262,   238,   186,    60,    60,    60,
811     224,   243,    23,    24,    25,    71,   271,   254,    60,   136,
812     254,   254,   254,   254,    60,   123,   230,   254,   136,   281,
813     131,   132,    60,   136,   136,   231,    37,   336,   277,   279,
814     273,   291,   146,   129,   240,   265,    60,   295,    60,    60,
815      60,    60,    60,    60,   124,    60,   156,    60,   173,    60,
816      60,   294,    60,   282,   289,   240,   254,   357,   136,    60,
817     166,   136,   167,   157,    60,   317,    60,   263,   341,   322,
818     255,   172,   191,   255,   255,   255,   255,   221,   223,   181,
819     255,   181,   181,   181,   226,   181,    60,   235,    60,   181,
820     237,   246,   136,   283,   290,   183,   309,   183,   183,   183,
821     157,   183,    60,    60,    60,   183,   312,   314,   324,   340,
822     304,   186,   323,   138,   140,   273,    60,   339,   335,   255,
823      60,   107,    60,   348,    60,   293,   353,   296,   297,   298,
824     157,   299,   127,   128,   354,   303,   129,    60,   190,   188,
825      60,    60,    60,    60,     0,    59,     0,    60,     0,    60,
826      60,    60,   186,     0,   181,     0,     0,    68,   358,     0,
827      14,    72,    73,    75,     0,     0,    78,   363,     0,     0,
828     183,   122,   366,   343,     0,   344,     0,    60,    60,   345,
829       0,    60,   122,     0,     0,     0,    60,    75,     0,   332,
830     362,     0,     0,     0,     0,     0,    60,   152,     0,     0,
831     342,    23,    24,    25,     0,     0,     0,   228,   229,     0,
832       0,     0,     0,     0,   233,   234,     0,     0,     0,     0,
833       0,     0,     0,     0,     0,    37,     0,     0,   122,   182,
834       0,     0,     0,     0,     0,     0,     0,     0,     0,   257,
835       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
836       0,     0,     0,   209,   210,   211,   212,   213,   214,     0,
837       0,     0,     0,     0,     0,     0,   267,   268,     0,     0,
838       0,     0,     0,   122,   122,     0,   122,   122,     0,     0,
839       0,     0,   232,   122,   122,     0,     0,   274,     0,     0,
840       0,     0,     0,   122,     0,     0,     0,     0,     0,   122,
841       0,     0,     0,     0,     0,     0,     0,   256,     0,     0,
842     140,     0,     0,     0,     0,     0,     0,     0,     0,     0,
843       0,   122,     0,   122,   122,   122,   122,   122,   122,     0,
844     122,     0,   122,     0,   122,   122,     0,   269,     0,     0,
845     316,   318,     0,     0,   122,     0,     0,     0,     0,   122,
846       0,   122,     0,     0,     0,     0,     0,     0,     0,     0,
847       0,     0,     0,     0,     0,     0,   329,   331,     0,     0,
848       0,   122,     0,   122,     0,     0,     0,     0,     0,     0,
849     182,     0,   182,   182,   182,   140,   182,   300,   301,   302,
850     182,    42,     0,     0,     0,     0,     0,     0,    53,     0,
851       0,   122,     0,     0,     0,   122,     0,   122,     0,   122,
852       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
853       0,     0,   256,     0,     0,   256,   256,   256,   256,     0,
854       0,     0,   256,     0,   122,   122,   122,     0,     0,     0,
855       0,     0,   144,   145,     0,     0,     0,     0,     0,     0,
856     147,   148,   144,   144,     0,   182,   154,   155,     0,     0,
857       0,     0,   122,   122,     0,     0,   122,     0,     0,     0,
858       0,   256,   164,     0,     0,     0,     0,     0,     0,   170,
859       0,   122,     0,     0,     0,     0,     0,     0,     0,     0,
860       0,    42,     0,    42,     0,   192,     0,     0,   194,   195,
861     196,   197,   198,   199,     0,   201,   203,   205,     0,   206,
862       0,     0,     0,     0,     0,     0,   215,     0,     0,   144,
863       0,     0,     0,     0,   220,     0,   222,     0,     0,     0,
864       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
865     -29,     1,     0,     0,     0,     0,     0,   -29,   -29,     0,
866       2,   -29,   -29,   242,     3,   -29,     0,     0,   244,     0,
867       0,     0,     0,    53,     0,     0,     0,     0,     0,     0,
868       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
869       0,     0,     0,     0,     0,   -29,   -29,     0,   -29,     0,
870       0,     0,     0,     0,   -29,   -29,   -29,     0,   -29,     0,
871     -29,     0,     0,     0,     0,     0,     0,     0,     0,     0,
872       0,   272,     0,     0,   276,   278,     0,     0,   -29,   280,
873       0,     0,     0,   144,     0,     0,   -29,   -29,   -29,   -29,
874     -29,   -29,     0,     0,     0,   -29,   -29,   -29,     0,     0,
875       0,   -29,   -29,     0,     0,     0,   -29,     0,   -29,   -29,
876     -29,     0,   305,   306,   307,     0,     0,     0,     0,     0,
877       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
878       0,     0,    79,     0,     0,     0,     0,     0,    53,     0,
879       0,    80,    11,    12,     0,    81,    13,     0,     0,     0,
880       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
881       0,     0,   333,     0,   334,     0,     0,   337,     0,     0,
882       0,     0,     0,     0,     0,     0,    14,    15,    82,    16,
883      83,    84,    85,    86,    87,   352,    18,    19,    88,    20,
884       0,    21,    89,    90,     0,     0,     0,     0,     0,     0,
885      79,     0,     0,     0,     0,     0,     0,    91,    92,    22,
886      11,    12,     0,    81,    13,     0,   185,    23,    24,    25,
887      26,    27,    28,     0,     0,     0,    29,    30,    31,    93,
888      94,     0,    32,    33,     0,     0,     0,    34,     0,    35,
889      36,    37,     0,     0,    14,    15,    82,    16,    83,    84,
890      85,    86,    87,     0,    18,    19,    88,    20,     0,    21,
891      89,    90,     0,     0,     0,     0,     0,     0,    79,     0,
892       0,     0,     0,     0,     0,    91,    92,    22,    11,    12,
893       0,    81,    13,     0,   217,    23,    24,    25,    26,    27,
894      28,     0,     0,     0,    29,    30,    31,    93,    94,     0,
895      32,    33,     0,     0,     0,    34,     0,    35,    36,    37,
896       0,     0,    14,    15,    82,    16,    83,    84,    85,    86,
897      87,     0,    18,    19,    88,    20,     0,    21,    89,    90,
898       0,     0,     0,     0,     0,     0,    79,     0,     0,     0,
899       0,     0,     0,    91,    92,    22,    11,    12,     0,    81,
900      13,     0,   218,    23,    24,    25,    26,    27,    28,     0,
901       0,     0,    29,    30,    31,    93,    94,     0,    32,    33,
902       0,     0,     0,    34,     0,    35,    36,    37,     0,     0,
903      14,    15,    82,    16,    83,    84,    85,    86,    87,     0,
904      18,    19,    88,    20,     0,    21,    89,    90,     0,     0,
905       0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
906       0,    91,    92,    22,    11,    12,     0,    81,    13,     0,
907     248,    23,    24,    25,    26,    27,    28,     0,     0,     0,
908      29,    30,    31,    93,    94,     0,    32,    33,     0,     0,
909       0,    34,     0,    35,    36,    37,     0,     0,    14,    15,
910      82,    16,    83,    84,    85,    86,    87,     0,    18,    19,
911      88,    20,     0,    21,    89,    90,     0,     0,     0,     0,
912       0,     0,    79,     0,     0,     0,     0,     0,     0,    91,
913      92,    22,    11,    12,     0,    81,    13,     0,   264,    23,
914      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
915      31,    93,    94,     0,    32,    33,     0,     0,     0,    34,
916       0,    35,    36,    37,     0,     0,    14,    15,    82,    16,
917      83,    84,    85,    86,    87,     0,    18,    19,    88,    20,
918       0,    21,    89,    90,     0,     0,     0,     0,     0,     0,
919       0,    79,     0,     0,     0,     0,     0,    91,    92,    22,
920     288,    11,    12,     0,    81,    13,     0,    23,    24,    25,
921      26,    27,    28,     0,     0,     0,    29,    30,    31,    93,
922      94,     0,    32,    33,     0,     0,     0,    34,     0,    35,
923      36,    37,     0,     0,     0,    14,    15,    82,    16,    83,
924      84,    85,    86,    87,     0,    18,    19,    88,    20,     0,
925      21,    89,    90,     0,     0,     0,     0,     0,     0,    79,
926       0,     0,     0,     0,     0,     0,    91,    92,    22,    11,
927      12,     0,    81,    13,     0,   327,    23,    24,    25,    26,
928      27,    28,     0,     0,     0,    29,    30,    31,    93,    94,
929       0,    32,    33,     0,     0,     0,    34,     0,    35,    36,
930      37,     0,     0,    14,    15,    82,    16,    83,    84,    85,
931      86,    87,     0,    18,    19,    88,    20,     0,    21,    89,
932      90,     0,     0,     0,     0,     0,     0,    79,     0,     0,
933       0,     0,     0,     0,    91,    92,    22,    11,    12,     0,
934      81,    13,     0,   355,    23,    24,    25,    26,    27,    28,
935       0,     0,     0,    29,    30,    31,    93,    94,     0,    32,
936      33,     0,     0,     0,    34,     0,    35,    36,    37,     0,
937       0,    14,    15,    82,    16,    83,    84,    85,    86,    87,
938       0,    18,    19,    88,    20,     0,    21,    89,    90,     0,
939       0,     0,     0,     0,     0,    79,     0,     0,     0,     0,
940       0,     0,    91,    92,    22,    11,    12,     0,    81,    13,
941       0,     0,    23,    24,    25,    26,    27,    28,     0,     0,
942       0,    29,    30,    31,    93,    94,     0,    32,    33,     0,
943       0,     0,    34,     0,    35,    36,    37,     0,     0,    14,
944      15,    82,    16,    83,    84,    85,    86,    87,     0,    18,
945      19,    88,    20,     0,    21,    89,    90,     0,     0,     0,
946       0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
947      91,    92,    22,    12,     0,   -31,    13,     0,     0,     0,
948      23,    24,    25,    26,    27,    28,     0,     0,     0,    29,
949      30,    31,    93,    94,     0,    32,    33,     0,     0,     0,
950      34,     0,    35,    36,    37,     0,    14,    15,     0,    16,
951       0,    84,     0,     0,     0,     0,    18,    19,     0,    20,
952       0,    21,     0,     0,     0,     0,     0,     0,     0,    79,
953       0,     0,     0,     0,     0,     0,     0,    91,    92,    22,
954      12,     0,     0,    13,   -31,     0,     0,    23,    24,    25,
955      26,    27,    28,     0,     0,     0,    29,    30,    31,     0,
956       9,    10,    32,    33,    11,    12,     0,    34,    13,    35,
957      36,    37,     0,    14,    15,     0,    16,     0,    84,     0,
958       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
959       0,     0,     0,     0,     0,     0,     0,     0,    14,    15,
960       0,    16,     0,     0,    91,    92,    22,    17,    18,    19,
961       0,    20,     0,    21,    23,    24,    25,    26,    27,    28,
962       0,     0,     0,    29,    30,    31,     0,     0,     0,    32,
963      33,    22,     0,     0,    34,     0,    35,    36,    37,    23,
964      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
965      31,     0,     0,   136,    32,    33,    57,   108,     0,    34,
966     137,    35,    36,    37,     0,     0,     0,   109,     0,     0,
967       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
968     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
969      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
970      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
971       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
972       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
973      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
974      30,    31,     0,     0,   136,    32,    33,    57,   108,     0,
975      58,   315,    35,    36,    37,     0,     0,     0,   109,     0,
976       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
977     110,   111,     0,   112,   113,   114,   115,   116,   117,   118,
978      14,    15,     0,    16,     0,     0,     0,     0,     0,     0,
979      18,    19,     0,    20,     0,    21,     0,     0,     0,     0,
980       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
981       0,     0,     0,    22,     0,     0,     0,     0,     0,     0,
982       0,    23,    24,    25,    26,    27,    28,     0,   119,     0,
983      29,    30,    31,     0,     0,   136,    32,    33,    57,   108,
984       0,    58,   328,    35,    36,    37,     0,     0,     0,   109,
985       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
986       0,   110,   111,     0,   112,   113,   114,   115,   116,   117,
987     118,    14,    15,     0,    16,     0,     0,     0,     0,     0,
988       0,    18,    19,     0,    20,     0,    21,     0,     0,     0,
989       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
990       0,     0,     0,     0,    22,     0,     0,     0,     0,     0,
991       0,     0,    23,    24,    25,    26,    27,    28,     0,   119,
992       0,    29,    30,    31,     0,     0,   136,    32,    33,    57,
993     108,     0,    58,   330,    35,    36,    37,     0,     0,     0,
994     109,     0,     0,     0,     0,     0,     0,     0,     0,     0,
995       0,     0,   110,   111,     0,   112,   113,   114,   115,   116,
996     117,   118,    14,    15,     0,    16,     0,     0,     0,     0,
997       0,     0,    18,    19,     0,    20,     0,    21,     0,     0,
998       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
999       0,     0,     0,     0,     0,    22,     0,     0,     0,     0,
1000       0,     0,     0,    23,    24,    25,    26,    27,    28,     0,
1001     119,     0,    29,    30,    31,     0,     0,   136,    32,    33,
1002      57,   108,     0,    58,     0,    35,    36,    37,     0,     0,
1003       0,   109,     0,     0,     0,     0,     0,     0,     0,     0,
1004       0,     0,     0,   110,   111,     0,   112,   113,   114,   115,
1005     116,   117,   118,    14,    15,     0,    16,     0,     0,     0,
1006       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
1007       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1008       0,     0,     0,     0,     0,     0,    22,     0,     0,     0,
1009       0,     0,     0,     0,    23,    24,    25,    26,    27,    28,
1010       0,   119,     0,    29,    30,    31,     0,     0,     0,    32,
1011      33,     0,     0,     0,    58,     0,    35,    36,    37,   156,
1012       0,    57,   108,   159,     0,     0,     0,     0,     0,     0,
1013       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
1014       0,     0,     0,     0,   110,   111,     0,   112,   113,   114,
1015     115,   116,   117,   118,    14,    15,     0,    16,     0,     0,
1016       0,     0,     0,     0,    18,    19,     0,    20,     0,    21,
1017       0,     0,     0,     0,     0,     0,     0,     0,   156,     0,
1018      12,     0,   159,    13,     0,     0,     0,    22,     0,     0,
1019       0,     0,     0,     0,     0,    23,    24,    25,    26,    27,
1020      28,     0,   119,     0,    29,    30,    31,     0,     0,     0,
1021      32,    33,     0,    14,    15,    58,    16,    35,    36,    37,
1022       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
1023       0,     0,     0,     0,     0,     0,     0,   202,     0,    12,
1024       0,     0,    13,     0,     0,     0,    22,     0,     0,     0,
1025       0,     0,     0,     0,    23,    24,    25,    26,    27,    28,
1026       0,     0,     0,    29,    30,    31,     0,     0,     0,    32,
1027      33,     0,    14,    15,    34,    16,    35,    36,    37,     0,
1028       0,     0,    18,    19,     0,    20,     0,    21,     0,     0,
1029       0,     0,     0,     0,     0,     0,   204,     0,    12,     0,
1030       0,    13,     0,     0,     0,    22,     0,     0,     0,     0,
1031       0,     0,     0,    23,    24,    25,    26,    27,    28,     0,
1032       0,     0,    29,    30,    31,     0,     0,     0,    32,    33,
1033       0,    14,    15,    34,    16,    35,    36,    37,     0,     0,
1034       0,    18,    19,     0,    20,     0,    21,     0,     0,     0,
1035       0,     0,     0,     0,     0,   219,     0,    12,     0,     0,
1036      13,     0,     0,     0,    22,     0,     0,     0,     0,     0,
1037       0,     0,    23,    24,    25,    26,    27,    28,     0,     0,
1038       0,    29,    30,    31,     0,     0,     0,    32,    33,     0,
1039      14,    15,    34,    16,    35,    36,    37,     0,     0,     0,
1040      18,    19,     0,    20,     0,    21,     0,     0,     0,     0,
1041       0,     0,     0,     0,   202,     0,   292,     0,     0,    13,
1042       0,     0,     0,    22,     0,     0,     0,     0,     0,     0,
1043       0,    23,    24,    25,    26,    27,    28,     0,     0,     0,
1044      29,    30,    31,     0,     0,     0,    32,    33,     0,    14,
1045      15,    34,    16,    35,    36,    37,     0,     0,     0,    18,
1046      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1047       0,     0,     0,   204,     0,   292,     0,     0,    13,     0,
1048       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1049      23,    24,    25,    26,    27,    28,     0,     0,     0,    29,
1050      30,    31,     0,     0,     0,    32,    33,     0,    14,    15,
1051      34,    16,    35,    36,    37,     0,     0,     0,    18,    19,
1052       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1053       0,     0,   219,     0,   292,     0,     0,    13,     0,     0,
1054       0,    22,     0,     0,     0,     0,     0,     0,     0,    23,
1055      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
1056      31,     0,     0,     0,    32,    33,     0,    14,    15,    34,
1057      16,    35,    36,    37,     0,     0,     0,    18,    19,     0,
1058      20,     0,    21,     0,     0,     0,     0,     0,     0,     0,
1059       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1060      22,     0,     0,     0,     0,     0,     0,     0,    23,    24,
1061      25,    26,    27,    28,     0,     0,     0,    29,    30,    31,
1062       0,     0,     0,    32,    33,    57,   108,     0,    34,   137,
1063      35,    36,    37,     0,     0,     0,   109,     0,     0,     0,
1064       0,     0,     0,     0,     0,     0,     0,     0,   110,   111,
1065       0,   112,   113,   114,   115,   116,   117,   118,    14,    15,
1066       0,    16,     0,     0,     0,     0,     0,     0,    18,    19,
1067       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1068       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1069       0,    22,     0,     0,     0,     0,     0,     0,     0,    23,
1070      24,    25,    26,    27,    28,     0,   119,     0,    29,    30,
1071      31,     0,     0,     0,    32,    33,    57,   108,     0,    58,
1072       0,    35,    36,    37,     0,     0,     0,   109,     0,     0,
1073       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1074     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1075      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1076      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1077       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1078       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1079      23,    24,    25,    26,    27,    28,     0,   119,   266,    29,
1080      30,    31,     0,     0,     0,    32,    33,    57,   108,     0,
1081      58,   273,    35,    36,    37,     0,     0,     0,   109,     0,
1082       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1083     110,   111,     0,   112,   113,   114,   115,   116,   117,   118,
1084      14,    15,     0,    16,     0,     0,     0,     0,     0,     0,
1085      18,    19,     0,    20,     0,    21,     0,     0,     0,     0,
1086       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1087       0,     0,     0,    22,     0,     0,     0,     0,     0,     0,
1088       0,    23,    24,    25,    26,    27,    28,     0,   119,     0,
1089      29,    30,    31,     0,     0,     0,    32,    33,    57,   108,
1090       0,    58,   311,    35,    36,    37,     0,     0,     0,   109,
1091       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1092       0,   110,   111,     0,   112,   113,   114,   115,   116,   117,
1093     118,    14,    15,     0,    16,     0,     0,     0,     0,     0,
1094       0,    18,    19,     0,    20,     0,    21,     0,     0,     0,
1095       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1096       0,     0,     0,     0,    22,     0,     0,     0,     0,     0,
1097       0,     0,    23,    24,    25,    26,    27,    28,     0,   119,
1098       0,    29,    30,    31,     0,     0,     0,    32,    33,    57,
1099     108,     0,    58,   313,    35,    36,    37,     0,     0,     0,
1100     109,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1101       0,     0,   110,   111,     0,   112,   113,   114,   115,   116,
1102     117,   118,    14,    15,     0,    16,     0,     0,     0,     0,
1103       0,     0,    18,    19,     0,    20,     0,    21,     0,     0,
1104       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1105       0,     0,     0,     0,     0,    22,     0,     0,     0,     0,
1106       0,     0,     0,    23,    24,    25,    26,    27,    28,     0,
1107     119,     0,    29,    30,    31,     0,     0,     0,    32,    33,
1108      57,   108,     0,    58,   346,    35,    36,    37,     0,     0,
1109       0,   109,     0,     0,     0,     0,     0,     0,     0,     0,
1110       0,     0,     0,   110,   111,     0,   112,   113,   114,   115,
1111     116,   117,   118,    14,    15,     0,    16,     0,     0,     0,
1112       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
1113       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1114       0,     0,     0,     0,     0,     0,    22,     0,     0,     0,
1115       0,     0,     0,     0,    23,    24,    25,    26,    27,    28,
1116       0,   119,     0,    29,    30,    31,     0,     0,     0,    32,
1117      33,    57,   108,     0,    58,   347,    35,    36,    37,     0,
1118       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
1119       0,     0,     0,     0,   110,   111,     0,   112,   113,   114,
1120     115,   116,   117,   118,    14,    15,     0,    16,     0,     0,
1121       0,     0,     0,     0,    18,    19,     0,    20,     0,    21,
1122       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1123       0,     0,     0,     0,     0,     0,     0,    22,     0,     0,
1124       0,     0,     0,     0,     0,    23,    24,    25,    26,    27,
1125      28,     0,   119,     0,    29,    30,    31,     0,     0,     0,
1126      32,    33,    57,   108,   350,    58,     0,    35,    36,    37,
1127       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
1128       0,     0,     0,     0,     0,   110,   111,     0,   112,   113,
1129     114,   115,   116,   117,   118,    14,    15,     0,    16,     0,
1130       0,     0,     0,     0,     0,    18,    19,     0,    20,     0,
1131      21,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1132       0,     0,     0,     0,     0,     0,     0,     0,    22,     0,
1133       0,     0,     0,     0,     0,     0,    23,    24,    25,    26,
1134      27,    28,     0,   119,     0,    29,    30,    31,     0,     0,
1135       0,    32,    33,    57,   108,     0,    58,   359,    35,    36,
1136      37,     0,     0,     0,   109,     0,     0,     0,     0,     0,
1137       0,     0,     0,     0,     0,     0,   110,   111,     0,   112,
1138     113,   114,   115,   116,   117,   118,    14,    15,     0,    16,
1139       0,     0,     0,     0,     0,     0,    18,    19,     0,    20,
1140       0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
1141       0,     0,     0,     0,     0,     0,     0,     0,     0,    22,
1142       0,     0,     0,     0,     0,     0,     0,    23,    24,    25,
1143      26,    27,    28,     0,   119,     0,    29,    30,    31,     0,
1144       0,     0,    32,    33,    57,   108,     0,    58,     0,    35,
1145      36,    37,     0,     0,     0,   109,     0,     0,     0,     0,
1146       0,     0,     0,     0,     0,     0,     0,   110,   111,     0,
1147     112,   113,   114,   115,   116,   117,   118,    14,    15,     0,
1148      16,     0,     0,     0,     0,     0,     0,    18,    19,     0,
1149      20,     0,    21,     0,     0,     0,     0,     0,     0,     0,
1150       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1151      22,     0,     0,     0,     0,     0,     0,     0,    23,    24,
1152      25,    26,    27,    28,     0,   119,     0,    29,    30,    31,
1153       0,     0,     0,    32,    33,    57,   108,     0,    58,     0,
1154      35,    36,    37,     0,     0,     0,   109,     0,     0,     0,
1155       0,     0,     0,     0,     0,     0,     0,     0,   110,     0,
1156       0,   112,   113,   114,   115,   116,   117,   118,    14,    15,
1157       0,    16,     0,     0,     0,     0,     0,     0,    18,    19,
1158       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1159       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1160       0,    22,     0,     0,     0,     0,     0,     0,     0,    23,
1161      24,    25,    26,    27,    28,    57,   108,     0,    29,    30,
1162      31,     0,     0,     0,    32,    33,   109,     0,     0,    58,
1163       0,    35,    36,    37,     0,     0,     0,     0,     0,     0,
1164       0,   112,   113,   114,   115,   116,   117,   118,    14,    15,
1165       0,    16,     0,     0,     0,     0,     0,     0,    18,    19,
1166       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1167       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1168       0,    22,     0,     0,     0,     0,     0,     0,     0,    23,
1169      24,    25,    26,    27,    28,    57,   -32,     0,    29,    30,
1170      31,     0,     0,     0,    32,    33,   -32,     0,     0,    58,
1171       0,    35,    36,    37,     0,     0,     0,     0,     0,     0,
1172       0,   -32,   -32,   -32,   -32,   -32,   -32,   -32,    14,    15,
1173       0,    16,     0,     0,     0,     0,     0,     0,    18,    19,
1174       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1175       0,     0,     0,     0,    57,     0,     0,     0,     0,     0,
1176       0,    22,     0,     0,     0,   251,     0,     0,     0,    23,
1177      24,    25,    26,    27,    28,     0,     0,   110,   111,    30,
1178      31,     0,     0,     0,    32,    33,   252,    14,    15,    58,
1179      16,    35,    36,    37,     0,     0,     0,    18,    19,     0,
1180      20,     0,    21,     0,     0,     0,     0,     0,     0,     0,
1181       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1182      22,     0,     0,    57,     0,     0,     0,     0,    23,    24,
1183      25,    26,    27,    28,   251,   253,   326,    29,    30,    31,
1184       0,     0,     0,    32,    33,     0,   110,   111,    58,     0,
1185      35,    36,    37,     0,     0,   252,    14,    15,     0,    16,
1186       0,     0,     0,     0,     0,     0,    18,    19,     0,    20,
1187       0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
1188       0,     0,    57,     0,     0,     0,     0,     0,     0,    22,
1189       0,     0,     0,   251,     0,     0,     0,    23,    24,    25,
1190      26,    27,    28,     0,   253,   110,    29,    30,    31,     0,
1191       0,     0,    32,    33,   252,    14,    15,    58,    16,    35,
1192      36,    37,     0,     0,     0,    18,    19,     0,    20,     0,
1193      21,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1194       0,    12,     0,     0,    13,   142,     0,     0,    22,     0,
1195       0,     0,     0,     0,     0,     0,    23,    24,    25,    26,
1196      27,    28,     0,     0,     0,    29,    30,    31,     0,     0,
1197       0,    32,    33,     0,    14,    15,    58,    16,    35,    36,
1198      37,     0,     0,     0,    18,    19,     0,    20,     0,    21,
1199       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1200      12,     0,     0,    13,   150,     0,     0,    22,     0,     0,
1201       0,     0,     0,     0,     0,    23,    24,    25,    26,    27,
1202      28,     0,     0,     0,    29,    30,    31,     0,     0,     0,
1203      32,    33,     0,    14,    15,    34,    16,    35,    36,    37,
1204       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
1205       0,     0,     0,     0,     0,     0,     0,     0,     0,    57,
1206       0,     0,     0,     0,     0,     0,    22,     0,     0,     0,
1207     251,     0,     0,     0,    23,    24,    25,    26,    27,    28,
1208       0,     0,     0,    29,    30,    31,     0,     0,     0,    32,
1209      33,   252,    14,    15,    34,    16,    35,    36,    37,     0,
1210       0,     0,    18,    19,     0,    20,     0,    21,     0,     0,
1211       0,     0,     0,     0,     0,     0,     0,     0,    12,     0,
1212       0,    13,     0,     0,     0,    22,     0,     0,     0,     0,
1213       0,     0,     0,    23,    24,    25,    26,    27,    28,     0,
1214       0,     0,    29,    30,    31,     0,     0,     0,    32,    33,
1215       0,    14,    15,    58,    16,    35,    36,    37,     0,     0,
1216       0,    18,    19,     0,    20,     0,    21,     0,     0,     0,
1217       0,     0,     0,     0,     0,     0,     0,    57,     0,     0,
1218      13,     0,     0,     0,    22,     0,     0,     0,     0,     0,
1219       0,     0,    23,    24,    25,    26,    27,    28,     0,     0,
1220       0,    29,    30,    31,     0,     0,     0,    32,    33,     0,
1221      14,    15,    34,    16,    35,    36,    37,     0,     0,     0,
1222      18,    19,     0,    20,     0,    21,     0,     0,     0,     0,
1223       0,     0,     0,     0,     0,     0,   177,     0,     0,    13,
1224       0,     0,     0,    22,     0,     0,     0,     0,     0,     0,
1225       0,    23,    24,    25,    26,    27,    28,     0,     0,     0,
1226      29,    30,    31,     0,     0,     0,    32,    33,     0,    14,
1227      15,    34,    16,    35,    36,    37,     0,     0,     0,    18,
1228      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1229       0,     0,     0,     0,     0,    57,     0,     0,     0,     0,
1230       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1231      23,    24,    25,    26,    27,    28,     0,     0,     0,    29,
1232      30,    31,     0,     0,     0,    32,    33,     0,    14,    15,
1233      34,    16,    35,    36,    37,     0,     0,     0,    18,    19,
1234       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1235       0,     0,   208,     0,   292,     0,     0,    13,     0,     0,
1236       0,    22,     0,     0,     0,     0,     0,     0,     0,    23,
1237      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
1238      31,     0,     0,     0,    32,    33,     0,    14,    15,    58,
1239      16,    35,    36,    37,     0,     0,     0,    18,    19,     0,
1240      20,     0,    21,     0,     0,     0,     0,     0,     0,     0,
1241       0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
1242      22,     0,     0,     0,   -32,     0,     0,     0,    23,    24,
1243      25,    26,    27,    28,     0,     0,     0,    29,    30,    31,
1244       0,     0,     0,    32,    33,   -32,    14,    15,    34,    16,
1245      35,    36,    37,     0,     0,     0,    18,    19,     0,    20,
1246       0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
1247       0,     0,    57,     0,     0,     0,     0,     0,     0,    22,
1248       0,     0,     0,     0,     0,     0,     0,    23,    24,    25,
1249      26,    27,    28,     0,     0,     0,     0,    30,    31,     0,
1250       0,     0,    32,    33,     0,    14,    15,    58,    16,    35,
1251      36,    37,     0,     0,     0,    18,    19,     0,    20,     0,
1252      21,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1253       0,     0,     0,     0,     0,     0,     0,     0,    22,     0,
1254       0,     0,     0,     0,     0,     0,    23,    24,    25,    26,
1255      27,    28,     0,     0,     0,    29,    30,    31,     0,     0,
1256       0,    32,    33,     0,     0,     0,    58,     0,    35,    36,
1257      37
1258};
1259
1260static const short int yycheck[] =
1261{
1262      16,    81,    34,   177,   166,    45,   159,    18,   242,    84,
1263     244,    15,    45,    29,    10,   336,    32,    33,    34,    35,
1264      36,    37,    66,    67,     5,     0,    42,    10,     9,    10,
1265       9,    14,   178,    44,    69,    13,   357,    53,    51,    52,
1266      19,    10,    58,   118,    97,    11,    86,    87,    88,   109,
1267     103,    12,    68,    86,    83,    88,    12,    86,    39,    37,
1268      89,    90,    40,   123,    93,    10,    10,    69,   100,    14,
1269     110,     9,   101,   108,   109,    12,    45,     9,    16,   159,
1270      92,   134,   135,    99,   100,    98,    12,    19,   322,   133,
1271      86,   166,    10,   106,    18,   178,    14,   101,   102,   103,
1272     104,    45,    86,   107,    12,    89,   108,   109,   124,   125,
1273     126,   127,   128,   129,    12,   349,    10,    86,   292,    88,
1274      14,   174,     9,   176,    11,    42,   107,   361,   144,   145,
1275     283,   147,   148,     9,   187,   164,   189,   153,   154,   155,
1276      16,   170,    86,    87,    88,    12,   221,   293,   164,     9,
1277     296,   297,   298,   299,   170,    12,    16,   303,     9,   234,
1278     108,   109,   178,     9,     9,    16,   110,   320,   228,   229,
1279      16,    16,    12,   107,   336,   191,   192,   252,   194,   195,
1280     196,   197,   198,   199,    15,   201,    10,   203,    10,   205,
1281     206,   251,   208,   237,   247,   357,   342,   350,     9,   215,
1282      12,     9,    12,   283,   220,    16,   222,   188,    16,   284,
1283     293,    12,    95,   296,   297,   298,   299,    44,    15,   251,
1284     303,   253,   254,   255,    86,   257,   242,    10,   244,   261,
1285      18,    79,     9,    14,    10,   251,    10,   253,   254,   255,
1286     320,   257,   258,   259,   260,   261,    16,    16,    44,   324,
1287     263,   304,    99,    53,    54,    16,   272,    12,   318,   342,
1288     276,    41,   278,    16,   280,   251,    16,   253,   254,   255,
1289     350,   257,   103,   104,    16,   261,   107,   293,   107,   105,
1290     296,   297,   298,   299,    -1,    16,    -1,   303,    -1,   305,
1291     306,   307,   345,    -1,   326,    -1,    -1,    42,   351,    -1,
1292      45,    32,    33,    34,    -1,    -1,    37,   360,    -1,    -1,
1293     326,    42,   365,   329,    -1,   331,    -1,   333,   334,   332,
1294      -1,   337,    53,    -1,    -1,    -1,   342,    58,    -1,   310,
1295     359,    -1,    -1,    -1,    -1,    -1,   352,    68,    -1,    -1,
1296     326,    86,    87,    88,    -1,    -1,    -1,   147,   148,    -1,
1297      -1,    -1,    -1,    -1,   154,   155,    -1,    -1,    -1,    -1,
1298      -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    99,   100,
1299      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   179,
1300      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1301      -1,    -1,    -1,   124,   125,   126,   127,   128,   129,    -1,
1302      -1,    -1,    -1,    -1,    -1,    -1,   206,   207,    -1,    -1,
1303      -1,    -1,    -1,   144,   145,    -1,   147,   148,    -1,    -1,
1304      -1,    -1,   153,   154,   155,    -1,    -1,   227,    -1,    -1,
1305      -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,    -1,   170,
1306      -1,    -1,    -1,    -1,    -1,    -1,    -1,   178,    -1,    -1,
1307     250,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1308      -1,   192,    -1,   194,   195,   196,   197,   198,   199,    -1,
1309     201,    -1,   203,    -1,   205,   206,    -1,   208,    -1,    -1,
1310     280,   281,    -1,    -1,   215,    -1,    -1,    -1,    -1,   220,
1311      -1,   222,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1312      -1,    -1,    -1,    -1,    -1,    -1,   306,   307,    -1,    -1,
1313      -1,   242,    -1,   244,    -1,    -1,    -1,    -1,    -1,    -1,
1314     251,    -1,   253,   254,   255,   325,   257,   258,   259,   260,
1315     261,     5,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,
1316      -1,   272,    -1,    -1,    -1,   276,    -1,   278,    -1,   280,
1317      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1318      -1,    -1,   293,    -1,    -1,   296,   297,   298,   299,    -1,
1319      -1,    -1,   303,    -1,   305,   306,   307,    -1,    -1,    -1,
1320      -1,    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,
1321      64,    65,    66,    67,    -1,   326,    70,    71,    -1,    -1,
1322      -1,    -1,   333,   334,    -1,    -1,   337,    -1,    -1,    -1,
1323      -1,   342,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,
1324      -1,   352,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1325      -1,   105,    -1,   107,    -1,   109,    -1,    -1,   112,   113,
1326     114,   115,   116,   117,    -1,   119,   120,   121,    -1,   123,
1327      -1,    -1,    -1,    -1,    -1,    -1,   130,    -1,    -1,   133,
1328      -1,    -1,    -1,    -1,   138,    -1,   140,    -1,    -1,    -1,
1329      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1330       0,     1,    -1,    -1,    -1,    -1,    -1,     7,     8,    -1,
1331      10,    11,    12,   167,    14,    15,    -1,    -1,   172,    -1,
1332      -1,    -1,    -1,   177,    -1,    -1,    -1,    -1,    -1,    -1,
1333      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1334      -1,    -1,    -1,    -1,    -1,    45,    46,    -1,    48,    -1,
1335      -1,    -1,    -1,    -1,    54,    55,    56,    -1,    58,    -1,
1336      60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1337      -1,   225,    -1,    -1,   228,   229,    -1,    -1,    78,   233,
1338      -1,    -1,    -1,   237,    -1,    -1,    86,    87,    88,    89,
1339      90,    91,    -1,    -1,    -1,    95,    96,    97,    -1,    -1,
1340      -1,   101,   102,    -1,    -1,    -1,   106,    -1,   108,   109,
1341     110,    -1,   266,   267,   268,    -1,    -1,    -1,    -1,    -1,
1342      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1343      -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,   292,    -1,
1344      -1,    10,    11,    12,    -1,    14,    15,    -1,    -1,    -1,
1345      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1346      -1,    -1,   316,    -1,   318,    -1,    -1,   321,    -1,    -1,
1347      -1,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
1348      49,    50,    51,    52,    53,   339,    55,    56,    57,    58,
1349      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
1350       1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
1351      11,    12,    -1,    14,    15,    -1,    17,    86,    87,    88,
1352      89,    90,    91,    -1,    -1,    -1,    95,    96,    97,    98,
1353      99,    -1,   101,   102,    -1,    -1,    -1,   106,    -1,   108,
1354     109,   110,    -1,    -1,    45,    46,    47,    48,    49,    50,
1355      51,    52,    53,    -1,    55,    56,    57,    58,    -1,    60,
1356      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
1357      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    11,    12,
1358      -1,    14,    15,    -1,    17,    86,    87,    88,    89,    90,
1359      91,    -1,    -1,    -1,    95,    96,    97,    98,    99,    -1,
1360     101,   102,    -1,    -1,    -1,   106,    -1,   108,   109,   110,
1361      -1,    -1,    45,    46,    47,    48,    49,    50,    51,    52,
1362      53,    -1,    55,    56,    57,    58,    -1,    60,    61,    62,
1363      -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,
1364      -1,    -1,    -1,    76,    77,    78,    11,    12,    -1,    14,
1365      15,    -1,    17,    86,    87,    88,    89,    90,    91,    -1,
1366      -1,    -1,    95,    96,    97,    98,    99,    -1,   101,   102,
1367      -1,    -1,    -1,   106,    -1,   108,   109,   110,    -1,    -1,
1368      45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
1369      55,    56,    57,    58,    -1,    60,    61,    62,    -1,    -1,
1370      -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,
1371      -1,    76,    77,    78,    11,    12,    -1,    14,    15,    -1,
1372      17,    86,    87,    88,    89,    90,    91,    -1,    -1,    -1,
1373      95,    96,    97,    98,    99,    -1,   101,   102,    -1,    -1,
1374      -1,   106,    -1,   108,   109,   110,    -1,    -1,    45,    46,
1375      47,    48,    49,    50,    51,    52,    53,    -1,    55,    56,
1376      57,    58,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
1377      -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
1378      77,    78,    11,    12,    -1,    14,    15,    -1,    17,    86,
1379      87,    88,    89,    90,    91,    -1,    -1,    -1,    95,    96,
1380      97,    98,    99,    -1,   101,   102,    -1,    -1,    -1,   106,
1381      -1,   108,   109,   110,    -1,    -1,    45,    46,    47,    48,
1382      49,    50,    51,    52,    53,    -1,    55,    56,    57,    58,
1383      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
1384      -1,     1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
1385      10,    11,    12,    -1,    14,    15,    -1,    86,    87,    88,
1386      89,    90,    91,    -1,    -1,    -1,    95,    96,    97,    98,
1387      99,    -1,   101,   102,    -1,    -1,    -1,   106,    -1,   108,
1388     109,   110,    -1,    -1,    -1,    45,    46,    47,    48,    49,
1389      50,    51,    52,    53,    -1,    55,    56,    57,    58,    -1,
1390      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,     1,
1391      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    11,
1392      12,    -1,    14,    15,    -1,    17,    86,    87,    88,    89,
1393      90,    91,    -1,    -1,    -1,    95,    96,    97,    98,    99,
1394      -1,   101,   102,    -1,    -1,    -1,   106,    -1,   108,   109,
1395     110,    -1,    -1,    45,    46,    47,    48,    49,    50,    51,
1396      52,    53,    -1,    55,    56,    57,    58,    -1,    60,    61,
1397      62,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,
1398      -1,    -1,    -1,    -1,    76,    77,    78,    11,    12,    -1,
1399      14,    15,    -1,    17,    86,    87,    88,    89,    90,    91,
1400      -1,    -1,    -1,    95,    96,    97,    98,    99,    -1,   101,
1401     102,    -1,    -1,    -1,   106,    -1,   108,   109,   110,    -1,
1402      -1,    45,    46,    47,    48,    49,    50,    51,    52,    53,
1403      -1,    55,    56,    57,    58,    -1,    60,    61,    62,    -1,
1404      -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,
1405      -1,    -1,    76,    77,    78,    11,    12,    -1,    14,    15,
1406      -1,    -1,    86,    87,    88,    89,    90,    91,    -1,    -1,
1407      -1,    95,    96,    97,    98,    99,    -1,   101,   102,    -1,
1408      -1,    -1,   106,    -1,   108,   109,   110,    -1,    -1,    45,
1409      46,    47,    48,    49,    50,    51,    52,    53,    -1,    55,
1410      56,    57,    58,    -1,    60,    61,    62,    -1,    -1,    -1,
1411      -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1412      76,    77,    78,    12,    -1,    14,    15,    -1,    -1,    -1,
1413      86,    87,    88,    89,    90,    91,    -1,    -1,    -1,    95,
1414      96,    97,    98,    99,    -1,   101,   102,    -1,    -1,    -1,
1415     106,    -1,   108,   109,   110,    -1,    45,    46,    -1,    48,
1416      -1,    50,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,
1417      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
1418      -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
1419      12,    -1,    -1,    15,    16,    -1,    -1,    86,    87,    88,
1420      89,    90,    91,    -1,    -1,    -1,    95,    96,    97,    -1,
1421       7,     8,   101,   102,    11,    12,    -1,   106,    15,   108,
1422     109,   110,    -1,    45,    46,    -1,    48,    -1,    50,    -1,
1423      -1,    -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,
1424      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,
1425      -1,    48,    -1,    -1,    76,    77,    78,    54,    55,    56,
1426      -1,    58,    -1,    60,    86,    87,    88,    89,    90,    91,
1427      -1,    -1,    -1,    95,    96,    97,    -1,    -1,    -1,   101,
1428     102,    78,    -1,    -1,   106,    -1,   108,   109,   110,    86,
1429      87,    88,    89,    90,    91,    -1,    -1,    -1,    95,    96,
1430      97,    -1,    -1,     9,   101,   102,    12,    13,    -1,   106,
1431      16,   108,   109,   110,    -1,    -1,    -1,    23,    -1,    -1,
1432      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
1433      36,    -1,    38,    39,    40,    41,    42,    43,    44,    45,
1434      46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,
1435      56,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,
1436      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1437      -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1438      86,    87,    88,    89,    90,    91,    -1,    93,    -1,    95,
1439      96,    97,    -1,    -1,     9,   101,   102,    12,    13,    -1,
1440     106,    16,   108,   109,   110,    -1,    -1,    -1,    23,    -1,
1441      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1442      35,    36,    -1,    38,    39,    40,    41,    42,    43,    44,
1443      45,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
1444      55,    56,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,
1445      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1446      -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,
1447      -1,    86,    87,    88,    89,    90,    91,    -1,    93,    -1,
1448      95,    96,    97,    -1,    -1,     9,   101,   102,    12,    13,
1449      -1,   106,    16,   108,   109,   110,    -1,    -1,    -1,    23,
1450      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1451      -1,    35,    36,    -1,    38,    39,    40,    41,    42,    43,
1452      44,    45,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,
1453      -1,    55,    56,    -1,    58,    -1,    60,    -1,    -1,    -1,
1454      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1455      -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,
1456      -1,    -1,    86,    87,    88,    89,    90,    91,    -1,    93,
1457      -1,    95,    96,    97,    -1,    -1,     9,   101,   102,    12,
1458      13,    -1,   106,    16,   108,   109,   110,    -1,    -1,    -1,
1459      23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1460      -1,    -1,    35,    36,    -1,    38,    39,    40,    41,    42,
1461      43,    44,    45,    46,    -1,    48,    -1,    -1,    -1,    -1,
1462      -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,    -1,
1463      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1464      -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,
1465      -1,    -1,    -1,    86,    87,    88,    89,    90,    91,    -1,
1466      93,    -1,    95,    96,    97,    -1,    -1,     9,   101,   102,
1467      12,    13,    -1,   106,    -1,   108,   109,   110,    -1,    -1,
1468      -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1469      -1,    -1,    -1,    35,    36,    -1,    38,    39,    40,    41,
1470      42,    43,    44,    45,    46,    -1,    48,    -1,    -1,    -1,
1471      -1,    -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,
1472      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1473      -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,
1474      -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    91,
1475      -1,    93,    -1,    95,    96,    97,    -1,    -1,    -1,   101,
1476     102,    -1,    -1,    -1,   106,    -1,   108,   109,   110,    10,
1477      -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
1478      -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1479      -1,    -1,    -1,    -1,    35,    36,    -1,    38,    39,    40,
1480      41,    42,    43,    44,    45,    46,    -1,    48,    -1,    -1,
1481      -1,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,    60,
1482      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    -1,
1483      12,    -1,    14,    15,    -1,    -1,    -1,    78,    -1,    -1,
1484      -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,
1485      91,    -1,    93,    -1,    95,    96,    97,    -1,    -1,    -1,
1486     101,   102,    -1,    45,    46,   106,    48,   108,   109,   110,
1487      -1,    -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,
1488      -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    -1,    12,
1489      -1,    -1,    15,    -1,    -1,    -1,    78,    -1,    -1,    -1,
1490      -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    91,
1491      -1,    -1,    -1,    95,    96,    97,    -1,    -1,    -1,   101,
1492     102,    -1,    45,    46,   106,    48,   108,   109,   110,    -1,
1493      -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,    -1,
1494      -1,    -1,    -1,    -1,    -1,    -1,    10,    -1,    12,    -1,
1495      -1,    15,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,
1496      -1,    -1,    -1,    86,    87,    88,    89,    90,    91,    -1,
1497      -1,    -1,    95,    96,    97,    -1,    -1,    -1,   101,   102,
1498      -1,    45,    46,   106,    48,   108,   109,   110,    -1,    -1,
1499      -1,    55,    56,    -1,    58,    -1,    60,    -1,    -1,    -1,
1500      -1,    -1,    -1,    -1,    -1,    10,    -1,    12,    -1,    -1,
1501      15,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,
1502      -1,    -1,    86,    87,    88,    89,    90,    91,    -1,    -1,
1503      -1,    95,    96,    97,    -1,    -1,    -1,   101,   102,    -1,
1504      45,    46,   106,    48,   108,   109,   110,    -1,    -1,    -1,
1505      55,    56,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,
1506      -1,    -1,    -1,    -1,    10,    -1,    12,    -1,    -1,    15,
1507      -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,
1508      -1,    86,    87,    88,    89,    90,    91,    -1,    -1,    -1,
1509      95,    96,    97,    -1,    -1,    -1,   101,   102,    -1,    45,
1510      46,   106,    48,   108,   109,   110,    -1,    -1,    -1,    55,
1511      56,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,
1512      -1,    -1,    -1,    10,    -1,    12,    -1,    -1,    15,    -1,
1513      -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1514      86,    87,    88,    89,    90,    91,    -1,    -1,    -1,    95,
1515      96,    97,    -1,    -1,    -1,   101,   102,    -1,    45,    46,
1516     106,    48,   108,   109,   110,    -1,    -1,    -1,    55,    56,
1517      -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
1518      -1,    -1,    10,    -1,    12,    -1,    -1,    15,    -1,    -1,
1519      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
1520      87,    88,    89,    90,    91,    -1,    -1,    -1,    95,    96,
1521      97,    -1,    -1,    -1,   101,   102,    -1,    45,    46,   106,
1522      48,   108,   109,   110,    -1,    -1,    -1,    55,    56,    -1,
1523      58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1524      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1525      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,
1526      88,    89,    90,    91,    -1,    -1,    -1,    95,    96,    97,
1527      -1,    -1,    -1,   101,   102,    12,    13,    -1,   106,    16,
1528     108,   109,   110,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1529      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    36,
1530      -1,    38,    39,    40,    41,    42,    43,    44,    45,    46,
1531      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,
1532      -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
1533      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1534      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
1535      87,    88,    89,    90,    91,    -1,    93,    -1,    95,    96,
1536      97,    -1,    -1,    -1,   101,   102,    12,    13,    -1,   106,
1537      -1,   108,   109,   110,    -1,    -1,    -1,    23,    -1,    -1,
1538      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
1539      36,    -1,    38,    39,    40,    41,    42,    43,    44,    45,
1540      46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,
1541      56,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,
1542      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1543      -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1544      86,    87,    88,    89,    90,    91,    -1,    93,    94,    95,
1545      96,    97,    -1,    -1,    -1,   101,   102,    12,    13,    -1,
1546     106,    16,   108,   109,   110,    -1,    -1,    -1,    23,    -1,
1547      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1548      35,    36,    -1,    38,    39,    40,    41,    42,    43,    44,
1549      45,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
1550      55,    56,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,
1551      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1552      -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,
1553      -1,    86,    87,    88,    89,    90,    91,    -1,    93,    -1,
1554      95,    96,    97,    -1,    -1,    -1,   101,   102,    12,    13,
1555      -1,   106,    16,   108,   109,   110,    -1,    -1,    -1,    23,
1556      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1557      -1,    35,    36,    -1,    38,    39,    40,    41,    42,    43,
1558      44,    45,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,
1559      -1,    55,    56,    -1,    58,    -1,    60,    -1,    -1,    -1,
1560      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1561      -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,
1562      -1,    -1,    86,    87,    88,    89,    90,    91,    -1,    93,
1563      -1,    95,    96,    97,    -1,    -1,    -1,   101,   102,    12,
1564      13,    -1,   106,    16,   108,   109,   110,    -1,    -1,    -1,
1565      23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1566      -1,    -1,    35,    36,    -1,    38,    39,    40,    41,    42,
1567      43,    44,    45,    46,    -1,    48,    -1,    -1,    -1,    -1,
1568      -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,    -1,
1569      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1570      -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,
1571      -1,    -1,    -1,    86,    87,    88,    89,    90,    91,    -1,
1572      93,    -1,    95,    96,    97,    -1,    -1,    -1,   101,   102,
1573      12,    13,    -1,   106,    16,   108,   109,   110,    -1,    -1,
1574      -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1575      -1,    -1,    -1,    35,    36,    -1,    38,    39,    40,    41,
1576      42,    43,    44,    45,    46,    -1,    48,    -1,    -1,    -1,
1577      -1,    -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,
1578      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1579      -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,
1580      -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    91,
1581      -1,    93,    -1,    95,    96,    97,    -1,    -1,    -1,   101,
1582     102,    12,    13,    -1,   106,    16,   108,   109,   110,    -1,
1583      -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1584      -1,    -1,    -1,    -1,    35,    36,    -1,    38,    39,    40,
1585      41,    42,    43,    44,    45,    46,    -1,    48,    -1,    -1,
1586      -1,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,    60,
1587      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1588      -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,
1589      -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,
1590      91,    -1,    93,    -1,    95,    96,    97,    -1,    -1,    -1,
1591     101,   102,    12,    13,    14,   106,    -1,   108,   109,   110,
1592      -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,
1593      -1,    -1,    -1,    -1,    -1,    35,    36,    -1,    38,    39,
1594      40,    41,    42,    43,    44,    45,    46,    -1,    48,    -1,
1595      -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,
1596      60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1597      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,
1598      -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
1599      90,    91,    -1,    93,    -1,    95,    96,    97,    -1,    -1,
1600      -1,   101,   102,    12,    13,    -1,   106,    16,   108,   109,
1601     110,    -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,
1602      -1,    -1,    -1,    -1,    -1,    -1,    35,    36,    -1,    38,
1603      39,    40,    41,    42,    43,    44,    45,    46,    -1,    48,
1604      -1,    -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,
1605      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1606      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
1607      -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
1608      89,    90,    91,    -1,    93,    -1,    95,    96,    97,    -1,
1609      -1,    -1,   101,   102,    12,    13,    -1,   106,    -1,   108,
1610     109,   110,    -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,
1611      -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    36,    -1,
1612      38,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
1613      48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,    -1,
1614      58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1615      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1616      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,
1617      88,    89,    90,    91,    -1,    93,    -1,    95,    96,    97,
1618      -1,    -1,    -1,   101,   102,    12,    13,    -1,   106,    -1,
1619     108,   109,   110,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1620      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,
1621      -1,    38,    39,    40,    41,    42,    43,    44,    45,    46,
1622      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,
1623      -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
1624      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1625      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
1626      87,    88,    89,    90,    91,    12,    13,    -1,    95,    96,
1627      97,    -1,    -1,    -1,   101,   102,    23,    -1,    -1,   106,
1628      -1,   108,   109,   110,    -1,    -1,    -1,    -1,    -1,    -1,
1629      -1,    38,    39,    40,    41,    42,    43,    44,    45,    46,
1630      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,
1631      -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
1632      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1633      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
1634      87,    88,    89,    90,    91,    12,    13,    -1,    95,    96,
1635      97,    -1,    -1,    -1,   101,   102,    23,    -1,    -1,   106,
1636      -1,   108,   109,   110,    -1,    -1,    -1,    -1,    -1,    -1,
1637      -1,    38,    39,    40,    41,    42,    43,    44,    45,    46,
1638      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,
1639      -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
1640      -1,    -1,    -1,    -1,    12,    -1,    -1,    -1,    -1,    -1,
1641      -1,    78,    -1,    -1,    -1,    23,    -1,    -1,    -1,    86,
1642      87,    88,    89,    90,    91,    -1,    -1,    35,    36,    96,
1643      97,    -1,    -1,    -1,   101,   102,    44,    45,    46,   106,
1644      48,   108,   109,   110,    -1,    -1,    -1,    55,    56,    -1,
1645      58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1646      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1647      78,    -1,    -1,    12,    -1,    -1,    -1,    -1,    86,    87,
1648      88,    89,    90,    91,    23,    93,    94,    95,    96,    97,
1649      -1,    -1,    -1,   101,   102,    -1,    35,    36,   106,    -1,
1650     108,   109,   110,    -1,    -1,    44,    45,    46,    -1,    48,
1651      -1,    -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,
1652      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1653      -1,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,    78,
1654      -1,    -1,    -1,    23,    -1,    -1,    -1,    86,    87,    88,
1655      89,    90,    91,    -1,    93,    35,    95,    96,    97,    -1,
1656      -1,    -1,   101,   102,    44,    45,    46,   106,    48,   108,
1657     109,   110,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,
1658      60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1659      -1,    12,    -1,    -1,    15,    16,    -1,    -1,    78,    -1,
1660      -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
1661      90,    91,    -1,    -1,    -1,    95,    96,    97,    -1,    -1,
1662      -1,   101,   102,    -1,    45,    46,   106,    48,   108,   109,
1663     110,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,    60,
1664      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1665      12,    -1,    -1,    15,    16,    -1,    -1,    78,    -1,    -1,
1666      -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,
1667      91,    -1,    -1,    -1,    95,    96,    97,    -1,    -1,    -1,
1668     101,   102,    -1,    45,    46,   106,    48,   108,   109,   110,
1669      -1,    -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,
1670      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
1671      -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,
1672      23,    -1,    -1,    -1,    86,    87,    88,    89,    90,    91,
1673      -1,    -1,    -1,    95,    96,    97,    -1,    -1,    -1,   101,
1674     102,    44,    45,    46,   106,    48,   108,   109,   110,    -1,
1675      -1,    -1,    55,    56,    -1,    58,    -1,    60,    -1,    -1,
1676      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,
1677      -1,    15,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,
1678      -1,    -1,    -1,    86,    87,    88,    89,    90,    91,    -1,
1679      -1,    -1,    95,    96,    97,    -1,    -1,    -1,   101,   102,
1680      -1,    45,    46,   106,    48,   108,   109,   110,    -1,    -1,
1681      -1,    55,    56,    -1,    58,    -1,    60,    -1,    -1,    -1,
1682      -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,    -1,
1683      15,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,
1684      -1,    -1,    86,    87,    88,    89,    90,    91,    -1,    -1,
1685      -1,    95,    96,    97,    -1,    -1,    -1,   101,   102,    -1,
1686      45,    46,   106,    48,   108,   109,   110,    -1,    -1,    -1,
1687      55,    56,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,
1688      -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,    -1,    15,
1689      -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,
1690      -1,    86,    87,    88,    89,    90,    91,    -1,    -1,    -1,
1691      95,    96,    97,    -1,    -1,    -1,   101,   102,    -1,    45,
1692      46,   106,    48,   108,   109,   110,    -1,    -1,    -1,    55,
1693      56,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,
1694      -1,    -1,    -1,    -1,    -1,    12,    -1,    -1,    -1,    -1,
1695      -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1696      86,    87,    88,    89,    90,    91,    -1,    -1,    -1,    95,
1697      96,    97,    -1,    -1,    -1,   101,   102,    -1,    45,    46,
1698     106,    48,   108,   109,   110,    -1,    -1,    -1,    55,    56,
1699      -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
1700      -1,    -1,    69,    -1,    12,    -1,    -1,    15,    -1,    -1,
1701      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
1702      87,    88,    89,    90,    91,    -1,    -1,    -1,    95,    96,
1703      97,    -1,    -1,    -1,   101,   102,    -1,    45,    46,   106,
1704      48,   108,   109,   110,    -1,    -1,    -1,    55,    56,    -1,
1705      58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1706      -1,    -1,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,
1707      78,    -1,    -1,    -1,    23,    -1,    -1,    -1,    86,    87,
1708      88,    89,    90,    91,    -1,    -1,    -1,    95,    96,    97,
1709      -1,    -1,    -1,   101,   102,    44,    45,    46,   106,    48,
1710     108,   109,   110,    -1,    -1,    -1,    55,    56,    -1,    58,
1711      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1712      -1,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,    78,
1713      -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
1714      89,    90,    91,    -1,    -1,    -1,    -1,    96,    97,    -1,
1715      -1,    -1,   101,   102,    -1,    45,    46,   106,    48,   108,
1716     109,   110,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,
1717      60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1718      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,
1719      -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
1720      90,    91,    -1,    -1,    -1,    95,    96,    97,    -1,    -1,
1721      -1,   101,   102,    -1,    -1,    -1,   106,    -1,   108,   109,
1722     110
1723};
1724
1725/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1726   symbol of state STATE-NUM.  */
1727static const unsigned char yystos[] =
1728{
1729       0,     1,    10,    14,   113,   128,   130,   142,     0,     7,
1730       8,    11,    12,    15,    45,    46,    48,    54,    55,    56,
1731      58,    60,    78,    86,    87,    88,    89,    90,    91,    95,
1732      96,    97,   101,   102,   106,   108,   109,   110,   125,   131,
1733     132,   134,   137,   144,   145,   155,   156,   157,   159,    10,
1734      14,   125,   125,   137,   138,   146,    12,    12,   106,   156,
1735     157,    86,    89,   123,    12,    12,    12,    12,    42,   157,
1736      12,    12,   156,   156,   144,   156,   157,   157,   156,     1,
1737      10,    14,    47,    49,    50,    51,    52,    53,    57,    61,
1738      62,    76,    77,    98,    99,   117,   119,   124,   125,   137,
1739     141,   148,   150,   154,   160,     9,   125,   128,    13,    23,
1740      35,    36,    38,    39,    40,    41,    42,    43,    44,    93,
1741     114,   115,   156,    12,    15,   101,   102,   103,   104,   107,
1742      69,   108,   109,    18,   154,   154,     9,    16,   116,    16,
1743     116,    92,    16,   135,   137,   137,    12,   137,   137,   135,
1744      16,   135,   156,    42,   137,   137,    10,   126,   127,    14,
1745     126,   149,   149,   159,   137,   149,    12,    12,   149,   149,
1746     137,   149,    12,    10,   151,   150,   154,    12,   136,   139,
1747     140,   144,   156,   157,   149,    17,   150,   153,   131,   154,
1748     132,    95,   137,   145,   137,   137,   137,   137,   137,   137,
1749     159,   137,    10,   137,    10,   137,   137,   145,    69,   156,
1750     156,   156,   156,   156,   156,   137,   135,    17,    17,    10,
1751     137,    44,   137,    15,    16,   116,    86,   158,   116,   116,
1752      16,    16,   156,   116,   116,    10,   127,    18,   149,   129,
1753     148,   159,   137,   149,   137,   150,    79,   118,    17,   143,
1754     138,    23,    44,    93,   114,   115,   156,   116,    13,    37,
1755      40,    69,   150,   125,    17,   157,    94,   116,   116,   156,
1756      19,   159,   137,    16,   116,   147,   137,   145,   137,   145,
1757     137,   159,   135,    14,    44,   147,   147,   152,    10,   150,
1758      10,    16,    12,   136,   145,   159,   136,   136,   136,   136,
1759     156,   156,   156,   136,   154,   137,   137,   137,    86,    10,
1760     133,    16,    16,    16,    16,    16,   116,    16,   116,    19,
1761      14,   127,   159,    99,    44,   138,    94,    17,    16,   116,
1762      16,   116,   125,   137,   137,   145,   127,   137,   147,    12,
1763     159,    16,   136,   157,   157,   154,    16,    16,    16,   129,
1764      14,   122,   137,    16,    16,    17,   147,   127,   150,    16,
1765     121,   129,   149,   150,   147,   120,   150
1766};
1767
1768#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
1769# define YYSIZE_T __SIZE_TYPE__
1770#endif
1771#if ! defined (YYSIZE_T) && defined (size_t)
1772# define YYSIZE_T size_t
1773#endif
1774#if ! defined (YYSIZE_T)
1775# if defined (__STDC__) || defined (__cplusplus)
1776#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1777#  define YYSIZE_T size_t
1778# endif
1779#endif
1780#if ! defined (YYSIZE_T)
1781# define YYSIZE_T unsigned int
1782#endif
1783
1784#define yyerrok		(yyerrstatus = 0)
1785#define yyclearin	(yychar = YYEMPTY)
1786#define YYEMPTY		(-2)
1787#define YYEOF		0
1788
1789#define YYACCEPT	goto yyacceptlab
1790#define YYABORT		goto yyabortlab
1791#define YYERROR		goto yyerrorlab
1792
1793
1794/* Like YYERROR except do call yyerror.  This remains here temporarily
1795   to ease the transition to the new meaning of YYERROR, for GCC.
1796   Once GCC version 2 has supplanted version 1, this can go.  */
1797
1798#define YYFAIL		goto yyerrlab
1799
1800#define YYRECOVERING()  (!!yyerrstatus)
1801
1802#define YYBACKUP(Token, Value)					\
1803do								\
1804  if (yychar == YYEMPTY && yylen == 1)				\
1805    {								\
1806      yychar = (Token);						\
1807      yylval = (Value);						\
1808      yytoken = YYTRANSLATE (yychar);				\
1809      YYPOPSTACK;						\
1810      goto yybackup;						\
1811    }								\
1812  else								\
1813    { 								\
1814      yyerror ("syntax error: cannot back up");\
1815      YYERROR;							\
1816    }								\
1817while (0)
1818
1819
1820#define YYTERROR	1
1821#define YYERRCODE	256
1822
1823
1824/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1825   If N is 0, then set CURRENT to the empty location which ends
1826   the previous symbol: RHS[0] (always defined).  */
1827
1828#define YYRHSLOC(Rhs, K) ((Rhs)[K])
1829#ifndef YYLLOC_DEFAULT
1830# define YYLLOC_DEFAULT(Current, Rhs, N)				\
1831    do									\
1832      if (N)								\
1833	{								\
1834	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
1835	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
1836	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
1837	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
1838	}								\
1839      else								\
1840	{								\
1841	  (Current).first_line   = (Current).last_line   =		\
1842	    YYRHSLOC (Rhs, 0).last_line;				\
1843	  (Current).first_column = (Current).last_column =		\
1844	    YYRHSLOC (Rhs, 0).last_column;				\
1845	}								\
1846    while (0)
1847#endif
1848
1849
1850/* YY_LOCATION_PRINT -- Print the location on the stream.
1851   This macro was not mandated originally: define only if we know
1852   we won't break user code: when these are the locations we know.  */
1853
1854#ifndef YY_LOCATION_PRINT
1855# if YYLTYPE_IS_TRIVIAL
1856#  define YY_LOCATION_PRINT(File, Loc)			\
1857     fprintf (File, "%d.%d-%d.%d",			\
1858              (Loc).first_line, (Loc).first_column,	\
1859              (Loc).last_line,  (Loc).last_column)
1860# else
1861#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1862# endif
1863#endif
1864
1865
1866/* YYLEX -- calling `yylex' with the right arguments.  */
1867
1868#ifdef YYLEX_PARAM
1869# define YYLEX yylex (YYLEX_PARAM)
1870#else
1871# define YYLEX yylex ()
1872#endif
1873
1874/* Enable debugging if requested.  */
1875#if YYDEBUG
1876
1877# ifndef YYFPRINTF
1878#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1879#  define YYFPRINTF fprintf
1880# endif
1881
1882# define YYDPRINTF(Args)			\
1883do {						\
1884  if (yydebug)					\
1885    YYFPRINTF Args;				\
1886} while (0)
1887
1888# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
1889do {								\
1890  if (yydebug)							\
1891    {								\
1892      YYFPRINTF (stderr, "%s ", Title);				\
1893      yysymprint (stderr, 					\
1894                  Type, Value);	\
1895      YYFPRINTF (stderr, "\n");					\
1896    }								\
1897} while (0)
1898
1899/*------------------------------------------------------------------.
1900| yy_stack_print -- Print the state stack from its BOTTOM up to its |
1901| TOP (included).                                                   |
1902`------------------------------------------------------------------*/
1903
1904#if defined (__STDC__) || defined (__cplusplus)
1905static void
1906yy_stack_print (short int *bottom, short int *top)
1907#else
1908static void
1909yy_stack_print (bottom, top)
1910    short int *bottom;
1911    short int *top;
1912#endif
1913{
1914  YYFPRINTF (stderr, "Stack now");
1915  for (/* Nothing. */; bottom <= top; ++bottom)
1916    YYFPRINTF (stderr, " %d", *bottom);
1917  YYFPRINTF (stderr, "\n");
1918}
1919
1920# define YY_STACK_PRINT(Bottom, Top)				\
1921do {								\
1922  if (yydebug)							\
1923    yy_stack_print ((Bottom), (Top));				\
1924} while (0)
1925
1926
1927/*------------------------------------------------.
1928| Report that the YYRULE is going to be reduced.  |
1929`------------------------------------------------*/
1930
1931#if defined (__STDC__) || defined (__cplusplus)
1932static void
1933yy_reduce_print (int yyrule)
1934#else
1935static void
1936yy_reduce_print (yyrule)
1937    int yyrule;
1938#endif
1939{
1940  int yyi;
1941  unsigned int yylno = yyrline[yyrule];
1942  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
1943             yyrule - 1, yylno);
1944  /* Print the symbols being reduced, and their result.  */
1945  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1946    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
1947  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
1948}
1949
1950# define YY_REDUCE_PRINT(Rule)		\
1951do {					\
1952  if (yydebug)				\
1953    yy_reduce_print (Rule);		\
1954} while (0)
1955
1956/* Nonzero means print parse trace.  It is left uninitialized so that
1957   multiple parsers can coexist.  */
1958int yydebug;
1959#else /* !YYDEBUG */
1960# define YYDPRINTF(Args)
1961# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1962# define YY_STACK_PRINT(Bottom, Top)
1963# define YY_REDUCE_PRINT(Rule)
1964#endif /* !YYDEBUG */
1965
1966
1967/* YYINITDEPTH -- initial size of the parser's stacks.  */
1968#ifndef	YYINITDEPTH
1969# define YYINITDEPTH 200
1970#endif
1971
1972/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1973   if the built-in stack extension method is used).
1974
1975   Do not make this value too large; the results are undefined if
1976   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1977   evaluated with infinite-precision integer arithmetic.  */
1978
1979#ifndef YYMAXDEPTH
1980# define YYMAXDEPTH 10000
1981#endif
1982
1983
1984
1985#if YYERROR_VERBOSE
1986
1987# ifndef yystrlen
1988#  if defined (__GLIBC__) && defined (_STRING_H)
1989#   define yystrlen strlen
1990#  else
1991/* Return the length of YYSTR.  */
1992static YYSIZE_T
1993#   if defined (__STDC__) || defined (__cplusplus)
1994yystrlen (const char *yystr)
1995#   else
1996yystrlen (yystr)
1997     const char *yystr;
1998#   endif
1999{
2000  register const char *yys = yystr;
2001
2002  while (*yys++ != '\0')
2003    continue;
2004
2005  return yys - yystr - 1;
2006}
2007#  endif
2008# endif
2009
2010# ifndef yystpcpy
2011#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
2012#   define yystpcpy stpcpy
2013#  else
2014/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2015   YYDEST.  */
2016static char *
2017#   if defined (__STDC__) || defined (__cplusplus)
2018yystpcpy (char *yydest, const char *yysrc)
2019#   else
2020yystpcpy (yydest, yysrc)
2021     char *yydest;
2022     const char *yysrc;
2023#   endif
2024{
2025  register char *yyd = yydest;
2026  register const char *yys = yysrc;
2027
2028  while ((*yyd++ = *yys++) != '\0')
2029    continue;
2030
2031  return yyd - 1;
2032}
2033#  endif
2034# endif
2035
2036#endif /* !YYERROR_VERBOSE */
2037
2038
2039
2040#if YYDEBUG
2041/*--------------------------------.
2042| Print this symbol on YYOUTPUT.  |
2043`--------------------------------*/
2044
2045#if defined (__STDC__) || defined (__cplusplus)
2046static void
2047yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
2048#else
2049static void
2050yysymprint (yyoutput, yytype, yyvaluep)
2051    FILE *yyoutput;
2052    int yytype;
2053    YYSTYPE *yyvaluep;
2054#endif
2055{
2056  /* Pacify ``unused variable'' warnings.  */
2057  (void) yyvaluep;
2058
2059  if (yytype < YYNTOKENS)
2060    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2061  else
2062    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2063
2064
2065# ifdef YYPRINT
2066  if (yytype < YYNTOKENS)
2067    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2068# endif
2069  switch (yytype)
2070    {
2071      default:
2072        break;
2073    }
2074  YYFPRINTF (yyoutput, ")");
2075}
2076
2077#endif /* ! YYDEBUG */
2078/*-----------------------------------------------.
2079| Release the memory associated to this symbol.  |
2080`-----------------------------------------------*/
2081
2082#if defined (__STDC__) || defined (__cplusplus)
2083static void
2084yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2085#else
2086static void
2087yydestruct (yymsg, yytype, yyvaluep)
2088    const char *yymsg;
2089    int yytype;
2090    YYSTYPE *yyvaluep;
2091#endif
2092{
2093  /* Pacify ``unused variable'' warnings.  */
2094  (void) yyvaluep;
2095
2096  if (!yymsg)
2097    yymsg = "Deleting";
2098  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2099
2100  switch (yytype)
2101    {
2102
2103      default:
2104        break;
2105    }
2106}
2107
2108
2109/* Prevent warnings from -Wmissing-prototypes.  */
2110
2111#ifdef YYPARSE_PARAM
2112# if defined (__STDC__) || defined (__cplusplus)
2113int yyparse (void *YYPARSE_PARAM);
2114# else
2115int yyparse ();
2116# endif
2117#else /* ! YYPARSE_PARAM */
2118#if defined (__STDC__) || defined (__cplusplus)
2119int yyparse (void);
2120#else
2121int yyparse ();
2122#endif
2123#endif /* ! YYPARSE_PARAM */
2124
2125
2126
2127/* The look-ahead symbol.  */
2128int yychar;
2129
2130/* The semantic value of the look-ahead symbol.  */
2131YYSTYPE yylval;
2132
2133/* Number of syntax errors so far.  */
2134int yynerrs;
2135
2136
2137
2138/*----------.
2139| yyparse.  |
2140`----------*/
2141
2142#ifdef YYPARSE_PARAM
2143# if defined (__STDC__) || defined (__cplusplus)
2144int yyparse (void *YYPARSE_PARAM)
2145# else
2146int yyparse (YYPARSE_PARAM)
2147  void *YYPARSE_PARAM;
2148# endif
2149#else /* ! YYPARSE_PARAM */
2150#if defined (__STDC__) || defined (__cplusplus)
2151int
2152yyparse (void)
2153#else
2154int
2155yyparse ()
2156
2157#endif
2158#endif
2159{
2160
2161  register int yystate;
2162  register int yyn;
2163  int yyresult;
2164  /* Number of tokens to shift before error messages enabled.  */
2165  int yyerrstatus;
2166  /* Look-ahead token as an internal (translated) token number.  */
2167  int yytoken = 0;
2168
2169  /* Three stacks and their tools:
2170     `yyss': related to states,
2171     `yyvs': related to semantic values,
2172     `yyls': related to locations.
2173
2174     Refer to the stacks thru separate pointers, to allow yyoverflow
2175     to reallocate them elsewhere.  */
2176
2177  /* The state stack.  */
2178  short int yyssa[YYINITDEPTH];
2179  short int *yyss = yyssa;
2180  register short int *yyssp;
2181
2182  /* The semantic value stack.  */
2183  YYSTYPE yyvsa[YYINITDEPTH];
2184  YYSTYPE *yyvs = yyvsa;
2185  register YYSTYPE *yyvsp;
2186
2187
2188
2189#define YYPOPSTACK   (yyvsp--, yyssp--)
2190
2191  YYSIZE_T yystacksize = YYINITDEPTH;
2192
2193  /* The variables used to return semantic value and location from the
2194     action routines.  */
2195  YYSTYPE yyval;
2196
2197
2198  /* When reducing, the number of symbols on the RHS of the reduced
2199     rule.  */
2200  int yylen;
2201
2202  YYDPRINTF ((stderr, "Starting parse\n"));
2203
2204  yystate = 0;
2205  yyerrstatus = 0;
2206  yynerrs = 0;
2207  yychar = YYEMPTY;		/* Cause a token to be read.  */
2208
2209  /* Initialize stack pointers.
2210     Waste one element of value and location stack
2211     so that they stay on the same level as the state stack.
2212     The wasted elements are never initialized.  */
2213
2214  yyssp = yyss;
2215  yyvsp = yyvs;
2216
2217
2218  yyvsp[0] = yylval;
2219
2220  goto yysetstate;
2221
2222/*------------------------------------------------------------.
2223| yynewstate -- Push a new state, which is found in yystate.  |
2224`------------------------------------------------------------*/
2225 yynewstate:
2226  /* In all cases, when you get here, the value and location stacks
2227     have just been pushed. so pushing a state here evens the stacks.
2228     */
2229  yyssp++;
2230
2231 yysetstate:
2232  *yyssp = yystate;
2233
2234  if (yyss + yystacksize - 1 <= yyssp)
2235    {
2236      /* Get the current used size of the three stacks, in elements.  */
2237      YYSIZE_T yysize = yyssp - yyss + 1;
2238
2239#ifdef yyoverflow
2240      {
2241	/* Give user a chance to reallocate the stack. Use copies of
2242	   these so that the &'s don't force the real ones into
2243	   memory.  */
2244	YYSTYPE *yyvs1 = yyvs;
2245	short int *yyss1 = yyss;
2246
2247
2248	/* Each stack pointer address is followed by the size of the
2249	   data in use in that stack, in bytes.  This used to be a
2250	   conditional around just the two extra args, but that might
2251	   be undefined if yyoverflow is a macro.  */
2252	yyoverflow ("parser stack overflow",
2253		    &yyss1, yysize * sizeof (*yyssp),
2254		    &yyvs1, yysize * sizeof (*yyvsp),
2255
2256		    &yystacksize);
2257
2258	yyss = yyss1;
2259	yyvs = yyvs1;
2260      }
2261#else /* no yyoverflow */
2262# ifndef YYSTACK_RELOCATE
2263      goto yyoverflowlab;
2264# else
2265      /* Extend the stack our own way.  */
2266      if (YYMAXDEPTH <= yystacksize)
2267	goto yyoverflowlab;
2268      yystacksize *= 2;
2269      if (YYMAXDEPTH < yystacksize)
2270	yystacksize = YYMAXDEPTH;
2271
2272      {
2273	short int *yyss1 = yyss;
2274	union yyalloc *yyptr =
2275	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2276	if (! yyptr)
2277	  goto yyoverflowlab;
2278	YYSTACK_RELOCATE (yyss);
2279	YYSTACK_RELOCATE (yyvs);
2280
2281#  undef YYSTACK_RELOCATE
2282	if (yyss1 != yyssa)
2283	  YYSTACK_FREE (yyss1);
2284      }
2285# endif
2286#endif /* no yyoverflow */
2287
2288      yyssp = yyss + yysize - 1;
2289      yyvsp = yyvs + yysize - 1;
2290
2291
2292      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2293		  (unsigned long int) yystacksize));
2294
2295      if (yyss + yystacksize - 1 <= yyssp)
2296	YYABORT;
2297    }
2298
2299  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2300
2301  goto yybackup;
2302
2303/*-----------.
2304| yybackup.  |
2305`-----------*/
2306yybackup:
2307
2308/* Do appropriate processing given the current state.  */
2309/* Read a look-ahead token if we need one and don't already have one.  */
2310/* yyresume: */
2311
2312  /* First try to decide what to do without reference to look-ahead token.  */
2313
2314  yyn = yypact[yystate];
2315  if (yyn == YYPACT_NINF)
2316    goto yydefault;
2317
2318  /* Not known => get a look-ahead token if don't already have one.  */
2319
2320  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
2321  if (yychar == YYEMPTY)
2322    {
2323      YYDPRINTF ((stderr, "Reading a token: "));
2324      yychar = YYLEX;
2325    }
2326
2327  if (yychar <= YYEOF)
2328    {
2329      yychar = yytoken = YYEOF;
2330      YYDPRINTF ((stderr, "Now at end of input.\n"));
2331    }
2332  else
2333    {
2334      yytoken = YYTRANSLATE (yychar);
2335      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2336    }
2337
2338  /* If the proper action on seeing token YYTOKEN is to reduce or to
2339     detect an error, take that action.  */
2340  yyn += yytoken;
2341  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2342    goto yydefault;
2343  yyn = yytable[yyn];
2344  if (yyn <= 0)
2345    {
2346      if (yyn == 0 || yyn == YYTABLE_NINF)
2347	goto yyerrlab;
2348      yyn = -yyn;
2349      goto yyreduce;
2350    }
2351
2352  if (yyn == YYFINAL)
2353    YYACCEPT;
2354
2355  /* Shift the look-ahead token.  */
2356  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2357
2358  /* Discard the token being shifted unless it is eof.  */
2359  if (yychar != YYEOF)
2360    yychar = YYEMPTY;
2361
2362  *++yyvsp = yylval;
2363
2364
2365  /* Count tokens shifted since error; after three, turn off error
2366     status.  */
2367  if (yyerrstatus)
2368    yyerrstatus--;
2369
2370  yystate = yyn;
2371  goto yynewstate;
2372
2373
2374/*-----------------------------------------------------------.
2375| yydefault -- do the default action for the current state.  |
2376`-----------------------------------------------------------*/
2377yydefault:
2378  yyn = yydefact[yystate];
2379  if (yyn == 0)
2380    goto yyerrlab;
2381  goto yyreduce;
2382
2383
2384/*-----------------------------.
2385| yyreduce -- Do a reduction.  |
2386`-----------------------------*/
2387yyreduce:
2388  /* yyn is the number of a rule to reduce with.  */
2389  yylen = yyr2[yyn];
2390
2391  /* If YYLEN is nonzero, implement the default value of the action:
2392     `$$ = $1'.
2393
2394     Otherwise, the following line sets YYVAL to garbage.
2395     This behavior is undocumented and Bison
2396     users should not rely upon it.  Assigning to YYVAL
2397     unconditionally makes the parser a bit smaller, and it avoids a
2398     GCC warning that YYVAL may be used uninitialized.  */
2399  yyval = yyvsp[1-yylen];
2400
2401
2402  YY_REDUCE_PRINT (yyn);
2403  switch (yyn)
2404    {
2405        case 2:
2406#line 98 "awkgram.y"
2407    { if (errorflag==0)
2408			winner = (Node *)stat3(PROGRAM, beginloc, (yyvsp[0].p), endloc); }
2409    break;
2410
2411  case 3:
2412#line 100 "awkgram.y"
2413    { yyclearin; bracecheck(); SYNTAX("bailing out"); }
2414    break;
2415
2416  case 14:
2417#line 124 "awkgram.y"
2418    {inloop++;}
2419    break;
2420
2421  case 15:
2422#line 125 "awkgram.y"
2423    { --inloop; (yyval.p) = stat4(FOR, (yyvsp[-9].p), notnull((yyvsp[-6].p)), (yyvsp[-3].p), (yyvsp[0].p)); }
2424    break;
2425
2426  case 16:
2427#line 126 "awkgram.y"
2428    {inloop++;}
2429    break;
2430
2431  case 17:
2432#line 127 "awkgram.y"
2433    { --inloop; (yyval.p) = stat4(FOR, (yyvsp[-7].p), NIL, (yyvsp[-3].p), (yyvsp[0].p)); }
2434    break;
2435
2436  case 18:
2437#line 128 "awkgram.y"
2438    {inloop++;}
2439    break;
2440
2441  case 19:
2442#line 129 "awkgram.y"
2443    { --inloop; (yyval.p) = stat3(IN, (yyvsp[-5].p), makearr((yyvsp[-3].p)), (yyvsp[0].p)); }
2444    break;
2445
2446  case 20:
2447#line 133 "awkgram.y"
2448    { setfname((yyvsp[0].cp)); }
2449    break;
2450
2451  case 21:
2452#line 134 "awkgram.y"
2453    { setfname((yyvsp[0].cp)); }
2454    break;
2455
2456  case 22:
2457#line 138 "awkgram.y"
2458    { (yyval.p) = notnull((yyvsp[-1].p)); }
2459    break;
2460
2461  case 27:
2462#line 150 "awkgram.y"
2463    { (yyval.i) = 0; }
2464    break;
2465
2466  case 29:
2467#line 155 "awkgram.y"
2468    { (yyval.i) = 0; }
2469    break;
2470
2471  case 31:
2472#line 161 "awkgram.y"
2473    { (yyval.p) = 0; }
2474    break;
2475
2476  case 33:
2477#line 166 "awkgram.y"
2478    { (yyval.p) = 0; }
2479    break;
2480
2481  case 34:
2482#line 167 "awkgram.y"
2483    { (yyval.p) = (yyvsp[-1].p); }
2484    break;
2485
2486  case 35:
2487#line 171 "awkgram.y"
2488    { (yyval.p) = notnull((yyvsp[0].p)); }
2489    break;
2490
2491  case 36:
2492#line 175 "awkgram.y"
2493    { (yyval.p) = stat2(PASTAT, (yyvsp[0].p), stat2(PRINT, rectonode(), NIL)); }
2494    break;
2495
2496  case 37:
2497#line 176 "awkgram.y"
2498    { (yyval.p) = stat2(PASTAT, (yyvsp[-3].p), (yyvsp[-1].p)); }
2499    break;
2500
2501  case 38:
2502#line 177 "awkgram.y"
2503    { (yyval.p) = pa2stat((yyvsp[-2].p), (yyvsp[0].p), stat2(PRINT, rectonode(), NIL)); }
2504    break;
2505
2506  case 39:
2507#line 178 "awkgram.y"
2508    { (yyval.p) = pa2stat((yyvsp[-5].p), (yyvsp[-3].p), (yyvsp[-1].p)); }
2509    break;
2510
2511  case 40:
2512#line 179 "awkgram.y"
2513    { (yyval.p) = stat2(PASTAT, NIL, (yyvsp[-1].p)); }
2514    break;
2515
2516  case 41:
2517#line 181 "awkgram.y"
2518    { beginloc = linkum(beginloc, (yyvsp[-1].p)); (yyval.p) = 0; }
2519    break;
2520
2521  case 42:
2522#line 183 "awkgram.y"
2523    { endloc = linkum(endloc, (yyvsp[-1].p)); (yyval.p) = 0; }
2524    break;
2525
2526  case 43:
2527#line 184 "awkgram.y"
2528    {infunc++;}
2529    break;
2530
2531  case 44:
2532#line 185 "awkgram.y"
2533    { infunc--; curfname=0; defn((Cell *)(yyvsp[-7].p), (yyvsp[-5].p), (yyvsp[-1].p)); (yyval.p) = 0; }
2534    break;
2535
2536  case 46:
2537#line 190 "awkgram.y"
2538    { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); }
2539    break;
2540
2541  case 48:
2542#line 195 "awkgram.y"
2543    { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); }
2544    break;
2545
2546  case 49:
2547#line 199 "awkgram.y"
2548    { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); }
2549    break;
2550
2551  case 50:
2552#line 201 "awkgram.y"
2553    { (yyval.p) = op3(CONDEXPR, notnull((yyvsp[-4].p)), (yyvsp[-2].p), (yyvsp[0].p)); }
2554    break;
2555
2556  case 51:
2557#line 203 "awkgram.y"
2558    { (yyval.p) = op2(BOR, notnull((yyvsp[-2].p)), notnull((yyvsp[0].p))); }
2559    break;
2560
2561  case 52:
2562#line 205 "awkgram.y"
2563    { (yyval.p) = op2(AND, notnull((yyvsp[-2].p)), notnull((yyvsp[0].p))); }
2564    break;
2565
2566  case 53:
2567#line 206 "awkgram.y"
2568    { (yyval.p) = op3((yyvsp[-1].i), NIL, (yyvsp[-2].p), (Node*)makedfa((yyvsp[0].s), 0)); }
2569    break;
2570
2571  case 54:
2572#line 208 "awkgram.y"
2573    { if (constnode((yyvsp[0].p)))
2574			(yyval.p) = op3((yyvsp[-1].i), NIL, (yyvsp[-2].p), (Node*)makedfa(strnode((yyvsp[0].p)), 0));
2575		  else
2576			(yyval.p) = op3((yyvsp[-1].i), (Node *)1, (yyvsp[-2].p), (yyvsp[0].p)); }
2577    break;
2578
2579  case 55:
2580#line 212 "awkgram.y"
2581    { (yyval.p) = op2(INTEST, (yyvsp[-2].p), makearr((yyvsp[0].p))); }
2582    break;
2583
2584  case 56:
2585#line 213 "awkgram.y"
2586    { (yyval.p) = op2(INTEST, (yyvsp[-3].p), makearr((yyvsp[0].p))); }
2587    break;
2588
2589  case 57:
2590#line 214 "awkgram.y"
2591    { (yyval.p) = op2(CAT, (yyvsp[-1].p), (yyvsp[0].p)); }
2592    break;
2593
2594  case 60:
2595#line 220 "awkgram.y"
2596    { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); }
2597    break;
2598
2599  case 61:
2600#line 222 "awkgram.y"
2601    { (yyval.p) = op3(CONDEXPR, notnull((yyvsp[-4].p)), (yyvsp[-2].p), (yyvsp[0].p)); }
2602    break;
2603
2604  case 62:
2605#line 224 "awkgram.y"
2606    { (yyval.p) = op2(BOR, notnull((yyvsp[-2].p)), notnull((yyvsp[0].p))); }
2607    break;
2608
2609  case 63:
2610#line 226 "awkgram.y"
2611    { (yyval.p) = op2(AND, notnull((yyvsp[-2].p)), notnull((yyvsp[0].p))); }
2612    break;
2613
2614  case 64:
2615#line 227 "awkgram.y"
2616    { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); }
2617    break;
2618
2619  case 65:
2620#line 228 "awkgram.y"
2621    { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); }
2622    break;
2623
2624  case 66:
2625#line 229 "awkgram.y"
2626    { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); }
2627    break;
2628
2629  case 67:
2630#line 230 "awkgram.y"
2631    { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); }
2632    break;
2633
2634  case 68:
2635#line 231 "awkgram.y"
2636    { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); }
2637    break;
2638
2639  case 69:
2640#line 232 "awkgram.y"
2641    { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); }
2642    break;
2643
2644  case 70:
2645#line 233 "awkgram.y"
2646    { (yyval.p) = op3((yyvsp[-1].i), NIL, (yyvsp[-2].p), (Node*)makedfa((yyvsp[0].s), 0)); }
2647    break;
2648
2649  case 71:
2650#line 235 "awkgram.y"
2651    { if (constnode((yyvsp[0].p)))
2652			(yyval.p) = op3((yyvsp[-1].i), NIL, (yyvsp[-2].p), (Node*)makedfa(strnode((yyvsp[0].p)), 0));
2653		  else
2654			(yyval.p) = op3((yyvsp[-1].i), (Node *)1, (yyvsp[-2].p), (yyvsp[0].p)); }
2655    break;
2656
2657  case 72:
2658#line 239 "awkgram.y"
2659    { (yyval.p) = op2(INTEST, (yyvsp[-2].p), makearr((yyvsp[0].p))); }
2660    break;
2661
2662  case 73:
2663#line 240 "awkgram.y"
2664    { (yyval.p) = op2(INTEST, (yyvsp[-3].p), makearr((yyvsp[0].p))); }
2665    break;
2666
2667  case 74:
2668#line 241 "awkgram.y"
2669    {
2670			if (safe) SYNTAX("cmd | getline is unsafe");
2671			else (yyval.p) = op3(GETLINE, (yyvsp[0].p), itonp((yyvsp[-2].i)), (yyvsp[-3].p)); }
2672    break;
2673
2674  case 75:
2675#line 244 "awkgram.y"
2676    {
2677			if (safe) SYNTAX("cmd | getline is unsafe");
2678			else (yyval.p) = op3(GETLINE, (Node*)0, itonp((yyvsp[-1].i)), (yyvsp[-2].p)); }
2679    break;
2680
2681  case 76:
2682#line 247 "awkgram.y"
2683    { (yyval.p) = op2(CAT, (yyvsp[-1].p), (yyvsp[0].p)); }
2684    break;
2685
2686  case 79:
2687#line 253 "awkgram.y"
2688    { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); }
2689    break;
2690
2691  case 80:
2692#line 254 "awkgram.y"
2693    { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); }
2694    break;
2695
2696  case 82:
2697#line 259 "awkgram.y"
2698    { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); }
2699    break;
2700
2701  case 83:
2702#line 263 "awkgram.y"
2703    { (yyval.p) = rectonode(); }
2704    break;
2705
2706  case 85:
2707#line 265 "awkgram.y"
2708    { (yyval.p) = (yyvsp[-1].p); }
2709    break;
2710
2711  case 94:
2712#line 282 "awkgram.y"
2713    { (yyval.p) = op3(MATCH, NIL, rectonode(), (Node*)makedfa((yyvsp[0].s), 0)); }
2714    break;
2715
2716  case 95:
2717#line 283 "awkgram.y"
2718    { (yyval.p) = op1(NOT, notnull((yyvsp[0].p))); }
2719    break;
2720
2721  case 96:
2722#line 287 "awkgram.y"
2723    {startreg();}
2724    break;
2725
2726  case 97:
2727#line 287 "awkgram.y"
2728    { (yyval.s) = (yyvsp[-1].s); }
2729    break;
2730
2731  case 100:
2732#line 295 "awkgram.y"
2733    {
2734			if (safe) SYNTAX("print | is unsafe");
2735			else (yyval.p) = stat3((yyvsp[-3].i), (yyvsp[-2].p), itonp((yyvsp[-1].i)), (yyvsp[0].p)); }
2736    break;
2737
2738  case 101:
2739#line 298 "awkgram.y"
2740    {
2741			if (safe) SYNTAX("print >> is unsafe");
2742			else (yyval.p) = stat3((yyvsp[-3].i), (yyvsp[-2].p), itonp((yyvsp[-1].i)), (yyvsp[0].p)); }
2743    break;
2744
2745  case 102:
2746#line 301 "awkgram.y"
2747    {
2748			if (safe) SYNTAX("print > is unsafe");
2749			else (yyval.p) = stat3((yyvsp[-3].i), (yyvsp[-2].p), itonp((yyvsp[-1].i)), (yyvsp[0].p)); }
2750    break;
2751
2752  case 103:
2753#line 304 "awkgram.y"
2754    { (yyval.p) = stat3((yyvsp[-1].i), (yyvsp[0].p), NIL, NIL); }
2755    break;
2756
2757  case 104:
2758#line 305 "awkgram.y"
2759    { (yyval.p) = stat2(DELETE, makearr((yyvsp[-3].p)), (yyvsp[-1].p)); }
2760    break;
2761
2762  case 105:
2763#line 306 "awkgram.y"
2764    { (yyval.p) = stat2(DELETE, makearr((yyvsp[0].p)), 0); }
2765    break;
2766
2767  case 106:
2768#line 307 "awkgram.y"
2769    { (yyval.p) = exptostat((yyvsp[0].p)); }
2770    break;
2771
2772  case 107:
2773#line 308 "awkgram.y"
2774    { yyclearin; SYNTAX("illegal statement"); }
2775    break;
2776
2777  case 110:
2778#line 317 "awkgram.y"
2779    { if (!inloop) SYNTAX("break illegal outside of loops");
2780				  (yyval.p) = stat1(BREAK, NIL); }
2781    break;
2782
2783  case 111:
2784#line 319 "awkgram.y"
2785    {  if (!inloop) SYNTAX("continue illegal outside of loops");
2786				  (yyval.p) = stat1(CONTINUE, NIL); }
2787    break;
2788
2789  case 112:
2790#line 321 "awkgram.y"
2791    {inloop++;}
2792    break;
2793
2794  case 113:
2795#line 321 "awkgram.y"
2796    {--inloop;}
2797    break;
2798
2799  case 114:
2800#line 322 "awkgram.y"
2801    { (yyval.p) = stat2(DO, (yyvsp[-6].p), notnull((yyvsp[-2].p))); }
2802    break;
2803
2804  case 115:
2805#line 323 "awkgram.y"
2806    { (yyval.p) = stat1(EXIT, (yyvsp[-1].p)); }
2807    break;
2808
2809  case 116:
2810#line 324 "awkgram.y"
2811    { (yyval.p) = stat1(EXIT, NIL); }
2812    break;
2813
2814  case 118:
2815#line 326 "awkgram.y"
2816    { (yyval.p) = stat3(IF, (yyvsp[-3].p), (yyvsp[-2].p), (yyvsp[0].p)); }
2817    break;
2818
2819  case 119:
2820#line 327 "awkgram.y"
2821    { (yyval.p) = stat3(IF, (yyvsp[-1].p), (yyvsp[0].p), NIL); }
2822    break;
2823
2824  case 120:
2825#line 328 "awkgram.y"
2826    { (yyval.p) = (yyvsp[-1].p); }
2827    break;
2828
2829  case 121:
2830#line 329 "awkgram.y"
2831    { if (infunc)
2832				SYNTAX("next is illegal inside a function");
2833			  (yyval.p) = stat1(NEXT, NIL); }
2834    break;
2835
2836  case 122:
2837#line 332 "awkgram.y"
2838    { if (infunc)
2839				SYNTAX("nextfile is illegal inside a function");
2840			  (yyval.p) = stat1(NEXTFILE, NIL); }
2841    break;
2842
2843  case 123:
2844#line 335 "awkgram.y"
2845    { (yyval.p) = stat1(RETURN, (yyvsp[-1].p)); }
2846    break;
2847
2848  case 124:
2849#line 336 "awkgram.y"
2850    { (yyval.p) = stat1(RETURN, NIL); }
2851    break;
2852
2853  case 126:
2854#line 338 "awkgram.y"
2855    {inloop++;}
2856    break;
2857
2858  case 127:
2859#line 338 "awkgram.y"
2860    { --inloop; (yyval.p) = stat2(WHILE, (yyvsp[-2].p), (yyvsp[0].p)); }
2861    break;
2862
2863  case 128:
2864#line 339 "awkgram.y"
2865    { (yyval.p) = 0; }
2866    break;
2867
2868  case 130:
2869#line 344 "awkgram.y"
2870    { (yyval.p) = linkum((yyvsp[-1].p), (yyvsp[0].p)); }
2871    break;
2872
2873  case 133:
2874#line 352 "awkgram.y"
2875    { (yyval.p) = op2(DIVEQ, (yyvsp[-3].p), (yyvsp[0].p)); }
2876    break;
2877
2878  case 134:
2879#line 353 "awkgram.y"
2880    { (yyval.p) = op2(ADD, (yyvsp[-2].p), (yyvsp[0].p)); }
2881    break;
2882
2883  case 135:
2884#line 354 "awkgram.y"
2885    { (yyval.p) = op2(MINUS, (yyvsp[-2].p), (yyvsp[0].p)); }
2886    break;
2887
2888  case 136:
2889#line 355 "awkgram.y"
2890    { (yyval.p) = op2(MULT, (yyvsp[-2].p), (yyvsp[0].p)); }
2891    break;
2892
2893  case 137:
2894#line 356 "awkgram.y"
2895    { (yyval.p) = op2(DIVIDE, (yyvsp[-2].p), (yyvsp[0].p)); }
2896    break;
2897
2898  case 138:
2899#line 357 "awkgram.y"
2900    { (yyval.p) = op2(MOD, (yyvsp[-2].p), (yyvsp[0].p)); }
2901    break;
2902
2903  case 139:
2904#line 358 "awkgram.y"
2905    { (yyval.p) = op2(POWER, (yyvsp[-2].p), (yyvsp[0].p)); }
2906    break;
2907
2908  case 140:
2909#line 359 "awkgram.y"
2910    { (yyval.p) = op1(UMINUS, (yyvsp[0].p)); }
2911    break;
2912
2913  case 141:
2914#line 360 "awkgram.y"
2915    { (yyval.p) = (yyvsp[0].p); }
2916    break;
2917
2918  case 142:
2919#line 361 "awkgram.y"
2920    { (yyval.p) = op1(NOT, notnull((yyvsp[0].p))); }
2921    break;
2922
2923  case 143:
2924#line 362 "awkgram.y"
2925    { (yyval.p) = op2(BLTIN, itonp((yyvsp[-2].i)), rectonode()); }
2926    break;
2927
2928  case 144:
2929#line 363 "awkgram.y"
2930    { (yyval.p) = op2(BLTIN, itonp((yyvsp[-3].i)), (yyvsp[-1].p)); }
2931    break;
2932
2933  case 145:
2934#line 364 "awkgram.y"
2935    { (yyval.p) = op2(BLTIN, itonp((yyvsp[0].i)), rectonode()); }
2936    break;
2937
2938  case 146:
2939#line 365 "awkgram.y"
2940    { (yyval.p) = op2(CALL, celltonode((yyvsp[-2].cp),CVAR), NIL); }
2941    break;
2942
2943  case 147:
2944#line 366 "awkgram.y"
2945    { (yyval.p) = op2(CALL, celltonode((yyvsp[-3].cp),CVAR), (yyvsp[-1].p)); }
2946    break;
2947
2948  case 148:
2949#line 367 "awkgram.y"
2950    { (yyval.p) = op1(CLOSE, (yyvsp[0].p)); }
2951    break;
2952
2953  case 149:
2954#line 368 "awkgram.y"
2955    { (yyval.p) = op1(PREDECR, (yyvsp[0].p)); }
2956    break;
2957
2958  case 150:
2959#line 369 "awkgram.y"
2960    { (yyval.p) = op1(PREINCR, (yyvsp[0].p)); }
2961    break;
2962
2963  case 151:
2964#line 370 "awkgram.y"
2965    { (yyval.p) = op1(POSTDECR, (yyvsp[-1].p)); }
2966    break;
2967
2968  case 152:
2969#line 371 "awkgram.y"
2970    { (yyval.p) = op1(POSTINCR, (yyvsp[-1].p)); }
2971    break;
2972
2973  case 153:
2974#line 372 "awkgram.y"
2975    { (yyval.p) = op3(GETLINE, (yyvsp[-2].p), itonp((yyvsp[-1].i)), (yyvsp[0].p)); }
2976    break;
2977
2978  case 154:
2979#line 373 "awkgram.y"
2980    { (yyval.p) = op3(GETLINE, NIL, itonp((yyvsp[-1].i)), (yyvsp[0].p)); }
2981    break;
2982
2983  case 155:
2984#line 374 "awkgram.y"
2985    { (yyval.p) = op3(GETLINE, (yyvsp[0].p), NIL, NIL); }
2986    break;
2987
2988  case 156:
2989#line 375 "awkgram.y"
2990    { (yyval.p) = op3(GETLINE, NIL, NIL, NIL); }
2991    break;
2992
2993  case 157:
2994#line 377 "awkgram.y"
2995    { (yyval.p) = op2(INDEX, (yyvsp[-3].p), (yyvsp[-1].p)); }
2996    break;
2997
2998  case 158:
2999#line 379 "awkgram.y"
3000    { SYNTAX("index() doesn't permit regular expressions");
3001		  (yyval.p) = op2(INDEX, (yyvsp[-3].p), (Node*)(yyvsp[-1].s)); }
3002    break;
3003
3004  case 159:
3005#line 381 "awkgram.y"
3006    { (yyval.p) = (yyvsp[-1].p); }
3007    break;
3008
3009  case 160:
3010#line 383 "awkgram.y"
3011    { (yyval.p) = op3(MATCHFCN, NIL, (yyvsp[-3].p), (Node*)makedfa((yyvsp[-1].s), 1)); }
3012    break;
3013
3014  case 161:
3015#line 385 "awkgram.y"
3016    { if (constnode((yyvsp[-1].p)))
3017			(yyval.p) = op3(MATCHFCN, NIL, (yyvsp[-3].p), (Node*)makedfa(strnode((yyvsp[-1].p)), 1));
3018		  else
3019			(yyval.p) = op3(MATCHFCN, (Node *)1, (yyvsp[-3].p), (yyvsp[-1].p)); }
3020    break;
3021
3022  case 162:
3023#line 389 "awkgram.y"
3024    { (yyval.p) = celltonode((yyvsp[0].cp), CCON); }
3025    break;
3026
3027  case 163:
3028#line 391 "awkgram.y"
3029    { (yyval.p) = op4(SPLIT, (yyvsp[-5].p), makearr((yyvsp[-3].p)), (yyvsp[-1].p), (Node*)STRING); }
3030    break;
3031
3032  case 164:
3033#line 393 "awkgram.y"
3034    { (yyval.p) = op4(SPLIT, (yyvsp[-5].p), makearr((yyvsp[-3].p)), (Node*)makedfa((yyvsp[-1].s), 1), (Node *)REGEXPR); }
3035    break;
3036
3037  case 165:
3038#line 395 "awkgram.y"
3039    { (yyval.p) = op4(SPLIT, (yyvsp[-3].p), makearr((yyvsp[-1].p)), NIL, (Node*)STRING); }
3040    break;
3041
3042  case 166:
3043#line 396 "awkgram.y"
3044    { (yyval.p) = op1((yyvsp[-3].i), (yyvsp[-1].p)); }
3045    break;
3046
3047  case 167:
3048#line 397 "awkgram.y"
3049    { (yyval.p) = celltonode((yyvsp[0].cp), CCON); }
3050    break;
3051
3052  case 168:
3053#line 399 "awkgram.y"
3054    { (yyval.p) = op4((yyvsp[-5].i), NIL, (Node*)makedfa((yyvsp[-3].s), 1), (yyvsp[-1].p), rectonode()); }
3055    break;
3056
3057  case 169:
3058#line 401 "awkgram.y"
3059    { if (constnode((yyvsp[-3].p)))
3060			(yyval.p) = op4((yyvsp[-5].i), NIL, (Node*)makedfa(strnode((yyvsp[-3].p)), 1), (yyvsp[-1].p), rectonode());
3061		  else
3062			(yyval.p) = op4((yyvsp[-5].i), (Node *)1, (yyvsp[-3].p), (yyvsp[-1].p), rectonode()); }
3063    break;
3064
3065  case 170:
3066#line 406 "awkgram.y"
3067    { (yyval.p) = op4((yyvsp[-7].i), NIL, (Node*)makedfa((yyvsp[-5].s), 1), (yyvsp[-3].p), (yyvsp[-1].p)); }
3068    break;
3069
3070  case 171:
3071#line 408 "awkgram.y"
3072    { if (constnode((yyvsp[-5].p)))
3073			(yyval.p) = op4((yyvsp[-7].i), NIL, (Node*)makedfa(strnode((yyvsp[-5].p)), 1), (yyvsp[-3].p), (yyvsp[-1].p));
3074		  else
3075			(yyval.p) = op4((yyvsp[-7].i), (Node *)1, (yyvsp[-5].p), (yyvsp[-3].p), (yyvsp[-1].p)); }
3076    break;
3077
3078  case 172:
3079#line 413 "awkgram.y"
3080    { (yyval.p) = op3(SUBSTR, (yyvsp[-5].p), (yyvsp[-3].p), (yyvsp[-1].p)); }
3081    break;
3082
3083  case 173:
3084#line 415 "awkgram.y"
3085    { (yyval.p) = op3(SUBSTR, (yyvsp[-3].p), (yyvsp[-1].p), NIL); }
3086    break;
3087
3088  case 176:
3089#line 421 "awkgram.y"
3090    { (yyval.p) = op2(ARRAY, makearr((yyvsp[-3].p)), (yyvsp[-1].p)); }
3091    break;
3092
3093  case 177:
3094#line 422 "awkgram.y"
3095    { (yyval.p) = op1(INDIRECT, celltonode((yyvsp[0].cp), CVAR)); }
3096    break;
3097
3098  case 178:
3099#line 423 "awkgram.y"
3100    { (yyval.p) = op1(INDIRECT, (yyvsp[0].p)); }
3101    break;
3102
3103  case 179:
3104#line 427 "awkgram.y"
3105    { arglist = (yyval.p) = 0; }
3106    break;
3107
3108  case 180:
3109#line 428 "awkgram.y"
3110    { arglist = (yyval.p) = celltonode((yyvsp[0].cp),CVAR); }
3111    break;
3112
3113  case 181:
3114#line 429 "awkgram.y"
3115    {
3116			checkdup((yyvsp[-2].p), (yyvsp[0].cp));
3117			arglist = (yyval.p) = linkum((yyvsp[-2].p),celltonode((yyvsp[0].cp),CVAR)); }
3118    break;
3119
3120  case 182:
3121#line 435 "awkgram.y"
3122    { (yyval.p) = celltonode((yyvsp[0].cp), CVAR); }
3123    break;
3124
3125  case 183:
3126#line 436 "awkgram.y"
3127    { (yyval.p) = op1(ARG, itonp((yyvsp[0].i))); }
3128    break;
3129
3130  case 184:
3131#line 437 "awkgram.y"
3132    { (yyval.p) = op1(VARNF, (Node *) (yyvsp[0].cp)); }
3133    break;
3134
3135  case 185:
3136#line 442 "awkgram.y"
3137    { (yyval.p) = notnull((yyvsp[-1].p)); }
3138    break;
3139
3140
3141    }
3142
3143/* Line 1037 of yacc.c.  */
3144#line 3145 "y.tab.c"
3145
3146  yyvsp -= yylen;
3147  yyssp -= yylen;
3148
3149
3150  YY_STACK_PRINT (yyss, yyssp);
3151
3152  *++yyvsp = yyval;
3153
3154
3155  /* Now `shift' the result of the reduction.  Determine what state
3156     that goes to, based on the state we popped back to and the rule
3157     number reduced by.  */
3158
3159  yyn = yyr1[yyn];
3160
3161  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3162  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3163    yystate = yytable[yystate];
3164  else
3165    yystate = yydefgoto[yyn - YYNTOKENS];
3166
3167  goto yynewstate;
3168
3169
3170/*------------------------------------.
3171| yyerrlab -- here on detecting error |
3172`------------------------------------*/
3173yyerrlab:
3174  /* If not already recovering from an error, report this error.  */
3175  if (!yyerrstatus)
3176    {
3177      ++yynerrs;
3178#if YYERROR_VERBOSE
3179      yyn = yypact[yystate];
3180
3181      if (YYPACT_NINF < yyn && yyn < YYLAST)
3182	{
3183	  YYSIZE_T yysize = 0;
3184	  int yytype = YYTRANSLATE (yychar);
3185	  const char* yyprefix;
3186	  char *yymsg;
3187	  int yyx;
3188
3189	  /* Start YYX at -YYN if negative to avoid negative indexes in
3190	     YYCHECK.  */
3191	  int yyxbegin = yyn < 0 ? -yyn : 0;
3192
3193	  /* Stay within bounds of both yycheck and yytname.  */
3194	  int yychecklim = YYLAST - yyn;
3195	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3196	  int yycount = 0;
3197
3198	  yyprefix = ", expecting ";
3199	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3200	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3201	      {
3202		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
3203		yycount += 1;
3204		if (yycount == 5)
3205		  {
3206		    yysize = 0;
3207		    break;
3208		  }
3209	      }
3210	  yysize += (sizeof ("syntax error, unexpected ")
3211		     + yystrlen (yytname[yytype]));
3212	  yymsg = (char *) YYSTACK_ALLOC (yysize);
3213	  if (yymsg != 0)
3214	    {
3215	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
3216	      yyp = yystpcpy (yyp, yytname[yytype]);
3217
3218	      if (yycount < 5)
3219		{
3220		  yyprefix = ", expecting ";
3221		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3222		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3223		      {
3224			yyp = yystpcpy (yyp, yyprefix);
3225			yyp = yystpcpy (yyp, yytname[yyx]);
3226			yyprefix = " or ";
3227		      }
3228		}
3229	      yyerror (yymsg);
3230	      YYSTACK_FREE (yymsg);
3231	    }
3232	  else
3233	    yyerror ("syntax error; also virtual memory exhausted");
3234	}
3235      else
3236#endif /* YYERROR_VERBOSE */
3237	yyerror ("syntax error");
3238    }
3239
3240
3241
3242  if (yyerrstatus == 3)
3243    {
3244      /* If just tried and failed to reuse look-ahead token after an
3245	 error, discard it.  */
3246
3247      if (yychar <= YYEOF)
3248        {
3249          /* If at end of input, pop the error token,
3250	     then the rest of the stack, then return failure.  */
3251	  if (yychar == YYEOF)
3252	     for (;;)
3253	       {
3254
3255		 YYPOPSTACK;
3256		 if (yyssp == yyss)
3257		   YYABORT;
3258		 yydestruct ("Error: popping",
3259                             yystos[*yyssp], yyvsp);
3260	       }
3261        }
3262      else
3263	{
3264	  yydestruct ("Error: discarding", yytoken, &yylval);
3265	  yychar = YYEMPTY;
3266	}
3267    }
3268
3269  /* Else will try to reuse look-ahead token after shifting the error
3270     token.  */
3271  goto yyerrlab1;
3272
3273
3274/*---------------------------------------------------.
3275| yyerrorlab -- error raised explicitly by YYERROR.  |
3276`---------------------------------------------------*/
3277yyerrorlab:
3278
3279#ifdef __GNUC__
3280  /* Pacify GCC when the user code never invokes YYERROR and the label
3281     yyerrorlab therefore never appears in user code.  */
3282  if (0)
3283     goto yyerrorlab;
3284#endif
3285
3286yyvsp -= yylen;
3287  yyssp -= yylen;
3288  yystate = *yyssp;
3289  goto yyerrlab1;
3290
3291
3292/*-------------------------------------------------------------.
3293| yyerrlab1 -- common code for both syntax error and YYERROR.  |
3294`-------------------------------------------------------------*/
3295yyerrlab1:
3296  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
3297
3298  for (;;)
3299    {
3300      yyn = yypact[yystate];
3301      if (yyn != YYPACT_NINF)
3302	{
3303	  yyn += YYTERROR;
3304	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3305	    {
3306	      yyn = yytable[yyn];
3307	      if (0 < yyn)
3308		break;
3309	    }
3310	}
3311
3312      /* Pop the current state because it cannot handle the error token.  */
3313      if (yyssp == yyss)
3314	YYABORT;
3315
3316
3317      yydestruct ("Error: popping", yystos[yystate], yyvsp);
3318      YYPOPSTACK;
3319      yystate = *yyssp;
3320      YY_STACK_PRINT (yyss, yyssp);
3321    }
3322
3323  if (yyn == YYFINAL)
3324    YYACCEPT;
3325
3326  *++yyvsp = yylval;
3327
3328
3329  /* Shift the error token. */
3330  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3331
3332  yystate = yyn;
3333  goto yynewstate;
3334
3335
3336/*-------------------------------------.
3337| yyacceptlab -- YYACCEPT comes here.  |
3338`-------------------------------------*/
3339yyacceptlab:
3340  yyresult = 0;
3341  goto yyreturn;
3342
3343/*-----------------------------------.
3344| yyabortlab -- YYABORT comes here.  |
3345`-----------------------------------*/
3346yyabortlab:
3347  yydestruct ("Error: discarding lookahead",
3348              yytoken, &yylval);
3349  yychar = YYEMPTY;
3350  yyresult = 1;
3351  goto yyreturn;
3352
3353#ifndef yyoverflow
3354/*----------------------------------------------.
3355| yyoverflowlab -- parser overflow comes here.  |
3356`----------------------------------------------*/
3357yyoverflowlab:
3358  yyerror ("parser stack overflow");
3359  yyresult = 2;
3360  /* Fall through.  */
3361#endif
3362
3363yyreturn:
3364#ifndef yyoverflow
3365  if (yyss != yyssa)
3366    YYSTACK_FREE (yyss);
3367#endif
3368  return yyresult;
3369}
3370
3371
3372#line 445 "awkgram.y"
3373
3374
3375void setfname(Cell *p)
3376{
3377	if (isarr(p))
3378		SYNTAX("%s is an array, not a function", p->nval);
3379	else if (isfcn(p))
3380		SYNTAX("you can't define function %s more than once", p->nval);
3381	curfname = p->nval;
3382}
3383
3384int constnode(Node *p)
3385{
3386	return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
3387}
3388
3389char *strnode(Node *p)
3390{
3391	return ((Cell *)(p->narg[0]))->sval;
3392}
3393
3394Node *notnull(Node *n)
3395{
3396	switch (n->nobj) {
3397	case LE: case LT: case EQ: case NE: case GT: case GE:
3398	case BOR: case AND: case NOT:
3399		return n;
3400	default:
3401		return op2(NE, n, nullnode);
3402	}
3403}
3404
3405void checkdup(Node *vl, Cell *cp)	/* check if name already in list */
3406{
3407	char *s = cp->nval;
3408	for ( ; vl; vl = vl->nnext) {
3409		if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
3410			SYNTAX("duplicate argument %s", s);
3411			break;
3412		}
3413	}
3414}
3415
3416