diff options
Diffstat (limited to 'awktab.c')
-rw-r--r-- | awktab.c | 527 |
1 files changed, 242 insertions, 285 deletions
@@ -1,47 +1,48 @@ /* A Bison parser, made from ./awk.y - by GNU Bison version 1.28 */ + by GNU Bison version 1.25 + */ #define YYBISON 1 /* Identify Bison output. */ -#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_NEXTFILE 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 +#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_NEXTFILE 287 +#define LEX_IN 288 +#define LEX_AND 289 +#define LEX_OR 290 +#define INCREMENT 291 +#define DECREMENT 292 +#define LEX_BUILTIN 293 +#define LEX_LENGTH 294 +#define UNARY 295 #line 26 "./awk.y" @@ -129,7 +130,7 @@ typedef union { #define YYFLAG -32768 #define YYNTBASE 62 -#define YYTRANSLATE(x) ((unsigned)(x) <= 294 ? yytranslate[x] : 107) +#define YYTRANSLATE(x) ((unsigned)(x) <= 295 ? yytranslate[x] : 107) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -157,11 +158,11 @@ 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, 2, 2, 2, 1, 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, 39, 52 + 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, 39, 52 }; #if YYDEBUG != 0 @@ -250,19 +251,19 @@ static const short yyrline[] = { 0, 220, 226, 232, 234, 236, 249, 258, 260, 262, 272, 273, 277, 281, 296, 301, 310, 312, 321, 323, 341, 343, 348, 354, 362, 364, 369, 370, 374, 376, 378, - 380, 382, 384, 386, 392, 396, 401, 404, 407, 409, - 429, 468, 487, 489, 494, 496, 498, 512, 517, 519, - 524, 529, 536, 538, 542, 543, 547, 549, 554, 556, - 558, 560, 565, 567, 572, 574, 576, 578, 580, 586, - 588, 593, 595, 600, 602, 608, 610, 612, 614, 619, - 621, 626, 628, 634, 636, 638, 640, 645, 648, 653, - 655, 660, 666, 668, 670, 676, 686, 694, 696, 702, - 704, 706, 708, 710, 715, 718, 719, 721, 723, 729, - 731, 733, 735, 737, 739, 741, 743, 748, 750, 752, - 754, 756, 758, 760, 762, 764, 769, 771, 773, 776, - 778, 786, 793, 794, 796, 798, 800, 803, 811, 822, - 824, 829, 831, 841, 846, 850, 854, 858, 859, 863, - 866 + 380, 382, 384, 386, 413, 417, 422, 425, 428, 430, + 450, 489, 508, 510, 515, 517, 519, 533, 538, 540, + 545, 550, 557, 559, 563, 564, 568, 570, 575, 577, + 579, 581, 586, 588, 593, 595, 597, 599, 601, 607, + 609, 614, 616, 621, 623, 629, 631, 633, 635, 640, + 642, 647, 649, 655, 657, 659, 661, 666, 669, 674, + 676, 681, 687, 689, 691, 697, 707, 715, 717, 723, + 725, 727, 729, 731, 736, 739, 740, 742, 744, 750, + 752, 754, 756, 758, 760, 762, 764, 769, 771, 773, + 775, 777, 779, 781, 783, 785, 790, 792, 794, 797, + 799, 807, 814, 815, 817, 819, 821, 824, 832, 843, + 845, 850, 852, 862, 867, 871, 875, 879, 880, 884, + 887 }; #endif @@ -780,8 +781,7 @@ static const short yycheck[] = { 3, 46, 47, -1, -1, -1, 51, -1, -1, 54, 55 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/lib/bison.simple" -/* This file comes from bison-1.28. */ +#line 3 "/usr/share/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -798,66 +798,46 @@ static const short yycheck[] = { 3, 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., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -/* 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. */ - -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ +#ifndef alloca #ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA #define alloca __builtin_alloca #else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) #include <alloca.h> #else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ +#if defined (MSDOS) && !defined (__TURBOC__) #include <malloc.h> -#endif #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include <malloc.h> */ +#include <malloc.h> #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca +#else /* not MSDOS, __TURBOC__, or _AIX */ +#ifdef __hpux +#ifdef __cplusplus +extern "C" { +void *alloca (unsigned int); +}; +#else /* not __cplusplus */ +void *alloca (); +#endif /* not __cplusplus */ #endif /* __hpux */ -#endif #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ +#endif /* not sparc. */ +#endif /* not GNU C. */ +#endif /* alloca not defined. */ -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc -#endif +/* 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 @@ -867,8 +847,8 @@ static const short yycheck[] = { 3, #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab +#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 @@ -949,12 +929,16 @@ int yydebug; /* nonzero means print parse trace */ #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif - -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ +#ifndef YYPARSE_RETURN_TYPE +#define YYPARSE_RETURN_TYPE int +#endif + +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +YYPARSE_RETURN_TYPE yyparse (void); +#endif + #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ @@ -966,7 +950,7 @@ static void __yy_memcpy (to, from, count) char *to; char *from; - unsigned int count; + int count; { register char *f = from; register char *t = to; @@ -981,10 +965,10 @@ __yy_memcpy (to, from, count) /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (char *to, char *from, unsigned int count) +__yy_memcpy (char *to, char *from, int count) { - register char *t = to; register char *f = from; + register char *t = to; register int i = count; while (i-- > 0) @@ -994,7 +978,7 @@ __yy_memcpy (char *to, char *from, unsigned int count) #endif #endif -#line 217 "/usr/lib/bison.simple" +#line 196 "/usr/share/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -1015,16 +999,7 @@ __yy_memcpy (char *to, char *from, unsigned int count) #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -#ifdef YYPARSE_PARAM -int yyparse (void *); -#else -int yyparse (void); -#endif -#endif - -int +YYPARSE_RETURN_TYPE yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL { @@ -1052,7 +1027,6 @@ yyparse(YYPARSE_PARAM_ARG) #endif int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; #ifdef YYPURE int yychar; @@ -1137,32 +1111,18 @@ yynewstate: if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); + yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); + yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); #ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); + yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); #endif #endif /* no yyoverflow */ @@ -1598,38 +1558,59 @@ case 43: case 44: #line 387 "./awk.y" { - yyval.nodeval = node(yyvsp[0].nodeval, Node_K_arrayfor, - make_for_loop(variable(yyvsp[-5].sval, CAN_FREE, Node_var), - (NODE *) NULL, variable(yyvsp[-3].sval, CAN_FREE, Node_var_array))); + /* + * Efficiency hack. Recognize the special case of + * + * for (iggy in foo) + * delete foo[iggy] + * + * and treat it as if it were + * + * delete foo + * + * Check that the body is a `delete a[i]' statement, + * and that both the loop var and array names match. + */ + if (yyvsp[0].nodeval->type == Node_K_delete + && yyvsp[0].nodeval->rnode != NULL + && strcmp(yyvsp[-5].sval, yyvsp[0].nodeval->rnode->var_value->vname) == 0 + && strcmp(yyvsp[-3].sval, yyvsp[0].nodeval->lnode->vname) == 0) { + yyvsp[0].nodeval->type = Node_K_delete_loop; + yyval.nodeval = yyvsp[0].nodeval; + } else { + yyval.nodeval = node(yyvsp[0].nodeval, Node_K_arrayfor, + make_for_loop(variable(yyvsp[-5].sval, CAN_FREE, Node_var), + (NODE *) NULL, variable(yyvsp[-3].sval, CAN_FREE, Node_var_array))); + } ; break;} case 45: -#line 393 "./awk.y" +#line 414 "./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 46: -#line 397 "./awk.y" +#line 418 "./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 47: -#line 403 "./awk.y" +#line 424 "./awk.y" { yyval.nodeval = node((NODE *) NULL, Node_K_break, (NODE *) NULL); ; break;} case 48: -#line 406 "./awk.y" +#line 427 "./awk.y" { yyval.nodeval = node((NODE *) NULL, Node_K_continue, (NODE *) NULL); ; break;} case 49: -#line 408 "./awk.y" +#line 429 "./awk.y" { yyval.nodeval = node(yyvsp[-3].nodeval, yyvsp[-5].nodetypeval, yyvsp[-1].nodeval); ; break;} case 50: -#line 410 "./awk.y" +#line 431 "./awk.y" { if (yyvsp[-3].nodetypeval == Node_K_print && yyvsp[-2].nodeval == NULL) { static int warned = FALSE; @@ -1651,7 +1632,7 @@ case 50: ; break;} case 51: -#line 430 "./awk.y" +#line 451 "./awk.y" { NODETYPE type; if (yyvsp[-1].nodeval) { @@ -1692,7 +1673,7 @@ case 51: ; break;} case 52: -#line 469 "./awk.y" +#line 490 "./awk.y" { if (do_lint) warning("`nextfile' is a gawk extension"); @@ -1713,26 +1694,26 @@ case 52: ; break;} case 53: -#line 488 "./awk.y" +#line 509 "./awk.y" { yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_exit, (NODE *) NULL); ; break;} case 54: -#line 490 "./awk.y" +#line 511 "./awk.y" { if (! can_return) yyerror("`return' used outside function context"); ; break;} case 55: -#line 495 "./awk.y" +#line 516 "./awk.y" { yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_return, (NODE *) NULL); ; break;} case 56: -#line 497 "./awk.y" +#line 518 "./awk.y" { yyval.nodeval = node(variable(yyvsp[-4].sval, CAN_FREE, Node_var_array), Node_K_delete, yyvsp[-2].nodeval); ; break;} case 57: -#line 499 "./awk.y" +#line 520 "./awk.y" { if (do_lint) warning("`delete array' is a gawk extension"); @@ -1748,107 +1729,107 @@ case 57: ; break;} case 58: -#line 513 "./awk.y" +#line 534 "./awk.y" { yyval.nodeval = yyvsp[-1].nodeval; ; break;} case 59: -#line 518 "./awk.y" +#line 539 "./awk.y" { yyval.nodetypeval = yyvsp[0].nodetypeval; ; break;} case 60: -#line 520 "./awk.y" +#line 541 "./awk.y" { yyval.nodetypeval = yyvsp[0].nodetypeval; ; break;} case 61: -#line 525 "./awk.y" +#line 546 "./awk.y" { yyval.nodeval = node(yyvsp[-3].nodeval, Node_K_if, node(yyvsp[0].nodeval, Node_if_branches, (NODE *) NULL)); ; break;} case 62: -#line 531 "./awk.y" +#line 552 "./awk.y" { yyval.nodeval = node(yyvsp[-6].nodeval, Node_K_if, node(yyvsp[-3].nodeval, Node_if_branches, yyvsp[0].nodeval)); ; break;} case 63: -#line 537 "./awk.y" +#line 558 "./awk.y" { want_assign = FALSE; ; break;} case 67: -#line 548 "./awk.y" +#line 569 "./awk.y" { yyval.nodeval = NULL; ; break;} case 68: -#line 550 "./awk.y" +#line 571 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_input, (NODE *) NULL); ; break;} case 69: -#line 555 "./awk.y" +#line 576 "./awk.y" { yyval.nodeval = NULL; ; break;} case 70: -#line 557 "./awk.y" +#line 578 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_output, (NODE *) NULL); ; break;} case 71: -#line 559 "./awk.y" +#line 580 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_append, (NODE *) NULL); ; break;} case 72: -#line 561 "./awk.y" +#line 582 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_pipe, (NODE *) NULL); ; break;} case 73: -#line 566 "./awk.y" +#line 587 "./awk.y" { yyval.nodeval = NULL; ; break;} case 74: -#line 568 "./awk.y" +#line 589 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 75: -#line 573 "./awk.y" +#line 594 "./awk.y" { yyval.nodeval = make_param(yyvsp[0].sval); ; break;} case 76: -#line 575 "./awk.y" +#line 596 "./awk.y" { yyval.nodeval = append_right(yyvsp[-2].nodeval, make_param(yyvsp[0].sval)); yyerrok; ; break;} case 77: -#line 577 "./awk.y" +#line 598 "./awk.y" { yyval.nodeval = NULL; ; break;} case 78: -#line 579 "./awk.y" +#line 600 "./awk.y" { yyval.nodeval = NULL; ; break;} case 79: -#line 581 "./awk.y" +#line 602 "./awk.y" { yyval.nodeval = NULL; ; break;} case 80: -#line 587 "./awk.y" +#line 608 "./awk.y" { yyval.nodeval = NULL; ; break;} case 81: -#line 589 "./awk.y" +#line 610 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 82: -#line 594 "./awk.y" +#line 615 "./awk.y" { yyval.nodeval = NULL; ; break;} case 83: -#line 596 "./awk.y" +#line 617 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 84: -#line 601 "./awk.y" +#line 622 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL); ; break;} case 85: -#line 603 "./awk.y" +#line 624 "./awk.y" { yyval.nodeval = append_right(yyvsp[-2].nodeval, node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL)); @@ -1856,35 +1837,35 @@ case 85: ; break;} case 86: -#line 609 "./awk.y" +#line 630 "./awk.y" { yyval.nodeval = NULL; ; break;} case 87: -#line 611 "./awk.y" +#line 632 "./awk.y" { yyval.nodeval = NULL; ; break;} case 88: -#line 613 "./awk.y" +#line 634 "./awk.y" { yyval.nodeval = NULL; ; break;} case 89: -#line 615 "./awk.y" +#line 636 "./awk.y" { yyval.nodeval = NULL; ; break;} case 90: -#line 620 "./awk.y" +#line 641 "./awk.y" { yyval.nodeval = NULL; ; break;} case 91: -#line 622 "./awk.y" +#line 643 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 92: -#line 627 "./awk.y" +#line 648 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL); ; break;} case 93: -#line 629 "./awk.y" +#line 650 "./awk.y" { yyval.nodeval = append_right(yyvsp[-2].nodeval, node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL)); @@ -1892,27 +1873,27 @@ case 93: ; break;} case 94: -#line 635 "./awk.y" +#line 656 "./awk.y" { yyval.nodeval = NULL; ; break;} case 95: -#line 637 "./awk.y" +#line 658 "./awk.y" { yyval.nodeval = NULL; ; break;} case 96: -#line 639 "./awk.y" +#line 660 "./awk.y" { yyval.nodeval = NULL; ; break;} case 97: -#line 641 "./awk.y" +#line 662 "./awk.y" { yyval.nodeval = NULL; ; break;} case 98: -#line 646 "./awk.y" +#line 667 "./awk.y" { want_assign = FALSE; ; break;} case 99: -#line 648 "./awk.y" +#line 669 "./awk.y" { if (do_lint && yyvsp[0].nodeval->type == Node_regex) warning("Regular expression on left of assignment."); @@ -1920,18 +1901,18 @@ case 99: ; break;} case 100: -#line 654 "./awk.y" +#line 675 "./awk.y" { yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_in_array, yyvsp[-3].nodeval); ; break;} case 101: -#line 656 "./awk.y" +#line 677 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_K_getline, node(yyvsp[-3].nodeval, Node_redirect_pipein, (NODE *) NULL)); ; break;} case 102: -#line 661 "./awk.y" +#line 682 "./awk.y" { if (do_lint && ! io_allowed && yyvsp[0].nodeval == NULL) warning("non-redirected getline undefined inside BEGIN or END action"); @@ -1939,15 +1920,15 @@ case 102: ; break;} case 103: -#line 667 "./awk.y" +#line 688 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_and, yyvsp[0].nodeval); ; break;} case 104: -#line 669 "./awk.y" +#line 690 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_or, yyvsp[0].nodeval); ; break;} case 105: -#line 671 "./awk.y" +#line 692 "./awk.y" { if (yyvsp[-2].nodeval->type == Node_regex) warning("Regular expression on left of MATCH operator."); @@ -1955,7 +1936,7 @@ case 105: ; break;} case 106: -#line 677 "./awk.y" +#line 698 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; if (do_lint && tokstart[0] == '*') { @@ -1967,7 +1948,7 @@ case 106: ; break;} case 107: -#line 687 "./awk.y" +#line 708 "./awk.y" { yyval.nodeval = node(node(make_number(0.0), Node_field_spec, @@ -1977,11 +1958,11 @@ case 107: ; break;} case 108: -#line 695 "./awk.y" +#line 716 "./awk.y" { yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_in_array, yyvsp[-2].nodeval); ; break;} case 109: -#line 697 "./awk.y" +#line 718 "./awk.y" { if (do_lint && yyvsp[0].nodeval->type == Node_regex) warning("Regular expression on left of comparison."); @@ -1989,43 +1970,43 @@ case 109: ; break;} case 110: -#line 703 "./awk.y" +#line 724 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_less, yyvsp[0].nodeval); ; break;} case 111: -#line 705 "./awk.y" +#line 726 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_greater, yyvsp[0].nodeval); ; break;} case 112: -#line 707 "./awk.y" +#line 728 "./awk.y" { yyval.nodeval = node(yyvsp[-4].nodeval, Node_cond_exp, node(yyvsp[-2].nodeval, Node_if_branches, yyvsp[0].nodeval));; break;} case 113: -#line 709 "./awk.y" +#line 730 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 114: -#line 711 "./awk.y" +#line 732 "./awk.y" { yyval.nodeval = node(yyvsp[-1].nodeval, Node_concat, yyvsp[0].nodeval); ; break;} case 115: -#line 716 "./awk.y" +#line 737 "./awk.y" { want_assign = FALSE; ; break;} case 116: -#line 718 "./awk.y" +#line 739 "./awk.y" { yyval.nodeval = node(yyvsp[-3].nodeval, yyvsp[-2].nodetypeval, yyvsp[0].nodeval); ; break;} case 117: -#line 720 "./awk.y" +#line 741 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_and, yyvsp[0].nodeval); ; break;} case 118: -#line 722 "./awk.y" +#line 743 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_or, yyvsp[0].nodeval); ; break;} case 119: -#line 724 "./awk.y" +#line 745 "./awk.y" { if (do_lint && ! io_allowed && yyvsp[0].nodeval == NULL) warning("non-redirected getline undefined inside BEGIN or END action"); @@ -2033,87 +2014,87 @@ case 119: ; break;} case 120: -#line 730 "./awk.y" +#line 751 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 121: -#line 732 "./awk.y" +#line 753 "./awk.y" { yyval.nodeval = node((NODE *) NULL, Node_nomatch, yyvsp[0].nodeval); ; break;} case 122: -#line 734 "./awk.y" +#line 755 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, mk_rexp(yyvsp[0].nodeval)); ; break;} case 123: -#line 736 "./awk.y" +#line 757 "./awk.y" { yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_in_array, yyvsp[-2].nodeval); ; break;} case 124: -#line 738 "./awk.y" +#line 759 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, yyvsp[0].nodeval); ; break;} case 125: -#line 740 "./awk.y" +#line 761 "./awk.y" { yyval.nodeval = node(yyvsp[-4].nodeval, Node_cond_exp, node(yyvsp[-2].nodeval, Node_if_branches, yyvsp[0].nodeval));; break;} case 126: -#line 742 "./awk.y" +#line 763 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 127: -#line 744 "./awk.y" +#line 765 "./awk.y" { yyval.nodeval = node(yyvsp[-1].nodeval, Node_concat, yyvsp[0].nodeval); ; break;} case 129: -#line 751 "./awk.y" +#line 772 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_exp, yyvsp[0].nodeval); ; break;} case 130: -#line 753 "./awk.y" +#line 774 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_times, yyvsp[0].nodeval); ; break;} case 131: -#line 755 "./awk.y" +#line 776 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_quotient, yyvsp[0].nodeval); ; break;} case 132: -#line 757 "./awk.y" +#line 778 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_mod, yyvsp[0].nodeval); ; break;} case 133: -#line 759 "./awk.y" +#line 780 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_plus, yyvsp[0].nodeval); ; break;} case 134: -#line 761 "./awk.y" +#line 782 "./awk.y" { yyval.nodeval = node(yyvsp[-2].nodeval, Node_minus, yyvsp[0].nodeval); ; break;} case 135: -#line 763 "./awk.y" +#line 784 "./awk.y" { yyval.nodeval = node(yyvsp[-1].nodeval, Node_postincrement, (NODE *) NULL); ; break;} case 136: -#line 765 "./awk.y" +#line 786 "./awk.y" { yyval.nodeval = node(yyvsp[-1].nodeval, Node_postdecrement, (NODE *) NULL); ; break;} case 137: -#line 770 "./awk.y" +#line 791 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_not, (NODE *) NULL); ; break;} case 138: -#line 772 "./awk.y" +#line 793 "./awk.y" { yyval.nodeval = yyvsp[-1].nodeval; ; break;} case 139: -#line 775 "./awk.y" +#line 796 "./awk.y" { yyval.nodeval = snode(yyvsp[-1].nodeval, Node_builtin, (int) yyvsp[-3].lval); ; break;} case 140: -#line 777 "./awk.y" +#line 798 "./awk.y" { yyval.nodeval = snode(yyvsp[-1].nodeval, Node_builtin, (int) yyvsp[-3].lval); ; break;} case 141: -#line 779 "./awk.y" +#line 800 "./awk.y" { if (do_lint) warning("call of `length' without parentheses is not portable"); @@ -2123,7 +2104,7 @@ case 141: ; break;} case 142: -#line 787 "./awk.y" +#line 808 "./awk.y" { yyval.nodeval = node(yyvsp[-1].nodeval, Node_func_call, make_string(yyvsp[-3].sval, strlen(yyvsp[-3].sval))); func_use(yyvsp[-3].sval, FUNC_USE); @@ -2132,23 +2113,23 @@ case 142: ; break;} case 144: -#line 795 "./awk.y" +#line 816 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_preincrement, (NODE *) NULL); ; break;} case 145: -#line 797 "./awk.y" +#line 818 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_predecrement, (NODE *) NULL); ; break;} case 146: -#line 799 "./awk.y" +#line 820 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 147: -#line 801 "./awk.y" +#line 822 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 148: -#line 804 "./awk.y" +#line 825 "./awk.y" { if (yyvsp[0].nodeval->type == Node_val) { yyvsp[0].nodeval->numbr = -(force_number(yyvsp[0].nodeval)); @@ -2158,7 +2139,7 @@ case 148: ; break;} case 149: -#line 812 "./awk.y" +#line 833 "./awk.y" { /* * was: $$ = $2 @@ -2168,19 +2149,19 @@ case 149: ; break;} case 150: -#line 823 "./awk.y" +#line 844 "./awk.y" { yyval.nodeval = NULL; ; break;} case 151: -#line 825 "./awk.y" +#line 846 "./awk.y" { yyval.nodeval = yyvsp[0].nodeval; ; break;} case 152: -#line 830 "./awk.y" +#line 851 "./awk.y" { yyval.nodeval = variable(yyvsp[0].sval, CAN_FREE, Node_var); ; break;} case 153: -#line 832 "./awk.y" +#line 853 "./awk.y" { if (yyvsp[-1].nodeval == NULL) { fatal("invalid subscript expression"); @@ -2192,28 +2173,28 @@ case 153: ; break;} case 154: -#line 842 "./awk.y" +#line 863 "./awk.y" { yyval.nodeval = node(yyvsp[0].nodeval, Node_field_spec, (NODE *) NULL); ; break;} case 156: -#line 850 "./awk.y" +#line 871 "./awk.y" { yyerrok; ; break;} case 157: -#line 854 "./awk.y" +#line 875 "./awk.y" { yyerrok; ; break;} case 160: -#line 863 "./awk.y" +#line 884 "./awk.y" { yyerrok; want_assign = FALSE; ; break;} case 161: -#line 866 "./awk.y" +#line 887 "./awk.y" { yyerrok; ; break;} } /* the action file gets copied in in place of this dollarsign */ -#line 543 "/usr/lib/bison.simple" +#line 498 "/usr/share/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -2408,32 +2389,8 @@ yyerrhandle: yystate = yyn; goto yynewstate; - - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 0; - - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 1; } -#line 869 "./awk.y" +#line 890 "./awk.y" struct token { @@ -2784,9 +2741,9 @@ nextc() int c; if (lexptr && lexptr < lexend) - c = (unsigned char) *lexptr++; + c = (int) (unsigned char) *lexptr++; else if (get_src_buf()) - c = (unsigned char) *lexptr++; + c = (int) (unsigned char) *lexptr++; else c = EOF; @@ -2794,8 +2751,8 @@ nextc() } #else #define nextc() ((lexptr && lexptr < lexend) ? \ - ((unsigned char) *lexptr++) : \ - (get_src_buf() ? ((unsigned char) *lexptr++) : EOF) \ + ((int) (unsigned char) *lexptr++) : \ + (get_src_buf() ? ((int) (unsigned char) *lexptr++) : EOF) \ ) #endif |