diff options
Diffstat (limited to 'awkgram.c')
-rw-r--r-- | awkgram.c | 448 |
1 files changed, 230 insertions, 218 deletions
@@ -173,6 +173,7 @@ extern int sourceline; extern SRCFILE *srcfiles; extern INSTRUCTION *rule_list; extern int max_args; +extern NODE **args_array; static INSTRUCTION *rule_block[sizeof(ruletab)]; @@ -194,7 +195,7 @@ extern double fmod(double x, double y); /* Line 268 of yacc.c */ -#line 198 "awkgram.c" +#line 199 "awkgram.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -340,7 +341,7 @@ typedef int YYSTYPE; /* Line 343 of yacc.c */ -#line 344 "awkgram.c" +#line 345 "awkgram.c" #ifdef short # undef short @@ -702,25 +703,25 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 191, 191, 193, 198, 199, 203, 215, 219, 230, - 236, 244, 252, 254, 260, 261, 263, 289, 300, 311, - 317, 326, 336, 338, 340, 346, 351, 352, 356, 375, - 374, 408, 410, 415, 416, 429, 434, 435, 439, 441, - 443, 450, 540, 582, 624, 737, 744, 751, 761, 770, - 779, 788, 803, 819, 818, 842, 854, 854, 948, 948, - 973, 996, 1002, 1003, 1009, 1010, 1017, 1022, 1034, 1048, - 1050, 1056, 1061, 1063, 1071, 1073, 1082, 1083, 1091, 1096, - 1096, 1107, 1111, 1119, 1120, 1123, 1125, 1130, 1131, 1140, - 1141, 1146, 1151, 1157, 1159, 1161, 1168, 1169, 1175, 1176, - 1181, 1183, 1188, 1190, 1192, 1194, 1200, 1207, 1209, 1211, - 1227, 1237, 1244, 1246, 1251, 1253, 1255, 1263, 1265, 1270, - 1272, 1277, 1279, 1281, 1331, 1333, 1335, 1337, 1339, 1341, - 1343, 1345, 1368, 1373, 1378, 1403, 1409, 1411, 1413, 1415, - 1417, 1419, 1424, 1428, 1459, 1461, 1467, 1473, 1486, 1487, - 1488, 1493, 1498, 1502, 1506, 1519, 1532, 1537, 1573, 1591, - 1592, 1598, 1599, 1604, 1606, 1613, 1630, 1647, 1649, 1656, - 1661, 1669, 1679, 1691, 1700, 1704, 1708, 1712, 1716, 1720, - 1723, 1725, 1729, 1733, 1737 + 0, 192, 192, 194, 199, 200, 204, 216, 220, 231, + 237, 245, 253, 255, 261, 262, 264, 290, 301, 312, + 318, 327, 337, 339, 341, 347, 352, 353, 357, 376, + 375, 409, 411, 416, 417, 430, 435, 436, 440, 442, + 444, 451, 541, 583, 625, 738, 745, 752, 762, 771, + 780, 789, 804, 820, 819, 843, 855, 855, 949, 949, + 974, 997, 1003, 1004, 1010, 1011, 1018, 1023, 1035, 1049, + 1051, 1057, 1062, 1064, 1072, 1074, 1083, 1084, 1092, 1097, + 1097, 1108, 1112, 1120, 1121, 1124, 1126, 1131, 1132, 1141, + 1142, 1147, 1152, 1158, 1160, 1162, 1169, 1170, 1176, 1177, + 1182, 1184, 1189, 1191, 1193, 1195, 1201, 1208, 1210, 1212, + 1228, 1238, 1245, 1247, 1252, 1254, 1256, 1264, 1266, 1271, + 1273, 1278, 1280, 1282, 1332, 1334, 1336, 1338, 1340, 1342, + 1344, 1346, 1369, 1374, 1379, 1404, 1410, 1412, 1414, 1416, + 1418, 1420, 1425, 1429, 1460, 1462, 1468, 1474, 1487, 1488, + 1489, 1494, 1499, 1503, 1507, 1520, 1533, 1538, 1574, 1592, + 1593, 1599, 1600, 1605, 1607, 1614, 1631, 1648, 1650, 1657, + 1662, 1670, 1680, 1692, 1701, 1705, 1709, 1713, 1717, 1721, + 1724, 1726, 1730, 1734, 1738 }; #endif @@ -2039,7 +2040,7 @@ yyreduce: case 3: /* Line 1806 of yacc.c */ -#line 194 "awkgram.y" +#line 195 "awkgram.y" { rule = 0; yyerrok; @@ -2049,7 +2050,7 @@ yyreduce: case 5: /* Line 1806 of yacc.c */ -#line 200 "awkgram.y" +#line 201 "awkgram.y" { next_sourcefile(); } @@ -2058,7 +2059,7 @@ yyreduce: case 6: /* Line 1806 of yacc.c */ -#line 204 "awkgram.y" +#line 205 "awkgram.y" { rule = 0; /* @@ -2072,7 +2073,7 @@ yyreduce: case 7: /* Line 1806 of yacc.c */ -#line 216 "awkgram.y" +#line 217 "awkgram.y" { (void) append_rule((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); } @@ -2081,7 +2082,7 @@ yyreduce: case 8: /* Line 1806 of yacc.c */ -#line 220 "awkgram.y" +#line 221 "awkgram.y" { if (rule != Rule) { msg(_("%s blocks must have an action part"), ruletab[rule]); @@ -2097,7 +2098,7 @@ yyreduce: case 9: /* Line 1806 of yacc.c */ -#line 231 "awkgram.y" +#line 232 "awkgram.y" { in_function = NULL; (void) mk_function((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); @@ -2108,7 +2109,7 @@ yyreduce: case 10: /* Line 1806 of yacc.c */ -#line 237 "awkgram.y" +#line 238 "awkgram.y" { want_source = FALSE; yyerrok; @@ -2118,7 +2119,7 @@ yyreduce: case 11: /* Line 1806 of yacc.c */ -#line 245 "awkgram.y" +#line 246 "awkgram.y" { if (include_source((yyvsp[(1) - (1)])) < 0) YYABORT; @@ -2131,35 +2132,35 @@ yyreduce: case 12: /* Line 1806 of yacc.c */ -#line 253 "awkgram.y" +#line 254 "awkgram.y" { (yyval) = NULL; } break; case 13: /* Line 1806 of yacc.c */ -#line 255 "awkgram.y" +#line 256 "awkgram.y" { (yyval) = NULL; } break; case 14: /* Line 1806 of yacc.c */ -#line 260 "awkgram.y" +#line 261 "awkgram.y" { (yyval) = NULL; rule = Rule; } break; case 15: /* Line 1806 of yacc.c */ -#line 262 "awkgram.y" +#line 263 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); rule = Rule; } break; case 16: /* Line 1806 of yacc.c */ -#line 264 "awkgram.y" +#line 265 "awkgram.y" { INSTRUCTION *tp; @@ -2167,7 +2168,7 @@ yyreduce: add_lint((yyvsp[(4) - (4)]), LINT_assign_in_cond); tp = instruction(Op_no_op); - list_prepend((yyvsp[(1) - (4)]), bcalloc(Op_line_range, !!do_profiling + 1, 0)); + list_prepend((yyvsp[(1) - (4)]), bcalloc(Op_line_range, !!do_pretty_print + 1, 0)); (yyvsp[(1) - (4)])->nexti->triggered = FALSE; (yyvsp[(1) - (4)])->nexti->target_jmp = (yyvsp[(4) - (4)])->nexti; @@ -2178,7 +2179,7 @@ yyreduce: list_append((yyvsp[(4) - (4)]), instruction(Op_cond_pair)); (yyvsp[(4) - (4)])->lasti->line_range = (yyvsp[(1) - (4)])->nexti; (yyvsp[(4) - (4)])->lasti->target_jmp = tp; - if (do_profiling) { + if (do_pretty_print) { ((yyvsp[(1) - (4)])->nexti + 1)->condpair_left = (yyvsp[(1) - (4)])->lasti; ((yyvsp[(1) - (4)])->nexti + 1)->condpair_right = (yyvsp[(4) - (4)])->lasti; } @@ -2190,7 +2191,7 @@ yyreduce: case 17: /* Line 1806 of yacc.c */ -#line 290 "awkgram.y" +#line 291 "awkgram.y" { static int begin_seen = 0; if (do_lint_old && ++begin_seen == 2) @@ -2206,7 +2207,7 @@ yyreduce: case 18: /* Line 1806 of yacc.c */ -#line 301 "awkgram.y" +#line 302 "awkgram.y" { static int end_seen = 0; if (do_lint_old && ++end_seen == 2) @@ -2222,7 +2223,7 @@ yyreduce: case 19: /* Line 1806 of yacc.c */ -#line 312 "awkgram.y" +#line 313 "awkgram.y" { (yyvsp[(1) - (1)])->in_rule = rule = BEGINFILE; (yyvsp[(1) - (1)])->source_file = source; @@ -2233,7 +2234,7 @@ yyreduce: case 20: /* Line 1806 of yacc.c */ -#line 318 "awkgram.y" +#line 319 "awkgram.y" { (yyvsp[(1) - (1)])->in_rule = rule = ENDFILE; (yyvsp[(1) - (1)])->source_file = source; @@ -2244,7 +2245,7 @@ yyreduce: case 21: /* Line 1806 of yacc.c */ -#line 327 "awkgram.y" +#line 328 "awkgram.y" { if ((yyvsp[(2) - (5)]) == NULL) (yyval) = list_create(instruction(Op_no_op)); @@ -2256,21 +2257,21 @@ yyreduce: case 22: /* Line 1806 of yacc.c */ -#line 337 "awkgram.y" +#line 338 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 23: /* Line 1806 of yacc.c */ -#line 339 "awkgram.y" +#line 340 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 24: /* Line 1806 of yacc.c */ -#line 341 "awkgram.y" +#line 342 "awkgram.y" { yyerror(_("`%s' is a built-in function, it cannot be redefined"), tokstart); @@ -2281,14 +2282,14 @@ yyreduce: case 25: /* Line 1806 of yacc.c */ -#line 347 "awkgram.y" +#line 348 "awkgram.y" { (yyval) = (yyvsp[(2) - (2)]); } break; case 28: /* Line 1806 of yacc.c */ -#line 357 "awkgram.y" +#line 358 "awkgram.y" { (yyvsp[(1) - (6)])->source_file = source; if (install_function((yyvsp[(2) - (6)])->lextok, (yyvsp[(1) - (6)]), (yyvsp[(4) - (6)])) < 0) @@ -2304,14 +2305,14 @@ yyreduce: case 29: /* Line 1806 of yacc.c */ -#line 375 "awkgram.y" +#line 376 "awkgram.y" { ++want_regexp; } break; case 30: /* Line 1806 of yacc.c */ -#line 377 "awkgram.y" +#line 378 "awkgram.y" { NODE *n, *exp; char *re; @@ -2345,21 +2346,21 @@ yyreduce: case 31: /* Line 1806 of yacc.c */ -#line 409 "awkgram.y" +#line 410 "awkgram.y" { bcfree((yyvsp[(1) - (1)])); } break; case 33: /* Line 1806 of yacc.c */ -#line 415 "awkgram.y" +#line 416 "awkgram.y" { (yyval) = NULL; } break; case 34: /* Line 1806 of yacc.c */ -#line 417 "awkgram.y" +#line 418 "awkgram.y" { if ((yyvsp[(2) - (2)]) == NULL) (yyval) = (yyvsp[(1) - (2)]); @@ -2377,30 +2378,30 @@ yyreduce: case 35: /* Line 1806 of yacc.c */ -#line 430 "awkgram.y" +#line 431 "awkgram.y" { (yyval) = NULL; } break; case 38: /* Line 1806 of yacc.c */ -#line 440 "awkgram.y" +#line 441 "awkgram.y" { (yyval) = NULL; } break; case 39: /* Line 1806 of yacc.c */ -#line 442 "awkgram.y" +#line 443 "awkgram.y" { (yyval) = (yyvsp[(2) - (3)]); } break; case 40: /* Line 1806 of yacc.c */ -#line 444 "awkgram.y" +#line 445 "awkgram.y" { - if (do_profiling) + if (do_pretty_print) (yyval) = list_prepend((yyvsp[(1) - (1)]), instruction(Op_exec_count)); else (yyval) = (yyvsp[(1) - (1)]); @@ -2410,7 +2411,7 @@ yyreduce: case 41: /* Line 1806 of yacc.c */ -#line 451 "awkgram.y" +#line 452 "awkgram.y" { INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt; INSTRUCTION *ip, *nextc, *tbreak; @@ -2469,7 +2470,7 @@ yyreduce: else dflt->target_jmp = casestmt->nexti; - if (do_profiling) { + if (do_pretty_print) { curr->stmt_start = casestmt->nexti; curr->stmt_end = casestmt->lasti; (void) list_prepend(cexp, curr); @@ -2484,7 +2485,7 @@ yyreduce: efree(case_values); ip = (yyvsp[(3) - (9)]); - if (do_profiling) { + if (do_pretty_print) { (void) list_prepend(ip, (yyvsp[(1) - (9)])); (void) list_prepend(ip, instruction(Op_exec_count)); (yyvsp[(1) - (9)])->target_break = tbreak; @@ -2505,7 +2506,7 @@ yyreduce: case 42: /* Line 1806 of yacc.c */ -#line 541 "awkgram.y" +#line 542 "awkgram.y" { /* * ----------------- @@ -2528,7 +2529,7 @@ yyreduce: ip = list_append((yyvsp[(3) - (6)]), instruction(Op_jmp_false)); ip->lasti->target_jmp = tbreak; - if (do_profiling) { + if (do_pretty_print) { (void) list_append(ip, instruction(Op_exec_count)); (yyvsp[(1) - (6)])->target_break = tbreak; (yyvsp[(1) - (6)])->target_continue = tcont; @@ -2552,7 +2553,7 @@ yyreduce: case 43: /* Line 1806 of yacc.c */ -#line 583 "awkgram.y" +#line 584 "awkgram.y" { /* * ----------------- @@ -2575,7 +2576,7 @@ yyreduce: ip = list_merge((yyvsp[(3) - (8)]), (yyvsp[(6) - (8)])); else ip = list_prepend((yyvsp[(6) - (8)]), instruction(Op_no_op)); - if (do_profiling) + if (do_pretty_print) (void) list_prepend(ip, instruction(Op_exec_count)); (void) list_append(ip, instruction(Op_jmp_true)); ip->lasti->target_jmp = ip->nexti; @@ -2585,7 +2586,7 @@ yyreduce: continue_allowed--; fix_break_continue(ip, tbreak, tcont); - if (do_profiling) { + if (do_pretty_print) { (yyvsp[(1) - (8)])->target_break = tbreak; (yyvsp[(1) - (8)])->target_continue = tcont; ((yyvsp[(1) - (8)]) + 1)->doloop_cond = tcont; @@ -2599,7 +2600,7 @@ yyreduce: case 44: /* Line 1806 of yacc.c */ -#line 625 "awkgram.y" +#line 626 "awkgram.y" { INSTRUCTION *ip; char *var_name = (yyvsp[(3) - (8)])->lextok; @@ -2673,7 +2674,7 @@ regular_loop: (yyvsp[(3) - (8)])->target_jmp = tbreak; (void) list_append(ip, (yyvsp[(3) - (8)])); - if (do_profiling) { + if (do_pretty_print) { (yyvsp[(1) - (8)])->opcode = Op_K_arrayfor; (yyvsp[(1) - (8)])->target_continue = tcont; (yyvsp[(1) - (8)])->target_break = tbreak; @@ -2694,7 +2695,7 @@ regular_loop: ip->lasti->assign_var = (yyvsp[(4) - (8)])->array_var->var_assign; } - if (do_profiling) { + if (do_pretty_print) { (void) list_append(ip, instruction(Op_exec_count)); ((yyvsp[(1) - (8)]) + 1)->forloop_cond = (yyvsp[(4) - (8)]); ((yyvsp[(1) - (8)]) + 1)->forloop_body = ip->lasti; @@ -2717,7 +2718,7 @@ regular_loop: case 45: /* Line 1806 of yacc.c */ -#line 738 "awkgram.y" +#line 739 "awkgram.y" { (yyval) = mk_for_loop((yyvsp[(1) - (12)]), (yyvsp[(3) - (12)]), (yyvsp[(6) - (12)]), (yyvsp[(9) - (12)]), (yyvsp[(12) - (12)])); @@ -2729,7 +2730,7 @@ regular_loop: case 46: /* Line 1806 of yacc.c */ -#line 745 "awkgram.y" +#line 746 "awkgram.y" { (yyval) = mk_for_loop((yyvsp[(1) - (11)]), (yyvsp[(3) - (11)]), (INSTRUCTION *) NULL, (yyvsp[(8) - (11)]), (yyvsp[(11) - (11)])); @@ -2741,9 +2742,9 @@ regular_loop: case 47: /* Line 1806 of yacc.c */ -#line 752 "awkgram.y" +#line 753 "awkgram.y" { - if (do_profiling) + if (do_pretty_print) (yyval) = list_prepend((yyvsp[(1) - (1)]), instruction(Op_exec_count)); else (yyval) = (yyvsp[(1) - (1)]); @@ -2753,7 +2754,7 @@ regular_loop: case 48: /* Line 1806 of yacc.c */ -#line 762 "awkgram.y" +#line 763 "awkgram.y" { if (! break_allowed) error_ln((yyvsp[(1) - (2)])->source_line, @@ -2767,7 +2768,7 @@ regular_loop: case 49: /* Line 1806 of yacc.c */ -#line 771 "awkgram.y" +#line 772 "awkgram.y" { if (! continue_allowed) error_ln((yyvsp[(1) - (2)])->source_line, @@ -2781,7 +2782,7 @@ regular_loop: case 50: /* Line 1806 of yacc.c */ -#line 780 "awkgram.y" +#line 781 "awkgram.y" { /* if inside function (rule = 0), resolve context at run-time */ if (rule && rule != Rule) @@ -2795,7 +2796,7 @@ regular_loop: case 51: /* Line 1806 of yacc.c */ -#line 789 "awkgram.y" +#line 790 "awkgram.y" { if (do_traditional) error_ln((yyvsp[(1) - (2)])->source_line, @@ -2815,7 +2816,7 @@ regular_loop: case 52: /* Line 1806 of yacc.c */ -#line 804 "awkgram.y" +#line 805 "awkgram.y" { /* Initialize the two possible jump targets, the actual target * is resolved at run-time. @@ -2835,7 +2836,7 @@ regular_loop: case 53: /* Line 1806 of yacc.c */ -#line 819 "awkgram.y" +#line 820 "awkgram.y" { if (! in_function) yyerror(_("`return' used outside function context")); @@ -2845,7 +2846,7 @@ regular_loop: case 54: /* Line 1806 of yacc.c */ -#line 822 "awkgram.y" +#line 823 "awkgram.y" { if ((yyvsp[(3) - (4)]) == NULL) { (yyval) = list_create((yyvsp[(1) - (4)])); @@ -2871,14 +2872,14 @@ regular_loop: case 56: /* Line 1806 of yacc.c */ -#line 854 "awkgram.y" +#line 855 "awkgram.y" { in_print = TRUE; in_parens = 0; } break; case 57: /* Line 1806 of yacc.c */ -#line 855 "awkgram.y" +#line 856 "awkgram.y" { /* * Optimization: plain `print' has no expression list, so $3 is null. @@ -2976,14 +2977,14 @@ regular_loop: case 58: /* Line 1806 of yacc.c */ -#line 948 "awkgram.y" +#line 949 "awkgram.y" { sub_counter = 0; } break; case 59: /* Line 1806 of yacc.c */ -#line 949 "awkgram.y" +#line 950 "awkgram.y" { char *arr = (yyvsp[(2) - (4)])->lextok; @@ -3013,7 +3014,7 @@ regular_loop: case 60: /* Line 1806 of yacc.c */ -#line 978 "awkgram.y" +#line 979 "awkgram.y" { static short warned = FALSE; char *arr = (yyvsp[(3) - (4)])->lextok; @@ -3037,35 +3038,35 @@ regular_loop: case 61: /* Line 1806 of yacc.c */ -#line 997 "awkgram.y" +#line 998 "awkgram.y" { (yyval) = optimize_assignment((yyvsp[(1) - (1)])); } break; case 62: /* Line 1806 of yacc.c */ -#line 1002 "awkgram.y" +#line 1003 "awkgram.y" { (yyval) = NULL; } break; case 63: /* Line 1806 of yacc.c */ -#line 1004 "awkgram.y" +#line 1005 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 64: /* Line 1806 of yacc.c */ -#line 1009 "awkgram.y" +#line 1010 "awkgram.y" { (yyval) = NULL; } break; case 65: /* Line 1806 of yacc.c */ -#line 1011 "awkgram.y" +#line 1012 "awkgram.y" { if ((yyvsp[(1) - (2)]) == NULL) (yyval) = list_create((yyvsp[(2) - (2)])); @@ -3077,19 +3078,19 @@ regular_loop: case 66: /* Line 1806 of yacc.c */ -#line 1018 "awkgram.y" +#line 1019 "awkgram.y" { (yyval) = NULL; } break; case 67: /* Line 1806 of yacc.c */ -#line 1023 "awkgram.y" +#line 1024 "awkgram.y" { INSTRUCTION *casestmt = (yyvsp[(5) - (5)]); if ((yyvsp[(5) - (5)]) == NULL) casestmt = list_create(instruction(Op_no_op)); - if (do_profiling) + if (do_pretty_print) (void) list_prepend(casestmt, instruction(Op_exec_count)); (yyvsp[(1) - (5)])->case_exp = (yyvsp[(2) - (5)]); (yyvsp[(1) - (5)])->case_stmt = casestmt; @@ -3101,12 +3102,12 @@ regular_loop: case 68: /* Line 1806 of yacc.c */ -#line 1035 "awkgram.y" +#line 1036 "awkgram.y" { INSTRUCTION *casestmt = (yyvsp[(4) - (4)]); if ((yyvsp[(4) - (4)]) == NULL) casestmt = list_create(instruction(Op_no_op)); - if (do_profiling) + if (do_pretty_print) (void) list_prepend(casestmt, instruction(Op_exec_count)); bcfree((yyvsp[(2) - (4)])); (yyvsp[(1) - (4)])->case_stmt = casestmt; @@ -3117,14 +3118,14 @@ regular_loop: case 69: /* Line 1806 of yacc.c */ -#line 1049 "awkgram.y" +#line 1050 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 70: /* Line 1806 of yacc.c */ -#line 1051 "awkgram.y" +#line 1052 "awkgram.y" { (yyvsp[(2) - (2)])->memory->numbr = -(force_number((yyvsp[(2) - (2)])->memory)); bcfree((yyvsp[(1) - (2)])); @@ -3135,7 +3136,7 @@ regular_loop: case 71: /* Line 1806 of yacc.c */ -#line 1057 "awkgram.y" +#line 1058 "awkgram.y" { bcfree((yyvsp[(1) - (2)])); (yyval) = (yyvsp[(2) - (2)]); @@ -3145,14 +3146,14 @@ regular_loop: case 72: /* Line 1806 of yacc.c */ -#line 1062 "awkgram.y" +#line 1063 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 73: /* Line 1806 of yacc.c */ -#line 1064 "awkgram.y" +#line 1065 "awkgram.y" { (yyvsp[(1) - (1)])->opcode = Op_push_re; (yyval) = (yyvsp[(1) - (1)]); @@ -3162,21 +3163,21 @@ regular_loop: case 74: /* Line 1806 of yacc.c */ -#line 1072 "awkgram.y" +#line 1073 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 75: /* Line 1806 of yacc.c */ -#line 1074 "awkgram.y" +#line 1075 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 77: /* Line 1806 of yacc.c */ -#line 1084 "awkgram.y" +#line 1085 "awkgram.y" { (yyval) = (yyvsp[(2) - (3)]); } @@ -3185,7 +3186,7 @@ regular_loop: case 78: /* Line 1806 of yacc.c */ -#line 1091 "awkgram.y" +#line 1092 "awkgram.y" { in_print = FALSE; in_parens = 0; @@ -3196,14 +3197,14 @@ regular_loop: case 79: /* Line 1806 of yacc.c */ -#line 1096 "awkgram.y" +#line 1097 "awkgram.y" { in_print = FALSE; in_parens = 0; } break; case 80: /* Line 1806 of yacc.c */ -#line 1097 "awkgram.y" +#line 1098 "awkgram.y" { if ((yyvsp[(1) - (3)])->redir_type == redirect_twoway && (yyvsp[(3) - (3)])->lasti->opcode == Op_K_getline_redir @@ -3216,7 +3217,7 @@ regular_loop: case 81: /* Line 1806 of yacc.c */ -#line 1108 "awkgram.y" +#line 1109 "awkgram.y" { (yyval) = mk_condition((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]), (yyvsp[(6) - (6)]), NULL, NULL); } @@ -3225,7 +3226,7 @@ regular_loop: case 82: /* Line 1806 of yacc.c */ -#line 1113 "awkgram.y" +#line 1114 "awkgram.y" { (yyval) = mk_condition((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]), (yyvsp[(6) - (9)]), (yyvsp[(7) - (9)]), (yyvsp[(9) - (9)])); } @@ -3234,14 +3235,14 @@ regular_loop: case 87: /* Line 1806 of yacc.c */ -#line 1130 "awkgram.y" +#line 1131 "awkgram.y" { (yyval) = NULL; } break; case 88: /* Line 1806 of yacc.c */ -#line 1132 "awkgram.y" +#line 1133 "awkgram.y" { bcfree((yyvsp[(1) - (2)])); (yyval) = (yyvsp[(2) - (2)]); @@ -3251,21 +3252,21 @@ regular_loop: case 89: /* Line 1806 of yacc.c */ -#line 1140 "awkgram.y" +#line 1141 "awkgram.y" { (yyval) = NULL; } break; case 90: /* Line 1806 of yacc.c */ -#line 1142 "awkgram.y" +#line 1143 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]) ; } break; case 91: /* Line 1806 of yacc.c */ -#line 1147 "awkgram.y" +#line 1148 "awkgram.y" { (yyvsp[(1) - (1)])->param_count = 0; (yyval) = list_create((yyvsp[(1) - (1)])); @@ -3275,7 +3276,7 @@ regular_loop: case 92: /* Line 1806 of yacc.c */ -#line 1152 "awkgram.y" +#line 1153 "awkgram.y" { (yyvsp[(3) - (3)])->param_count = (yyvsp[(1) - (3)])->lasti->param_count + 1; (yyval) = list_append((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); @@ -3286,63 +3287,63 @@ regular_loop: case 93: /* Line 1806 of yacc.c */ -#line 1158 "awkgram.y" +#line 1159 "awkgram.y" { (yyval) = NULL; } break; case 94: /* Line 1806 of yacc.c */ -#line 1160 "awkgram.y" +#line 1161 "awkgram.y" { (yyval) = (yyvsp[(1) - (2)]); } break; case 95: /* Line 1806 of yacc.c */ -#line 1162 "awkgram.y" +#line 1163 "awkgram.y" { (yyval) = (yyvsp[(1) - (3)]); } break; case 96: /* Line 1806 of yacc.c */ -#line 1168 "awkgram.y" +#line 1169 "awkgram.y" { (yyval) = NULL; } break; case 97: /* Line 1806 of yacc.c */ -#line 1170 "awkgram.y" +#line 1171 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 98: /* Line 1806 of yacc.c */ -#line 1175 "awkgram.y" +#line 1176 "awkgram.y" { (yyval) = NULL; } break; case 99: /* Line 1806 of yacc.c */ -#line 1177 "awkgram.y" +#line 1178 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 100: /* Line 1806 of yacc.c */ -#line 1182 "awkgram.y" +#line 1183 "awkgram.y" { (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); } break; case 101: /* Line 1806 of yacc.c */ -#line 1184 "awkgram.y" +#line 1185 "awkgram.y" { (yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); yyerrok; @@ -3352,35 +3353,35 @@ regular_loop: case 102: /* Line 1806 of yacc.c */ -#line 1189 "awkgram.y" +#line 1190 "awkgram.y" { (yyval) = NULL; } break; case 103: /* Line 1806 of yacc.c */ -#line 1191 "awkgram.y" +#line 1192 "awkgram.y" { (yyval) = NULL; } break; case 104: /* Line 1806 of yacc.c */ -#line 1193 "awkgram.y" +#line 1194 "awkgram.y" { (yyval) = NULL; } break; case 105: /* Line 1806 of yacc.c */ -#line 1195 "awkgram.y" +#line 1196 "awkgram.y" { (yyval) = NULL; } break; case 106: /* Line 1806 of yacc.c */ -#line 1201 "awkgram.y" +#line 1202 "awkgram.y" { if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec) lintwarn_ln((yyvsp[(2) - (3)])->source_line, @@ -3392,21 +3393,21 @@ regular_loop: case 107: /* Line 1806 of yacc.c */ -#line 1208 "awkgram.y" +#line 1209 "awkgram.y" { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 108: /* Line 1806 of yacc.c */ -#line 1210 "awkgram.y" +#line 1211 "awkgram.y" { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 109: /* Line 1806 of yacc.c */ -#line 1212 "awkgram.y" +#line 1213 "awkgram.y" { if ((yyvsp[(1) - (3)])->lasti->opcode == Op_match_rec) warning_ln((yyvsp[(2) - (3)])->source_line, @@ -3427,7 +3428,7 @@ regular_loop: case 110: /* Line 1806 of yacc.c */ -#line 1228 "awkgram.y" +#line 1229 "awkgram.y" { if (do_lint_old) warning_ln((yyvsp[(2) - (3)])->source_line, @@ -3442,7 +3443,7 @@ regular_loop: case 111: /* Line 1806 of yacc.c */ -#line 1238 "awkgram.y" +#line 1239 "awkgram.y" { if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec) lintwarn_ln((yyvsp[(2) - (3)])->source_line, @@ -3454,35 +3455,35 @@ regular_loop: case 112: /* Line 1806 of yacc.c */ -#line 1245 "awkgram.y" +#line 1246 "awkgram.y" { (yyval) = mk_condition((yyvsp[(1) - (5)]), (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), (yyvsp[(5) - (5)])); } break; case 113: /* Line 1806 of yacc.c */ -#line 1247 "awkgram.y" +#line 1248 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 114: /* Line 1806 of yacc.c */ -#line 1252 "awkgram.y" +#line 1253 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 115: /* Line 1806 of yacc.c */ -#line 1254 "awkgram.y" +#line 1255 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 116: /* Line 1806 of yacc.c */ -#line 1256 "awkgram.y" +#line 1257 "awkgram.y" { (yyvsp[(2) - (2)])->opcode = Op_assign_quotient; (yyval) = (yyvsp[(2) - (2)]); @@ -3492,49 +3493,49 @@ regular_loop: case 117: /* Line 1806 of yacc.c */ -#line 1264 "awkgram.y" +#line 1265 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 118: /* Line 1806 of yacc.c */ -#line 1266 "awkgram.y" +#line 1267 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 119: /* Line 1806 of yacc.c */ -#line 1271 "awkgram.y" +#line 1272 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 120: /* Line 1806 of yacc.c */ -#line 1273 "awkgram.y" +#line 1274 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 121: /* Line 1806 of yacc.c */ -#line 1278 "awkgram.y" +#line 1279 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 122: /* Line 1806 of yacc.c */ -#line 1280 "awkgram.y" +#line 1281 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 123: /* Line 1806 of yacc.c */ -#line 1282 "awkgram.y" +#line 1283 "awkgram.y" { int count = 2; int is_simple_var = FALSE; @@ -3586,49 +3587,49 @@ regular_loop: case 125: /* Line 1806 of yacc.c */ -#line 1334 "awkgram.y" +#line 1335 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 126: /* Line 1806 of yacc.c */ -#line 1336 "awkgram.y" +#line 1337 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 127: /* Line 1806 of yacc.c */ -#line 1338 "awkgram.y" +#line 1339 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 128: /* Line 1806 of yacc.c */ -#line 1340 "awkgram.y" +#line 1341 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 129: /* Line 1806 of yacc.c */ -#line 1342 "awkgram.y" +#line 1343 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 130: /* Line 1806 of yacc.c */ -#line 1344 "awkgram.y" +#line 1345 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 131: /* Line 1806 of yacc.c */ -#line 1346 "awkgram.y" +#line 1347 "awkgram.y" { /* * In BEGINFILE/ENDFILE, allow `getline var < file' @@ -3656,7 +3657,7 @@ regular_loop: case 132: /* Line 1806 of yacc.c */ -#line 1369 "awkgram.y" +#line 1370 "awkgram.y" { (yyvsp[(2) - (2)])->opcode = Op_postincrement; (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)])); @@ -3666,7 +3667,7 @@ regular_loop: case 133: /* Line 1806 of yacc.c */ -#line 1374 "awkgram.y" +#line 1375 "awkgram.y" { (yyvsp[(2) - (2)])->opcode = Op_postdecrement; (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)])); @@ -3676,7 +3677,7 @@ regular_loop: case 134: /* Line 1806 of yacc.c */ -#line 1379 "awkgram.y" +#line 1380 "awkgram.y" { if (do_lint_old) { warning_ln((yyvsp[(4) - (5)])->source_line, @@ -3701,7 +3702,7 @@ regular_loop: case 135: /* Line 1806 of yacc.c */ -#line 1404 "awkgram.y" +#line 1405 "awkgram.y" { (yyval) = mk_getline((yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]), (yyvsp[(2) - (4)])->redir_type); bcfree((yyvsp[(2) - (4)])); @@ -3711,49 +3712,49 @@ regular_loop: case 136: /* Line 1806 of yacc.c */ -#line 1410 "awkgram.y" +#line 1411 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 137: /* Line 1806 of yacc.c */ -#line 1412 "awkgram.y" +#line 1413 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 138: /* Line 1806 of yacc.c */ -#line 1414 "awkgram.y" +#line 1415 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 139: /* Line 1806 of yacc.c */ -#line 1416 "awkgram.y" +#line 1417 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 140: /* Line 1806 of yacc.c */ -#line 1418 "awkgram.y" +#line 1419 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 141: /* Line 1806 of yacc.c */ -#line 1420 "awkgram.y" +#line 1421 "awkgram.y" { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); } break; case 142: /* Line 1806 of yacc.c */ -#line 1425 "awkgram.y" +#line 1426 "awkgram.y" { (yyval) = list_create((yyvsp[(1) - (1)])); } @@ -3762,7 +3763,7 @@ regular_loop: case 143: /* Line 1806 of yacc.c */ -#line 1429 "awkgram.y" +#line 1430 "awkgram.y" { if ((yyvsp[(2) - (2)])->opcode == Op_match_rec) { (yyvsp[(2) - (2)])->opcode = Op_nomatch; @@ -3798,14 +3799,14 @@ regular_loop: case 144: /* Line 1806 of yacc.c */ -#line 1460 "awkgram.y" +#line 1461 "awkgram.y" { (yyval) = (yyvsp[(2) - (3)]); } break; case 145: /* Line 1806 of yacc.c */ -#line 1462 "awkgram.y" +#line 1463 "awkgram.y" { (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)])); if ((yyval) == NULL) @@ -3816,7 +3817,7 @@ regular_loop: case 146: /* Line 1806 of yacc.c */ -#line 1468 "awkgram.y" +#line 1469 "awkgram.y" { (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)])); if ((yyval) == NULL) @@ -3827,7 +3828,7 @@ regular_loop: case 147: /* Line 1806 of yacc.c */ -#line 1474 "awkgram.y" +#line 1475 "awkgram.y" { static short warned1 = FALSE; @@ -3845,7 +3846,7 @@ regular_loop: case 150: /* Line 1806 of yacc.c */ -#line 1489 "awkgram.y" +#line 1490 "awkgram.y" { (yyvsp[(1) - (2)])->opcode = Op_preincrement; (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)])); @@ -3855,7 +3856,7 @@ regular_loop: case 151: /* Line 1806 of yacc.c */ -#line 1494 "awkgram.y" +#line 1495 "awkgram.y" { (yyvsp[(1) - (2)])->opcode = Op_predecrement; (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)])); @@ -3865,7 +3866,7 @@ regular_loop: case 152: /* Line 1806 of yacc.c */ -#line 1499 "awkgram.y" +#line 1500 "awkgram.y" { (yyval) = list_create((yyvsp[(1) - (1)])); } @@ -3874,7 +3875,7 @@ regular_loop: case 153: /* Line 1806 of yacc.c */ -#line 1503 "awkgram.y" +#line 1504 "awkgram.y" { (yyval) = list_create((yyvsp[(1) - (1)])); } @@ -3883,7 +3884,7 @@ regular_loop: case 154: /* Line 1806 of yacc.c */ -#line 1507 "awkgram.y" +#line 1508 "awkgram.y" { if ((yyvsp[(2) - (2)])->lasti->opcode == Op_push_i && ((yyvsp[(2) - (2)])->lasti->memory->flags & (STRCUR|STRING)) == 0 @@ -3901,7 +3902,7 @@ regular_loop: case 155: /* Line 1806 of yacc.c */ -#line 1520 "awkgram.y" +#line 1521 "awkgram.y" { /* * was: $$ = $2 @@ -3916,7 +3917,7 @@ regular_loop: case 156: /* Line 1806 of yacc.c */ -#line 1533 "awkgram.y" +#line 1534 "awkgram.y" { func_use((yyvsp[(1) - (1)])->lasti->func_name, FUNC_USE); (yyval) = (yyvsp[(1) - (1)]); @@ -3926,7 +3927,7 @@ regular_loop: case 157: /* Line 1806 of yacc.c */ -#line 1538 "awkgram.y" +#line 1539 "awkgram.y" { /* indirect function call */ INSTRUCTION *f, *t; @@ -3964,7 +3965,7 @@ regular_loop: case 158: /* Line 1806 of yacc.c */ -#line 1574 "awkgram.y" +#line 1575 "awkgram.y" { param_sanity((yyvsp[(3) - (4)])); (yyvsp[(1) - (4)])->opcode = Op_func_call; @@ -3983,42 +3984,42 @@ regular_loop: case 159: /* Line 1806 of yacc.c */ -#line 1591 "awkgram.y" +#line 1592 "awkgram.y" { (yyval) = NULL; } break; case 160: /* Line 1806 of yacc.c */ -#line 1593 "awkgram.y" +#line 1594 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 161: /* Line 1806 of yacc.c */ -#line 1598 "awkgram.y" +#line 1599 "awkgram.y" { (yyval) = NULL; } break; case 162: /* Line 1806 of yacc.c */ -#line 1600 "awkgram.y" +#line 1601 "awkgram.y" { (yyval) = (yyvsp[(1) - (2)]); } break; case 163: /* Line 1806 of yacc.c */ -#line 1605 "awkgram.y" +#line 1606 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 164: /* Line 1806 of yacc.c */ -#line 1607 "awkgram.y" +#line 1608 "awkgram.y" { (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); } @@ -4027,7 +4028,7 @@ regular_loop: case 165: /* Line 1806 of yacc.c */ -#line 1614 "awkgram.y" +#line 1615 "awkgram.y" { INSTRUCTION *ip = (yyvsp[(1) - (1)])->lasti; int count = ip->sub_count; /* # of SUBSEP-seperated expressions */ @@ -4046,7 +4047,7 @@ regular_loop: case 166: /* Line 1806 of yacc.c */ -#line 1631 "awkgram.y" +#line 1632 "awkgram.y" { INSTRUCTION *t = (yyvsp[(2) - (3)]); if ((yyvsp[(2) - (3)]) == NULL) { @@ -4065,14 +4066,14 @@ regular_loop: case 167: /* Line 1806 of yacc.c */ -#line 1648 "awkgram.y" +#line 1649 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 168: /* Line 1806 of yacc.c */ -#line 1650 "awkgram.y" +#line 1651 "awkgram.y" { (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); } @@ -4081,14 +4082,14 @@ regular_loop: case 169: /* Line 1806 of yacc.c */ -#line 1657 "awkgram.y" +#line 1658 "awkgram.y" { (yyval) = (yyvsp[(1) - (2)]); } break; case 170: /* Line 1806 of yacc.c */ -#line 1662 "awkgram.y" +#line 1663 "awkgram.y" { char *var_name = (yyvsp[(1) - (1)])->lextok; @@ -4101,7 +4102,7 @@ regular_loop: case 171: /* Line 1806 of yacc.c */ -#line 1670 "awkgram.y" +#line 1671 "awkgram.y" { char *arr = (yyvsp[(1) - (2)])->lextok; (yyvsp[(1) - (2)])->memory = variable((yyvsp[(1) - (2)])->source_line, arr, Node_var_new); @@ -4113,7 +4114,7 @@ regular_loop: case 172: /* Line 1806 of yacc.c */ -#line 1680 "awkgram.y" +#line 1681 "awkgram.y" { INSTRUCTION *ip = (yyvsp[(1) - (1)])->nexti; if (ip->opcode == Op_push @@ -4130,7 +4131,7 @@ regular_loop: case 173: /* Line 1806 of yacc.c */ -#line 1692 "awkgram.y" +#line 1693 "awkgram.y" { (yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)])); if ((yyvsp[(3) - (3)]) != NULL) @@ -4141,7 +4142,7 @@ regular_loop: case 174: /* Line 1806 of yacc.c */ -#line 1701 "awkgram.y" +#line 1702 "awkgram.y" { (yyvsp[(1) - (1)])->opcode = Op_postincrement; } @@ -4150,7 +4151,7 @@ regular_loop: case 175: /* Line 1806 of yacc.c */ -#line 1705 "awkgram.y" +#line 1706 "awkgram.y" { (yyvsp[(1) - (1)])->opcode = Op_postdecrement; } @@ -4159,49 +4160,49 @@ regular_loop: case 176: /* Line 1806 of yacc.c */ -#line 1708 "awkgram.y" +#line 1709 "awkgram.y" { (yyval) = NULL; } break; case 178: /* Line 1806 of yacc.c */ -#line 1716 "awkgram.y" +#line 1717 "awkgram.y" { yyerrok; } break; case 179: /* Line 1806 of yacc.c */ -#line 1720 "awkgram.y" +#line 1721 "awkgram.y" { yyerrok; } break; case 182: /* Line 1806 of yacc.c */ -#line 1729 "awkgram.y" +#line 1730 "awkgram.y" { yyerrok; } break; case 183: /* Line 1806 of yacc.c */ -#line 1733 "awkgram.y" +#line 1734 "awkgram.y" { (yyval) = (yyvsp[(1) - (1)]); yyerrok; } break; case 184: /* Line 1806 of yacc.c */ -#line 1737 "awkgram.y" +#line 1738 "awkgram.y" { yyerrok; } break; /* Line 1806 of yacc.c */ -#line 4217 "awkgram.c" +#line 4218 "awkgram.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4432,7 +4433,7 @@ yyreturn: /* Line 2067 of yacc.c */ -#line 1739 "awkgram.y" +#line 1740 "awkgram.y" struct token { @@ -4607,7 +4608,7 @@ print_included_from() line--; msg("%s %s:%d%c", s->prev == sourcefile ? "In file included from" - : " from", + : " from", (s->stype == SRC_INC || s->stype == SRC_FILE) ? s->src : "cmd. line", line, @@ -4889,7 +4890,10 @@ parse_program(INSTRUCTION **pcode) ip_atexit = instruction(Op_atexit); /* target for `exit' in END block */ } - sourcefile = srcfiles->next; + for (sourcefile = srcfiles->next; sourcefile->stype == SRC_EXTLIB; + sourcefile = sourcefile->next) + ; + lexeof = FALSE; lexptr = NULL; lasttok = 0; @@ -4906,6 +4910,11 @@ parse_program(INSTRUCTION **pcode) if (ret == 0) /* avoid spurious warning if parser aborted with YYABORT */ check_funcs(); + if (args_array == NULL) + emalloc(args_array, NODE **, (max_args + 2) * sizeof(NODE *), "parse_program"); + else + erealloc(args_array, NODE **, (max_args + 2) * sizeof(NODE *), "parse_program"); + return (ret || errcount); } @@ -4948,7 +4957,7 @@ add_srcfile(int stype, char *src, SRCFILE *thisfile, int *already_included, int if (stype == SRC_CMDLINE || stype == SRC_STDIN) return do_add_srcfile(stype, src, NULL, thisfile); - path = find_source(src, &sbuf, &errno_val); + path = find_source(src, & sbuf, &errno_val, stype == SRC_EXTLIB); if (path == NULL) { if (errcode) { *errcode = errno_val; @@ -4959,7 +4968,7 @@ add_srcfile(int stype, char *src, SRCFILE *thisfile, int *already_included, int } for (s = srcfiles->next; s != srcfiles; s = s->next) { - if ((s->stype == SRC_FILE || s->stype == SRC_INC) + if ((s->stype == SRC_FILE || s->stype == SRC_INC || s->stype == SRC_EXTLIB) && files_are_same(path, s) ) { if (do_lint) { @@ -5076,9 +5085,12 @@ next_sourcefile() sourcefile->lexptr_begin = NULL; } - sourcefile = sourcefile->next; - if (sourcefile == srcfiles) - return; + while ((sourcefile = sourcefile->next) != NULL) { + if (sourcefile == srcfiles) + return; + if (sourcefile->stype != SRC_EXTLIB) + break; + } if (sourcefile->lexptr_begin != NULL) { /* resume reading from already opened file (postponed to process '@include') */ @@ -6175,7 +6187,7 @@ retry: case LEX_WHILE: case LEX_DO: case LEX_SWITCH: - if (! do_profiling) + if (! do_pretty_print) return lasttok = class; /* fall through */ case LEX_CASE: @@ -6629,7 +6641,7 @@ mk_function(INSTRUCTION *fi, INSTRUCTION *def) def->lasti->memory = dupnode(Nnull_string); (void) list_append(def, instruction(Op_K_return)); - if (do_profiling) + if (do_pretty_print) (void) list_prepend(def, instruction(Op_exec_count)); /* fi->opcode = Op_func */ @@ -7254,7 +7266,7 @@ mk_condition(INSTRUCTION *cond, INSTRUCTION *ifp, INSTRUCTION *true_branch, if (false_branch == NULL) { false_branch = list_create(instruction(Op_no_op)); if (elsep != NULL) { /* else { } */ - if (do_profiling) + if (do_pretty_print) (void) list_prepend(false_branch, elsep); else bcfree(elsep); @@ -7265,7 +7277,7 @@ mk_condition(INSTRUCTION *cond, INSTRUCTION *ifp, INSTRUCTION *true_branch, /* avoid a series of no_op's: if .. else if .. else if .. */ if (false_branch->lasti->opcode != Op_no_op) (void) list_append(false_branch, instruction(Op_no_op)); - if (do_profiling) { + if (do_pretty_print) { (void) list_prepend(false_branch, elsep); false_branch->nexti->branch_end = false_branch->lasti; (void) list_prepend(false_branch, instruction(Op_exec_count)); @@ -7280,7 +7292,7 @@ mk_condition(INSTRUCTION *cond, INSTRUCTION *ifp, INSTRUCTION *true_branch, ip = list_append(cond, instruction(Op_jmp_false)); ip->lasti->target_jmp = false_branch->nexti->nexti; - if (do_profiling) { + if (do_pretty_print) { (void) list_prepend(ip, ifp); (void) list_append(ip, instruction(Op_exec_count)); ip->nexti->branch_if = ip->lasti; @@ -7342,7 +7354,7 @@ append_rule(INSTRUCTION *pattern, INSTRUCTION *action) if (rule != Rule) { rp = pattern; - if (do_profiling) + if (do_pretty_print) (void) list_append(action, instruction(Op_no_op)); (rp + 1)->firsti = action->nexti; (rp + 1)->lasti = action->lasti; @@ -7358,7 +7370,7 @@ append_rule(INSTRUCTION *pattern, INSTRUCTION *action) if (pattern == NULL) { /* assert(action != NULL); */ - if (do_profiling) + if (do_pretty_print) (void) list_prepend(action, instruction(Op_exec_count)); (rp + 1)->firsti = action->nexti; (rp + 1)->lasti = tp; @@ -7374,12 +7386,12 @@ append_rule(INSTRUCTION *pattern, INSTRUCTION *action) if (action == NULL) { (rp + 2)->last_line = find_line(pattern, LAST_LINE); action = list_create(instruction(Op_K_print_rec)); - if (do_profiling) + if (do_pretty_print) (void) list_prepend(action, instruction(Op_exec_count)); } else (rp + 2)->last_line = lastline; - if (do_profiling) { + if (do_pretty_print) { (void) list_prepend(pattern, instruction(Op_exec_count)); (void) list_prepend(action, instruction(Op_exec_count)); } @@ -7720,7 +7732,7 @@ mk_for_loop(INSTRUCTION *forp, INSTRUCTION *init, INSTRUCTION *cond, if (init != NULL) ip = list_merge(init, ip); - if (do_profiling) { + if (do_pretty_print) { (void) list_append(ip, instruction(Op_exec_count)); (forp + 1)->forloop_cond = pp_cond; (forp + 1)->forloop_body = ip->lasti; @@ -7742,7 +7754,7 @@ mk_for_loop(INSTRUCTION *forp, INSTRUCTION *init, INSTRUCTION *cond, ret = list_append(ip, tbreak); fix_break_continue(ret, tbreak, tcont); - if (do_profiling) { + if (do_pretty_print) { forp->target_break = tbreak; forp->target_continue = tcont; ret = list_prepend(ret, forp); |