gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, master, updated. 8d895539f8a2e5ebf478aae


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, master, updated. 8d895539f8a2e5ebf478aae974da73378c6dba95
Date: Sat, 10 Nov 2012 20:03:37 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, master has been updated
       via  8d895539f8a2e5ebf478aae974da73378c6dba95 (commit)
       via  93b30fe5b9042edc85acde68befaa7c82a4aac95 (commit)
      from  3bb52bc2b515aa00bcd72382a786a45a65538e1d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=8d895539f8a2e5ebf478aae974da73378c6dba95

commit 8d895539f8a2e5ebf478aae974da73378c6dba95
Merge: 3bb52bc 93b30fe
Author: Arnold D. Robbins <address@hidden>
Date:   Sat Nov 10 22:03:04 2012 +0200

    Merge branch 'gawk-4.0-stable' (go to bison 2.6.5)

diff --cc ChangeLog
index 80a0c64,6dd4c39..a9c262b
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,35 -1,7 +1,39 @@@
+ 2012-11-10         Arnold D. Robbins     <address@hidden>
+ 
+       * Update to bison 2.6.5. Various files regenerated.
+ 
 +2012-11-10         John Haque      <address@hidden>
 +
 +      * int_array.c (int_copy): Initialize next pointer of newchain to null.
 +      * eval.c (eval_condition): Force string context for an integer used
 +      as array index.
 +
 +2012-11-10         Arnold D. Robbins     <address@hidden>
 +
 +      * gawkapi.c (api_add_ext_func, api_awk_atexit, api_clear_array,
 +      api_create_array, api_create_value, api_register_ext_version,
 +      api_release_value, api_update_ERRNO_string, node_to_awk_value,
 +      remove_element, run_ext_exit_handlers): Add null pointer checks.
 +      Everywhere: Add / fixup leading comments.
 +
 +      * interpret.h (Op_store_sub): If assigning to an unitialized variable
 +      through SYMTAB, change it to Node_var. Add explanatory comments.
 +      * symbol.c (get_symbol): Rationalized. Skip non-variables in SYMTAB.
 +
 +2012-11-04         Arnold D. Robbins     <address@hidden>
 +
 +      * gawkapi.h: Minor documentation edit.
 +
 +2012-10-31         Arnold D. Robbins     <address@hidden>
 +
 +      * awkgram.y (want_regexp): Use as a bool, not as an int.
 +      * field.c: Fix a comment.
 +      * gawkapi.h: Add comment to include <errno.h>.
 +      * symbol.c (load_symbols): ``No automatic aggregate initialization.''
 +      Here too. Sigh again.
 +
 +      * gawkapi.h: Minor documentation edits.
 +
  2012-10-28         Arnold D. Robbins     <address@hidden>
  
        * Update to bison 2.6.4. Various files regenerated.
diff --cc awkgram.c
index 09ec7b1,ba32abc..324ba1e
--- a/awkgram.c
+++ b/awkgram.c
@@@ -193,8 -206,18 +193,8 @@@ extern double fmod(double x, double y)
  
  #define YYSTYPE INSTRUCTION *
  
- /* Line 358 of yacc.c  */
+ /* Line 360 of yacc.c  */
 -#line 221 "awkgram.c"
 +#line 198 "awkgram.c"
  
  # ifndef YY_NULL
  #  if defined __cplusplus && 201103L <= __cplusplus
@@@ -362,8 -383,8 +362,8 @@@ int yyparse ()
  
  /* Copy the second part of user declarations.  */
  
- /* Line 377 of yacc.c  */
+ /* Line 379 of yacc.c  */
 -#line 388 "awkgram.c"
 +#line 367 "awkgram.c"
  
  #ifdef short
  # undef short
