Introduce PLex.Section2.Rule.FLexRule which is always a pair of (expr, trailing conte...
authorNick Downing <downing.nick@gmail.com>
Sun, 22 Jul 2018 14:02:59 +0000 (00:02 +1000)
committerNick Downing <downing.nick@gmail.com>
Sun, 22 Jul 2018 14:02:59 +0000 (00:02 +1000)
src/parse.c
src/parse.y

index 9324e86..f7848b9 100644 (file)
@@ -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, "</PLex_Section2_Rule_BOLRule>");
- insert_before(0, "<PLex_Section2_Rule_BOLRule>");
+ insert_after(1, "</PLex_Section2_Rule_FLexRule>");
+ insert_before(0, "<PLex_Section2_Rule_FLexRule bol=\"true\">");
                        }
 #line 1725 "parse.c" /* yacc.c:1646  */
     break;
@@ -1777,12 +1777,14 @@ yyreduce:
                                                        mkbranch( scset[i],
                                                                pat );
                                }
+ insert_after(0, "</PLex_Section2_Rule_FLexRule>");
+ insert_before(0, "<PLex_Section2_Rule_FLexRule bol=\"false\">");
                        }
-#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, "</PLex_Section2_Rule_EOFRule><RegexNone />");
+ insert_after(0, "</PLex_Section2_Rule_EOFRule>");
  insert_before(0, "<PLex_Section2_Rule_EOFRule>");
                        }
-#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, "</PLex_Section2_StartConditions>");
  insert_before(0, "<PLex_Section2_StartConditions>");
  }
-#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, "</PLex_Section2_StartConditions>");
  insert_before(0, "<PLex_Section2_StartConditions wildcard=\"true\">");
                        }
-#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, "<PLex_Section2_StartConditions />");
  }
-#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, "</RegexCharacter>");
  insert_before(1, "<RegexCharacter character_set=\"10 11\">");
                        }
-#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, "<RegexEmpty />");
                        }
-#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, "</RegexOr>");
  insert_before(0, "<RegexOr>");
                        }
-#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, "</RegexSequence>");
  insert_before(0, "<RegexSequence>");
                        }
-#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, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (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, "<RegexRepeat count0=\"%d\">", (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, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (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, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"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, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"1\">");
                        }
-#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, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"0\" count1=\"1\">");
                        }
-#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, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (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, "<RegexRepeat count0=\"%d\">", (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, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (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, "<RegexCharacter character_set=\"0 10 11 256\">");
  }
                        }
-#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, "</RegexGroup>");
  insert_before(0, "<RegexGroup>");
 #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, "<RegexCharacter character_set=\"%d %d\">", (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, "</RegexCharacterAnd>");
  insert_after(2, "</RegexCharacterNot>");
  insert_before(2, "<RegexCharacterNot>");
  insert_before(0, "<RegexCharacterAnd>");
  }
-#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, "</RegexCharacterOr>");
  insert_before(0, "<RegexCharacterOr>");
  }
-#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, "</RegexCharacterNot>");
  insert_before(1, "<RegexCharacterNot>");
                        }
-#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, "<RegexCharacterOr>");
                        }
-#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, "<RegexCharacterOr>");
                        }
-#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, "</RegexCharacterOr>");
  insert_before(0, "<RegexCharacterOr>");
                        }
-#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, "<RegexCharacter character_set=\"\" />");
                        }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"48 58 65 91 97 123\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"65 91 97 123\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"9 14 32 33\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 32\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"48 58\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"33 127\">");
  }
-#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, "<RegexCharacter character_set=\"97 123\">");
  }
                         }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"32 127\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"33 48 58 65 91 97 123 127\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"32 33\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"48 58 65 71 97 103\">");
  }
-#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, "<RegexCharacter character_set=\"65 91\">");
  }
                                }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 48 58 65 91 97 123 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 65 91 97 123 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 9 14 32 33 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"32 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 48 58 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 33 127 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 32 127 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 33 48 58 65 91 97 123 127 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 32 33 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 48 58 65 71 97 103 256\">");
  }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 97 123 256\">");
                                }
-#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, "</RegexCharacter>");
  insert_before(0, "<RegexCharacter character_set=\"0 65 91 256\">");
                                }
-#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, "<RegexSequence>");
                        }
-#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, "<RegexEmpty />");
  }
-#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  */
 
 
 
index 9b2fe22..cbae51a 100644 (file)
@@ -302,8 +302,8 @@ flexrule    :  '^' rule
                                        pinpoint_message(
                        "'^' operator results in sub-optimal performance" );
                                }
- insert_after(1, "</PLex_Section2_Rule_BOLRule>");
- insert_before(0, "<PLex_Section2_Rule_BOLRule>");
+ insert_after(1, "</PLex_Section2_Rule_FLexRule>");
+ insert_before(0, "<PLex_Section2_Rule_FLexRule bol=\"true\">");
                        }
 
                |  rule
@@ -328,6 +328,8 @@ flexrule    :  '^' rule
                                                        mkbranch( scset[i],
                                                                pat );
                                }
+ insert_after(0, "</PLex_Section2_Rule_FLexRule>");
+ insert_before(0, "<PLex_Section2_Rule_FLexRule bol=\"false\">");
                        }
 
                |  EOF_OP
@@ -351,7 +353,7 @@ flexrule    :  '^' rule
                                else
                                        build_eof_action();
                                }
- insert_after(0, "</PLex_Section2_Rule_EOFRule><RegexNone />");
+ insert_after(0, "</PLex_Section2_Rule_EOFRule>");
  insert_before(0, "<PLex_Section2_Rule_EOFRule>");
                        }