Tighten up <Rule>...</Rule> so it does not pull in the inter-token space before
authorNick Downing <downing.nick@gmail.com>
Sat, 23 Jun 2018 04:53:39 +0000 (14:53 +1000)
committerNick Downing <downing.nick@gmail.com>
Sat, 23 Jun 2018 06:14:04 +0000 (16:14 +1000)
src/parse.c
src/parse.y

index 2813e2c..eff98e4 100644 (file)
@@ -595,13 +595,13 @@ 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,   397,   399,   401,   405,   431,
-     489,   492,   541,   561,   569,   574,   603,   613,   616,   647,
-     664,   689,   698,   706,   714,   745,   762,   784,   826,   844,
-     854,   857,   863,   878,   884,   888,   893,   895,   904,   969,
-     992,  1002,  1011,  1015,  1019,  1023,  1027,  1031,  1035,  1049,
-    1053,  1057,  1061,  1065,  1080,  1084,  1088,  1092,  1096,  1100,
-    1104,  1108,  1112,  1116,  1120,  1128,  1138,  1156
+     358,   363,   366,   372,   392,   405,   407,   409,   413,   439,
+     497,   500,   549,   569,   577,   582,   611,   621,   624,   655,
+     672,   697,   706,   714,   722,   753,   770,   792,   834,   852,
+     862,   865,   871,   886,   892,   896,   901,   903,   912,   977,
+    1000,  1010,  1019,  1023,  1027,  1031,  1035,  1039,  1043,  1057,
+    1061,  1065,  1069,  1073,  1088,  1092,  1096,  1100,  1104,  1108,
+    1112,  1116,  1120,  1124,  1128,  1136,  1146,  1164
 };
 #endif
 
@@ -1855,19 +1855,27 @@ yyreduce:
   case 34:
 #line 392 "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 */
+ if (yychar == YYEMPTY)
+  yychar = yylex();
+ char *temp = piece[piece2 + 1];
+ piece[piece2 + 1] = piece[piece2]; /* empty */
+ piece[piece2] = piece[piece2 - 1]; /* empty */
+ piece[piece2 - 1] = temp;
  insert_before(0, "<StartCondNone />");
  }
-#line 1831 "parse.c" /* yacc.c:1646  */
+#line 1839 "parse.c" /* yacc.c:1646  */
     break;
 
   case 37:
-#line 402 "parse.y" /* yacc.c:1646  */
+#line 410 "parse.y" /* yacc.c:1646  */
     { synerr( _("bad start condition list") ); }
-#line 1837 "parse.c" /* yacc.c:1646  */
+#line 1845 "parse.c" /* yacc.c:1646  */
     break;
 
   case 38:
-#line 406 "parse.y" /* yacc.c:1646  */
+#line 414 "parse.y" /* yacc.c:1646  */
     {
                        if ( (scnum = sclookup( nmstr )) == 0 )
                                format_pinpoint_message(
@@ -1888,11 +1896,11 @@ yyreduce:
                                        scon_stk[++scon_stk_ptr] = scnum;
                                }
                        }
-#line 1862 "parse.c" /* yacc.c:1646  */
+#line 1870 "parse.c" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 432 "parse.y" /* yacc.c:1646  */
+#line 440 "parse.y" /* yacc.c:1646  */
     {
                        if ( transchar[lastst[(yyvsp[0])]] != SYM_EPSILON )
                                /* Provide final transition \now/ so it
@@ -1949,17 +1957,17 @@ yyreduce:
  insert_after(2, "</RegexSequence>");
  insert_before(0, "<RegexSequence>");
                        }
-#line 1923 "parse.c" /* yacc.c:1646  */
+#line 1931 "parse.c" /* yacc.c:1646  */
     break;
 
   case 40:
-#line 490 "parse.y" /* yacc.c:1646  */
+#line 498 "parse.y" /* yacc.c:1646  */
     { synerr( _("trailing context used twice") ); }
-#line 1929 "parse.c" /* yacc.c:1646  */
+#line 1937 "parse.c" /* yacc.c:1646  */
     break;
 
   case 41:
-#line 493 "parse.y" /* yacc.c:1646  */
+#line 501 "parse.y" /* yacc.c:1646  */
     {
                        headcnt = 0;
                        trailcnt = 1;
@@ -2007,11 +2015,11 @@ yyreduce:
  insert_before(0, "<RegexGroup>");
  insert_before(0, "<RegexSequence>");
                        }
-#line 1981 "parse.c" /* yacc.c:1646  */
+#line 1989 "parse.c" /* yacc.c:1646  */
     break;
 
   case 42:
-#line 542 "parse.y" /* yacc.c:1646  */
+#line 550 "parse.y" /* yacc.c:1646  */
     {
                        (yyval) = (yyvsp[0]);
 
@@ -2028,28 +2036,28 @@ yyreduce:
  insert_after(0, "</RegexGroup>");
  insert_before(0, "<RegexGroup>");
                        }
-#line 2002 "parse.c" /* yacc.c:1646  */
+#line 2010 "parse.c" /* yacc.c:1646  */
     break;
 
   case 43:
-#line 562 "parse.y" /* yacc.c:1646  */
+#line 570 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
                        (yyval) = mkor( (yyvsp[-2]), (yyvsp[0]) );
  insert_after(2, "</RegexOr>");
  insert_before(0, "<RegexOr>");
                        }
