Codebase list libmawk / upstream/latest
New upstream version 1.0.2 Bdale Garbee 4 years ago
26 changed file(s) with 725 addition(s) and 509 deletion(s). Raw diff Collapse all Expand all
00 Changelog for libmawk
11 ~~~~~~~~~~~~~~~~~~~~~
2
3 libmawk 1.0.2 (released: 2019-06-22, r1318)
4 [core] -Fix: C function calls with uninitialized variables: not sure if array or not, delay resolving it until all the script is parsed so we see if the symbol is an array
5 [build] -Fix: missing make uninstall
6 [doc] -Add: example (7libmawk)
7 [doc] -Fix: manual header sections match manual file name sections (submitted by Bdale)
8
29 libmawk 1.0.1 (released: 2019-02-26, r1307)
310 [build] -Fix: don't daisy-chain so symlinks (debian patch applied)
411 [build] -Add: install (3) and (7) manual pages
0 Release notes for libmawk 1.0.1
0 Release notes for libmawk 1.0.2
11
2 Minor bugfix release; main focus is on fixing all packaging
3 related bugs learned in 1.0.0 and NaN related bugs on less common
4 architectures.
2 Minor bugfix release; fixes C function call with uninitialized
3 variables and make uninstall.
54
5
0 packging:
1 - manual page headers use the wrong section
2
03 000. full doc rewrite
14
25 Features:
66
77 #define VER1 "1"
88 #define VER2 "0"
9 #define VER3 "1"
9 #define VER3 "2"
1010
1111 static void help(void)
1212 {
3737 {"pkg-config-zap","/arg/sys/pkg-config-zap",NULL, "ignore pkg-config results by this regex pattern"},
3838
3939 /* wildcard rules for icl() control */
40 {"^ldflags/", NULL, import_icl, NULL},
41 {"^cflags/", NULL, import_icl, NULL},
42 {"^includes/", NULL, import_icl, NULL},
43 {"^prefix/", NULL, import_icl, NULL},
40 {"^ldflags/", NULL, import_icl, "force LDFLAGS for a node"},
41 {"^cflags/", NULL, import_icl, "force CFLAGS for a node"},
42 {"^includes/", NULL, import_icl, "force #includes for a node"},
43 {"^prefix/", NULL, import_icl, "force using prefix path for detecting the node"},
4444
4545 /* the followings are autoconf compatibility translations */
46 {"CC", "/arg/cc/cc", NULL, "Force using a C compiler (command line)"},
47 {"CFLAGS", "/arg/cc/cflags", NULL, "Force using a CFLAGS for C compilation"},
48 {"LDFLAGS", "/arg/cc/ldflags", NULL, "Force using a LDFLAGS for linking"},
49 {"LDL", "/arg/libs/ldl", NULL, "Force using -ldl string"},
46 {"CC", "/arg/cc/cc", NULL, "Force using a C compiler (command line)"},
47 {"CFLAGS", "/arg/cc/cflags", NULL, "Force using a CFLAGS for C compilation"},
48 {"LDFLAGS", "/arg/cc/ldflags", NULL, "Force using a LDFLAGS for linking"},
49 {"LDL", "/arg/libs/ldl", NULL, "Force using -ldl string"},
5050
5151 {"gpmi-prefix", "/arg/gpmi/prefix", NULL, NULL},
5252 {NULL, NULL, NULL, NULL}
6868 while(*key == '-') key++;
6969 value = str_chr(key, '=');
7070 found = 0;
71
7172 if (value != NULL) {
7273 *value = '\0';
7374 value++;
74 /* Look in the argument translate table */
75 for(a = main_argument_table; a->arg != NULL; a++) {
76 if (((a->arg[0] == '^') && (strncmp(a->arg+1, key, strlen(a->arg+1)) == 0)) || (strcmp(a->arg, key) == 0)) {
77 found = 1;
78 if (a->callback != NULL) {
79 if (a->callback(key, value) != 0) {
80 error("Processing argument '%s' failed in the callback\n", argv[n]);
81 abort();
75
76 if (strcmp(key, "without") == 0) {
77 char *tmp, *end;
78 if (*value != '/') {
79 const char **r, *roots[] = {"target", "host", "runtime", NULL};
80 for(r = roots; *r != NULL; r++) {
81 tmp = str_concat("/", "/arg/without", *r, value, NULL);
82 put(tmp, strue);
83 free(tmp);
84 }
85 }
86 else {
87 tmp = str_concat("/", "/arg/without", value+1, NULL);
88 put(tmp, strue);
89 free(tmp);
90 }
91 found = 1;
92 }
93 else {
94 /* Look in the argument translate table */
95 for(a = main_argument_table; a->arg != NULL; a++) {
96 if (((a->arg[0] == '^') && (strncmp(a->arg+1, key, strlen(a->arg+1)) == 0)) || (strcmp(a->arg, key) == 0)) {
97 found = 1;
98 if (a->callback != NULL) {
99 if (a->callback(key, value) != 0) {
100 error("Processing argument '%s' failed in the callback\n", argv[n]);
101 abort();
102 }
82103 }
104 if (a->path != NULL)
105 put(a->path, value);
83106 }
84 if (a->path != NULL)
85 put(a->path, value);
86107 }
87108 }
109
88110 /* Look in known deps table or /arg */
89111 if (found == 0) {
90112 if ((is_dep_known(key)) || (strncmp(key, "/arg/", 5) == 0)) {
93115 }
94116 }
95117 }
118
96119 if (found == 0) {
97120 if (custom_arg(key, value) == 0) {
98121 error("Unknown argument '%s'\n", key);
103126 if (tainted)
104127 exit(1);
105128 }
129
130 void help_default_args(FILE *f, const char *prefix)
131 {
132 argtbl_t *a;
133
134 if (prefix == NULL)
135 prefix = "";
136
137 fprintf(f, "%sscconfig generic command line arguments:\n", prefix);
138 for(a = main_argument_table; a->arg != NULL; a++) {
139 char *tmp;
140 if (a->help == NULL)
141 continue;
142 if (*a->arg == '^') {
143 tmp = str_concat("", a->arg+1, "...=...", NULL);
144 fprintf(f, "%s --%-22s %s\n", prefix, tmp, a->help);
145 }
146 else {
147 tmp = str_concat("", a->arg, "=...", NULL);
148 fprintf(f, "%s --%-22s %s\n", prefix, tmp, a->help);
149 }
150 free(tmp);
151 }
152 }
00 #ifndef SCC_ARG_H
11 #define SCC_ARG_H
2
3 #include <stdio.h>
24
35 typedef struct {
46 char *arg;
1214
1315
1416 void process_args(int argc, char *argv[]);
17 void help_default_args(FILE *f, const char *prefix);
1518
1619
1720 /* main.c: */
3333
3434 static ht_t *deps = NULL;
3535
36 static const char *USER_WITHOUT = "";
3637
3738 /* find name_ and decide if it was a wildcard request;
3839 NOTE: there are requests and servers, both can be wildcard independently.
4748 fn_wrap_t *get_wrap(const char *name_, int *wild, int *missing)
4849 {
4950 fn_wrap_t *w;
50 char *name, *sep;
51 int len;
51 char *name, *sep, *tmp;
52 int len, n;
5253
5354 len = strlen(name_);
5455 *wild = name_[len-1] == '*';
7273 }
7374 *missing = 1;
7475
76 /* check for global --without disable */
77 tmp = str_concat("", "/arg/without", db_cwd, "/", name_, NULL);
78 sep = tmp + strlen(tmp) - 1;
79 for(n = 0; n < 4; n++) {
80 const char *d = get(tmp);
81 if (sep < tmp+14)
82 break;
83 if (istrue(d)) {
84 free(tmp);
85 return USER_WITHOUT;
86 }
87 while(*sep != '/')
88 sep--;
89 *sep = '\0';
90 }
91 free(tmp);
92
7593 /* try full match first */
7694 w = ht_get(deps, name_);
7795 if (w != NULL)
117135
118136 if (get(name) == NULL) {
119137 w = get_wrap(name, &wild, &missing);
138 if (w == USER_WITHOUT) {
139 if (fatal) {
140 error("Node %s is required by the software but disabled by the user using --without\n", name);
141 abort();
142 }
143 else {
144 logprintf(logdepth, "(disabled using --without)");
145 return 1;
146 }
147 }
120148 if (!missing)
121149 return 0;
122150 if ((w == NULL) || (w->fn == NULL)) {
11 #include <libmawk.h>
22
33 /*
4 Purpose: load and run a script using the command line syntax of mawk but
5 using a virtual stdin buffer instead of the real stdin.
4 Purpose: load and run a script using the command
5 line syntax of mawk but using a virtual
6 stdin buffer instead of the real stdin.
67 Run: ./app -f test.awk
78 */
89
2021 /* feed in some data on the virtual stdin */
2122 libmawk_append_input(m, "This is a\nmultiline test input\nfor the artificial input buffer.\n");
2223
23 /* run the MAIN part of the script as long as there's data in the buffer of
24 the virtual stdin */
24 /* run the MAIN part of the script as long as
25 there's data in the buffer of the virtual stdin */
2526 libmawk_run_main(m);
2627
2728 /* run END and free the context */
125125 $(MKDIR) $(MAN7DIR)
126126 $(MKDIR) $(INCDIR)
127127 $(MKDIR) $(LIBARCHDIR)
128 $(CP) $(PWD)/lmawk $(BINDIR)
128 $(CP) $(PWD)/lmawk $(BINDIR)/lmawk
129129 $(CHMODX) $(BINDIR)/lmawk
130130 $(CP) $(PWD)/man/lmawk.1 $(MAWKMAN)
131131 $(CP) $(PWD)/man/libmawk_append_input.3libmawk $(MAN3DIR)/libmawk_append_input.3libmawk
148148 for h in $(IHEADERS); do $(CP) $(PWD)/$$h $(INCDIR)/$$h; done
149149 $(CP) $(PWD)/../libmawk.h $(INCDIR)/../libmawk.h
150150
151 uninstall:
152 $(RM) $(BINDIR)/lmawk $(MAWKMAN) $(MAN3DIR)/libmawk_append_input.3libmawk $(MAN3DIR)/libmawk_call_function.3libmawk $(MAN3DIR)/libmawk_cell_destroy.3libmawk $(MAN3DIR)/libmawk_get_var.3libmawk $(MAN3DIR)/libmawk_initialize.3libmawk $(MAN3DIR)/libmawk_initialize_stage.3libmawk $(MAN3DIR)/libmawk_register_function.3libmawk $(MAN3DIR)/libmawk_run_main.3libmawk $(MAN3DIR)/libmawk_set_cell.3libmawk $(MAN3DIR)/libmawk_uninitialize.3libmawk $(MAN7DIR)/example.7libmawk $(LIBARCHDIR)/libmawk.so.$(SOVER1).$(SOVER2).$(SOVER3) $(LIBARCHDIR)/libmawk.so.$(SOVER1).$(SOVER2) $(LIBARCHDIR)/libmawk.so.$(SOVER1) $(LIBARCHDIR)/libmawk.so
153 for h in $(IHEADERS); do $(RM) $(INCDIR)/$$h; done
154 $(RM) $(INCDIR)/../libmawk.h
155
151156 install:
152157 make install_ CP="cp"
153158
155160 make install_ CP="ln -s"
156161
157162
163
158164 rexp/rexp.o: rexp/rexp.c
159165 $(CC) -c $(CFLAGS) -o rexp/rexp.o rexp/rexp.c
160166
171177 $(CC) -c $(CFLAGS) -o rexp/rexp3.o rexp/rexp3.c
172178
173179 $(NUM_OBJ): $(NUM_SRC) num.h
174
175 linstall: install
176180
177181 init_nocomp.o: init_nocomp.c
178182 $(CC) -c $(CFLAGS) -o init_nocomp.o init_nocomp.c
141141 return 1;
142142 }
143143
144 static INST *update_start(mawk_state_t *MAWK, register FCALL_REC *p)
145 {
146 switch (p->call_scope) {
147 case SCOPE_MAIN:
148 p->call_start = MAWK->main_start;
149 break;
150
151 case SCOPE_BEGIN:
152 p->call_start = MAWK->begin_start;
153 break;
154
155 case SCOPE_END:
156 p->call_start = MAWK->end_start;
157 break;
158
159 case SCOPE_FUNCT:
160 p->call_start = p->call->code;
161 break;
162 }
163
164 return p->call_start;
165 }
166
144167 /* function calls whose arg types need checking
145168 are stored on this list */
169
170 /* Corner case: a c function call with an argument referring to a global
171 variable that has not yet been seen. In this case we should create that
172 var, but because we can't look into the C code, we don't know if it's an
173 array or not. So instead we delay resolving the symbol until the whole
174 script is parsed and expect one of 3 cases:
175 - the script references the var elsewhere as non-array -> it's not an array
176 - the script references the var elsewhere as array -> it's an array
177 - no reference elsewhere -> safe to pass NIL without even creating it
178 (but throw an error because this is very likely a bug in the script)
179 */
180 static void ccall_finalize_call(mawk_state_t *MAWK, register FCALL_REC *p)
181 {
182 CA_REC *n;
183 INST *start = update_start(MAWK, p);
184
185 for(n = p->arg_list; n != NULL; n = n->link) {
186 if ((n->type != ST_NONE) || (n->sym_p == NULL)) /* care only about unbound globals */
187 continue;
188
189 switch(n->sym_p->type) {
190 case ST_NONE:
191 mawk_errmsg(MAWK, 0, "uninitialized variable in C call %s()", p->callee->name);
192 break;
193
194 case ST_VAR:
195 start[n->call_offset + 1].ptr = (PTR)n->sym_p->stval.cp;
196 break;
197
198 case ST_ARRAY:
199 start[n->call_offset].op = A_PUSHA;
200 start[n->call_offset + 1].ptr = (PTR)n->sym_p->stval.array;
201 break;
202
203 default:
204 mawk_errmsg(MAWK, 0, "internal error: unknown argument symbol type %d in C call %s()", n->sym_p->type, p->callee->name);
205 break;
206 }
207 }
208 }
146209
147210
148211 /* on first pass thru the resolve list
160223 q->link = p;
161224 while (p) {
162225 if (!p->callee->code) {
163 /* callee never defined */
226 /* callee never defined - could be a C call*/
227 ccall_finalize_call(MAWK, p);
164228 if (!MAWK->suppress_undefined_function_warning)
165229 mawk_compile_error(MAWK, "function %s never defined", p->callee->name);
166230 /* delete p from list */
167231 q->link = p->link;
168 /* don't worry about freeing memory, we'll exit soon */
232 MAWK_ZFREE(MAWK, p);
169233 }
170234 /* note p->arg_list starts with last argument */
171235 else if (!p->arg_list /* nothing to do */ ||
177241 else {
178242 /* keep p and set call_start */
179243 q = p;
180 switch (p->call_scope) {
181 case SCOPE_MAIN:
182 p->call_start = MAWK->main_start;
183 break;
184
185 case SCOPE_BEGIN:
186 p->call_start = MAWK->begin_start;
187 break;
188
189 case SCOPE_END:
190 p->call_start = MAWK->end_start;
191 break;
192
193 case SCOPE_FUNCT:
194 p->call_start = p->call->code;
195 break;
196 }
244 update_start(MAWK, p);
197245 }
198246 p = q->link;
199247 }
286334 }
287335 }
288336
337 void mawk_check_ccall(mawk_state_t *MAWK, FBLOCK *callee, int call_scope, int move_level, FBLOCK *call, CA_REC *arg_list, unsigned line_no)
338 {
339 FCALL_REC *p;
340
341 p = MAWK_ZMALLOC(MAWK, FCALL_REC);
342 p->callee = callee;
343 p->call_scope = call_scope;
344 p->move_level = move_level;
345 p->call = call;
346 p->arg_list = arg_list;
347 p->arg_cnt_checked = 1;
348 p->line_no = line_no;
349 /* add to resolve list */
350 p->link = MAWK->resolve_list;
351 MAWK->resolve_list = p;
352
353 }
354
289355
290356 /* code_pop() has just moved some code. If this code contains
291357 a function call, it might need to be relocated on the
4545 The following example application creates a single context to demonstrate
4646 all the above mentioned functionality.
4747 .nf
48 #include <stdio.h>
49 #include <libmawk.h>
50
51 /*
52 Purpose: load and run a script using the command
53 line syntax of mawk but using a virtual
54 stdin buffer instead of the real stdin.
55 Run: ./app -f test.awk
56 */
57
58 int main(int argc, char **argv)
59 {
60 mawk_state_t *m;
61
62 /* init a context, execute BEGIN */
63 m = libmawk_initialize(argc, argv);
64 if (m == NULL) {
65 fprintf(stderr, "libmawk_initialize failed, exiting\\n");
66 return 1;
67 }
68
69 /* feed in some data on the virtual stdin */
70 libmawk_append_input(m, "This is a\\nmultiline test input\\nfor the artificial input buffer.\\n");
71
72 /* run the MAIN part of the script as long as
73 there's data in the buffer of the virtual stdin */
74 libmawk_run_main(m);
75
76 /* run END and free the context */
77 libmawk_uninitialize(m);
78
79 return 0;
80 }
81
4882 .fi
1212 libmawk_uninitialize.3libmawk
1313 lmawk.1"
1414
15 cat input/example1 ../../testapp/main.c input/example2 > example.7libmawk
15 (
16 cat input/example1
17 sed "s/\\\\/\\\\\\\\/g;s/\t/ /g" < ../../example_apps/10_run/app.c
18 cat input/example2
19 ) > example.7libmawk
1620
1721 for n in $PAGES
1822 do
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_APPEND_INPUT 3 2009-08-10 "libmawk" "libmawk manual"
14 .TH LIBMAWK_APPEND_INPUT 3libmawk 2009-08-10 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_append_input \- append a string to an input buffer
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_CALL_FUNCTION 3 2009-08-10 "libmawk" "libmawk manual"
14 .TH LIBMAWK_CALL_FUNCTION 3libmawk 2009-08-10 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_call_function \- call an user defined (script) function
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_CELL_DESTROY 3 2009-08-12 "libmawk" "libmawk manual"
14 .TH LIBMAWK_CELL_DESTROY 3libmawk 2009-08-12 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_cell_destroy \- free all memory associated with a cell
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_GET_VAR 3 2009-08-12 "libmawk" "libmawk manual"
14 .TH LIBMAWK_GET_VAR 3libmawk 2009-08-12 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_get_var \- returns a pointer to a mawk variable
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_INITIALIZE 3 2009-08-10 "libmawk" "libmawk manual"
14 .TH LIBMAWK_INITIALIZE 3libmawk 2009-08-10 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_initialize \- create a new libmawk context
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_INITIALIZE_STAGE 3 2009-08-10 "libmawk" "libmawk manual"
14 .TH LIBMAWK_INITIALIZE_STAGE 3libmawk 2009-08-10 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_initialize_stage* \- create a new libmawk context in 3 stages
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_REGISTER_FUNCTION 3 2009-08-12 "libmawk" "libmawk manual"
14 .TH LIBMAWK_REGISTER_FUNCTION 3libmawk 2009-08-12 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_register_function \- registers a C function with a callback
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_RUN_MAIN 3 2009-08-10 "libmawk" "libmawk manual"
14 .TH LIBMAWK_RUN_MAIN 3libmawk 2009-08-10 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_run_main \- run main parts of a script
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_SET_CELL 3 2009-08-10 "libmawk" "libmawk manual"
14 .TH LIBMAWK_SET_CELL 3libmawk 2009-08-10 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_set_cell \- set the value of a mawk cell.
1717 .SH SYNOPSIS
1111 .\" Formatted or processed versions of this manual, if unaccompanied by
1212 .\" the source, must acknowledge the copyright and authors of this work.
1313 .\"
14 .TH LIBMAWK_UNINITIALIZE 3 2009-08-10 "libmawk" "libmawk manual"
14 .TH LIBMAWK_UNINITIALIZE 3libmawk 2009-08-10 "libmawk" "libmawk manual"
1515 .SH NAME
1616 libmawk_uninitialize \- destroy a libmawk context
1717 .SH SYNOPSIS
0 /* A Bison parser, made by GNU Bison 3.0.2. */
0 /* A Bison parser, made by GNU Bison 3.3.2. */
11
22 /* Bison implementation for Yacc-like parsers in C
33
4 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
4 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
5 Inc.
56
67 This program is free software: you can redistribute it and/or modify
78 it under the terms of the GNU General Public License as published by
3940 define necessary library symbols; they are noted "INFRINGES ON
4041 USER NAME SPACE" below. */
4142
43 /* Undocumented macros, especially those whose name start with YY_,
44 are private implementation details. Do not rely on them. */
45
4246 /* Identify Bison output. */
4347 #define YYBISON 1
4448
4549 /* Bison version. */
46 #define YYBISON_VERSION "3.0.2"
50 #define YYBISON_VERSION "3.3.2"
4751
4852 /* Skeleton name. */
4953 #define YYSKELETON_NAME "yacc.c"
6670 #define yynerrs Mawk_nerrs
6771
6872
69 /* Copy the first part of user declarations. */
70 #line 86 "parse.y" /* yacc.c:339 */
73 /* First part of user prologue. */
74 #line 86 "parse.y" /* yacc.c:337 */
7175
7276 #include <stdio.h>
7377 #include "mawk.h"
117121 #define CODE_FE_PUSHA() mawk_code_ptr->ptr = (PTR) 0 ; code1(FE_PUSHA)
118122
119123
120 #line 122 "y.tab.c" /* yacc.c:339 */
121
124 #line 126 "y.tab.c" /* yacc.c:337 */
122125 # ifndef YY_NULLPTR
123 # if defined __cplusplus && 201103L <= __cplusplus
124 # define YY_NULLPTR nullptr
126 # if defined __cplusplus
127 # if 201103L <= __cplusplus
128 # define YY_NULLPTR nullptr
129 # else
130 # define YY_NULLPTR 0
131 # endif
125132 # else
126 # define YY_NULLPTR 0
133 # define YY_NULLPTR ((void*)0)
127134 # endif
128135 # endif
129136
310317
311318 /* Value type. */
312319 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
313 typedef union YYSTYPE YYSTYPE;
320
314321 union YYSTYPE
315322 {
316 #line 136 "parse.y" /* yacc.c:355 */
323 #line 136 "parse.y" /* yacc.c:352 */
317324
318325 mawk_cell_t *cp ;
319326 SYMTAB *stp ;
326333 int ival ;
327334 PTR ptr ;
328335
329 #line 331 "y.tab.c" /* yacc.c:355 */
336 #line 338 "y.tab.c" /* yacc.c:352 */
330337 };
338
339 typedef union YYSTYPE YYSTYPE;
331340 # define YYSTYPE_IS_TRIVIAL 1
332341 # define YYSTYPE_IS_DECLARED 1
333342 #endif
338347
339348 #endif /* !YY_MAWK_Y_TAB_H_INCLUDED */
340349
341 /* Copy the second part of user declarations. */
342
343 #line 345 "y.tab.c" /* yacc.c:358 */
350
344351
345352 #ifdef short
346353 # undef short
361368 #ifdef YYTYPE_UINT16
362369 typedef YYTYPE_UINT16 yytype_uint16;
363370 #else
364 typedef unsigned short int yytype_uint16;
371 typedef unsigned short yytype_uint16;
365372 #endif
366373
367374 #ifdef YYTYPE_INT16
368375 typedef YYTYPE_INT16 yytype_int16;
369376 #else
370 typedef short int yytype_int16;
377 typedef short yytype_int16;
371378 #endif
372379
373380 #ifndef YYSIZE_T
379386 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
380387 # define YYSIZE_T size_t
381388 # else
382 # define YYSIZE_T unsigned int
389 # define YYSIZE_T unsigned
383390 # endif
384391 #endif
385392
415422 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
416423 #endif
417424
418 #if !defined _Noreturn \
419 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
420 # if defined _MSC_VER && 1200 <= _MSC_VER
421 # define _Noreturn __declspec (noreturn)
422 # else
423 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
424 # endif
425 #endif
426
427425 /* Suppress unused-variable warnings by "using" E. */
428426 #if ! defined lint || defined __GNUC__
429427 # define YYUSE(E) ((void) (E))
431429 # define YYUSE(E) /* empty */
432430 #endif
433431
434 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
432 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
435433 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
436434 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
437435 _Pragma ("GCC diagnostic push") \
593591 /* YYNSTATES -- Number of states. */
594592 #define YYNSTATES 360
595593
596 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
597 by yylex, with out-of-bounds checking. */
598594 #define YYUNDEFTOK 2
599595 #define YYMAXUTOK 333
600596
597 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
598 as returned by yylex, with out-of-bounds checking. */
601599 #define YYTRANSLATE(YYX) \
602 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
600 ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
603601
604602 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
605 as returned by yylex, without out-of-bounds checking. */
603 as returned by yylex. */
606604 static const yytype_uint8 yytranslate[] =
607605 {
608606 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
662660 861, 862, 868, 872, 879, 881, 905, 912, 935, 938,
663661 941, 944, 949, 956, 962, 967, 972, 979, 983, 983,
664662 983, 985, 989, 997, 1016, 1017, 1021, 1026, 1034, 1042,
665 1061, 1084, 1091, 1092, 1095, 1101, 1114, 1126, 1138, 1147,
666 1149, 1164, 1166, 1173, 1182, 1188, 1196
663 1061, 1084, 1091, 1092, 1095, 1101, 1114, 1126, 1137, 1148,
664 1150, 1165, 1167, 1174, 1183, 1189, 1197
667665 };
668666 #endif
669667
11731171
11741172 #define YYRECOVERING() (!!yyerrstatus)
11751173
1176 #define YYBACKUP(Token, Value) \
1177 do \
1178 if (yychar == YYEMPTY) \
1179 { \
1180 yychar = (Token); \
1181 yylval = (Value); \
1182 YYPOPSTACK (yylen); \
1183 yystate = *yyssp; \
1184 goto yybackup; \
1185 } \
1186 else \
1187 { \
1188 yyerror (MAWK, YY_("syntax error: cannot back up")); \
1189 YYERROR; \
1190 } \
1191 while (0)
1174 #define YYBACKUP(Token, Value) \
1175 do \
1176 if (yychar == YYEMPTY) \
1177 { \
1178 yychar = (Token); \
1179 yylval = (Value); \
1180 YYPOPSTACK (yylen); \
1181 yystate = *yyssp; \
1182 goto yybackup; \
1183 } \
1184 else \
1185 { \
1186 yyerror (MAWK, YY_("syntax error: cannot back up")); \
1187 YYERROR; \
1188 } \
1189 while (0)
11921190
11931191 /* Error token number */
11941192 #define YYTERROR 1
12281226 } while (0)
12291227
12301228
1231 /*----------------------------------------.
1232 | Print this symbol's value on YYOUTPUT. |
1233 `----------------------------------------*/
1229 /*-----------------------------------.
1230 | Print this symbol's value on YYO. |
1231 `-----------------------------------*/
12341232
12351233 static void
1236 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, mawk_state_t *MAWK)
1234 yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, mawk_state_t *MAWK)
12371235 {
1238 FILE *yyo = yyoutput;
1239 YYUSE (yyo);
1236 FILE *yyoutput = yyo;
1237 YYUSE (yyoutput);
12401238 YYUSE (MAWK);
12411239 if (!yyvaluep)
12421240 return;
12431241 # ifdef YYPRINT
12441242 if (yytype < YYNTOKENS)
1245 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1243 YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
12461244 # endif
12471245 YYUSE (yytype);
12481246 }
12491247
12501248
1251 /*--------------------------------.
1252 | Print this symbol on YYOUTPUT. |
1253 `--------------------------------*/
1249 /*---------------------------.
1250 | Print this symbol on YYO. |
1251 `---------------------------*/
12541252
12551253 static void
1256 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, mawk_state_t *MAWK)
1254 yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, mawk_state_t *MAWK)
12571255 {
1258 YYFPRINTF (yyoutput, "%s %s (",
1256 YYFPRINTF (yyo, "%s %s (",
12591257 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
12601258
1261 yy_symbol_value_print (yyoutput, yytype, yyvaluep, MAWK);
1262 YYFPRINTF (yyoutput, ")");
1259 yy_symbol_value_print (yyo, yytype, yyvaluep, MAWK);
1260 YYFPRINTF (yyo, ")");
12631261 }
12641262
12651263 /*------------------------------------------------------------------.
12931291 static void
12941292 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, mawk_state_t *MAWK)
12951293 {
1296 unsigned long int yylno = yyrline[yyrule];
1294 unsigned long yylno = yyrline[yyrule];
12971295 int yynrhs = yyr2[yyrule];
12981296 int yyi;
12991297 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
13041302 YYFPRINTF (stderr, " $%d = ", yyi + 1);
13051303 yy_symbol_print (stderr,
13061304 yystos[yyssp[yyi + 1 - yynrhs]],
1307 &(yyvsp[(yyi + 1) - (yynrhs)])
1305 &yyvsp[(yyi + 1) - (yynrhs)]
13081306 , MAWK);
13091307 YYFPRINTF (stderr, "\n");
13101308 }
14081406 case '\\':
14091407 if (*++yyp != '\\')
14101408 goto do_not_strip_quotes;
1411 /* Fall through. */
1409 else
1410 goto append;
1411
1412 append:
14121413 default:
14131414 if (yyres)
14141415 yyres[yyn] = *yyp;
14261427 if (! yyres)
14271428 return yystrlen (yystr);
14281429
1429 return yystpcpy (yyres, yystr) - yyres;
1430 return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
14301431 }
14311432 # endif
14321433
15041505 yyarg[yycount++] = yytname[yyx];
15051506 {
15061507 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1507 if (! (yysize <= yysize1
1508 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1508 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
1509 yysize = yysize1;
1510 else
15091511 return 2;
1510 yysize = yysize1;
15111512 }
15121513 }
15131514 }
15191520 case N: \
15201521 yyformat = S; \
15211522 break
1523 default: /* Avoid compiler warnings. */
15221524 YYCASE_(0, YY_("syntax error"));
15231525 YYCASE_(1, YY_("syntax error, unexpected %s"));
15241526 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
15301532
15311533 {
15321534 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1533 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1535 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
1536 yysize = yysize1;
1537 else
15341538 return 2;
1535 yysize = yysize1;
15361539 }
15371540
15381541 if (*yymsg_alloc < yysize)
16631666 yychar = YYEMPTY; /* Cause a token to be read. */
16641667 goto yysetstate;
16651668
1669
16661670 /*------------------------------------------------------------.
1667 | yynewstate -- Push a new state, which is found in yystate. |
1671 | yynewstate -- push a new state, which is found in yystate. |
16681672 `------------------------------------------------------------*/
1669 yynewstate:
1673 yynewstate:
16701674 /* In all cases, when you get here, the value and location stacks
16711675 have just been pushed. So pushing a state here evens the stacks. */
16721676 yyssp++;
16731677
1674 yysetstate:
1675 *yyssp = yystate;
1678
1679 /*--------------------------------------------------------------------.
1680 | yynewstate -- set current state (the top of the stack) to yystate. |
1681 `--------------------------------------------------------------------*/
1682 yysetstate:
1683 *yyssp = (yytype_int16) yystate;
16761684
16771685 if (yyss + yystacksize - 1 <= yyssp)
1686 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1687 goto yyexhaustedlab;
1688 #else
16781689 {
16791690 /* Get the current used size of the three stacks, in elements. */
1680 YYSIZE_T yysize = yyssp - yyss + 1;
1681
1682 #ifdef yyoverflow
1691 YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
1692
1693 # if defined yyoverflow
16831694 {
16841695 /* Give user a chance to reallocate the stack. Use copies of
16851696 these so that the &'s don't force the real ones into
16951706 &yyss1, yysize * sizeof (*yyssp),
16961707 &yyvs1, yysize * sizeof (*yyvsp),
16971708 &yystacksize);
1698
16991709 yyss = yyss1;
17001710 yyvs = yyvs1;
17011711 }
1702 #else /* no yyoverflow */
1703 # ifndef YYSTACK_RELOCATE
1704 goto yyexhaustedlab;
1705 # else
1712 # else /* defined YYSTACK_RELOCATE */
17061713 /* Extend the stack our own way. */
17071714 if (YYMAXDEPTH <= yystacksize)
17081715 goto yyexhaustedlab;
17181725 goto yyexhaustedlab;
17191726 YYSTACK_RELOCATE (yyss_alloc, yyss);
17201727 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1721 # undef YYSTACK_RELOCATE
1728 # undef YYSTACK_RELOCATE
17221729 if (yyss1 != yyssa)
17231730 YYSTACK_FREE (yyss1);
17241731 }
17251732 # endif
1726 #endif /* no yyoverflow */
17271733
17281734 yyssp = yyss + yysize - 1;
17291735 yyvsp = yyvs + yysize - 1;
17301736
17311737 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1732 (unsigned long int) yystacksize));
1738 (unsigned long) yystacksize));
17331739
17341740 if (yyss + yystacksize - 1 <= yyssp)
17351741 YYABORT;
17361742 }
1743 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
17371744
17381745 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
17391746
17411748 YYACCEPT;
17421749
17431750 goto yybackup;
1751
17441752
17451753 /*-----------.
17461754 | yybackup. |
17471755 `-----------*/
17481756 yybackup:
1749
17501757 /* Do appropriate processing given the current state. Read a
17511758 lookahead token if we need one and don't already have one. */
17521759
18191826
18201827
18211828 /*-----------------------------.
1822 | yyreduce -- Do a reduction. |
1829 | yyreduce -- do a reduction. |
18231830 `-----------------------------*/
18241831 yyreduce:
18251832 /* yyn is the number of a rule to reduce with. */
18401847 switch (yyn)
18411848 {
18421849 case 7:
1843 #line 223 "parse.y" /* yacc.c:1646 */
1850 #line 223 "parse.y" /* yacc.c:1652 */
18441851 { /* this do nothing action removes a vacuous warning
18451852 from Bison */
18461853 }
1847 #line 1849 "y.tab.c" /* yacc.c:1646 */
1854 #line 1856 "y.tab.c" /* yacc.c:1652 */
18481855 break;
18491856
18501857 case 10:
1851 #line 232 "parse.y" /* yacc.c:1646 */
1858 #line 232 "parse.y" /* yacc.c:1652 */
18521859 { mawk_be_setup(MAWK, MAWK->scope = SCOPE_BEGIN) ; }
1853 #line 1855 "y.tab.c" /* yacc.c:1646 */
1860 #line 1862 "y.tab.c" /* yacc.c:1652 */
18541861 break;
18551862
18561863 case 11:
1857 #line 235 "parse.y" /* yacc.c:1646 */
1864 #line 235 "parse.y" /* yacc.c:1652 */
18581865 { switch_code_to_main(MAWK) ; }
1859 #line 1861 "y.tab.c" /* yacc.c:1646 */
1866 #line 1868 "y.tab.c" /* yacc.c:1652 */
18601867 break;
18611868
18621869 case 12:
1863 #line 238 "parse.y" /* yacc.c:1646 */
1870 #line 238 "parse.y" /* yacc.c:1652 */
18641871 { mawk_be_setup(MAWK, MAWK->scope = SCOPE_END) ; }
1865 #line 1867 "y.tab.c" /* yacc.c:1646 */
1872 #line 1874 "y.tab.c" /* yacc.c:1652 */
18661873 break;
18671874
18681875 case 13:
1869 #line 241 "parse.y" /* yacc.c:1646 */
1876 #line 241 "parse.y" /* yacc.c:1652 */
18701877 { switch_code_to_main(MAWK) ; }
1871 #line 1873 "y.tab.c" /* yacc.c:1646 */
1878 #line 1880 "y.tab.c" /* yacc.c:1652 */
18721879 break;
18731880
18741881 case 14:
1875 #line 244 "parse.y" /* yacc.c:1646 */
1882 #line 244 "parse.y" /* yacc.c:1652 */
18761883 { mawk_code_jmp(MAWK, _JZ, (INST*)0) ; }
1877 #line 1879 "y.tab.c" /* yacc.c:1646 */
1884 #line 1886 "y.tab.c" /* yacc.c:1652 */
18781885 break;
18791886
18801887 case 15:
1881 #line 247 "parse.y" /* yacc.c:1646 */
1888 #line 247 "parse.y" /* yacc.c:1652 */
18821889 { mawk_patch_jmp(MAWK, mawk_code_ptr ) ; }
1883 #line 1885 "y.tab.c" /* yacc.c:1646 */
1890 #line 1892 "y.tab.c" /* yacc.c:1652 */
18841891 break;
18851892
18861893 case 16:
1887 #line 251 "parse.y" /* yacc.c:1646 */
1894 #line 251 "parse.y" /* yacc.c:1652 */
18881895 {
18891896 INST *p1 = CDP((yyvsp[-1].start)) ;
18901897 int len ;
19001907 p1 = CDP((yyvsp[-1].start)) ;
19011908 p1[2].op = mawk_code_ptr - (p1+1) ;
19021909 }
1903 #line 1905 "y.tab.c" /* yacc.c:1646 */
1910 #line 1912 "y.tab.c" /* yacc.c:1652 */
19041911 break;
19051912
19061913 case 17:
1907 #line 267 "parse.y" /* yacc.c:1646 */
1914 #line 267 "parse.y" /* yacc.c:1652 */
19081915 { code1(_RANGE_STOP) ; }
1909 #line 1911 "y.tab.c" /* yacc.c:1646 */
1916 #line 1918 "y.tab.c" /* yacc.c:1652 */
19101917 break;
19111918
19121919 case 18:
1913 #line 270 "parse.y" /* yacc.c:1646 */
1920 #line 270 "parse.y" /* yacc.c:1652 */
19141921 {
19151922 INST *p1 = CDP((yyvsp[-5].start)) ;
19161923
19171924 p1[3].op = CDP((yyvsp[0].start)) - (p1+1) ;
19181925 p1[4].op = mawk_code_ptr - (p1+1) ;
19191926 }
1920 #line 1922 "y.tab.c" /* yacc.c:1646 */
1927 #line 1929 "y.tab.c" /* yacc.c:1652 */
19211928 break;
19221929
19231930 case 19:
1924 #line 281 "parse.y" /* yacc.c:1646 */
1931 #line 281 "parse.y" /* yacc.c:1652 */
19251932 { (yyval.start) = (yyvsp[-1].start) ; }
1926 #line 1928 "y.tab.c" /* yacc.c:1646 */
1933 #line 1935 "y.tab.c" /* yacc.c:1652 */
19271934 break;
19281935
19291936 case 20:
1930 #line 283 "parse.y" /* yacc.c:1646 */
1937 #line 283 "parse.y" /* yacc.c:1652 */
19311938 { (yyval.start) = mawk_code_offset ; /* does nothing won't be mawk_executed */
19321939 MAWK->print_flag = MAWK->getline_flag = MAWK->paren_cnt = 0 ;
19331940 yyerrok ; }
1934 #line 1936 "y.tab.c" /* yacc.c:1646 */
1941 #line 1943 "y.tab.c" /* yacc.c:1652 */
19351942 break;
19361943
19371944 case 22:
1938 #line 290 "parse.y" /* yacc.c:1646 */
1945 #line 290 "parse.y" /* yacc.c:1652 */
19391946 { (yyval.start) = mawk_code_offset ;
19401947 code1(_PUSHINT) ; code1(0) ;
19411948 code2(MAWK, _PRINT, mawk_f2d(mawk_bi_print)) ;
19421949 }
1943 #line 1945 "y.tab.c" /* yacc.c:1646 */
1950 #line 1952 "y.tab.c" /* yacc.c:1652 */
19441951 break;
19451952
19461953 case 26:
1947 #line 302 "parse.y" /* yacc.c:1646 */
1954 #line 302 "parse.y" /* yacc.c:1652 */
19481955 { code1(_POP) ; }
1949 #line 1951 "y.tab.c" /* yacc.c:1646 */
1956 #line 1958 "y.tab.c" /* yacc.c:1652 */
19501957 break;
19511958
19521959 case 27:
1953 #line 304 "parse.y" /* yacc.c:1646 */
1960 #line 304 "parse.y" /* yacc.c:1652 */
19541961 { (yyval.start) = mawk_code_offset ; }
1955 #line 1957 "y.tab.c" /* yacc.c:1646 */
1962 #line 1964 "y.tab.c" /* yacc.c:1652 */
19561963 break;
19571964
19581965 case 28:
1959 #line 306 "parse.y" /* yacc.c:1646 */
1966 #line 306 "parse.y" /* yacc.c:1652 */
19601967 { (yyval.start) = mawk_code_offset ;
19611968 MAWK->print_flag = MAWK->getline_flag = 0 ;
19621969 MAWK->paren_cnt = 0 ;
19631970 yyerrok ;
19641971 }
1965 #line 1967 "y.tab.c" /* yacc.c:1646 */
1972 #line 1974 "y.tab.c" /* yacc.c:1652 */
19661973 break;
19671974
19681975 case 29:
1969 #line 312 "parse.y" /* yacc.c:1646 */
1976 #line 312 "parse.y" /* yacc.c:1652 */
19701977 { (yyval.start) = mawk_code_offset ; mawk_BC_insert(MAWK, 'B', mawk_code_ptr+1) ;
19711978 code2(MAWK, _JMP, 0) /* don't use mawk_code_jmp ! */ ; }
1972 #line 1974 "y.tab.c" /* yacc.c:1646 */
1979 #line 1981 "y.tab.c" /* yacc.c:1652 */
19731980 break;
19741981
19751982 case 30:
1976 #line 315 "parse.y" /* yacc.c:1646 */
1983 #line 315 "parse.y" /* yacc.c:1652 */
19771984 { (yyval.start) = mawk_code_offset ; mawk_BC_insert(MAWK, 'C', mawk_code_ptr+1) ;
19781985 code2(MAWK, _JMP, 0) ; }
1979 #line 1981 "y.tab.c" /* yacc.c:1646 */
1986 #line 1988 "y.tab.c" /* yacc.c:1652 */
19801987 break;
19811988
19821989 case 31:
1983 #line 318 "parse.y" /* yacc.c:1646 */
1990 #line 318 "parse.y" /* yacc.c:1652 */
19841991 { if ( MAWK->scope != SCOPE_FUNCT )
19851992 mawk_compile_error(MAWK, "return outside function body") ;
19861993 }
1987 #line 1989 "y.tab.c" /* yacc.c:1646 */
1994 #line 1996 "y.tab.c" /* yacc.c:1652 */
19881995 break;
19891996
19901997 case 32:
1991 #line 322 "parse.y" /* yacc.c:1646 */
1998 #line 322 "parse.y" /* yacc.c:1652 */
19921999 { if ( MAWK->scope != SCOPE_MAIN )
19932000 mawk_compile_error(MAWK, "improper use of next" ) ;
19942001 (yyval.start) = mawk_code_offset ;
19952002 code1(_NEXT) ;
19962003 }
1997 #line 1999 "y.tab.c" /* yacc.c:1646 */
2004 #line 2006 "y.tab.c" /* yacc.c:1652 */
19982005 break;
19992006
20002007 case 36:
2001 #line 333 "parse.y" /* yacc.c:1646 */
2008 #line 333 "parse.y" /* yacc.c:1652 */
20022009 { code1(_ASSIGN) ; }
2003 #line 2005 "y.tab.c" /* yacc.c:1646 */
2010 #line 2012 "y.tab.c" /* yacc.c:1652 */
20042011 break;
20052012
20062013 case 37:
2007 #line 334 "parse.y" /* yacc.c:1646 */
2014 #line 334 "parse.y" /* yacc.c:1652 */
20082015 { code1(_ADD_ASG) ; }
2009 #line 2011 "y.tab.c" /* yacc.c:1646 */
2016 #line 2018 "y.tab.c" /* yacc.c:1652 */
20102017 break;
20112018
20122019 case 38:
2013 #line 335 "parse.y" /* yacc.c:1646 */
2020 #line 335 "parse.y" /* yacc.c:1652 */
20142021 { code1(_SUB_ASG) ; }
2015 #line 2017 "y.tab.c" /* yacc.c:1646 */
2022 #line 2024 "y.tab.c" /* yacc.c:1652 */
20162023 break;
20172024
20182025 case 39:
2019 #line 336 "parse.y" /* yacc.c:1646 */
2026 #line 336 "parse.y" /* yacc.c:1652 */
20202027 { code1(_MUL_ASG) ; }
2021 #line 2023 "y.tab.c" /* yacc.c:1646 */
2028 #line 2030 "y.tab.c" /* yacc.c:1652 */
20222029 break;
20232030
20242031 case 40:
2025 #line 337 "parse.y" /* yacc.c:1646 */
2032 #line 337 "parse.y" /* yacc.c:1652 */
20262033 { code1(_DIV_ASG) ; }
2027 #line 2029 "y.tab.c" /* yacc.c:1646 */
2034 #line 2036 "y.tab.c" /* yacc.c:1652 */
20282035 break;
20292036
20302037 case 41:
2031 #line 338 "parse.y" /* yacc.c:1646 */
2038 #line 338 "parse.y" /* yacc.c:1652 */
20322039 { code1(_MOD_ASG) ; }
2033 #line 2035 "y.tab.c" /* yacc.c:1646 */
2040 #line 2042 "y.tab.c" /* yacc.c:1652 */
20342041 break;
20352042
20362043 case 42:
2037 #line 339 "parse.y" /* yacc.c:1646 */
2044 #line 339 "parse.y" /* yacc.c:1652 */
20382045 { code1(_POW_ASG) ; }
2039 #line 2041 "y.tab.c" /* yacc.c:1646 */
2046 #line 2048 "y.tab.c" /* yacc.c:1652 */
20402047 break;
20412048
20422049 case 43:
2043 #line 340 "parse.y" /* yacc.c:1646 */
2050 #line 340 "parse.y" /* yacc.c:1652 */
20442051 { code1(_ASSIGN_ARR) ; }
2045 #line 2047 "y.tab.c" /* yacc.c:1646 */
2052 #line 2054 "y.tab.c" /* yacc.c:1652 */
20462053 break;
20472054
20482055 case 44:
2049 #line 341 "parse.y" /* yacc.c:1646 */
2056 #line 341 "parse.y" /* yacc.c:1652 */
20502057 { code1(_ADD_ASG_ARR) ; }
2051 #line 2053 "y.tab.c" /* yacc.c:1646 */
2058 #line 2060 "y.tab.c" /* yacc.c:1652 */
20522059 break;
20532060
20542061 case 45:
2055 #line 342 "parse.y" /* yacc.c:1646 */
2062 #line 342 "parse.y" /* yacc.c:1652 */
20562063 { code1(_SUB_ASG_ARR) ; }
2057 #line 2059 "y.tab.c" /* yacc.c:1646 */
2064 #line 2066 "y.tab.c" /* yacc.c:1652 */
20582065 break;
20592066
20602067 case 46:
2061 #line 343 "parse.y" /* yacc.c:1646 */
2068 #line 343 "parse.y" /* yacc.c:1652 */
20622069 { code1(_MUL_ASG_ARR) ; }
2063 #line 2065 "y.tab.c" /* yacc.c:1646 */
2070 #line 2072 "y.tab.c" /* yacc.c:1652 */
20642071 break;
20652072
20662073 case 47:
2067 #line 344 "parse.y" /* yacc.c:1646 */
2074 #line 344 "parse.y" /* yacc.c:1652 */
20682075 { code1(_DIV_ASG_ARR) ; }
2069 #line 2071 "y.tab.c" /* yacc.c:1646 */
2076 #line 2078 "y.tab.c" /* yacc.c:1652 */
20702077 break;
20712078
20722079 case 48:
2073 #line 345 "parse.y" /* yacc.c:1646 */
2080 #line 345 "parse.y" /* yacc.c:1652 */
20742081 { code1(_MOD_ASG_ARR) ; }
2075 #line 2077 "y.tab.c" /* yacc.c:1646 */
2082 #line 2084 "y.tab.c" /* yacc.c:1652 */
20762083 break;
20772084
20782085 case 49:
2079 #line 346 "parse.y" /* yacc.c:1646 */
2086 #line 346 "parse.y" /* yacc.c:1652 */
20802087 { code1(_POW_ASG_ARR) ; }
2081 #line 2083 "y.tab.c" /* yacc.c:1646 */
2088 #line 2090 "y.tab.c" /* yacc.c:1652 */
20822089 break;
20832090
20842091 case 50:
2085 #line 347 "parse.y" /* yacc.c:1646 */
2092 #line 347 "parse.y" /* yacc.c:1652 */
20862093 { code1(_EQ) ; }
2087 #line 2089 "y.tab.c" /* yacc.c:1646 */
2094 #line 2096 "y.tab.c" /* yacc.c:1652 */
20882095 break;
20892096
20902097 case 51:
2091 #line 348 "parse.y" /* yacc.c:1646 */
2098 #line 348 "parse.y" /* yacc.c:1652 */
20922099 { code1(_NEQ) ; }
2093 #line 2095 "y.tab.c" /* yacc.c:1646 */
2100 #line 2102 "y.tab.c" /* yacc.c:1652 */
20942101 break;
20952102
20962103 case 52:
2097 #line 349 "parse.y" /* yacc.c:1646 */
2104 #line 349 "parse.y" /* yacc.c:1652 */
20982105 { code1(_LT) ; }
2099 #line 2101 "y.tab.c" /* yacc.c:1646 */
2106 #line 2108 "y.tab.c" /* yacc.c:1652 */
21002107 break;
21012108
21022109 case 53:
2103 #line 350 "parse.y" /* yacc.c:1646 */
2110 #line 350 "parse.y" /* yacc.c:1652 */
21042111 { code1(_LTE) ; }
2105 #line 2107 "y.tab.c" /* yacc.c:1646 */
2112 #line 2114 "y.tab.c" /* yacc.c:1652 */
21062113 break;
21072114
21082115 case 54:
2109 #line 351 "parse.y" /* yacc.c:1646 */
2116 #line 351 "parse.y" /* yacc.c:1652 */
21102117 { code1(_GT) ; }
2111 #line 2113 "y.tab.c" /* yacc.c:1646 */
2118 #line 2120 "y.tab.c" /* yacc.c:1652 */
21122119 break;
21132120
21142121 case 55:
2115 #line 352 "parse.y" /* yacc.c:1646 */
2122 #line 352 "parse.y" /* yacc.c:1652 */
21162123 { code1(_GTE) ; }
2117 #line 2119 "y.tab.c" /* yacc.c:1646 */
2124 #line 2126 "y.tab.c" /* yacc.c:1652 */
21182125 break;
21192126
21202127 case 56:
2121 #line 355 "parse.y" /* yacc.c:1646 */
2128 #line 355 "parse.y" /* yacc.c:1652 */
21222129 {
21232130 INST *p3 = CDP((yyvsp[0].start)) ;
21242131
21442151
21452152 if ( !(yyvsp[-1].ival) ) code1(_NOT) ;
21462153 }
2147 #line 2149 "y.tab.c" /* yacc.c:1646 */
2154 #line 2156 "y.tab.c" /* yacc.c:1652 */
21482155 break;
21492156
21502157 case 57:
2151 #line 383 "parse.y" /* yacc.c:1646 */
2158 #line 383 "parse.y" /* yacc.c:1652 */
21522159 { code1(_TEST) ;
21532160 mawk_code_jmp(MAWK, _LJNZ, (INST*)0) ;
21542161 }
2155 #line 2157 "y.tab.c" /* yacc.c:1646 */
2162 #line 2164 "y.tab.c" /* yacc.c:1652 */
21562163 break;
21572164
21582165 case 58:
2159 #line 387 "parse.y" /* yacc.c:1646 */
2166 #line 387 "parse.y" /* yacc.c:1652 */
21602167 { code1(_TEST) ; mawk_patch_jmp(MAWK, mawk_code_ptr) ; }
2161 #line 2163 "y.tab.c" /* yacc.c:1646 */
2168 #line 2170 "y.tab.c" /* yacc.c:1652 */
21622169 break;
21632170
21642171 case 59:
2165 #line 390 "parse.y" /* yacc.c:1646 */
2172 #line 390 "parse.y" /* yacc.c:1652 */
21662173 { code1(_TEST) ;
21672174 mawk_code_jmp(MAWK, _LJZ, (INST*)0) ;
21682175 }
2169 #line 2171 "y.tab.c" /* yacc.c:1646 */
2176 #line 2178 "y.tab.c" /* yacc.c:1652 */
21702177 break;
21712178
21722179 case 60:
2173 #line 394 "parse.y" /* yacc.c:1646 */
2180 #line 394 "parse.y" /* yacc.c:1652 */
21742181 { code1(_TEST) ; mawk_patch_jmp(MAWK, mawk_code_ptr) ; }
2175 #line 2177 "y.tab.c" /* yacc.c:1646 */
2182 #line 2184 "y.tab.c" /* yacc.c:1652 */
21762183 break;
21772184
21782185 case 61:
2179 #line 396 "parse.y" /* yacc.c:1646 */
2186 #line 396 "parse.y" /* yacc.c:1652 */
21802187 { mawk_code_jmp(MAWK, _JZ, (INST*)0) ; }
2181 #line 2183 "y.tab.c" /* yacc.c:1646 */
2188 #line 2190 "y.tab.c" /* yacc.c:1652 */
21822189 break;
21832190
21842191 case 62:
2185 #line 397 "parse.y" /* yacc.c:1646 */
2192 #line 397 "parse.y" /* yacc.c:1652 */
21862193 { mawk_code_jmp(MAWK, _JMP, (INST*)0) ; }
2187 #line 2189 "y.tab.c" /* yacc.c:1646 */
2194 #line 2196 "y.tab.c" /* yacc.c:1652 */
21882195 break;
21892196
21902197 case 63:
2191 #line 399 "parse.y" /* yacc.c:1646 */
2198 #line 399 "parse.y" /* yacc.c:1652 */
21922199 { mawk_patch_jmp(MAWK, mawk_code_ptr) ; mawk_patch_jmp(MAWK, CDP((yyvsp[0].start))) ; }
2193 #line 2195 "y.tab.c" /* yacc.c:1646 */
2200 #line 2202 "y.tab.c" /* yacc.c:1652 */
21942201 break;
21952202
21962203 case 65:
2197 #line 404 "parse.y" /* yacc.c:1646 */
2204 #line 404 "parse.y" /* yacc.c:1652 */
21982205 { code1(_CAT) ; }
2199 #line 2201 "y.tab.c" /* yacc.c:1646 */
2206 #line 2208 "y.tab.c" /* yacc.c:1652 */
22002207 break;
22012208
22022209 case 66:
2203 #line 408 "parse.y" /* yacc.c:1646 */
2210 #line 408 "parse.y" /* yacc.c:1652 */
22042211 { (yyval.start) = mawk_code_offset ; code2(MAWK, _PUSHD, (yyvsp[0].ptr)) ; }
2205 #line 2207 "y.tab.c" /* yacc.c:1646 */
2212 #line 2214 "y.tab.c" /* yacc.c:1652 */
22062213 break;
22072214
22082215 case 67:
2209 #line 410 "parse.y" /* yacc.c:1646 */
2216 #line 410 "parse.y" /* yacc.c:1652 */
22102217 { (yyval.start) = mawk_code_offset ; code2(MAWK, _PUSHS, (yyvsp[0].ptr)) ; }
2211 #line 2213 "y.tab.c" /* yacc.c:1646 */
2218 #line 2220 "y.tab.c" /* yacc.c:1652 */
22122219 break;
22132220
22142221 case 68:
2215 #line 412 "parse.y" /* yacc.c:1646 */
2222 #line 412 "parse.y" /* yacc.c:1652 */
22162223 { check_var(MAWK, (yyvsp[0].stp)) ;
22172224 (yyval.start) = mawk_code_offset ;
22182225 if ( is_local((yyvsp[0].stp)) )
22192226 { mawk_code2op(MAWK, L_PUSHI, (yyvsp[0].stp)->offset) ; }
22202227 else code2(MAWK, _PUSHI, (yyvsp[0].stp)->stval.cp) ;
22212228 }
2222 #line 2224 "y.tab.c" /* yacc.c:1646 */
2229 #line 2231 "y.tab.c" /* yacc.c:1652 */
22232230 break;
22242231
22252232 case 69:
2226 #line 420 "parse.y" /* yacc.c:1646 */
2233 #line 420 "parse.y" /* yacc.c:1652 */
22272234 { (yyval.start) = (yyvsp[-1].start) ; }
2228 #line 2230 "y.tab.c" /* yacc.c:1646 */
2235 #line 2237 "y.tab.c" /* yacc.c:1652 */
22292236 break;
22302237
22312238 case 70:
2232 #line 424 "parse.y" /* yacc.c:1646 */
2239 #line 424 "parse.y" /* yacc.c:1652 */
22332240 { (yyval.start) = mawk_code_offset ; code2(MAWK, _MATCH0, (yyvsp[0].ptr)) ; }
2234 #line 2236 "y.tab.c" /* yacc.c:1646 */
2241 #line 2243 "y.tab.c" /* yacc.c:1652 */
22352242 break;
22362243
22372244 case 71:
2238 #line 427 "parse.y" /* yacc.c:1646 */
2245 #line 427 "parse.y" /* yacc.c:1652 */
22392246 { code1(_ADD) ; }
2240 #line 2242 "y.tab.c" /* yacc.c:1646 */
2247 #line 2249 "y.tab.c" /* yacc.c:1652 */
22412248 break;
22422249
22432250 case 72:
2244 #line 428 "parse.y" /* yacc.c:1646 */
2251 #line 428 "parse.y" /* yacc.c:1652 */
22452252 { code1(_SUB) ; }
2246 #line 2248 "y.tab.c" /* yacc.c:1646 */
2253 #line 2255 "y.tab.c" /* yacc.c:1652 */
22472254 break;
22482255
22492256 case 73:
2250 #line 429 "parse.y" /* yacc.c:1646 */
2257 #line 429 "parse.y" /* yacc.c:1652 */
22512258 { code1(_MUL) ; }
2252 #line 2254 "y.tab.c" /* yacc.c:1646 */
2259 #line 2261 "y.tab.c" /* yacc.c:1652 */
22532260 break;
22542261
22552262 case 74:
2256 #line 430 "parse.y" /* yacc.c:1646 */
2263 #line 430 "parse.y" /* yacc.c:1652 */
22572264 { code1(_DIV) ; }
2258 #line 2260 "y.tab.c" /* yacc.c:1646 */
2265 #line 2267 "y.tab.c" /* yacc.c:1652 */
22592266 break;
22602267
22612268 case 75:
2262 #line 431 "parse.y" /* yacc.c:1646 */
2269 #line 431 "parse.y" /* yacc.c:1652 */
22632270 { code1(_MOD) ; }
2264 #line 2266 "y.tab.c" /* yacc.c:1646 */
2271 #line 2273 "y.tab.c" /* yacc.c:1652 */
22652272 break;
22662273
22672274 case 76:
2268 #line 432 "parse.y" /* yacc.c:1646 */
2275 #line 432 "parse.y" /* yacc.c:1652 */
22692276 { code1(_POW) ; }
2270 #line 2272 "y.tab.c" /* yacc.c:1646 */
2277 #line 2279 "y.tab.c" /* yacc.c:1652 */
22712278 break;
22722279
22732280 case 77:
2274 #line 434 "parse.y" /* yacc.c:1646 */
2281 #line 434 "parse.y" /* yacc.c:1652 */
22752282 { (yyval.start) = (yyvsp[0].start) ; code1(_NOT) ; }
2276 #line 2278 "y.tab.c" /* yacc.c:1646 */
2283 #line 2285 "y.tab.c" /* yacc.c:1652 */
22772284 break;
22782285
22792286 case 78:
2280 #line 436 "parse.y" /* yacc.c:1646 */
2287 #line 436 "parse.y" /* yacc.c:1652 */
22812288 { (yyval.start) = (yyvsp[0].start) ; code1(_UPLUS) ; }
2282 #line 2284 "y.tab.c" /* yacc.c:1646 */
2289 #line 2291 "y.tab.c" /* yacc.c:1652 */
22832290 break;
22842291
22852292 case 79:
2286 #line 438 "parse.y" /* yacc.c:1646 */
2293 #line 438 "parse.y" /* yacc.c:1652 */
22872294 { (yyval.start) = (yyvsp[0].start) ; code1(_UMINUS) ; }
2288 #line 2290 "y.tab.c" /* yacc.c:1646 */
2295 #line 2297 "y.tab.c" /* yacc.c:1652 */
22892296 break;
22902297
22912298 case 81:
2292 #line 443 "parse.y" /* yacc.c:1646 */
2299 #line 443 "parse.y" /* yacc.c:1652 */
22932300 { check_var(MAWK, (yyvsp[-1].stp)) ;
22942301 (yyval.start) = mawk_code_offset ;
22952302 mawk_code_address((yyvsp[-1].stp)) ;
22972304 if ( (yyvsp[0].ival) == '+' ) code1(_POST_INC) ;
22982305 else code1(_POST_DEC) ;
22992306 }
2300 #line 2302 "y.tab.c" /* yacc.c:1646 */
2307 #line 2309 "y.tab.c" /* yacc.c:1652 */
23012308 break;
23022309
23032310 case 82:
2304 #line 451 "parse.y" /* yacc.c:1646 */
2311 #line 451 "parse.y" /* yacc.c:1652 */
23052312 { (yyval.start) = (yyvsp[0].start) ;
23062313 if ( (yyvsp[-1].ival) == '+' ) code1(_PRE_INC) ;
23072314 else code1(_PRE_DEC) ;
23082315 }
2309 #line 2311 "y.tab.c" /* yacc.c:1646 */
2316 #line 2318 "y.tab.c" /* yacc.c:1652 */
23102317 break;
23112318
23122319 case 83:
2313 #line 456 "parse.y" /* yacc.c:1646 */
2320 #line 456 "parse.y" /* yacc.c:1652 */
23142321 { (yyval.start) = (yyvsp[0].start) ;
23152322 if ( (yyvsp[-1].ival) == '+' ) code1(_PRE_INC_ARR) ;
23162323 else code1(_PRE_DEC_ARR) ;
23172324 }
2318 #line 2320 "y.tab.c" /* yacc.c:1646 */
2325 #line 2327 "y.tab.c" /* yacc.c:1652 */
23192326 break;
23202327
23212328 case 84:
2322 #line 463 "parse.y" /* yacc.c:1646 */
2329 #line 463 "parse.y" /* yacc.c:1652 */
23232330 { if ((yyvsp[0].ival) == '+' ) code1(F_POST_INC ) ;
23242331 else code1(F_POST_DEC) ;
23252332 }
2326 #line 2328 "y.tab.c" /* yacc.c:1646 */
2333 #line 2335 "y.tab.c" /* yacc.c:1652 */
23272334 break;
23282335
23292336 case 85:
2330 #line 467 "parse.y" /* yacc.c:1646 */
2337 #line 467 "parse.y" /* yacc.c:1652 */
23312338 { (yyval.start) = (yyvsp[0].start) ;
23322339 if ( (yyvsp[-1].ival) == '+' ) code1(F_PRE_INC) ;
23332340 else code1( F_PRE_DEC) ;
23342341 }
2335 #line 2337 "y.tab.c" /* yacc.c:1646 */
2342 #line 2344 "y.tab.c" /* yacc.c:1652 */
23362343 break;
23372344
23382345 case 86:
2339 #line 474 "parse.y" /* yacc.c:1646 */
2346 #line 474 "parse.y" /* yacc.c:1652 */
23402347 { (yyval.start) = mawk_code_offset ;
23412348 check_var(MAWK, (yyvsp[0].stp)) ;
23422349 mawk_code_address((yyvsp[0].stp)) ;
23432350 }
2344 #line 2346 "y.tab.c" /* yacc.c:1646 */
2351 #line 2353 "y.tab.c" /* yacc.c:1652 */
23452352 break;
23462353
23472354 case 87:
2348 #line 482 "parse.y" /* yacc.c:1646 */
2355 #line 482 "parse.y" /* yacc.c:1652 */
23492356 { (yyval.ival) = 0 ; }
2350 #line 2352 "y.tab.c" /* yacc.c:1646 */
2357 #line 2359 "y.tab.c" /* yacc.c:1652 */
23512358 break;
23522359
23532360 case 89:
2354 #line 487 "parse.y" /* yacc.c:1646 */
2361 #line 487 "parse.y" /* yacc.c:1652 */
23552362 { (yyval.ival) = 1 ; }
2356 #line 2358 "y.tab.c" /* yacc.c:1646 */
2363 #line 2365 "y.tab.c" /* yacc.c:1652 */
23572364 break;
23582365
23592366 case 90:
2360 #line 489 "parse.y" /* yacc.c:1646 */
2367 #line 489 "parse.y" /* yacc.c:1652 */
23612368 { (yyval.ival) = (yyvsp[-2].ival) + 1 ; }
2362 #line 2364 "y.tab.c" /* yacc.c:1646 */
2369 #line 2371 "y.tab.c" /* yacc.c:1652 */
23632370 break;
23642371
23652372 case 91:
2366 #line 494 "parse.y" /* yacc.c:1646 */
2373 #line 494 "parse.y" /* yacc.c:1652 */
23672374 { const BI_REC *p = (yyvsp[-4].bip) ;
23682375 (yyval.start) = (yyvsp[-3].start) ;
23692376 if ( (int)p->min_args > (yyvsp[-1].ival) || (int)p->max_args < (yyvsp[-1].ival) )
23742381 { code1(_PUSHINT) ; code1((yyvsp[-1].ival)) ; }
23752382 code2(MAWK, _BUILTIN , mawk_f2d(p->fp)) ;
23762383 }
2377 #line 2379 "y.tab.c" /* yacc.c:1646 */
2384 #line 2386 "y.tab.c" /* yacc.c:1652 */
23782385 break;
23792386
23802387 case 92:
2381 #line 505 "parse.y" /* yacc.c:1646 */
2388 #line 505 "parse.y" /* yacc.c:1652 */
23822389 {
23832390 (yyval.start) = mawk_code_offset ;
23842391 code1(_PUSHINT) ; code1(0) ;
23852392 code2(MAWK, _BUILTIN, mawk_f2d((yyvsp[0].bip)->fp)) ;
23862393 }
2387 #line 2389 "y.tab.c" /* yacc.c:1646 */
2394 #line 2396 "y.tab.c" /* yacc.c:1652 */
23882395 break;
23892396
23902397 case 93:
2391 #line 514 "parse.y" /* yacc.c:1646 */
2398 #line 514 "parse.y" /* yacc.c:1652 */
23922399 { (yyval.start) = mawk_code_offset ; }
2393 #line 2395 "y.tab.c" /* yacc.c:1646 */
2400 #line 2402 "y.tab.c" /* yacc.c:1652 */
23942401 break;
23952402
23962403 case 94:
2397 #line 518 "parse.y" /* yacc.c:1646 */
2404 #line 518 "parse.y" /* yacc.c:1652 */
23982405 { code2(MAWK, _PRINT, mawk_f2d((yyvsp[-4].fp))) ;
23992406 if ( (yyvsp[-4].fp) == mawk_bi_printf && (yyvsp[-2].ival) == 0 )
24002407 mawk_compile_error(MAWK, "no arguments in call to printf") ;
24012408 MAWK->print_flag = 0 ;
24022409 (yyval.start) = (yyvsp[-3].start) ;
24032410 }
2404 #line 2406 "y.tab.c" /* yacc.c:1646 */
2411 #line 2413 "y.tab.c" /* yacc.c:1652 */
24052412 break;
24062413
24072414 case 95:
2408 #line 526 "parse.y" /* yacc.c:1646 */
2415 #line 526 "parse.y" /* yacc.c:1652 */
24092416 { (yyval.fp) = mawk_bi_print ; MAWK->print_flag = 1 ;}
2410 #line 2412 "y.tab.c" /* yacc.c:1646 */
2417 #line 2419 "y.tab.c" /* yacc.c:1652 */
24112418 break;
24122419
24132420 case 96:
2414 #line 527 "parse.y" /* yacc.c:1646 */
2421 #line 527 "parse.y" /* yacc.c:1652 */
24152422 { (yyval.fp) = mawk_bi_printf ; MAWK->print_flag = 1 ; }
2416 #line 2418 "y.tab.c" /* yacc.c:1646 */
2423 #line 2425 "y.tab.c" /* yacc.c:1652 */
24172424 break;
24182425
24192426 case 97:
2420 #line 530 "parse.y" /* yacc.c:1646 */
2427 #line 530 "parse.y" /* yacc.c:1652 */
24212428 { mawk_code2op(MAWK, _PUSHINT, (yyvsp[0].ival)) ; }
2422 #line 2424 "y.tab.c" /* yacc.c:1646 */
2429 #line 2431 "y.tab.c" /* yacc.c:1652 */
24232430 break;
24242431
24252432 case 98:
2426 #line 532 "parse.y" /* yacc.c:1646 */
2433 #line 532 "parse.y" /* yacc.c:1652 */
24272434 { (yyval.ival) = (yyvsp[-1].arg2p)->cnt ; mawk_zfree(MAWK, (yyvsp[-1].arg2p),sizeof(ARG2_REC)) ;
24282435 mawk_code2op(MAWK, _PUSHINT, (yyval.ival)) ;
24292436 }
2430 #line 2432 "y.tab.c" /* yacc.c:1646 */
2437 #line 2439 "y.tab.c" /* yacc.c:1652 */
24312438 break;
24322439
24332440 case 99:
2434 #line 536 "parse.y" /* yacc.c:1646 */
2441 #line 536 "parse.y" /* yacc.c:1652 */
24352442 { (yyval.ival)=0 ; mawk_code2op(MAWK, _PUSHINT, 0) ; }
2436 #line 2438 "y.tab.c" /* yacc.c:1646 */
2443 #line 2445 "y.tab.c" /* yacc.c:1652 */
24372444 break;
24382445
24392446 case 100:
2440 #line 540 "parse.y" /* yacc.c:1646 */
2447 #line 540 "parse.y" /* yacc.c:1652 */
24412448 { (yyval.arg2p) = (ARG2_REC*) mawk_zmalloc(MAWK, sizeof(ARG2_REC)) ;
24422449 (yyval.arg2p)->start = (yyvsp[-2].start) ;
24432450 (yyval.arg2p)->cnt = 2 ;
24442451 }
2445 #line 2447 "y.tab.c" /* yacc.c:1646 */
2452 #line 2454 "y.tab.c" /* yacc.c:1652 */
24462453 break;
24472454
24482455 case 101:
2449 #line 545 "parse.y" /* yacc.c:1646 */
2456 #line 545 "parse.y" /* yacc.c:1652 */
24502457 { (yyval.arg2p) = (yyvsp[-2].arg2p) ; (yyval.arg2p)->cnt++ ; }
2451 #line 2453 "y.tab.c" /* yacc.c:1646 */
2458 #line 2460 "y.tab.c" /* yacc.c:1652 */
24522459 break;
24532460
24542461 case 103:
2455 #line 550 "parse.y" /* yacc.c:1646 */
2462 #line 550 "parse.y" /* yacc.c:1652 */
24562463 { mawk_code2op(MAWK, _PUSHINT, (yyvsp[-1].ival)) ; }
2457 #line 2459 "y.tab.c" /* yacc.c:1646 */
2464 #line 2466 "y.tab.c" /* yacc.c:1652 */
24582465 break;
24592466
24602467 case 104:
2461 #line 557 "parse.y" /* yacc.c:1646 */
2468 #line 557 "parse.y" /* yacc.c:1652 */
24622469 { (yyval.start) = (yyvsp[-1].start) ; mawk_eat_nl(MAWK, &yylval) ; mawk_code_jmp(MAWK, _JZ, (INST*)0) ; }
2463 #line 2465 "y.tab.c" /* yacc.c:1646 */
2470 #line 2472 "y.tab.c" /* yacc.c:1652 */
24642471 break;
24652472
24662473 case 105:
2467 #line 562 "parse.y" /* yacc.c:1646 */
2474 #line 562 "parse.y" /* yacc.c:1652 */
24682475 { mawk_patch_jmp(MAWK, mawk_code_ptr ) ; }
2469 #line 2471 "y.tab.c" /* yacc.c:1646 */
2476 #line 2478 "y.tab.c" /* yacc.c:1652 */
24702477 break;
24712478
24722479 case 106:
2473 #line 565 "parse.y" /* yacc.c:1646 */
2480 #line 565 "parse.y" /* yacc.c:1652 */
24742481 { mawk_eat_nl(MAWK, &yylval) ; mawk_code_jmp(MAWK, _JMP, (INST*)0) ; }
2475 #line 2477 "y.tab.c" /* yacc.c:1646 */
2482 #line 2484 "y.tab.c" /* yacc.c:1652 */
24762483 break;
24772484
24782485 case 107:
2479 #line 570 "parse.y" /* yacc.c:1646 */
2486 #line 570 "parse.y" /* yacc.c:1652 */
24802487 { mawk_patch_jmp(MAWK, mawk_code_ptr) ;
24812488 mawk_patch_jmp(MAWK, CDP((yyvsp[0].start))) ;
24822489 }
2483 #line 2485 "y.tab.c" /* yacc.c:1646 */
2490 #line 2492 "y.tab.c" /* yacc.c:1652 */
24842491 break;
24852492
24862493 case 108:
2487 #line 578 "parse.y" /* yacc.c:1646 */
2494 #line 578 "parse.y" /* yacc.c:1652 */
24882495 { mawk_eat_nl(MAWK, &yylval) ; mawk_BC_new(MAWK) ; }
2489 #line 2491 "y.tab.c" /* yacc.c:1646 */
2496 #line 2498 "y.tab.c" /* yacc.c:1652 */
24902497 break;
24912498
24922499 case 109:
2493 #line 583 "parse.y" /* yacc.c:1646 */
2500 #line 583 "parse.y" /* yacc.c:1652 */
24942501 { (yyval.start) = (yyvsp[-5].start) ;
24952502 mawk_code_jmp(MAWK, _JNZ, CDP((yyvsp[-5].start))) ;
24962503 mawk_BC_clear(MAWK, mawk_code_ptr, CDP((yyvsp[-2].start))) ; }
2497 #line 2499 "y.tab.c" /* yacc.c:1646 */
2504 #line 2506 "y.tab.c" /* yacc.c:1652 */
24982505 break;
24992506
25002507 case 110:
2501 #line 589 "parse.y" /* yacc.c:1646 */
2508 #line 589 "parse.y" /* yacc.c:1652 */
25022509 { mawk_eat_nl(MAWK, &yylval) ; mawk_BC_new(MAWK) ;
25032510 (yyval.start) = (yyvsp[-1].start) ;
25042511
25152522 code2(MAWK, _JMP, (INST*)0) ; /* code2() not mawk_code_jmp() */
25162523 }
25172524 }
2518 #line 2520 "y.tab.c" /* yacc.c:1646 */
2525 #line 2527 "y.tab.c" /* yacc.c:1652 */
25192526 break;
25202527
25212528 case 111:
2522 #line 609 "parse.y" /* yacc.c:1646 */
2529 #line 609 "parse.y" /* yacc.c:1652 */
25232530 {
25242531 int saved_offset ;
25252532 int len ;
25412548 mawk_BC_clear(MAWK, mawk_code_ptr, CDP((yyvsp[0].start))) ;
25422549 }
25432550 }
2544 #line 2546 "y.tab.c" /* yacc.c:1646 */
2551 #line 2553 "y.tab.c" /* yacc.c:1652 */
25452552 break;
25462553
25472554 case 112:
2548 #line 635 "parse.y" /* yacc.c:1646 */
2555 #line 635 "parse.y" /* yacc.c:1652 */
25492556 {
25502557 int cont_offset = mawk_code_offset ;
25512558 unsigned len = mawk_code_pop(MAWK, mawk_code_ptr) ;
25672574 mawk_BC_clear(MAWK, mawk_code_ptr, CDP(cont_offset)) ;
25682575
25692576 }
2570 #line 2572 "y.tab.c" /* yacc.c:1646 */
2577 #line 2579 "y.tab.c" /* yacc.c:1652 */
25712578 break;
25722579
25732580 case 113:
2574 #line 658 "parse.y" /* yacc.c:1646 */
2581 #line 658 "parse.y" /* yacc.c:1652 */
25752582 { (yyval.start) = mawk_code_offset ; }
2576 #line 2578 "y.tab.c" /* yacc.c:1646 */
2583 #line 2585 "y.tab.c" /* yacc.c:1652 */
25772584 break;
25782585
25792586 case 114:
2580 #line 660 "parse.y" /* yacc.c:1646 */
2587 #line 660 "parse.y" /* yacc.c:1652 */
25812588 { (yyval.start) = (yyvsp[-1].start) ; code1(_POP) ; }
2582 #line 2584 "y.tab.c" /* yacc.c:1646 */
2589 #line 2591 "y.tab.c" /* yacc.c:1652 */
25832590 break;
25842591
25852592 case 115:
2586 #line 663 "parse.y" /* yacc.c:1646 */
2593 #line 663 "parse.y" /* yacc.c:1652 */
25872594 { (yyval.start) = mawk_code_offset ; }
2588 #line 2590 "y.tab.c" /* yacc.c:1646 */
2595 #line 2597 "y.tab.c" /* yacc.c:1652 */
25892596 break;
25902597
25912598 case 116:
2592 #line 665 "parse.y" /* yacc.c:1646 */
2599 #line 665 "parse.y" /* yacc.c:1652 */
25932600 {
25942601 if ( mawk_code_ptr - 2 == CDP((yyvsp[-1].start)) &&
25952602 mawk_code_ptr[-2].op == _PUSHD &&
26042611 code2(MAWK, _JMP, (INST*)0) ;
26052612 }
26062613 }
2607 #line 2609 "y.tab.c" /* yacc.c:1646 */
2614 #line 2616 "y.tab.c" /* yacc.c:1652 */
26082615 break;
26092616
26102617 case 117:
2611 #line 682 "parse.y" /* yacc.c:1646 */
2618 #line 682 "parse.y" /* yacc.c:1652 */
26122619 { mawk_eat_nl(MAWK, &yylval) ; mawk_BC_new(MAWK) ;
26132620 mawk_code_push(MAWK, (INST*)0,0, MAWK->scope, MAWK->active_funct) ;
26142621 }
2615 #line 2617 "y.tab.c" /* yacc.c:1646 */
2622 #line 2624 "y.tab.c" /* yacc.c:1652 */
26162623 break;
26172624
26182625 case 118:
2619 #line 686 "parse.y" /* yacc.c:1646 */
2626 #line 686 "parse.y" /* yacc.c:1652 */
26202627 { INST *p1 = CDP((yyvsp[-1].start)) ;
26212628
26222629 mawk_eat_nl(MAWK, &yylval) ; mawk_BC_new(MAWK) ;
26242631 mawk_code_push(MAWK, p1, mawk_code_ptr - p1, MAWK->scope, MAWK->active_funct) ;
26252632 mawk_code_ptr -= mawk_code_ptr - p1 ;
26262633 }
2627 #line 2629 "y.tab.c" /* yacc.c:1646 */
2634 #line 2636 "y.tab.c" /* yacc.c:1652 */
26282635 break;
26292636
26302637 case 119:
2631 #line 699 "parse.y" /* yacc.c:1646 */
2638 #line 699 "parse.y" /* yacc.c:1652 */
26322639 { check_array(MAWK, (yyvsp[0].stp)) ;
26332640 mawk_code_array(MAWK, (yyvsp[0].stp)) ;
26342641 code1(A_TEST) ;
26352642 }
2636 #line 2638 "y.tab.c" /* yacc.c:1646 */
2643 #line 2645 "y.tab.c" /* yacc.c:1652 */
26372644 break;
26382645
26392646 case 120:
2640 #line 704 "parse.y" /* yacc.c:1646 */
2647 #line 704 "parse.y" /* yacc.c:1652 */
26412648 { (yyval.start) = (yyvsp[-3].arg2p)->start ;
26422649 mawk_code2op(MAWK, A_CAT, (yyvsp[-3].arg2p)->cnt) ;
26432650 mawk_zfree(MAWK, (yyvsp[-3].arg2p), sizeof(ARG2_REC)) ;
26462653 mawk_code_array(MAWK, (yyvsp[0].stp)) ;
26472654 code1(A_TEST) ;
26482655 }
2649 #line 2651 "y.tab.c" /* yacc.c:1646 */
2656 #line 2658 "y.tab.c" /* yacc.c:1652 */
26502657 break;
26512658
26522659 case 121:
2653 #line 717 "parse.y" /* yacc.c:1646 */
2660 #line 717 "parse.y" /* yacc.c:1652 */
26542661 {
26552662 if ( (yyvsp[-1].ival) > 1 )
26562663 { mawk_code2op(MAWK, A_CAT, (yyvsp[-1].ival)) ; }
26612668 else code2(MAWK, AE_PUSHA, (yyvsp[-4].stp)->stval.array) ;
26622669 (yyval.start) = (yyvsp[-3].start) ;
26632670 }
2664 #line 2666 "y.tab.c" /* yacc.c:1646 */
2671 #line 2673 "y.tab.c" /* yacc.c:1652 */
26652672 break;
26662673
26672674 case 122:
2668 #line 730 "parse.y" /* yacc.c:1646 */
2675 #line 730 "parse.y" /* yacc.c:1652 */
26692676 {
26702677 if ( (yyvsp[-1].ival) > 1 )
26712678 { mawk_code2op(MAWK, A_CAT, (yyvsp[-1].ival)) ; }
26762683 else code2(MAWK, AE_PUSHA_WRARR, (yyvsp[-4].stp)->stval.array) ;
26772684 (yyval.start) = (yyvsp[-3].start) ;
26782685 }
2679 #line 2681 "y.tab.c" /* yacc.c:1646 */
2686 #line 2688 "y.tab.c" /* yacc.c:1652 */
26802687 break;
26812688
26822689 case 123:
2683 #line 743 "parse.y" /* yacc.c:1646 */
2690 #line 743 "parse.y" /* yacc.c:1652 */
26842691 {
26852692 if ( (yyvsp[-1].ival) > 1 )
26862693 { mawk_code2op(MAWK, A_CAT, (yyvsp[-1].ival)) ; }
26912698 else code2(MAWK, AE_PUSHI, (yyvsp[-4].stp)->stval.array) ;
26922699 (yyval.start) = (yyvsp[-3].start) ;
26932700 }
2694 #line 2696 "y.tab.c" /* yacc.c:1646 */
2701 #line 2703 "y.tab.c" /* yacc.c:1652 */
26952702 break;
26962703
26972704 case 124:
2698 #line 755 "parse.y" /* yacc.c:1646 */
2705 #line 755 "parse.y" /* yacc.c:1652 */
26992706 {
27002707 if ( (yyvsp[-2].ival) > 1 )
27012708 { mawk_code2op(MAWK, A_CAT,(yyvsp[-2].ival)) ; }
27092716
27102717 (yyval.start) = (yyvsp[-4].start) ;
27112718 }
2712 #line 2714 "y.tab.c" /* yacc.c:1646 */
2719 #line 2721 "y.tab.c" /* yacc.c:1652 */
27132720 break;
27142721
27152722 case 125:
2716 #line 772 "parse.y" /* yacc.c:1646 */
2723 #line 772 "parse.y" /* yacc.c:1652 */
27172724 {
27182725 (yyval.start) = (yyvsp[-4].start) ;
27192726 if ( (yyvsp[-2].ival) > 1 ) { mawk_code2op(MAWK, A_CAT, (yyvsp[-2].ival)) ; }
27212728 mawk_code_array(MAWK, (yyvsp[-5].stp)) ;
27222729 code1(A_DEL) ;
27232730 }
2724 #line 2726 "y.tab.c" /* yacc.c:1646 */
2731 #line 2733 "y.tab.c" /* yacc.c:1652 */
27252732 break;
27262733
27272734 case 126:
2728 #line 780 "parse.y" /* yacc.c:1646 */
2735 #line 780 "parse.y" /* yacc.c:1652 */
27292736 {
27302737 (yyval.start) = mawk_code_offset ;
27312738 check_array(MAWK, (yyvsp[-1].stp)) ;
27322739 mawk_code_array(MAWK, (yyvsp[-1].stp)) ;
27332740 code1(DEL_A) ;
27342741 }
2735 #line 2737 "y.tab.c" /* yacc.c:1646 */
2742 #line 2744 "y.tab.c" /* yacc.c:1652 */
27362743 break;
27372744
27382745 case 127:
2739 #line 791 "parse.y" /* yacc.c:1646 */
2746 #line 791 "parse.y" /* yacc.c:1652 */
27402747 { mawk_eat_nl(MAWK, &yylval) ; mawk_BC_new(MAWK) ;
27412748 (yyval.start) = mawk_code_offset ;
27422749
27472754
27482755 code2(MAWK, SET_ALOOP, (INST*)0) ;
27492756 }
2750 #line 2752 "y.tab.c" /* yacc.c:1646 */
2757 #line 2759 "y.tab.c" /* yacc.c:1652 */
27512758 break;
27522759
27532760 case 128:
2754 #line 805 "parse.y" /* yacc.c:1646 */
2761 #line 805 "parse.y" /* yacc.c:1652 */
27552762 {
27562763 INST *p2 = CDP((yyvsp[0].start)) ;
27572764
27602767 mawk_code_jmp(MAWK, ALOOP, p2) ;
27612768 code1(POP_AL) ;
27622769 }
2763 #line 2765 "y.tab.c" /* yacc.c:1646 */
2770 #line 2772 "y.tab.c" /* yacc.c:1652 */
27642771 break;
27652772
27662773 case 129:
2767 #line 822 "parse.y" /* yacc.c:1646 */
2774 #line 822 "parse.y" /* yacc.c:1652 */
27682775 { (yyval.start) = mawk_code_offset ; code2(MAWK, F_PUSHA, (yyvsp[0].cp)) ; }
2769 #line 2771 "y.tab.c" /* yacc.c:1646 */
2776 #line 2778 "y.tab.c" /* yacc.c:1652 */
27702777 break;
27712778
27722779 case 130:
2773 #line 824 "parse.y" /* yacc.c:1646 */
2780 #line 824 "parse.y" /* yacc.c:1652 */
27742781 { check_var(MAWK, (yyvsp[0].stp)) ;
27752782 (yyval.start) = mawk_code_offset ;
27762783 if ( is_local((yyvsp[0].stp)) )
27792786
27802787 CODE_FE_PUSHA() ;
27812788 }
2782 #line 2784 "y.tab.c" /* yacc.c:1646 */
2789 #line 2791 "y.tab.c" /* yacc.c:1652 */
27832790 break;
27842791
27852792 case 131:
2786 #line 833 "parse.y" /* yacc.c:1646 */
2793 #line 833 "parse.y" /* yacc.c:1652 */
27872794 {
27882795 if ( (yyvsp[-1].ival) > 1 )
27892796 { mawk_code2op(MAWK, A_CAT, (yyvsp[-1].ival)) ; }
27972804
27982805 (yyval.start) = (yyvsp[-3].start) ;
27992806 }
2800 #line 2802 "y.tab.c" /* yacc.c:1646 */
2807 #line 2809 "y.tab.c" /* yacc.c:1652 */
28012808 break;
28022809
28032810 case 132:
2804 #line 847 "parse.y" /* yacc.c:1646 */
2811 #line 847 "parse.y" /* yacc.c:1652 */
28052812 { (yyval.start) = (yyvsp[0].start) ; CODE_FE_PUSHA() ; }
2806 #line 2808 "y.tab.c" /* yacc.c:1646 */
2813 #line 2815 "y.tab.c" /* yacc.c:1652 */
28072814 break;
28082815
28092816 case 133:
2810 #line 849 "parse.y" /* yacc.c:1646 */
2817 #line 849 "parse.y" /* yacc.c:1652 */
28112818 { (yyval.start) = (yyvsp[-1].start) ; }
2812 #line 2814 "y.tab.c" /* yacc.c:1646 */
2819 #line 2821 "y.tab.c" /* yacc.c:1652 */
28132820 break;
28142821
28152822 case 134:
2816 #line 853 "parse.y" /* yacc.c:1646 */
2823 #line 853 "parse.y" /* yacc.c:1652 */
28172824 { field_A2I(MAWK) ; }
2818 #line 2820 "y.tab.c" /* yacc.c:1646 */
2825 #line 2827 "y.tab.c" /* yacc.c:1652 */
28192826 break;
28202827
28212828 case 135:
2822 #line 856 "parse.y" /* yacc.c:1646 */
2829 #line 856 "parse.y" /* yacc.c:1652 */
28232830 { code1(F_ASSIGN) ; }
2824 #line 2826 "y.tab.c" /* yacc.c:1646 */
2831 #line 2833 "y.tab.c" /* yacc.c:1652 */
28252832 break;
28262833
28272834 case 136:
2828 #line 857 "parse.y" /* yacc.c:1646 */
2835 #line 857 "parse.y" /* yacc.c:1652 */
28292836 { code1(F_ADD_ASG) ; }
2830 #line 2832 "y.tab.c" /* yacc.c:1646 */
2837 #line 2839 "y.tab.c" /* yacc.c:1652 */
28312838 break;
28322839
28332840 case 137:
2834 #line 858 "parse.y" /* yacc.c:1646 */
2841 #line 858 "parse.y" /* yacc.c:1652 */
28352842 { code1(F_SUB_ASG) ; }
2836 #line 2838 "y.tab.c" /* yacc.c:1646 */
2843 #line 2845 "y.tab.c" /* yacc.c:1652 */
28372844 break;
28382845
28392846 case 138:
2840 #line 859 "parse.y" /* yacc.c:1646 */
2847 #line 859 "parse.y" /* yacc.c:1652 */
28412848 { code1(F_MUL_ASG) ; }
2842 #line 2844 "y.tab.c" /* yacc.c:1646 */
2849 #line 2851 "y.tab.c" /* yacc.c:1652 */
28432850 break;
28442851
28452852 case 139:
2846 #line 860 "parse.y" /* yacc.c:1646 */
2853 #line 860 "parse.y" /* yacc.c:1652 */
28472854 { code1(F_DIV_ASG) ; }
2848 #line 2850 "y.tab.c" /* yacc.c:1646 */
2855 #line 2857 "y.tab.c" /* yacc.c:1652 */
28492856 break;
28502857
28512858 case 140:
2852 #line 861 "parse.y" /* yacc.c:1646 */
2859 #line 861 "parse.y" /* yacc.c:1652 */
28532860 { code1(F_MOD_ASG) ; }
2854 #line 2856 "y.tab.c" /* yacc.c:1646 */
2861 #line 2863 "y.tab.c" /* yacc.c:1652 */
28552862 break;
28562863
28572864 case 141:
2858 #line 862 "parse.y" /* yacc.c:1646 */
2865 #line 862 "parse.y" /* yacc.c:1652 */
28592866 { code1(F_POW_ASG) ; }
2860 #line 2862 "y.tab.c" /* yacc.c:1646 */
2867 #line 2869 "y.tab.c" /* yacc.c:1652 */
28612868 break;
28622869
28632870 case 142:
2864 #line 869 "parse.y" /* yacc.c:1646 */
2871 #line 869 "parse.y" /* yacc.c:1652 */
28652872 { code2(MAWK, _BUILTIN, mawk_f2d(mawk_bi_split)) ; }
2866 #line 2868 "y.tab.c" /* yacc.c:1646 */
2873 #line 2875 "y.tab.c" /* yacc.c:1652 */
28672874 break;
28682875
28692876 case 143:
2870 #line 873 "parse.y" /* yacc.c:1646 */
2877 #line 873 "parse.y" /* yacc.c:1652 */
28712878 { (yyval.start) = (yyvsp[-2].start) ;
28722879 check_array(MAWK, (yyvsp[0].stp)) ;
28732880 mawk_code_array(MAWK, (yyvsp[0].stp)) ;
28742881 }
2875 #line 2877 "y.tab.c" /* yacc.c:1646 */
2882 #line 2884 "y.tab.c" /* yacc.c:1652 */
28762883 break;
28772884
28782885 case 144:
2879 #line 880 "parse.y" /* yacc.c:1646 */
2886 #line 880 "parse.y" /* yacc.c:1652 */
28802887 { code2(MAWK, _PUSHI, &MAWK->fs_shadow) ; }
2881 #line 2883 "y.tab.c" /* yacc.c:1646 */
2888 #line 2890 "y.tab.c" /* yacc.c:1652 */
28822889 break;
28832890
28842891 case 145:
2885 #line 882 "parse.y" /* yacc.c:1646 */
2892 #line 882 "parse.y" /* yacc.c:1652 */
28862893 {
28872894 if ( CDP((yyvsp[-1].start)) == mawk_code_ptr - 2 )
28882895 {
29002907 }
29012908 }
29022909 }
2903 #line 2905 "y.tab.c" /* yacc.c:1646 */
2910 #line 2912 "y.tab.c" /* yacc.c:1652 */
29042911 break;
29052912
29062913 case 146:
2907 #line 906 "parse.y" /* yacc.c:1646 */
2914 #line 906 "parse.y" /* yacc.c:1652 */
29082915 { (yyval.start) = (yyvsp[-3].start) ;
29092916 code2(MAWK, _BUILTIN, mawk_f2d(mawk_bi_match)) ;
29102917 }
2911 #line 2913 "y.tab.c" /* yacc.c:1646 */
2918 #line 2920 "y.tab.c" /* yacc.c:1652 */
29122919 break;
29132920
29142921 case 147:
2915 #line 913 "parse.y" /* yacc.c:1646 */
2922 #line 913 "parse.y" /* yacc.c:1652 */
29162923 {
29172924 INST *p1 = CDP((yyvsp[0].start)) ;
29182925
29312938 }
29322939 }
29332940 }
2934 #line 2936 "y.tab.c" /* yacc.c:1646 */
2941 #line 2943 "y.tab.c" /* yacc.c:1652 */
29352942 break;
29362943
29372944 case 148:
2938 #line 936 "parse.y" /* yacc.c:1646 */
2945 #line 936 "parse.y" /* yacc.c:1652 */
29392946 { (yyval.start) = mawk_code_offset ;
29402947 code1(_EXIT0) ; }
2941 #line 2943 "y.tab.c" /* yacc.c:1646 */
2948 #line 2950 "y.tab.c" /* yacc.c:1652 */
29422949 break;
29432950
29442951 case 149:
2945 #line 939 "parse.y" /* yacc.c:1646 */
2952 #line 939 "parse.y" /* yacc.c:1652 */
29462953 { (yyval.start) = (yyvsp[-1].start) ; code1(_EXIT) ; }
2947 #line 2949 "y.tab.c" /* yacc.c:1646 */
2954 #line 2956 "y.tab.c" /* yacc.c:1652 */
29482955 break;
29492956
29502957 case 150:
2951 #line 942 "parse.y" /* yacc.c:1646 */
2958 #line 942 "parse.y" /* yacc.c:1652 */
29522959 { (yyval.start) = mawk_code_offset ;
29532960 code1(_RET0) ; }
2954 #line 2956 "y.tab.c" /* yacc.c:1646 */
2961 #line 2963 "y.tab.c" /* yacc.c:1652 */
29552962 break;
29562963
29572964 case 151:
2958 #line 945 "parse.y" /* yacc.c:1646 */
2965 #line 945 "parse.y" /* yacc.c:1652 */
29592966 { (yyval.start) = (yyvsp[-1].start) ; code1(_RET) ; }
2960 #line 2962 "y.tab.c" /* yacc.c:1646 */
2967 #line 2969 "y.tab.c" /* yacc.c:1652 */
29612968 break;
29622969
29632970 case 152:
2964 #line 950 "parse.y" /* yacc.c:1646 */
2971 #line 950 "parse.y" /* yacc.c:1652 */
29652972 { (yyval.start) = mawk_code_offset ;
29662973 code2(MAWK, F_PUSHA, &MAWK->field[0]) ;
29672974 code1(_PUSHINT) ; code1(0) ;
29682975 code2(MAWK, _BUILTIN, mawk_f2d(mawk_bi_getline)) ;
29692976 MAWK->getline_flag = 0 ;
29702977 }
2971 #line 2973 "y.tab.c" /* yacc.c:1646 */
2978 #line 2980 "y.tab.c" /* yacc.c:1652 */
29722979 break;
29732980
29742981 case 153:
2975 #line 957 "parse.y" /* yacc.c:1646 */
2982 #line 957 "parse.y" /* yacc.c:1652 */
29762983 { (yyval.start) = (yyvsp[0].start) ;
29772984 code1(_PUSHINT) ; code1(0) ;
29782985 code2(MAWK, _BUILTIN, mawk_f2d(mawk_bi_getline)) ;
29792986 MAWK->getline_flag = 0 ;
29802987 }
2981 #line 2983 "y.tab.c" /* yacc.c:1646 */
2988 #line 2990 "y.tab.c" /* yacc.c:1652 */
29822989 break;
29832990
29842991 case 154:
2985 #line 963 "parse.y" /* yacc.c:1646 */
2992 #line 963 "parse.y" /* yacc.c:1652 */
29862993 { code1(_PUSHINT) ; code1(F_IN) ;
29872994 code2(MAWK, _BUILTIN, mawk_f2d(mawk_bi_getline)) ;
29882995 /* getline_flag already off in yylex() */
29892996 }
2990 #line 2992 "y.tab.c" /* yacc.c:1646 */
2997 #line 2999 "y.tab.c" /* yacc.c:1652 */
29912998 break;
29922999
29933000 case 155:
2994 #line 968 "parse.y" /* yacc.c:1646 */
3001 #line 968 "parse.y" /* yacc.c:1652 */
29953002 { code2(MAWK, F_PUSHA, &MAWK->field[0]) ;
29963003 code1(_PUSHINT) ; code1(PIPE_IN) ;
29973004 code2(MAWK, _BUILTIN, mawk_f2d(mawk_bi_getline)) ;
29983005 }
2999 #line 3001 "y.tab.c" /* yacc.c:1646 */
3006 #line 3008 "y.tab.c" /* yacc.c:1652 */
30003007 break;
30013008
30023009 case 156:
3003 #line 973 "parse.y" /* yacc.c:1646 */
3010 #line 973 "parse.y" /* yacc.c:1652 */
30043011 {
30053012 code1(_PUSHINT) ; code1(PIPE_IN) ;
30063013 code2(MAWK, _BUILTIN, mawk_f2d(mawk_bi_getline)) ;
30073014 }
3008 #line 3010 "y.tab.c" /* yacc.c:1646 */
3015 #line 3017 "y.tab.c" /* yacc.c:1652 */
30093016 break;
30103017
30113018 case 157:
3012 #line 979 "parse.y" /* yacc.c:1646 */
3019 #line 979 "parse.y" /* yacc.c:1652 */
30133020 { MAWK->getline_flag = 1 ; }
3014 #line 3016 "y.tab.c" /* yacc.c:1646 */
3021 #line 3023 "y.tab.c" /* yacc.c:1652 */
30153022 break;
30163023
30173024 case 161:
3018 #line 986 "parse.y" /* yacc.c:1646 */
3025 #line 986 "parse.y" /* yacc.c:1652 */
30193026 { (yyval.start) = mawk_code_offset ;
30203027 code2(MAWK, F_PUSHA, MAWK->field+0) ;
30213028 }
3022 #line 3024 "y.tab.c" /* yacc.c:1646 */
3029 #line 3031 "y.tab.c" /* yacc.c:1652 */
30233030 break;
30243031
30253032 case 162:
3026 #line 990 "parse.y" /* yacc.c:1646 */
3033 #line 990 "parse.y" /* yacc.c:1652 */
30273034 { (yyval.start) = (yyvsp[-1].start) ; }
3028 #line 3030 "y.tab.c" /* yacc.c:1646 */
3035 #line 3037 "y.tab.c" /* yacc.c:1652 */
30293036 break;
30303037
30313038 case 163:
3032 #line 998 "parse.y" /* yacc.c:1646 */
3039 #line 998 "parse.y" /* yacc.c:1652 */
30333040 {
30343041 INST *p5 = CDP((yyvsp[-1].start)) ;
30353042 INST *p6 = CDP((yyvsp[0].start)) ;
30463053 code2(MAWK, _BUILTIN, mawk_f2d((yyvsp[-5].fp))) ;
30473054 (yyval.start) = (yyvsp[-3].start) ;
30483055 }
3049 #line 3051 "y.tab.c" /* yacc.c:1646 */
3056 #line 3058 "y.tab.c" /* yacc.c:1652 */
30503057 break;
30513058
30523059 case 164:
3053 #line 1016 "parse.y" /* yacc.c:1646 */
3060 #line 1016 "parse.y" /* yacc.c:1652 */
30543061 { (yyval.fp) = mawk_bi_sub ; }
3055 #line 3057 "y.tab.c" /* yacc.c:1646 */
3062 #line 3064 "y.tab.c" /* yacc.c:1652 */
30563063 break;
30573064
30583065 case 165:
3059 #line 1017 "parse.y" /* yacc.c:1646 */
3066 #line 1017 "parse.y" /* yacc.c:1652 */
30603067 { (yyval.fp) = mawk_bi_gsub ; }
3061 #line 3063 "y.tab.c" /* yacc.c:1646 */
3068 #line 3070 "y.tab.c" /* yacc.c:1652 */
30623069 break;
30633070
30643071 case 166:
3065 #line 1022 "parse.y" /* yacc.c:1646 */
3072 #line 1022 "parse.y" /* yacc.c:1652 */
30663073 { (yyval.start) = mawk_code_offset ;
30673074 code2(MAWK, F_PUSHA, &MAWK->field[0]) ;
30683075 }
3069 #line 3071 "y.tab.c" /* yacc.c:1646 */
3076 #line 3078 "y.tab.c" /* yacc.c:1652 */
30703077 break;
30713078
30723079 case 167:
3073 #line 1027 "parse.y" /* yacc.c:1646 */
3080 #line 1027 "parse.y" /* yacc.c:1652 */
30743081 { (yyval.start) = (yyvsp[-1].start) ; }
3075 #line 3077 "y.tab.c" /* yacc.c:1646 */
3082 #line 3084 "y.tab.c" /* yacc.c:1652 */
30763083 break;
30773084
30783085 case 168:
3079 #line 1035 "parse.y" /* yacc.c:1646 */
3086 #line 1035 "parse.y" /* yacc.c:1652 */
30803087 {
30813088 resize_fblock(MAWK, (yyvsp[-1].fbp)) ;
30823089 mawk_restore_ids(MAWK) ;
30833090 switch_code_to_main(MAWK) ;
30843091 }
3085 #line 3087 "y.tab.c" /* yacc.c:1646 */
3092 #line 3094 "y.tab.c" /* yacc.c:1652 */
30863093 break;
30873094
30883095 case 169:
3089 #line 1043 "parse.y" /* yacc.c:1646 */
3096 #line 1043 "parse.y" /* yacc.c:1652 */
30903097 { mawk_eat_nl(MAWK, &yylval) ;
30913098 MAWK->scope = SCOPE_FUNCT ;
30923099 MAWK->active_funct = (yyvsp[-3].fbp) ;
31033110 mawk_code_limit = mawk_code_base + PAGESZ ;
31043111 mawk_code_warn = mawk_code_limit - CODEWARN ;
31053112 }
3106 #line 3108 "y.tab.c" /* yacc.c:1646 */
3113 #line 3115 "y.tab.c" /* yacc.c:1652 */
31073114 break;
31083115
31093116 case 170:
3110 #line 1062 "parse.y" /* yacc.c:1646 */
3117 #line 1062 "parse.y" /* yacc.c:1652 */
31113118 { FBLOCK *fbp ;
31123119
31133120 if ( (yyvsp[0].stp)->type == ST_NONE )
31293136 }
31303137 (yyval.fbp) = fbp ;
31313138 }
3132 #line 3134 "y.tab.c" /* yacc.c:1646 */
3139 #line 3141 "y.tab.c" /* yacc.c:1652 */
31333140 break;
31343141
31353142 case 171:
3136 #line 1085 "parse.y" /* yacc.c:1646 */
3143 #line 1085 "parse.y" /* yacc.c:1652 */
31373144 { (yyval.fbp) = (yyvsp[0].fbp) ;
31383145 if ( (yyvsp[0].fbp)->code )
31393146 mawk_compile_error(MAWK, "redefinition of %s" , (yyvsp[0].fbp)->name) ;
31403147 }
3141 #line 3143 "y.tab.c" /* yacc.c:1646 */
3148 #line 3150 "y.tab.c" /* yacc.c:1652 */
31423149 break;
31433150
31443151 case 172:
3145 #line 1091 "parse.y" /* yacc.c:1646 */
3152 #line 1091 "parse.y" /* yacc.c:1652 */
31463153 { (yyval.ival) = 0 ; }
3147 #line 3149 "y.tab.c" /* yacc.c:1646 */
3154 #line 3156 "y.tab.c" /* yacc.c:1652 */
31483155 break;
31493156
31503157 case 174:
3151 #line 1096 "parse.y" /* yacc.c:1646 */
3158 #line 1096 "parse.y" /* yacc.c:1652 */
31523159 { (yyvsp[0].stp) = mawk_save_id(MAWK, (yyvsp[0].stp)->name) ;
31533160 (yyvsp[0].stp)->type = ST_LOCAL_NONE ;
31543161 (yyvsp[0].stp)->offset = 0 ;
31553162 (yyval.ival) = 1 ;
31563163 }
3157 #line 3159 "y.tab.c" /* yacc.c:1646 */
3164 #line 3166 "y.tab.c" /* yacc.c:1652 */
31583165 break;
31593166
31603167 case 175:
3161 #line 1102 "parse.y" /* yacc.c:1646 */
3168 #line 1102 "parse.y" /* yacc.c:1652 */
31623169 { if ( is_local((yyvsp[0].stp)) )
31633170 mawk_compile_error(MAWK, "%s is duplicated in argument list",
31643171 (yyvsp[0].stp)->name) ;
31693176 (yyval.ival) = (yyvsp[-2].ival) + 1 ;
31703177 }
31713178 }
3172 #line 3174 "y.tab.c" /* yacc.c:1646 */
3179 #line 3181 "y.tab.c" /* yacc.c:1652 */
31733180 break;
31743181
31753182 case 176:
3176 #line 1115 "parse.y" /* yacc.c:1646 */
3183 #line 1115 "parse.y" /* yacc.c:1652 */
31773184 { /* we may have to recover from a bungled function
31783185 definition */
31793186 /* can have local ids, before code scope
31823189
31833190 switch_code_to_main(MAWK) ;
31843191 }
3185 #line 3187 "y.tab.c" /* yacc.c:1646 */
3192 #line 3194 "y.tab.c" /* yacc.c:1652 */
31863193 break;
31873194
31883195 case 177:
3189 #line 1127 "parse.y" /* yacc.c:1646 */
3196 #line 1127 "parse.y" /* yacc.c:1652 */
31903197 { (yyval.start) = (yyvsp[-1].start) ;
31913198 code2(MAWK, _CALL, (yyvsp[-2].fbp)) ;
31923199
31933200 if ( (yyvsp[0].ca_p) ) code1((yyvsp[0].ca_p)->arg_num+1) ;
31943201 else code1(0) ;
3195
3196 mawk_check_fcall(MAWK, (yyvsp[-2].fbp), MAWK->scope, MAWK->ps.code_move_level, MAWK->active_funct,
3197 (yyvsp[0].ca_p), MAWK->token_lineno) ;
3202
3203 mawk_check_fcall(MAWK, (yyvsp[-2].fbp), MAWK->scope, MAWK->ps.code_move_level, MAWK->active_funct, (yyvsp[0].ca_p), MAWK->token_lineno);
31983204 }
3199 #line 3201 "y.tab.c" /* yacc.c:1646 */
3205 #line 3207 "y.tab.c" /* yacc.c:1652 */
32003206 break;
32013207
32023208 case 178:
3203 #line 1139 "parse.y" /* yacc.c:1646 */
3209 #line 1138 "parse.y" /* yacc.c:1652 */
32043210 { (yyval.start) = (yyvsp[-1].start) ;
32053211 code2(MAWK, _CALL, (yyvsp[-2].ptr)) ;
32063212
32073213 if ( (yyvsp[0].ca_p) ) code1((yyvsp[0].ca_p)->arg_num+1) ;
32083214 else code1(0) ;
3215
3216 mawk_check_ccall(MAWK, (yyvsp[-2].ptr), MAWK->scope, MAWK->ps.code_move_level, MAWK->active_funct, (yyvsp[0].ca_p), MAWK->token_lineno);
32093217 }
3210 #line 3212 "y.tab.c" /* yacc.c:1646 */
3218 #line 3220 "y.tab.c" /* yacc.c:1652 */
32113219 break;
32123220
32133221 case 179:
3214 #line 1148 "parse.y" /* yacc.c:1646 */
3222 #line 1149 "parse.y" /* yacc.c:1652 */
32153223 { (yyval.ca_p) = (CA_REC *) 0 ; }
3216 #line 3218 "y.tab.c" /* yacc.c:1646 */
3224 #line 3226 "y.tab.c" /* yacc.c:1652 */
32173225 break;
32183226
32193227 case 180:
3220 #line 1150 "parse.y" /* yacc.c:1646 */
3228 #line 1151 "parse.y" /* yacc.c:1652 */
32213229 { (yyval.ca_p) = (yyvsp[0].ca_p) ;
32223230 (yyval.ca_p)->link = (yyvsp[-1].ca_p) ;
32233231 (yyval.ca_p)->arg_num = (yyvsp[-1].ca_p) ? (yyvsp[-1].ca_p)->arg_num+1 : 0 ;
32243232 }
3225 #line 3227 "y.tab.c" /* yacc.c:1646 */
3233 #line 3235 "y.tab.c" /* yacc.c:1652 */
32263234 break;
32273235
32283236 case 181:
3229 #line 1165 "parse.y" /* yacc.c:1646 */
3237 #line 1166 "parse.y" /* yacc.c:1652 */
32303238 { (yyval.ca_p) = (CA_REC *) 0 ; }
3231 #line 3233 "y.tab.c" /* yacc.c:1646 */
3239 #line 3241 "y.tab.c" /* yacc.c:1652 */
32323240 break;
32333241
32343242 case 182:
3235 #line 1167 "parse.y" /* yacc.c:1646 */
3243 #line 1168 "parse.y" /* yacc.c:1652 */
32363244 { (yyval.ca_p) = MAWK_ZMALLOC(MAWK, CA_REC) ;
32373245 (yyval.ca_p)->link = (yyvsp[-2].ca_p) ;
32383246 (yyval.ca_p)->type = CA_EXPR ;
32393247 (yyval.ca_p)->arg_num = (yyvsp[-2].ca_p) ? (yyvsp[-2].ca_p)->arg_num+1 : 0 ;
32403248 (yyval.ca_p)->call_offset = mawk_code_offset ;
32413249 }
3242 #line 3244 "y.tab.c" /* yacc.c:1646 */
3250 #line 3252 "y.tab.c" /* yacc.c:1652 */
32433251 break;
32443252
32453253 case 183:
3246 #line 1174 "parse.y" /* yacc.c:1646 */
3254 #line 1175 "parse.y" /* yacc.c:1652 */
32473255 { (yyval.ca_p) = MAWK_ZMALLOC(MAWK, CA_REC) ;
32483256 (yyval.ca_p)->link = (yyvsp[-2].ca_p) ;
32493257 (yyval.ca_p)->arg_num = (yyvsp[-2].ca_p) ? (yyvsp[-2].ca_p)->arg_num+1 : 0 ;
32503258
32513259 mawk_code_call_id(MAWK, (yyval.ca_p), (yyvsp[-1].stp)) ;
32523260 }
3253 #line 3255 "y.tab.c" /* yacc.c:1646 */
3261 #line 3263 "y.tab.c" /* yacc.c:1652 */
32543262 break;
32553263
32563264 case 184:
3257 #line 1183 "parse.y" /* yacc.c:1646 */
3265 #line 1184 "parse.y" /* yacc.c:1652 */
32583266 { (yyval.ca_p) = MAWK_ZMALLOC(MAWK, CA_REC) ;
32593267 (yyval.ca_p)->type = CA_EXPR ;
32603268 (yyval.ca_p)->call_offset = mawk_code_offset ;
32613269 }
3262 #line 3264 "y.tab.c" /* yacc.c:1646 */
3270 #line 3272 "y.tab.c" /* yacc.c:1652 */
32633271 break;
32643272
32653273 case 185:
3266 #line 1189 "parse.y" /* yacc.c:1646 */
3274 #line 1190 "parse.y" /* yacc.c:1652 */
32673275 { (yyval.ca_p) = MAWK_ZMALLOC(MAWK, CA_REC) ;
32683276 mawk_code_call_id(MAWK, (yyval.ca_p), (yyvsp[-1].stp)) ;
32693277 }
3270 #line 3272 "y.tab.c" /* yacc.c:1646 */
3278 #line 3280 "y.tab.c" /* yacc.c:1652 */
32713279 break;
32723280
32733281 case 186:
3274 #line 1196 "parse.y" /* yacc.c:1646 */
3282 #line 1197 "parse.y" /* yacc.c:1652 */
32753283 { mawk_parser_include(MAWK, (yyvsp[0].ptr)); }
3276 #line 3278 "y.tab.c" /* yacc.c:1646 */
3277 break;
3278
3279
3280 #line 3282 "y.tab.c" /* yacc.c:1646 */
3284 #line 3286 "y.tab.c" /* yacc.c:1652 */
3285 break;
3286
3287
3288 #line 3290 "y.tab.c" /* yacc.c:1652 */
32813289 default: break;
32823290 }
32833291 /* User semantic actions sometimes alter yychar, and that requires
33023310 /* Now 'shift' the result of the reduction. Determine what state
33033311 that goes to, based on the state we popped back to and the rule
33043312 number reduced by. */
3305
3306 yyn = yyr1[yyn];
3307
3308 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3309 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3310 yystate = yytable[yystate];
3311 else
3312 yystate = yydefgoto[yyn - YYNTOKENS];
3313 {
3314 const int yylhs = yyr1[yyn] - YYNTOKENS;
3315 const int yyi = yypgoto[yylhs] + *yyssp;
3316 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
3317 ? yytable[yyi]
3318 : yydefgoto[yylhs]);
3319 }
33133320
33143321 goto yynewstate;
33153322
33923399 | yyerrorlab -- error raised explicitly by YYERROR. |
33933400 `---------------------------------------------------*/
33943401 yyerrorlab:
3395
3396 /* Pacify compilers like GCC when the user code never invokes
3397 YYERROR and the label yyerrorlab therefore never appears in user
3398 code. */
3399 if (/*CONSTCOND*/ 0)
3400 goto yyerrorlab;
3402 /* Pacify compilers when the user code never invokes YYERROR and the
3403 label yyerrorlab therefore never appears in user code. */
3404 if (0)
3405 YYERROR;
34013406
34023407 /* Do not reclaim the symbols of the rule whose action triggered
34033408 this YYERROR. */
34593464 yyresult = 0;
34603465 goto yyreturn;
34613466
3467
34623468 /*-----------------------------------.
34633469 | yyabortlab -- YYABORT comes here. |
34643470 `-----------------------------------*/
34653471 yyabortlab:
34663472 yyresult = 1;
34673473 goto yyreturn;
3474
34683475
34693476 #if !defined yyoverflow || YYERROR_VERBOSE
34703477 /*-------------------------------------------------.
34763483 /* Fall through. */
34773484 #endif
34783485
3486
3487 /*-----------------------------------------------------.
3488 | yyreturn -- parsing is finished, return the result. |
3489 `-----------------------------------------------------*/
34793490 yyreturn:
34803491 if (yychar != YYEMPTY)
34813492 {
35053516 #endif
35063517 return yyresult;
35073518 }
3508 #line 1204 "parse.y" /* yacc.c:1906 */
3519 #line 1205 "parse.y" /* yacc.c:1918 */
35093520
35103521
35113522 /* resize the code for a user function */
0 /* A Bison parser, made by GNU Bison 3.0.2. */
0 /* A Bison parser, made by GNU Bison 3.3.2. */
11
22 /* Bison interface for Yacc-like parsers in C
33
4 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
4 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
5 Inc.
56
67 This program is free software: you can redistribute it and/or modify
78 it under the terms of the GNU General Public License as published by
2829
2930 This special exception was added by the Free Software Foundation in
3031 version 2.2 of Bison. */
32
33 /* Undocumented macros, especially those whose name start with YY_,
34 are private implementation details. Do not rely on them. */
3135
3236 #ifndef YY_MAWK_Y_TAB_H_INCLUDED
3337 # define YY_MAWK_Y_TAB_H_INCLUDED
202206
203207 /* Value type. */
204208 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
205 typedef union YYSTYPE YYSTYPE;
209
206210 union YYSTYPE
207211 {
208 #line 136 "parse.y" /* yacc.c:1909 */
212 #line 136 "parse.y" /* yacc.c:1921 */
209213
210214 mawk_cell_t *cp ;
211215 SYMTAB *stp ;
218222 int ival ;
219223 PTR ptr ;
220224
221 #line 223 "y.tab.h" /* yacc.c:1909 */
225 #line 227 "y.tab.h" /* yacc.c:1921 */
222226 };
227
228 typedef union YYSTYPE YYSTYPE;
223229 # define YYSTYPE_IS_TRIVIAL 1
224230 # define YYSTYPE_IS_DECLARED 1
225231 #endif
11281128
11291129 if ( $3 ) code1($3->arg_num+1) ;
11301130 else code1(0) ;
1131
1132 mawk_check_fcall(MAWK, $1, MAWK->scope, MAWK->ps.code_move_level, MAWK->active_funct,
1133 $3, MAWK->token_lineno) ;
1131
1132 mawk_check_fcall(MAWK, $1, MAWK->scope, MAWK->ps.code_move_level, MAWK->active_funct, $3, MAWK->token_lineno);
11341133 }
11351134 ;
11361135
11401139
11411140 if ( $3 ) code1($3->arg_num+1) ;
11421141 else code1(0) ;
1142
1143 mawk_check_ccall(MAWK, $1, MAWK->scope, MAWK->ps.code_move_level, MAWK->active_funct, $3, MAWK->token_lineno);
11431144 }
11441145 ;
11451146
9292
9393 void mawk_resolve_fcalls(mawk_state_t * MAWK);
9494 void mawk_check_fcall(mawk_state_t *, FBLOCK *, int, int, FBLOCK *, CA_REC *, unsigned);
95 void mawk_check_ccall(mawk_state_t *, FBLOCK *, int, int, FBLOCK *, CA_REC *, unsigned);
9596 void mawk_relocate_resolve_list(mawk_state_t *MAWK, int, int, FBLOCK *, int, unsigned, int);
9697
9798 /* mawk_hash.c */