diff --git a/RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java b/RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java
index 05e873c08ab4..a7fbc5fad606 100644
--- a/RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java
+++ b/RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */
+/* The following code was generated by JFlex 1.7.0 tweaked for IntelliJ platform */
/* It's an automatically generated code. Do not modify it. */
package org.intellij.lang.regexp;
@@ -16,7 +16,7 @@ import static org.intellij.lang.regexp.RegExpCapability.*;
/**
* This class is a scanner generated by
- * JFlex 1.7.0-SNAPSHOT
+ * JFlex 1.7.0
* from the specification file regexp-lexer.flex
*/
class _RegExLexer implements FlexLexer {
@@ -63,147 +63,132 @@ class _RegExLexer implements FlexLexer {
/**
* Translates characters to character classes
+ * Chosen bits are [11, 6, 4]
+ * Total runtime size is 14272 bytes
*/
- private static final String ZZ_CMAP_PACKED =
- "\10\0\2\61\1\76\1\0\1\61\1\76\22\0\1\14\1\74\1\0"+
- "\1\75\1\16\1\0\1\72\1\64\1\2\1\3\1\20\1\21\1\56"+
- "\1\13\1\1\1\0\1\53\3\55\4\54\2\47\1\70\1\0\1\63"+
- "\1\71\1\73\1\17\1\0\1\30\1\30\1\37\1\35\1\45\1\46"+
- "\1\31\1\57\1\40\2\66\1\44\1\67\1\60\1\66\1\42\1\50"+
- "\1\65\1\34\1\66\1\43\1\33\1\33\1\33\1\66\1\32\1\6"+
- "\1\10\1\7\1\23\1\12\1\0\1\25\1\26\1\36\1\35\1\25"+
- "\1\25\1\27\1\57\1\40\1\66\1\62\1\43\1\66\1\24\1\66"+
- "\1\41\1\66\1\24\1\33\1\24\1\52\1\33\1\33\1\51\1\66"+
- "\1\31\1\4\1\22\1\5\54\0\1\11\12\0\1\11\4\0\1\11"+
- "\5\0\27\11\1\0\37\11\1\0\u01ca\11\4\0\14\11\16\0\5\11"+
- "\7\0\1\11\1\0\1\11\201\0\5\11\1\0\2\11\2\0\4\11"+
- "\1\0\1\11\6\0\1\11\1\0\3\11\1\0\1\11\1\0\24\11"+
- "\1\0\123\11\1\0\213\11\10\0\246\11\1\0\46\11\2\0\1\11"+
- "\7\0\47\11\110\0\33\11\5\0\3\11\55\0\53\11\25\0\12\15"+
- "\4\0\2\11\1\0\143\11\1\0\1\11\17\0\2\11\7\0\2\11"+
- "\12\15\3\11\2\0\1\11\20\0\1\11\1\0\36\11\35\0\131\11"+
- "\13\0\1\11\16\0\12\15\41\11\11\0\2\11\4\0\1\11\5\0"+
- "\26\11\4\0\1\11\11\0\1\11\3\0\1\11\27\0\31\11\107\0"+
- "\25\11\117\0\66\11\3\0\1\11\22\0\1\11\7\0\12\11\4\0"+
- "\12\15\1\0\20\11\4\0\10\11\2\0\2\11\2\0\26\11\1\0"+
- "\7\11\1\0\1\11\3\0\4\11\3\0\1\11\20\0\1\11\15\0"+
- "\2\11\1\0\3\11\4\0\12\15\2\11\23\0\6\11\4\0\2\11"+
- "\2\0\26\11\1\0\7\11\1\0\2\11\1\0\2\11\1\0\2\11"+
- "\37\0\4\11\1\0\1\11\7\0\12\15\2\0\3\11\20\0\11\11"+
- "\1\0\3\11\1\0\26\11\1\0\7\11\1\0\2\11\1\0\5\11"+
- "\3\0\1\11\22\0\1\11\17\0\2\11\4\0\12\15\11\0\1\11"+
- "\13\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11\1\0\2\11"+
- "\1\0\5\11\3\0\1\11\36\0\2\11\1\0\3\11\4\0\12\15"+
- "\1\0\1\11\21\0\1\11\1\0\6\11\3\0\3\11\1\0\4\11"+
- "\3\0\2\11\1\0\1\11\1\0\2\11\3\0\2\11\3\0\3\11"+
- "\3\0\14\11\26\0\1\11\25\0\12\15\25\0\10\11\1\0\3\11"+
- "\1\0\27\11\1\0\20\11\3\0\1\11\32\0\3\11\5\0\2\11"+
- "\4\0\12\15\25\0\10\11\1\0\3\11\1\0\27\11\1\0\12\11"+
- "\1\0\5\11\3\0\1\11\40\0\1\11\1\0\2\11\4\0\12\15"+
- "\1\0\2\11\22\0\10\11\1\0\3\11\1\0\51\11\2\0\1\11"+
- "\20\0\1\11\20\0\3\11\4\0\12\15\12\0\6\11\5\0\22\11"+
- "\3\0\30\11\1\0\11\11\1\0\1\11\2\0\7\11\37\0\12\15"+
- "\21\0\60\11\1\0\2\11\14\0\7\11\11\0\12\15\47\0\2\11"+
- "\1\0\1\11\2\0\2\11\1\0\1\11\2\0\1\11\6\0\4\11"+
- "\1\0\7\11\1\0\3\11\1\0\1\11\1\0\1\11\2\0\2\11"+
- "\1\0\4\11\1\0\2\11\11\0\1\11\2\0\5\11\1\0\1\11"+
- "\11\0\12\15\2\0\4\11\40\0\1\11\37\0\12\15\26\0\10\11"+
- "\1\0\44\11\33\0\5\11\163\0\53\11\24\0\1\11\12\15\6\0"+
- "\6\11\4\0\4\11\3\0\1\11\3\0\2\11\7\0\3\11\4\0"+
- "\15\11\14\0\1\11\1\0\12\15\6\0\46\11\1\0\1\11\5\0"+
- "\1\11\2\0\53\11\1\0\u014d\11\1\0\4\11\2\0\7\11\1\0"+
- "\1\11\1\0\4\11\2\0\51\11\1\0\4\11\2\0\41\11\1\0"+
- "\4\11\2\0\7\11\1\0\1\11\1\0\4\11\2\0\17\11\1\0"+
- "\71\11\1\0\4\11\2\0\103\11\45\0\20\11\20\0\126\11\2\0"+
- "\6\11\3\0\u026c\11\2\0\21\11\1\0\32\11\5\0\113\11\6\0"+
- "\10\11\7\0\15\11\1\0\4\11\16\0\22\11\16\0\22\11\16\0"+
- "\15\11\1\0\3\11\17\0\64\11\43\0\1\11\4\0\1\11\3\0"+
- "\12\15\46\0\12\15\6\0\130\11\10\0\51\11\1\0\1\11\5\0"+
- "\106\11\12\0\37\11\47\0\12\15\36\11\2\0\5\11\13\0\54\11"+
- "\4\0\32\11\6\0\12\15\46\0\27\11\11\0\65\11\53\0\12\15"+
- "\6\0\12\15\15\0\1\11\135\0\57\11\21\0\7\11\4\0\12\15"+
- "\51\0\36\11\15\0\2\11\12\15\54\11\32\0\44\11\34\0\12\15"+
- "\3\0\3\11\12\15\44\11\153\0\4\11\1\0\4\11\3\0\2\11"+
- "\11\0\300\11\100\0\u0116\11\2\0\6\11\2\0\46\11\2\0\6\11"+
- "\2\0\10\11\1\0\1\11\1\0\1\11\1\0\1\11\1\0\37\11"+
- "\2\0\65\11\1\0\7\11\1\0\1\11\3\0\3\11\1\0\7\11"+
- "\3\0\4\11\2\0\6\11\4\0\15\11\5\0\3\11\1\0\7\11"+
- "\164\0\1\11\15\0\1\11\20\0\15\11\145\0\1\11\4\0\1\11"+
- "\2\0\12\11\1\0\1\11\3\0\5\11\6\0\1\11\1\0\1\11"+
- "\1\0\1\11\1\0\4\11\1\0\13\11\2\0\4\11\5\0\5\11"+
- "\4\0\1\11\64\0\2\11\u0a7b\0\57\11\1\0\57\11\1\0\205\11"+
- "\6\0\4\11\3\0\2\11\14\0\46\11\1\0\1\11\5\0\1\11"+
- "\2\0\70\11\7\0\1\11\20\0\27\11\11\0\7\11\1\0\7\11"+
- "\1\0\7\11\1\0\7\11\1\0\7\11\1\0\7\11\1\0\7\11"+
- "\1\0\7\11\120\0\1\11\u01d5\0\2\11\52\0\5\11\5\0\2\11"+
- "\4\0\126\11\6\0\3\11\1\0\132\11\1\0\4\11\5\0\51\11"+
- "\3\0\136\11\21\0\33\11\65\0\20\11\u0200\0\u19b6\11\112\0\u51d6\11"+
- "\52\0\u048d\11\103\0\56\11\2\0\u010d\11\3\0\20\11\12\15\2\11"+
- "\24\0\57\11\20\0\37\11\2\0\106\11\61\0\11\11\2\0\147\11"+
- "\2\0\43\11\2\0\10\11\77\0\13\11\1\0\3\11\1\0\4\11"+
- "\1\0\27\11\35\0\64\11\16\0\62\11\34\0\12\15\30\0\6\11"+
- "\3\0\1\11\1\0\1\11\2\0\12\15\34\11\12\0\27\11\31\0"+
- "\35\11\7\0\57\11\34\0\1\11\12\15\6\0\5\11\1\0\12\11"+
- "\12\15\5\11\1\0\51\11\27\0\3\11\1\0\10\11\4\0\12\15"+
- "\6\0\27\11\3\0\1\11\3\0\62\11\1\0\1\11\3\0\2\11"+
- "\2\0\5\11\2\0\1\11\1\0\1\11\30\0\3\11\2\0\13\11"+
- "\7\0\3\11\14\0\6\11\2\0\6\11\2\0\6\11\11\0\7\11"+
- "\1\0\7\11\1\0\53\11\1\0\12\11\12\0\163\11\15\0\12\15"+
- "\6\0\u2ba4\11\14\0\27\11\4\0\61\11\u2104\0\u016e\11\2\0\152\11"+
- "\46\0\7\11\14\0\5\11\5\0\1\11\1\0\12\11\1\0\15\11"+
- "\1\0\5\11\1\0\1\11\1\0\2\11\1\0\2\11\1\0\154\11"+
- "\41\0\u016b\11\22\0\100\11\2\0\66\11\50\0\14\11\164\0\5\11"+
- "\1\0\207\11\23\0\12\15\7\0\32\11\6\0\32\11\13\0\131\11"+
- "\3\0\6\11\2\0\6\11\2\0\6\11\2\0\3\11\43\0\14\11"+
- "\1\0\32\11\1\0\23\11\1\0\2\11\1\0\17\11\2\0\16\11"+
- "\42\0\173\11\u0185\0\35\11\3\0\61\11\57\0\40\11\20\0\21\11"+
- "\1\0\10\11\6\0\46\11\12\0\36\11\2\0\44\11\4\0\10\11"+
- "\60\0\236\11\2\0\12\15\126\0\50\11\10\0\64\11\234\0\u0137\11"+
- "\11\0\26\11\12\0\10\11\230\0\6\11\2\0\1\11\1\0\54\11"+
- "\1\0\2\11\3\0\1\11\2\0\27\11\12\0\27\11\11\0\37\11"+
- "\101\0\23\11\1\0\2\11\12\0\26\11\12\0\32\11\106\0\70\11"+
- "\6\0\2\11\100\0\1\11\17\0\4\11\1\0\3\11\1\0\33\11"+
- "\54\0\35\11\3\0\35\11\43\0\10\11\1\0\34\11\33\0\66\11"+
- "\12\0\26\11\12\0\23\11\15\0\22\11\156\0\111\11\67\0\63\11"+
- "\15\0\63\11\u0310\0\65\11\56\0\12\15\23\0\55\11\40\0\31\11"+
- "\7\0\12\15\11\0\44\11\17\0\12\15\20\0\43\11\3\0\1\11"+
- "\14\0\60\11\16\0\4\11\13\0\12\15\1\11\1\0\1\11\43\0"+
- "\22\11\1\0\31\11\124\0\7\11\1\0\1\11\1\0\4\11\1\0"+
- "\17\11\1\0\12\11\7\0\57\11\21\0\12\15\13\0\10\11\2\0"+
- "\2\11\2\0\26\11\1\0\7\11\1\0\2\11\1\0\5\11\3\0"+
- "\1\11\22\0\1\11\14\0\5\11\u011e\0\60\11\24\0\2\11\1\0"+
- "\1\11\10\0\12\15\246\0\57\11\51\0\4\11\44\0\60\11\24\0"+
- "\1\11\13\0\12\15\46\0\53\11\25\0\12\15\66\0\32\11\26\0"+
- "\12\15\u0166\0\100\11\12\15\25\0\1\11\u01c0\0\71\11\u0507\0\u039a\11"+
- "\346\0\304\11\u0abc\0\u042f\11\u0fd1\0\u0247\11\u21b9\0\u0239\11\7\0\37\11"+
- "\1\0\12\15\146\0\36\11\22\0\60\11\20\0\4\11\14\0\12\15"+
- "\11\0\25\11\5\0\23\11\u0370\0\105\11\13\0\1\11\102\0\15\11"+
- "\u4060\0\2\11\u0bfe\0\153\11\5\0\15\11\3\0\11\11\7\0\12\11"+
- "\u1766\0\125\11\1\0\107\11\1\0\2\11\2\0\1\11\2\0\2\11"+
- "\2\0\4\11\1\0\14\11\1\0\1\11\1\0\7\11\1\0\101\11"+
- "\1\0\4\11\2\0\10\11\1\0\7\11\1\0\34\11\1\0\4\11"+
- "\1\0\5\11\1\0\1\11\3\0\7\11\1\0\u0154\11\2\0\31\11"+
- "\1\0\31\11\1\0\37\11\1\0\31\11\1\0\37\11\1\0\31\11"+
- "\1\0\37\11\1\0\31\11\1\0\37\11\1\0\31\11\1\0\10\11"+
- "\2\0\62\15\u1000\0\305\11\u053b\0\4\11\1\0\33\11\1\0\2\11"+
- "\1\0\1\11\2\0\1\11\1\0\12\11\1\0\4\11\1\0\1\11"+
- "\1\0\1\11\6\0\1\11\4\0\1\11\1\0\1\11\1\0\1\11"+
- "\1\0\3\11\1\0\2\11\1\0\1\11\2\0\1\11\1\0\1\11"+
- "\1\0\1\11\1\0\1\11\1\0\1\11\1\0\2\11\1\0\1\11"+
- "\2\0\4\11\1\0\7\11\1\0\4\11\1\0\4\11\1\0\1\11"+
- "\1\0\12\11\1\0\21\11\5\0\3\11\1\0\5\11\1\0\21\11"+
- "\u1144\0\ua6d7\11\51\0\u1035\11\13\0\336\11\2\0\u1682\11\u295e\0\u021e\11"+
- "\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05f0\0";
+ public static int ZZ_CMAP(int ch) {
+ return ZZ_CMAP_A[(ZZ_CMAP_Y[(ZZ_CMAP_Z[ch>>10]<<6)|((ch>>4)&0x3f)]<<4)|(ch&0xf)];
+ }
- /**
- * Translates characters to character classes
- */
- private static final int ZZ_SX = 0x0700;
- private static final int ZZ_MX = 0x10000;
- private static final int ZZ_LX = 0x110000;
- private static char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_SX);
- private static class M { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_MX); }
- private static class L { static final char [] MAP = zzUnpackCMap(ZZ_CMAP_PACKED, ZZ_LX); }
+ /* The ZZ_CMAP_Z table has 1088 entries */
+ static final char ZZ_CMAP_Z[] = zzUnpackCMap(
+ "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\2\11\1\12\1\13\6\14\1\15\23\14\1\16"+
+ "\1\14\1\17\1\20\12\14\1\21\10\11\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1"+
+ "\32\1\33\1\34\1\35\2\11\1\14\1\36\3\11\1\37\10\11\1\40\1\41\5\14\1\42\1\43"+
+ "\11\11\1\44\2\11\1\45\5\11\1\46\4\11\1\47\1\50\4\11\51\14\1\51\3\14\1\52\1"+
+ "\53\4\14\1\54\12\11\1\55\u0381\11");
+
+ /* The ZZ_CMAP_Y table has 2944 entries */
+ static final char ZZ_CMAP_Y[] = zzUnpackCMap(
+ "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\2\1\1\10\1\11\1\12\1\13\1\12\1\13\34\12\1"+
+ "\14\1\15\1\16\10\1\1\17\1\20\1\12\1\21\4\12\1\22\10\12\1\23\12\12\1\24\1\12"+
+ "\1\25\1\24\1\12\1\26\4\1\1\12\1\27\1\30\2\1\2\12\1\27\1\1\1\31\1\24\5\12\1"+
+ "\32\1\33\1\34\1\1\1\35\1\12\1\1\1\36\5\12\1\37\1\40\1\41\1\12\1\27\1\42\1"+
+ "\12\1\43\1\44\1\1\1\12\1\45\4\1\1\12\1\46\4\1\1\47\2\12\1\50\1\1\1\51\1\52"+
+ "\1\24\1\53\1\54\1\55\1\56\1\57\1\60\1\52\1\15\1\61\1\54\1\55\1\62\1\1\1\63"+
+ "\1\64\1\65\1\66\1\21\1\55\1\67\1\1\1\70\1\52\1\71\1\72\1\54\1\55\1\67\1\1"+
+ "\1\60\1\52\1\40\1\73\1\74\1\75\1\76\1\1\1\70\1\64\1\1\1\77\1\35\1\55\1\50"+
+ "\1\1\1\100\1\52\1\1\1\101\1\35\1\55\1\102\1\1\1\57\1\52\1\103\1\77\1\35\1"+
+ "\12\1\104\1\57\1\105\1\52\1\106\1\107\1\110\1\12\1\111\1\112\1\1\1\64\1\1"+
+ "\1\24\2\12\1\113\1\112\1\114\2\1\1\115\1\116\1\117\1\120\1\121\1\122\2\1\1"+
+ "\70\1\1\1\114\1\1\1\123\1\12\1\124\1\1\1\125\7\1\2\12\1\27\1\126\1\114\1\127"+
+ "\1\130\1\131\1\132\1\114\2\12\1\133\2\12\1\134\24\12\1\135\1\136\2\12\1\135"+
+ "\2\12\1\137\1\140\1\13\3\12\1\140\3\12\1\27\2\1\1\12\1\1\5\12\1\141\1\24\45"+
+ "\12\1\142\1\12\1\24\1\27\4\12\1\27\1\143\1\144\1\15\1\12\1\15\1\12\1\15\1"+
+ "\144\1\70\3\12\1\145\1\1\1\146\1\114\2\1\1\114\5\12\1\26\1\147\1\12\1\150"+
+ "\4\12\1\37\1\12\1\151\2\1\1\64\1\12\1\152\1\153\2\12\1\154\1\12\1\76\1\114"+
+ "\2\1\1\12\1\112\3\12\1\153\2\1\2\114\1\155\5\1\1\107\2\12\1\145\1\156\1\114"+
+ "\2\1\1\157\1\12\1\160\1\41\2\12\1\37\1\1\2\12\1\145\1\1\1\161\1\41\1\12\1"+
+ "\152\1\45\5\1\1\162\1\163\14\12\4\1\21\12\1\141\2\12\1\141\1\164\1\12\1\152"+
+ "\3\12\1\165\1\166\1\167\1\124\1\166\7\1\1\170\1\1\1\124\6\1\1\171\1\172\1"+
+ "\173\1\174\1\175\3\1\1\176\147\1\2\12\1\151\2\12\1\151\10\12\1\177\1\200\2"+
+ "\12\1\133\3\12\1\201\1\1\1\12\1\112\4\202\4\1\1\126\35\1\1\203\2\1\1\204\1"+
+ "\24\4\12\1\205\1\24\4\12\1\134\1\107\1\12\1\152\1\24\4\12\1\151\1\1\1\12\1"+
+ "\27\3\1\1\12\40\1\133\12\1\37\4\1\135\12\1\37\2\1\10\12\1\124\4\1\2\12\1\152"+
+ "\20\12\1\124\1\12\1\206\1\1\2\12\1\151\1\126\1\12\1\152\4\12\1\37\2\1\1\207"+
+ "\1\210\5\12\1\211\1\12\1\151\1\26\3\1\1\207\1\212\1\12\1\30\1\1\3\12\1\145"+
+ "\1\210\2\12\1\145\1\1\1\114\1\1\1\213\1\41\1\12\1\37\1\12\1\112\1\1\1\12\1"+
+ "\124\1\47\2\12\1\30\1\126\1\114\1\214\1\215\2\12\1\45\1\1\1\216\1\114\1\12"+
+ "\1\217\3\12\1\220\1\221\1\222\1\27\1\65\1\223\1\224\1\202\2\12\1\134\1\37"+
+ "\7\12\1\30\1\114\72\12\1\145\1\12\1\225\2\12\1\154\20\1\26\12\1\152\6\12\1"+
+ "\76\2\1\1\112\1\226\1\55\1\227\1\230\6\12\1\15\1\1\1\157\25\12\1\152\1\1\4"+
+ "\12\1\210\2\12\1\26\2\1\1\154\7\1\1\214\7\12\1\124\1\1\1\114\1\24\1\27\1\24"+
+ "\1\27\1\231\4\12\1\151\1\232\1\233\2\1\1\234\1\12\1\13\1\235\2\152\2\1\7\12"+
+ "\1\27\30\1\1\12\1\124\3\12\1\70\2\1\2\12\1\1\1\12\1\236\2\12\1\37\1\12\1\152"+
+ "\2\12\1\237\3\1\11\12\1\152\1\114\2\12\1\237\1\12\1\154\2\12\1\26\3\12\1\145"+
+ "\11\1\23\12\1\112\1\12\1\37\1\26\11\1\1\240\2\12\1\241\1\12\1\37\1\12\1\112"+
+ "\1\12\1\151\4\1\1\12\1\242\1\12\1\37\1\12\1\76\4\1\3\12\1\243\4\1\1\70\1\244"+
+ "\1\12\1\145\2\1\1\12\1\124\1\12\1\124\2\1\1\123\1\12\1\153\1\1\3\12\1\37\1"+
+ "\12\1\37\1\12\1\30\1\12\1\15\6\1\4\12\1\45\3\1\3\12\1\30\3\12\1\30\60\1\1"+
+ "\157\2\12\1\26\2\1\1\64\1\1\1\157\2\12\2\1\1\12\1\45\1\114\1\157\1\12\1\112"+
+ "\1\64\1\1\2\12\1\245\1\157\2\12\1\30\1\246\1\247\2\1\1\12\1\21\1\154\5\1\1"+
+ "\250\1\251\1\45\2\12\1\151\1\1\1\114\1\72\1\54\1\55\1\67\1\1\1\252\1\15\11"+
+ "\1\3\12\1\153\1\253\1\114\2\1\3\12\1\1\1\254\1\114\12\1\2\12\1\151\2\1\1\255"+
+ "\2\1\3\12\1\1\1\256\1\114\2\1\2\12\1\27\1\1\1\114\3\1\1\12\1\76\1\1\1\114"+
+ "\26\1\4\12\1\114\1\126\34\1\3\12\1\45\20\1\1\55\1\12\1\151\1\1\1\70\1\114"+
+ "\1\1\1\210\1\12\67\1\71\12\1\76\16\1\14\12\1\145\53\1\2\12\1\151\75\1\44\12"+
+ "\1\112\33\1\43\12\1\45\1\12\1\151\1\114\6\1\1\12\1\152\1\1\3\12\1\1\1\145"+
+ "\1\114\1\157\1\257\1\12\67\1\4\12\1\153\1\70\3\1\1\157\4\1\1\70\1\1\76\12"+
+ "\1\124\1\1\57\12\1\30\20\1\1\15\77\1\6\12\1\27\1\124\1\45\1\76\66\1\5\12\1"+
+ "\214\3\12\1\144\1\260\1\261\1\262\3\12\1\263\1\264\1\12\1\265\1\266\1\35\24"+
+ "\12\1\267\1\12\1\35\1\134\1\12\1\134\1\12\1\214\1\12\1\214\1\151\1\12\1\151"+
+ "\1\12\1\55\1\12\1\55\1\12\1\270\3\271\14\12\1\153\3\1\4\12\1\145\1\114\112"+
+ "\1\1\262\1\12\1\272\1\273\1\274\1\275\1\276\1\277\1\300\1\154\1\301\1\154"+
+ "\24\1\55\12\1\112\2\1\103\12\1\153\15\12\1\152\150\12\1\15\25\1\41\12\1\152"+
+ "\36\1");
+
+ /* The ZZ_CMAP_A table has 3104 entries */
+ static final char ZZ_CMAP_A[] = zzUnpackCMap(
+ "\10\0\2\61\1\76\1\0\1\61\1\76\22\0\1\14\1\74\1\0\1\75\1\16\1\0\1\72\1\64\1"+
+ "\2\1\3\1\20\1\21\1\56\1\13\1\1\1\0\1\53\3\55\4\54\2\47\1\70\1\0\1\63\1\71"+
+ "\1\73\1\17\1\0\2\30\1\37\1\35\1\45\1\46\1\31\1\57\1\40\2\66\1\44\1\67\1\60"+
+ "\1\66\1\42\1\50\1\65\1\34\1\66\1\43\3\33\1\66\1\32\1\6\1\10\1\7\1\23\1\12"+
+ "\1\0\1\25\1\26\1\36\1\35\2\25\1\27\1\57\1\40\1\66\1\62\1\43\1\66\1\24\1\66"+
+ "\1\41\1\66\1\24\1\33\1\24\1\52\2\33\1\51\1\66\1\31\1\4\1\22\1\5\14\0\1\11"+
+ "\12\0\1\11\4\0\1\11\5\0\27\11\1\0\12\11\4\0\14\11\16\0\5\11\7\0\1\11\1\0\1"+
+ "\11\1\0\5\11\1\0\2\11\2\0\4\11\1\0\1\11\6\0\1\11\1\0\3\11\1\0\1\11\1\0\4\11"+
+ "\1\0\23\11\1\0\13\11\10\0\6\11\1\0\26\11\2\0\1\11\6\0\10\11\10\0\13\11\5\0"+
+ "\3\11\15\0\12\15\4\0\6\11\1\0\1\11\17\0\2\11\7\0\2\11\12\15\3\11\2\0\2\11"+
+ "\1\0\16\11\15\0\11\11\13\0\1\11\16\0\12\15\6\11\4\0\2\11\4\0\1\11\5\0\6\11"+
+ "\4\0\1\11\11\0\1\11\3\0\1\11\7\0\11\11\7\0\5\11\1\0\10\11\6\0\26\11\3\0\1"+
+ "\11\2\0\1\11\7\0\12\11\4\0\12\15\1\11\4\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11"+
+ "\1\0\1\11\3\0\4\11\3\0\1\11\20\0\1\11\15\0\2\11\1\0\1\11\5\0\6\11\4\0\2\11"+
+ "\1\0\2\11\1\0\2\11\1\0\2\11\17\0\4\11\1\0\1\11\7\0\12\15\2\0\3\11\20\0\11"+
+ "\11\1\0\2\11\1\0\2\11\1\0\5\11\3\0\1\11\2\0\1\11\30\0\1\11\13\0\10\11\2\0"+
+ "\1\11\3\0\1\11\1\0\6\11\3\0\3\11\1\0\4\11\3\0\2\11\1\0\1\11\1\0\2\11\3\0\2"+
+ "\11\3\0\3\11\3\0\14\11\13\0\10\11\1\0\2\11\10\0\3\11\5\0\1\11\4\0\10\11\1"+
+ "\0\6\11\1\0\5\11\3\0\1\11\3\0\2\11\15\0\13\11\2\0\1\11\6\0\3\11\10\0\1\11"+
+ "\12\0\6\11\5\0\22\11\3\0\10\11\1\0\11\11\1\0\1\11\2\0\7\11\11\0\1\11\1\0\2"+
+ "\11\14\0\12\15\7\0\2\11\1\0\1\11\2\0\2\11\1\0\1\11\2\0\1\11\6\0\4\11\1\0\7"+
+ "\11\1\0\3\11\1\0\1\11\1\0\1\11\2\0\2\11\1\0\4\11\1\0\2\11\11\0\1\11\2\0\5"+
+ "\11\1\0\1\11\11\0\12\15\2\0\14\11\1\0\24\11\13\0\5\11\22\0\7\11\4\0\4\11\3"+
+ "\0\1\11\3\0\2\11\7\0\3\11\4\0\15\11\14\0\1\11\1\0\6\11\1\0\1\11\5\0\1\11\2"+
+ "\0\13\11\1\0\15\11\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11\2\0\1\11\1\0\4\11\2"+
+ "\0\7\11\1\0\1\11\1\0\4\11\2\0\16\11\2\0\6\11\2\0\15\11\2\0\1\11\1\0\10\11"+
+ "\7\0\15\11\1\0\6\11\23\0\1\11\4\0\1\11\3\0\5\11\2\0\22\11\1\0\1\11\5\0\17"+
+ "\11\1\0\16\11\2\0\5\11\13\0\14\11\13\0\1\11\15\0\7\11\7\0\16\11\15\0\2\11"+
+ "\12\15\3\0\3\11\11\0\4\11\1\0\4\11\3\0\2\11\11\0\10\11\1\0\1\11\1\0\1\11\1"+
+ "\0\1\11\1\0\6\11\1\0\7\11\1\0\1\11\3\0\3\11\1\0\7\11\3\0\4\11\2\0\6\11\5\0"+
+ "\1\11\15\0\1\11\2\0\1\11\4\0\1\11\2\0\12\11\1\0\1\11\3\0\5\11\6\0\1\11\1\0"+
+ "\1\11\1\0\1\11\1\0\4\11\1\0\13\11\2\0\4\11\5\0\5\11\4\0\1\11\4\0\2\11\13\0"+
+ "\5\11\6\0\4\11\3\0\2\11\14\0\10\11\7\0\10\11\1\0\7\11\6\0\2\11\12\0\5\11\5"+
+ "\0\2\11\3\0\7\11\6\0\3\11\12\15\2\11\13\0\11\11\2\0\27\11\2\0\7\11\1\0\3\11"+
+ "\1\0\4\11\1\0\4\11\2\0\6\11\3\0\1\11\1\0\1\11\2\0\5\11\1\0\12\11\12\15\5\11"+
+ "\1\0\3\11\1\0\10\11\4\0\7\11\3\0\1\11\3\0\2\11\1\0\1\11\3\0\2\11\2\0\5\11"+
+ "\2\0\1\11\1\0\1\11\30\0\3\11\3\0\6\11\2\0\6\11\2\0\6\11\11\0\7\11\4\0\5\11"+
+ "\3\0\5\11\5\0\1\11\1\0\10\11\1\0\5\11\1\0\1\11\1\0\2\11\1\0\2\11\1\0\12\11"+
+ "\6\0\12\11\2\0\6\11\2\0\6\11\2\0\6\11\2\0\3\11\3\0\14\11\1\0\16\11\1\0\2\11"+
+ "\1\0\2\11\1\0\10\11\6\0\4\11\4\0\16\11\2\0\1\11\1\0\14\11\1\0\2\11\3\0\1\11"+
+ "\2\0\4\11\1\0\2\11\12\0\10\11\6\0\6\11\1\0\3\11\1\0\12\11\3\0\1\11\12\0\4"+
+ "\11\13\0\12\15\1\11\1\0\1\11\3\0\7\11\1\0\1\11\1\0\4\11\1\0\17\11\1\0\2\11"+
+ "\14\0\3\11\7\0\4\11\11\0\2\11\1\0\1\11\20\0\4\11\10\0\1\11\13\0\10\11\5\0"+
+ "\3\11\2\0\1\11\2\0\2\11\2\0\4\11\1\0\14\11\1\0\1\11\1\0\7\11\1\0\21\11\1\0"+
+ "\4\11\2\0\10\11\1\0\7\11\1\0\14\11\1\0\4\11\1\0\5\11\1\0\1\11\3\0\14\11\2"+
+ "\0\13\11\1\0\10\11\2\0\22\15\1\0\2\11\1\0\1\11\2\0\1\11\1\0\12\11\1\0\4\11"+
+ "\1\0\1\11\1\0\1\11\6\0\1\11\4\0\1\11\1\0\1\11\1\0\1\11\1\0\3\11\1\0\2\11\1"+
+ "\0\1\11\2\0\1\11\1\0\1\11\1\0\1\11\1\0\1\11\1\0\1\11\1\0\2\11\1\0\1\11\2\0"+
+ "\4\11\1\0\7\11\1\0\4\11\1\0\4\11\1\0\1\11\1\0\12\11\1\0\5\11\1\0\3\11\1\0"+
+ "\5\11\1\0\5\11");
/**
* Translates DFA states to action switch labels.
@@ -319,80 +304,81 @@ class _RegExLexer implements FlexLexer {
"\6\50\1\74\13\50\1\72\3\50\1\73\66\50\3\75"+
"\1\76\5\75\1\77\1\75\1\100\10\75\23\77\1\75"+
"\3\77\4\75\2\77\1\75\1\77\2\75\3\77\1\101"+
- "\6\75\76\14\1\102\11\75\1\103\12\75\23\103\1\75"+
- "\3\103\4\75\2\103\1\75\1\103\2\75\3\103\3\75"+
- "\1\104\14\75\1\103\12\75\23\103\1\75\3\103\4\75"+
- "\2\103\1\75\1\103\1\75\1\105\3\103\12\75\1\76"+
- "\5\75\1\103\12\75\23\103\1\75\3\103\4\75\2\103"+
- "\1\75\1\103\2\75\3\103\12\75\1\76\5\75\1\103"+
- "\3\75\1\53\6\75\23\103\1\53\3\103\3\53\1\75"+
- "\2\103\1\75\1\103\2\75\3\103\7\75\11\106\1\52"+
- "\11\106\1\44\23\52\1\106\3\52\4\106\2\52\1\106"+
- "\1\52\1\107\1\106\3\52\1\110\2\106\1\107\3\106"+
- "\1\111\1\112\7\111\1\113\12\111\23\113\1\111\3\113"+
- "\4\111\2\113\1\111\1\113\2\111\3\113\7\111\11\114"+
- "\1\115\12\114\23\115\1\114\3\115\4\114\2\115\1\114"+
- "\1\115\2\114\3\115\1\114\1\116\5\114\4\0\1\117"+
- "\210\0\1\120\74\0\1\121\31\0\1\121\3\0\3\121"+
- "\1\122\43\0\1\123\53\0\1\124\3\125\1\126\1\127"+
- "\1\125\1\124\1\125\2\124\1\130\1\131\1\124\6\125"+
- "\2\132\1\133\1\134\3\135\3\136\1\137\2\140\2\141"+
- "\3\142\1\143\1\144\1\145\1\146\1\147\1\150\2\144"+
- "\1\124\1\151\1\152\1\131\1\153\2\124\1\136\2\143"+
- "\6\124\1\131\45\0\1\154\33\0\2\52\5\0\5\52"+
- "\6\0\32\52\1\0\2\52\1\0\1\52\2\0\3\52"+
- "\24\0\1\53\31\0\1\53\3\0\3\53\22\0\1\155"+
- "\21\0\1\156\44\0\1\157\1\155\14\0\1\160\13\0"+
- "\1\161\24\0\1\162\27\0\1\163\21\0\1\164\44\0"+
- "\2\163\5\0\6\124\3\125\2\124\1\130\1\131\7\124"+
- "\3\132\4\143\3\136\1\137\2\140\2\141\3\142\1\143"+
- "\1\144\1\145\1\146\1\147\1\150\2\144\1\124\1\151"+
- "\1\152\1\131\1\143\2\124\3\143\6\124\1\131\72\0"+
- "\1\165\4\0\6\124\1\125\1\124\1\125\2\124\1\130"+
- "\1\131\7\124\2\132\5\143\3\136\1\137\2\140\2\141"+
- "\3\142\1\143\1\144\1\145\1\146\1\147\1\150\2\144"+
- "\1\124\1\151\1\152\1\131\1\143\2\124\3\143\6\124"+
- "\1\131\11\0\1\77\12\0\23\77\1\0\3\77\4\0"+
- "\2\77\1\0\1\77\2\0\3\77\20\0\1\100\12\0"+
- "\23\100\1\0\3\100\4\0\2\100\1\0\1\100\2\0"+
- "\3\100\20\0\5\103\6\0\32\103\1\0\2\103\1\0"+
- "\1\103\2\0\3\103\16\0\1\166\70\0\1\167\76\0"+
- "\1\167\5\0\1\170\70\0\1\167\7\0\1\171\1\0"+
- "\1\171\1\0\1\172\6\0\23\171\1\172\3\171\3\172"+
- "\1\0\2\171\1\0\1\171\2\0\3\171\100\0\1\167"+
- "\7\0\2\52\5\0\5\52\6\0\32\52\1\0\2\52"+
- "\1\0\1\52\2\0\3\52\1\0\1\167\14\0\1\173"+
- "\61\0\1\167\12\0\1\174\17\0\2\175\1\0\1\175"+
- "\4\0\3\175\5\0\3\175\3\0\3\175\23\0\1\176"+
- "\37\0\1\177\20\0\1\200\1\201\3\0\1\202\1\203"+
- "\1\0\1\204\1\205\1\206\6\0\1\207\7\0\1\121"+
- "\31\0\1\121\3\0\3\121\1\210\25\0\1\211\7\0"+
- "\1\212\31\0\1\212\3\0\3\212\36\0\1\213\31\0"+
- "\1\213\3\0\3\213\1\214\24\0\1\215\155\0\1\216"+
- "\1\217\12\0\77\220\47\0\1\221\3\0\3\221\25\0"+
- "\1\222\20\0\2\223\1\0\1\223\4\0\3\223\5\0"+
- "\3\223\3\0\3\223\25\0\1\224\20\0\2\225\1\0"+
- "\1\225\4\0\3\225\5\0\3\225\3\0\3\225\74\0"+
- "\1\226\1\227\1\226\104\0\1\230\1\231\21\0\1\232"+
- "\100\0\1\171\1\0\1\171\1\0\1\172\6\0\23\171"+
- "\1\172\3\171\3\172\1\0\2\171\1\0\1\171\2\0"+
- "\3\171\14\0\1\233\17\0\2\175\1\0\1\175\4\0"+
- "\3\175\5\0\3\175\3\0\3\175\104\0\1\234\5\0"+
- "\1\235\76\0\1\236\2\0\1\237\2\0\3\240\1\0"+
- "\73\240\5\0\1\207\7\0\1\210\31\0\1\210\3\0"+
- "\3\210\26\0\1\241\7\0\1\212\31\0\1\212\3\0"+
- "\3\212\26\0\1\242\7\0\1\213\31\0\1\213\3\0"+
- "\3\213\1\243\25\0\1\244\7\0\1\245\31\0\1\245"+
- "\3\0\3\245\50\0\1\246\116\0\1\247\3\0\3\247"+
- "\46\0\2\250\1\0\1\250\4\0\3\250\5\0\3\250"+
- "\3\0\3\250\46\0\2\251\1\0\1\251\4\0\3\251"+
- "\5\0\3\251\3\0\3\251\74\0\3\252\74\0\3\253"+
- "\21\0\3\240\1\254\73\240\5\0\1\242\7\0\1\243"+
- "\31\0\1\243\3\0\3\243\26\0\1\255\7\0\1\245"+
- "\31\0\1\245\3\0\3\245\26\0\1\135\116\0\2\256"+
- "\1\0\1\256\4\0\3\256\5\0\3\256\3\0\3\256"+
- "\74\0\3\257\46\0\2\260\1\0\1\260\4\0\3\260"+
- "\5\0\3\260\3\0\3\260\21\0";
+ "\6\75\76\14\1\102\10\75\3\103\3\75\1\103\5\75"+
+ "\23\103\1\75\3\103\4\75\2\103\1\75\1\103\2\75"+
+ "\3\103\3\75\1\104\13\75\3\103\3\75\1\103\5\75"+
+ "\23\103\1\75\3\103\4\75\2\103\1\75\1\103\1\75"+
+ "\1\105\3\103\12\75\1\76\4\75\3\103\3\75\1\103"+
+ "\5\75\23\103\1\75\3\103\4\75\2\103\1\75\1\103"+
+ "\2\75\3\103\12\75\1\76\4\75\3\103\2\75\1\53"+
+ "\1\103\5\75\23\103\1\53\3\103\3\53\1\75\2\103"+
+ "\1\75\1\103\2\75\3\103\7\75\11\106\1\52\11\106"+
+ "\1\44\23\52\1\106\3\52\4\106\2\52\1\106\1\52"+
+ "\1\107\1\106\3\52\1\110\2\106\1\107\3\106\1\111"+
+ "\1\112\7\111\1\113\12\111\23\113\1\111\3\113\4\111"+
+ "\2\113\1\111\1\113\2\111\3\113\7\111\11\114\1\115"+
+ "\12\114\23\115\1\114\3\115\4\114\2\115\1\114\1\115"+
+ "\2\114\3\115\1\114\1\116\5\114\4\0\1\117\210\0"+
+ "\1\120\74\0\1\121\31\0\1\121\3\0\3\121\1\122"+
+ "\43\0\1\123\53\0\1\124\3\125\1\126\1\127\1\125"+
+ "\1\124\1\125\2\124\1\130\1\131\1\124\6\125\2\132"+
+ "\1\133\1\134\3\135\3\136\1\137\2\140\2\141\3\142"+
+ "\1\143\1\144\1\145\1\146\1\147\1\150\2\144\1\124"+
+ "\1\151\1\152\1\131\1\153\2\124\1\136\2\143\6\124"+
+ "\1\131\45\0\1\154\33\0\2\52\5\0\5\52\6\0"+
+ "\32\52\1\0\2\52\1\0\1\52\2\0\3\52\24\0"+
+ "\1\53\31\0\1\53\3\0\3\53\22\0\1\155\21\0"+
+ "\1\156\44\0\1\157\1\155\14\0\1\160\13\0\1\161"+
+ "\24\0\1\162\27\0\1\163\21\0\1\164\44\0\2\163"+
+ "\5\0\6\124\3\125\2\124\1\130\1\131\7\124\3\132"+
+ "\4\143\3\136\1\137\2\140\2\141\3\142\1\143\1\144"+
+ "\1\145\1\146\1\147\1\150\2\144\1\124\1\151\1\152"+
+ "\1\131\1\143\2\124\3\143\6\124\1\131\72\0\1\165"+
+ "\4\0\6\124\1\125\1\124\1\125\2\124\1\130\1\131"+
+ "\7\124\2\132\5\143\3\136\1\137\2\140\2\141\3\142"+
+ "\1\143\1\144\1\145\1\146\1\147\1\150\2\144\1\124"+
+ "\1\151\1\152\1\131\1\143\2\124\3\143\6\124\1\131"+
+ "\11\0\1\77\12\0\23\77\1\0\3\77\4\0\2\77"+
+ "\1\0\1\77\2\0\3\77\20\0\1\100\12\0\23\100"+
+ "\1\0\3\100\4\0\2\100\1\0\1\100\2\0\3\100"+
+ "\17\0\7\103\5\0\32\103\1\0\2\103\1\0\1\103"+
+ "\2\0\3\103\16\0\1\166\70\0\1\167\76\0\1\167"+
+ "\5\0\1\170\70\0\1\167\7\0\1\171\1\0\1\171"+
+ "\1\0\1\172\6\0\23\171\1\172\3\171\3\172\1\0"+
+ "\2\171\1\0\1\171\2\0\3\171\100\0\1\167\7\0"+
+ "\2\52\5\0\5\52\6\0\32\52\1\0\2\52\1\0"+
+ "\1\52\2\0\3\52\1\0\1\167\14\0\1\173\61\0"+
+ "\1\167\12\0\1\174\17\0\2\175\1\0\1\175\4\0"+
+ "\3\175\5\0\3\175\3\0\3\175\23\0\1\176\37\0"+
+ "\1\177\20\0\1\200\1\201\3\0\1\202\1\203\1\0"+
+ "\1\204\1\205\1\206\6\0\1\207\7\0\1\121\31\0"+
+ "\1\121\3\0\3\121\1\210\25\0\1\211\7\0\1\212"+
+ "\31\0\1\212\3\0\3\212\36\0\1\213\31\0\1\213"+
+ "\3\0\3\213\1\214\24\0\1\215\155\0\1\216\1\217"+
+ "\12\0\77\220\47\0\1\221\3\0\3\221\25\0\1\222"+
+ "\20\0\2\223\1\0\1\223\4\0\3\223\5\0\3\223"+
+ "\3\0\3\223\25\0\1\224\20\0\2\225\1\0\1\225"+
+ "\4\0\3\225\5\0\3\225\3\0\3\225\74\0\1\226"+
+ "\1\227\1\226\104\0\1\230\1\231\21\0\1\232\100\0"+
+ "\1\171\1\0\1\171\1\0\1\172\6\0\23\171\1\172"+
+ "\3\171\3\172\1\0\2\171\1\0\1\171\2\0\3\171"+
+ "\14\0\1\233\17\0\2\175\1\0\1\175\4\0\3\175"+
+ "\5\0\3\175\3\0\3\175\104\0\1\234\5\0\1\235"+
+ "\76\0\1\236\2\0\1\237\2\0\3\240\1\0\73\240"+
+ "\5\0\1\207\7\0\1\210\31\0\1\210\3\0\3\210"+
+ "\26\0\1\241\7\0\1\212\31\0\1\212\3\0\3\212"+
+ "\26\0\1\242\7\0\1\213\31\0\1\213\3\0\3\213"+
+ "\1\243\25\0\1\244\7\0\1\245\31\0\1\245\3\0"+
+ "\3\245\50\0\1\246\116\0\1\247\3\0\3\247\46\0"+
+ "\2\250\1\0\1\250\4\0\3\250\5\0\3\250\3\0"+
+ "\3\250\46\0\2\251\1\0\1\251\4\0\3\251\5\0"+
+ "\3\251\3\0\3\251\74\0\3\252\74\0\3\253\21\0"+
+ "\3\240\1\254\73\240\5\0\1\242\7\0\1\243\31\0"+
+ "\1\243\3\0\3\243\26\0\1\255\7\0\1\245\31\0"+
+ "\1\245\3\0\3\245\26\0\1\135\116\0\2\256\1\0"+
+ "\1\256\4\0\3\256\5\0\3\256\3\0\3\256\74\0"+
+ "\3\257\46\0\2\260\1\0\1\260\4\0\3\260\5\0"+
+ "\3\260\3\0\3\260\21\0";
private static int [] zzUnpackTrans() {
int [] result = new int[5040];
@@ -596,14 +582,18 @@ class _RegExLexer implements FlexLexer {
* @param packed the packed character translation table
* @return the unpacked character translation table
*/
- private static char [] zzUnpackCMap(String packed, int limit) {
- char [] map = new char[limit];
+ private static char [] zzUnpackCMap(String packed) {
+ int size = 0;
+ for (int i = 0, length = packed.length(); i < length; i += 2) {
+ size += packed.charAt(i);
+ }
+ char[] map = new char[size];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
- while (i < 2590 && j < limit) {
+ while (i < packed.length()) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
- do map[j++] = value; while (--count > 0 && j < limit);
+ do map[j++] = value; while (--count > 0);
}
return map;
}
@@ -746,7 +736,6 @@ class _RegExLexer implements FlexLexer {
int zzMarkedPosL;
int zzEndReadL = zzEndRead;
CharSequence zzBufferL = zzBuffer;
- char [] zzCMapL = ZZ_CMAP;
int [] zzTransL = ZZ_TRANS;
int [] zzRowMapL = ZZ_ROWMAP;
@@ -798,8 +787,7 @@ class _RegExLexer implements FlexLexer {
zzCurrentPosL += Character.charCount(zzInput);
}
}
- if (zzInput >= zzCMapL.length) ZZ_CMAP = zzCMapL = zzInput >= ZZ_MX ? L.MAP : M.MAP;
- int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
+ int zzNext = zzTransL[ zzRowMapL[zzState] + ZZ_CMAP(zzInput) ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
@@ -824,242 +812,301 @@ class _RegExLexer implements FlexLexer {
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 1:
{ yypopstate(); return RegExpTT.COMMENT;
- }
+ }
+ // fall through
case 113: break;
case 2:
{ return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 114: break;
case 3:
{ return RegExpTT.DOT;
- }
+ }
+ // fall through
case 115: break;
case 4:
{ capturingGroupCount++; return RegExpTT.GROUP_BEGIN;
- }
+ }
+ // fall through
case 116: break;
case 5:
{ return RegExpTT.GROUP_END;
- }
+ }
+ // fall through
case 117: break;
case 6:
{ if (allowDanglingMetacharacters != Boolean.TRUE) { yypushstate(QUANTIFIER); return RegExpTT.LBRACE; } return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 118: break;
case 7:
{ return (allowDanglingMetacharacters != Boolean.FALSE) ? RegExpTT.CHARACTER : RegExpTT.RBRACE;
- }
+ }
+ // fall through
case 119: break;
case 8:
{ yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN;
- }
+ }
+ // fall through
case 120: break;
case 9:
{ return allowDanglingMetacharacters == Boolean.FALSE ? RegExpTT.CLASS_END : RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 121: break;
case 10:
{ return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
- }
+ }
+ // fall through
case 122: break;
case 11:
{ return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 123: break;
case 12:
{ return RegExpTT.DOLLAR;
- }
+ }
+ // fall through
case 124: break;
case 13:
{ return RegExpTT.QUEST;
- }
+ }
+ // fall through
case 125: break;
case 14:
{ return RegExpTT.STAR;
- }
+ }
+ // fall through
case 126: break;
case 15:
{ return RegExpTT.PLUS;
- }
+ }
+ // fall through
case 127: break;
case 16:
{ return RegExpTT.UNION;
- }
+ }
+ // fall through
case 128: break;
case 17:
{ return RegExpTT.CARET;
- }
+ }
+ // fall through
case 129: break;
case 18:
{ return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
- }
+ }
+ // fall through
case 130: break;
case 19:
{ if (commentMode) { yypushstate(COMMENT); return RegExpTT.COMMENT; } else return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 131: break;
case 20:
{ yypopstate(); yypushback(1);
- }
+ }
+ // fall through
case 132: break;
case 21:
{ yypopstate(); return RegExpTT.RBRACE;
- }
+ }
+ // fall through
case 133: break;
case 22:
{ return RegExpTT.NAME;
- }
+ }
+ // fall through
case 134: break;
case 23:
{ return RegExpTT.NUMBER;
- }
+ }
+ // fall through
case 135: break;
case 24:
{ return RegExpTT.COMMA;
- }
+ }
+ // fall through
case 136: break;
case 25:
{ yybegin(CLASS1); return RegExpTT.CARET;
- }
+ }
+ // fall through
case 137: break;
case 26:
{ states.set(states.size() - 1, CLASS2); return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 138: break;
case 27:
{ yypushback(1); yybegin(CLASS2);
- }
+ }
+ // fall through
case 139: break;
case 28:
{ yybegin(CLASS2); if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 140: break;
case 29:
{ if (allowEmptyCharacterClass) { yypopstate(); return RegExpTT.CLASS_END; } yybegin(CLASS2); return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 141: break;
case 30:
{ if (commentMode) return com.intellij.psi.TokenType.WHITE_SPACE; yypushback(1); yybegin(CLASS2);
- }
+ }
+ // fall through
case 142: break;
case 31:
{ if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 143: break;
case 32:
{ yypopstate(); return RegExpTT.CLASS_END;
- }
+ }
+ // fall through
case 144: break;
case 33:
{ return RegExpTT.MINUS;
- }
+ }
+ // fall through
case 145: break;
case 34:
{ yypopstate(); yypushstate(EMBRACED); return RegExpTT.LBRACE;
- }
+ }
+ // fall through
case 146: break;
case 35:
{ yypopstate(); return RegExpTT.CATEGORY_SHORT_HAND;
- }
+ }
+ // fall through
case 147: break;
case 36:
{ yybegin(YYINITIAL); return RegExpTT.BAD_CHARACTER;
- }
+ }
+ // fall through
case 148: break;
case 37:
{ yybegin(YYINITIAL); return RegExpTT.GROUP_END;
- }
+ }
+ // fall through
case 149: break;
case 38:
{ handleOptions(); return RegExpTT.OPTIONS_ON;
- }
+ }
+ // fall through
case 150: break;
case 39:
{ handleOptions(); return RegExpTT.OPTIONS_OFF;
- }
+ }
+ // fall through
case 151: break;
case 40:
{ yybegin(YYINITIAL); return RegExpTT.COLON;
- }
+ }
+ // fall through
case 152: break;
case 41:
{ yybegin(YYINITIAL); return RegExpTT.GT;
- }
+ }
+ // fall through
case 153: break;
case 42:
{ yybegin(YYINITIAL); return RegExpTT.QUOTE;
- }
+ }
+ // fall through
case 154: break;
case 43:
{ return RegExpTT.BAD_CHARACTER;
- }
+ }
+ // fall through
case 155: break;
case 44:
{ return allowMysqlBracketExpressions ? RegExpTT.NAME : RegExpTT.BAD_CHARACTER;
- }
+ }
+ // fall through
case 156: break;
case 45:
{ yypopstate(); return (yycharat(-1) == 'u') ? StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN : RegExpTT.BAD_HEX_VALUE;
- }
+ }
+ // fall through
case 157: break;
case 46:
{ yybegin(OPTIONS); return RegExpTT.SET_OPTIONS;
- }
+ }
+ // fall through
case 158: break;
case 47:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ yypushstate(NEGATED_CLASS); return RegExpTT.CLASS_BEGIN;
- }
+ }
+ // fall through
case 159: break;
case 48:
{ return RegExpTT.REDUNDANT_ESCAPE;
- }
+ }
+ // fall through
case 160: break;
case 49:
{ return RegExpTT.ESC_CHARACTER;
- }
+ }
+ // fall through
case 161: break;
case 50:
{ return (allowDanglingMetacharacters != Boolean.TRUE) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ }
+ // fall through
case 162: break;
case 51:
{ return (allowDanglingMetacharacters == Boolean.FALSE) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ }
+ // fall through
case 163: break;
case 52:
{ return (yystate() == CLASS2) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ }
+ // fall through
case 164: break;
case 53:
{ return commentMode ? RegExpTT.ESC_CTRL_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ }
+ // fall through
case 165: break;
case 54:
{ return RegExpTT.ESC_CTRL_CHARACTER;
- }
+ }
+ // fall through
case 166: break;
case 55:
{ return RegExpTT.BOUNDARY;
- }
+ }
+ // fall through
case 167: break;
case 56:
{ return RegExpTT.CHAR_CLASS;
- }
+ }
+ // fall through
case 168: break;
case 57:
{ if (xmlSchemaMode) return RegExpTT.CHAR_CLASS; else return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
- }
+ }
+ // fall through
case 169: break;
case 58:
{ yypushstate(PROP); return RegExpTT.PROPERTY;
- }
+ }
+ // fall through
case 170: break;
case 59:
{ return allowTransformationEscapes ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
- }
+ }
+ // fall through
case 171: break;
case 60:
{ String text = yytext().toString().substring(1);
@@ -1102,68 +1149,82 @@ class _RegExLexer implements FlexLexer {
}
return RegExpTT.BACKREF;
}
- }
+ }
+ // fall through
case 172: break;
case 61:
{ yypushstate(QUOTED); return RegExpTT.QUOTE_BEGIN;
- }
+ }
+ // fall through
case 173: break;
case 62:
{ return RegExpTT.BAD_HEX_VALUE;
- }
+ }
+ // fall through
case 174: break;
case 63:
{ return allowTransformationEscapes ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
- }
+ }
+ // fall through
case 175: break;
case 64:
{ return (allowOctalNoLeadingZero ? RegExpTT.OCT_CHAR : RegExpTT.BAD_OCT_VALUE);
- }
+ }
+ // fall through
case 176: break;
case 65:
{ return (allowHexDigitClass || allowHorizontalWhitespaceClass ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN);
- }
+ }
+ // fall through
case 177: break;
case 66:
{ yypushstate(NAMED); return RegExpTT.NAMED_CHARACTER;
- }
+ }
+ // fall through
case 178: break;
case 67:
{ yypopstate(); return RegExpTT.QUOTE_END;
- }
+ }
+ // fall through
case 179: break;
case 68:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ yybegin(CLASS2); if (allowMysqlBracketExpressions) { yypushback(1); } else if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } else { return RegExpTT.CHARACTER; }
- }
+ }
+ // fall through
case 180: break;
case 69:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ yybegin(CLASS2); if (allowNestedCharacterClasses) { yypushstate(NEGATED_CLASS); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 181: break;
case 70:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ yybegin(CLASS2); if (allowPosixBracketExpressions) { yypushback(1); } else if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } else { return RegExpTT.CHARACTER; }
- }
+ }
+ // fall through
case 182: break;
case 71:
{ yybegin(CLASS2); return allowEmptyCharacterClass ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ }
+ // fall through
case 183: break;
case 72:
{ yybegin(CLASS2); return RegExpTT.ESC_CHARACTER;
- }
+ }
+ // fall through
case 184: break;
case 73:
{ yypushstate(QUOTED_CLASS1); return RegExpTT.QUOTE_BEGIN;
- }
+ }
+ // fall through
case 185: break;
case 74:
{ char c = yycharat(1);
@@ -1180,189 +1241,228 @@ class _RegExLexer implements FlexLexer {
yypushback(1);
return allowNestedCharacterClasses ? RegExpTT.CLASS_BEGIN : RegExpTT.CHARACTER;
}
- }
+ }
+ // fall through
case 186: break;
case 75:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ if (allowNestedCharacterClasses) { yypushstate(NEGATED_CLASS); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 187: break;
case 76:
{ if (allowNestedCharacterClasses) return RegExpTT.ANDAND; else yypushback(1); return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 188: break;
case 77:
{ yybegin(CLASS2); return RegExpTT.BRACKET_EXPRESSION_END;
- }
+ }
+ // fall through
case 189: break;
case 78:
{ yybegin(CLASS2); return RegExpTT.MYSQL_CHAR_END;
- }
+ }
+ // fall through
case 190: break;
case 79:
{ yybegin(CLASS2); return RegExpTT.MYSQL_CHAR_EQ_END;
- }
+ }
+ // fall through
case 191: break;
case 80:
{ yybegin(PY_COND_REF); return RegExpTT.PYTHON_COND_REF;
- }
+ }
+ // fall through
case 192: break;
case 81:
{ yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_NAMED_GROUP;
- }
+ }
+ // fall through
case 193: break;
case 82:
{ yybegin(QUOTED_NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_QUOTED_NAMED_GROUP;
- }
+ }
+ // fall through
case 194: break;
case 83:
{ return RegExpTT.NON_CAPT_GROUP;
- }
+ }
+ // fall through
case 195: break;
case 84:
{ return RegExpTT.POS_LOOKAHEAD;
- }
+ }
+ // fall through
case 196: break;
case 85:
{ return RegExpTT.ATOMIC_GROUP;
- }
+ }
+ // fall through
case 197: break;
case 86:
{ return RegExpTT.NEG_LOOKAHEAD;
- }
+ }
+ // fall through
case 198: break;
case 87:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ yypushstate(QUANTIFIER); return RegExpTT.LBRACE;
- }
+ }
+ // fall through
case 199: break;
case 88:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ if (allowOmitBothNumbersInQuantifiers || allowDanglingMetacharacters != Boolean.TRUE) { yypushstate(QUANTIFIER); return RegExpTT.LBRACE; } else return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 200: break;
case 89:
{ yybegin(NAMED_GROUP); return RegExpTT.RUBY_NAMED_GROUP_CALL;
- }
+ }
+ // fall through
case 201: break;
case 90:
{ yybegin(QUOTED_NAMED_GROUP); return RegExpTT.RUBY_QUOTED_NAMED_GROUP_CALL;
- }
+ }
+ // fall through
case 202: break;
case 91:
{ if (xmlSchemaMode) { yypushback(1); return RegExpTT.CHAR_CLASS; } else return RegExpTT.CTRL;
- }
+ }
+ // fall through
case 203: break;
case 92:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ if (allowExtendedUnicodeCharacter) yypushstate(EMBRACED_HEX); else return RegExpTT.BAD_HEX_VALUE;
- }
+ }
+ // fall through
case 204: break;
case 93:
{ if (allowOneHexCharEscape) { return RegExpTT.HEX_CHAR; } else { yypushback(1); return RegExpTT.BAD_HEX_VALUE; }
- }
+ }
+ // fall through
case 205: break;
case 94:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ if (allowExtendedUnicodeCharacter) yypushstate(EMBRACED_HEX); else return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
- }
+ }
+ // fall through
case 206: break;
case 95:
{ yypushback(yylength() - 2); return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
- }
+ }
+ // fall through
case 207: break;
case 96:
{ return RegExpTT.OCT_CHAR;
- }
+ }
+ // fall through
case 208: break;
case 97:
{ yybegin(NAMED_GROUP); return RegExpTT.RUBY_NAMED_GROUP_REF;
- }
+ }
+ // fall through
case 209: break;
case 98:
{ yybegin(QUOTED_NAMED_GROUP); return RegExpTT.RUBY_QUOTED_NAMED_GROUP_REF;
- }
+ }
+ // fall through
case 210: break;
case 99:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 211: break;
case 100:
{ yypopstate(); return (yycharat(-1) == 'u') ? RegExpTT.UNICODE_CHAR : RegExpTT.HEX_CHAR;
- }
+ }
+ // fall through
case 212: break;
case 101:
{ yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.PYTHON_NAMED_GROUP;
- }
+ }
+ // fall through
case 213: break;
case 102:
{ yybegin(PY_NAMED_GROUP_REF); return RegExpTT.PYTHON_NAMED_GROUP_REF;
- }
+ }
+ // fall through
case 214: break;
case 103:
{ return RegExpTT.POS_LOOKBEHIND;
- }
+ }
+ // fall through
case 215: break;
case 104:
{ return RegExpTT.NEG_LOOKBEHIND;
- }
+ }
+ // fall through
case 216: break;
case 105:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ if (allowOmitNumbersInQuantifiers || allowDanglingMetacharacters != Boolean.TRUE) { yypushstate(QUANTIFIER); return RegExpTT.LBRACE; } else return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 217: break;
case 106:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ return RegExpTT.ESC_CHARACTER;
- }
+ }
+ // fall through
case 218: break;
case 107:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ return allowOmitBothNumbersInQuantifiers ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ }
+ // fall through
case 219: break;
case 108:
{ return RegExpTT.HEX_CHAR;
- }
+ }
+ // fall through
case 220: break;
case 109:
{ return RegExpTT.COMMENT;
- }
+ }
+ // fall through
case 221: break;
case 110:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ return allowOmitNumbersInQuantifiers ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ }
+ // fall through
case 222: break;
case 111:
{ if (allowOctalNoLeadingZero) yypushback(1); return RegExpTT.OCT_CHAR;
- }
+ }
+ // fall through
case 223: break;
case 112:
{ return RegExpTT.UNICODE_CHAR;
- }
+ }
+ // fall through
case 224: break;
default:
zzScanError(ZZ_NO_MATCH);
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java
index f21add85d2ee..3bc8820404bf 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java
@@ -41,7 +41,7 @@ public interface RegExpLanguageHost {
}
boolean supportsExtendedHexCharacter(RegExpChar regExpChar);
- default boolean isValidGroupName(String name, @NotNull PsiElement context) {
+ default boolean isValidGroupName(String name, @NotNull RegExpGroup group) {
for (int i = 0, length = name.length(); i < length; i++) {
final char c = name.charAt(i);
if (!AsciiUtil.isLetterOrDigit(c) && c != '_') {
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java
index 8f1977230d59..f9735609bac5 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java
@@ -117,9 +117,9 @@ public final class RegExpLanguageHosts extends ClassExtension