-#line 2013 "parse.c" /* yacc.c:1646  */
+#line 2021 "parse.c" /* yacc.c:1646  */
     break;
 
   case 44:
-#line 570 "parse.y" /* yacc.c:1646  */
+#line 578 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2019 "parse.c" /* yacc.c:1646  */
+#line 2027 "parse.c" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 575 "parse.y" /* yacc.c:1646  */
+#line 583 "parse.y" /* yacc.c:1646  */
     {
                        /* This rule is written separately so the
                         * reduction will occur before the trailing
@@ -2076,11 +2084,11 @@ yyreduce:
  insert_after(0, "</RegexGroup>");
  insert_before(0, "<RegexGroup>");
                        }
-#line 2050 "parse.c" /* yacc.c:1646  */
+#line 2058 "parse.c" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 604 "parse.y" /* yacc.c:1646  */
+#line 612 "parse.y" /* yacc.c:1646  */
     {
                        /* This is where concatenation of adjacent patterns
                         * gets done.
@@ -2089,17 +2097,17 @@ yyreduce:
  insert_after(1, "</RegexSequence>");
  insert_before(0, "<RegexSequence>");
                        }
-#line 2063 "parse.c" /* yacc.c:1646  */
+#line 2071 "parse.c" /* yacc.c:1646  */
     break;
 
   case 47:
-#line 614 "parse.y" /* yacc.c:1646  */
+#line 622 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2069 "parse.c" /* yacc.c:1646  */
+#line 2077 "parse.c" /* yacc.c:1646  */
     break;
 
   case 48:
-#line 617 "parse.y" /* yacc.c:1646  */
+#line 625 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2129,11 +2137,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-3]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2103 "parse.c" /* yacc.c:1646  */
+#line 2111 "parse.c" /* yacc.c:1646  */
     break;
 
   case 49:
-#line 648 "parse.y" /* yacc.c:1646  */
+#line 656 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2149,11 +2157,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"-1\">", (yyvsp[-2]));
  insert_before(0, piece_temp);
                        }
-#line 2123 "parse.c" /* yacc.c:1646  */
+#line 2131 "parse.c" /* yacc.c:1646  */
     break;
 
   case 50:
-#line 665 "parse.y" /* yacc.c:1646  */
+#line 673 "parse.y" /* yacc.c:1646  */
     {
                        /* The series could be something like "(foo)",
                         * in which case we have no idea what its length
@@ -2175,11 +2183,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-1]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2149 "parse.c" /* yacc.c:1646  */
+#line 2157 "parse.c" /* yacc.c:1646  */
     break;
 
   case 51:
-#line 690 "parse.y" /* yacc.c:1646  */
+#line 698 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2187,33 +2195,33 @@ yyreduce:
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"0\" count1=\"-1\">");
                        }
-#line 2161 "parse.c" /* yacc.c:1646  */
+#line 2169 "parse.c" /* yacc.c:1646  */
     break;
 
   case 52:
-#line 699 "parse.y" /* yacc.c:1646  */
+#line 707 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
                        (yyval) = mkposcl( (yyvsp[-1]) );
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"1\" count1=\"-1\">");
                        }
-#line 2172 "parse.c" /* yacc.c:1646  */
+#line 2180 "parse.c" /* yacc.c:1646  */
     break;
 
   case 53:
-#line 707 "parse.y" /* yacc.c:1646  */
+#line 715 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
                        (yyval) = mkopt( (yyvsp[-1]) );
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"0\" count1=\"1\">");
                        }
-#line 2183 "parse.c" /* yacc.c:1646  */
+#line 2191 "parse.c" /* yacc.c:1646  */
     break;
 
   case 54:
-#line 715 "parse.y" /* yacc.c:1646  */
+#line 723 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2243,11 +2251,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-3]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2217 "parse.c" /* yacc.c:1646  */
+#line 2225 "parse.c" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 746 "parse.y" /* yacc.c:1646  */
+#line 754 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2263,11 +2271,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"-1\">", (yyvsp[-2]));
  insert_before(0, piece_temp);
                        }
-#line 2237 "parse.c" /* yacc.c:1646  */
+#line 2245 "parse.c" /* yacc.c:1646  */
     break;
 
   case 56:
-#line 763 "parse.y" /* yacc.c:1646  */
+#line 771 "parse.y" /* yacc.c:1646  */
     {
                        /* The singleton could be something like "(foo)",
                         * in which case we have no idea what its length
@@ -2288,11 +2296,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-1]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2262 "parse.c" /* yacc.c:1646  */
+#line 2270 "parse.c" /* yacc.c:1646  */
     break;
 
   case 57:
-#line 785 "parse.y" /* yacc.c:1646  */
+#line 793 "parse.y" /* yacc.c:1646  */
     {
                        if ( ! madeany )
                                {
@@ -2333,11 +2341,11 @@ yyreduce:
  insert_before(0, "<RegexCharacter char_set=\"0 10 11 256\">");
  }
                        }
-#line 2307 "parse.c" /* yacc.c:1646  */
+#line 2315 "parse.c" /* yacc.c:1646  */
     break;
 
   case 58:
-#line 827 "parse.y" /* yacc.c:1646  */
+#line 835 "parse.y" /* yacc.c:1646  */
     {
                                /* Sort characters for fast searching.
                                 */
@@ -2354,11 +2362,11 @@ yyreduce:
 
                        (yyval) = mkstate( -(yyvsp[0]) );
                        }
-#line 2328 "parse.c" /* yacc.c:1646  */
+#line 2336 "parse.c" /* yacc.c:1646  */
     break;
 
   case 59:
-#line 845 "parse.y" /* yacc.c:1646  */
+#line 853 "parse.y" /* yacc.c:1646  */
     {
                        ++rulelen;
 
@@ -2367,26 +2375,26 @@ yyreduce:
 
                        (yyval) = mkstate( -(yyvsp[0]) );
                        }
-#line 2341 "parse.c" /* yacc.c:1646  */
+#line 2349 "parse.c" /* yacc.c:1646  */
     break;
 
   case 60:
-#line 855 "parse.y" /* yacc.c:1646  */
+#line 863 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2347 "parse.c" /* yacc.c:1646  */
+#line 2355 "parse.c" /* yacc.c:1646  */
     break;
 
   case 61:
-#line 858 "parse.y" /* yacc.c:1646  */
+#line 866 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); /*}*/
  insert_after(2, "</RegexGroup>");
  insert_before(0, "<RegexGroup>");
  }
-#line 2356 "parse.c" /* yacc.c:1646  */
+#line 2364 "parse.c" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 864 "parse.y" /* yacc.c:1646  */
+#line 872 "parse.y" /* yacc.c:1646  */
     {
                        ++rulelen;
 
@@ -2399,48 +2407,48 @@ yyreduce:
             else
                 (yyval) = mkstate( (yyvsp[0]) );
                        }
-#line 2373 "parse.c" /* yacc.c:1646  */
+#line 2381 "parse.c" /* yacc.c:1646  */
     break;
 
   case 63:
-#line 878 "parse.y" /* yacc.c:1646  */
+#line 886 "parse.y" /* yacc.c:1646  */
     { (yyval) = ccl_set_diff  ((yyvsp[-2]), (yyvsp[0])); /*}*/
  insert_after(2, "</RegexCharacterAnd>");
  insert_after(2, "</RegexCharacterNot>");
  insert_before(2, "<RegexCharacterNot>");
  insert_before(0, "<RegexCharacterAnd>");
  }