@@@ -2066,8 -2045,8 +2028,8 @@@ yyreduce
    switch (yyn)
      {
          case 3:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 221 "awkgram.y"
 +#line 198 "awkgram.y"
      {
                rule = 0;
                yyerrok;
@@@ -2075,18 -2054,16 +2037,18 @@@
      break;
  
    case 5:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 227 "awkgram.y"
 +#line 204 "awkgram.y"
      {
                next_sourcefile();
 +              if (sourcefile == srcfiles)
 +                      process_deferred();
          }
      break;
  
    case 6:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 231 "awkgram.y"
 +#line 210 "awkgram.y"
      {
                rule = 0;
                /*
@@@ -2098,16 -2075,16 +2060,16 @@@
      break;
  
    case 7:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 243 "awkgram.y"
 +#line 222 "awkgram.y"
      {
                (void) append_rule((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
          }
      break;
  
    case 8:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 247 "awkgram.y"
 +#line 226 "awkgram.y"
      {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@@ -2121,36 -2098,29 +2083,36 @@@
      break;
  
    case 9:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 258 "awkgram.y"
 +#line 237 "awkgram.y"
      {
 -              can_return = FALSE;
 -              if ((yyvsp[(1) - (2)]) && func_install((yyvsp[(1) - (2)]), 
(yyvsp[(2) - (2)])) < 0)
 -                      YYABORT;
 -              func_params = NULL;
 +              in_function = NULL;
 +              (void) mk_function((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
                yyerrok;
          }
      break;
  
    case 10:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 266 "awkgram.y"
 +#line 243 "awkgram.y"
      {
 -              want_source = FALSE;
 +              want_source = false;
                yyerrok;
          }
      break;
  
    case 11:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 274 "awkgram.y"
 +#line 248 "awkgram.y"
 +    {
 +              want_source = false;
 +              yyerrok;
 +        }
 +    break;
 +
 +  case 12:
- /* Line 1813 of yacc.c  */
++/* Line 1778 of yacc.c  */
 +#line 256 "awkgram.y"
      {
                if (include_source((yyvsp[(1) - (1)])) < 0)
                        YYABORT;
@@@ -2160,57 -2130,33 +2122,57 @@@
          }
      break;
  
 -  case 12:
 +  case 13:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 282 "awkgram.y"
 +#line 264 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 13:
 +  case 14:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 284 "awkgram.y"
 +#line 266 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 14:
 +  case 15:
- /* Line 1813 of yacc.c  */
++/* Line 1778 of yacc.c  */
 +#line 271 "awkgram.y"
 +    {
 +              if (load_library((yyvsp[(1) - (1)])) < 0)
 +                      YYABORT;
 +              efree((yyvsp[(1) - (1)])->lextok);
 +              bcfree((yyvsp[(1) - (1)]));
 +              (yyval) = NULL;
 +        }
 +    break;
 +
 +  case 16:
- /* Line 1813 of yacc.c  */
++/* Line 1778 of yacc.c  */
 +#line 279 "awkgram.y"
 +    { (yyval) = NULL; }
 +    break;
 +
 +  case 17:
- /* Line 1813 of yacc.c  */
++/* Line 1778 of yacc.c  */
 +#line 281 "awkgram.y"
 +    { (yyval) = NULL; }
 +    break;
 +
 +  case 18:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 289 "awkgram.y"
 +#line 286 "awkgram.y"
      { (yyval) = NULL; rule = Rule; }
      break;
  
 -  case 15:
 +  case 19:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 291 "awkgram.y"
 +#line 288 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); rule = Rule; }
      break;
  
 -  case 16:
 +  case 20:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 293 "awkgram.y"
 +#line 290 "awkgram.y"
      {
                INSTRUCTION *tp;
  
@@@ -2238,9 -2184,9 +2200,9 @@@
          }
      break;
  
 -  case 17:
 +  case 21:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 319 "awkgram.y"
 +#line 316 "awkgram.y"
      {
                static int begin_seen = 0;
                if (do_lint_old && ++begin_seen == 2)
@@@ -2253,9 -2199,9 +2215,9 @@@
          }
      break;
  
 -  case 18:
 +  case 22:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 330 "awkgram.y"
 +#line 327 "awkgram.y"
      {
                static int end_seen = 0;
                if (do_lint_old && ++end_seen == 2)
@@@ -2268,9 -2214,9 +2230,9 @@@
          }
      break;
  
 -  case 19:
 +  case 23:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 341 "awkgram.y"
 +#line 338 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->in_rule = rule = BEGINFILE;
                (yyvsp[(1) - (1)])->source_file = source;
@@@ -2278,9 -2224,9 +2240,9 @@@
          }
      break;
  
 -  case 20:
 +  case 24:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 347 "awkgram.y"
 +#line 344 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->in_rule = rule = ENDFILE;
                (yyvsp[(1) - (1)])->source_file = source;
@@@ -2288,9 -2234,9 +2250,9 @@@
          }
      break;
  
 -  case 21:
 +  case 25:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 356 "awkgram.y"
 +#line 353 "awkgram.y"
      {
                if ((yyvsp[(2) - (5)]) == NULL)
                        (yyval) = list_create(instruction(Op_no_op));
@@@ -2299,58 -2245,78 +2261,58 @@@
          }
      break;
  
 -  case 22:
 +  case 26:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 366 "awkgram.y"
 +#line 363 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 23:
 +  case 27:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 368 "awkgram.y"
 +#line 365 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 24:
 +  case 28:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 370 "awkgram.y"
 +#line 367 "awkgram.y"
      {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
 -                      tokstart);
 -              (yyvsp[(1) - (1)])->opcode = Op_symbol; /* Op_symbol instead of 
Op_token so that
 -                                       * free_bc_internal does not try to 
free it
 -                                       */
 -              (yyvsp[(1) - (1)])->lextok = builtin_func;
 -              (yyval) = (yyvsp[(1) - (1)]);
 -              /* yyerrok; */
 +                                      tokstart);
 +              YYABORT;
          }
      break;
  
 -  case 25:
 +  case 29:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 381 "awkgram.y"
 +#line 373 "awkgram.y"
      { (yyval) = (yyvsp[(2) - (2)]); }
      break;
  
 -  case 28:
 +  case 32:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 391 "awkgram.y"
 +#line 383 "awkgram.y"
      {
 -              param_counter = 0;
 -              func_params = NULL;
 +              (yyvsp[(1) - (6)])->source_file = source;
 +              if (install_function((yyvsp[(2) - (6)])->lextok, (yyvsp[(1) - 
(6)]), (yyvsp[(4) - (6)])) < 0)
 +                      YYABORT;
 +              in_function = (yyvsp[(2) - (6)])->lextok;
 +              (yyvsp[(2) - (6)])->lextok = NULL;
 +              bcfree((yyvsp[(2) - (6)]));
 +              /* $4 already free'd in install_function */
 +              (yyval) = (yyvsp[(1) - (6)]);
          }
      break;
  
 -  case 29:
 -/* Line 1778 of yacc.c  */
 -#line 396 "awkgram.y"
 -    {
 -                      NODE *t;
 -
 -                      (yyvsp[(1) - (7)])->source_file = source;
 -                      t = make_param((yyvsp[(3) - (7)])->lextok);
 -                      (yyvsp[(3) - (7)])->lextok = NULL;
 -                      bcfree((yyvsp[(3) - (7)]));
 -                      t->flags |= FUNC;
 -                      t->rnode = func_params;
 -                      func_params = t;
 -                      (yyval) = (yyvsp[(1) - (7)]);
 -                      can_return = TRUE;
 -                      /* check for duplicate parameter names */
 -                      if (dup_parms((yyvsp[(1) - (7)]), t))
 -                              errcount++;
 -              }
 -    break;
 -
 -  case 30:
 +  case 33:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 420 "awkgram.y"
 -    { ++want_regexp; }
 +#line 401 "awkgram.y"
 +    { want_regexp = true; }
      break;
  
 -  case 31:
 +  case 34:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 422 "awkgram.y"
 +#line 403 "awkgram.y"
      {
                  NODE *n, *exp;
                  char *re;
@@@ -2381,21 -2346,21 +2343,21 @@@
                }
      break;
  
 -  case 32:
 +  case 35:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 453 "awkgram.y"
 +#line 435 "awkgram.y"
      { bcfree((yyvsp[(1) - (1)])); }
      break;
  
 -  case 34:
 +  case 37:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 459 "awkgram.y"
 +#line 441 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 35:
 +  case 38:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 461 "awkgram.y"
 +#line 443 "awkgram.y"
      {
                if ((yyvsp[(2) - (2)]) == NULL)
                        (yyval) = (yyvsp[(1) - (2)]);
@@@ -2410,38 -2375,38 +2372,38 @@@
          }
      break;
  
 -  case 36:
 +  case 39:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 474 "awkgram.y"
 +#line 456 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 39:
 +  case 42:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 484 "awkgram.y"
 +#line 466 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 40:
 +  case 43:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 486 "awkgram.y"
 +#line 468 "awkgram.y"
      { (yyval) = (yyvsp[(2) - (3)]); }
      break;
  
 -  case 41:
 +  case 44:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 488 "awkgram.y"
 +#line 470 "awkgram.y"
      {
 -              if (do_profiling)
 +              if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[(1) - (1)]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[(1) - (1)]);
          }
      break;
  
 -  case 42:
 +  case 45:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 495 "awkgram.y"
 +#line 477 "awkgram.y"
      {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@@ -2533,9 -2498,9 +2495,9 @@@
          }
      break;
  
 -  case 43:
 +  case 46:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 585 "awkgram.y"
 +#line 567 "awkgram.y"
      { 
                /*
                 *    -----------------
@@@ -2579,9 -2544,9 +2541,9 @@@
          }
      break;
  
 -  case 44:
 +  case 47:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 627 "awkgram.y"
 +#line 609 "awkgram.y"
      {
                /*
                 *    -----------------
@@@ -2625,9 -2590,9 +2587,9 @@@
          }
      break;
  
 -  case 45:
 +  case 48:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 669 "awkgram.y"
 +#line 651 "awkgram.y"
      {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[(3) - (8)])->lextok;
@@@ -2742,9 -2707,9 +2704,9 @@@ regular_loop
          }
      break;
  
 -  case 46:
 +  case 49:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 782 "awkgram.y"
 +#line 764 "awkgram.y"
      {
                (yyval) = mk_for_loop((yyvsp[(1) - (12)]), (yyvsp[(3) - (12)]), 
(yyvsp[(6) - (12)]), (yyvsp[(9) - (12)]), (yyvsp[(12) - (12)]));
  
@@@ -2753,9 -2718,9 +2715,9 @@@
          }
      break;
  
 -  case 47:
 +  case 50:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 789 "awkgram.y"
 +#line 771 "awkgram.y"
      {
                (yyval) = mk_for_loop((yyvsp[(1) - (11)]), (yyvsp[(3) - (11)]), 
(INSTRUCTION *) NULL, (yyvsp[(8) - (11)]), (yyvsp[(11) - (11)]));
  
@@@ -2764,20 -2729,20 +2726,20 @@@
          }
      break;
  
 -  case 48:
 +  case 51:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 796 "awkgram.y"
 +#line 778 "awkgram.y"
      {
 -              if (do_profiling)
 +              if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[(1) - (1)]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[(1) - (1)]);
          }
      break;
  
 -  case 49:
 +  case 52:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 806 "awkgram.y"
 +#line 788 "awkgram.y"
      { 
                if (! break_allowed)
                        error_ln((yyvsp[(1) - (2)])->source_line,
@@@ -2788,9 -2753,9 +2750,9 @@@
          }
      break;
  
 -  case 50:
 +  case 53:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 815 "awkgram.y"
 +#line 797 "awkgram.y"
      {
                if (! continue_allowed)
                        error_ln((yyvsp[(1) - (2)])->source_line,
@@@ -2801,9 -2766,9 +2763,9 @@@
          }
      break;
  
 -  case 51:
 +  case 54:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 824 "awkgram.y"
 +#line 806 "awkgram.y"
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@@ -2814,9 -2779,9 +2776,9 @@@
          }
      break;
  
 -  case 52:
 +  case 55:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 833 "awkgram.y"
 +#line 815 "awkgram.y"
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@@ -2829,9 -2794,9 +2791,9 @@@
          }
      break;
  
 -  case 53:
 +  case 56:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 844 "awkgram.y"
 +#line 826 "awkgram.y"
      {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@@ -2848,18 -2813,18 +2810,18 @@@
          }
      break;
  
 -  case 54:
 +  case 57:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 859 "awkgram.y"
 +#line 841 "awkgram.y"
      {
 -              if (! can_return)
 +              if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
      break;
  
 -  case 55:
 +  case 58:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 862 "awkgram.y"
 +#line 844 "awkgram.y"
      {
                if ((yyvsp[(3) - (4)]) == NULL) {
                        (yyval) = list_create((yyvsp[(1) - (4)]));
@@@ -2882,15 -2835,15 +2844,15 @@@
          }
      break;
  
 -  case 57:
 +  case 60:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 882 "awkgram.y"
 -    { in_print = TRUE; in_parens = 0; }
 +#line 876 "awkgram.y"
 +    { in_print = true; in_parens = 0; }
      break;
  
 -  case 58:
 +  case 61:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 883 "awkgram.y"
 +#line 877 "awkgram.y"
      {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@@ -2989,15 -2940,15 +2951,15 @@@ regular_print
          }
      break;
  
 -  case 59:
 +  case 62:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 978 "awkgram.y"
 +#line 974 "awkgram.y"
      { sub_counter = 0; }
      break;
  
 -  case 60:
 +  case 63:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 979 "awkgram.y"
 +#line 975 "awkgram.y"
      {
                char *arr = (yyvsp[(2) - (4)])->lextok;
  
@@@ -3032,11 -2976,11 +2994,11 @@@
          }
      break;
  
 -  case 61:
 +  case 64:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1009 "awkgram.y"
 +#line 1012 "awkgram.y"
      {
 -              static short warned = FALSE;
 +              static bool warned = false;
                char *arr = (yyvsp[(3) - (4)])->lextok;
  
                if (do_lint && ! warned) {
@@@ -3062,33 -2999,33 +3024,33 @@@
          }
      break;
  
 -  case 62:
 +  case 65:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1028 "awkgram.y"
 +#line 1038 "awkgram.y"
      { (yyval) = optimize_assignment((yyvsp[(1) - (1)])); }
      break;
  
 -  case 63:
 +  case 66:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1033 "awkgram.y"
 +#line 1043 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 64:
 +  case 67:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1035 "awkgram.y"
 +#line 1045 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 65:
 +  case 68:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1040 "awkgram.y"
 +#line 1050 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 66:
 +  case 69:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1042 "awkgram.y"
 +#line 1052 "awkgram.y"
      {
                if ((yyvsp[(1) - (2)]) == NULL)
                        (yyval) = list_create((yyvsp[(2) - (2)]));
@@@ -3097,15 -3034,15 +3059,15 @@@
          }
      break;
  
 -  case 67:
 +  case 70:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1049 "awkgram.y"
 +#line 1059 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 68:
 +  case 71:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1054 "awkgram.y"
 +#line 1064 "awkgram.y"
      {
                INSTRUCTION *casestmt = (yyvsp[(5) - (5)]);
                if ((yyvsp[(5) - (5)]) == NULL)
@@@ -3119,9 -3056,9 +3081,9 @@@
          }
      break;
  
 -  case 69:
 +  case 72:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1066 "awkgram.y"
 +#line 1076 "awkgram.y"
      {
                INSTRUCTION *casestmt = (yyvsp[(4) - (4)]);
                if ((yyvsp[(4) - (4)]) == NULL)
@@@ -3134,87 -3071,85 +3096,87 @@@
          }
      break;
  
 -  case 70:
 +  case 73:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1080 "awkgram.y"
 +#line 1090 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 71:
 +  case 74:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1082 "awkgram.y"
 +#line 1092 "awkgram.y"
      { 
 -              (yyvsp[(2) - (2)])->memory->numbr = -(force_number((yyvsp[(2) - 
(2)])->memory));
 +              NODE *n = (yyvsp[(2) - (2)])->memory;
 +              (void) force_number(n);
 +              negate_num(n);
                bcfree((yyvsp[(1) - (2)]));
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
 -  case 72:
 +  case 75:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1088 "awkgram.y"
 +#line 1100 "awkgram.y"
      {
                bcfree((yyvsp[(1) - (2)]));
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
 -  case 73:
 +  case 76:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1093 "awkgram.y"
 +#line 1105 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 74:
 +  case 77:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1095 "awkgram.y"
 +#line 1107 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_push_re;
                (yyval) = (yyvsp[(1) - (1)]);
          }
      break;
  
 -  case 75:
 +  case 78:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1103 "awkgram.y"
 +#line 1115 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 76:
 +  case 79:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1105 "awkgram.y"
 +#line 1117 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 78:
 +  case 81:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1115 "awkgram.y"
 +#line 1127 "awkgram.y"
      {
                (yyval) = (yyvsp[(2) - (3)]);
          }
      break;
  
 -  case 79:
 +  case 82:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1122 "awkgram.y"
 +#line 1134 "awkgram.y"
      {
 -              in_print = FALSE;
 +              in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
      break;
  
 -  case 80:
 +  case 83:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1127 "awkgram.y"
 -    { in_print = FALSE; in_parens = 0; }
 +#line 1139 "awkgram.y"
 +    { in_print = false; in_parens = 0; }
      break;
  
 -  case 81:
 +  case 84:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1128 "awkgram.y"
 +#line 1140 "awkgram.y"
      {
                if ((yyvsp[(1) - (3)])->redir_type == redirect_twoway
                        && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_K_getline_redir
@@@ -3224,175 -3159,165 +3186,175 @@@
          }
      break;
  
 -  case 82:
 +  case 85:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1139 "awkgram.y"
 +#line 1151 "awkgram.y"
      {
                (yyval) = mk_condition((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]), 
(yyvsp[(6) - (6)]), NULL, NULL);
          }
      break;
  
 -  case 83:
 +  case 86:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1144 "awkgram.y"
 +#line 1156 "awkgram.y"
      {
                (yyval) = mk_condition((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]), 
(yyvsp[(6) - (9)]), (yyvsp[(7) - (9)]), (yyvsp[(9) - (9)]));
          }
      break;
  
 -  case 88:
 +  case 91:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1161 "awkgram.y"
 +#line 1173 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 89:
 +  case 92:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1163 "awkgram.y"
 +#line 1175 "awkgram.y"
      {
                bcfree((yyvsp[(1) - (2)]));
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
 -  case 92:
 -/* Line 1778 of yacc.c  */
 -#line 1176 "awkgram.y"
 -    {
 -              append_param((yyvsp[(1) - (1)])->lextok);
 -              (yyvsp[(1) - (1)])->lextok = NULL;
 -              bcfree((yyvsp[(1) - (1)]));
 -        }
 -    break;
 -
    case 93:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1182 "awkgram.y"
 -    {
 -              append_param((yyvsp[(3) - (3)])->lextok);
 -              (yyvsp[(3) - (3)])->lextok = NULL;
 -              bcfree((yyvsp[(3) - (3)]));
 -              yyerrok;
 -        }
 +#line 1183 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 94:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1189 "awkgram.y"
 -    { /* func_params = NULL; */ }
 +#line 1185 "awkgram.y"
 +    { (yyval) = (yyvsp[(1) - (1)]) ; }
      break;
  
    case 95:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1191 "awkgram.y"
 -    { /* func_params = NULL; */ }
 +#line 1190 "awkgram.y"
 +    {
 +              (yyvsp[(1) - (1)])->param_count = 0;
 +              (yyval) = list_create((yyvsp[(1) - (1)]));
 +        }
      break;
  
    case 96:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1193 "awkgram.y"
 -    { /* func_params = NULL; */ }
 +#line 1195 "awkgram.y"
 +    {
 +              (yyvsp[(3) - (3)])->param_count =  (yyvsp[(1) - 
(3)])->lasti->param_count + 1;
 +              (yyval) = list_append((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
 +              yyerrok;
 +        }
      break;
  
    case 97:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1199 "awkgram.y"
 +#line 1201 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
    case 98:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1201 "awkgram.y"
 -    { (yyval) = (yyvsp[(1) - (1)]); }
 +#line 1203 "awkgram.y"
 +    { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
    case 99:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1206 "awkgram.y"
 -    { (yyval) = NULL; }
 +#line 1205 "awkgram.y"
 +    { (yyval) = (yyvsp[(1) - (3)]); }
      break;
  
    case 100:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1208 "awkgram.y"
 -    { (yyval) = (yyvsp[(1) - (1)]); }
 +#line 1211 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 101:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 1213 "awkgram.y"
 -    { (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
 +    { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
    case 102:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1215 "awkgram.y"
 -    {
 -              (yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - 
(3)]));
 -              yyerrok;
 -        }
 +#line 1218 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 103:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 1220 "awkgram.y"
 -    { (yyval) = NULL; }
 +    { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
    case 104:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1222 "awkgram.y"
 -    { (yyval) = NULL; }
 +#line 1225 "awkgram.y"
 +    { (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
      break;
  
    case 105:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1224 "awkgram.y"
 -    { (yyval) = NULL; }
 +#line 1227 "awkgram.y"
 +    {
 +              (yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - 
(3)]));
 +              yyerrok;
 +        }
      break;
  
    case 106:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1226 "awkgram.y"
 +#line 1232 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
    case 107:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1232 "awkgram.y"
 -    {
 -              if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_match_rec)
 -                      lintwarn_ln((yyvsp[(2) - (3)])->source_line,
 -                              _("regular expression on right of assignment"));
 -              (yyval) = mk_assignment((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 
(yyvsp[(2) - (3)]));
 -        }
 +#line 1234 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 108:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1239 "awkgram.y"
 -    { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
 +#line 1236 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 109:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1241 "awkgram.y"
 -    { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
 +#line 1238 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 110:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1243 "awkgram.y"
 +#line 1244 "awkgram.y"
 +    {
 +              if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_match_rec)
 +                      lintwarn_ln((yyvsp[(2) - (3)])->source_line,
 +                              _("regular expression on right of assignment"));
 +              (yyval) = mk_assignment((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), 
(yyvsp[(2) - (3)]));
 +        }
 +    break;
 +
 +  case 111:
- /* Line 1813 of yacc.c  */
++/* Line 1778 of yacc.c  */
 +#line 1251 "awkgram.y"
 +    { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
 +    break;
 +
 +  case 112:
- /* Line 1813 of yacc.c  */
++/* Line 1778 of yacc.c  */
 +#line 1253 "awkgram.y"
 +    { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
 +    break;
 +
 +  case 113:
- /* Line 1813 of yacc.c  */
++/* Line 1778 of yacc.c  */
 +#line 1255 "awkgram.y"
      {
                if ((yyvsp[(1) - (3)])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3410,12 -3335,12 +3372,12 @@@
          }
      break;
  
 -  case 111:
 +  case 114:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1259 "awkgram.y"
 +#line 1271 "awkgram.y"
      {
                if (do_lint_old)
 -                warning_ln((yyvsp[(2) - (3)])->source_line,
 +                      warning_ln((yyvsp[(2) - (3)])->source_line,
                                _("old awk does not support the keyword `in' 
except after `for'"));
                (yyvsp[(3) - (3)])->nexti->opcode = Op_push_array;
                (yyvsp[(2) - (3)])->opcode = Op_in_array;
@@@ -3424,9 -3349,9 +3386,9 @@@
          }
      break;
  
 -  case 112:
 +  case 115:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1269 "awkgram.y"
 +#line 1281 "awkgram.y"
      {
                if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_match_rec)
                        lintwarn_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3435,81 -3360,81 +3397,81 @@@
          }
      break;
  
 -  case 113:
 +  case 116:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1276 "awkgram.y"
 +#line 1288 "awkgram.y"
      { (yyval) = mk_condition((yyvsp[(1) - (5)]), (yyvsp[(2) - (5)]), 
(yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), (yyvsp[(5) - (5)])); }
      break;
  
 -  case 114:
 +  case 117:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1278 "awkgram.y"
 +#line 1290 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 115:
 +  case 118:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1283 "awkgram.y"
 +#line 1295 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 116:
 +  case 119:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1285 "awkgram.y"
 +#line 1297 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 117:
 +  case 120:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1287 "awkgram.y"
 +#line 1299 "awkgram.y"
      { 
                (yyvsp[(2) - (2)])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
 -  case 118:
 +  case 121:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1295 "awkgram.y"
 +#line 1307 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 119:
 +  case 122:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1297 "awkgram.y"
 +#line 1309 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 120:
 +  case 123:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1302 "awkgram.y"
 +#line 1314 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 121:
 +  case 124:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1304 "awkgram.y"
 +#line 1316 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 122:
 +  case 125:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1309 "awkgram.y"
 +#line 1321 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 123:
 +  case 126:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1311 "awkgram.y"
 +#line 1323 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 124:
 +  case 127:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1313 "awkgram.y"
 +#line 1325 "awkgram.y"
      {
                int count = 2;
 -              int is_simple_var = FALSE;
 +              bool is_simple_var = false;
  
                if ((yyvsp[(1) - (2)])->lasti->opcode == Op_concat) {
                        /* multiple (> 2) adjacent strings optimization */
@@@ -3555,45 -3483,45 +3517,45 @@@
          }
      break;
  
 -  case 126:
 +  case 129:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1368 "awkgram.y"
 +#line 1377 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 127:
 +  case 130:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1370 "awkgram.y"
 +#line 1379 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 128:
 +  case 131:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1372 "awkgram.y"
 +#line 1381 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 129:
 +  case 132:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1374 "awkgram.y"
 +#line 1383 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 130:
 +  case 133:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1376 "awkgram.y"
 +#line 1385 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 131:
 +  case 134:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1378 "awkgram.y"
 +#line 1387 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 132:
 +  case 135:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1380 "awkgram.y"
 +#line 1389 "awkgram.y"
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline var < file'
@@@ -3618,27 -3546,27 +3580,27 @@@
          }
      break;
  
 -  case 133:
 +  case 136:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1403 "awkgram.y"
 +#line 1412 "awkgram.y"
      {
                (yyvsp[(2) - (2)])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - 
(2)]));
          }
      break;
  
 -  case 134:
 +  case 137:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1408 "awkgram.y"
 +#line 1417 "awkgram.y"
      {
                (yyvsp[(2) - (2)])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - 
(2)]));
          }
      break;
  
 -  case 135:
 +  case 138:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1413 "awkgram.y"
 +#line 1422 "awkgram.y"
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[(4) - (5)])->source_line,
@@@ -3660,62 -3588,62 +3622,62 @@@
          }
      break;
  
 -  case 136:
 +  case 139:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1438 "awkgram.y"
 +#line 1447 "awkgram.y"
      {
                  (yyval) = mk_getline((yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]), 
(yyvsp[(1) - (4)]), (yyvsp[(2) - (4)])->redir_type);
                  bcfree((yyvsp[(2) - (4)]));
                }
      break;
  
 -  case 137:
 +  case 140:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1444 "awkgram.y"
 +#line 1453 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 138:
 +  case 141:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1446 "awkgram.y"
 +#line 1455 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 139:
 +  case 142:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1448 "awkgram.y"
 +#line 1457 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 140:
 +  case 143:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1450 "awkgram.y"
 +#line 1459 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 141:
 +  case 144:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1452 "awkgram.y"
 +#line 1461 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 142:
 +  case 145:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1454 "awkgram.y"
 +#line 1463 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 143:
 +  case 146:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1459 "awkgram.y"
 +#line 1468 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
 -  case 144:
 +  case 147:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1463 "awkgram.y"
 +#line 1472 "awkgram.y"
      {
                if ((yyvsp[(2) - (2)])->opcode == Op_match_rec) {
                        (yyvsp[(2) - (2)])->opcode = Op_nomatch;
@@@ -3749,15 -3676,15 +3711,15 @@@
           }
      break;
  
 -  case 145:
 +  case 148:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1494 "awkgram.y"
 +#line 1504 "awkgram.y"
      { (yyval) = (yyvsp[(2) - (3)]); }
      break;
  
 -  case 146:
 +  case 149:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1496 "awkgram.y"
 +#line 1506 "awkgram.y"
      {
                (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
                if ((yyval) == NULL)
@@@ -3765,9 -3692,9 +3727,9 @@@
          }
      break;
  
 -  case 147:
 +  case 150:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1502 "awkgram.y"
 +#line 1512 "awkgram.y"
      {
                (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
                if ((yyval) == NULL)
@@@ -3775,14 -3702,14 +3737,14 @@@
          }
      break;
  
 -  case 148:
 +  case 151:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1508 "awkgram.y"
 +#line 1518 "awkgram.y"
      {
 -              static short warned1 = FALSE;
 +              static bool warned = false;
  
 -              if (do_lint && ! warned1) {
 -                      warned1 = TRUE;
 +              if (do_lint && ! warned) {
 +                      warned = true;
                        lintwarn_ln((yyvsp[(1) - (1)])->source_line,
                                _("call of `length' without parentheses is not 
portable"));
                }
@@@ -3792,50 -3719,47 +3754,50 @@@
          }
      break;
  
 -  case 151:
 +  case 154:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1523 "awkgram.y"
 +#line 1533 "awkgram.y"
      {
                (yyvsp[(1) - (2)])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - 
(2)]));
          }
      break;
  
 -  case 152:
 +  case 155:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1528 "awkgram.y"
 +#line 1538 "awkgram.y"
      {
                (yyvsp[(1) - (2)])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - 
(2)]));
          }
      break;
  
 -  case 153:
 +  case 156:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1533 "awkgram.y"
 +#line 1543 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
 -  case 154:
 +  case 157:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1537 "awkgram.y"
 +#line 1547 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
 -  case 155:
 +  case 158:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1541 "awkgram.y"
 +#line 1551 "awkgram.y"
      {
                if ((yyvsp[(2) - (2)])->lasti->opcode == Op_push_i
 -                              && ((yyvsp[(2) - (2)])->lasti->memory->flags & 
(STRCUR|STRING)) == 0) {
 -                      (yyvsp[(2) - (2)])->lasti->memory->numbr = 
-(force_number((yyvsp[(2) - (2)])->lasti->memory));
 +                      && ((yyvsp[(2) - (2)])->lasti->memory->flags & 
(STRCUR|STRING)) == 0
 +              ) {
 +                      NODE *n = (yyvsp[(2) - (2)])->lasti->memory;
 +                      (void) force_number(n);
 +                      negate_num(n);                  
                        (yyval) = (yyvsp[(2) - (2)]);
                        bcfree((yyvsp[(1) - (2)]));
                } else {
@@@ -3845,9 -3769,9 +3807,9 @@@
          }
      break;
  
 -  case 156:
 +  case 159:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1553 "awkgram.y"
 +#line 1566 "awkgram.y"
      {
            /*
             * was: $$ = $2
@@@ -3859,18 -3783,18 +3821,18 @@@
          }
      break;
  
 -  case 157:
 +  case 160:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1566 "awkgram.y"
 +#line 1579 "awkgram.y"
      {
                func_use((yyvsp[(1) - (1)])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[(1) - (1)]);
          }
      break;
  
 -  case 158:
 +  case 161:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1571 "awkgram.y"
 +#line 1584 "awkgram.y"
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -3905,9 -3829,9 +3867,9 @@@
          }
      break;
  
 -  case 159:
 +  case 162:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1607 "awkgram.y"
 +#line 1620 "awkgram.y"
      {
                param_sanity((yyvsp[(3) - (4)]));
                (yyvsp[(1) - (4)])->opcode = Op_func_call;
@@@ -3923,47 -3847,47 +3885,47 @@@
          }
      break;
  
 -  case 160:
 +  case 163:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1624 "awkgram.y"
 +#line 1637 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 161:
 +  case 164:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1626 "awkgram.y"
 +#line 1639 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 162:
 +  case 165:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1631 "awkgram.y"
 +#line 1644 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 163:
 +  case 166:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1633 "awkgram.y"
 +#line 1646 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
 -  case 164:
 +  case 167:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1638 "awkgram.y"
 +#line 1651 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 165:
 +  case 168:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1640 "awkgram.y"
 +#line 1653 "awkgram.y"
      {
                (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
          }
      break;
  
 -  case 166:
 +  case 169:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1647 "awkgram.y"
 +#line 1660 "awkgram.y"
      {
                INSTRUCTION *ip = (yyvsp[(1) - (1)])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -3979,9 -3903,9 +3941,9 @@@
          }
      break;
  
 -  case 167:
 +  case 170:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1664 "awkgram.y"
 +#line 1677 "awkgram.y"
      {
                INSTRUCTION *t = (yyvsp[(2) - (3)]);
                if ((yyvsp[(2) - (3)]) == NULL) {
@@@ -3997,29 -3921,29 +3959,29 @@@
          }
      break;
  
 -  case 168:
 +  case 171:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1681 "awkgram.y"
 +#line 1694 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 169:
 +  case 172:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1683 "awkgram.y"
 +#line 1696 "awkgram.y"
      {
                (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
          }
      break;
  
 -  case 170:
 +  case 173:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1690 "awkgram.y"
 +#line 1703 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
 -  case 171:
 +  case 174:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1695 "awkgram.y"
 +#line 1708 "awkgram.y"
      {
                char *var_name = (yyvsp[(1) - (1)])->lextok;
  
@@@ -4029,20 -3953,24 +3991,20 @@@
          }
      break;
  
 -  case 172:
 +  case 175:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1703 "awkgram.y"
 +#line 1716 "awkgram.y"
      {
 -              NODE *n;
 -
                char *arr = (yyvsp[(1) - (2)])->lextok;
 -              if ((n = lookup(arr)) != NULL && ! isarray(n))
 -                      yyerror(_("use of non-array as array"));
 -              (yyvsp[(1) - (2)])->memory = variable(arr, Node_var_new);
 +              (yyvsp[(1) - (2)])->memory = variable((yyvsp[(1) - 
(2)])->source_line, arr, Node_var_new);
                (yyvsp[(1) - (2)])->opcode = Op_push_array;
                (yyval) = list_prepend((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
          }
      break;
  
 -  case 173:
 +  case 176:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1717 "awkgram.y"
 +#line 1726 "awkgram.y"
      {
                INSTRUCTION *ip = (yyvsp[(1) - (1)])->nexti;
                if (ip->opcode == Op_push
@@@ -4056,9 -3984,9 +4018,9 @@@
          }
      break;
  
 -  case 174:
 +  case 177:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1729 "awkgram.y"
 +#line 1738 "awkgram.y"
      {
                (yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
                if ((yyvsp[(3) - (3)]) != NULL)
@@@ -4066,61 -3994,61 +4028,61 @@@
          }
      break;
  
 -  case 175:
 +  case 178:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1738 "awkgram.y"
 +#line 1747 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_postincrement;
          }
      break;
  
 -  case 176:
 +  case 179:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1742 "awkgram.y"
 +#line 1751 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_postdecrement;
          }
      break;
  
 -  case 177:
 +  case 180:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1745 "awkgram.y"
 +#line 1754 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 179:
 +  case 182:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1753 "awkgram.y"
 +#line 1762 "awkgram.y"
      { yyerrok; }
      break;
  
 -  case 180:
 +  case 183:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1757 "awkgram.y"
 +#line 1766 "awkgram.y"
      { yyerrok; }
      break;
  
 -  case 183:
 +  case 186:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1766 "awkgram.y"
 +#line 1775 "awkgram.y"
      { yyerrok; }
      break;
  
 -  case 184:
 +  case 187:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1770 "awkgram.y"
 +#line 1779 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); yyerrok; }
      break;
  
 -  case 185:
 +  case 188:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
 -#line 1774 "awkgram.y"
 +#line 1783 "awkgram.y"
      { yyerrok; }
      break;
  
  
- /* Line 1813 of yacc.c  */
- #line 4136 "awkgram.c"
+ /* Line 1778 of yacc.c  */
 -#line 4064 "awkgram.c"
++#line 4098 "awkgram.c"
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4351,8 -4279,8 +4313,8 @@@ yyreturn
  }
  
  
- /* Line 2076 of yacc.c  */
+ /* Line 2041 of yacc.c  */
 -#line 1776 "awkgram.y"
 +#line 1785 "awkgram.y"
  
  
  struct token {
diff --cc command.c
index f04eead,4476273..e977929
--- a/command.c
+++ b/command.c
@@@ -1811,9 -1773,9 +1773,9 @@@ yyreduce
      break;
  
    case 22:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 212 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 23:
@@@ -1924,39 -1886,39 +1886,39 @@@
      break;
  
    case 38:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 305 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 40:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 306 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 46:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 311 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 49:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 313 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 51:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 314 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 53:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 315 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 57:
@@@ -2047,9 -2009,9 +2009,9 @@@
      break;
  
    case 63:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 381 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 64:
@@@ -2188,15 -2150,15 +2150,15 @@@
      break;
  
    case 89:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 496 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 92:
- /* Line 1813 of yacc.c  */
+ /* Line 1778 of yacc.c  */
  #line 498 "command.y"
 -    { want_nodeval = TRUE; }
 +    { want_nodeval = true; }
      break;
  
    case 95:

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog |    4 +
 NEWS      |    2 +-
 awkgram.c |  404 ++++++++++++++++++++++++++++---------------------------------
 command.c |  214 +++++++++++++-------------------
 4 files changed, 276 insertions(+), 348 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]