~vcs-imports/gawk/master

« back to all changes in this revision

Viewing changes to eval.c

  • Committer: Arnold D. Robbins
  • Date: 2016-10-23 09:12:50 UTC
  • mto: (408.31.25)
  • mto: This revision was merged to the branch mainline in revision 714.
  • Revision ID: git-v1:3055361c2a022c9ac9ae42ac88c00e3055498a0d
Remove trailing whitespace everywhere. Fix Unicode into ASCII.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * eval.c - gawk bytecode interpreter 
 
2
 * eval.c - gawk bytecode interpreter
3
3
 */
4
4
 
5
 
/* 
 
5
/*
6
6
 * Copyright (C) 1986, 1988, 1989, 1991-2016 the Free Software Foundation, Inc.
7
 
 * 
 
7
 *
8
8
 * This file is part of GAWK, the GNU implementation of the
9
9
 * AWK Programming Language.
10
 
 * 
 
10
 *
11
11
 * GAWK is free software; you can redistribute it and/or modify
12
12
 * it under the terms of the GNU General Public License as published by
13
13
 * the Free Software Foundation; either version 3 of the License, or
14
14
 * (at your option) any later version.
15
 
 * 
 
15
 *
16
16
 * GAWK is distributed in the hope that it will be useful,
17
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
19
 * GNU General Public License for more details.
20
 
 * 
 
20
 *
21
21
 * You should have received a copy of the GNU General Public License
22
22
 * along with this program; if not, write to the Free Software
23
23
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
53
53
#ifdef C
54
54
#undef C
55
55
#endif
56
 
#define C(c) ((char)c)  
 
56
#define C(c) ((char)c)
57
57
/*
58
58
 * This table is used by the regexp routines to do case independent
59
59
 * matching. Basically, every ascii character maps to itself, except
314
314
        { "Op_match", " ~ " },
315
315
        { "Op_match_rec", NULL },
316
316
        { "Op_nomatch", " !~ " },
317
 
        { "Op_rule", NULL }, 
 
317
        { "Op_rule", NULL },
318
318
        { "Op_K_case", "case" },
319
319
        { "Op_K_default", "default" },
320
320
        { "Op_K_break", "break" },
640
640
        }
641
641
 
642
642
        if (fcall_count > 1)
643
 
                memmove(fcall_list + 2, fcall_list + 1, (fcall_count - 1) * sizeof(NODE *)); 
 
643
                memmove(fcall_list + 2, fcall_list + 1, (fcall_count - 1) * sizeof(NODE *));
644
644
        fcall_list[1] = f;
645
645
}
646
646
 
651
651
pop_frame()
652
652
{
653
653
        if (fcall_count > 1)
654
 
                memmove(fcall_list + 1, fcall_list + 2, (fcall_count - 1) * sizeof(NODE *)); 
 
654
                memmove(fcall_list + 1, fcall_list + 2, (fcall_count - 1) * sizeof(NODE *));
655
655
        fcall_count--;
656
656
        assert(fcall_count >= 0);
657
657
        if (do_debug)
1075
1075
STACK_ITEM *stack_top;
1076
1076
static unsigned long STACK_SIZE = 256;    /* initial size of stack */
1077
1077
int max_args = 0;       /* maximum # of arguments to printf, print, sprintf,
1078
 
                         * or # of array subscripts, or adjacent strings     
 
1078
                         * or # of array subscripts, or adjacent strings
1079
1079
                         * to be concatenated.
1080
1080
                         */
1081
1081
NODE **args_array = NULL;
1147
1147
 
1148
1148
 
1149
1149
/* r_get_field --- get the address of a field node */
1150
 
 
 
1150
 
1151
1151
NODE **
1152
1152
r_get_field(NODE *n, Func_ptr *assign, bool reference)
1153
1153
{
1219
1219
}
1220
1220
 
1221
1221
 
1222
 
/* setup_frame --- setup new frame for function call */ 
 
1222
/* setup_frame --- setup new frame for function call */
1223
1223
 
1224
1224
static INSTRUCTION *
1225
1225
setup_frame(INSTRUCTION *pc)
1261
1261
        }
1262
1262
 
1263
1263
 
1264
 
        /* check for extra args */ 
 
1264
        /* check for extra args */
1265
1265
        if (arg_count > pcount) {
1266
1266
                warning(
1267
1267
                        _("function `%s' called with more arguments than declared"),
1355
1355
 
1356
1356
        /* setup new frame */
1357
1357
        getnode(frame_ptr);
1358
 
        frame_ptr->type = Node_frame;   
 
1358
        frame_ptr->type = Node_frame;
1359
1359
        frame_ptr->stack = sp;
1360
1360
        frame_ptr->prev_frame_size = (stack_ptr - stack_bottom); /* size of the previous stack frame */
1361
1361
        frame_ptr->func_node = f;
1473
1473
                        if (in_main_context() && ! exiting)
1474
1474
                                fatal(_("unwind_stack: unexpected type `%s'"),
1475
1475
                                                nodetype2str(r->type));
1476
 
                        /* else 
 
1476
                        /* else
1477
1477
                                * Node_var_array,
1478
1478
                                * Node_param_list,
1479
1479
                                * Node_var (e.g: trying to use scalar for array)
1487
1487
                        break;
1488
1488
        }
1489
1489
        return cp;
1490
 
 
1490
}
1491
1491
 
1492
1492
 
1493
1493
/* pop_fcall --- pop off the innermost frame */
1535
1535
}
1536
1536
 
1537
1537
/* op_assign --- assignment operators excluding = */
1538
 
 
 
1538
 
1539
1539
static void
1540
1540
op_assign(OPCODE op)
1541
1541
{
1637
1637
typedef struct exec_state {
1638
1638
        struct exec_state *next;
1639
1639
 
1640
 
        INSTRUCTION *cptr;  /* either getline (Op_K_getline) or the 
 
1640
        INSTRUCTION *cptr;  /* either getline (Op_K_getline) or the
1641
1641
                             * implicit "open-file, read-record" loop (Op_newfile).
1642
 
                             */ 
 
1642
                             */
1643
1643
 
1644
1644
        int rule;           /* rule for the INSTRUCTION */
1645
1645
 
1705
1705
        /*
1706
1706
         * multiple post-exec hooks aren't supported. post-exec hook is mainly
1707
1707
         * for use by the debugger.
1708
 
         */ 
 
1708
         */
1709
1709
 
1710
1710
        if (! preh || (post_execute && posth))
1711
1711
                return false;
1733
1733
}
1734
1734
 
1735
1735
 
1736
 
/* interpreter routine when not debugging */ 
 
1736
/* interpreter routine when not debugging */
1737
1737
#include "interpret.h"
1738
1738
 
1739
1739
/* interpreter routine with exec hook(s). Used when debugging and/or with MPFR. */
1781
1781
        if (num_exec_hook > 0)
1782
1782
                interpret = h_interpret;
1783
1783
        else
1784
 
                interpret = r_interpret; 
 
1784
                interpret = r_interpret;
1785
1785
}
1786
1786