-#line 2384 "parse.c" /* yacc.c:1646  */
+#line 2392 "parse.c" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 884 "parse.y" /* yacc.c:1646  */
+#line 892 "parse.y" /* yacc.c:1646  */
     { (yyval) = ccl_set_union ((yyvsp[-2]), (yyvsp[0])); /*}*/
  insert_after(2, "</RegexCharacterOr>");
  insert_before(0, "<RegexCharacterOr>");
  }
-#line 2393 "parse.c" /* yacc.c:1646  */
+#line 2401 "parse.c" /* yacc.c:1646  */
     break;
 
   case 66:
-#line 893 "parse.y" /* yacc.c:1646  */
+#line 901 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2399 "parse.c" /* yacc.c:1646  */
+#line 2407 "parse.c" /* yacc.c:1646  */
     break;
 
   case 67:
-#line 896 "parse.y" /* yacc.c:1646  */
+#line 904 "parse.y" /* yacc.c:1646  */
     {
                        cclnegate( (yyvsp[-1]) );
                        (yyval) = (yyvsp[-1]);
  insert_after(2, "</RegexCharacterNot>");
  insert_before(1, "<RegexCharacterNot>");
                        }
-#line 2410 "parse.c" /* yacc.c:1646  */
+#line 2418 "parse.c" /* yacc.c:1646  */
     break;
 
   case 68:
-#line 905 "parse.y" /* yacc.c:1646  */
+#line 913 "parse.y" /* yacc.c:1646  */
     {
 
                        if (sf_case_ins())
@@ -2504,11 +2512,11 @@ yyreduce:
  insert_before(1, piece_temp);
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2478 "parse.c" /* yacc.c:1646  */
+#line 2486 "parse.c" /* yacc.c:1646  */
     break;
 
   case 69:
-#line 970 "parse.y" /* yacc.c:1646  */
+#line 978 "parse.y" /* yacc.c:1646  */
     {
                        ccladd( (yyvsp[-1]), (yyvsp[0]) );
                        cclsorted = cclsorted && ((yyvsp[0]) > lastchar);
@@ -2530,11 +2538,11 @@ yyreduce:
  insert_before(1, piece_temp);
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2504 "parse.c" /* yacc.c:1646  */
+#line 2512 "parse.c" /* yacc.c:1646  */
     break;
 
   case 70:
-#line 993 "parse.y" /* yacc.c:1646  */
+#line 1001 "parse.y" /* yacc.c:1646  */
     {
                        /* Too hard to properly maintain cclsorted. */
                        cclsorted = false;
@@ -2542,76 +2550,76 @@ yyreduce:
  insert_after(1, "</RegexCharacterOr>");
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2516 "parse.c" /* yacc.c:1646  */
+#line 2524 "parse.c" /* yacc.c:1646  */
     break;
 
   case 71:
-#line 1002 "parse.y" /* yacc.c:1646  */
+#line 1010 "parse.y" /* yacc.c:1646  */
     {
                        cclsorted = true;
                        lastchar = 0;
                        currccl = (yyval) = cclinit();
  insert_before(0, "<RegexCharacter char_set=\"\" />");
                        }
-#line 2527 "parse.c" /* yacc.c:1646  */
+#line 2535 "parse.c" /* yacc.c:1646  */
     break;
 
   case 72:
-#line 1011 "parse.y" /* yacc.c:1646  */
+#line 1019 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isalnum); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"48 58 65 91 97 123\">");
  }
-#line 2536 "parse.c" /* yacc.c:1646  */
+#line 2544 "parse.c" /* yacc.c:1646  */
     break;
 
   case 73:
-#line 1015 "parse.y" /* yacc.c:1646  */
+#line 1023 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isalpha); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"65 91 97 123\">");
  }
-#line 2545 "parse.c" /* yacc.c:1646  */
+#line 2553 "parse.c" /* yacc.c:1646  */
     break;
 
   case 74:
-#line 1019 "parse.y" /* yacc.c:1646  */
+#line 1027 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(IS_BLANK); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"9 14 32 33\">");
  }
-#line 2554 "parse.c" /* yacc.c:1646  */
+#line 2562 "parse.c" /* yacc.c:1646  */
     break;
 
   case 75:
-#line 1023 "parse.y" /* yacc.c:1646  */
+#line 1031 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(iscntrl); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 32\">");
  }
-#line 2563 "parse.c" /* yacc.c:1646  */
+#line 2571 "parse.c" /* yacc.c:1646  */
     break;
 
   case 76:
-#line 1027 "parse.y" /* yacc.c:1646  */
+#line 1035 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isdigit); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"48 58\">");
  }
