| Index: source/i18n/regexcst.h | 
| diff --git a/source/i18n/regexcst.h b/source/i18n/regexcst.h | 
| index ab43137d8b60b05c646e6dd5e0d42617ea1b381b..3e62485f7c9e35d567561421901d66c9233cbb1d 100644 | 
| --- a/source/i18n/regexcst.h | 
| +++ b/source/i18n/regexcst.h | 
| @@ -5,7 +5,7 @@ | 
| //    It is generated by the Perl script "regexcst.pl" from | 
| //    the rule parser state definitions file "regexcst.txt". | 
| // | 
| -//   Copyright (C) 2002-2007 International Business Machines Corporation | 
| +//   Copyright (C) 2002-2015 International Business Machines Corporation | 
| //   and others. All rights reserved. | 
| // | 
| //--------------------------------------------------------------------------------- | 
| @@ -16,101 +16,117 @@ U_NAMESPACE_BEGIN | 
| // | 
| // Character classes for regex pattern scanning. | 
| // | 
| -    static const uint8_t kRuleSet_digit_char = 128; | 
| -    static const uint8_t kRuleSet_rule_char = 129; | 
| +    static const uint8_t kRuleSet_ascii_letter = 128; | 
| +    static const uint8_t kRuleSet_digit_char = 129; | 
| +    static const uint8_t kRuleSet_rule_char = 130; | 
|  | 
|  | 
| enum Regex_PatternParseAction { | 
| -    doLiteralChar, | 
| -    doSetEnd, | 
| -    doBackslashA, | 
| -    doSetBeginUnion, | 
| -    doNOP, | 
| -    doSetBackslash_w, | 
| -    doSetRange, | 
| -    doBackslashG, | 
| -    doPerlInline, | 
| -    doSetAddDash, | 
| -    doIntevalLowerDigit, | 
| -    doProperty, | 
| -    doBackslashX, | 
| -    doOpenAtomicParen, | 
| -    doSetLiteralEscaped, | 
| -    doPatFinish, | 
| -    doSetBackslash_D, | 
| -    doSetDifference2, | 
| -    doNamedChar, | 
| -    doNGPlus, | 
| -    doOpenLookBehindNeg, | 
| -    doIntervalError, | 
| -    doIntervalSame, | 
| -    doBackRef, | 
| -    doPlus, | 
| +    doSetBackslash_V, | 
| +    doSetBackslash_h, | 
| +    doBeginNamedBackRef, | 
| +    doSetMatchMode, | 
| +    doEnterQuoteMode, | 
| doOpenCaptureParen, | 
| -    doMismatchedParenErr, | 
| +    doContinueNamedCapture, | 
| +    doSetBackslash_d, | 
| doBeginMatchMode, | 
| -    doEscapeError, | 
| -    doOpenNonCaptureParen, | 
| -    doDollar, | 
| -    doSetProp, | 
| -    doIntervalUpperDigit, | 
| -    doSetBegin, | 
| -    doBackslashs, | 
| +    doBackslashX, | 
| +    doSetPosixProp, | 
| +    doIntervalError, | 
| +    doSetLiteralEscaped, | 
| +    doSetBackslash_s, | 
| +    doNOP, | 
| +    doBackslashv, | 
| doOpenLookBehind, | 
| -    doSetMatchMode, | 
| -    doOrOperator, | 
| -    doCaret, | 
| -    doMatchModeParen, | 
| -    doStar, | 
| -    doOpt, | 
| -    doMatchMode, | 
| -    doSuppressComments, | 
| +    doPatStart, | 
| doPossessiveInterval, | 
| +    doOpenAtomicParen, | 
| doOpenLookAheadNeg, | 
| -    doBackslashW, | 
| -    doCloseParen, | 
| -    doSetOpError, | 
| -    doIntervalInit, | 
| -    doSetFinish, | 
| -    doSetIntersection2, | 
| -    doNGStar, | 
| -    doEnterQuoteMode, | 
| +    doBackslashd, | 
| +    doBackslashZ, | 
| +    doIntervalUpperDigit, | 
| +    doBadNamedCapture, | 
| +    doSetDifference2, | 
| doSetAddAmp, | 
| +    doSetNamedChar, | 
| +    doNamedChar, | 
| +    doSetBackslash_H, | 
| +    doBackslashb, | 
| +    doBackslashz, | 
| +    doSetBeginDifference1, | 
| +    doOpenLookAhead, | 
| +    doMatchModeParen, | 
| +    doBackslashV, | 
| +    doIntevalLowerDigit, | 
| +    doCaret, | 
| +    doSetEnd, | 
| +    doSetNegate, | 
| +    doBackslashS, | 
| +    doOrOperator, | 
| doBackslashB, | 
| doBackslashw, | 
| -    doPossessiveOpt, | 
| -    doSetNegate, | 
| +    doBackslashR, | 
| doRuleError, | 
| -    doBackslashb, | 
| +    doDotAny, | 
| +    doMatchMode, | 
| +    doSetBackslash_W, | 
| +    doNGPlus, | 
| +    doSetBackslash_D, | 
| +    doPossessiveOpt, | 
| +    doSetNamedRange, | 
| doConditionalExpr, | 
| -    doPossessivePlus, | 
| +    doBackslashs, | 
| +    doPossessiveStar, | 
| +    doPlus, | 
| doBadOpenParenType, | 
| +    doCloseParen, | 
| doNGInterval, | 
| -    doSetLiteral, | 
| -    doSetNamedChar, | 
| -    doBackslashd, | 
| -    doSetBeginDifference1, | 
| +    doSetProp, | 
| +    doBackRef, | 
| +    doSetBeginUnion, | 
| +    doEscapeError, | 
| +    doOpt, | 
| +    doSetBeginIntersection1, | 
| +    doPossessivePlus, | 
| doBackslashD, | 
| +    doOpenLookBehindNeg, | 
| +    doSetBegin, | 
| +    doSetIntersection2, | 
| +    doCompleteNamedBackRef, | 
| +    doSetRange, | 
| +    doDollar, | 
| +    doBackslashH, | 
| doExit, | 
| -    doSetBackslash_S, | 
| -    doInterval, | 
| -    doSetNoCloseError, | 
| doNGOpt, | 
| -    doSetPosixProp, | 
| -    doBackslashS, | 
| -    doBackslashZ, | 
| -    doSetBeginIntersection1, | 
| -    doSetBackslash_W, | 
| -    doSetBackslash_d, | 
| -    doOpenLookAhead, | 
| +    doOpenNonCaptureParen, | 
| +    doBackslashA, | 
| +    doSetBackslash_v, | 
| +    doBackslashh, | 
| doBadModeFlag, | 
| -    doPatStart, | 
| -    doSetNamedRange, | 
| -    doPossessiveStar, | 
| +    doSetNoCloseError, | 
| +    doIntervalSame, | 
| +    doSetAddDash, | 
| +    doBackslashW, | 
| +    doPerlInline, | 
| +    doSetOpError, | 
| +    doSetLiteral, | 
| +    doPatFinish, | 
| +    doBeginNamedCapture, | 
| doEscapedLiteralChar, | 
| -    doSetBackslash_s, | 
| -    doBackslashz, | 
| -    doDotAny, | 
| +    doLiteralChar, | 
| +    doSuppressComments, | 
| +    doMismatchedParenErr, | 
| +    doNGStar, | 
| +    doSetFinish, | 
| +    doInterval, | 
| +    doBackslashG, | 
| +    doStar, | 
| +    doSetBackslash_w, | 
| +    doSetBackslash_S, | 
| +    doProperty, | 
| +    doContinueNamedBackRef, | 
| +    doIntervalInit, | 
| rbbiLastAction}; | 
|  | 
| //------------------------------------------------------------------------------- | 
| @@ -132,21 +148,21 @@ static const struct RegexTableEl gRuleParseStateTable[] = { | 
| {doNOP, 0, 0, 0, TRUE} | 
| , {doPatStart, 255, 2,0,  FALSE}     //  1      start | 
| , {doLiteralChar, 254, 14,0,  TRUE}     //  2      term | 
| -    , {doLiteralChar, 129, 14,0,  TRUE}     //  3 | 
| -    , {doSetBegin, 91 /* [ */, 104, 182, TRUE}     //  4 | 
| +    , {doLiteralChar, 130, 14,0,  TRUE}     //  3 | 
| +    , {doSetBegin, 91 /* [ */, 123, 205, TRUE}     //  4 | 
| , {doNOP, 40 /* ( */, 27,0,  TRUE}     //  5 | 
| , {doDotAny, 46 /* . */, 14,0,  TRUE}     //  6 | 
| , {doCaret, 94 /* ^ */, 14,0,  TRUE}     //  7 | 
| , {doDollar, 36 /* $ */, 14,0,  TRUE}     //  8 | 
| -    , {doNOP, 92 /* \ */, 84,0,  TRUE}     //  9 | 
| +    , {doNOP, 92 /* \ */, 89,0,  TRUE}     //  9 | 
| , {doOrOperator, 124 /* | */, 2,0,  TRUE}     //  10 | 
| , {doCloseParen, 41 /* ) */, 255,0,  TRUE}     //  11 | 
| , {doPatFinish, 253, 2,0,  FALSE}     //  12 | 
| -    , {doRuleError, 255, 183,0,  FALSE}     //  13 | 
| -    , {doNOP, 42 /* * */, 63,0,  TRUE}     //  14      expr-quant | 
| -    , {doNOP, 43 /* + */, 66,0,  TRUE}     //  15 | 
| -    , {doNOP, 63 /* ? */, 69,0,  TRUE}     //  16 | 
| -    , {doIntervalInit, 123 /* { */, 72,0,  TRUE}     //  17 | 
| +    , {doRuleError, 255, 206,0,  FALSE}     //  13 | 
| +    , {doNOP, 42 /* * */, 68,0,  TRUE}     //  14      expr-quant | 
| +    , {doNOP, 43 /* + */, 71,0,  TRUE}     //  15 | 
| +    , {doNOP, 63 /* ? */, 74,0,  TRUE}     //  16 | 
| +    , {doIntervalInit, 123 /* { */, 77,0,  TRUE}     //  17 | 
| , {doNOP, 40 /* ( */, 23,0,  TRUE}     //  18 | 
| , {doNOP, 255, 20,0,  FALSE}     //  19 | 
| , {doOrOperator, 124 /* | */, 2,0,  TRUE}     //  20      expr-cont | 
| @@ -154,7 +170,7 @@ static const struct RegexTableEl gRuleParseStateTable[] = { | 
| , {doNOP, 255, 2,0,  FALSE}     //  22 | 
| , {doSuppressComments, 63 /* ? */, 25,0,  TRUE}     //  23      open-paren-quant | 
| , {doNOP, 255, 27,0,  FALSE}     //  24 | 
| -    , {doNOP, 35 /* # */, 49, 14, TRUE}     //  25      open-paren-quant2 | 
| +    , {doNOP, 35 /* # */, 50, 14, TRUE}     //  25      open-paren-quant2 | 
| , {doNOP, 255, 29,0,  FALSE}     //  26 | 
| , {doSuppressComments, 63 /* ? */, 29,0,  TRUE}     //  27      open-paren | 
| , {doOpenCaptureParen, 255, 2, 14, FALSE}     //  28 | 
| @@ -163,156 +179,179 @@ static const struct RegexTableEl gRuleParseStateTable[] = { | 
| , {doOpenLookAhead, 61 /* = */, 2, 20, TRUE}     //  31 | 
| , {doOpenLookAheadNeg, 33 /* ! */, 2, 20, TRUE}     //  32 | 
| , {doNOP, 60 /* < */, 46,0,  TRUE}     //  33 | 
| -    , {doNOP, 35 /* # */, 49, 2, TRUE}     //  34 | 
| -    , {doBeginMatchMode, 105 /* i */, 52,0,  FALSE}     //  35 | 
| -    , {doBeginMatchMode, 100 /* d */, 52,0,  FALSE}     //  36 | 
| -    , {doBeginMatchMode, 109 /* m */, 52,0,  FALSE}     //  37 | 
| -    , {doBeginMatchMode, 115 /* s */, 52,0,  FALSE}     //  38 | 
| -    , {doBeginMatchMode, 117 /* u */, 52,0,  FALSE}     //  39 | 
| -    , {doBeginMatchMode, 119 /* w */, 52,0,  FALSE}     //  40 | 
| -    , {doBeginMatchMode, 120 /* x */, 52,0,  FALSE}     //  41 | 
| -    , {doBeginMatchMode, 45 /* - */, 52,0,  FALSE}     //  42 | 
| -    , {doConditionalExpr, 40 /* ( */, 183,0,  TRUE}     //  43 | 
| -    , {doPerlInline, 123 /* { */, 183,0,  TRUE}     //  44 | 
| -    , {doBadOpenParenType, 255, 183,0,  FALSE}     //  45 | 
| +    , {doNOP, 35 /* # */, 50, 2, TRUE}     //  34 | 
| +    , {doBeginMatchMode, 105 /* i */, 53,0,  FALSE}     //  35 | 
| +    , {doBeginMatchMode, 100 /* d */, 53,0,  FALSE}     //  36 | 
| +    , {doBeginMatchMode, 109 /* m */, 53,0,  FALSE}     //  37 | 
| +    , {doBeginMatchMode, 115 /* s */, 53,0,  FALSE}     //  38 | 
| +    , {doBeginMatchMode, 117 /* u */, 53,0,  FALSE}     //  39 | 
| +    , {doBeginMatchMode, 119 /* w */, 53,0,  FALSE}     //  40 | 
| +    , {doBeginMatchMode, 120 /* x */, 53,0,  FALSE}     //  41 | 
| +    , {doBeginMatchMode, 45 /* - */, 53,0,  FALSE}     //  42 | 
| +    , {doConditionalExpr, 40 /* ( */, 206,0,  TRUE}     //  43 | 
| +    , {doPerlInline, 123 /* { */, 206,0,  TRUE}     //  44 | 
| +    , {doBadOpenParenType, 255, 206,0,  FALSE}     //  45 | 
| , {doOpenLookBehind, 61 /* = */, 2, 20, TRUE}     //  46      open-paren-lookbehind | 
| , {doOpenLookBehindNeg, 33 /* ! */, 2, 20, TRUE}     //  47 | 
| -    , {doBadOpenParenType, 255, 183,0,  FALSE}     //  48 | 
| -    , {doNOP, 41 /* ) */, 255,0,  TRUE}     //  49      paren-comment | 
| -    , {doMismatchedParenErr, 253, 183,0,  FALSE}     //  50 | 
| -    , {doNOP, 255, 49,0,  TRUE}     //  51 | 
| -    , {doMatchMode, 105 /* i */, 52,0,  TRUE}     //  52      paren-flag | 
| -    , {doMatchMode, 100 /* d */, 52,0,  TRUE}     //  53 | 
| -    , {doMatchMode, 109 /* m */, 52,0,  TRUE}     //  54 | 
| -    , {doMatchMode, 115 /* s */, 52,0,  TRUE}     //  55 | 
| -    , {doMatchMode, 117 /* u */, 52,0,  TRUE}     //  56 | 
| -    , {doMatchMode, 119 /* w */, 52,0,  TRUE}     //  57 | 
| -    , {doMatchMode, 120 /* x */, 52,0,  TRUE}     //  58 | 
| -    , {doMatchMode, 45 /* - */, 52,0,  TRUE}     //  59 | 
| -    , {doSetMatchMode, 41 /* ) */, 2,0,  TRUE}     //  60 | 
| -    , {doMatchModeParen, 58 /* : */, 2, 14, TRUE}     //  61 | 
| -    , {doBadModeFlag, 255, 183,0,  FALSE}     //  62 | 
| -    , {doNGStar, 63 /* ? */, 20,0,  TRUE}     //  63      quant-star | 
| -    , {doPossessiveStar, 43 /* + */, 20,0,  TRUE}     //  64 | 
| -    , {doStar, 255, 20,0,  FALSE}     //  65 | 
| -    , {doNGPlus, 63 /* ? */, 20,0,  TRUE}     //  66      quant-plus | 
| -    , {doPossessivePlus, 43 /* + */, 20,0,  TRUE}     //  67 | 
| -    , {doPlus, 255, 20,0,  FALSE}     //  68 | 
| -    , {doNGOpt, 63 /* ? */, 20,0,  TRUE}     //  69      quant-opt | 
| -    , {doPossessiveOpt, 43 /* + */, 20,0,  TRUE}     //  70 | 
| -    , {doOpt, 255, 20,0,  FALSE}     //  71 | 
| -    , {doNOP, 128, 74,0,  FALSE}     //  72      interval-open | 
| -    , {doIntervalError, 255, 183,0,  FALSE}     //  73 | 
| -    , {doIntevalLowerDigit, 128, 74,0,  TRUE}     //  74      interval-lower | 
| -    , {doNOP, 44 /* , */, 78,0,  TRUE}     //  75 | 
| -    , {doIntervalSame, 125 /* } */, 81,0,  TRUE}     //  76 | 
| -    , {doIntervalError, 255, 183,0,  FALSE}     //  77 | 
| -    , {doIntervalUpperDigit, 128, 78,0,  TRUE}     //  78      interval-upper | 
| -    , {doNOP, 125 /* } */, 81,0,  TRUE}     //  79 | 
| -    , {doIntervalError, 255, 183,0,  FALSE}     //  80 | 
| -    , {doNGInterval, 63 /* ? */, 20,0,  TRUE}     //  81      interval-type | 
| -    , {doPossessiveInterval, 43 /* + */, 20,0,  TRUE}     //  82 | 
| -    , {doInterval, 255, 20,0,  FALSE}     //  83 | 
| -    , {doBackslashA, 65 /* A */, 2,0,  TRUE}     //  84      backslash | 
| -    , {doBackslashB, 66 /* B */, 2,0,  TRUE}     //  85 | 
| -    , {doBackslashb, 98 /* b */, 2,0,  TRUE}     //  86 | 
| -    , {doBackslashd, 100 /* d */, 14,0,  TRUE}     //  87 | 
| -    , {doBackslashD, 68 /* D */, 14,0,  TRUE}     //  88 | 
| -    , {doBackslashG, 71 /* G */, 2,0,  TRUE}     //  89 | 
| -    , {doNamedChar, 78 /* N */, 14,0,  FALSE}     //  90 | 
| -    , {doProperty, 112 /* p */, 14,0,  FALSE}     //  91 | 
| -    , {doProperty, 80 /* P */, 14,0,  FALSE}     //  92 | 
| -    , {doEnterQuoteMode, 81 /* Q */, 2,0,  TRUE}     //  93 | 
| -    , {doBackslashS, 83 /* S */, 14,0,  TRUE}     //  94 | 
| -    , {doBackslashs, 115 /* s */, 14,0,  TRUE}     //  95 | 
| -    , {doBackslashW, 87 /* W */, 14,0,  TRUE}     //  96 | 
| -    , {doBackslashw, 119 /* w */, 14,0,  TRUE}     //  97 | 
| -    , {doBackslashX, 88 /* X */, 14,0,  TRUE}     //  98 | 
| -    , {doBackslashZ, 90 /* Z */, 2,0,  TRUE}     //  99 | 
| -    , {doBackslashz, 122 /* z */, 2,0,  TRUE}     //  100 | 
| -    , {doBackRef, 128, 14,0,  TRUE}     //  101 | 
| -    , {doEscapeError, 253, 183,0,  FALSE}     //  102 | 
| -    , {doEscapedLiteralChar, 255, 14,0,  TRUE}     //  103 | 
| -    , {doSetNegate, 94 /* ^ */, 107,0,  TRUE}     //  104      set-open | 
| -    , {doSetPosixProp, 58 /* : */, 109,0,  FALSE}     //  105 | 
| -    , {doNOP, 255, 107,0,  FALSE}     //  106 | 
| -    , {doSetLiteral, 93 /* ] */, 122,0,  TRUE}     //  107      set-open2 | 
| -    , {doNOP, 255, 112,0,  FALSE}     //  108 | 
| -    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  109      set-posix | 
| -    , {doNOP, 58 /* : */, 112,0,  FALSE}     //  110 | 
| -    , {doRuleError, 255, 183,0,  FALSE}     //  111 | 
| -    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  112      set-start | 
| -    , {doSetBeginUnion, 91 /* [ */, 104, 129, TRUE}     //  113 | 
| -    , {doNOP, 92 /* \ */, 172,0,  TRUE}     //  114 | 
| -    , {doNOP, 45 /* - */, 118,0,  TRUE}     //  115 | 
| -    , {doNOP, 38 /* & */, 120,0,  TRUE}     //  116 | 
| -    , {doSetLiteral, 255, 122,0,  TRUE}     //  117 | 
| -    , {doRuleError, 45 /* - */, 183,0,  FALSE}     //  118      set-start-dash | 
| -    , {doSetAddDash, 255, 122,0,  FALSE}     //  119 | 
| -    , {doRuleError, 38 /* & */, 183,0,  FALSE}     //  120      set-start-amp | 
| -    , {doSetAddAmp, 255, 122,0,  FALSE}     //  121 | 
| -    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  122      set-after-lit | 
| -    , {doSetBeginUnion, 91 /* [ */, 104, 129, TRUE}     //  123 | 
| -    , {doNOP, 45 /* - */, 159,0,  TRUE}     //  124 | 
| -    , {doNOP, 38 /* & */, 150,0,  TRUE}     //  125 | 
| -    , {doNOP, 92 /* \ */, 172,0,  TRUE}     //  126 | 
| -    , {doSetNoCloseError, 253, 183,0,  FALSE}     //  127 | 
| -    , {doSetLiteral, 255, 122,0,  TRUE}     //  128 | 
| -    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  129      set-after-set | 
| -    , {doSetBeginUnion, 91 /* [ */, 104, 129, TRUE}     //  130 | 
| -    , {doNOP, 45 /* - */, 152,0,  TRUE}     //  131 | 
| -    , {doNOP, 38 /* & */, 147,0,  TRUE}     //  132 | 
| -    , {doNOP, 92 /* \ */, 172,0,  TRUE}     //  133 | 
| -    , {doSetNoCloseError, 253, 183,0,  FALSE}     //  134 | 
| -    , {doSetLiteral, 255, 122,0,  TRUE}     //  135 | 
| -    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  136      set-after-range | 
| -    , {doSetBeginUnion, 91 /* [ */, 104, 129, TRUE}     //  137 | 
| -    , {doNOP, 45 /* - */, 155,0,  TRUE}     //  138 | 
| -    , {doNOP, 38 /* & */, 157,0,  TRUE}     //  139 | 
| -    , {doNOP, 92 /* \ */, 172,0,  TRUE}     //  140 | 
| -    , {doSetNoCloseError, 253, 183,0,  FALSE}     //  141 | 
| -    , {doSetLiteral, 255, 122,0,  TRUE}     //  142 | 
| -    , {doSetBeginUnion, 91 /* [ */, 104, 129, TRUE}     //  143      set-after-op | 
| -    , {doSetOpError, 93 /* ] */, 183,0,  FALSE}     //  144 | 
| -    , {doNOP, 92 /* \ */, 172,0,  TRUE}     //  145 | 
| -    , {doSetLiteral, 255, 122,0,  TRUE}     //  146 | 
| -    , {doSetBeginIntersection1, 91 /* [ */, 104, 129, TRUE}     //  147      set-set-amp | 
| -    , {doSetIntersection2, 38 /* & */, 143,0,  TRUE}     //  148 | 
| -    , {doSetAddAmp, 255, 122,0,  FALSE}     //  149 | 
| -    , {doSetIntersection2, 38 /* & */, 143,0,  TRUE}     //  150      set-lit-amp | 
| -    , {doSetAddAmp, 255, 122,0,  FALSE}     //  151 | 
| -    , {doSetBeginDifference1, 91 /* [ */, 104, 129, TRUE}     //  152      set-set-dash | 
| -    , {doSetDifference2, 45 /* - */, 143,0,  TRUE}     //  153 | 
| -    , {doSetAddDash, 255, 122,0,  FALSE}     //  154 | 
| -    , {doSetDifference2, 45 /* - */, 143,0,  TRUE}     //  155      set-range-dash | 
| -    , {doSetAddDash, 255, 122,0,  FALSE}     //  156 | 
| -    , {doSetIntersection2, 38 /* & */, 143,0,  TRUE}     //  157      set-range-amp | 
| -    , {doSetAddAmp, 255, 122,0,  FALSE}     //  158 | 
| -    , {doSetDifference2, 45 /* - */, 143,0,  TRUE}     //  159      set-lit-dash | 
| -    , {doSetAddDash, 91 /* [ */, 122,0,  FALSE}     //  160 | 
| -    , {doSetAddDash, 93 /* ] */, 122,0,  FALSE}     //  161 | 
| -    , {doNOP, 92 /* \ */, 164,0,  TRUE}     //  162 | 
| -    , {doSetRange, 255, 136,0,  TRUE}     //  163 | 
| -    , {doSetOpError, 115 /* s */, 183,0,  FALSE}     //  164      set-lit-dash-escape | 
| -    , {doSetOpError, 83 /* S */, 183,0,  FALSE}     //  165 | 
| -    , {doSetOpError, 119 /* w */, 183,0,  FALSE}     //  166 | 
| -    , {doSetOpError, 87 /* W */, 183,0,  FALSE}     //  167 | 
| -    , {doSetOpError, 100 /* d */, 183,0,  FALSE}     //  168 | 
| -    , {doSetOpError, 68 /* D */, 183,0,  FALSE}     //  169 | 
| -    , {doSetNamedRange, 78 /* N */, 136,0,  FALSE}     //  170 | 
| -    , {doSetRange, 255, 136,0,  TRUE}     //  171 | 
| -    , {doSetProp, 112 /* p */, 129,0,  FALSE}     //  172      set-escape | 
| -    , {doSetProp, 80 /* P */, 129,0,  FALSE}     //  173 | 
| -    , {doSetNamedChar, 78 /* N */, 122,0,  FALSE}     //  174 | 
| -    , {doSetBackslash_s, 115 /* s */, 136,0,  TRUE}     //  175 | 
| -    , {doSetBackslash_S, 83 /* S */, 136,0,  TRUE}     //  176 | 
| -    , {doSetBackslash_w, 119 /* w */, 136,0,  TRUE}     //  177 | 
| -    , {doSetBackslash_W, 87 /* W */, 136,0,  TRUE}     //  178 | 
| -    , {doSetBackslash_d, 100 /* d */, 136,0,  TRUE}     //  179 | 
| -    , {doSetBackslash_D, 68 /* D */, 136,0,  TRUE}     //  180 | 
| -    , {doSetLiteralEscaped, 255, 122,0,  TRUE}     //  181 | 
| -    , {doSetFinish, 255, 14,0,  FALSE}     //  182      set-finish | 
| -    , {doExit, 255, 183,0,  TRUE}     //  183      errorDeath | 
| +    , {doBeginNamedCapture, 128, 64,0,  FALSE}     //  48 | 
| +    , {doBadOpenParenType, 255, 206,0,  FALSE}     //  49 | 
| +    , {doNOP, 41 /* ) */, 255,0,  TRUE}     //  50      paren-comment | 
| +    , {doMismatchedParenErr, 253, 206,0,  FALSE}     //  51 | 
| +    , {doNOP, 255, 50,0,  TRUE}     //  52 | 
| +    , {doMatchMode, 105 /* i */, 53,0,  TRUE}     //  53      paren-flag | 
| +    , {doMatchMode, 100 /* d */, 53,0,  TRUE}     //  54 | 
| +    , {doMatchMode, 109 /* m */, 53,0,  TRUE}     //  55 | 
| +    , {doMatchMode, 115 /* s */, 53,0,  TRUE}     //  56 | 
| +    , {doMatchMode, 117 /* u */, 53,0,  TRUE}     //  57 | 
| +    , {doMatchMode, 119 /* w */, 53,0,  TRUE}     //  58 | 
| +    , {doMatchMode, 120 /* x */, 53,0,  TRUE}     //  59 | 
| +    , {doMatchMode, 45 /* - */, 53,0,  TRUE}     //  60 | 
| +    , {doSetMatchMode, 41 /* ) */, 2,0,  TRUE}     //  61 | 
| +    , {doMatchModeParen, 58 /* : */, 2, 14, TRUE}     //  62 | 
| +    , {doBadModeFlag, 255, 206,0,  FALSE}     //  63 | 
| +    , {doContinueNamedCapture, 128, 64,0,  TRUE}     //  64      named-capture | 
| +    , {doContinueNamedCapture, 129, 64,0,  TRUE}     //  65 | 
| +    , {doOpenCaptureParen, 62 /* > */, 2, 14, TRUE}     //  66 | 
| +    , {doBadNamedCapture, 255, 206,0,  FALSE}     //  67 | 
| +    , {doNGStar, 63 /* ? */, 20,0,  TRUE}     //  68      quant-star | 
| +    , {doPossessiveStar, 43 /* + */, 20,0,  TRUE}     //  69 | 
| +    , {doStar, 255, 20,0,  FALSE}     //  70 | 
| +    , {doNGPlus, 63 /* ? */, 20,0,  TRUE}     //  71      quant-plus | 
| +    , {doPossessivePlus, 43 /* + */, 20,0,  TRUE}     //  72 | 
| +    , {doPlus, 255, 20,0,  FALSE}     //  73 | 
| +    , {doNGOpt, 63 /* ? */, 20,0,  TRUE}     //  74      quant-opt | 
| +    , {doPossessiveOpt, 43 /* + */, 20,0,  TRUE}     //  75 | 
| +    , {doOpt, 255, 20,0,  FALSE}     //  76 | 
| +    , {doNOP, 129, 79,0,  FALSE}     //  77      interval-open | 
| +    , {doIntervalError, 255, 206,0,  FALSE}     //  78 | 
| +    , {doIntevalLowerDigit, 129, 79,0,  TRUE}     //  79      interval-lower | 
| +    , {doNOP, 44 /* , */, 83,0,  TRUE}     //  80 | 
| +    , {doIntervalSame, 125 /* } */, 86,0,  TRUE}     //  81 | 
| +    , {doIntervalError, 255, 206,0,  FALSE}     //  82 | 
| +    , {doIntervalUpperDigit, 129, 83,0,  TRUE}     //  83      interval-upper | 
| +    , {doNOP, 125 /* } */, 86,0,  TRUE}     //  84 | 
| +    , {doIntervalError, 255, 206,0,  FALSE}     //  85 | 
| +    , {doNGInterval, 63 /* ? */, 20,0,  TRUE}     //  86      interval-type | 
| +    , {doPossessiveInterval, 43 /* + */, 20,0,  TRUE}     //  87 | 
| +    , {doInterval, 255, 20,0,  FALSE}     //  88 | 
| +    , {doBackslashA, 65 /* A */, 2,0,  TRUE}     //  89      backslash | 
| +    , {doBackslashB, 66 /* B */, 2,0,  TRUE}     //  90 | 
| +    , {doBackslashb, 98 /* b */, 2,0,  TRUE}     //  91 | 
| +    , {doBackslashd, 100 /* d */, 14,0,  TRUE}     //  92 | 
| +    , {doBackslashD, 68 /* D */, 14,0,  TRUE}     //  93 | 
| +    , {doBackslashG, 71 /* G */, 2,0,  TRUE}     //  94 | 
| +    , {doBackslashh, 104 /* h */, 14,0,  TRUE}     //  95 | 
| +    , {doBackslashH, 72 /* H */, 14,0,  TRUE}     //  96 | 
| +    , {doNOP, 107 /* k */, 115,0,  TRUE}     //  97 | 
| +    , {doNamedChar, 78 /* N */, 14,0,  FALSE}     //  98 | 
| +    , {doProperty, 112 /* p */, 14,0,  FALSE}     //  99 | 
| +    , {doProperty, 80 /* P */, 14,0,  FALSE}     //  100 | 
| +    , {doBackslashR, 82 /* R */, 14,0,  TRUE}     //  101 | 
| +    , {doEnterQuoteMode, 81 /* Q */, 2,0,  TRUE}     //  102 | 
| +    , {doBackslashS, 83 /* S */, 14,0,  TRUE}     //  103 | 
| +    , {doBackslashs, 115 /* s */, 14,0,  TRUE}     //  104 | 
| +    , {doBackslashv, 118 /* v */, 14,0,  TRUE}     //  105 | 
| +    , {doBackslashV, 86 /* V */, 14,0,  TRUE}     //  106 | 
| +    , {doBackslashW, 87 /* W */, 14,0,  TRUE}     //  107 | 
| +    , {doBackslashw, 119 /* w */, 14,0,  TRUE}     //  108 | 
| +    , {doBackslashX, 88 /* X */, 14,0,  TRUE}     //  109 | 
| +    , {doBackslashZ, 90 /* Z */, 2,0,  TRUE}     //  110 | 
| +    , {doBackslashz, 122 /* z */, 2,0,  TRUE}     //  111 | 
| +    , {doBackRef, 129, 14,0,  TRUE}     //  112 | 
| +    , {doEscapeError, 253, 206,0,  FALSE}     //  113 | 
| +    , {doEscapedLiteralChar, 255, 14,0,  TRUE}     //  114 | 
| +    , {doBeginNamedBackRef, 60 /* < */, 117,0,  TRUE}     //  115      named-backref | 
| +    , {doBadNamedCapture, 255, 206,0,  FALSE}     //  116 | 
| +    , {doContinueNamedBackRef, 128, 119,0,  TRUE}     //  117      named-backref-2 | 
| +    , {doBadNamedCapture, 255, 206,0,  FALSE}     //  118 | 
| +    , {doContinueNamedBackRef, 128, 119,0,  TRUE}     //  119      named-backref-3 | 
| +    , {doContinueNamedBackRef, 129, 119,0,  TRUE}     //  120 | 
| +    , {doCompleteNamedBackRef, 62 /* > */, 14,0,  TRUE}     //  121 | 
| +    , {doBadNamedCapture, 255, 206,0,  FALSE}     //  122 | 
| +    , {doSetNegate, 94 /* ^ */, 126,0,  TRUE}     //  123      set-open | 
| +    , {doSetPosixProp, 58 /* : */, 128,0,  FALSE}     //  124 | 
| +    , {doNOP, 255, 126,0,  FALSE}     //  125 | 
| +    , {doSetLiteral, 93 /* ] */, 141,0,  TRUE}     //  126      set-open2 | 
| +    , {doNOP, 255, 131,0,  FALSE}     //  127 | 
| +    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  128      set-posix | 
| +    , {doNOP, 58 /* : */, 131,0,  FALSE}     //  129 | 
| +    , {doRuleError, 255, 206,0,  FALSE}     //  130 | 
| +    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  131      set-start | 
| +    , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE}     //  132 | 
| +    , {doNOP, 92 /* \ */, 191,0,  TRUE}     //  133 | 
| +    , {doNOP, 45 /* - */, 137,0,  TRUE}     //  134 | 
| +    , {doNOP, 38 /* & */, 139,0,  TRUE}     //  135 | 
| +    , {doSetLiteral, 255, 141,0,  TRUE}     //  136 | 
| +    , {doRuleError, 45 /* - */, 206,0,  FALSE}     //  137      set-start-dash | 
| +    , {doSetAddDash, 255, 141,0,  FALSE}     //  138 | 
| +    , {doRuleError, 38 /* & */, 206,0,  FALSE}     //  139      set-start-amp | 
| +    , {doSetAddAmp, 255, 141,0,  FALSE}     //  140 | 
| +    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  141      set-after-lit | 
| +    , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE}     //  142 | 
| +    , {doNOP, 45 /* - */, 178,0,  TRUE}     //  143 | 
| +    , {doNOP, 38 /* & */, 169,0,  TRUE}     //  144 | 
| +    , {doNOP, 92 /* \ */, 191,0,  TRUE}     //  145 | 
| +    , {doSetNoCloseError, 253, 206,0,  FALSE}     //  146 | 
| +    , {doSetLiteral, 255, 141,0,  TRUE}     //  147 | 
| +    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  148      set-after-set | 
| +    , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE}     //  149 | 
| +    , {doNOP, 45 /* - */, 171,0,  TRUE}     //  150 | 
| +    , {doNOP, 38 /* & */, 166,0,  TRUE}     //  151 | 
| +    , {doNOP, 92 /* \ */, 191,0,  TRUE}     //  152 | 
| +    , {doSetNoCloseError, 253, 206,0,  FALSE}     //  153 | 
| +    , {doSetLiteral, 255, 141,0,  TRUE}     //  154 | 
| +    , {doSetEnd, 93 /* ] */, 255,0,  TRUE}     //  155      set-after-range | 
| +    , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE}     //  156 | 
| +    , {doNOP, 45 /* - */, 174,0,  TRUE}     //  157 | 
| +    , {doNOP, 38 /* & */, 176,0,  TRUE}     //  158 | 
| +    , {doNOP, 92 /* \ */, 191,0,  TRUE}     //  159 | 
| +    , {doSetNoCloseError, 253, 206,0,  FALSE}     //  160 | 
| +    , {doSetLiteral, 255, 141,0,  TRUE}     //  161 | 
| +    , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE}     //  162      set-after-op | 
| +    , {doSetOpError, 93 /* ] */, 206,0,  FALSE}     //  163 | 
| +    , {doNOP, 92 /* \ */, 191,0,  TRUE}     //  164 | 
| +    , {doSetLiteral, 255, 141,0,  TRUE}     //  165 | 
| +    , {doSetBeginIntersection1, 91 /* [ */, 123, 148, TRUE}     //  166      set-set-amp | 
| +    , {doSetIntersection2, 38 /* & */, 162,0,  TRUE}     //  167 | 
| +    , {doSetAddAmp, 255, 141,0,  FALSE}     //  168 | 
| +    , {doSetIntersection2, 38 /* & */, 162,0,  TRUE}     //  169      set-lit-amp | 
| +    , {doSetAddAmp, 255, 141,0,  FALSE}     //  170 | 
| +    , {doSetBeginDifference1, 91 /* [ */, 123, 148, TRUE}     //  171      set-set-dash | 
| +    , {doSetDifference2, 45 /* - */, 162,0,  TRUE}     //  172 | 
| +    , {doSetAddDash, 255, 141,0,  FALSE}     //  173 | 
| +    , {doSetDifference2, 45 /* - */, 162,0,  TRUE}     //  174      set-range-dash | 
| +    , {doSetAddDash, 255, 141,0,  FALSE}     //  175 | 
| +    , {doSetIntersection2, 38 /* & */, 162,0,  TRUE}     //  176      set-range-amp | 
| +    , {doSetAddAmp, 255, 141,0,  FALSE}     //  177 | 
| +    , {doSetDifference2, 45 /* - */, 162,0,  TRUE}     //  178      set-lit-dash | 
| +    , {doSetAddDash, 91 /* [ */, 141,0,  FALSE}     //  179 | 
| +    , {doSetAddDash, 93 /* ] */, 141,0,  FALSE}     //  180 | 
| +    , {doNOP, 92 /* \ */, 183,0,  TRUE}     //  181 | 
| +    , {doSetRange, 255, 155,0,  TRUE}     //  182 | 
| +    , {doSetOpError, 115 /* s */, 206,0,  FALSE}     //  183      set-lit-dash-escape | 
| +    , {doSetOpError, 83 /* S */, 206,0,  FALSE}     //  184 | 
| +    , {doSetOpError, 119 /* w */, 206,0,  FALSE}     //  185 | 
| +    , {doSetOpError, 87 /* W */, 206,0,  FALSE}     //  186 | 
| +    , {doSetOpError, 100 /* d */, 206,0,  FALSE}     //  187 | 
| +    , {doSetOpError, 68 /* D */, 206,0,  FALSE}     //  188 | 
| +    , {doSetNamedRange, 78 /* N */, 155,0,  FALSE}     //  189 | 
| +    , {doSetRange, 255, 155,0,  TRUE}     //  190 | 
| +    , {doSetProp, 112 /* p */, 148,0,  FALSE}     //  191      set-escape | 
| +    , {doSetProp, 80 /* P */, 148,0,  FALSE}     //  192 | 
| +    , {doSetNamedChar, 78 /* N */, 141,0,  FALSE}     //  193 | 
| +    , {doSetBackslash_s, 115 /* s */, 155,0,  TRUE}     //  194 | 
| +    , {doSetBackslash_S, 83 /* S */, 155,0,  TRUE}     //  195 | 
| +    , {doSetBackslash_w, 119 /* w */, 155,0,  TRUE}     //  196 | 
| +    , {doSetBackslash_W, 87 /* W */, 155,0,  TRUE}     //  197 | 
| +    , {doSetBackslash_d, 100 /* d */, 155,0,  TRUE}     //  198 | 
| +    , {doSetBackslash_D, 68 /* D */, 155,0,  TRUE}     //  199 | 
| +    , {doSetBackslash_h, 104 /* h */, 155,0,  TRUE}     //  200 | 
| +    , {doSetBackslash_H, 72 /* H */, 155,0,  TRUE}     //  201 | 
| +    , {doSetBackslash_v, 118 /* v */, 155,0,  TRUE}     //  202 | 
| +    , {doSetBackslash_V, 86 /* V */, 155,0,  TRUE}     //  203 | 
| +    , {doSetLiteralEscaped, 255, 141,0,  TRUE}     //  204 | 
| +    , {doSetFinish, 255, 14,0,  FALSE}     //  205      set-finish | 
| +    , {doExit, 255, 206,0,  TRUE}     //  206      errorDeath | 
| }; | 
| static const char * const RegexStateNames[] = {    0, | 
| "start", | 
| @@ -363,6 +402,7 @@ static const char * const RegexStateNames[] = {    0, | 
| "open-paren-lookbehind", | 
| 0, | 
| 0, | 
| +    0, | 
| "paren-comment", | 
| 0, | 
| 0, | 
| @@ -377,6 +417,10 @@ static const char * const RegexStateNames[] = {    0, | 
| 0, | 
| 0, | 
| 0, | 
| +     "named-capture", | 
| +    0, | 
| +    0, | 
| +    0, | 
| "quant-star", | 
| 0, | 
| 0, | 
| @@ -418,6 +462,20 @@ static const char * const RegexStateNames[] = {    0, | 
| 0, | 
| 0, | 
| 0, | 
| +    0, | 
| +    0, | 
| +    0, | 
| +    0, | 
| +    0, | 
| +    0, | 
| +     "named-backref", | 
| +    0, | 
| +     "named-backref-2", | 
| +    0, | 
| +     "named-backref-3", | 
| +    0, | 
| +    0, | 
| +    0, | 
| "set-open", | 
| 0, | 
| 0, | 
| @@ -496,6 +554,10 @@ static const char * const RegexStateNames[] = {    0, | 
| 0, | 
| 0, | 
| 0, | 
| +    0, | 
| +    0, | 
| +    0, | 
| +    0, | 
| "set-finish", | 
| "errorDeath", | 
| 0}; | 
|  |