From 4f68894fb05695b0e28838586d563227952c7000 Mon Sep 17 00:00:00 2001 From: Nick Downing Date: Mon, 23 Jul 2018 00:02:59 +1000 Subject: [PATCH] Introduce PLex.Section2.Rule.FLexRule which is always a pair of (expr, trailing context) rather than the old scheme which had an optional BOLRule inserted in --- src/parse.c | 294 ++++++++++++++++++++++++++-------------------------- src/parse.y | 8 +- 2 files changed, 153 insertions(+), 149 deletions(-) diff --git a/src/parse.c b/src/parse.c index 9324e86..f7848b9 100644 --- a/src/parse.c +++ b/src/parse.c @@ -594,14 +594,14 @@ static const yytype_uint16 yyrline[] = { 0, 118, 118, 148, 155, 161, 166, 167, 171, 179, 182, 186, 189, 192, 196, 199, 200, 203, 211, 217, - 225, 231, 237, 245, 250, 255, 259, 271, 309, 333, - 358, 363, 366, 372, 392, 405, 407, 409, 413, 440, - 496, 499, 544, 563, 571, 576, 603, 613, 616, 647, - 664, 689, 698, 706, 714, 745, 762, 784, 826, 844, - 854, 857, 865, 883, 889, 893, 898, 900, 909, 974, - 997, 1007, 1016, 1020, 1024, 1028, 1032, 1036, 1040, 1054, - 1058, 1062, 1066, 1070, 1085, 1089, 1093, 1097, 1101, 1105, - 1109, 1113, 1117, 1121, 1125, 1133, 1143, 1164 + 225, 231, 237, 245, 250, 255, 259, 271, 309, 335, + 360, 365, 368, 374, 394, 407, 409, 411, 415, 442, + 498, 501, 546, 565, 573, 578, 605, 615, 618, 649, + 666, 691, 700, 708, 716, 747, 764, 786, 828, 846, + 856, 859, 867, 885, 891, 895, 900, 902, 911, 976, + 999, 1009, 1018, 1022, 1026, 1030, 1034, 1038, 1042, 1056, + 1060, 1064, 1068, 1072, 1087, 1091, 1095, 1099, 1103, 1107, + 1111, 1115, 1119, 1123, 1127, 1135, 1145, 1166 }; #endif @@ -1748,8 +1748,8 @@ yyreduce: pinpoint_message( "'^' operator results in sub-optimal performance" ); } - insert_after(1, ""); - insert_before(0, ""); + insert_after(1, ""); + insert_before(0, ""); } #line 1725 "parse.c" /* yacc.c:1646 */ break; @@ -1777,12 +1777,14 @@ yyreduce: mkbranch( scset[i], pat ); } + insert_after(0, ""); + insert_before(0, ""); } -#line 1752 "parse.c" /* yacc.c:1646 */ +#line 1754 "parse.c" /* yacc.c:1646 */ break; case 29: -#line 334 "parse.y" /* yacc.c:1646 */ +#line 336 "parse.y" /* yacc.c:1646 */ { if ( scon_stk_ptr > 0 ) build_eof_action(); @@ -1803,35 +1805,35 @@ yyreduce: else build_eof_action(); } - insert_after(0, ""); + insert_after(0, ""); insert_before(0, ""); } -#line 1780 "parse.c" /* yacc.c:1646 */ +#line 1782 "parse.c" /* yacc.c:1646 */ break; case 30: -#line 359 "parse.y" /* yacc.c:1646 */ +#line 361 "parse.y" /* yacc.c:1646 */ { synerr( _("unrecognized rule") ); } -#line 1786 "parse.c" /* yacc.c:1646 */ +#line 1788 "parse.c" /* yacc.c:1646 */ break; case 31: -#line 363 "parse.y" /* yacc.c:1646 */ +#line 365 "parse.y" /* yacc.c:1646 */ { (yyval) = scon_stk_ptr; } -#line 1792 "parse.c" /* yacc.c:1646 */ +#line 1794 "parse.c" /* yacc.c:1646 */ break; case 32: -#line 367 "parse.y" /* yacc.c:1646 */ +#line 369 "parse.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-2]); /*}*/ insert_after(3, ""); insert_before(0, ""); } -#line 1801 "parse.c" /* yacc.c:1646 */ +#line 1803 "parse.c" /* yacc.c:1646 */ break; case 33: -#line 373 "parse.y" /* yacc.c:1646 */ +#line 375 "parse.y" /* yacc.c:1646 */ { (yyval) = scon_stk_ptr; @@ -1849,11 +1851,11 @@ yyreduce: insert_after(2, ""); insert_before(0, ""); } -#line 1823 "parse.c" /* yacc.c:1646 */ +#line 1825 "parse.c" /* yacc.c:1646 */ break; case 34: -#line 392 "parse.y" /* yacc.c:1646 */ +#line 394 "parse.y" /* yacc.c:1646 */ { (yyval) = scon_stk_ptr; /*}*/ /* in this case, want empty rule associated with stuff on the right of us */ /* therefore, move inter-token text from the right of us over to the left */ @@ -1865,17 +1867,17 @@ yyreduce: piece[piece2 - 1] = temp; insert_before(0, ""); } -#line 1839 "parse.c" /* yacc.c:1646 */ +#line 1841 "parse.c" /* yacc.c:1646 */ break; case 37: -#line 410 "parse.y" /* yacc.c:1646 */ +#line 412 "parse.y" /* yacc.c:1646 */ { synerr( _("bad start condition list") ); } -#line 1845 "parse.c" /* yacc.c:1646 */ +#line 1847 "parse.c" /* yacc.c:1646 */ break; case 38: -#line 414 "parse.y" /* yacc.c:1646 */ +#line 416 "parse.y" /* yacc.c:1646 */ { if ( (scnum = sclookup( nmstr )) == 0 ) format_pinpoint_message( @@ -1896,11 +1898,11 @@ yyreduce: scon_stk[++scon_stk_ptr] = scnum; } } -#line 1870 "parse.c" /* yacc.c:1646 */ +#line 1872 "parse.c" /* yacc.c:1646 */ break; case 39: -#line 441 "parse.y" /* yacc.c:1646 */ +#line 443 "parse.y" /* yacc.c:1646 */ { if ( transchar[lastst[(yyvsp[0])]] != SYM_EPSILON ) /* Provide final transition \now/ so it @@ -1955,17 +1957,17 @@ yyreduce: (yyval) = link_machines( (yyvsp[-1]), (yyvsp[0]) ); } -#line 1929 "parse.c" /* yacc.c:1646 */ +#line 1931 "parse.c" /* yacc.c:1646 */ break; case 40: -#line 497 "parse.y" /* yacc.c:1646 */ +#line 499 "parse.y" /* yacc.c:1646 */ { synerr( _("trailing context used twice") ); } -#line 1935 "parse.c" /* yacc.c:1646 */ +#line 1937 "parse.c" /* yacc.c:1646 */ break; case 41: -#line 500 "parse.y" /* yacc.c:1646 */ +#line 502 "parse.y" /* yacc.c:1646 */ { headcnt = 0; trailcnt = 1; @@ -2009,11 +2011,11 @@ yyreduce: insert_after(1, ""); insert_before(1, ""); } -#line 1983 "parse.c" /* yacc.c:1646 */ +#line 1985 "parse.c" /* yacc.c:1646 */ break; case 42: -#line 545 "parse.y" /* yacc.c:1646 */ +#line 547 "parse.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); @@ -2029,28 +2031,28 @@ yyreduce: } insert_after(0, ""); } -#line 2003 "parse.c" /* yacc.c:1646 */ +#line 2005 "parse.c" /* yacc.c:1646 */ break; case 43: -#line 564 "parse.y" /* yacc.c:1646 */ +#line 566 "parse.y" /* yacc.c:1646 */ { varlength = true; (yyval) = mkor( (yyvsp[-2]), (yyvsp[0]) ); insert_after(2, ""); insert_before(0, ""); } -#line 2014 "parse.c" /* yacc.c:1646 */ +#line 2016 "parse.c" /* yacc.c:1646 */ break; case 44: -#line 572 "parse.y" /* yacc.c:1646 */ +#line 574 "parse.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 2020 "parse.c" /* yacc.c:1646 */ +#line 2022 "parse.c" /* yacc.c:1646 */ break; case 45: -#line 577 "parse.y" /* yacc.c:1646 */ +#line 579 "parse.y" /* yacc.c:1646 */ { /* This rule is written separately so the * reduction will occur before the trailing @@ -2075,11 +2077,11 @@ yyreduce: current_state_type = STATE_TRAILING_CONTEXT; (yyval) = (yyvsp[-1]); } -#line 2049 "parse.c" /* yacc.c:1646 */ +#line 2051 "parse.c" /* yacc.c:1646 */ break; case 46: -#line 604 "parse.y" /* yacc.c:1646 */ +#line 606 "parse.y" /* yacc.c:1646 */ { /* This is where concatenation of adjacent patterns * gets done. @@ -2088,17 +2090,17 @@ yyreduce: insert_after(1, ""); insert_before(0, ""); } -#line 2062 "parse.c" /* yacc.c:1646 */ +#line 2064 "parse.c" /* yacc.c:1646 */ break; case 47: -#line 614 "parse.y" /* yacc.c:1646 */ +#line 616 "parse.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 2068 "parse.c" /* yacc.c:1646 */ +#line 2070 "parse.c" /* yacc.c:1646 */ break; case 48: -#line 617 "parse.y" /* yacc.c:1646 */ +#line 619 "parse.y" /* yacc.c:1646 */ { varlength = true; @@ -2128,11 +2130,11 @@ yyreduce: sprintf(piece_temp, "", (yyvsp[-3]), (yyvsp[-1])); insert_before(0, piece_temp); } -#line 2102 "parse.c" /* yacc.c:1646 */ +#line 2104 "parse.c" /* yacc.c:1646 */ break; case 49: -#line 648 "parse.y" /* yacc.c:1646 */ +#line 650 "parse.y" /* yacc.c:1646 */ { varlength = true; @@ -2148,11 +2150,11 @@ yyreduce: sprintf(piece_temp, "", (yyvsp[-2])); insert_before(0, piece_temp); } -#line 2122 "parse.c" /* yacc.c:1646 */ +#line 2124 "parse.c" /* yacc.c:1646 */ break; case 50: -#line 665 "parse.y" /* yacc.c:1646 */ +#line 667 "parse.y" /* yacc.c:1646 */ { /* The series could be something like "(foo)", * in which case we have no idea what its length @@ -2174,11 +2176,11 @@ yyreduce: sprintf(piece_temp, "", (yyvsp[-1]), (yyvsp[-1])); insert_before(0, piece_temp); } -#line 2148 "parse.c" /* yacc.c:1646 */ +#line 2150 "parse.c" /* yacc.c:1646 */ break; case 51: -#line 690 "parse.y" /* yacc.c:1646 */ +#line 692 "parse.y" /* yacc.c:1646 */ { varlength = true; @@ -2186,33 +2188,33 @@ yyreduce: insert_after(1, ""); insert_before(0, ""); } -#line 2160 "parse.c" /* yacc.c:1646 */ +#line 2162 "parse.c" /* yacc.c:1646 */ break; case 52: -#line 699 "parse.y" /* yacc.c:1646 */ +#line 701 "parse.y" /* yacc.c:1646 */ { varlength = true; (yyval) = mkposcl( (yyvsp[-1]) ); insert_after(1, ""); insert_before(0, ""); } -#line 2171 "parse.c" /* yacc.c:1646 */ +#line 2173 "parse.c" /* yacc.c:1646 */ break; case 53: -#line 707 "parse.y" /* yacc.c:1646 */ +#line 709 "parse.y" /* yacc.c:1646 */ { varlength = true; (yyval) = mkopt( (yyvsp[-1]) ); insert_after(1, ""); insert_before(0, ""); } -#line 2182 "parse.c" /* yacc.c:1646 */ +#line 2184 "parse.c" /* yacc.c:1646 */ break; case 54: -#line 715 "parse.y" /* yacc.c:1646 */ +#line 717 "parse.y" /* yacc.c:1646 */ { varlength = true; @@ -2242,11 +2244,11 @@ yyreduce: sprintf(piece_temp, "", (yyvsp[-3]), (yyvsp[-1])); insert_before(0, piece_temp); } -#line 2216 "parse.c" /* yacc.c:1646 */ +#line 2218 "parse.c" /* yacc.c:1646 */ break; case 55: -#line 746 "parse.y" /* yacc.c:1646 */ +#line 748 "parse.y" /* yacc.c:1646 */ { varlength = true; @@ -2262,11 +2264,11 @@ yyreduce: sprintf(piece_temp, "", (yyvsp[-2])); insert_before(0, piece_temp); } -#line 2236 "parse.c" /* yacc.c:1646 */ +#line 2238 "parse.c" /* yacc.c:1646 */ break; case 56: -#line 763 "parse.y" /* yacc.c:1646 */ +#line 765 "parse.y" /* yacc.c:1646 */ { /* The singleton could be something like "(foo)", * in which case we have no idea what its length @@ -2287,11 +2289,11 @@ yyreduce: sprintf(piece_temp, "", (yyvsp[-1]), (yyvsp[-1])); insert_before(0, piece_temp); } -#line 2261 "parse.c" /* yacc.c:1646 */ +#line 2263 "parse.c" /* yacc.c:1646 */ break; case 57: -#line 785 "parse.y" /* yacc.c:1646 */ +#line 787 "parse.y" /* yacc.c:1646 */ { if ( ! madeany ) { @@ -2332,11 +2334,11 @@ yyreduce: insert_before(0, ""); } } -#line 2306 "parse.c" /* yacc.c:1646 */ +#line 2308 "parse.c" /* yacc.c:1646 */ break; case 58: -#line 827 "parse.y" /* yacc.c:1646 */ +#line 829 "parse.y" /* yacc.c:1646 */ { /* Sort characters for fast searching. */ @@ -2353,11 +2355,11 @@ yyreduce: (yyval) = mkstate( -(yyvsp[0]) ); } -#line 2327 "parse.c" /* yacc.c:1646 */ +#line 2329 "parse.c" /* yacc.c:1646 */ break; case 59: -#line 845 "parse.y" /* yacc.c:1646 */ +#line 847 "parse.y" /* yacc.c:1646 */ { ++rulelen; @@ -2366,28 +2368,28 @@ yyreduce: (yyval) = mkstate( -(yyvsp[0]) ); } -#line 2340 "parse.c" /* yacc.c:1646 */ +#line 2342 "parse.c" /* yacc.c:1646 */ break; case 60: -#line 855 "parse.y" /* yacc.c:1646 */ +#line 857 "parse.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 2346 "parse.c" /* yacc.c:1646 */ +#line 2348 "parse.c" /* yacc.c:1646 */ break; case 61: -#line 858 "parse.y" /* yacc.c:1646 */ +#line 860 "parse.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); /*}*/ #if 0 /* for now do things in the traditional lex way without subexpressions */ insert_after(2, ""); insert_before(0, ""); #endif } -#line 2357 "parse.c" /* yacc.c:1646 */ +#line 2359 "parse.c" /* yacc.c:1646 */ break; case 62: -#line 866 "parse.y" /* yacc.c:1646 */ +#line 868 "parse.y" /* yacc.c:1646 */ { ++rulelen; @@ -2403,48 +2405,48 @@ yyreduce: sprintf(piece_temp, "", (yyvsp[0]), (yyvsp[0]) + 1); insert_before(0, piece_temp); } -#line 2377 "parse.c" /* yacc.c:1646 */ +#line 2379 "parse.c" /* yacc.c:1646 */ break; case 63: -#line 883 "parse.y" /* yacc.c:1646 */ +#line 885 "parse.y" /* yacc.c:1646 */ { (yyval) = ccl_set_diff ((yyvsp[-2]), (yyvsp[0])); /*}*/ insert_after(2, ""); insert_after(2, ""); insert_before(2, ""); insert_before(0, ""); } -#line 2388 "parse.c" /* yacc.c:1646 */ +#line 2390 "parse.c" /* yacc.c:1646 */ break; case 64: -#line 889 "parse.y" /* yacc.c:1646 */ +#line 891 "parse.y" /* yacc.c:1646 */ { (yyval) = ccl_set_union ((yyvsp[-2]), (yyvsp[0])); /*}*/ insert_after(2, ""); insert_before(0, ""); } -#line 2397 "parse.c" /* yacc.c:1646 */ +#line 2399 "parse.c" /* yacc.c:1646 */ break; case 66: -#line 898 "parse.y" /* yacc.c:1646 */ +#line 900 "parse.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 2403 "parse.c" /* yacc.c:1646 */ +#line 2405 "parse.c" /* yacc.c:1646 */ break; case 67: -#line 901 "parse.y" /* yacc.c:1646 */ +#line 903 "parse.y" /* yacc.c:1646 */ { cclnegate( (yyvsp[-1]) ); (yyval) = (yyvsp[-1]); insert_after(2, ""); insert_before(1, ""); } -#line 2414 "parse.c" /* yacc.c:1646 */ +#line 2416 "parse.c" /* yacc.c:1646 */ break; case 68: -#line 910 "parse.y" /* yacc.c:1646 */ +#line 912 "parse.y" /* yacc.c:1646 */ { if (sf_case_ins()) @@ -2508,11 +2510,11 @@ yyreduce: insert_before(1, piece_temp); insert_before(0, ""); } -#line 2482 "parse.c" /* yacc.c:1646 */ +#line 2484 "parse.c" /* yacc.c:1646 */ break; case 69: -#line 975 "parse.y" /* yacc.c:1646 */ +#line 977 "parse.y" /* yacc.c:1646 */ { ccladd( (yyvsp[-1]), (yyvsp[0]) ); cclsorted = cclsorted && ((yyvsp[0]) > lastchar); @@ -2534,11 +2536,11 @@ yyreduce: insert_before(1, piece_temp); insert_before(0, ""); } -#line 2508 "parse.c" /* yacc.c:1646 */ +#line 2510 "parse.c" /* yacc.c:1646 */ break; case 70: -#line 998 "parse.y" /* yacc.c:1646 */ +#line 1000 "parse.y" /* yacc.c:1646 */ { /* Too hard to properly maintain cclsorted. */ cclsorted = false; @@ -2546,76 +2548,76 @@ yyreduce: insert_after(1, ""); insert_before(0, ""); } -#line 2520 "parse.c" /* yacc.c:1646 */ +#line 2522 "parse.c" /* yacc.c:1646 */ break; case 71: -#line 1007 "parse.y" /* yacc.c:1646 */ +#line 1009 "parse.y" /* yacc.c:1646 */ { cclsorted = true; lastchar = 0; currccl = (yyval) = cclinit(); insert_before(0, ""); } -#line 2531 "parse.c" /* yacc.c:1646 */ +#line 2533 "parse.c" /* yacc.c:1646 */ break; case 72: -#line 1016 "parse.y" /* yacc.c:1646 */ +#line 1018 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(isalnum); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2540 "parse.c" /* yacc.c:1646 */ +#line 2542 "parse.c" /* yacc.c:1646 */ break; case 73: -#line 1020 "parse.y" /* yacc.c:1646 */ +#line 1022 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(isalpha); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2549 "parse.c" /* yacc.c:1646 */ +#line 2551 "parse.c" /* yacc.c:1646 */ break; case 74: -#line 1024 "parse.y" /* yacc.c:1646 */ +#line 1026 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(IS_BLANK); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2558 "parse.c" /* yacc.c:1646 */ +#line 2560 "parse.c" /* yacc.c:1646 */ break; case 75: -#line 1028 "parse.y" /* yacc.c:1646 */ +#line 1030 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(iscntrl); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2567 "parse.c" /* yacc.c:1646 */ +#line 2569 "parse.c" /* yacc.c:1646 */ break; case 76: -#line 1032 "parse.y" /* yacc.c:1646 */ +#line 1034 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(isdigit); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2576 "parse.c" /* yacc.c:1646 */ +#line 2578 "parse.c" /* yacc.c:1646 */ break; case 77: -#line 1036 "parse.y" /* yacc.c:1646 */ +#line 1038 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(isgraph); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2585 "parse.c" /* yacc.c:1646 */ +#line 2587 "parse.c" /* yacc.c:1646 */ break; case 78: -#line 1040 "parse.y" /* yacc.c:1646 */ +#line 1042 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(islower); if (sf_case_ins()) @@ -2630,47 +2632,47 @@ yyreduce: insert_before(0, ""); } } -#line 2604 "parse.c" /* yacc.c:1646 */ +#line 2606 "parse.c" /* yacc.c:1646 */ break; case 79: -#line 1054 "parse.y" /* yacc.c:1646 */ +#line 1056 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(isprint); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2613 "parse.c" /* yacc.c:1646 */ +#line 2615 "parse.c" /* yacc.c:1646 */ break; case 80: -#line 1058 "parse.y" /* yacc.c:1646 */ +#line 1060 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(ispunct); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2622 "parse.c" /* yacc.c:1646 */ +#line 2624 "parse.c" /* yacc.c:1646 */ break; case 81: -#line 1062 "parse.y" /* yacc.c:1646 */ +#line 1064 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(isspace); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2631 "parse.c" /* yacc.c:1646 */ +#line 2633 "parse.c" /* yacc.c:1646 */ break; case 82: -#line 1066 "parse.y" /* yacc.c:1646 */ +#line 1068 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(isxdigit); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2640 "parse.c" /* yacc.c:1646 */ +#line 2642 "parse.c" /* yacc.c:1646 */ break; case 83: -#line 1070 "parse.y" /* yacc.c:1646 */ +#line 1072 "parse.y" /* yacc.c:1646 */ { CCL_EXPR(isupper); if (sf_case_ins()) @@ -2685,101 +2687,101 @@ yyreduce: insert_before(0, ""); } } -#line 2659 "parse.c" /* yacc.c:1646 */ +#line 2661 "parse.c" /* yacc.c:1646 */ break; case 84: -#line 1085 "parse.y" /* yacc.c:1646 */ +#line 1087 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(isalnum); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2668 "parse.c" /* yacc.c:1646 */ +#line 2670 "parse.c" /* yacc.c:1646 */ break; case 85: -#line 1089 "parse.y" /* yacc.c:1646 */ +#line 1091 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(isalpha); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2677 "parse.c" /* yacc.c:1646 */ +#line 2679 "parse.c" /* yacc.c:1646 */ break; case 86: -#line 1093 "parse.y" /* yacc.c:1646 */ +#line 1095 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(IS_BLANK); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2686 "parse.c" /* yacc.c:1646 */ +#line 2688 "parse.c" /* yacc.c:1646 */ break; case 87: -#line 1097 "parse.y" /* yacc.c:1646 */ +#line 1099 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(iscntrl); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2695 "parse.c" /* yacc.c:1646 */ +#line 2697 "parse.c" /* yacc.c:1646 */ break; case 88: -#line 1101 "parse.y" /* yacc.c:1646 */ +#line 1103 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(isdigit); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2704 "parse.c" /* yacc.c:1646 */ +#line 2706 "parse.c" /* yacc.c:1646 */ break; case 89: -#line 1105 "parse.y" /* yacc.c:1646 */ +#line 1107 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(isgraph); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2713 "parse.c" /* yacc.c:1646 */ +#line 2715 "parse.c" /* yacc.c:1646 */ break; case 90: -#line 1109 "parse.y" /* yacc.c:1646 */ +#line 1111 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(isprint); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2722 "parse.c" /* yacc.c:1646 */ +#line 2724 "parse.c" /* yacc.c:1646 */ break; case 91: -#line 1113 "parse.y" /* yacc.c:1646 */ +#line 1115 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(ispunct); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2731 "parse.c" /* yacc.c:1646 */ +#line 2733 "parse.c" /* yacc.c:1646 */ break; case 92: -#line 1117 "parse.y" /* yacc.c:1646 */ +#line 1119 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(isspace); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2740 "parse.c" /* yacc.c:1646 */ +#line 2742 "parse.c" /* yacc.c:1646 */ break; case 93: -#line 1121 "parse.y" /* yacc.c:1646 */ +#line 1123 "parse.y" /* yacc.c:1646 */ { CCL_NEG_EXPR(isxdigit); /*}*/ insert_after(0, ""); insert_before(0, ""); } -#line 2749 "parse.c" /* yacc.c:1646 */ +#line 2751 "parse.c" /* yacc.c:1646 */ break; case 94: -#line 1125 "parse.y" /* yacc.c:1646 */ +#line 1127 "parse.y" /* yacc.c:1646 */ { if ( sf_case_ins() ) lwarn(_("[:^lower:] is ambiguous in case insensitive scanner")); @@ -2788,11 +2790,11 @@ yyreduce: insert_after(0, ""); insert_before(0, ""); } -#line 2762 "parse.c" /* yacc.c:1646 */ +#line 2764 "parse.c" /* yacc.c:1646 */ break; case 95: -#line 1133 "parse.y" /* yacc.c:1646 */ +#line 1135 "parse.y" /* yacc.c:1646 */ { if ( sf_case_ins() ) lwarn(_("[:^upper:] ambiguous in case insensitive scanner")); @@ -2801,11 +2803,11 @@ yyreduce: insert_after(0, ""); insert_before(0, ""); } -#line 2775 "parse.c" /* yacc.c:1646 */ +#line 2777 "parse.c" /* yacc.c:1646 */ break; case 96: -#line 1144 "parse.y" /* yacc.c:1646 */ +#line 1146 "parse.y" /* yacc.c:1646 */ { if ( (yyvsp[0]) == nlch ) rule_has_nl[num_rules] = true; @@ -2824,19 +2826,19 @@ yyreduce: insert_before(1, piece_temp); insert_before(0, ""); } -#line 2798 "parse.c" /* yacc.c:1646 */ +#line 2800 "parse.c" /* yacc.c:1646 */ break; case 97: -#line 1164 "parse.y" /* yacc.c:1646 */ +#line 1166 "parse.y" /* yacc.c:1646 */ { (yyval) = mkstate( SYM_EPSILON ); /*}*/ insert_before(0, ""); } -#line 2806 "parse.c" /* yacc.c:1646 */ +#line 2808 "parse.c" /* yacc.c:1646 */ break; -#line 2810 "parse.c" /* yacc.c:1646 */ +#line 2812 "parse.c" /* yacc.c:1646 */ default: break; } int i; @@ -3081,7 +3083,7 @@ yyreturn: #endif return yyresult; } -#line 1170 "parse.y" /* yacc.c:1906 */ +#line 1172 "parse.y" /* yacc.c:1906 */ diff --git a/src/parse.y b/src/parse.y index 9b2fe22..cbae51a 100644 --- a/src/parse.y +++ b/src/parse.y @@ -302,8 +302,8 @@ flexrule : '^' rule pinpoint_message( "'^' operator results in sub-optimal performance" ); } - insert_after(1, ""); - insert_before(0, ""); + insert_after(1, ""); + insert_before(0, ""); } | rule @@ -328,6 +328,8 @@ flexrule : '^' rule mkbranch( scset[i], pat ); } + insert_after(0, ""); + insert_before(0, ""); } | EOF_OP @@ -351,7 +353,7 @@ flexrule : '^' rule else build_eof_action(); } - insert_after(0, ""); + insert_after(0, ""); insert_before(0, ""); } -- 2.34.1