-#line 2572 "parse.c" /* yacc.c:1646  */
+#line 2580 "parse.c" /* yacc.c:1646  */
     break;
 
   case 77:
-#line 1031 "parse.y" /* yacc.c:1646  */
+#line 1039 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isgraph); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"33 127\">");
  }
-#line 2581 "parse.c" /* yacc.c:1646  */
+#line 2589 "parse.c" /* yacc.c:1646  */
     break;
 
   case 78:
-#line 1035 "parse.y" /* yacc.c:1646  */
+#line 1043 "parse.y" /* yacc.c:1646  */
     { 
                           CCL_EXPR(islower);
                           if (sf_case_ins())
@@ -2626,47 +2634,47 @@ yyreduce:
  insert_before(0, "<RegexCharacter char_set=\"97 123\">");
  }
                         }
-#line 2600 "parse.c" /* yacc.c:1646  */
+#line 2608 "parse.c" /* yacc.c:1646  */
     break;
 
   case 79:
-#line 1049 "parse.y" /* yacc.c:1646  */
+#line 1057 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isprint); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"32 127\">");
  }
-#line 2609 "parse.c" /* yacc.c:1646  */
+#line 2617 "parse.c" /* yacc.c:1646  */
     break;
 
   case 80:
-#line 1053 "parse.y" /* yacc.c:1646  */
+#line 1061 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(ispunct); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"33 48 58 65 91 97 123 127\">");
  }
-#line 2618 "parse.c" /* yacc.c:1646  */
+#line 2626 "parse.c" /* yacc.c:1646  */
     break;
 
   case 81:
-#line 1057 "parse.y" /* yacc.c:1646  */
+#line 1065 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isspace); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"32 33\">");
  }
-#line 2627 "parse.c" /* yacc.c:1646  */
+#line 2635 "parse.c" /* yacc.c:1646  */
     break;
 
   case 82:
-#line 1061 "parse.y" /* yacc.c:1646  */
+#line 1069 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isxdigit); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"48 58 65 71 97 103\">");
  }
-#line 2636 "parse.c" /* yacc.c:1646  */
+#line 2644 "parse.c" /* yacc.c:1646  */
     break;
 
   case 83:
-#line 1065 "parse.y" /* yacc.c:1646  */
+#line 1073 "parse.y" /* yacc.c:1646  */
     {
                     CCL_EXPR(isupper);
                     if (sf_case_ins())
@@ -2681,101 +2689,101 @@ yyreduce:
  insert_before(0, "<RegexCharacter char_set=\"65 91\">");
  }
                                }
-#line 2655 "parse.c" /* yacc.c:1646  */
+#line 2663 "parse.c" /* yacc.c:1646  */
     break;
 
   case 84:
-#line 1080 "parse.y" /* yacc.c:1646  */
+#line 1088 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isalnum); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 48 58 65 91 97 123 256\">");
  }
-#line 2664 "parse.c" /* yacc.c:1646  */
+#line 2672 "parse.c" /* yacc.c:1646  */
     break;
 
   case 85:
-#line 1084 "parse.y" /* yacc.c:1646  */
+#line 1092 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isalpha); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 65 91 97 123 256\">");
  }
-#line 2673 "parse.c" /* yacc.c:1646  */
+#line 2681 "parse.c" /* yacc.c:1646  */
     break;
 
   case 86:
-#line 1088 "parse.y" /* yacc.c:1646  */
+#line 1096 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(IS_BLANK); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 9 14 32 33 256\">");
  }
-#line 2682 "parse.c" /* yacc.c:1646  */
+#line 2690 "parse.c" /* yacc.c:1646  */
     break;
 
   case 87:
-#line 1092 "parse.y" /* yacc.c:1646  */
+#line 1100 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(iscntrl); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"32 256\">");
  }
-#line 2691 "parse.c" /* yacc.c:1646  */
+#line 2699 "parse.c" /* yacc.c:1646  */
     break;
 
   case 88:
-#line 1096 "parse.y" /* yacc.c:1646  */
+#line 1104 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isdigit); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 48 58 256\">");
  }
-#line 2700 "parse.c" /* yacc.c:1646  */
+#line 2708 "parse.c" /* yacc.c:1646  */
     break;
 
   case 89:
-#line 1100 "parse.y" /* yacc.c:1646  */
+#line 1108 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isgraph); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 33 127 256\">");
  }
