aboutsummaryrefslogtreecommitdiffstats
path: root/awktab.c
diff options
context:
space:
mode:
Diffstat (limited to 'awktab.c')
-rw-r--r--awktab.c3948
1 files changed, 2163 insertions, 1785 deletions
diff --git a/awktab.c b/awktab.c
index 0eb809a1..74b46822 100644
--- a/awktab.c
+++ b/awktab.c
@@ -1,5 +1,48 @@
-# line 27 "awk.y"
+/* A Bison parser, made from awk.y */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define FUNC_CALL 258
+#define NAME 259
+#define REGEXP 260
+#define ERROR 261
+#define YNUMBER 262
+#define YSTRING 263
+#define RELOP 264
+#define APPEND_OP 265
+#define ASSIGNOP 266
+#define MATCHOP 267
+#define NEWLINE 268
+#define CONCAT_OP 269
+#define LEX_BEGIN 270
+#define LEX_END 271
+#define LEX_IF 272
+#define LEX_ELSE 273
+#define LEX_RETURN 274
+#define LEX_DELETE 275
+#define LEX_WHILE 276
+#define LEX_DO 277
+#define LEX_FOR 278
+#define LEX_BREAK 279
+#define LEX_CONTINUE 280
+#define LEX_PRINT 281
+#define LEX_PRINTF 282
+#define LEX_NEXT 283
+#define LEX_EXIT 284
+#define LEX_FUNCTION 285
+#define LEX_GETLINE 286
+#define LEX_IN 287
+#define LEX_AND 288
+#define LEX_OR 289
+#define INCREMENT 290
+#define DECREMENT 291
+#define LEX_BUILTIN 292
+#define LEX_LENGTH 293
+#define UNARY 294
+
+#line 26 "awk.y"
+
#ifdef DEBUG
#define YYDEBUG 12
#endif
@@ -42,14 +85,14 @@ NODE *variables[HASHSIZE];
extern char *source;
extern int sourceline;
-extern char *cmdline_src;
-extern char **srcfiles;
+extern struct src *srcfiles;
+extern int numfiles;
extern int errcount;
extern NODE *begin_block;
extern NODE *end_block;
-# line 76 "awk.y"
-typedef union {
+#line 73 "awk.y"
+typedef union {
long lval;
AWKNUM fval;
NODE *nodeval;
@@ -57,54 +100,2089 @@ typedef union {
char *sval;
NODE *(*ptrval)();
} YYSTYPE;
-# define FUNC_CALL 257
-# define NAME 258
-# define REGEXP 259
-# define ERROR 260
-# define YNUMBER 261
-# define YSTRING 262
-# define RELOP 263
-# define APPEND_OP 264
-# define ASSIGNOP 265
-# define MATCHOP 266
-# define NEWLINE 267
-# define CONCAT_OP 268
-# define LEX_BEGIN 269
-# define LEX_END 270
-# define LEX_IF 271
-# define LEX_ELSE 272
-# define LEX_RETURN 273
-# define LEX_DELETE 274
-# define LEX_WHILE 275
-# define LEX_DO 276
-# define LEX_FOR 277
-# define LEX_BREAK 278
-# define LEX_CONTINUE 279
-# define LEX_PRINT 280
-# define LEX_PRINTF 281
-# define LEX_NEXT 282
-# define LEX_EXIT 283
-# define LEX_FUNCTION 284
-# define LEX_GETLINE 285
-# define LEX_IN 286
-# define LEX_AND 287
-# define LEX_OR 288
-# define INCREMENT 289
-# define DECREMENT 290
-# define LEX_BUILTIN 291
-# define LEX_LENGTH 292
-# define UNARY 293
-#define yyclearin yychar = -1
-#define yyerrok yyerrflag = 0
-extern int yychar;
-extern int yyerrflag;
+
+#ifndef YYLTYPE
+typedef
+ struct yyltype
+ {
+ int timestamp;
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+ char *text;
+ }
+ yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __STDC__
+#define const
+#endif
+
+
+
+#define YYFINAL 306
+#define YYFLAG -32768
+#define YYNTBASE 61
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 294 ? yytranslate[x] : 106)
+
+static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 49, 2, 2, 52, 48, 2, 2, 53,
+ 54, 46, 44, 60, 45, 2, 47, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 40, 59, 41,
+ 2, 42, 39, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 55, 2, 56, 51, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 57, 43, 58, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 50
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 4, 6, 9, 11, 14, 15, 19, 20, 24,
+ 27, 30, 33, 35, 38, 41, 43, 45, 47, 49,
+ 51, 52, 60, 65, 67, 71, 72, 77, 83, 88,
+ 90, 93, 95, 98, 100, 103, 106, 109, 113, 115,
+ 122, 131, 140, 151, 161, 164, 167, 174, 179, 183,
+ 187, 188, 193, 200, 203, 205, 207, 214, 224, 226,
+ 229, 230, 232, 233, 236, 237, 240, 243, 246, 247,
+ 249, 251, 255, 257, 260, 264, 265, 267, 268, 270,
+ 272, 276, 278, 281, 285, 289, 290, 292, 294, 298,
+ 300, 303, 307, 311, 312, 317, 323, 328, 332, 336,
+ 340, 344, 346, 349, 353, 357, 361, 365, 371, 373,
+ 376, 377, 382, 386, 390, 394, 396, 399, 403, 407,
+ 411, 417, 419, 422, 424, 428, 432, 436, 440, 444,
+ 448, 451, 454, 457, 461, 466, 471, 473, 478, 480,
+ 483, 486, 488, 490, 493, 496, 497, 499, 501, 506,
+ 509, 512, 515, 517, 518, 520, 522
+};
+
+#endif
+
+static const short yyrhs[] = { 82,
+ 62, 82, 0, 63, 0, 62, 63, 0, 1, 0,
+ 62, 1, 0, 0, 15, 64, 74, 0, 0, 16,
+ 65, 74, 0, 15, 76, 0, 16, 76, 0, 71,
+ 74, 0, 74, 0, 71, 76, 0, 68, 70, 0,
+ 4, 0, 3, 0, 67, 0, 37, 0, 38, 0,
+ 0, 30, 69, 66, 53, 85, 102, 82, 0, 100,
+ 75, 101, 103, 0, 92, 0, 92, 105, 92, 0,
+ 0, 47, 73, 5, 47, 0, 100, 75, 101, 103,
+ 82, 0, 100, 101, 103, 82, 0, 77, 0, 75,
+ 77, 0, 1, 0, 75, 1, 0, 81, 0, 104,
+ 82, 0, 104, 82, 0, 100, 101, 0, 100, 75,
+ 101, 0, 80, 0, 21, 53, 92, 102, 82, 77,
+ 0, 22, 82, 77, 21, 53, 92, 102, 82, 0,
+ 23, 53, 4, 32, 4, 102, 82, 77, 0, 23,
+ 53, 87, 104, 92, 104, 87, 102, 82, 77, 0,
+ 23, 53, 87, 104, 104, 87, 102, 82, 77, 0,
+ 24, 76, 0, 25, 76, 0, 79, 53, 91, 102,
+ 84, 76, 0, 79, 88, 84, 76, 0, 28, 87,
+ 76, 0, 29, 87, 76, 0, 0, 19, 78, 87,
+ 76, 0, 20, 4, 55, 91, 56, 76, 0, 92,
+ 76, 0, 26, 0, 27, 0, 17, 53, 92, 102,
+ 82, 77, 0, 17, 53, 92, 102, 82, 77, 18,
+ 82, 77, 0, 13, 0, 81, 13, 0, 0, 81,
+ 0, 0, 41, 96, 0, 0, 42, 92, 0, 10,
+ 92, 0, 43, 92, 0, 0, 86, 0, 4, 0,
+ 86, 105, 4, 0, 1, 0, 86, 1, 0, 86,
+ 105, 1, 0, 0, 92, 0, 0, 89, 0, 94,
+ 0, 89, 105, 94, 0, 1, 0, 89, 1, 0,
+ 89, 1, 94, 0, 89, 105, 1, 0, 0, 91,
+ 0, 92, 0, 91, 105, 92, 0, 1, 0, 91,
+ 1, 0, 91, 1, 92, 0, 91, 105, 1, 0,
+ 0, 99, 11, 93, 92, 0, 53, 91, 102, 32,
+ 4, 0, 92, 43, 31, 98, 0, 31, 98, 83,
+ 0, 92, 33, 92, 0, 92, 34, 92, 0, 92,
+ 12, 92, 0, 72, 0, 49, 72, 0, 92, 32,
+ 4, 0, 92, 9, 92, 0, 92, 41, 92, 0,
+ 92, 42, 92, 0, 92, 39, 92, 40, 92, 0,
+ 96, 0, 92, 96, 0, 0, 99, 11, 95, 94,
+ 0, 94, 33, 94, 0, 94, 34, 94, 0, 31,
+ 98, 83, 0, 72, 0, 49, 72, 0, 94, 12,
+ 94, 0, 94, 32, 4, 0, 94, 9, 94, 0,
+ 94, 39, 94, 40, 94, 0, 96, 0, 94, 96,
+ 0, 97, 0, 96, 51, 96, 0, 96, 46, 96,
+ 0, 96, 47, 96, 0, 96, 48, 96, 0, 96,
+ 44, 96, 0, 96, 45, 96, 0, 99, 35, 0,
+ 99, 36, 0, 49, 96, 0, 53, 92, 102, 0,
+ 37, 53, 90, 102, 0, 38, 53, 90, 102, 0,
+ 38, 0, 3, 53, 90, 102, 0, 99, 0, 35,
+ 99, 0, 36, 99, 0, 7, 0, 8, 0, 45,
+ 96, 0, 44, 96, 0, 0, 99, 0, 4, 0,
+ 4, 55, 91, 56, 0, 52, 97, 0, 57, 82,
+ 0, 58, 82, 0, 54, 0, 0, 104, 0, 59,
+ 0, 60, 82, 0
+};
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 133, 138, 146, 162, 163, 167, 169, 183, 185, 199,
+ 205, 211, 213, 215, 228, 237, 239, 241, 251, 252,
+ 256, 260, 268, 277, 279, 288, 290, 308, 310, 315,
+ 317, 325, 327, 332, 333, 337, 339, 341, 343, 345,
+ 347, 349, 354, 358, 363, 366, 369, 371, 382, 400,
+ 402, 404, 406, 408, 413, 415, 420, 425, 432, 434,
+ 438, 439, 443, 445, 450, 452, 454, 456, 461, 463,
+ 468, 470, 472, 474, 476, 482, 484, 489, 491, 496,
+ 498, 504, 506, 508, 510, 515, 517, 522, 524, 530,
+ 532, 534, 536, 541, 544, 549, 551, 556, 562, 564,
+ 566, 572, 574, 582, 584, 590, 592, 594, 596, 598,
+ 603, 606, 607, 609, 611, 617, 619, 621, 623, 625,
+ 627, 629, 631, 636, 638, 640, 642, 644, 646, 648,
+ 650, 652, 657, 659, 661, 664, 666, 674, 678, 679,
+ 681, 683, 685, 688, 695, 700, 702, 707, 709, 717,
+ 722, 726, 730, 734, 735, 739, 742
+};
+
+static const char * const yytname[] = { "$","error","$illegal.","FUNC_CALL",
+"NAME","REGEXP","ERROR","YNUMBER","YSTRING","RELOP","APPEND_OP","ASSIGNOP","MATCHOP",
+"NEWLINE","CONCAT_OP","LEX_BEGIN","LEX_END","LEX_IF","LEX_ELSE","LEX_RETURN",
+"LEX_DELETE","LEX_WHILE","LEX_DO","LEX_FOR","LEX_BREAK","LEX_CONTINUE","LEX_PRINT",
+"LEX_PRINTF","LEX_NEXT","LEX_EXIT","LEX_FUNCTION","LEX_GETLINE","LEX_IN","LEX_AND",
+"LEX_OR","INCREMENT","DECREMENT","LEX_BUILTIN","LEX_LENGTH","'?'","':'","'<'",
+"'>'","'|'","'+'","'-'","'*'","'/'","'%'","'!'","UNARY","'^'","'$'","'('","')'",
+"'['","']'","'{'","'}'","';'","','","start","program","rule","@1","@2","func_name",
+"lex_builtin","function_prologue","@3","function_body","pattern","regexp","@4",
+"action","statements","statement_term","statement","@5","print","if_statement",
+"nls","opt_nls","input_redir","output_redir","opt_param_list","param_list","opt_exp",
+"opt_rexpression_list","rexpression_list","opt_expression_list","expression_list",
+"exp","@6","rexp","@7","simp_exp","non_post_simp_exp","opt_variable","variable",
+"l_brace","r_brace","r_paren","opt_semi","semi","comma",""
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 61, 62, 62, 62, 62, 64, 63, 65, 63, 63,
+ 63, 63, 63, 63, 63, 66, 66, 66, 67, 67,
+ 69, 68, 70, 71, 71, 73, 72, 74, 74, 75,
+ 75, 75, 75, 76, 76, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 78, 77, 77, 77, 79, 79, 80, 80, 81, 81,
+ 82, 82, 83, 83, 84, 84, 84, 84, 85, 85,
+ 86, 86, 86, 86, 86, 87, 87, 88, 88, 89,
+ 89, 89, 89, 89, 89, 90, 90, 91, 91, 91,
+ 91, 91, 91, 93, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 95, 94, 94, 94, 94, 94, 94, 94, 94, 94,
+ 94, 94, 94, 96, 96, 96, 96, 96, 96, 96,
+ 96, 96, 97, 97, 97, 97, 97, 97, 97, 97,
+ 97, 97, 97, 97, 97, 98, 98, 99, 99, 99,
+ 100, 101, 102, 103, 103, 104, 105
+};
+
+static const short yyr2[] = { 0,
+ 3, 1, 2, 1, 2, 0, 3, 0, 3, 2,
+ 2, 2, 1, 2, 2, 1, 1, 1, 1, 1,
+ 0, 7, 4, 1, 3, 0, 4, 5, 4, 1,
+ 2, 1, 2, 1, 2, 2, 2, 3, 1, 6,
+ 8, 8, 10, 9, 2, 2, 6, 4, 3, 3,
+ 0, 4, 6, 2, 1, 1, 6, 9, 1, 2,
+ 0, 1, 0, 2, 0, 2, 2, 2, 0, 1,
+ 1, 3, 1, 2, 3, 0, 1, 0, 1, 1,
+ 3, 1, 2, 3, 3, 0, 1, 1, 3, 1,
+ 2, 3, 3, 0, 4, 5, 4, 3, 3, 3,
+ 3, 1, 2, 3, 3, 3, 3, 5, 1, 2,
+ 0, 4, 3, 3, 3, 1, 2, 3, 3, 3,
+ 5, 1, 2, 1, 3, 3, 3, 3, 3, 3,
+ 2, 2, 2, 3, 4, 4, 1, 4, 1, 2,
+ 2, 1, 1, 2, 2, 0, 1, 1, 4, 2,
+ 2, 2, 1, 0, 1, 1, 2
+};
+
+static const short yydefact[] = { 61,
+ 59, 62, 0, 60, 4, 0, 148, 142, 143, 6,
+ 8, 21, 146, 0, 0, 0, 137, 0, 0, 26,
+ 0, 0, 0, 61, 0, 2, 0, 0, 102, 13,
+ 24, 109, 124, 139, 0, 0, 0, 156, 0, 10,
+ 34, 61, 0, 11, 0, 63, 147, 140, 141, 0,
+ 0, 0, 0, 145, 139, 144, 0, 103, 133, 150,
+ 139, 90, 0, 88, 151, 5, 3, 1, 15, 0,
+ 12, 14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 61, 110, 0, 0, 0, 0, 0, 0, 0,
+ 94, 131, 132, 32, 0, 51, 0, 0, 61, 0,
+ 0, 0, 55, 56, 76, 76, 61, 0, 30, 0,
+ 39, 0, 0, 154, 61, 0, 0, 88, 0, 7,
+ 35, 9, 17, 16, 19, 20, 0, 18, 0, 98,
+ 0, 0, 0, 0, 91, 153, 0, 0, 134, 0,
+ 105, 101, 104, 99, 100, 0, 106, 107, 146, 157,
+ 25, 129, 130, 126, 127, 128, 125, 0, 0, 76,
+ 0, 0, 0, 76, 45, 46, 0, 77, 0, 152,
+ 33, 31, 154, 82, 146, 0, 0, 116, 65, 0,
+ 80, 122, 139, 54, 0, 37, 61, 155, 36, 138,
+ 149, 0, 64, 135, 136, 27, 92, 0, 93, 89,
+ 154, 0, 97, 95, 0, 0, 0, 0, 0, 148,
+ 0, 49, 50, 61, 63, 117, 0, 0, 0, 0,
+ 0, 83, 0, 0, 0, 0, 0, 0, 0, 123,
+ 111, 38, 29, 73, 71, 0, 0, 96, 23, 108,
+ 61, 52, 0, 61, 0, 0, 0, 28, 115, 65,
+ 67, 66, 68, 48, 84, 85, 81, 120, 118, 119,
+ 113, 114, 0, 0, 61, 74, 0, 0, 0, 0,
+ 0, 0, 0, 76, 0, 0, 112, 22, 75, 72,
+ 57, 53, 40, 0, 61, 76, 0, 47, 121, 61,
+ 61, 0, 0, 61, 0, 41, 42, 61, 0, 58,
+ 0, 44, 43, 0, 0, 0
+};
+
+static const short yydefgoto[] = { 304,
+ 25, 26, 39, 43, 127, 128, 27, 45, 69, 28,
+ 29, 57, 30, 108, 40, 109, 160, 110, 111, 2,
+ 3, 130, 221, 236, 237, 167, 179, 180, 116, 117,
+ 112, 158, 181, 264, 32, 33, 46, 34, 113, 114,
+ 139, 187, 115, 138
+};
+
+static const short yypact[] = { -6,
+-32768, 8, 1094,-32768,-32768, -26, -11,-32768,-32768, -1,
+ -1,-32768, 1, 1, 1, 16, 31, 1738, 1738,-32768,
+ 1691, 1738, 1186, -6, 890,-32768, -5, -2,-32768,-32768,
+ 836, 69,-32768, 83, 612, 1166, 1186,-32768, -5,-32768,
+ 8, -6, -5,-32768, 101, 20,-32768,-32768,-32768, 1166,
+ 1166, 1738, 1606, 36, 2, 36, 62,-32768, 36,-32768,
+-32768,-32768, 5, 1299,-32768,-32768,-32768,-32768,-32768, 726,
+-32768,-32768, 1606, 1606, 93, 1606, 1606, 1606, 1606, 1606,
+ 70, -6, 69, 1606, 1738, 1738, 1738, 1738, 1738, 1738,
+-32768,-32768,-32768,-32768, 54,-32768, 105, 58, -6, 68,
+ -1, -1,-32768,-32768, 1606, 1606, -6, 679,-32768, 783,
+-32768, 994, 612, 78, -6, 86, 18, 1398, 23,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 90,-32768, 1738,-32768,
+ 86, 86, 1299, 97, 1606,-32768, 104, 1233,-32768, 679,
+ 1373, 1753,-32768, 1506, 1445, 1351, 1373, 1373, 1,-32768,
+ 1398, 130, 130, 36, 36, 36, 36, 1606, 1606, 1606,
+ 92, 1606, 937, 1625,-32768,-32768, -1, 1398, -1,-32768,
+-32768,-32768, 78,-32768, 1, 1691, 1186,-32768, 0, 3,
+ 1528, 69, 89,-32768, 679,-32768, -6,-32768,-32768,-32768,
+-32768, 14, 69,-32768,-32768,-32768, 1398, 144,-32768, 1398,
+ 78, 1606,-32768, 1398, 1299, -1, 1186, 1299, 131, -15,
+ 78,-32768,-32768, -6, 20,-32768, 5, 1606, 1606, 1606,
+ -1, 1672, 1252, 1672, 1672, 147, 1672, 1672, 1672, 69,
+-32768,-32768,-32768,-32768,-32768, 86, 28,-32768,-32768, 1398,
+ -6,-32768, 29, -6, 100, 150, 1119,-32768,-32768, 0,
+ 1398, 1398, 1398,-32768, 1528,-32768, 1528, 802, 1013,-32768,
+ 1586, 1567, 1467, 1672, -6,-32768, 35, 937, -1, 937,
+ 1606, 86, 1047, 1606, -1, 1672, 1528,-32768,-32768,-32768,
+ 140,-32768,-32768, 1299, -6, 1606, 86,-32768, 1528, -6,
+ -6, 937, 86, -6, 937,-32768,-32768, -6, 937,-32768,
+ 937,-32768,-32768, 160, 172,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768, 148,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ 91,-32768, 106, -47, 82, -99,-32768,-32768,-32768, 21,
+ 155, -40, -65,-32768,-32768, -104,-32768,-32768, 76, -9,
+ -3,-32768, 11,-32768, 325, 164, -124, 77, 103, -105,
+ 247, -147, 406, -30
+};
+
+
+#define YYLAST 1806
+
+
+static const short yytable[] = { 31,
+ 84, 169, 173, 222, 7, 135, 1, 186, 172, 218,
+ 1, 1, -79, 63, 234, -79, 246, 235, 135, 64,
+ 4, 31, 140, 135, 203, 214, 36, 119, 266, 135,
+ 41, 41, 118, 118, 201, 279, 92, 93, 280, 37,
+ 172, 219, 220, 37, -79, -79, 118, 118, 41, 133,
+ 215, 24, 22, 239, 24, 206, 38, 38, 136, 211,
+ 129, -79, 82, 209, 82, 185, 134, -69, 50, 141,
+ 142, -87, 144, 145, 146, 147, 148, 82, 191, 232,
+ 151, -70, 82, 51, 269, 172, 90, 82, 82, 47,
+ 48, 49, 44, 91, 55, 55, 143, 55, 61, 231,
+ 149, 168, 168, 123, 124, 35, 159, 55, 161, 72,
+ 162, 58, 85, 86, 87, 88, 89, 92, 93, 90,
+ 164, 41, 41, 92, 93, 131, 132, 35, 55, 70,
+ 35, 197, 41, 71, 200, 198, 38, 125, 126, 136,
+ 55, 35, 192, 196, 120, 35, 207, 238, 122, 223,
+ 260, 245, 271, 272, 204, 205, 168, 290, 208, 305,
+ 168, 55, 55, 55, 55, 55, 55, 217, 281, 287,
+ 283, 306, 67, 64, 249, 87, 88, 89, 65, 68,
+ 90, 293, 165, 166, 275, 60, 183, 41, 55, 41,
+ 0, 0, 297, 184, 55, 300, 121, 243, 240, 302,
+ 178, 303, 0, 118, 0, 55, 267, 0, 0, 55,
+ 0, 0, 0, 0, 251, 252, 253, 55, 55, 0,
+ 55, 55, 55, 55, 55, 47, 41, 55, 0, 0,
+ 0, 0, 255, 257, 258, 259, 150, 261, 262, 263,
+ 0, 41, 0, 273, 55, 0, 0, 0, 212, 0,
+ 213, 47, 55, 163, 0, 0, 0, 55, 0, 0,
+ 0, 170, 0, 0, 0, 0, 216, 284, 0, 189,
+ 168, 0, 0, 55, 277, 0, 55, 0, 0, 0,
+ 55, 55, 168, 0, 55, 0, 289, 242, 0, 41,
+ 0, 0, 0, 0, 0, 41, 0, 0, 183, 183,
+ 183, 183, 254, 183, 183, 183, 0, 0, 0, 137,
+ 0, 0, 178, 178, 178, 178, 55, 178, 178, 178,
+ 0, 0, 0, 0, 0, 0, 0, 55, 55, 55,
+ 0, 55, 0, 55, 55, 55, 0, 55, 55, 55,
+ 183, 233, 54, 56, 0, 59, 0, 0, 0, 55,
+ 282, 0, 183, 55, 178, 83, 288, 0, 0, 0,
+ 55, 0, 190, 0, 0, 55, 178, 0, 248, 0,
+ 0, 0, 0, 0, 0, 0, 59, 194, 195, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 83, 0,
+ 0, 0, 0, 0, 0, 268, 0, 0, 270, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 152,
+ 153, 154, 155, 156, 157, 42, 42, 0, 0, 278,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 42, 182, 0, 83, 0, 0, 292,
+ 0, 0, 83, 0, 295, 296, 0, 0, 299, 0,
+ 0, 241, 301, 193, 244, 0, 0, 83, 0, 0,
+ 0, 0, 0, 250, 0, 83, 83, 0, 83, 83,
+ 83, 83, 83, 0, 0, 83, 0, 0, 0, 0,
+ 0, 0, 265, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 83, 0, 0, 0, 0, 0, 0, 0,
+ 59, 0, 0, 0, 0, 230, 42, 42, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 42, 285, 188,
+ 0, 83, 0, 0, 83, 0, 0, 0, 83, 83,
+ 291, 0, 83, 294, 0, 0, 0, 0, 0, 298,
+ 0, 0, 0, 0, 0, 0, 182, 182, 182, 182,
+ 0, 182, 182, 182, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 0, 0, 0, 0, 0,
+ 0, 0, 42, 0, 42, 83, 83, 83, 188, 230,
+ 0, 230, 230, 230, 0, 230, 230, 230, 182, 0,
+ 0, 0, 0, 0, 0, 0, 0, 83, 0, 0,
+ 182, 230, 0, 0, 0, 0, 188, 0, 83, 0,
+ 0, 42, 94, 230, 6, 7, 247, 0, 8, 9,
+ 0, 0, 0, 0, 0, 0, 42, 0, 95, 0,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 0, 13, 0, 0, 0, 14, 15, 16, 17,
+ 0, 0, 274, 0, 0, 18, 19, 0, 20, 0,
+ 21, 0, 0, 22, 23, 0, 0, 0, 24, 107,
+ 38, 0, 0, 0, 42, 0, 0, 0, 286, 171,
+ 42, 6, 7, 0, 0, 8, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 95, 0, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 0, 13,
+ 0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
+ 0, 0, 18, 19, 0, 20, 94, 21, 6, 7,
+ 22, 23, 8, 9, 0, 24, 107, 38, 0, 0,
+ 0, 0, 95, 0, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 0, 13, 0, 0, 0,
+ 14, 15, 16, 17, 0, 0, 0, 0, 0, 18,
+ 19, 0, 20, 0, 21, 0, 0, 22, 23, 0,
+ 0, 0, 24, 174, 38, 6, 7, 0, 0, 8,
+ 9, 0, -78, 0, 0, -78, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 0, 0, 8, 9,
+-32768, 0, 0, 175, 0, 0, 0, 14, 15, 16,
+ 17, 0, 0, 0, -78, -78, 18, 19, 0, 20,
+ 0, 176, 0, 0, 22, 177, 14, 15, 6, 7,
+ 0, -78, 8, 9, 73, 18, 19, 74, 0, 0,
+ 52, 0, 0, 22, 53, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 75, 76, 77,
+ 14, 15, 16, 17, 78, 0, 79, 80, 81, 18,
+ 19, 0, 0, 0, 52, 0, 0, 22, 53, -61,
+ 66, 0, 6, 7, 0, 82, 8, 9, 0, 0,
+ 0, 0, 1, 0, 10, 11, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
+ 13, 0, 0, 0, 14, 15, 16, 17, 0, 0,
+ 0, 0, 0, 18, 19, 0, 20, 0, 21, 6,
+ 7, 22, 23, 8, 9, 0, 24, 0, 0, 0,
+ 0, 0, 0, 95, 0, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 0, 13, 0, 0,
+ 0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
+ 18, 19, 0, 20, 0, 21, 0, 0, 22, 23,
+ 0, 0, 0, 24, 0, 38, 6, 7, 0, 0,
+ 8, 9, 73, 0, 0, 74, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 8,
+ 9, 224, 0, 0,-32768, 75, 76, 77, 14, 15,
+ 16, 17, 78, 0, 79, 80, 81, 18, 19, 0,
+ 0, 0, 52, 0, 0, 22, 53, 14, 15, 6,
+ 7, 0, 38, 8, 9, 73, 18, 19, 74, 0,
+ 0, 52, 0, 0, 22, 53, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 75, 76,
+ 77, 14, 15, 16, 17, 78, 0, 79, 80, 81,
+ 18, 19, 0, 0, 5, 52, 6, 7, 22, 53,
+ 8, 9, 0, 0, 0, 38, 0, 0, 10, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 7, 12, 13, 8, 9, 0, 14, 15,
+ 16, 17, 0, 0, 0, 0, 0, 18, 19, 0,
+ 20, 0, 21, 0, 0, 22, 23, 0, 0, 13,
+ 24, 0, 0, 14, 15, 16, 17, 0, 0, 0,
+ 0, 0, 18, 19, 0, 20, 62, 21, 6, 7,
+ 22, 23, 8, 9, 0, 0, 0, 38, 0, 0,
+ 0, 0, 0, 0, 0, 0, 62, 0, 6, 7,
+ 0, 0, 8, 9, 0, 0, 13, 0, 0, 0,
+ 14, 15, 16, 17, 0, 0, 0, 0, 0, 18,
+ 19, 0, 20, 0, 21, 0, 13, 22, 23, -86,
+ 14, 15, 16, 17, 0, 0, 0, 0, 0, 18,
+ 19, 0, 20, 199, 21, 6, 7, 22, 23, 8,
+ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 256, 0, 6, 7, 0, 0, 8, 9,
+ 0, 0, 0, 13, 0, 0, 0, 14, 15, 16,
+ 17, 0, 0, 0, 0, 0, 18, 19, 0, 20,
+ 0, 21, 175, 0, 22, 23, 14, 15, 16, 17,
+ 0, 0, 0, 0, 0, 18, 19, 0, 20, 0,
+ 176, 6, 7, 22, 53, 8, 9, 73, 0, 0,
+ 74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 75, 76, 77, 14, 15, 16, 17, 78, 0, 79,
+ 80, 81, 18, 19, 0, 0, 0, 52, 0, 0,
+ 22, 53, 136, 6, 7, 0, 0, 8, 9, 73,
+ 0, 0, 74, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 8,
+ 9,-32768, 75, 76, 77, 14, 15, 16, 17, 78,
+ 202, 79, 80, 81, 18, 19, 0, 0, 0, 52,
+ 6, 7, 22, 53, 8, 9, 73, 14, 15, 74,
+ 0, 0, 0,-32768,-32768,-32768, 18, 19, 0, 0,
+ 0, 52, 0, 0, 22, 53, 0, 0, 0, 75,
+ 76, 77, 14, 15, 16, 17, 78, 0, 79, 80,
+ 81, 18, 19, 0, 0, 0, 52, 6, 7, 22,
+ 53, 8, 9, 73, 0, 0, 74, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 7, 0, 0, 8, 9, 224, 75, 76, 225, 14,
+ 15, 16, 17, 0, 0, 79, 80, 81, 18, 19,
+ 0, 0, 0, 52, 0, 0, 22, 53, 226, 227,
+ 228, 14, 15, 16, 17, 229, 276, 0, 6, 7,
+ 18, 19, 8, 9, 73, 52, 0, 74, 22, 53,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 7, 0, 0, 8, 9, 224, 75, 0, 225,
+ 14, 15, 16, 17, 0, 0, 79, 80, 81, 18,
+ 19, 0, 0, 0, 52, 0, 0, 22, 53, 226,
+ 227, 228, 14, 15, 16, 17, 229, 0, 0, 6,
+ 7, 18, 19, 8, 9, 224, 52, 0, 225, 22,
+ 53, 0, 0, 0, 0, 0, 0, 0, 6, 7,
+ 0, 0, 8, 9, 224, 0, 0, 225, 226, 227,
+ 0, 14, 15, 16, 17, 0, 0, 0, 6, 7,
+ 18, 19, 8, 9, 0, 52, 0, 226, 22, 53,
+ 14, 15, 16, 17, 0, 0, 0, 6, 210, 18,
+ 19, 8, 9, 0, 52, 0, 13, 22, 53, 0,
+ 14, 15, 16, 17, 0, 0, 0, 0, 0, 18,
+ 19, 0, 20, 0, 21, 13, 0, 22, 23, 14,
+ 15, 16, 17, 0, 0, 0, 0, 0, 18, 19,
+ 0, 20, 0, 21, 6, 7, 22, 23, 8, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 7, 0, 0, 8, 9, 0,
+ 0, 0, 175, 0, 0, 0, 14, 15, 16, 17,
+ 0, 0, 0, 0, 0, 18, 19, 0, 20, 0,
+ 176, 0, 0, 22, 53, 14, 15, 16, 17, 0,
+ 0, 0, 0, 0, 18, 19, 0, 20, 0, 52,
+ 6, 7, 22, 53, 8, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 8,
+ 9, 73, 0, 0,-32768, 0, 0, 0, 0, 0,
+ 0, 0, 14, 15, 16, 17, 0, 0, 0, 0,
+ 0, 18, 19, 0, 0, 0, 52, 14, 15, 22,
+ 53, 0, 0, 79, 80, 81, 18, 19, 0, 0,
+ 0, 52, 0, 0, 22, 53
+};
+
+static const short yycheck[] = { 3,
+ 31, 106, 108, 1, 4, 1, 13, 113, 108, 10,
+ 13, 13, 10, 23, 1, 13, 32, 4, 1, 23,
+ 13, 25, 70, 1, 149, 173, 53, 37, 1, 1,
+ 10, 11, 36, 37, 140, 1, 35, 36, 4, 55,
+ 140, 42, 43, 55, 42, 43, 50, 51, 28, 53,
+ 175, 57, 52, 201, 57, 160, 59, 59, 54, 164,
+ 41, 59, 60, 163, 60, 113, 5, 54, 53, 73,
+ 74, 54, 76, 77, 78, 79, 80, 60, 56, 185,
+ 84, 54, 60, 53, 56, 185, 51, 60, 60, 13,
+ 14, 15, 11, 11, 18, 19, 4, 21, 22, 11,
+ 31, 105, 106, 3, 4, 3, 53, 31, 4, 28,
+ 53, 21, 44, 45, 46, 47, 48, 35, 36, 51,
+ 53, 101, 102, 35, 36, 50, 51, 25, 52, 27,
+ 28, 135, 112, 28, 138, 32, 59, 37, 38, 54,
+ 64, 39, 53, 47, 39, 43, 55, 4, 43, 180,
+ 4, 21, 53, 4, 158, 159, 160, 18, 162, 0,
+ 164, 85, 86, 87, 88, 89, 90, 177, 268, 274,
+ 270, 0, 25, 177, 215, 46, 47, 48, 24, 25,
+ 51, 286, 101, 102, 250, 22, 110, 167, 112, 169,
+ -1, -1, 292, 112, 118, 295, 42, 207, 202, 299,
+ 110, 301, -1, 207, -1, 129, 237, -1, -1, 133,
+ -1, -1, -1, -1, 218, 219, 220, 141, 142, -1,
+ 144, 145, 146, 147, 148, 149, 206, 151, -1, -1,
+ -1, -1, 222, 223, 224, 225, 82, 227, 228, 229,
+ -1, 221, -1, 247, 168, -1, -1, -1, 167, -1,
+ 169, 175, 176, 99, -1, -1, -1, 181, -1, -1,
+ -1, 107, -1, -1, -1, -1, 176, 271, -1, 115,
+ 274, -1, -1, 197, 264, -1, 200, -1, -1, -1,
+ 204, 205, 286, -1, 208, -1, 276, 206, -1, 269,
+ -1, -1, -1, -1, -1, 275, -1, -1, 222, 223,
+ 224, 225, 221, 227, 228, 229, -1, -1, -1, 63,
+ -1, -1, 222, 223, 224, 225, 240, 227, 228, 229,
+ -1, -1, -1, -1, -1, -1, -1, 251, 252, 253,
+ -1, 255, -1, 257, 258, 259, -1, 261, 262, 263,
+ 264, 187, 18, 19, -1, 21, -1, -1, -1, 273,
+ 269, -1, 276, 277, 264, 31, 275, -1, -1, -1,
+ 284, -1, 116, -1, -1, 289, 276, -1, 214, -1,
+ -1, -1, -1, -1, -1, -1, 52, 131, 132, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 64, -1,
+ -1, -1, -1, -1, -1, 241, -1, -1, 244, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 85,
+ 86, 87, 88, 89, 90, 10, 11, -1, -1, 265,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 28, 110, -1, 112, -1, -1, 285,
+ -1, -1, 118, -1, 290, 291, -1, -1, 294, -1,
+ -1, 205, 298, 129, 208, -1, -1, 133, -1, -1,
+ -1, -1, -1, 217, -1, 141, 142, -1, 144, 145,
+ 146, 147, 148, -1, -1, 151, -1, -1, -1, -1,
+ -1, -1, 236, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 168, -1, -1, -1, -1, -1, -1, -1,
+ 176, -1, -1, -1, -1, 181, 101, 102, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 112, 272, 114,
+ -1, 197, -1, -1, 200, -1, -1, -1, 204, 205,
+ 284, -1, 208, 287, -1, -1, -1, -1, -1, 293,
+ -1, -1, -1, -1, -1, -1, 222, 223, 224, 225,
+ -1, 227, 228, 229, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 240, -1, -1, -1, -1, -1,
+ -1, -1, 167, -1, 169, 251, 252, 253, 173, 255,
+ -1, 257, 258, 259, -1, 261, 262, 263, 264, -1,
+ -1, -1, -1, -1, -1, -1, -1, 273, -1, -1,
+ 276, 277, -1, -1, -1, -1, 201, -1, 284, -1,
+ -1, 206, 1, 289, 3, 4, 211, -1, 7, 8,
+ -1, -1, -1, -1, -1, -1, 221, -1, 17, -1,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, -1, 31, -1, -1, -1, 35, 36, 37, 38,
+ -1, -1, 247, -1, -1, 44, 45, -1, 47, -1,
+ 49, -1, -1, 52, 53, -1, -1, -1, 57, 58,
+ 59, -1, -1, -1, 269, -1, -1, -1, 273, 1,
+ 275, 3, 4, -1, -1, 7, 8, -1, -1, -1,
+ -1, -1, -1, -1, -1, 17, -1, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, -1, 31,
+ -1, -1, -1, 35, 36, 37, 38, -1, -1, -1,
+ -1, -1, 44, 45, -1, 47, 1, 49, 3, 4,
+ 52, 53, 7, 8, -1, 57, 58, 59, -1, -1,
+ -1, -1, 17, -1, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, -1, 31, -1, -1, -1,
+ 35, 36, 37, 38, -1, -1, -1, -1, -1, 44,
+ 45, -1, 47, -1, 49, -1, -1, 52, 53, -1,
+ -1, -1, 57, 1, 59, 3, 4, -1, -1, 7,
+ 8, -1, 10, -1, -1, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4, -1, -1, 7, 8,
+ 9, -1, -1, 31, -1, -1, -1, 35, 36, 37,
+ 38, -1, -1, -1, 42, 43, 44, 45, -1, 47,
+ -1, 49, -1, -1, 52, 53, 35, 36, 3, 4,
+ -1, 59, 7, 8, 9, 44, 45, 12, -1, -1,
+ 49, -1, -1, 52, 53, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 32, 33, 34,
+ 35, 36, 37, 38, 39, -1, 41, 42, 43, 44,
+ 45, -1, -1, -1, 49, -1, -1, 52, 53, 0,
+ 1, -1, 3, 4, -1, 60, 7, 8, -1, -1,
+ -1, -1, 13, -1, 15, 16, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 30,
+ 31, -1, -1, -1, 35, 36, 37, 38, -1, -1,
+ -1, -1, -1, 44, 45, -1, 47, -1, 49, 3,
+ 4, 52, 53, 7, 8, -1, 57, -1, -1, -1,
+ -1, -1, -1, 17, -1, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, -1, 31, -1, -1,
+ -1, 35, 36, 37, 38, -1, -1, -1, -1, -1,
+ 44, 45, -1, 47, -1, 49, -1, -1, 52, 53,
+ -1, -1, -1, 57, -1, 59, 3, 4, -1, -1,
+ 7, 8, 9, -1, -1, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4, -1, -1, 7,
+ 8, 9, -1, -1, 12, 32, 33, 34, 35, 36,
+ 37, 38, 39, -1, 41, 42, 43, 44, 45, -1,
+ -1, -1, 49, -1, -1, 52, 53, 35, 36, 3,
+ 4, -1, 59, 7, 8, 9, 44, 45, 12, -1,
+ -1, 49, -1, -1, 52, 53, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 32, 33,
+ 34, 35, 36, 37, 38, 39, -1, 41, 42, 43,
+ 44, 45, -1, -1, 1, 49, 3, 4, 52, 53,
+ 7, 8, -1, -1, -1, 59, -1, -1, 15, 16,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 30, 31, 7, 8, -1, 35, 36,
+ 37, 38, -1, -1, -1, -1, -1, 44, 45, -1,
+ 47, -1, 49, -1, -1, 52, 53, -1, -1, 31,
+ 57, -1, -1, 35, 36, 37, 38, -1, -1, -1,
+ -1, -1, 44, 45, -1, 47, 1, 49, 3, 4,
+ 52, 53, 7, 8, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
+ -1, -1, 7, 8, -1, -1, 31, -1, -1, -1,
+ 35, 36, 37, 38, -1, -1, -1, -1, -1, 44,
+ 45, -1, 47, -1, 49, -1, 31, 52, 53, 54,
+ 35, 36, 37, 38, -1, -1, -1, -1, -1, 44,
+ 45, -1, 47, 1, 49, 3, 4, 52, 53, 7,
+ 8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 1, -1, 3, 4, -1, -1, 7, 8,
+ -1, -1, -1, 31, -1, -1, -1, 35, 36, 37,
+ 38, -1, -1, -1, -1, -1, 44, 45, -1, 47,
+ -1, 49, 31, -1, 52, 53, 35, 36, 37, 38,
+ -1, -1, -1, -1, -1, 44, 45, -1, 47, -1,
+ 49, 3, 4, 52, 53, 7, 8, 9, -1, -1,
+ 12, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 32, 33, 34, 35, 36, 37, 38, 39, -1, 41,
+ 42, 43, 44, 45, -1, -1, -1, 49, -1, -1,
+ 52, 53, 54, 3, 4, -1, -1, 7, 8, 9,
+ -1, -1, 12, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4, -1, -1, 7,
+ 8, 9, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, -1, -1, -1, 49,
+ 3, 4, 52, 53, 7, 8, 9, 35, 36, 12,
+ -1, -1, -1, 41, 42, 43, 44, 45, -1, -1,
+ -1, 49, -1, -1, 52, 53, -1, -1, -1, 32,
+ 33, 34, 35, 36, 37, 38, 39, -1, 41, 42,
+ 43, 44, 45, -1, -1, -1, 49, 3, 4, 52,
+ 53, 7, 8, 9, -1, -1, 12, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ 4, -1, -1, 7, 8, 9, 32, 33, 12, 35,
+ 36, 37, 38, -1, -1, 41, 42, 43, 44, 45,
+ -1, -1, -1, 49, -1, -1, 52, 53, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, -1, 3, 4,
+ 44, 45, 7, 8, 9, 49, -1, 12, 52, 53,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, -1, -1, 7, 8, 9, 32, -1, 12,
+ 35, 36, 37, 38, -1, -1, 41, 42, 43, 44,
+ 45, -1, -1, -1, 49, -1, -1, 52, 53, 32,
+ 33, 34, 35, 36, 37, 38, 39, -1, -1, 3,
+ 4, 44, 45, 7, 8, 9, 49, -1, 12, 52,
+ 53, -1, -1, -1, -1, -1, -1, -1, 3, 4,
+ -1, -1, 7, 8, 9, -1, -1, 12, 32, 33,
+ -1, 35, 36, 37, 38, -1, -1, -1, 3, 4,
+ 44, 45, 7, 8, -1, 49, -1, 32, 52, 53,
+ 35, 36, 37, 38, -1, -1, -1, 3, 4, 44,
+ 45, 7, 8, -1, 49, -1, 31, 52, 53, -1,
+ 35, 36, 37, 38, -1, -1, -1, -1, -1, 44,
+ 45, -1, 47, -1, 49, 31, -1, 52, 53, 35,
+ 36, 37, 38, -1, -1, -1, -1, -1, 44, 45,
+ -1, 47, -1, 49, 3, 4, 52, 53, 7, 8,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, -1, -1, 7, 8, -1,
+ -1, -1, 31, -1, -1, -1, 35, 36, 37, 38,
+ -1, -1, -1, -1, -1, 44, 45, -1, 47, -1,
+ 49, -1, -1, 52, 53, 35, 36, 37, 38, -1,
+ -1, -1, -1, -1, 44, 45, -1, 47, -1, 49,
+ 3, 4, 52, 53, 7, 8, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4, -1, -1, 7,
+ 8, 9, -1, -1, 12, -1, -1, -1, -1, -1,
+ -1, -1, 35, 36, 37, 38, -1, -1, -1, -1,
+ -1, 44, 45, -1, -1, -1, 49, 35, 36, 52,
+ 53, -1, -1, 41, 42, 43, 44, 45, -1, -1,
+ -1, 49, -1, -1, 52, 53
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/local/lib/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#define YYLEX yylex(&yylval, &yylloc)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 150
+#define YYMAXDEPTH 10000
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_bcopy (from, to, count)
+ char *from;
+ char *to;
+ int count;
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_bcopy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 169 "/local/lib/bison.simple"
+int
+yyparse()
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+#ifdef YYLSP_NEEDED
+ &yyls1, size * sizeof (*yylsp),
+#endif
+ &yystacksize);
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
+#endif
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 1:
+#line 134 "awk.y"
+{ expression_value = yyvsp[-1].nodeval; ;
+ break;}
+case 2:
+#line 139 "awk.y"
+{
+ if (yyvsp[0].nodeval != NULL)
+ yyval.nodeval = yyvsp[0].nodeval;
+ else
+ yyval.nodeval = NULL;
+ yyerrok;
+ ;
+ break;}
+case 3:
+#line 148 "awk.y"
+{
+ if (yyvsp[0].nodeval == NULL)
+ yyval.nodeval = yyvsp[-1].nodeval;
+ else if (yyvsp[-1].nodeval == NULL)
+ yyval.nodeval = yyvsp[0].nodeval;
+ else {
+ if (yyvsp[-1].nodeval->type != Node_rule_list)
+ yyvsp[-1].nodeval = node(yyvsp[-1].nodeval, Node_rule_list,
+ (NODE*)NULL);
+ yyval.nodeval = append_right (yyvsp[-1].nodeval,
+ node(yyvsp[0].nodeval, Node_rule_list,(NODE *) NULL));
+ }
+ yyerrok;
+ ;
+ break;}
+case 4:
+#line 162 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 5:
+#line 163 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 6:
+#line 167 "awk.y"
+{ io_allowed = 0; ;
+ break;}
+case 7:
+#line 169 "awk.y"
+{
+ if (begin_block) {
+ if (begin_block->type != Node_rule_list)
+ begin_block = node(begin_block, Node_rule_list,
+ (NODE *)NULL);
+ (void) append_right (begin_block, node(
+ node((NODE *)NULL, Node_rule_node, yyvsp[0].nodeval),
+ Node_rule_list, (NODE *)NULL) );
+ } else
+ begin_block = node((NODE *)NULL, Node_rule_node, yyvsp[0].nodeval);
+ yyval.nodeval = NULL;
+ io_allowed = 1;
+ yyerrok;
+ ;
+ break;}
+case 8:
+#line 183 "awk.y"
+{ io_allowed = 0; ;
+ break;}
+case 9:
+#line 185 "awk.y"
+{
+ if (end_block) {
+ if (end_block->type != Node_rule_list)
+ end_block = node(end_block, Node_rule_list,
+ (NODE *)NULL);
+ (void) append_right (end_block, node(
+ node((NODE *)NULL, Node_rule_node, yyvsp[0].nodeval),
+ Node_rule_list, (NODE *)NULL));
+ } else
+ end_block = node((NODE *)NULL, Node_rule_node, yyvsp[0].nodeval);
+ yyval.nodeval = NULL;
+ io_allowed = 1;
+ yyerrok;
+ ;
+ break;}
+case 10:
+#line 200 "awk.y"
+{
+ warning("BEGIN blocks must have an action part");
+ errcount++;
+ yyerrok;
+ ;
+ break;}
+case 11:
+#line 206 "awk.y"
+{
+ warning("END blocks must have an action part");
+ errcount++;
+ yyerrok;
+ ;
+ break;}
+case 12:
+#line 212 "awk.y"
+{ yyval.nodeval = node (yyvsp[-1].nodeval, Node_rule_node, yyvsp[0].nodeval); yyerrok; ;
+ break;}
+case 13:
+#line 214 "awk.y"
+{ yyval.nodeval = node ((NODE *)NULL, Node_rule_node, yyvsp[0].nodeval); yyerrok; ;
+ break;}
+case 14:
+#line 216 "awk.y"
+{
+ yyval.nodeval = node (yyvsp[-1].nodeval,
+ Node_rule_node,
+ node(node(node(make_number(0.0),
+ Node_field_spec,
+ (NODE *) NULL),
+ Node_expression_list,
+ (NODE *) NULL),
+ Node_K_print,
+ (NODE *) NULL));
+ yyerrok;
+ ;
+ break;}
+case 15:
+#line 229 "awk.y"
+{
+ func_install(yyvsp[-1].nodeval, yyvsp[0].nodeval);
+ yyval.nodeval = NULL;
+ yyerrok;
+ ;
+ break;}
+case 16:
+#line 238 "awk.y"
+{ yyval.sval = yyvsp[0].sval; ;
+ break;}
+case 17:
+#line 240 "awk.y"
+{ yyval.sval = yyvsp[0].sval; ;
+ break;}
+case 18:
+#line 242 "awk.y"
+{
+ yyerror("%s() is a built-in function, it cannot be redefined",
+ tokstart);
+ errcount++;
+ /* yyerrok; */
+ ;
+ break;}
+case 21:
+#line 257 "awk.y"
+{
+ param_counter = 0;
+ ;
+ break;}
+case 22:
+#line 261 "awk.y"
+{
+ yyval.nodeval = append_right(make_param(yyvsp[-4].sval), yyvsp[-2].nodeval);
+ can_return = 1;
+ ;
+ break;}
+case 23:
+#line 269 "awk.y"
+{
+ yyval.nodeval = yyvsp[-2].nodeval;
+ can_return = 0;
+ ;
+ break;}
+case 24:
+#line 278 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 25:
+#line 280 "awk.y"
+{ yyval.nodeval = mkrangenode ( node(yyvsp[-2].nodeval, Node_cond_pair, yyvsp[0].nodeval) ); ;
+ break;}
+case 26:
+#line 289 "awk.y"
+{ ++want_regexp; ;
+ break;}
+case 27:
+#line 291 "awk.y"
+{
+ NODE *n;
+ int len;
+
+ getnode(n);
+ n->type = Node_regex;
+ len = strlen(yyvsp[-1].sval);
+ n->re_exp = make_string(yyvsp[-1].sval, len);
+ n->re_reg = make_regexp(yyvsp[-1].sval, len, 0, 1);
+ n->re_text = NULL;
+ n->re_flags = CONST;
+ n->re_cnt = 1;
+ yyval.nodeval = n;
+ ;
+ break;}
+case 28:
+#line 309 "awk.y"
+{ yyval.nodeval = yyvsp[-3].nodeval ; ;
+ break;}
+case 29:
+#line 311 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 30:
+#line 316 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 31:
+#line 318 "awk.y"
+{
+ if (yyvsp[-1].nodeval == NULL || yyvsp[-1].nodeval->type != Node_statement_list)
+ yyvsp[-1].nodeval = node(yyvsp[-1].nodeval, Node_statement_list,(NODE *)NULL);
+ yyval.nodeval = append_right(yyvsp[-1].nodeval,
+ node( yyvsp[0].nodeval, Node_statement_list, (NODE *)NULL));
+ yyerrok;
+ ;
+ break;}
+case 32:
+#line 326 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 33:
+#line 328 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 36:
+#line 338 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 37:
+#line 340 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 38:
+#line 342 "awk.y"
+{ yyval.nodeval = yyvsp[-1].nodeval; ;
+ break;}
+case 39:
+#line 344 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 40:
+#line 346 "awk.y"
+{ yyval.nodeval = node (yyvsp[-3].nodeval, Node_K_while, yyvsp[0].nodeval); ;
+ break;}
+case 41:
+#line 348 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_K_do, yyvsp[-5].nodeval); ;
+ break;}
+case 42:
+#line 350 "awk.y"
+{
+ yyval.nodeval = node (yyvsp[0].nodeval, Node_K_arrayfor, make_for_loop(variable(yyvsp[-5].sval,1),
+ (NODE *)NULL, variable(yyvsp[-3].sval,1)));
+ ;
+ break;}
+case 43:
+#line 355 "awk.y"
+{
+ yyval.nodeval = node(yyvsp[0].nodeval, Node_K_for, (NODE *)make_for_loop(yyvsp[-7].nodeval, yyvsp[-5].nodeval, yyvsp[-3].nodeval));
+ ;
+ break;}
+case 44:
+#line 359 "awk.y"
+{
+ yyval.nodeval = node (yyvsp[0].nodeval, Node_K_for,
+ (NODE *)make_for_loop(yyvsp[-6].nodeval, (NODE *)NULL, yyvsp[-3].nodeval));
+ ;
+ break;}
+case 45:
+#line 365 "awk.y"
+{ yyval.nodeval = node ((NODE *)NULL, Node_K_break, (NODE *)NULL); ;
+ break;}
+case 46:
+#line 368 "awk.y"
+{ yyval.nodeval = node ((NODE *)NULL, Node_K_continue, (NODE *)NULL); ;
+ break;}
+case 47:
+#line 370 "awk.y"
+{ yyval.nodeval = node (yyvsp[-3].nodeval, yyvsp[-5].nodetypeval, yyvsp[-1].nodeval); ;
+ break;}
+case 48:
+#line 372 "awk.y"
+{
+ if (yyvsp[-3].nodetypeval == Node_K_print && yyvsp[-2].nodeval == NULL)
+ yyvsp[-2].nodeval = node(node(make_number(0.0),
+ Node_field_spec,
+ (NODE *) NULL),
+ Node_expression_list,
+ (NODE *) NULL);
+
+ yyval.nodeval = node (yyvsp[-2].nodeval, yyvsp[-3].nodetypeval, yyvsp[-1].nodeval);
+ ;
+ break;}
+case 49:
+#line 383 "awk.y"
+{ NODETYPE type;
+
+ if (yyvsp[-1].nodeval && yyvsp[-1].nodeval == lookup("file")) {
+ if (do_lint)
+ warning("`next file' is a gawk extension");
+ else if (do_unix || do_posix)
+ yyerror("`next file' is a gawk extension");
+ else if (! io_allowed)
+ yyerror("`next file' used in BEGIN or END action");
+ type = Node_K_nextfile;
+ } else {
+ if (! io_allowed)
+ yyerror("next used in BEGIN or END action");
+ type = Node_K_next;
+ }
+ yyval.nodeval = node ((NODE *)NULL, type, (NODE *)NULL);
+ ;
+ break;}
+case 50:
+#line 401 "awk.y"
+{ yyval.nodeval = node (yyvsp[-1].nodeval, Node_K_exit, (NODE *)NULL); ;
+ break;}
+case 51:
+#line 403 "awk.y"
+{ if (! can_return) yyerror("return used outside function context"); ;
+ break;}
+case 52:
+#line 405 "awk.y"
+{ yyval.nodeval = node (yyvsp[-1].nodeval, Node_K_return, (NODE *)NULL); ;
+ break;}
+case 53:
+#line 407 "awk.y"
+{ yyval.nodeval = node (variable(yyvsp[-4].sval,1), Node_K_delete, yyvsp[-2].nodeval); ;
+ break;}
+case 54:
+#line 409 "awk.y"
+{ yyval.nodeval = yyvsp[-1].nodeval; ;
+ break;}
+case 55:
+#line 414 "awk.y"
+{ yyval.nodetypeval = yyvsp[0].nodetypeval; ;
+ break;}
+case 56:
+#line 416 "awk.y"
+{ yyval.nodetypeval = yyvsp[0].nodetypeval; ;
+ break;}
+case 57:
+#line 421 "awk.y"
+{
+ yyval.nodeval = node(yyvsp[-3].nodeval, Node_K_if,
+ node(yyvsp[0].nodeval, Node_if_branches, (NODE *)NULL));
+ ;
+ break;}
+case 58:
+#line 427 "awk.y"
+{ yyval.nodeval = node (yyvsp[-6].nodeval, Node_K_if,
+ node (yyvsp[-3].nodeval, Node_if_branches, yyvsp[0].nodeval)); ;
+ break;}
+case 59:
+#line 433 "awk.y"
+{ want_assign = 0; ;
+ break;}
+case 63:
+#line 444 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 64:
+#line 446 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_redirect_input, (NODE *)NULL); ;
+ break;}
+case 65:
+#line 451 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 66:
+#line 453 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_redirect_output, (NODE *)NULL); ;
+ break;}
+case 67:
+#line 455 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_redirect_append, (NODE *)NULL); ;
+ break;}
+case 68:
+#line 457 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_redirect_pipe, (NODE *)NULL); ;
+ break;}
+case 69:
+#line 462 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 70:
+#line 464 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 71:
+#line 469 "awk.y"
+{ yyval.nodeval = make_param(yyvsp[0].sval); ;
+ break;}
+case 72:
+#line 471 "awk.y"
+{ yyval.nodeval = append_right(yyvsp[-2].nodeval, make_param(yyvsp[0].sval)); yyerrok; ;
+ break;}
+case 73:
+#line 473 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 74:
+#line 475 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 75:
+#line 477 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 76:
+#line 483 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 77:
+#line 485 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 78:
+#line 490 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 79:
+#line 492 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 80:
+#line 497 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_expression_list, (NODE *)NULL); ;
+ break;}
+case 81:
+#line 499 "awk.y"
+{
+ yyval.nodeval = append_right(yyvsp[-2].nodeval,
+ node( yyvsp[0].nodeval, Node_expression_list, (NODE *)NULL));
+ yyerrok;
+ ;
+ break;}
+case 82:
+#line 505 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 83:
+#line 507 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 84:
+#line 509 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 85:
+#line 511 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 86:
+#line 516 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 87:
+#line 518 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 88:
+#line 523 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_expression_list, (NODE *)NULL); ;
+ break;}
+case 89:
+#line 525 "awk.y"
+{
+ yyval.nodeval = append_right(yyvsp[-2].nodeval,
+ node( yyvsp[0].nodeval, Node_expression_list, (NODE *)NULL));
+ yyerrok;
+ ;
+ break;}
+case 90:
+#line 531 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 91:
+#line 533 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 92:
+#line 535 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 93:
+#line 537 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 94:
+#line 542 "awk.y"
+{ want_assign = 0; ;
+ break;}
+case 95:
+#line 544 "awk.y"
+{
+ if (do_lint && yyvsp[0].nodeval->type == Node_regex)
+ warning("Regular expression on left of assignment.");
+ yyval.nodeval = node (yyvsp[-3].nodeval, yyvsp[-2].nodetypeval, yyvsp[0].nodeval);
+ ;
+ break;}
+case 96:
+#line 550 "awk.y"
+{ yyval.nodeval = node (variable(yyvsp[0].sval,1), Node_in_array, yyvsp[-3].nodeval); ;
+ break;}
+case 97:
+#line 552 "awk.y"
+{
+ yyval.nodeval = node (yyvsp[0].nodeval, Node_K_getline,
+ node (yyvsp[-3].nodeval, Node_redirect_pipein, (NODE *)NULL));
+ ;
+ break;}
+case 98:
+#line 557 "awk.y"
+{
+ if (do_lint && ! io_allowed && yyvsp[0].nodeval == NULL)
+ warning("non-redirected getline undefined inside BEGIN or END action");
+ yyval.nodeval = node (yyvsp[-1].nodeval, Node_K_getline, yyvsp[0].nodeval);
+ ;
+ break;}
+case 99:
+#line 563 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_and, yyvsp[0].nodeval); ;
+ break;}
+case 100:
+#line 565 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_or, yyvsp[0].nodeval); ;
+ break;}
+case 101:
+#line 567 "awk.y"
+{
+ if (yyvsp[-2].nodeval->type == Node_regex)
+ warning("Regular expression on left of MATCH operator.");
+ yyval.nodeval = node (yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, mk_rexp(yyvsp[0].nodeval));
+ ;
+ break;}
+case 102:
+#line 573 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 103:
+#line 575 "awk.y"
+{
+ yyval.nodeval = node(node(make_number(0.0),
+ Node_field_spec,
+ (NODE *) NULL),
+ Node_nomatch,
+ yyvsp[0].nodeval);
+ ;
+ break;}
+case 104:
+#line 583 "awk.y"
+{ yyval.nodeval = node (variable(yyvsp[0].sval,1), Node_in_array, yyvsp[-2].nodeval); ;
+ break;}
+case 105:
+#line 585 "awk.y"
+{
+ if (do_lint && yyvsp[0].nodeval->type == Node_regex)
+ warning("Regular expression on left of comparison.");
+ yyval.nodeval = node (yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, yyvsp[0].nodeval);
+ ;
+ break;}
+case 106:
+#line 591 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_less, yyvsp[0].nodeval); ;
+ break;}
+case 107:
+#line 593 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_greater, yyvsp[0].nodeval); ;
+ break;}
+case 108:
+#line 595 "awk.y"
+{ yyval.nodeval = node(yyvsp[-4].nodeval, Node_cond_exp, node(yyvsp[-2].nodeval, Node_if_branches, yyvsp[0].nodeval));;
+ break;}
+case 109:
+#line 597 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 110:
+#line 599 "awk.y"
+{ yyval.nodeval = node (yyvsp[-1].nodeval, Node_concat, yyvsp[0].nodeval); ;
+ break;}
+case 111:
+#line 604 "awk.y"
+{ want_assign = 0; ;
+ break;}
+case 112:
+#line 606 "awk.y"
+{ yyval.nodeval = node (yyvsp[-3].nodeval, yyvsp[-2].nodetypeval, yyvsp[0].nodeval); ;
+ break;}
+case 113:
+#line 608 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_and, yyvsp[0].nodeval); ;
+ break;}
+case 114:
+#line 610 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_or, yyvsp[0].nodeval); ;
+ break;}
+case 115:
+#line 612 "awk.y"
+{
+ if (do_lint && ! io_allowed && yyvsp[0].nodeval == NULL)
+ warning("non-redirected getline undefined inside BEGIN or END action");
+ yyval.nodeval = node (yyvsp[-1].nodeval, Node_K_getline, yyvsp[0].nodeval);
+ ;
+ break;}
+case 116:
+#line 618 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 117:
+#line 620 "awk.y"
+{ yyval.nodeval = node((NODE *) NULL, Node_nomatch, yyvsp[0].nodeval); ;
+ break;}
+case 118:
+#line 622 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, mk_rexp(yyvsp[0].nodeval)); ;
+ break;}
+case 119:
+#line 624 "awk.y"
+{ yyval.nodeval = node (variable(yyvsp[0].sval,1), Node_in_array, yyvsp[-2].nodeval); ;
+ break;}
+case 120:
+#line 626 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, yyvsp[0].nodeval); ;
+ break;}
+case 121:
+#line 628 "awk.y"
+{ yyval.nodeval = node(yyvsp[-4].nodeval, Node_cond_exp, node(yyvsp[-2].nodeval, Node_if_branches, yyvsp[0].nodeval));;
+ break;}
+case 122:
+#line 630 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 123:
+#line 632 "awk.y"
+{ yyval.nodeval = node (yyvsp[-1].nodeval, Node_concat, yyvsp[0].nodeval); ;
+ break;}
+case 125:
+#line 639 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_exp, yyvsp[0].nodeval); ;
+ break;}
+case 126:
+#line 641 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_times, yyvsp[0].nodeval); ;
+ break;}
+case 127:
+#line 643 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_quotient, yyvsp[0].nodeval); ;
+ break;}
+case 128:
+#line 645 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_mod, yyvsp[0].nodeval); ;
+ break;}
+case 129:
+#line 647 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_plus, yyvsp[0].nodeval); ;
+ break;}
+case 130:
+#line 649 "awk.y"
+{ yyval.nodeval = node (yyvsp[-2].nodeval, Node_minus, yyvsp[0].nodeval); ;
+ break;}
+case 131:
+#line 651 "awk.y"
+{ yyval.nodeval = node (yyvsp[-1].nodeval, Node_postincrement, (NODE *)NULL); ;
+ break;}
+case 132:
+#line 653 "awk.y"
+{ yyval.nodeval = node (yyvsp[-1].nodeval, Node_postdecrement, (NODE *)NULL); ;
+ break;}
+case 133:
+#line 658 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_not,(NODE *) NULL); ;
+ break;}
+case 134:
+#line 660 "awk.y"
+{ yyval.nodeval = yyvsp[-1].nodeval; ;
+ break;}
+case 135:
+#line 663 "awk.y"
+{ yyval.nodeval = snode (yyvsp[-1].nodeval, Node_builtin, (int) yyvsp[-3].lval); ;
+ break;}
+case 136:
+#line 665 "awk.y"
+{ yyval.nodeval = snode (yyvsp[-1].nodeval, Node_builtin, (int) yyvsp[-3].lval); ;
+ break;}
+case 137:
+#line 667 "awk.y"
+{
+ if (do_lint)
+ warning("call of `length' without parentheses is not portable");
+ yyval.nodeval = snode ((NODE *)NULL, Node_builtin, (int) yyvsp[0].lval);
+ if (do_posix)
+ warning( "call of `length' without parentheses is deprecated by POSIX");
+ ;
+ break;}
+case 138:
+#line 675 "awk.y"
+{
+ yyval.nodeval = node (yyvsp[-1].nodeval, Node_func_call, make_string(yyvsp[-3].sval, strlen(yyvsp[-3].sval)));
+ ;
+ break;}
+case 140:
+#line 680 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_preincrement, (NODE *)NULL); ;
+ break;}
+case 141:
+#line 682 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_predecrement, (NODE *)NULL); ;
+ break;}
+case 142:
+#line 684 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 143:
+#line 686 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 144:
+#line 689 "awk.y"
+{ if (yyvsp[0].nodeval->type == Node_val) {
+ yyvsp[0].nodeval->numbr = -(force_number(yyvsp[0].nodeval));
+ yyval.nodeval = yyvsp[0].nodeval;
+ } else
+ yyval.nodeval = node (yyvsp[0].nodeval, Node_unary_minus, (NODE *)NULL);
+ ;
+ break;}
+case 145:
+#line 696 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 146:
+#line 701 "awk.y"
+{ yyval.nodeval = NULL; ;
+ break;}
+case 147:
+#line 703 "awk.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 148:
+#line 708 "awk.y"
+{ yyval.nodeval = variable(yyvsp[0].sval,1); ;
+ break;}
+case 149:
+#line 710 "awk.y"
+{
+ if (yyvsp[-1].nodeval->rnode == NULL) {
+ yyval.nodeval = node (variable(yyvsp[-3].sval,1), Node_subscript, yyvsp[-1].nodeval->lnode);
+ freenode(yyvsp[-1].nodeval);
+ } else
+ yyval.nodeval = node (variable(yyvsp[-3].sval,1), Node_subscript, yyvsp[-1].nodeval);
+ ;
+ break;}
+case 150:
+#line 718 "awk.y"
+{ yyval.nodeval = node (yyvsp[0].nodeval, Node_field_spec, (NODE *)NULL); ;
+ break;}
+case 152:
+#line 726 "awk.y"
+{ yyerrok; ;
+ break;}
+case 153:
+#line 730 "awk.y"
+{ yyerrok; ;
+ break;}
+case 156:
+#line 739 "awk.y"
+{ yyerrok; want_assign = 0; ;
+ break;}
+case 157:
+#line 742 "awk.y"
+{ yyerrok; ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 442 "/local/lib/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
#endif
-YYSTYPE yylval, yyval;
-# define YYERRCODE 256
-# line 751 "awk.y"
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 745 "awk.y"
struct token {
@@ -182,7 +2260,7 @@ yyerror(va_alist)
va_dcl
{
va_list args;
- char *mesg;
+ char *mesg = NULL;
register char *bp, *cp;
char *scan;
char buf[120];
@@ -191,7 +2269,12 @@ va_dcl
/* Find the current line in the input file */
if (lexptr) {
if (!thisline) {
- for (cp=lexeme; cp != lexptr_begin && *cp != '\n'; --cp)
+ cp = lexeme;
+ if (*cp == '\n') {
+ cp--;
+ mesg = "unexpected newline";
+ }
+ for ( ; cp != lexptr_begin && *cp != '\n'; --cp)
;
if (*cp == '\n')
cp++;
@@ -219,7 +2302,8 @@ va_dcl
*bp++ = ' ';
}
va_start(args);
- mesg = va_arg(args, char *);
+ if (mesg == NULL)
+ mesg = va_arg(args, char *);
strcpy(bp, mesg);
err("", buf, args);
va_end(args);
@@ -239,13 +2323,14 @@ get_src_buf()
static int did_newline = 0;
# define SLOP 128 /* enough space to hold most source lines */
- if (cmdline_src) {
+ if (nextfile > numfiles)
+ return NULL;
+
+ if (srcfiles[nextfile].stype == CMDLINE) {
if (len == 0) {
- len = strlen(cmdline_src);
- if (len == 0)
- cmdline_src = NULL;
+ len = strlen(srcfiles[nextfile].val);
sourceline = 1;
- lexptr = lexptr_begin = cmdline_src;
+ lexptr = lexptr_begin = srcfiles[nextfile].val;
lexend = lexptr + len;
} else if (!did_newline && *(lexptr-1) != '\n') {
/*
@@ -271,15 +2356,22 @@ get_src_buf()
lexeme = lexptr - offset;
lexptr_begin = buf;
lexend = lexptr + 1;
- } else
+ } else {
+ len = 0;
lexeme = lexptr = lexptr_begin = NULL;
+ }
+ if (lexptr == NULL && ++nextfile <= numfiles)
+ return get_src_buf();
return lexptr;
}
if (!samefile) {
- source = srcfiles[nextfile];
+ source = srcfiles[nextfile].val;
if (source == NULL) {
- if (buf)
+ if (buf) {
free(buf);
+ buf = NULL;
+ }
+ len = 0;
return lexeme = lexptr = lexptr_begin = NULL;
}
fd = pathopen(source);
@@ -309,7 +2401,7 @@ get_src_buf()
}
linelen = lexptr - scan;
if (linelen > SLOP)
- len = SLOP;
+ linelen = SLOP;
thisline = buf + SLOP - linelen;
memcpy(thisline, scan, linelen);
lexeme = buf + SLOP - offset;
@@ -322,6 +2414,7 @@ get_src_buf()
if (n == 0) {
samefile = 0;
nextfile++;
+ len = 0;
return get_src_buf();
}
lexptr = buf + SLOP;
@@ -348,14 +2441,15 @@ tokexpand()
return token;
}
-#ifdef DEBUG
+#if DEBUG
char
nextc() {
if (lexptr && lexptr < lexend)
return *lexptr++;
- if (get_src_buf())
+ else if (get_src_buf())
return *lexptr++;
- return '\0';
+ else
+ return '\0';
}
#else
#define nextc() ((lexptr && lexptr < lexend) ? \
@@ -428,7 +2522,7 @@ retry:
while ((c = nextc()) == ' ' || c == '\t')
;
- lexeme = lexptr-1;
+ lexeme = lexptr ? lexptr - 1 : lexptr;
thisline = NULL;
token = tokstart;
yylval.nodetypeval = Node_illegal;
@@ -451,7 +2545,7 @@ retry:
case '\\':
#ifdef RELAXED_CONTINUATION
- if (!strict) { /* strip trailing white-space and/or comment */
+ if (!do_unix) { /* strip trailing white-space and/or comment */
while ((c = nextc()) == ' ' || c == '\t') continue;
if (c == '#')
while ((c = nextc()) != '\n') if (!c) break;
@@ -815,7 +2909,7 @@ retry:
warning("%s is not supported in old awk",
tokentab[mid].operator);
}
- if ((strict && (tokentab[mid].flags & GAWKX))
+ if ((do_unix && (tokentab[mid].flags & GAWKX))
|| (do_posix && (tokentab[mid].flags & NOT_POSIX)))
break;
if (tokentab[mid].class == LEX_BUILTIN
@@ -996,6 +3090,7 @@ NODE *value;
hp->hlength = len;
hp->hvalue = value;
hp->hname = name;
+ hp->hvalue->vname = name;
return hp->hvalue;
}
@@ -1148,1720 +3243,3 @@ NODE *exp;
return n;
}
}
-int yyexca[] ={
--1, 1,
- 0, -1,
- -2, 0,
--1, 5,
- 0, 61,
- -2, 0,
--1, 77,
- 264, 78,
- 267, 78,
- 62, 78,
- 124, 78,
- 59, 78,
- -2, 0,
--1, 112,
- 41, 86,
- -2, 0,
--1, 113,
- 41, 86,
- -2, 0,
--1, 126,
- 266, 0,
- -2, 101,
--1, 128,
- 263, 0,
- 60, 0,
- 62, 0,
- 124, 0,
- -2, 105,
--1, 129,
- 263, 0,
- 60, 0,
- 62, 0,
- 124, 0,
- -2, 106,
--1, 130,
- 263, 0,
- 60, 0,
- 62, 0,
- 124, 0,
- -2, 107,
--1, 149,
- 264, 79,
- 267, 79,
- 62, 79,
- 124, 79,
- 59, 79,
- -2, 0,
--1, 188,
- 41, 86,
- -2, 0,
--1, 190,
- 41, 87,
- -2, 0,
--1, 224,
- 41, 69,
- -2, 0,
--1, 253,
- 266, 0,
- -2, 118,
--1, 255,
- 263, 0,
- -2, 120,
--1, 263,
- 41, 70,
- -2, 0,
- };
-# define YYNPROD 161
-# define YYLAST 1998
-int yyact[]={
-
- 62, 216, 107, 13, 87, 229, 13, 88, 89, 166,
- 165, 123, 240, 297, 4, 82, 45, 37, 91, 45,
- 292, 265, 291, 264, 204, 88, 89, 187, 88, 89,
- 270, 24, 171, 266, 254, 155, 63, 161, 24, 127,
- 176, 65, 98, 168, 169, 36, 52, 35, 157, 25,
- 63, 174, 82, 122, 63, 124, 125, 126, 22, 128,
- 129, 130, 131, 93, 136, 82, 189, 203, 66, 63,
- 100, 82, 103, 222, 107, 64, 177, 101, 63, 158,
- 158, 45, 102, 22, 103, 276, 206, 63, 232, 101,
- 104, 174, 105, 269, 102, 224, 188, 163, 16, 178,
- 144, 142, 113, 112, 6, 11, 133, 26, 186, 111,
- 39, 257, 140, 186, 186, 170, 48, 94, 231, 99,
- 160, 110, 82, 109, 86, 46, 41, 121, 159, 100,
- 114, 115, 108, 134, 99, 99, 167, 164, 77, 262,
- 71, 100, 82, 198, 82, 158, 141, 118, 91, 148,
- 149, 263, 120, 10, 27, 20, 5, 1, 24, 50,
- 12, 158, 17, 192, 223, 36, 0, 35, 0, 25,
- 0, 225, 226, 228, 0, 0, 152, 0, 0, 0,
- 191, 45, 207, 197, 0, 0, 0, 193, 0, 186,
- 134, 0, 0, 201, 0, 237, 99, 241, 195, 99,
- 99, 99, 99, 99, 99, 245, 246, 247, 0, 221,
- 134, 0, 199, 0, 0, 0, 190, 217, 0, 0,
- 0, 0, 94, 186, 4, 20, 205, 4, 24, 0,
- 0, 0, 17, 0, 90, 36, 0, 35, 0, 25,
- 0, 0, 0, 271, 0, 22, 0, 68, 172, 152,
- 0, 45, 94, 23, 99, 233, 0, 236, 258, 30,
- 23, 0, 280, 33, 34, 213, 172, 0, 211, 82,
- 282, 0, 20, 158, 0, 24, 99, 0, 82, 17,
- 0, 172, 36, 0, 35, 158, 25, 153, 212, 209,
- 172, 31, 32, 28, 29, 82, 279, 0, 45, 208,
- 0, 0, 82, 82, 82, 0, 152, 152, 152, 152,
- 152, 273, 152, 152, 152, 22, 20, 68, 0, 24,
- 0, 285, 155, 17, 185, 24, 36, 0, 35, 98,
- 25, 0, 36, 295, 35, 0, 25, 281, 0, 0,
- 0, 0, 45, 0, 0, 0, 289, 152, 0, 152,
- 152, 152, 152, 0, 152, 152, 152, 0, 0, 0,
- 0, 0, 22, 299, 202, 0, 0, 0, 0, 0,
- 304, 305, 306, 152, 152, 0, 0, 0, 135, 30,
- 23, 0, 0, 33, 34, 0, 152, 0, 0, 0,
- 0, 0, 0, 83, 0, 80, 81, 72, 73, 74,
- 75, 76, 84, 85, 78, 79, 22, 18, 0, 0,
- 0, 31, 32, 28, 29, 20, 0, 0, 24, 0,
- 215, 0, 17, 0, 0, 36, 0, 35, 0, 25,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 260,
- 0, 45, 59, 0, 60, 61, 0, 0, 67, 30,
- 23, 0, 0, 33, 34, 0, 0, 0, 0, 0,
- 0, 0, 0, 83, 0, 80, 81, 72, 73, 74,
- 75, 76, 84, 85, 78, 79, 0, 18, 0, 0,
- 0, 31, 32, 28, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 67, 30, 23, 150, 0,
- 33, 34, 21, 0, 0, 0, 53, 0, 0, 0,
- 83, 0, 80, 81, 72, 73, 74, 75, 76, 84,
- 85, 78, 79, 96, 18, 0, 0, 0, 31, 32,
- 28, 29, 0, 0, 0, 0, 0, 0, 116, 117,
- 30, 23, 0, 0, 33, 34, 2, 23, 0, 0,
- 33, 34, 38, 0, 83, 0, 80, 81, 72, 73,
- 74, 75, 76, 84, 85, 78, 79, 0, 18, 106,
- 0, 0, 31, 32, 28, 29, 0, 0, 31, 32,
- 156, 0, 0, 0, 0, 20, 0, 0, 24, 0,
- 0, 119, 17, 0, 0, 36, 0, 35, 0, 25,
- 96, 0, 0, 179, 180, 181, 182, 183, 184, 0,
- 132, 0, 59, 0, 60, 138, 139, 0, 0, 0,
- 143, 0, 0, 0, 0, 0, 0, 0, 248, 250,
- 251, 252, 253, 0, 255, 256, 0, 0, 0, 30,
- 23, 0, 0, 33, 34, 58, 0, 0, 56, 4,
- 0, 0, 20, 156, 0, 24, 0, 0, 96, 17,
- 174, 0, 36, 0, 35, 0, 25, 18, 57, 54,
- 55, 31, 32, 28, 29, 0, 53, 0, 275, 59,
- 230, 60, 61, 196, 0, 0, 70, 0, 0, 14,
- 0, 0, 14, 20, 0, 287, 24, 14, 0, 51,
- 17, 0, 0, 36, 0, 35, 0, 25, 0, 0,
- 156, 156, 156, 156, 156, 0, 156, 156, 156, 45,
- 59, 0, 60, 61, 0, 0, 0, 0, 14, 0,
- 0, 0, 0, 14, 0, 0, 0, 0, 20, 0,
- 0, 24, 238, 53, 0, 17, 0, 0, 36, 0,
- 35, 156, 25, 156, 156, 156, 156, 0, 156, 156,
- 156, 0, 0, 194, 0, 59, 0, 60, 61, 0,
- 0, 0, 0, 0, 0, 0, 0, 156, 156, 0,
- 0, 0, 20, 0, 53, 24, 268, 0, 0, 17,
- 156, 0, 36, 63, 35, 0, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 277, 59,
- 23, 60, 61, 33, 34, 58, 0, 0, 0, 0,
- 0, 20, 0, 0, 24, 290, 0, 0, 17, 53,
- 294, 36, 0, 35, 0, 25, 0, 0, 0, 0,
- 298, 31, 32, 301, 302, 0, 0, 303, 59, 0,
- 60, 61, 0, 0, 0, 0, 0, 0, 155, 0,
- 0, 24, 0, 0, 0, 98, 0, 0, 36, 0,
- 35, 0, 25, 53, 0, 0, 30, 23, 0, 0,
- 33, 34, 58, 274, 0, 56, 0, 0, 214, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 18, 57, 54, 55, 31, 32,
- 28, 29, 53, 0, 0, 0, 0, 30, 23, 0,
- 0, 33, 34, 58, 0, 0, 56, 20, 0, 0,
- 24, 0, 0, 0, 17, 0, 0, 36, 0, 35,
- 0, 25, 0, 0, 0, 18, 57, 54, 55, 31,
- 32, 28, 29, 0, 59, 0, 60, 0, 0, 0,
- 0, 0, 30, 23, 0, 0, 33, 34, 58, 155,
- 0, 56, 24, 0, 0, 155, 98, 0, 24, 36,
- 0, 35, 98, 25, 0, 36, 0, 35, 0, 25,
- 18, 57, 54, 55, 31, 32, 28, 29, 0, 214,
- 0, 0, 0, 19, 0, 0, 30, 23, 0, 0,
- 33, 34, 58, 20, 0, 56, 24, 0, 53, 0,
- 17, 0, 0, 36, 95, 35, 0, 25, 0, 0,
- 0, 0, 0, 0, 18, 57, 54, 55, 31, 32,
- 28, 29, 0, 0, 0, 30, 23, 0, 0, 33,
- 34, 58, 20, 0, 56, 24, 0, 0, 0, 17,
- 0, 0, 36, 0, 35, 0, 25, 0, 0, 0,
- 0, 0, 0, 18, 57, 54, 55, 31, 32, 28,
- 29, 154, 30, 23, 0, 0, 33, 34, 213, 0,
- 0, 211, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 153, 212, 209, 210, 31, 32, 28, 29, 20, 0,
- 0, 24, 0, 0, 0, 17, 0, 0, 36, 0,
- 35, 0, 25, 0, 155, 0, 0, 24, 0, 0,
- 0, 98, 22, 0, 36, 59, 35, 60, 25, 0,
- 0, 30, 23, 0, 154, 33, 34, 58, 0, 218,
- 56, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
- 57, 54, 0, 31, 32, 28, 29, 0, 0, 0,
- 0, 0, 0, 30, 23, 0, 0, 33, 34, 213,
- 23, 0, 211, 33, 34, 213, 0, 0, 0, 53,
- 0, 154, 154, 154, 154, 154, 0, 154, 154, 154,
- 0, 153, 212, 209, 210, 31, 32, 28, 29, 0,
- 0, 31, 32, 0, 0, 0, 40, 30, 23, 0,
- 0, 33, 34, 0, 0, 0, 0, 4, 0, 8,
- 9, 0, 154, 0, 154, 154, 154, 154, 0, 154,
- 154, 154, 0, 0, 15, 18, 0, 0, 0, 31,
- 32, 28, 29, 0, 0, 7, 30, 23, 154, 154,
- 33, 34, 0, 0, 0, 0, 0, 20, 8, 9,
- 24, 154, 0, 0, 17, 0, 0, 36, 0, 35,
- 0, 25, 0, 15, 18, 0, 0, 0, 31, 32,
- 28, 29, 20, 45, 0, 24, 0, 0, 0, 17,
- 0, 0, 36, 0, 35, 155, 25, 0, 24, 0,
- 0, 0, 98, 0, 0, 36, 0, 35, 0, 25,
- 0, 0, 30, 23, 0, 0, 33, 34, 58, 0,
- 0, 56, 0, 0, 0, 0, 0, 0, 30, 23,
- 0, 0, 33, 34, 213, 0, 0, 211, 0, 0,
- 18, 57, 0, 0, 31, 32, 28, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 153, 212, 0, 0,
- 31, 32, 28, 29, 20, 0, 0, 24, 0, 0,
- 175, 17, 155, 0, 36, 24, 35, 0, 25, 147,
- 0, 0, 36, 0, 35, 0, 25, 0, 0, 0,
- 20, 0, 0, 24, 0, 0, 0, 17, 0, 0,
- 36, 0, 35, 0, 25, 0, 0, 0, 0, 0,
- 0, 155, 0, 0, 24, 0, 0, 0, 98, 0,
- 0, 36, 0, 35, 0, 25, 20, 0, 0, 24,
- 0, 0, 0, 17, 0, 0, 36, 0, 35, 0,
- 25, 0, 0, 0, 0, 0, 0, 0, 97, 0,
- 0, 24, 0, 0, 0, 98, 0, 0, 36, 0,
- 35, 173, 25, 97, 0, 0, 24, 0, 0, 0,
- 98, 0, 0, 36, 0, 35, 0, 0, 0, 0,
- 0, 30, 23, 0, 20, 33, 34, 24, 0, 0,
- 0, 17, 0, 0, 36, 0, 35, 0, 25, 0,
- 0, 0, 0, 0, 0, 92, 30, 23, 0, 18,
- 33, 34, 0, 31, 32, 28, 29, 0, 249, 30,
- 23, 0, 0, 33, 34, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 18, 0, 0, 0, 31, 32,
- 28, 29, 0, 0, 0, 0, 0, 153, 0, 0,
- 0, 31, 32, 28, 29, 0, 0, 0, 0, 0,
- 234, 0, 235, 0, 0, 0, 0, 0, 0, 239,
- 0, 0, 0, 243, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 227, 30, 23,
- 0, 0, 33, 34, 261, 151, 30, 23, 69, 0,
- 33, 34, 0, 0, 267, 0, 0, 44, 44, 44,
- 0, 0, 0, 0, 30, 23, 18, 0, 33, 34,
- 31, 32, 28, 29, 153, 0, 0, 0, 31, 32,
- 28, 29, 0, 278, 3, 30, 23, 0, 0, 33,
- 34, 283, 18, 43, 43, 43, 31, 32, 28, 29,
- 30, 200, 0, 293, 33, 34, 296, 0, 0, 0,
- 0, 0, 0, 153, 137, 0, 300, 31, 32, 28,
- 29, 0, 30, 23, 44, 44, 33, 34, 18, 0,
- 0, 44, 31, 32, 28, 29, 0, 30, 23, 0,
- 42, 33, 34, 0, 0, 0, 0, 0, 0, 0,
- 47, 49, 0, 0, 31, 32, 28, 29, 0, 23,
- 43, 43, 33, 34, 0, 0, 0, 43, 0, 31,
- 32, 28, 29, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 137, 0, 0, 0, 0, 0, 0, 0,
- 31, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 44, 0, 44, 0,
- 0, 0, 0, 0, 0, 0, 145, 146, 0, 0,
- 0, 0, 0, 162, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 137, 43, 0, 43, 0, 0, 0, 0, 0,
- 242, 0, 44, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 43, 0,
- 0, 272, 0, 0, 0, 0, 0, 0, 219, 0,
- 220, 0, 0, 0, 0, 0, 43, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 284, 0, 44, 0, 0, 44, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 244, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 43, 0,
- 0, 43, 259, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 286, 0, 0, 288 };
-int yypact[]={
-
- -253, -1000, 1019, -250, -1000, 980, -1000, -1000, -43, -43,
- -40, -1000, -65, 749, 192, -1000, -261, 1279, -5, -1000,
- 1445, 47, -253, -17, 1460, -1000, -1000, -1000, -1000, 63,
- 62, -5, -5, -1000, -1000, 1460, 1460, -1000, -1000, -1000,
- -1000, -65, -1000, -250, -253, -1000, -65, -1000, -1000, -1000,
- -1000, 239, 1387, -274, 1387, 1387, 1387, -219, 1387, 1387,
- 1387, 1387, 1481, -253, 122, 22, -1000, -1000, -253, -253,
- 192, -1000, 61, -253, 60, -43, -43, 1369, 1387, 1387,
- -1000, -221, 382, 57, -1000, -1000, -248, -1000, -1000, -1000,
- 10, 619, -1000, 16, -1000, -1000, -24, 1460, 1387, -282,
- 1460, 1460, 1460, 1460, 1460, 1460, -1000, 1279, -1000, -1000,
- -232, 56, 1279, 1279, -1000, -1000, -24, -24, -1000, -1000,
- -1000, 122, 788, -5, 1085, 894, 552, -1000, 1481, 1481,
- 1481, 705, -1000, 22, -1000, -1000, -253, -1000, -1000, -1000,
- -1000, 122, 1387, 283, 1423, -1000, -1000, 1279, -38, 43,
- 936, -1000, -264, -5, -1000, 1445, 47, -43, 788, -43,
- 1387, -18, -1000, 1387, 55, -1000, -1000, -1000, -1000, -1000,
- 1387, 1361, 1387, -281, -1000, -1000, -1000, 1460, 619, -24,
- -24, -24, -24, 35, 35, 25, 788, 41, 1279, 50,
- 34, 50, 22, -1000, 1387, -253, -1000, -1000, 619, -263,
- -89, 22, 10, -43, 1387, 1387, 1387, 1292, 1408, 1408,
- 1408, 1408, -224, 1408, 1408, 289, -1000, 16, -1000, -1000,
- -1000, -43, 1279, 619, -235, 788, 788, -1000, 788, -225,
- 47, -1000, -1000, 50, -1000, -1000, -1000, 788, -1000, -253,
- 53, -228, 1254, -38, -1000, 788, 788, 788, 936, -1000,
- 936, 1101, 2, 942, -1000, 289, 825, 1408, -1000, -1000,
- -8, -253, 50, 6, -1000, -1000, -1000, -1000, 283, 1387,
- 50, 660, 1387, -43, 1408, 936, -43, 283, -253, -236,
- -1000, -1000, 619, -253, 1387, 50, -1000, 936, -1000, -259,
- -1000, -1000, -1000, -253, 283, 50, -253, -253, -1000, -1000,
- -253, 283, 283, 283, -1000, -1000, -1000 };
-int yypgo[]={
-
- 0, 160, 159, 420, 0, 157, 156, 104, 502, 107,
- 154, 153, 105, 98, 151, 150, 149, 216, 66, 75,
- 68, 140, 139, 48, 63, 1003, 40, 67, 138, 137,
- 136, 546, 126, 125, 1720, 124, 1400, 686, 41, 64,
- 32, 121, 1664, 1628, 120, 115, 111, 109 };
-int yyr1[]={
-
- 0, 5, 6, 6, 6, 6, 32, 7, 33, 7,
- 7, 7, 7, 7, 7, 7, 29, 29, 29, 30,
- 30, 35, 1, 2, 11, 11, 41, 25, 12, 12,
- 19, 19, 19, 19, 34, 34, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 44, 20, 20, 20, 28, 28, 21, 21, 42,
- 42, 31, 31, 26, 26, 27, 27, 27, 27, 22,
- 22, 14, 14, 14, 14, 14, 23, 23, 16, 16,
- 15, 15, 15, 15, 15, 15, 18, 18, 17, 17,
- 17, 17, 17, 17, 45, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 46, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 8, 8, 8, 8, 8, 8,
- 8, 8, 9, 9, 47, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 10, 10, 10, 24, 24,
- 13, 13, 13, 13, 37, 38, 36, 39, 39, 43,
- 40 };
-int yyr2[]={
-
- 0, 7, 3, 5, 3, 5, 1, 7, 1, 7,
- 5, 5, 5, 3, 5, 5, 3, 3, 3, 2,
- 2, 1, 15, 9, 3, 7, 1, 9, 11, 9,
- 3, 5, 3, 5, 2, 4, 5, 5, 7, 3,
- 13, 17, 17, 21, 19, 5, 5, 13, 9, 7,
- 7, 1, 9, 13, 5, 3, 3, 13, 19, 3,
- 4, 0, 2, 1, 5, 1, 5, 5, 5, 1,
- 3, 3, 7, 3, 5, 7, 1, 3, 1, 3,
- 3, 7, 3, 5, 7, 7, 1, 3, 3, 7,
- 3, 5, 7, 7, 1, 9, 11, 9, 7, 7,
- 7, 7, 3, 5, 7, 7, 7, 7, 11, 3,
- 5, 1, 9, 7, 7, 7, 3, 5, 7, 7,
- 7, 11, 3, 5, 2, 2, 7, 7, 7, 7,
- 7, 7, 5, 7, 1, 11, 9, 3, 9, 5,
- 5, 3, 3, 5, 5, 5, 5, 2, 1, 3,
- 3, 9, 5, 5, 4, 5, 3, 0, 2, 3,
- 5 };
-int yychk[]={
-
- -1000, -5, -31, -42, 267, -6, -7, 256, 269, 270,
- -11, -12, -1, -4, -37, 284, -13, 40, 285, -25,
- 33, -8, 123, 258, 36, 47, -9, -10, 291, 292,
- 257, 289, 290, 261, 262, 45, 43, 267, -31, -7,
- 256, -32, -34, -42, -43, 59, -33, -34, -12, -34,
- -2, -37, -40, 124, 287, 288, 266, 286, 263, 60,
- 62, 63, -4, 44, -19, -38, -20, 256, 125, -43,
- -37, -21, 275, 276, 277, 278, 279, -28, 282, 283,
- 273, 274, -4, 271, 280, 281, -35, 265, 289, 290,
- -17, -4, 256, -24, -13, -25, -8, 33, 40, -13,
- 94, 42, 47, 37, 43, 45, -31, 91, -9, -13,
- -41, -47, 40, 40, -13, -13, -8, -8, -12, -31,
- -12, -19, -4, 285, -4, -4, -4, 258, -4, -4,
- -4, -4, -31, -38, -20, 256, -39, -43, -31, -31,
- -38, -19, 40, -31, 40, -34, -34, 40, -16, -15,
- -3, 256, -13, 285, -25, 33, -8, -23, -4, -23,
- -44, 258, -34, 40, -29, 258, 257, -30, 291, 292,
- -45, -40, 256, -36, 41, -36, -26, 60, -4, -8,
- -8, -8, -8, -8, -8, -17, -4, 259, 40, -18,
- -17, -18, -38, -24, 58, -39, -31, -38, -4, -20,
- 258, -23, -17, -27, 62, 264, 124, -40, 256, 287,
- 288, 266, 286, 263, 63, -3, 265, -24, -25, -34,
- -34, -23, 91, -4, 40, -4, -4, 256, -4, 286,
- -8, 93, 47, -18, -36, -36, -39, -4, -31, -36,
- 275, 286, -43, -36, -34, -4, -4, -4, -3, 256,
- -3, -3, -3, -3, 258, -3, -3, -46, -26, -34,
- -17, -36, -22, -14, 258, 256, 258, -36, -31, 40,
- 258, -4, -43, -27, 58, -3, 93, -31, -36, -40,
- 256, -20, -4, -36, -43, -23, -34, -3, -34, -20,
- -31, 258, 256, -36, -31, -23, -36, 272, -31, -20,
- -36, -31, -31, -31, -20, -20, -20 };
-int yydef[]={
-
- 61, -2, 0, 62, 59, -2, 2, 4, 6, 8,
- 0, 13, 0, 24, 0, 21, 147, 0, 148, 102,
- 0, 109, 61, 150, 0, 26, 124, 125, 134, 137,
- 0, 0, 0, 141, 142, 0, 0, 60, 1, 3,
- 5, 0, 10, 34, 61, 159, 0, 11, 12, 14,
- 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 110, 61, 0, 157, 30, 32, 61, 61,
- 0, 39, 0, 61, 0, 0, 0, -2, 76, 76,
- 51, 0, 0, 0, 55, 56, 0, 94, 145, 146,
- 0, 88, 90, 63, 149, 103, 132, 0, 0, 147,
- 0, 0, 0, 0, 0, 0, 154, 0, 152, 153,
- 0, 0, -2, -2, 139, 140, 143, 144, 7, 35,
- 9, 0, 25, 148, 99, 100, -2, 104, -2, -2,
- -2, 0, 160, 157, 31, 33, 61, 158, 155, 36,
- 37, 0, 0, 0, 76, 45, 46, 0, 65, -2,
- 80, 82, 147, 148, 116, 0, 122, 0, 77, 0,
- 76, 0, 54, 0, 0, 16, 17, 18, 19, 20,
- 0, 0, 91, 0, 156, 133, 98, 0, 0, 126,
- 127, 128, 129, 130, 131, 0, 88, 0, -2, 0,
- -2, 0, 157, 97, 0, 61, 29, 38, 0, 0,
- 150, 0, 0, 0, 0, 0, 0, 0, 83, 0,
- 0, 0, 0, 0, 0, 123, 111, 63, 117, 49,
- 50, 0, 0, 0, -2, 95, 89, 93, 92, 0,
- 64, 151, 27, 0, 136, 138, 23, 108, 28, 61,
- 0, 0, 0, 65, 48, 66, 67, 68, 81, 85,
- 84, 113, 114, -2, 119, -2, 0, 0, 115, 52,
- 0, 61, 0, -2, 71, 73, 96, 135, 0, 0,
- 0, 0, 76, 0, 0, 112, 0, 0, 61, 0,
- 74, 40, 0, 61, 76, 0, 47, 121, 53, 57,
- 22, 72, 75, 61, 0, 0, 61, 61, 41, 42,
- 61, 0, 0, 0, 44, 58, 43 };
-typedef struct { char *t_name; int t_val; } yytoktype;
-#ifndef YYDEBUG
-# define YYDEBUG 0 /* don't allow debugging */
-#endif
-
-#if YYDEBUG
-
-yytoktype yytoks[] =
-{
- "FUNC_CALL", 257,
- "NAME", 258,
- "REGEXP", 259,
- "ERROR", 260,
- "YNUMBER", 261,
- "YSTRING", 262,
- "RELOP", 263,
- "APPEND_OP", 264,
- "ASSIGNOP", 265,
- "MATCHOP", 266,
- "NEWLINE", 267,
- "CONCAT_OP", 268,
- "LEX_BEGIN", 269,
- "LEX_END", 270,
- "LEX_IF", 271,
- "LEX_ELSE", 272,
- "LEX_RETURN", 273,
- "LEX_DELETE", 274,
- "LEX_WHILE", 275,
- "LEX_DO", 276,
- "LEX_FOR", 277,
- "LEX_BREAK", 278,
- "LEX_CONTINUE", 279,
- "LEX_PRINT", 280,
- "LEX_PRINTF", 281,
- "LEX_NEXT", 282,
- "LEX_EXIT", 283,
- "LEX_FUNCTION", 284,
- "LEX_GETLINE", 285,
- "LEX_IN", 286,
- "LEX_AND", 287,
- "LEX_OR", 288,
- "INCREMENT", 289,
- "DECREMENT", 290,
- "LEX_BUILTIN", 291,
- "LEX_LENGTH", 292,
- "?", 63,
- ":", 58,
- "<", 60,
- ">", 62,
- "|", 124,
- "+", 43,
- "-", 45,
- "*", 42,
- "/", 47,
- "%", 37,
- "!", 33,
- "UNARY", 293,
- "^", 94,
- "$", 36,
- "(", 40,
- ")", 41,
- "-unknown-", -1 /* ends search */
-};
-
-char * yyreds[] =
-{
- "-no such reduction-",
- "start : opt_nls program opt_nls",
- "program : rule",
- "program : program rule",
- "program : error",
- "program : program error",
- "rule : LEX_BEGIN",
- "rule : LEX_BEGIN action",
- "rule : LEX_END",
- "rule : LEX_END action",
- "rule : LEX_BEGIN statement_term",
- "rule : LEX_END statement_term",
- "rule : pattern action",
- "rule : action",
- "rule : pattern statement_term",
- "rule : function_prologue function_body",
- "func_name : NAME",
- "func_name : FUNC_CALL",
- "func_name : lex_builtin",
- "lex_builtin : LEX_BUILTIN",
- "lex_builtin : LEX_LENGTH",
- "function_prologue : LEX_FUNCTION",
- "function_prologue : LEX_FUNCTION func_name '(' opt_param_list r_paren opt_nls",
- "function_body : l_brace statements r_brace opt_semi",
- "pattern : exp",
- "pattern : exp comma exp",
- "regexp : '/'",
- "regexp : '/' REGEXP '/'",
- "action : l_brace statements r_brace opt_semi opt_nls",
- "action : l_brace r_brace opt_semi opt_nls",
- "statements : statement",
- "statements : statements statement",
- "statements : error",
- "statements : statements error",
- "statement_term : nls",
- "statement_term : semi opt_nls",
- "statement : semi opt_nls",
- "statement : l_brace r_brace",
- "statement : l_brace statements r_brace",
- "statement : if_statement",
- "statement : LEX_WHILE '(' exp r_paren opt_nls statement",
- "statement : LEX_DO opt_nls statement LEX_WHILE '(' exp r_paren opt_nls",
- "statement : LEX_FOR '(' NAME LEX_IN NAME r_paren opt_nls statement",
- "statement : LEX_FOR '(' opt_exp semi exp semi opt_exp r_paren opt_nls statement",
- "statement : LEX_FOR '(' opt_exp semi semi opt_exp r_paren opt_nls statement",
- "statement : LEX_BREAK statement_term",
- "statement : LEX_CONTINUE statement_term",
- "statement : print '(' expression_list r_paren output_redir statement_term",
- "statement : print opt_rexpression_list output_redir statement_term",
- "statement : LEX_NEXT opt_exp statement_term",
- "statement : LEX_EXIT opt_exp statement_term",
- "statement : LEX_RETURN",
- "statement : LEX_RETURN opt_exp statement_term",
- "statement : LEX_DELETE NAME '[' expression_list ']' statement_term",
- "statement : exp statement_term",
- "print : LEX_PRINT",
- "print : LEX_PRINTF",
- "if_statement : LEX_IF '(' exp r_paren opt_nls statement",
- "if_statement : LEX_IF '(' exp r_paren opt_nls statement LEX_ELSE opt_nls statement",
- "nls : NEWLINE",
- "nls : nls NEWLINE",
- "opt_nls : /* empty */",
- "opt_nls : nls",
- "input_redir : /* empty */",
- "input_redir : '<' simp_exp",
- "output_redir : /* empty */",
- "output_redir : '>' exp",
- "output_redir : APPEND_OP exp",
- "output_redir : '|' exp",
- "opt_param_list : /* empty */",
- "opt_param_list : param_list",
- "param_list : NAME",
- "param_list : param_list comma NAME",
- "param_list : error",
- "param_list : param_list error",
- "param_list : param_list comma error",
- "opt_exp : /* empty */",
- "opt_exp : exp",
- "opt_rexpression_list : /* empty */",
- "opt_rexpression_list : rexpression_list",
- "rexpression_list : rexp",
- "rexpression_list : rexpression_list comma rexp",
- "rexpression_list : error",
- "rexpression_list : rexpression_list error",
- "rexpression_list : rexpression_list error rexp",
- "rexpression_list : rexpression_list comma error",
- "opt_expression_list : /* empty */",
- "opt_expression_list : expression_list",
- "expression_list : exp",
- "expression_list : expression_list comma exp",
- "expression_list : error",
- "expression_list : expression_list error",
- "expression_list : expression_list error exp",
- "expression_list : expression_list comma error",
- "exp : variable ASSIGNOP",
- "exp : variable ASSIGNOP exp",
- "exp : '(' expression_list r_paren LEX_IN NAME",
- "exp : exp '|' LEX_GETLINE opt_variable",
- "exp : LEX_GETLINE opt_variable input_redir",
- "exp : exp LEX_AND exp",
- "exp : exp LEX_OR exp",
- "exp : exp MATCHOP exp",
- "exp : regexp",
- "exp : '!' regexp",
- "exp : exp LEX_IN NAME",
- "exp : exp RELOP exp",
- "exp : exp '<' exp",
- "exp : exp '>' exp",
- "exp : exp '?' exp ':' exp",
- "exp : simp_exp",
- "exp : exp exp",
- "rexp : variable ASSIGNOP",
- "rexp : variable ASSIGNOP rexp",
- "rexp : rexp LEX_AND rexp",
- "rexp : rexp LEX_OR rexp",
- "rexp : LEX_GETLINE opt_variable input_redir",
- "rexp : regexp",
- "rexp : '!' regexp",
- "rexp : rexp MATCHOP rexp",
- "rexp : rexp LEX_IN NAME",
- "rexp : rexp RELOP rexp",
- "rexp : rexp '?' rexp ':' rexp",
- "rexp : simp_exp",
- "rexp : rexp rexp",
- "simp_exp : non_post_simp_exp",
- "simp_exp : post_inc_dec_exp",
- "simp_exp : simp_exp '^' simp_exp",
- "simp_exp : simp_exp '*' simp_exp",
- "simp_exp : simp_exp '/' simp_exp",
- "simp_exp : simp_exp '%' simp_exp",
- "simp_exp : simp_exp '+' simp_exp",
- "simp_exp : simp_exp '-' simp_exp",
- "non_post_simp_exp : '!' simp_exp",
- "non_post_simp_exp : '(' exp r_paren",
- "non_post_simp_exp : LEX_BUILTIN",
- "non_post_simp_exp : LEX_BUILTIN '(' opt_expression_list r_paren",
- "non_post_simp_exp : LEX_LENGTH '(' opt_expression_list r_paren",
- "non_post_simp_exp : LEX_LENGTH",
- "non_post_simp_exp : FUNC_CALL '(' opt_expression_list r_paren",
- "non_post_simp_exp : INCREMENT variable",
- "non_post_simp_exp : DECREMENT variable",
- "non_post_simp_exp : YNUMBER",
- "non_post_simp_exp : YSTRING",
- "non_post_simp_exp : '-' simp_exp",
- "non_post_simp_exp : '+' simp_exp",
- "post_inc_dec_exp : variable INCREMENT",
- "post_inc_dec_exp : variable DECREMENT",
- "post_inc_dec_exp : variable",
- "opt_variable : /* empty */",
- "opt_variable : variable",
- "variable : NAME",
- "variable : NAME '[' expression_list ']'",
- "variable : '$' non_post_simp_exp",
- "variable : '$' variable",
- "l_brace : '{' opt_nls",
- "r_brace : '}' opt_nls",
- "r_paren : ')'",
- "opt_semi : /* empty */",
- "opt_semi : semi",
- "semi : ';'",
- "comma : ',' opt_nls",
-};
-#endif /* YYDEBUG */
-#line 1 "/usr/lib/yaccpar"
-/* @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10 */
-
-/*
-** Skeleton parser driver for yacc output
-*/
-
-/*
-** yacc user known macros and defines
-*/
-#define YYERROR goto yyerrlab
-#define YYACCEPT { free(yys); free(yyv); return(0); }
-#define YYABORT { free(yys); free(yyv); return(1); }
-#define YYBACKUP( newtoken, newvalue )\
-{\
- if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
- {\
- yyerror( "syntax error - cannot backup" );\
- goto yyerrlab;\
- }\
- yychar = newtoken;\
- yystate = *yyps;\
- yylval = newvalue;\
- goto yynewstate;\
-}
-#define YYRECOVERING() (!!yyerrflag)
-#ifndef YYDEBUG
-# define YYDEBUG 1 /* make debugging available */
-#endif
-
-/*
-** user known globals
-*/
-int yydebug; /* set to 1 to get debugging */
-
-/*
-** driver internal defines
-*/
-#define YYFLAG (-1000)
-
-/*
-** static variables used by the parser
-*/
-static YYSTYPE *yyv; /* value stack */
-static int *yys; /* state stack */
-
-static YYSTYPE *yypv; /* top of value stack */
-static int *yyps; /* top of state stack */
-
-static int yystate; /* current state */
-static int yytmp; /* extra var (lasts between blocks) */
-
-int yynerrs; /* number of errors */
-
-int yyerrflag; /* error recovery flag */
-int yychar; /* current input token number */
-
-
-/*
-** yyparse - return 0 if worked, 1 if syntax error not recovered from
-*/
-int
-yyparse()
-{
- register YYSTYPE *yypvt; /* top of value stack for $vars */
- unsigned yymaxdepth = YYMAXDEPTH;
-
- /*
- ** Initialize externals - yyparse may be called more than once
- */
- yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
- yys = (int*)malloc(yymaxdepth*sizeof(int));
- if (!yyv || !yys)
- {
- yyerror( "out of memory" );
- return(1);
- }
- yypv = &yyv[-1];
- yyps = &yys[-1];
- yystate = 0;
- yytmp = 0;
- yynerrs = 0;
- yyerrflag = 0;
- yychar = -1;
-
- goto yystack;
- {
- register YYSTYPE *yy_pv; /* top of value stack */
- register int *yy_ps; /* top of state stack */
- register int yy_state; /* current state */
- register int yy_n; /* internal state number info */
-
- /*
- ** get globals into registers.
- ** branch to here only if YYBACKUP was called.
- */
- yynewstate:
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
- goto yy_newstate;
-
- /*
- ** get globals into registers.
- ** either we just started, or we just finished a reduction
- */
- yystack:
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
-
- /*
- ** top of for (;;) loop while no reductions done
- */
- yy_stack:
- /*
- ** put a state and value onto the stacks
- */
-#if YYDEBUG
- /*
- ** if debugging, look up token value in list of value vs.
- ** name pairs. 0 and negative (-1) are special values.
- ** Note: linear search is used since time is not a real
- ** consideration while debugging.
- */
- if ( yydebug )
- {
- register int yy_i;
-
- (void)printf( "State %d, token ", yy_state );
- if ( yychar == 0 )
- (void)printf( "end-of-file\n" );
- else if ( yychar < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
- yy_i++ )
- {
- if ( yytoks[yy_i].t_val == yychar )
- break;
- }
- (void)printf( "%s\n", yytoks[yy_i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( ++yy_ps >= &yys[ yymaxdepth ] ) /* room on stack? */
- {
- /*
- ** reallocate and recover. Note that pointers
- ** have to be reset, or bad things will happen
- */
- int yyps_index = (yy_ps - yys);
- int yypv_index = (yy_pv - yyv);
- int yypvt_index = (yypvt - yyv);
- yymaxdepth += YYMAXDEPTH;
- yyv = (YYSTYPE*)realloc((char*)yyv,
- yymaxdepth * sizeof(YYSTYPE));
- yys = (int*)realloc((char*)yys,
- yymaxdepth * sizeof(int));
- if (!yyv || !yys)
- {
- yyerror( "yacc stack overflow" );
- return(1);
- }
- yy_ps = yys + yyps_index;
- yy_pv = yyv + yypv_index;
- yypvt = yyv + yypvt_index;
- }
- *yy_ps = yy_state;
- *++yy_pv = yyval;
-
- /*
- ** we have a new state - find out what to do
- */
- yy_newstate:
- if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
- goto yydefault; /* simple state */
-#if YYDEBUG
- /*
- ** if debugging, need to mark whether new token grabbed
- */
- yytmp = yychar < 0;
-#endif
- if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
- yychar = 0; /* reached EOF */
-#if YYDEBUG
- if ( yydebug && yytmp )
- {
- register int yy_i;
-
- (void)printf( "Received token " );
- if ( yychar == 0 )
- (void)printf( "end-of-file\n" );
- else if ( yychar < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
- yy_i++ )
- {
- if ( yytoks[yy_i].t_val == yychar )
- break;
- }
- (void)printf( "%s\n", yytoks[yy_i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
- goto yydefault;
- if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar ) /*valid shift*/
- {
- yychar = -1;
- yyval = yylval;
- yy_state = yy_n;
- if ( yyerrflag > 0 )
- yyerrflag--;
- goto yy_stack;
- }
-
- yydefault:
- if ( ( yy_n = yydef[ yy_state ] ) == -2 )
- {
-#if YYDEBUG
- yytmp = yychar < 0;
-#endif
- if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
- yychar = 0; /* reached EOF */
-#if YYDEBUG
- if ( yydebug && yytmp )
- {
- register int yy_i;
-
- (void)printf( "Received token " );
- if ( yychar == 0 )
- (void)printf( "end-of-file\n" );
- else if ( yychar < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( yy_i = 0;
- yytoks[yy_i].t_val >= 0;
- yy_i++ )
- {
- if ( yytoks[yy_i].t_val
- == yychar )
- {
- break;
- }
- }
- (void)printf( "%s\n", yytoks[yy_i].t_name );
- }
- }
-#endif /* YYDEBUG */
- /*
- ** look through exception table
- */
- {
- register int *yyxi = yyexca;
-
- while ( ( *yyxi != -1 ) ||
- ( yyxi[1] != yy_state ) )
- {
- yyxi += 2;
- }
- while ( ( *(yyxi += 2) >= 0 ) &&
- ( *yyxi != yychar ) )
- ;
- if ( ( yy_n = yyxi[1] ) < 0 )
- YYACCEPT;
- }
- }
-
- /*
- ** check for syntax error
- */
- if ( yy_n == 0 ) /* have an error */
- {
- /* no worry about speed here! */
- switch ( yyerrflag )
- {
- case 0: /* new error */
- yyerror( "syntax error" );
- goto skip_init;
- yyerrlab:
- /*
- ** get globals into registers.
- ** we have a user generated syntax type error
- */
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
- yynerrs++;
- skip_init:
- case 1:
- case 2: /* incompletely recovered error */
- /* try again... */
- yyerrflag = 3;
- /*
- ** find state where "error" is a legal
- ** shift action
- */
- while ( yy_ps >= yys )
- {
- yy_n = yypact[ *yy_ps ] + YYERRCODE;
- if ( yy_n >= 0 && yy_n < YYLAST &&
- yychk[yyact[yy_n]] == YYERRCODE) {
- /*
- ** simulate shift of "error"
- */
- yy_state = yyact[ yy_n ];
- goto yy_stack;
- }
- /*
- ** current state has no shift on
- ** "error", pop stack
- */
-#if YYDEBUG
-# define _POP_ "Error recovery pops state %d, uncovers state %d\n"
- if ( yydebug )
- (void)printf( _POP_, *yy_ps,
- yy_ps[-1] );
-# undef _POP_
-#endif
- yy_ps--;
- yy_pv--;
- }
- /*
- ** there is no state on stack with "error" as
- ** a valid shift. give up.
- */
- YYABORT;
- case 3: /* no shift yet; eat a token */
-#if YYDEBUG
- /*
- ** if debugging, look up token in list of
- ** pairs. 0 and negative shouldn't occur,
- ** but since timing doesn't matter when
- ** debugging, it doesn't hurt to leave the
- ** tests here.
- */
- if ( yydebug )
- {
- register int yy_i;
-
- (void)printf( "Error recovery discards " );
- if ( yychar == 0 )
- (void)printf( "token end-of-file\n" );
- else if ( yychar < 0 )
- (void)printf( "token -none-\n" );
- else
- {
- for ( yy_i = 0;
- yytoks[yy_i].t_val >= 0;
- yy_i++ )
- {
- if ( yytoks[yy_i].t_val
- == yychar )
- {
- break;
- }
- }
- (void)printf( "token %s\n",
- yytoks[yy_i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( yychar == 0 ) /* reached EOF. quit */
- YYABORT;
- yychar = -1;
- goto yy_newstate;
- }
- }/* end if ( yy_n == 0 ) */
- /*
- ** reduction by production yy_n
- ** put stack tops, etc. so things right after switch
- */
-#if YYDEBUG
- /*
- ** if debugging, print the string that is the user's
- ** specification of the reduction which is just about
- ** to be done.
- */
- if ( yydebug )
- (void)printf( "Reduce by (%d) \"%s\"\n",
- yy_n, yyreds[ yy_n ] );
-#endif
- yytmp = yy_n; /* value to switch over */
- yypvt = yy_pv; /* $vars top of value stack */
- /*
- ** Look in goto table for next state
- ** Sorry about using yy_state here as temporary
- ** register variable, but why not, if it works...
- ** If yyr2[ yy_n ] doesn't have the low order bit
- ** set, then there is no action to be done for
- ** this reduction. So, no saving & unsaving of
- ** registers done. The only difference between the
- ** code just after the if and the body of the if is
- ** the goto yy_stack in the body. This way the test
- ** can be made before the choice of what to do is needed.
- */
- {
- /* length of production doubled with extra bit */
- register int yy_len = yyr2[ yy_n ];
-
- if ( !( yy_len & 01 ) )
- {
- yy_len >>= 1;
- yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
- yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
- *( yy_ps -= yy_len ) + 1;
- if ( yy_state >= YYLAST ||
- yychk[ yy_state =
- yyact[ yy_state ] ] != -yy_n )
- {
- yy_state = yyact[ yypgo[ yy_n ] ];
- }
- goto yy_stack;
- }
- yy_len >>= 1;
- yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
- yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
- *( yy_ps -= yy_len ) + 1;
- if ( yy_state >= YYLAST ||
- yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
- {
- yy_state = yyact[ yypgo[ yy_n ] ];
- }
- }
- /* save until reenter driver code */
- yystate = yy_state;
- yyps = yy_ps;
- yypv = yy_pv;
- }
- /*
- ** code supplied by user is placed in this switch
- */
- switch( yytmp )
- {
-
-case 1:
-# line 137 "awk.y"
-{ expression_value = yypvt[-1].nodeval; } break;
-case 2:
-# line 142 "awk.y"
-{
- if (yypvt[-0].nodeval != NULL)
- yyval.nodeval = yypvt[-0].nodeval;
- else
- yyval.nodeval = NULL;
- yyerrok;
- } break;
-case 3:
-# line 151 "awk.y"
-{
- if (yypvt[-0].nodeval == NULL)
- yyval.nodeval = yypvt[-1].nodeval;
- else if (yypvt[-1].nodeval == NULL)
- yyval.nodeval = yypvt[-0].nodeval;
- else {
- if (yypvt[-1].nodeval->type != Node_rule_list)
- yypvt[-1].nodeval = node(yypvt[-1].nodeval, Node_rule_list,
- (NODE*)NULL);
- yyval.nodeval = append_right (yypvt[-1].nodeval,
- node(yypvt[-0].nodeval, Node_rule_list,(NODE *) NULL));
- }
- yyerrok;
- } break;
-case 4:
-# line 165 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 5:
-# line 166 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 6:
-# line 170 "awk.y"
-{ io_allowed = 0; } break;
-case 7:
-# line 172 "awk.y"
-{
- if (begin_block) {
- if (begin_block->type != Node_rule_list)
- begin_block = node(begin_block, Node_rule_list,
- (NODE *)NULL);
- (void) append_right (begin_block, node(
- node((NODE *)NULL, Node_rule_node, yypvt[-0].nodeval),
- Node_rule_list, (NODE *)NULL) );
- } else
- begin_block = node((NODE *)NULL, Node_rule_node, yypvt[-0].nodeval);
- yyval.nodeval = NULL;
- io_allowed = 1;
- yyerrok;
- } break;
-case 8:
-# line 186 "awk.y"
-{ io_allowed = 0; } break;
-case 9:
-# line 188 "awk.y"
-{
- if (end_block) {
- if (end_block->type != Node_rule_list)
- end_block = node(end_block, Node_rule_list,
- (NODE *)NULL);
- (void) append_right (end_block, node(
- node((NODE *)NULL, Node_rule_node, yypvt[-0].nodeval),
- Node_rule_list, (NODE *)NULL));
- } else
- end_block = node((NODE *)NULL, Node_rule_node, yypvt[-0].nodeval);
- yyval.nodeval = NULL;
- io_allowed = 1;
- yyerrok;
- } break;
-case 10:
-# line 203 "awk.y"
-{
- warning("BEGIN blocks must have an action part");
- errcount++;
- yyerrok;
- } break;
-case 11:
-# line 209 "awk.y"
-{
- warning("END blocks must have an action part");
- errcount++;
- yyerrok;
- } break;
-case 12:
-# line 215 "awk.y"
-{ yyval.nodeval = node (yypvt[-1].nodeval, Node_rule_node, yypvt[-0].nodeval); yyerrok; } break;
-case 13:
-# line 217 "awk.y"
-{ yyval.nodeval = node ((NODE *)NULL, Node_rule_node, yypvt[-0].nodeval); yyerrok; } break;
-case 14:
-# line 219 "awk.y"
-{
- yyval.nodeval = node (yypvt[-1].nodeval,
- Node_rule_node,
- node(node(node(make_number(0.0),
- Node_field_spec,
- (NODE *) NULL),
- Node_expression_list,
- (NODE *) NULL),
- Node_K_print,
- (NODE *) NULL));
- yyerrok;
- } break;
-case 15:
-# line 232 "awk.y"
-{
- func_install(yypvt[-1].nodeval, yypvt[-0].nodeval);
- yyval.nodeval = NULL;
- yyerrok;
- } break;
-case 16:
-# line 241 "awk.y"
-{ yyval.sval = yypvt[-0].sval; } break;
-case 17:
-# line 243 "awk.y"
-{ yyval.sval = yypvt[-0].sval; } break;
-case 18:
-# line 245 "awk.y"
-{
- yyerror("%s() is a built-in function, it cannot be redefined",
- tokstart);
- errcount++;
- /* yyerrok; */
- } break;
-case 21:
-# line 260 "awk.y"
-{
- param_counter = 0;
- } break;
-case 22:
-# line 264 "awk.y"
-{
- yyval.nodeval = append_right(make_param(yypvt[-4].sval), yypvt[-2].nodeval);
- can_return = 1;
- } break;
-case 23:
-# line 272 "awk.y"
-{
- yyval.nodeval = yypvt[-2].nodeval;
- can_return = 0;
- } break;
-case 24:
-# line 281 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 25:
-# line 283 "awk.y"
-{ yyval.nodeval = mkrangenode ( node(yypvt[-2].nodeval, Node_cond_pair, yypvt[-0].nodeval) ); } break;
-case 26:
-# line 292 "awk.y"
-{ ++want_regexp; } break;
-case 27:
-# line 294 "awk.y"
-{
- NODE *n;
-
- getnode(n);
- n->type = Node_regex;
- n->re_exp = make_string(yypvt[-1].sval, strlen(yypvt[-1].sval));
- n->re_reg = mk_re_parse(yypvt[-1].sval, 0);
- n->re_text = NULL;
- n->re_flags = CONST;
- n->re_cnt = 1;
- yyval.nodeval = n;
- } break;
-case 28:
-# line 310 "awk.y"
-{ yyval.nodeval = yypvt[-3].nodeval ; } break;
-case 29:
-# line 312 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 30:
-# line 317 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 31:
-# line 319 "awk.y"
-{
- if (yypvt[-1].nodeval == NULL || yypvt[-1].nodeval->type != Node_statement_list)
- yypvt[-1].nodeval = node(yypvt[-1].nodeval, Node_statement_list,(NODE *)NULL);
- yyval.nodeval = append_right(yypvt[-1].nodeval,
- node( yypvt[-0].nodeval, Node_statement_list, (NODE *)NULL));
- yyerrok;
- } break;
-case 32:
-# line 327 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 33:
-# line 329 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 36:
-# line 339 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 37:
-# line 341 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 38:
-# line 343 "awk.y"
-{ yyval.nodeval = yypvt[-1].nodeval; } break;
-case 39:
-# line 345 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 40:
-# line 347 "awk.y"
-{ yyval.nodeval = node (yypvt[-3].nodeval, Node_K_while, yypvt[-0].nodeval); } break;
-case 41:
-# line 349 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_K_do, yypvt[-5].nodeval); } break;
-case 42:
-# line 351 "awk.y"
-{
- yyval.nodeval = node (yypvt[-0].nodeval, Node_K_arrayfor, make_for_loop(variable(yypvt[-5].sval,1),
- (NODE *)NULL, variable(yypvt[-3].sval,1)));
- } break;
-case 43:
-# line 356 "awk.y"
-{
- yyval.nodeval = node(yypvt[-0].nodeval, Node_K_for, (NODE *)make_for_loop(yypvt[-7].nodeval, yypvt[-5].nodeval, yypvt[-3].nodeval));
- } break;
-case 44:
-# line 360 "awk.y"
-{
- yyval.nodeval = node (yypvt[-0].nodeval, Node_K_for,
- (NODE *)make_for_loop(yypvt[-6].nodeval, (NODE *)NULL, yypvt[-3].nodeval));
- } break;
-case 45:
-# line 366 "awk.y"
-{ yyval.nodeval = node ((NODE *)NULL, Node_K_break, (NODE *)NULL); } break;
-case 46:
-# line 369 "awk.y"
-{ yyval.nodeval = node ((NODE *)NULL, Node_K_continue, (NODE *)NULL); } break;
-case 47:
-# line 371 "awk.y"
-{ yyval.nodeval = node (yypvt[-3].nodeval, yypvt[-5].nodetypeval, yypvt[-1].nodeval); } break;
-case 48:
-# line 373 "awk.y"
-{
- if (yypvt[-3].nodetypeval == Node_K_print && yypvt[-2].nodeval == NULL)
- yypvt[-2].nodeval = node(node(make_number(0.0),
- Node_field_spec,
- (NODE *) NULL),
- Node_expression_list,
- (NODE *) NULL);
-
- yyval.nodeval = node (yypvt[-2].nodeval, yypvt[-3].nodetypeval, yypvt[-1].nodeval);
- } break;
-case 49:
-# line 384 "awk.y"
-{ NODETYPE type;
-
- if (! io_allowed) yyerror("next used in BEGIN or END action");
- if (yypvt[-1].nodeval && yypvt[-1].nodeval == lookup("file")) {
- if (do_lint)
- warning("`next file' is a gawk extension");
- else if (strict || do_posix)
- yyerror("`next file' is a gawk extension");
- type = Node_K_nextfile;
- } else type = Node_K_next;
- yyval.nodeval = node ((NODE *)NULL, type, (NODE *)NULL);
- } break;
-case 50:
-# line 397 "awk.y"
-{ yyval.nodeval = node (yypvt[-1].nodeval, Node_K_exit, (NODE *)NULL); } break;
-case 51:
-# line 399 "awk.y"
-{ if (! can_return) yyerror("return used outside function context"); } break;
-case 52:
-# line 401 "awk.y"
-{ yyval.nodeval = node (yypvt[-1].nodeval, Node_K_return, (NODE *)NULL); } break;
-case 53:
-# line 403 "awk.y"
-{ yyval.nodeval = node (variable(yypvt[-4].sval,1), Node_K_delete, yypvt[-2].nodeval); } break;
-case 54:
-# line 405 "awk.y"
-{ yyval.nodeval = yypvt[-1].nodeval; } break;
-case 55:
-# line 410 "awk.y"
-{ yyval.nodetypeval = yypvt[-0].nodetypeval; } break;
-case 56:
-# line 412 "awk.y"
-{ yyval.nodetypeval = yypvt[-0].nodetypeval; } break;
-case 57:
-# line 417 "awk.y"
-{
- yyval.nodeval = node(yypvt[-3].nodeval, Node_K_if,
- node(yypvt[-0].nodeval, Node_if_branches, (NODE *)NULL));
- } break;
-case 58:
-# line 423 "awk.y"
-{ yyval.nodeval = node (yypvt[-6].nodeval, Node_K_if,
- node (yypvt[-3].nodeval, Node_if_branches, yypvt[-0].nodeval)); } break;
-case 59:
-# line 429 "awk.y"
-{ want_assign = 0; } break;
-case 63:
-# line 440 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 64:
-# line 442 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_redirect_input, (NODE *)NULL); } break;
-case 65:
-# line 447 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 66:
-# line 449 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_redirect_output, (NODE *)NULL); } break;
-case 67:
-# line 451 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_redirect_append, (NODE *)NULL); } break;
-case 68:
-# line 453 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_redirect_pipe, (NODE *)NULL); } break;
-case 69:
-# line 458 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 70:
-# line 460 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 71:
-# line 465 "awk.y"
-{ yyval.nodeval = make_param(yypvt[-0].sval); } break;
-case 72:
-# line 467 "awk.y"
-{ yyval.nodeval = append_right(yypvt[-2].nodeval, make_param(yypvt[-0].sval)); yyerrok; } break;
-case 73:
-# line 469 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 74:
-# line 471 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 75:
-# line 473 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 76:
-# line 479 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 77:
-# line 481 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 78:
-# line 486 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 79:
-# line 488 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 80:
-# line 493 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_expression_list, (NODE *)NULL); } break;
-case 81:
-# line 495 "awk.y"
-{
- yyval.nodeval = append_right(yypvt[-2].nodeval,
- node( yypvt[-0].nodeval, Node_expression_list, (NODE *)NULL));
- yyerrok;
- } break;
-case 82:
-# line 501 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 83:
-# line 503 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 84:
-# line 505 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 85:
-# line 507 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 86:
-# line 512 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 87:
-# line 514 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 88:
-# line 519 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_expression_list, (NODE *)NULL); } break;
-case 89:
-# line 521 "awk.y"
-{
- yyval.nodeval = append_right(yypvt[-2].nodeval,
- node( yypvt[-0].nodeval, Node_expression_list, (NODE *)NULL));
- yyerrok;
- } break;
-case 90:
-# line 527 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 91:
-# line 529 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 92:
-# line 531 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 93:
-# line 533 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 94:
-# line 538 "awk.y"
-{ want_assign = 0; } break;
-case 95:
-# line 540 "awk.y"
-{
- if (do_lint && yypvt[-0].nodeval->type == Node_regex)
- warning("Regular expression on left of assignment.");
- yyval.nodeval = node (yypvt[-3].nodeval, yypvt[-2].nodetypeval, yypvt[-0].nodeval);
- } break;
-case 96:
-# line 546 "awk.y"
-{ yyval.nodeval = node (variable(yypvt[-0].sval,1), Node_in_array, yypvt[-3].nodeval); } break;
-case 97:
-# line 548 "awk.y"
-{
- yyval.nodeval = node (yypvt[-0].nodeval, Node_K_getline,
- node (yypvt[-3].nodeval, Node_redirect_pipein, (NODE *)NULL));
- } break;
-case 98:
-# line 553 "awk.y"
-{
- if (do_lint && ! io_allowed && yypvt[-0].nodeval == NULL)
- warning("non-redirected getline undefined inside BEGIN or END action");
- yyval.nodeval = node (yypvt[-1].nodeval, Node_K_getline, yypvt[-0].nodeval);
- } break;
-case 99:
-# line 559 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_and, yypvt[-0].nodeval); } break;
-case 100:
-# line 561 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_or, yypvt[-0].nodeval); } break;
-case 101:
-# line 563 "awk.y"
-{
- if (yypvt[-2].nodeval->type == Node_regex)
- warning("Regular expression on left of MATCH operator.");
- yyval.nodeval = node (yypvt[-2].nodeval, yypvt[-1].nodetypeval, mk_rexp(yypvt[-0].nodeval));
- } break;
-case 102:
-# line 569 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 103:
-# line 571 "awk.y"
-{
- yyval.nodeval = node(node(make_number(0.0),
- Node_field_spec,
- (NODE *) NULL),
- Node_nomatch,
- yypvt[-0].nodeval);
- } break;
-case 104:
-# line 579 "awk.y"
-{ yyval.nodeval = node (variable(yypvt[-0].sval,1), Node_in_array, yypvt[-2].nodeval); } break;
-case 105:
-# line 581 "awk.y"
-{
- if (do_lint && yypvt[-0].nodeval->type == Node_regex)
- warning("Regular expression on left of comparison.");
- yyval.nodeval = node (yypvt[-2].nodeval, yypvt[-1].nodetypeval, yypvt[-0].nodeval);
- } break;
-case 106:
-# line 587 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_less, yypvt[-0].nodeval); } break;
-case 107:
-# line 589 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_greater, yypvt[-0].nodeval); } break;
-case 108:
-# line 591 "awk.y"
-{ yyval.nodeval = node(yypvt[-4].nodeval, Node_cond_exp, node(yypvt[-2].nodeval, Node_if_branches, yypvt[-0].nodeval));} break;
-case 109:
-# line 593 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 110:
-# line 595 "awk.y"
-{ yyval.nodeval = node (yypvt[-1].nodeval, Node_concat, yypvt[-0].nodeval); } break;
-case 111:
-# line 600 "awk.y"
-{ want_assign = 0; } break;
-case 112:
-# line 602 "awk.y"
-{ yyval.nodeval = node (yypvt[-3].nodeval, yypvt[-2].nodetypeval, yypvt[-0].nodeval); } break;
-case 113:
-# line 604 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_and, yypvt[-0].nodeval); } break;
-case 114:
-# line 606 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_or, yypvt[-0].nodeval); } break;
-case 115:
-# line 608 "awk.y"
-{
- if (do_lint && ! io_allowed && yypvt[-0].nodeval == NULL)
- warning("non-redirected getline undefined inside BEGIN or END action");
- yyval.nodeval = node (yypvt[-1].nodeval, Node_K_getline, yypvt[-0].nodeval);
- } break;
-case 116:
-# line 614 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 117:
-# line 616 "awk.y"
-{ yyval.nodeval = node((NODE *) NULL, Node_nomatch, yypvt[-0].nodeval); } break;
-case 118:
-# line 618 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, yypvt[-1].nodetypeval, mk_rexp(yypvt[-0].nodeval)); } break;
-case 119:
-# line 620 "awk.y"
-{ yyval.nodeval = node (variable(yypvt[-0].sval,1), Node_in_array, yypvt[-2].nodeval); } break;
-case 120:
-# line 622 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, yypvt[-1].nodetypeval, yypvt[-0].nodeval); } break;
-case 121:
-# line 624 "awk.y"
-{ yyval.nodeval = node(yypvt[-4].nodeval, Node_cond_exp, node(yypvt[-2].nodeval, Node_if_branches, yypvt[-0].nodeval));} break;
-case 122:
-# line 626 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 123:
-# line 628 "awk.y"
-{ yyval.nodeval = node (yypvt[-1].nodeval, Node_concat, yypvt[-0].nodeval); } break;
-case 126:
-# line 636 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_exp, yypvt[-0].nodeval); } break;
-case 127:
-# line 638 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_times, yypvt[-0].nodeval); } break;
-case 128:
-# line 640 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_quotient, yypvt[-0].nodeval); } break;
-case 129:
-# line 642 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_mod, yypvt[-0].nodeval); } break;
-case 130:
-# line 644 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_plus, yypvt[-0].nodeval); } break;
-case 131:
-# line 646 "awk.y"
-{ yyval.nodeval = node (yypvt[-2].nodeval, Node_minus, yypvt[-0].nodeval); } break;
-case 132:
-# line 651 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_not,(NODE *) NULL); } break;
-case 133:
-# line 653 "awk.y"
-{ yyval.nodeval = yypvt[-1].nodeval; } break;
-case 134:
-# line 655 "awk.y"
-{
- if (! io_allowed && strcmp(tokstart, "nextfile") == 0)
- yyerror("nextfile() is illegal in BEGIN and END");
- } break;
-case 135:
-# line 660 "awk.y"
-{ yyval.nodeval = snode (yypvt[-1].nodeval, Node_builtin, (int) yypvt[-4].lval); } break;
-case 136:
-# line 662 "awk.y"
-{ yyval.nodeval = snode (yypvt[-1].nodeval, Node_builtin, (int) yypvt[-3].lval); } break;
-case 137:
-# line 664 "awk.y"
-{
- if (do_lint)
- warning("call of `length' without parentheses is not portable");
- yyval.nodeval = snode ((NODE *)NULL, Node_builtin, (int) yypvt[-0].lval);
- if (do_posix)
- warning( "call of `length' without parentheses is deprecated by POSIX");
- } break;
-case 138:
-# line 672 "awk.y"
-{
- yyval.nodeval = node (yypvt[-1].nodeval, Node_func_call, make_string(yypvt[-3].sval, strlen(yypvt[-3].sval)));
- } break;
-case 139:
-# line 676 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_preincrement, (NODE *)NULL); } break;
-case 140:
-# line 678 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_predecrement, (NODE *)NULL); } break;
-case 141:
-# line 680 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 142:
-# line 682 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 143:
-# line 685 "awk.y"
-{ if (yypvt[-0].nodeval->type == Node_val) {
- yypvt[-0].nodeval->numbr = -(force_number(yypvt[-0].nodeval));
- yyval.nodeval = yypvt[-0].nodeval;
- } else
- yyval.nodeval = node (yypvt[-0].nodeval, Node_unary_minus, (NODE *)NULL);
- } break;
-case 144:
-# line 692 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 145:
-# line 697 "awk.y"
-{ yyval.nodeval = node (yypvt[-1].nodeval, Node_postincrement, (NODE *)NULL); } break;
-case 146:
-# line 699 "awk.y"
-{ yyval.nodeval = node (yypvt[-1].nodeval, Node_postdecrement, (NODE *)NULL); } break;
-case 148:
-# line 705 "awk.y"
-{ yyval.nodeval = NULL; } break;
-case 149:
-# line 707 "awk.y"
-{ yyval.nodeval = yypvt[-0].nodeval; } break;
-case 150:
-# line 712 "awk.y"
-{ yyval.nodeval = variable(yypvt[-0].sval,1); } break;
-case 151:
-# line 714 "awk.y"
-{
- if (yypvt[-1].nodeval->rnode == NULL) {
- yyval.nodeval = node (variable(yypvt[-3].sval,1), Node_subscript, yypvt[-1].nodeval->lnode);
- freenode(yypvt[-1].nodeval);
- } else
- yyval.nodeval = node (variable(yypvt[-3].sval,1), Node_subscript, yypvt[-1].nodeval);
- } break;
-case 152:
-# line 722 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_field_spec, (NODE *)NULL); } break;
-case 153:
-# line 724 "awk.y"
-{ yyval.nodeval = node (yypvt[-0].nodeval, Node_field_spec, (NODE *)NULL); } break;
-case 155:
-# line 732 "awk.y"
-{ yyerrok; } break;
-case 156:
-# line 736 "awk.y"
-{ yyerrok; } break;
-case 159:
-# line 745 "awk.y"
-{ yyerrok; want_assign = 0; } break;
-case 160:
-# line 748 "awk.y"
-{ yyerrok; } break;
- }
- goto yystack; /* reset registers in driver code */
-}