-#line 2709 "parse.c" /* yacc.c:1646  */
+#line 2717 "parse.c" /* yacc.c:1646  */
     break;
 
   case 90:
-#line 1104 "parse.y" /* yacc.c:1646  */
+#line 1112 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isprint); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 32 127 256\">");
  }
-#line 2718 "parse.c" /* yacc.c:1646  */
+#line 2726 "parse.c" /* yacc.c:1646  */
     break;
 
   case 91:
-#line 1108 "parse.y" /* yacc.c:1646  */
+#line 1116 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(ispunct); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 33 48 58 65 91 97 123 127 256\">");
  }
-#line 2727 "parse.c" /* yacc.c:1646  */
+#line 2735 "parse.c" /* yacc.c:1646  */
     break;
 
   case 92:
-#line 1112 "parse.y" /* yacc.c:1646  */
+#line 1120 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isspace); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 32 33 256\">");
  }
-#line 2736 "parse.c" /* yacc.c:1646  */
+#line 2744 "parse.c" /* yacc.c:1646  */
     break;
 
   case 93:
-#line 1116 "parse.y" /* yacc.c:1646  */
+#line 1124 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isxdigit); /*}*/
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 48 58 65 71 97 103 256\">");
  }
-#line 2745 "parse.c" /* yacc.c:1646  */
+#line 2753 "parse.c" /* yacc.c:1646  */
     break;
 
   case 94:
-#line 1120 "parse.y" /* yacc.c:1646  */
+#line 1128 "parse.y" /* yacc.c:1646  */
     { 
                                if ( sf_case_ins() )
                                        lwarn(_("[:^lower:] is ambiguous in case insensitive scanner"));
@@ -2784,11 +2792,11 @@ yyreduce:
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 97 123 256\">");
                                }
-#line 2758 "parse.c" /* yacc.c:1646  */
+#line 2766 "parse.c" /* yacc.c:1646  */
     break;
 
   case 95:
-#line 1128 "parse.y" /* yacc.c:1646  */
+#line 1136 "parse.y" /* yacc.c:1646  */
     {
                                if ( sf_case_ins() )
                                        lwarn(_("[:^upper:] ambiguous in case insensitive scanner"));
@@ -2797,11 +2805,11 @@ yyreduce:
  insert_after(0, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter char_set=\"0 65 91 256\">");
                                }
-#line 2771 "parse.c" /* yacc.c:1646  */
+#line 2779 "parse.c" /* yacc.c:1646  */
     break;
 
   case 96:
-#line 1139 "parse.y" /* yacc.c:1646  */
+#line 1147 "parse.y" /* yacc.c:1646  */
     {
                        if ( (yyvsp[0]) == nlch )
                                rule_has_nl[num_rules] = true;
@@ -2817,19 +2825,19 @@ yyreduce:
  insert_after(1, "</RegexSequence>");
  insert_before(0, "<RegexSequence>");
                        }
-#line 2791 "parse.c" /* yacc.c:1646  */
+#line 2799 "parse.c" /* yacc.c:1646  */
     break;
 
   case 97:
-#line 1156 "parse.y" /* yacc.c:1646  */
+#line 1164 "parse.y" /* yacc.c:1646  */
     { (yyval) = mkstate( SYM_EPSILON ); /*}*/
  insert_before(0, "<RegexEmpty />");
  }
-#line 2799 "parse.c" /* yacc.c:1646  */
+#line 2807 "parse.c" /* yacc.c:1646  */
     break;
 
 
-#line 2803 "parse.c" /* yacc.c:1646  */
+#line 2811 "parse.c" /* yacc.c:1646  */
       default: break;
     }
  int i;
@@ -3074,7 +3082,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1162 "parse.y" /* yacc.c:1906  */
+#line 1170 "parse.y" /* yacc.c:1906  */
 
 
 
index e20f58b..df8e25c 100644 (file)
@@ -390,6 +390,14 @@ scon               :  '<' scon_stk_ptr namelist2 '>'
 
                |
                        { $$ = 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 */
+ if (yychar == YYEMPTY)
+  yychar = yylex();
+ char *temp = piece[piece2 + 1];
+ piece[piece2 + 1] = piece[piece2]; /* empty */
+ piece[piece2] = piece[piece2 - 1]; /* empty */
+ piece[piece2 - 1] = temp;
  insert_before(0, "<StartCondNone />");
  }
                ;