diff --git a/RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java b/RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java
index 01115b5d5a33..aee404e6512d 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\75\1\0"+
- "\1\72\1\16\1\0\1\71\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\67\1\0\1\63"+
- "\1\70\1\74\1\17\1\0\1\30\1\30\1\37\1\35\1\45\1\46"+
- "\1\31\1\57\1\40\2\73\1\44\1\66\1\60\1\73\1\42\1\50"+
- "\1\65\1\34\1\73\1\43\1\33\1\33\1\33\1\73\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\73\1\62\1\43\1\73\1\24\1\73"+
- "\1\41\1\73\1\24\1\33\1\24\1\52\1\33\1\33\1\51\1\73"+
- "\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\75\1\0\1\72\1\16\1\0\1\71\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\67"+
+ "\1\74\1\17\1\0\2\30\1\37\1\35\1\45\1\46\1\31\1\57\1\40\2\73\1\44\1\66\1\60"+
+ "\1\73\1\42\1\50\1\65\1\34\1\73\1\43\3\33\1\73\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\73\1\62\1\43\1\73\1\24\1\73"+
+ "\1\41\1\73\1\24\1\33\1\24\1\52\2\33\1\51\1\73\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.
@@ -214,25 +199,25 @@ class _RegExLexer implements FlexLexer {
"\13\0\1\1\10\0\1\2\1\3\1\4\1\5\1\6"+
"\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+
"\1\17\1\20\1\21\1\22\1\23\1\2\1\24\1\25"+
- "\1\26\1\27\1\30\1\31\2\32\1\33\1\34\1\35"+
- "\1\33\1\36\1\37\1\40\1\12\1\41\1\42\1\43"+
- "\1\2\1\44\1\45\1\24\1\46\1\47\1\50\1\51"+
- "\1\52\1\53\1\26\1\54\1\55\1\56\1\57\3\56"+
- "\1\26\1\56\1\26\1\56\1\60\1\61\2\0\1\62"+
+ "\1\26\1\27\1\30\1\31\1\32\2\33\1\34\1\35"+
+ "\1\36\1\34\1\37\1\40\1\41\1\12\1\42\1\43"+
+ "\1\44\1\2\1\45\1\46\1\24\1\47\1\50\1\51"+
+ "\1\52\1\53\1\54\1\26\1\55\1\56\1\57\1\60"+
+ "\3\57\1\26\1\57\1\26\1\57\1\61\1\62\2\0"+
"\1\63\1\64\1\65\1\66\1\67\1\70\1\71\1\72"+
- "\1\12\1\72\1\73\2\74\1\75\1\76\1\12\1\77"+
- "\1\100\1\101\1\102\1\103\1\104\1\105\1\12\1\106"+
+ "\1\73\1\12\1\73\1\74\2\75\1\76\1\77\1\12"+
+ "\1\100\1\101\1\102\1\103\1\104\1\105\1\106\1\12"+
"\1\107\1\110\1\111\1\112\1\113\1\114\1\115\1\116"+
- "\1\117\1\120\1\121\1\0\1\122\2\26\1\123\2\60"+
- "\1\124\1\0\1\125\1\126\1\127\1\130\1\0\1\131"+
- "\1\132\1\133\1\0\1\134\4\0\1\135\1\136\1\137"+
- "\1\77\1\140\1\141\1\142\1\143\2\144\1\145\1\146"+
- "\1\147\1\150\1\151\1\152\1\153\1\154\1\0\1\155"+
- "\1\156\1\0\1\157\2\0\1\77\1\160\1\143\2\144"+
- "\1\161\1\162\1\143\1\163\1\164";
+ "\1\117\1\120\1\121\1\122\1\0\1\123\2\26\1\124"+
+ "\2\61\1\125\1\0\1\126\1\127\1\130\1\131\1\0"+
+ "\1\132\1\133\1\134\1\0\1\135\4\0\1\136\1\137"+
+ "\1\140\1\100\1\141\1\142\1\143\1\144\2\145\1\146"+
+ "\1\147\1\150\1\151\1\152\1\153\1\154\1\155\1\0"+
+ "\1\156\1\157\1\0\1\160\2\0\1\100\1\161\1\144"+
+ "\2\145\1\162\1\163\1\144\1\164\1\165";
private static int [] zzUnpackAction() {
- int [] result = new int[179];
+ int [] result = new int[180];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -262,27 +247,27 @@ class _RegExLexer implements FlexLexer {
"\0\u03f0\0\u042f\0\u046e\0\u04ad\0\u04ec\0\u04ec\0\u052b\0\u04ec"+
"\0\u056a\0\u04ec\0\u05a9\0\u04ec\0\u05e8\0\u04ec\0\u04ec\0\u04ec"+
"\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u0627\0\u04ec"+
- "\0\u04ec\0\u0666\0\u06a5\0\u04ec\0\u04ec\0\u04ec\0\u0627\0\u04ec"+
- "\0\u06e4\0\u04ec\0\u0723\0\u04ec\0\u0762\0\u04ec\0\u07a1\0\u04ec"+
- "\0\u04ec\0\u04ec\0\u07e0\0\u04ec\0\u04ec\0\u081f\0\u04ec\0\u04ec"+
- "\0\u04ec\0\u085e\0\u089d\0\u04ec\0\u08dc\0\u04ec\0\u04ec\0\u04ec"+
- "\0\u04ec\0\u091b\0\u095a\0\u0999\0\u09d8\0\u0a17\0\u0a56\0\u0a95"+
- "\0\u0ad4\0\u0b13\0\u0b52\0\u0b91\0\u04ec\0\u04ec\0\u04ec\0\u0bd0"+
- "\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u0c0f\0\u0c4e\0\u04ec\0\u04ec"+
- "\0\u0c8d\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u0ccc\0\u04ec\0\u0d0b"+
- "\0\u0d4a\0\u0d89\0\u04ec\0\u04ec\0\u0dc8\0\u04ec\0\u04ec\0\u04ec"+
+ "\0\u04ec\0\u0666\0\u04ec\0\u06a5\0\u04ec\0\u04ec\0\u04ec\0\u0627"+
+ "\0\u04ec\0\u06e4\0\u04ec\0\u0723\0\u04ec\0\u0762\0\u04ec\0\u07a1"+
+ "\0\u04ec\0\u04ec\0\u04ec\0\u07e0\0\u04ec\0\u04ec\0\u081f\0\u04ec"+
+ "\0\u04ec\0\u04ec\0\u085e\0\u089d\0\u04ec\0\u08dc\0\u04ec\0\u04ec"+
+ "\0\u04ec\0\u04ec\0\u091b\0\u095a\0\u0999\0\u09d8\0\u0a17\0\u0a56"+
+ "\0\u0a95\0\u0ad4\0\u0b13\0\u0b52\0\u0b91\0\u04ec\0\u04ec\0\u04ec"+
+ "\0\u0bd0\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u0c0f\0\u0c4e\0\u04ec"+
+ "\0\u04ec\0\u0c8d\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u0ccc\0\u04ec"+
+ "\0\u0d0b\0\u0d4a\0\u0d89\0\u04ec\0\u04ec\0\u0dc8\0\u04ec\0\u04ec"+
"\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec"+
- "\0\u04ec\0\u0e07\0\u04ec\0\u0e46\0\u04ec\0\u04ec\0\u04ec\0\u0e85"+
- "\0\u04ec\0\u0ec4\0\u0f03\0\u04ec\0\u04ec\0\u04ec\0\u0f42\0\u04ec"+
- "\0\u04ec\0\u04ec\0\u0f81\0\u04ec\0\u0fc0\0\u0fff\0\u103e\0\u107d"+
- "\0\u04ec\0\u04ec\0\u04ec\0\u10bc\0\u04ec\0\u10fb\0\u04ec\0\u113a"+
- "\0\u1179\0\u11b8\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec"+
- "\0\u04ec\0\u04ec\0\u11f7\0\u04ec\0\u04ec\0\u1236\0\u04ec\0\u1275"+
- "\0\u12b4\0\u04ec\0\u04ec\0\u12f3\0\u1332\0\u04ec\0\u04ec\0\u04ec"+
- "\0\u1371\0\u04ec\0\u04ec";
+ "\0\u04ec\0\u04ec\0\u0e07\0\u04ec\0\u0e46\0\u04ec\0\u04ec\0\u04ec"+
+ "\0\u0e85\0\u04ec\0\u0ec4\0\u0f03\0\u04ec\0\u04ec\0\u04ec\0\u0f42"+
+ "\0\u04ec\0\u04ec\0\u04ec\0\u0f81\0\u04ec\0\u0fc0\0\u0fff\0\u103e"+
+ "\0\u107d\0\u04ec\0\u04ec\0\u04ec\0\u10bc\0\u04ec\0\u10fb\0\u04ec"+
+ "\0\u113a\0\u1179\0\u11b8\0\u04ec\0\u04ec\0\u04ec\0\u04ec\0\u04ec"+
+ "\0\u04ec\0\u04ec\0\u04ec\0\u11f7\0\u04ec\0\u04ec\0\u1236\0\u04ec"+
+ "\0\u1275\0\u12b4\0\u04ec\0\u04ec\0\u12f3\0\u1332\0\u04ec\0\u04ec"+
+ "\0\u04ec\0\u1371\0\u04ec\0\u04ec";
private static int [] zzUnpackRowMap() {
- int [] result = new int[179];
+ int [] result = new int[180];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -310,96 +295,96 @@ class _RegExLexer implements FlexLexer {
"\1\43\1\44\35\25\1\45\10\25\1\46\3\25\1\45"+
"\10\25\1\47\66\25\5\50\1\51\3\50\1\52\11\50"+
"\1\44\23\52\1\50\3\52\4\50\2\52\1\50\1\52"+
- "\2\50\2\52\4\50\1\52\10\50\1\51\7\50\1\53"+
- "\31\50\1\53\3\50\3\53\1\54\20\50\23\0\1\55"+
- "\53\0\10\56\1\57\66\56\6\60\1\61\1\62\1\63"+
- "\3\60\1\64\44\60\1\64\14\60\1\64\6\25\1\65"+
- "\1\66\1\67\2\25\1\70\1\71\44\25\1\72\7\25"+
- "\1\73\1\74\3\25\1\72\4\50\1\75\3\50\1\76"+
- "\21\50\1\77\1\50\1\77\2\50\1\77\2\50\1\77"+
- "\1\50\1\77\13\50\1\77\5\50\1\77\14\50\1\75"+
- "\3\50\1\76\66\50\3\100\1\101\5\100\1\102\1\100"+
- "\1\103\10\100\23\102\1\100\3\102\4\100\2\102\1\100"+
- "\1\102\2\100\2\102\1\104\3\100\1\102\3\100\76\14"+
- "\1\0\10\100\3\105\3\100\1\105\5\100\23\105\1\100"+
- "\3\105\4\100\2\105\1\100\1\105\2\100\2\105\4\100"+
- "\1\105\1\106\12\100\3\105\3\100\1\105\5\100\23\105"+
- "\1\100\3\105\4\100\2\105\1\100\1\105\1\100\1\107"+
- "\2\105\4\100\1\105\6\100\1\101\4\100\3\105\3\100"+
- "\1\105\5\100\23\105\1\100\3\105\4\100\2\105\1\100"+
- "\1\105\2\100\2\105\4\100\1\105\6\100\1\101\4\100"+
- "\3\105\2\100\1\53\1\105\5\100\23\105\1\53\3\105"+
- "\3\53\1\100\2\105\1\100\1\105\2\100\2\105\4\100"+
- "\1\105\3\100\11\110\1\52\11\110\1\44\23\52\1\110"+
- "\3\52\4\110\2\52\1\110\1\52\1\111\1\110\2\52"+
- "\1\112\3\110\1\52\1\111\2\110\1\113\1\114\7\113"+
- "\1\115\12\113\23\115\1\113\3\115\4\113\2\115\1\113"+
- "\1\115\2\113\2\115\4\113\1\115\3\113\11\116\1\117"+
- "\12\116\23\117\1\116\3\117\4\116\2\117\1\116\1\117"+
- "\2\116\2\117\1\116\1\120\2\116\1\117\3\116\4\0"+
- "\1\121\210\0\1\122\74\0\1\123\31\0\1\123\3\0"+
- "\3\123\1\124\43\0\1\125\53\0\1\126\3\127\1\130"+
- "\1\131\1\127\1\126\1\127\2\126\1\132\1\133\1\126"+
- "\6\127\2\134\1\135\1\136\3\137\3\140\1\141\2\142"+
- "\2\143\3\144\1\145\1\146\1\147\1\150\1\151\1\152"+
- "\2\146\1\126\1\153\1\154\1\133\1\155\2\126\1\140"+
- "\1\145\4\126\1\145\2\126\1\133\45\0\1\156\33\0"+
- "\2\52\5\0\5\52\6\0\32\52\1\0\2\52\1\0"+
- "\1\52\2\0\2\52\4\0\1\52\20\0\1\53\31\0"+
- "\1\53\3\0\3\53\22\0\1\157\21\0\1\160\43\0"+
- "\1\161\1\157\15\0\1\162\13\0\1\163\24\0\1\164"+
- "\27\0\1\165\21\0\1\166\43\0\2\165\6\0\6\126"+
- "\3\127\2\126\1\132\1\167\7\126\3\134\4\145\3\140"+
- "\1\141\2\142\2\143\3\144\1\145\1\146\1\147\1\150"+
- "\1\151\1\152\2\146\1\126\1\153\1\154\1\167\1\145"+
- "\2\126\2\145\4\126\1\145\2\126\1\167\71\0\1\170"+
- "\5\0\6\126\1\127\1\126\1\127\2\126\1\132\10\126"+
- "\2\134\5\145\3\140\1\141\2\142\2\143\3\144\1\145"+
- "\1\146\1\147\1\150\1\151\1\152\2\146\1\126\1\153"+
- "\1\154\1\126\1\145\2\126\2\145\4\126\1\145\3\126"+
- "\11\0\1\102\12\0\23\102\1\0\3\102\4\0\2\102"+
- "\1\0\1\102\2\0\2\102\4\0\1\102\14\0\1\103"+
- "\12\0\23\103\1\0\3\103\4\0\2\103\1\0\1\103"+
- "\2\0\2\103\4\0\1\103\13\0\7\105\5\0\32\105"+
- "\1\0\2\105\1\0\1\105\2\0\2\105\4\0\1\105"+
- "\12\0\1\171\70\0\1\172\76\0\1\172\5\0\1\173"+
- "\70\0\1\172\7\0\1\174\1\0\1\174\1\0\1\175"+
- "\6\0\23\174\1\175\3\174\3\175\1\0\2\174\1\0"+
- "\1\174\2\0\2\174\4\0\1\174\73\0\1\172\10\0"+
- "\2\52\5\0\5\52\6\0\32\52\1\0\2\52\1\0"+
- "\1\52\2\0\2\52\1\0\1\172\2\0\1\52\12\0"+
- "\1\176\60\0\1\172\13\0\1\177\17\0\2\200\1\0"+
- "\1\200\4\0\3\200\5\0\3\200\3\0\3\200\23\0"+
- "\1\201\37\0\1\202\20\0\1\203\1\204\2\0\1\205"+
- "\1\206\1\0\1\207\1\0\1\210\1\211\6\0\1\212"+
- "\7\0\1\123\31\0\1\123\3\0\3\123\1\213\25\0"+
- "\1\214\7\0\1\215\31\0\1\215\3\0\3\215\36\0"+
- "\1\216\31\0\1\216\3\0\3\216\1\217\24\0\1\220"+
- "\155\0\1\221\1\222\12\0\77\223\47\0\1\224\3\0"+
- "\3\224\25\0\1\225\20\0\2\226\1\0\1\226\4\0"+
- "\3\226\5\0\3\226\3\0\3\226\25\0\1\227\20\0"+
- "\2\230\1\0\1\230\4\0\3\230\5\0\3\230\3\0"+
- "\3\230\74\0\1\231\1\232\1\231\104\0\1\233\1\234"+
- "\21\0\1\235\100\0\1\174\1\0\1\174\1\0\1\175"+
- "\6\0\23\174\1\175\3\174\3\175\1\0\2\174\1\0"+
- "\1\174\2\0\2\174\4\0\1\174\10\0\1\236\17\0"+
- "\2\200\1\0\1\200\4\0\3\200\5\0\3\200\3\0"+
- "\3\200\104\0\1\237\4\0\1\240\76\0\1\241\4\0"+
- "\1\242\1\0\3\243\1\0\73\243\5\0\1\212\7\0"+
- "\1\213\31\0\1\213\3\0\3\213\26\0\1\244\7\0"+
- "\1\215\31\0\1\215\3\0\3\215\26\0\1\245\7\0"+
- "\1\216\31\0\1\216\3\0\3\216\1\246\25\0\1\247"+
- "\7\0\1\250\31\0\1\250\3\0\3\250\50\0\1\251"+
- "\116\0\1\252\3\0\3\252\46\0\2\253\1\0\1\253"+
- "\4\0\3\253\5\0\3\253\3\0\3\253\46\0\2\254"+
- "\1\0\1\254\4\0\3\254\5\0\3\254\3\0\3\254"+
- "\74\0\3\255\74\0\3\256\21\0\3\243\1\257\73\243"+
- "\5\0\1\245\7\0\1\246\31\0\1\246\3\0\3\246"+
- "\26\0\1\260\7\0\1\250\31\0\1\250\3\0\3\250"+
- "\26\0\1\137\116\0\2\261\1\0\1\261\4\0\3\261"+
- "\5\0\3\261\3\0\3\261\74\0\3\262\46\0\2\263"+
- "\1\0\1\263\4\0\3\263\5\0\3\263\3\0\3\263"+
- "\21\0";
+ "\2\50\2\52\1\53\3\50\1\52\10\50\1\51\7\50"+
+ "\1\54\31\50\1\54\3\50\3\54\1\55\20\50\23\0"+
+ "\1\56\53\0\10\57\1\60\66\57\6\61\1\62\1\63"+
+ "\1\64\3\61\1\65\44\61\1\65\14\61\1\65\6\25"+
+ "\1\66\1\67\1\70\2\25\1\71\1\72\44\25\1\73"+
+ "\7\25\1\74\1\75\3\25\1\73\4\50\1\76\3\50"+
+ "\1\77\21\50\1\100\1\50\1\100\2\50\1\100\2\50"+
+ "\1\100\1\50\1\100\13\50\1\100\5\50\1\100\14\50"+
+ "\1\76\3\50\1\77\66\50\3\101\1\102\5\101\1\103"+
+ "\1\101\1\104\10\101\23\103\1\101\3\103\4\101\2\103"+
+ "\1\101\1\103\2\101\2\103\1\101\1\105\2\101\1\103"+
+ "\3\101\76\14\1\0\10\101\3\106\3\101\1\106\5\101"+
+ "\23\106\1\101\3\106\4\101\2\106\1\101\1\106\2\101"+
+ "\2\106\4\101\1\106\1\107\12\101\3\106\3\101\1\106"+
+ "\5\101\23\106\1\101\3\106\4\101\2\106\1\101\1\106"+
+ "\1\101\1\110\2\106\4\101\1\106\6\101\1\102\4\101"+
+ "\3\106\3\101\1\106\5\101\23\106\1\101\3\106\4\101"+
+ "\2\106\1\101\1\106\2\101\2\106\4\101\1\106\6\101"+
+ "\1\102\4\101\3\106\2\101\1\54\1\106\5\101\23\106"+
+ "\1\54\3\106\3\54\1\101\2\106\1\101\1\106\2\101"+
+ "\2\106\4\101\1\106\3\101\11\111\1\52\11\111\1\44"+
+ "\23\52\1\111\3\52\4\111\2\52\1\111\1\52\1\112"+
+ "\1\111\2\52\1\111\1\113\2\111\1\52\1\112\2\111"+
+ "\1\114\1\115\7\114\1\116\12\114\23\116\1\114\3\116"+
+ "\4\114\2\116\1\114\1\116\2\114\2\116\4\114\1\116"+
+ "\3\114\11\117\1\120\12\117\23\120\1\117\3\120\4\117"+
+ "\2\120\1\117\1\120\2\117\2\120\1\121\3\117\1\120"+
+ "\3\117\4\0\1\122\210\0\1\123\74\0\1\124\31\0"+
+ "\1\124\3\0\3\124\1\125\43\0\1\126\53\0\1\127"+
+ "\3\130\1\131\1\132\1\130\1\127\1\130\2\127\1\133"+
+ "\1\134\1\127\6\130\2\135\1\136\1\137\3\140\3\141"+
+ "\1\142\2\143\2\144\3\145\1\146\1\147\1\150\1\151"+
+ "\1\152\1\153\2\147\1\127\1\154\1\155\1\134\1\156"+
+ "\2\127\1\141\1\146\4\127\1\146\2\127\1\134\45\0"+
+ "\1\157\33\0\2\52\5\0\5\52\6\0\32\52\1\0"+
+ "\2\52\1\0\1\52\2\0\2\52\4\0\1\52\20\0"+
+ "\1\54\31\0\1\54\3\0\3\54\22\0\1\160\21\0"+
+ "\1\161\43\0\1\160\1\162\15\0\1\163\13\0\1\164"+
+ "\24\0\1\165\27\0\1\166\21\0\1\167\43\0\2\166"+
+ "\6\0\6\127\3\130\2\127\1\133\1\170\7\127\3\135"+
+ "\4\146\3\141\1\142\2\143\2\144\3\145\1\146\1\147"+
+ "\1\150\1\151\1\152\1\153\2\147\1\127\1\154\1\155"+
+ "\1\170\1\146\2\127\2\146\4\127\1\146\2\127\1\170"+
+ "\71\0\1\171\5\0\6\127\1\130\1\127\1\130\2\127"+
+ "\1\133\10\127\2\135\5\146\3\141\1\142\2\143\2\144"+
+ "\3\145\1\146\1\147\1\150\1\151\1\152\1\153\2\147"+
+ "\1\127\1\154\1\155\1\127\1\146\2\127\2\146\4\127"+
+ "\1\146\3\127\11\0\1\103\12\0\23\103\1\0\3\103"+
+ "\4\0\2\103\1\0\1\103\2\0\2\103\4\0\1\103"+
+ "\14\0\1\104\12\0\23\104\1\0\3\104\4\0\2\104"+
+ "\1\0\1\104\2\0\2\104\4\0\1\104\13\0\7\106"+
+ "\5\0\32\106\1\0\2\106\1\0\1\106\2\0\2\106"+
+ "\4\0\1\106\12\0\1\172\70\0\1\173\76\0\1\173"+
+ "\5\0\1\174\70\0\1\173\7\0\1\175\1\0\1\175"+
+ "\1\0\1\176\6\0\23\175\1\176\3\175\3\176\1\0"+
+ "\2\175\1\0\1\175\2\0\2\175\4\0\1\175\72\0"+
+ "\1\173\11\0\2\52\5\0\5\52\6\0\32\52\1\0"+
+ "\2\52\1\0\1\52\2\0\2\52\1\173\3\0\1\52"+
+ "\12\0\1\177\57\0\1\173\14\0\1\200\17\0\2\201"+
+ "\1\0\1\201\4\0\3\201\5\0\3\201\3\0\3\201"+
+ "\23\0\1\202\37\0\1\203\20\0\1\204\1\205\2\0"+
+ "\1\206\1\207\1\0\1\210\1\0\1\211\1\212\6\0"+
+ "\1\213\7\0\1\124\31\0\1\124\3\0\3\124\1\214"+
+ "\25\0\1\215\7\0\1\216\31\0\1\216\3\0\3\216"+
+ "\36\0\1\217\31\0\1\217\3\0\3\217\1\220\24\0"+
+ "\1\221\155\0\1\222\1\223\12\0\77\224\47\0\1\225"+
+ "\3\0\3\225\25\0\1\226\20\0\2\227\1\0\1\227"+
+ "\4\0\3\227\5\0\3\227\3\0\3\227\25\0\1\230"+
+ "\20\0\2\231\1\0\1\231\4\0\3\231\5\0\3\231"+
+ "\3\0\3\231\74\0\1\232\1\233\1\232\104\0\1\234"+
+ "\1\235\21\0\1\236\100\0\1\175\1\0\1\175\1\0"+
+ "\1\176\6\0\23\175\1\176\3\175\3\176\1\0\2\175"+
+ "\1\0\1\175\2\0\2\175\4\0\1\175\10\0\1\237"+
+ "\17\0\2\201\1\0\1\201\4\0\3\201\5\0\3\201"+
+ "\3\0\3\201\104\0\1\240\3\0\1\241\76\0\1\242"+
+ "\5\0\1\243\1\0\3\244\1\0\73\244\5\0\1\213"+
+ "\7\0\1\214\31\0\1\214\3\0\3\214\26\0\1\245"+
+ "\7\0\1\216\31\0\1\216\3\0\3\216\26\0\1\246"+
+ "\7\0\1\217\31\0\1\217\3\0\3\217\1\247\25\0"+
+ "\1\250\7\0\1\251\31\0\1\251\3\0\3\251\50\0"+
+ "\1\252\116\0\1\253\3\0\3\253\46\0\2\254\1\0"+
+ "\1\254\4\0\3\254\5\0\3\254\3\0\3\254\46\0"+
+ "\2\255\1\0\1\255\4\0\3\255\5\0\3\255\3\0"+
+ "\3\255\74\0\3\256\74\0\3\257\21\0\3\244\1\260"+
+ "\73\244\5\0\1\246\7\0\1\247\31\0\1\247\3\0"+
+ "\3\247\26\0\1\261\7\0\1\251\31\0\1\251\3\0"+
+ "\3\251\26\0\1\140\116\0\2\262\1\0\1\262\4\0"+
+ "\3\262\5\0\3\262\3\0\3\262\74\0\3\263\46\0"+
+ "\2\264\1\0\1\264\4\0\3\264\5\0\3\264\3\0"+
+ "\3\264\21\0";
private static int [] zzUnpackTrans() {
int [] result = new int[5040];
@@ -441,18 +426,19 @@ class _RegExLexer implements FlexLexer {
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\13\0\1\1\10\0\2\11\1\1\1\11\1\1\1\11"+
- "\1\1\1\11\1\1\11\11\1\1\2\11\2\1\3\11"+
- "\1\1\1\11\1\1\1\11\1\1\1\11\1\1\1\11"+
- "\1\1\3\11\1\1\2\11\1\1\3\11\2\1\1\11"+
- "\1\1\4\11\11\1\2\0\3\11\1\1\4\11\2\1"+
- "\2\11\1\1\4\11\1\1\1\11\3\1\2\11\1\1"+
- "\14\11\1\0\1\11\1\1\3\11\1\1\1\11\1\0"+
- "\1\1\3\11\1\0\3\11\1\0\1\11\4\0\3\11"+
- "\1\1\1\11\1\1\1\11\3\1\10\11\1\0\2\11"+
- "\1\0\1\11\2\0\2\11\2\1\3\11\1\1\2\11";
+ "\1\1\1\11\1\1\11\11\1\1\2\11\1\1\1\11"+
+ "\1\1\3\11\1\1\1\11\1\1\1\11\1\1\1\11"+
+ "\1\1\1\11\1\1\3\11\1\1\2\11\1\1\3\11"+
+ "\2\1\1\11\1\1\4\11\11\1\2\0\3\11\1\1"+
+ "\4\11\2\1\2\11\1\1\4\11\1\1\1\11\3\1"+
+ "\2\11\1\1\14\11\1\0\1\11\1\1\3\11\1\1"+
+ "\1\11\1\0\1\1\3\11\1\0\3\11\1\0\1\11"+
+ "\4\0\3\11\1\1\1\11\1\1\1\11\3\1\10\11"+
+ "\1\0\2\11\1\0\1\11\2\0\2\11\2\1\3\11"+
+ "\1\1\2\11";
private static int [] zzUnpackAttribute() {
- int [] result = new int[179];
+ int [] result = new int[180];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -605,14 +591,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;
}
@@ -755,7 +745,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;
@@ -807,8 +796,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;
@@ -833,256 +821,323 @@ class _RegExLexer implements FlexLexer {
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 1:
{ yypopstate(); return RegExpTT.COMMENT;
- }
- case 117: break;
+ }
+ // fall through
+ case 118: break;
case 2:
{ return RegExpTT.CHARACTER;
- }
- case 118: break;
+ }
+ // fall through
+ case 119: break;
case 3:
{ return RegExpTT.DOT;
- }
- case 119: break;
+ }
+ // fall through
+ case 120: break;
case 4:
{ capturingGroupCount++; return RegExpTT.GROUP_BEGIN;
- }
- case 120: break;
+ }
+ // fall through
+ case 121: break;
case 5:
{ return RegExpTT.GROUP_END;
- }
- case 121: break;
+ }
+ // fall through
+ case 122: break;
case 6:
{ if (allowDanglingMetacharacters != Boolean.TRUE) { yypushstate(QUANTIFIER); return RegExpTT.LBRACE; } return RegExpTT.CHARACTER;
- }
- case 122: break;
+ }
+ // fall through
+ case 123: break;
case 7:
{ return (allowDanglingMetacharacters != Boolean.FALSE) ? RegExpTT.CHARACTER : RegExpTT.RBRACE;
- }
- case 123: break;
+ }
+ // fall through
+ case 124: break;
case 8:
{ yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN;
- }
- case 124: break;
+ }
+ // fall through
+ case 125: break;
case 9:
{ return allowDanglingMetacharacters == Boolean.FALSE ? RegExpTT.CLASS_END : RegExpTT.CHARACTER;
- }
- case 125: break;
+ }
+ // fall through
+ case 126: break;
case 10:
{ return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
- }
- case 126: break;
+ }
+ // fall through
+ case 127: break;
case 11:
{ return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
- }
- case 127: break;
+ }
+ // fall through
+ case 128: break;
case 12:
{ return RegExpTT.DOLLAR;
- }
- case 128: break;
+ }
+ // fall through
+ case 129: break;
case 13:
{ return RegExpTT.QUEST;
- }
- case 129: break;
+ }
+ // fall through
+ case 130: break;
case 14:
{ return RegExpTT.STAR;
- }
- case 130: break;
+ }
+ // fall through
+ case 131: break;
case 15:
{ return RegExpTT.PLUS;
- }
- case 131: break;
+ }
+ // fall through
+ case 132: break;
case 16:
{ return RegExpTT.UNION;
- }
- case 132: break;
+ }
+ // fall through
+ case 133: break;
case 17:
{ return RegExpTT.CARET;
- }
- case 133: break;
+ }
+ // fall through
+ case 134: break;
case 18:
{ return commentMode ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
- }
- case 134: break;
+ }
+ // fall through
+ case 135: break;
case 19:
{ if (commentMode) { yypushstate(COMMENT); } else return RegExpTT.CHARACTER;
- }
- case 135: break;
+ }
+ // fall through
+ case 136: break;
case 20:
{ yypopstate(); yypushback(1);
- }
- case 136: break;
+ }
+ // fall through
+ case 137: break;
case 21:
{ yypopstate(); return RegExpTT.RBRACE;
- }
- case 137: break;
+ }
+ // fall through
+ case 138: break;
case 22:
{ return RegExpTT.NAME;
- }
- case 138: break;
- case 23:
- { return RegExpTT.NUMBER;
- }
+ }
+ // fall through
case 139: break;
- case 24:
- { return RegExpTT.COMMA;
- }
+ case 23:
+ { return RegExpTT.EQ;
+ }
+ // fall through
case 140: break;
- case 25:
- { yybegin(CLASS1); return RegExpTT.CARET;
- }
+ case 24:
+ { return RegExpTT.NUMBER;
+ }
+ // fall through
case 141: break;
- case 26:
- { states.set(states.size() - 1, CLASS2); return RegExpTT.CHARACTER;
- }
+ case 25:
+ { return RegExpTT.COMMA;
+ }
+ // fall through
case 142: break;
- case 27:
- { yypushback(1); yybegin(CLASS2);
- }
+ case 26:
+ { yybegin(CLASS1); return RegExpTT.CARET;
+ }
+ // fall through
case 143: break;
- case 28:
- { yybegin(CLASS2); if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
- }
+ case 27:
+ { states.set(states.size() - 1, CLASS2); return RegExpTT.CHARACTER;
+ }
+ // fall through
case 144: break;
- case 29:
- { if (allowEmptyCharacterClass) { yypopstate(); return RegExpTT.CLASS_END; } yybegin(CLASS2); return RegExpTT.CHARACTER;
- }
+ case 28:
+ { yypushback(1); yybegin(CLASS2);
+ }
+ // fall through
case 145: break;
- case 30:
- { if (commentMode && whitespaceInClass) return com.intellij.psi.TokenType.WHITE_SPACE; yypushback(1); yybegin(CLASS2);
- }
+ case 29:
+ { yybegin(CLASS2); if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
+ }
+ // fall through
case 146: break;
- case 31:
- { if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
- }
+ case 30:
+ { if (allowEmptyCharacterClass) { yypopstate(); return RegExpTT.CLASS_END; } yybegin(CLASS2); return RegExpTT.CHARACTER;
+ }
+ // fall through
case 147: break;
- case 32:
- { yypopstate(); return RegExpTT.CLASS_END;
- }
+ case 31:
+ { if (commentMode && whitespaceInClass) return com.intellij.psi.TokenType.WHITE_SPACE; yypushback(1); yybegin(CLASS2);
+ }
+ // fall through
case 148: break;
- case 33:
- { return RegExpTT.MINUS;
- }
+ case 32:
+ { if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
+ }
+ // fall through
case 149: break;
- case 34:
- { return (commentMode && whitespaceInClass) ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
- }
+ case 33:
+ { yypopstate(); return RegExpTT.CLASS_END;
+ }
+ // fall through
case 150: break;
- case 35:
- { return (commentMode && whitespaceInClass) ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
- }
+ case 34:
+ { return RegExpTT.MINUS;
+ }
+ // fall through
case 151: break;
- case 36:
- { if (commentMode && whitespaceInClass) yypushstate(COMMENT); else return RegExpTT.CHARACTER;
- }
+ case 35:
+ { return (commentMode && whitespaceInClass) ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
+ }
+ // fall through
case 152: break;
- case 37:
- { yypopstate(); yypushstate(EMBRACED); return RegExpTT.LBRACE;
- }
+ case 36:
+ { return (commentMode && whitespaceInClass) ? com.intellij.psi.TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
+ }
+ // fall through
case 153: break;
- case 38:
- { yypopstate(); return RegExpTT.CATEGORY_SHORT_HAND;
- }
+ case 37:
+ { if (commentMode && whitespaceInClass) yypushstate(COMMENT); else return RegExpTT.CHARACTER;
+ }
+ // fall through
case 154: break;
- case 39:
- { yybegin(YYINITIAL); yypushback(1);
- }
+ case 38:
+ { yypopstate(); yypushstate(EMBRACED); return RegExpTT.LBRACE;
+ }
+ // fall through
case 155: break;
- case 40:
- { yybegin(YYINITIAL); return RegExpTT.GROUP_END;
- }
+ case 39:
+ { yypopstate(); return RegExpTT.CATEGORY_SHORT_HAND;
+ }
+ // fall through
case 156: break;
- case 41:
- { handleOptions(); return RegExpTT.OPTIONS_ON;
- }
+ case 40:
+ { yybegin(YYINITIAL); yypushback(1);
+ }
+ // fall through
case 157: break;
- case 42:
- { handleOptions(); return RegExpTT.OPTIONS_OFF;
- }
+ case 41:
+ { yybegin(YYINITIAL); return RegExpTT.GROUP_END;
+ }
+ // fall through
case 158: break;
- case 43:
- { yybegin(YYINITIAL); return RegExpTT.COLON;
- }
+ case 42:
+ { handleOptions(); return RegExpTT.OPTIONS_ON;
+ }
+ // fall through
case 159: break;
- case 44:
- { yybegin(YYINITIAL); return RegExpTT.GT;
- }
+ case 43:
+ { handleOptions(); return RegExpTT.OPTIONS_OFF;
+ }
+ // fall through
case 160: break;
- case 45:
- { yybegin(YYINITIAL); return RegExpTT.QUOTE;
- }
+ case 44:
+ { yybegin(YYINITIAL); return RegExpTT.COLON;
+ }
+ // fall through
case 161: break;
- case 46:
- { return RegExpTT.BAD_CHARACTER;
- }
+ case 45:
+ { yybegin(YYINITIAL); return RegExpTT.GT;
+ }
+ // fall through
case 162: break;
- case 47:
- { return allowMysqlBracketExpressions ? RegExpTT.NAME : RegExpTT.BAD_CHARACTER;
- }
+ case 46:
+ { yybegin(YYINITIAL); return RegExpTT.QUOTE;
+ }
+ // fall through
case 163: break;
- case 48:
- { yypopstate(); return (yycharat(-1) == 'u') ? StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN : RegExpTT.BAD_HEX_VALUE;
- }
+ case 47:
+ { return RegExpTT.BAD_CHARACTER;
+ }
+ // fall through
case 164: break;
- case 49:
- { yybegin(OPTIONS); return RegExpTT.SET_OPTIONS;
- }
+ case 48:
+ { return allowMysqlBracketExpressions ? RegExpTT.NAME : RegExpTT.BAD_CHARACTER;
+ }
+ // fall through
case 165: break;
+ case 49:
+ { yypopstate(); return (yycharat(-1) == 'u') ? StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN : RegExpTT.BAD_HEX_VALUE;
+ }
+ // fall through
+ case 166: break;
case 50:
+ { yybegin(OPTIONS); return RegExpTT.SET_OPTIONS;
+ }
+ // fall through
+ case 167: break;
+ case 51:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ yypushstate(NEGATED_CLASS); return RegExpTT.CLASS_BEGIN;
- }
- case 166: break;
- case 51:
- { return RegExpTT.REDUNDANT_ESCAPE;
- }
- case 167: break;
- case 52:
- { return RegExpTT.ESC_CHARACTER;
- }
+ }
+ // fall through
case 168: break;
- case 53:
- { return (allowDanglingMetacharacters != Boolean.TRUE) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ case 52:
+ { return RegExpTT.REDUNDANT_ESCAPE;
+ }
+ // fall through
case 169: break;
- case 54:
- { return (allowDanglingMetacharacters == Boolean.FALSE) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ case 53:
+ { return RegExpTT.ESC_CHARACTER;
+ }
+ // fall through
case 170: break;
- case 55:
- { return (yystate() == CLASS2) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ case 54:
+ { return (allowDanglingMetacharacters != Boolean.TRUE) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
+ }
+ // fall through
case 171: break;
- case 56:
- { return commentMode ? RegExpTT.ESC_CTRL_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ case 55:
+ { return (allowDanglingMetacharacters == Boolean.FALSE) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
+ }
+ // fall through
case 172: break;
- case 57:
- { return RegExpTT.ESC_CTRL_CHARACTER;
- }
+ case 56:
+ { return (yystate() == CLASS2) ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
+ }
+ // fall through
case 173: break;
- case 58:
- { return RegExpTT.BOUNDARY;
- }
+ case 57:
+ { return commentMode ? RegExpTT.ESC_CTRL_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
+ }
+ // fall through
case 174: break;
- case 59:
- { return RegExpTT.CHAR_CLASS;
- }
+ case 58:
+ { return RegExpTT.ESC_CTRL_CHARACTER;
+ }
+ // fall through
case 175: break;
- case 60:
- { if (xmlSchemaMode) return RegExpTT.CHAR_CLASS; else return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
- }
+ case 59:
+ { return RegExpTT.BOUNDARY;
+ }
+ // fall through
case 176: break;
- case 61:
- { yypushstate(PROP); return RegExpTT.PROPERTY;
- }
+ case 60:
+ { return RegExpTT.CHAR_CLASS;
+ }
+ // fall through
case 177: break;
- case 62:
- { return allowTransformationEscapes ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
- }
+ case 61:
+ { if (xmlSchemaMode) return RegExpTT.CHAR_CLASS; else return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
+ }
+ // fall through
case 178: break;
+ case 62:
+ { yypushstate(PROP); return RegExpTT.PROPERTY;
+ }
+ // fall through
+ case 179: break;
case 63:
+ { return allowTransformationEscapes ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
+ }
+ // fall through
+ case 180: break;
+ case 64:
{ String text = yytext().toString().substring(1);
if (allowOctalNoLeadingZero) {
if (Integer.parseInt(text) <= capturingGroupCount && yystate() != CLASS2) return RegExpTT.BACKREF;
@@ -1123,70 +1178,84 @@ class _RegExLexer implements FlexLexer {
}
return RegExpTT.BACKREF;
}
- }
- case 179: break;
- case 64:
- { yypushstate(QUOTED); return RegExpTT.QUOTE_BEGIN;
- }
- case 180: break;
- case 65:
- { return RegExpTT.BAD_HEX_VALUE;
- }
+ }
+ // fall through
case 181: break;
- case 66:
- { return allowTransformationEscapes ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
- }
+ case 65:
+ { yypushstate(QUOTED); return RegExpTT.QUOTE_BEGIN;
+ }
+ // fall through
case 182: break;
- case 67:
- { return (allowOctalNoLeadingZero ? RegExpTT.OCT_CHAR : RegExpTT.BAD_OCT_VALUE);
- }
+ case 66:
+ { return RegExpTT.BAD_HEX_VALUE;
+ }
+ // fall through
case 183: break;
- case 68:
- { return (allowHexDigitClass || allowHorizontalWhitespaceClass ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN);
- }
+ case 67:
+ { return allowTransformationEscapes ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
+ }
+ // fall through
case 184: break;
- case 69:
- { yypushstate(NAMED); return RegExpTT.NAMED_CHARACTER;
- }
+ case 68:
+ { return (allowOctalNoLeadingZero ? RegExpTT.OCT_CHAR : RegExpTT.BAD_OCT_VALUE);
+ }
+ // fall through
case 185: break;
- case 70:
- { yypopstate(); return RegExpTT.QUOTE_END;
- }
+ case 69:
+ { return (allowHexDigitClass || allowHorizontalWhitespaceClass ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN);
+ }
+ // fall through
case 186: break;
- case 71:
- // 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; }
- }
+ case 70:
+ { yypushstate(NAMED); return RegExpTT.NAMED_CHARACTER;
+ }
+ // fall through
case 187: break;
+ case 71:
+ { yypopstate(); return RegExpTT.QUOTE_END;
+ }
+ // fall through
+ case 188: break;
case 72:
// 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;
- }
- case 188: break;
+ { yybegin(CLASS2); if (allowMysqlBracketExpressions) { yypushback(1); } else if (allowNestedCharacterClasses) { yypushstate(CLASS1); return RegExpTT.CLASS_BEGIN; } else { return RegExpTT.CHARACTER; }
+ }
+ // fall through
+ case 189: break;
case 73:
// 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; }
- }
- case 189: break;
- case 74:
- { yybegin(CLASS2); return allowEmptyCharacterClass ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
+ { yybegin(CLASS2); if (allowNestedCharacterClasses) { yypushstate(NEGATED_CLASS); return RegExpTT.CLASS_BEGIN; } return RegExpTT.CHARACTER;
+ }
+ // fall through
case 190: break;
- case 75:
- { yybegin(CLASS2); return RegExpTT.ESC_CHARACTER;
- }
+ case 74:
+ // 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 191: break;
- case 76:
- { yypushstate(QUOTED_CLASS1); return RegExpTT.QUOTE_BEGIN;
- }
+ case 75:
+ { yybegin(CLASS2); return allowEmptyCharacterClass ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
+ }
+ // fall through
case 192: break;
+ case 76:
+ { yybegin(CLASS2); return RegExpTT.ESC_CHARACTER;
+ }
+ // fall through
+ case 193: break;
case 77:
+ { yypushstate(QUOTED_CLASS1); return RegExpTT.QUOTE_BEGIN;
+ }
+ // fall through
+ case 194: break;
+ case 78:
{ char c = yycharat(1);
if (allowPosixBracketExpressions && c == ':') {
yybegin(BRACKET_EXPRESSION);
@@ -1201,194 +1270,234 @@ class _RegExLexer implements FlexLexer {
yypushback(1);
return allowNestedCharacterClasses ? RegExpTT.CLASS_BEGIN : RegExpTT.CHARACTER;
}
- }
- case 193: break;
- case 78:
+ }
+ // fall through
+ case 195: break;
+ case 79:
// 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;
- }
- case 194: break;
- case 79:
- { return (commentMode && whitespaceInClass) ? RegExpTT.ESC_CTRL_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
- case 195: break;
- case 80:
- { if (allowNestedCharacterClasses) return RegExpTT.ANDAND; else yypushback(1); return RegExpTT.CHARACTER;
- }
+ }
+ // fall through
case 196: break;
- case 81:
- { yybegin(CLASS2); return RegExpTT.BRACKET_EXPRESSION_END;
- }
+ case 80:
+ { return (commentMode && whitespaceInClass) ? RegExpTT.ESC_CTRL_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
+ }
+ // fall through
case 197: break;
- case 82:
- { yybegin(CLASS2); return RegExpTT.MYSQL_CHAR_END;
- }
+ case 81:
+ { if (allowNestedCharacterClasses) return RegExpTT.ANDAND; else yypushback(1); return RegExpTT.CHARACTER;
+ }
+ // fall through
case 198: break;
- case 83:
- { yybegin(CLASS2); return RegExpTT.MYSQL_CHAR_EQ_END;
- }
+ case 82:
+ { yybegin(CLASS2); return RegExpTT.BRACKET_EXPRESSION_END;
+ }
+ // fall through
case 199: break;
- case 84:
- { yybegin(PY_COND_REF); return RegExpTT.PYTHON_COND_REF;
- }
+ case 83:
+ { yybegin(CLASS2); return RegExpTT.MYSQL_CHAR_END;
+ }
+ // fall through
case 200: break;
- case 85:
- { yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_NAMED_GROUP;
- }
+ case 84:
+ { yybegin(CLASS2); return RegExpTT.MYSQL_CHAR_EQ_END;
+ }
+ // fall through
case 201: break;
- case 86:
- { yybegin(QUOTED_NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_QUOTED_NAMED_GROUP;
- }
+ case 85:
+ { yybegin(PY_COND_REF); return RegExpTT.PYTHON_COND_REF;
+ }
+ // fall through
case 202: break;
- case 87:
- { return RegExpTT.NON_CAPT_GROUP;
- }
+ case 86:
+ { yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_NAMED_GROUP;
+ }
+ // fall through
case 203: break;
+ case 87:
+ { yybegin(QUOTED_NAMED_GROUP); capturingGroupCount++; return RegExpTT.RUBY_QUOTED_NAMED_GROUP;
+ }
+ // fall through
+ case 204: break;
case 88:
{ return RegExpTT.POS_LOOKAHEAD;
- }
- case 204: break;
- case 89:
- { return RegExpTT.ATOMIC_GROUP;
- }
+ }
+ // fall through
case 205: break;
- case 90:
- { return RegExpTT.NEG_LOOKAHEAD;
- }
+ case 89:
+ { return RegExpTT.NON_CAPT_GROUP;
+ }
+ // fall through
case 206: break;
- case 91:
- // lookahead expression with fixed base length
- zzMarkedPos = Character.offsetByCodePoints
- (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
- { yypushstate(QUANTIFIER); return RegExpTT.LBRACE;
- }
+ case 90:
+ { return RegExpTT.ATOMIC_GROUP;
+ }
+ // fall through
case 207: break;
+ case 91:
+ { return RegExpTT.NEG_LOOKAHEAD;
+ }
+ // fall through
+ case 208: break;
case 92:
// 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;
- }
- case 208: break;
- case 93:
- { yybegin(NAMED_GROUP); return RegExpTT.RUBY_NAMED_GROUP_CALL;
- }
+ { yypushstate(QUANTIFIER); return RegExpTT.LBRACE;
+ }
+ // fall through
case 209: break;
- case 94:
- { yybegin(QUOTED_NAMED_GROUP); return RegExpTT.RUBY_QUOTED_NAMED_GROUP_CALL;
- }
+ case 93:
+ // 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 210: break;
- case 95:
- { if (xmlSchemaMode) { yypushback(1); return RegExpTT.CHAR_CLASS; } else return RegExpTT.CTRL;
- }
+ case 94:
+ { yybegin(NAMED_GROUP); return RegExpTT.RUBY_NAMED_GROUP_CALL;
+ }
+ // fall through
case 211: break;
+ case 95:
+ { yybegin(QUOTED_NAMED_GROUP); return RegExpTT.RUBY_QUOTED_NAMED_GROUP_CALL;
+ }
+ // fall through
+ case 212: break;
case 96:
+ { if (xmlSchemaMode) { yypushback(1); return RegExpTT.CHAR_CLASS; } else return RegExpTT.CTRL;
+ }
+ // fall through
+ case 213: break;
+ case 97:
// 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;
- }
- case 212: break;
- case 97:
- { if (allowOneHexCharEscape) { return RegExpTT.HEX_CHAR; } else { yypushback(1); return RegExpTT.BAD_HEX_VALUE; }
- }
- case 213: break;
+ }
+ // fall through
+ case 214: break;
case 98:
+ { if (allowOneHexCharEscape) { return RegExpTT.HEX_CHAR; } else { yypushback(1); return RegExpTT.BAD_HEX_VALUE; }
+ }
+ // fall through
+ case 215: break;
+ case 99:
// 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;
- }
- case 214: break;
- case 99:
- { yypushback(yylength() - 2); return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
- }
- case 215: break;
- case 100:
- { return RegExpTT.OCT_CHAR;
- }
+ }
+ // fall through
case 216: break;
- case 101:
- { yybegin(NAMED_GROUP); return RegExpTT.RUBY_NAMED_GROUP_REF;
- }
+ case 100:
+ { yypushback(yylength() - 2); return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
+ }
+ // fall through
case 217: break;
- case 102:
- { yybegin(QUOTED_NAMED_GROUP); return RegExpTT.RUBY_QUOTED_NAMED_GROUP_REF;
- }
+ case 101:
+ { return RegExpTT.OCT_CHAR;
+ }
+ // fall through
case 218: break;
+ case 102:
+ { yybegin(NAMED_GROUP); return RegExpTT.RUBY_NAMED_GROUP_REF;
+ }
+ // fall through
+ case 219: break;
case 103:
+ { yybegin(QUOTED_NAMED_GROUP); return RegExpTT.RUBY_QUOTED_NAMED_GROUP_REF;
+ }
+ // fall through
+ case 220: break;
+ case 104:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 1);
{ return RegExpTT.CHARACTER;
- }
- case 219: break;
- case 104:
- { yypopstate(); return (yycharat(-1) == 'u') ? RegExpTT.UNICODE_CHAR : RegExpTT.HEX_CHAR;
- }
- case 220: break;
- case 105:
- { yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.PYTHON_NAMED_GROUP;
- }
+ }
+ // fall through
case 221: break;
- case 106:
- { yybegin(PY_NAMED_GROUP_REF); return RegExpTT.PYTHON_NAMED_GROUP_REF;
- }
+ case 105:
+ { yypopstate(); return (yycharat(-1) == 'u') ? RegExpTT.UNICODE_CHAR : RegExpTT.HEX_CHAR;
+ }
+ // fall through
case 222: break;
- case 107:
- { return RegExpTT.POS_LOOKBEHIND;
- }
+ case 106:
+ { yybegin(NAMED_GROUP); capturingGroupCount++; return RegExpTT.PYTHON_NAMED_GROUP;
+ }
+ // fall through
case 223: break;
- case 108:
- { return RegExpTT.NEG_LOOKBEHIND;
- }
+ case 107:
+ { yybegin(PY_NAMED_GROUP_REF); return RegExpTT.PYTHON_NAMED_GROUP_REF;
+ }
+ // fall through
case 224: break;
+ case 108:
+ { return RegExpTT.POS_LOOKBEHIND;
+ }
+ // fall through
+ case 225: break;
case 109:
+ { return RegExpTT.NEG_LOOKBEHIND;
+ }
+ // fall through
+ case 226: break;
+ case 110:
// 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;
- }
- case 225: break;
- case 110:
- // lookahead expression with fixed base length
- zzMarkedPos = Character.offsetByCodePoints
- (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
- { return RegExpTT.ESC_CHARACTER;
- }
- case 226: break;
+ }
+ // fall through
+ case 227: break;
case 111:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
- { return allowOmitBothNumbersInQuantifiers ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
- case 227: break;
- case 112:
- { return RegExpTT.HEX_CHAR;
- }
+ { return RegExpTT.ESC_CHARACTER;
+ }
+ // fall through
case 228: break;
- case 113:
- { return RegExpTT.COMMENT;
- }
+ case 112:
+ // 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 229: break;
+ case 113:
+ { return RegExpTT.HEX_CHAR;
+ }
+ // fall through
+ case 230: break;
case 114:
+ { return RegExpTT.COMMENT;
+ }
+ // fall through
+ case 231: break;
+ case 115:
// lookahead expression with fixed base length
zzMarkedPos = Character.offsetByCodePoints
(zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzStartRead, 2);
{ return allowOmitNumbersInQuantifiers ? RegExpTT.ESC_CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
- }
- case 230: break;
- case 115:
- { if (allowOctalNoLeadingZero) yypushback(1); return RegExpTT.OCT_CHAR;
- }
- case 231: break;
- case 116:
- { return RegExpTT.UNICODE_CHAR;
- }
+ }
+ // fall through
case 232: break;
+ case 116:
+ { if (allowOctalNoLeadingZero) yypushback(1); return RegExpTT.OCT_CHAR;
+ }
+ // fall through
+ case 233: break;
+ case 117:
+ { return RegExpTT.UNICODE_CHAR;
+ }
+ // fall through
+ case 234: break;
default:
zzScanError(ZZ_NO_MATCH);
}
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpCapability.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpCapability.java
index 3db689866a80..be4eb9488f8b 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpCapability.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpCapability.java
@@ -84,6 +84,11 @@ public enum RegExpCapability {
*/
CARET_NEGATED_PROPERTIES,
+ /**
+ * supports properties with name and value like \p{name=value}
+ */
+ PROPERTY_VALUES,
+
/**
* \\u, \l, \\U, \L, and \E
*/
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java
index ec56c008133c..2297fc3e32c1 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java
@@ -6,6 +6,7 @@ import com.intellij.codeInsight.completion.*;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.lookup.TailTypeDecorator;
+import com.intellij.lang.ASTNode;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.progress.ProgressManager;
@@ -13,9 +14,11 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.patterns.ElementPattern;
import com.intellij.patterns.PsiElementPattern;
import com.intellij.psi.PsiElement;
+import com.intellij.util.ObjectUtils;
import com.intellij.util.PlatformIcons;
import com.intellij.util.ProcessingContext;
import com.intellij.util.ui.EmptyIcon;
+import org.intellij.lang.regexp.psi.RegExpProperty;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -62,6 +65,9 @@ public final class RegExpCompletionContributor extends CompletionContributor {
final ElementPattern propertyPattern = psiElement().withText("\\\\p");
extend(CompletionType.BASIC, psiElement().afterLeaf(propertyPattern), new PropertyCompletionProvider());
+
+ extend(CompletionType.BASIC, psiElement().inside(RegExpProperty.class).afterLeaf(psiElement(RegExpTT.EQ)),
+ new PropertyValueCompletionProvider());
}
{
@@ -172,4 +178,20 @@ public final class RegExpCompletionContributor extends CompletionContributor {
});
}
}
+
+ private static class PropertyValueCompletionProvider extends CompletionProvider {
+ @Override
+ protected void addCompletions(@NotNull CompletionParameters parameters,
+ @NotNull ProcessingContext context,
+ @NotNull CompletionResultSet result) {
+ RegExpProperty property = ObjectUtils.tryCast(parameters.getPosition().getParent(), RegExpProperty.class);
+ ASTNode propertyNameNode = property != null ? property.getCategoryNode() : null;
+ if (propertyNameNode == null) {
+ return;
+ }
+ for (String[] value : RegExpLanguageHosts.getInstance().getAllPropertyValues(property, propertyNameNode.getText())) {
+ addLookupElement(result, value[0], value.length > 1 ? value[1] : null, null);
+ }
+ }
+ }
}
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java
index 3bc8820404bf..47a3221c2a1b 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java
@@ -28,6 +28,8 @@ import java.util.EnumSet;
public interface RegExpLanguageHost {
EnumSet EMPTY_NAMED_GROUP_TYPES = EnumSet.noneOf(RegExpGroup.Type.class);
+ @SuppressWarnings("SSBasedInspection")
+ String[][] EMPTY_COMPLETION_ITEMS_ARRAY = new String[0][];
boolean characterNeedsEscaping(char c);
boolean supportsPerl5EmbeddedComments();
@@ -89,6 +91,11 @@ public interface RegExpLanguageHost {
}
boolean isValidCategory(@NotNull String category);
+
+ default boolean isValidPropertyValue(@NotNull String propertyName, @NotNull String value){
+ return true;
+ }
+
@NotNull
String[][] getAllKnownProperties();
@Nullable
@@ -109,6 +116,11 @@ public interface RegExpLanguageHost {
return Lookbehind.FULL; // to not break existing implementations, although rarely actually supported.
}
+ @NotNull
+ default String[][] getAllPropertyValues(@NotNull String propertyName){
+ return EMPTY_COMPLETION_ITEMS_ARRAY;
+ }
+
enum Lookbehind {
/** Lookbehind not supported. */
NOT_SUPPORTED,
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java
index f9735609bac5..51c7d74eeb84 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java
@@ -151,6 +151,11 @@ public final class RegExpLanguageHosts extends ClassExtension" in Python/Ruby named group */
IElementType GT = new RegExpElementType("GT");
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/ecmascript/EcmaScriptUnicodeRegexpParserDefinition.java b/RegExpSupport/src/org/intellij/lang/regexp/ecmascript/EcmaScriptUnicodeRegexpParserDefinition.java
index 2529a2aede54..a19ad6ab2886 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/ecmascript/EcmaScriptUnicodeRegexpParserDefinition.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/ecmascript/EcmaScriptUnicodeRegexpParserDefinition.java
@@ -21,6 +21,7 @@ public class EcmaScriptUnicodeRegexpParserDefinition extends RegExpParserDefinit
private final EnumSet CAPABILITIES = EnumSet.of(RegExpCapability.OCTAL_NO_LEADING_ZERO,
RegExpCapability.ALLOW_EMPTY_CHARACTER_CLASS,
RegExpCapability.NO_DANGLING_METACHARACTERS,
+ RegExpCapability.PROPERTY_VALUES,
RegExpCapability.EXTENDED_UNICODE_CHARACTER);
@Override
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/psi/RegExpProperty.java b/RegExpSupport/src/org/intellij/lang/regexp/psi/RegExpProperty.java
index 7dbd2a85f9eb..1d7605dcc417 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/psi/RegExpProperty.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/psi/RegExpProperty.java
@@ -32,4 +32,10 @@ public interface RegExpProperty extends RegExpAtom, RegExpClassElement {
*/
@Nullable
ASTNode getCategoryNode();
+
+ /**
+ * The node that represents the category value, e.g 'Latin' in \p{Script=Latin}
+ */
+ @Nullable
+ ASTNode getValueNode();
}
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpPropertyImpl.java b/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpPropertyImpl.java
index c5793d42a93c..3a2584df25f3 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpPropertyImpl.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpPropertyImpl.java
@@ -64,59 +64,78 @@ public class RegExpPropertyImpl extends RegExpElementImpl implements RegExpPrope
return getNode().findChildByType(RegExpTT.NAME);
}
- @Override
- public void accept(RegExpElementVisitor visitor) {
- visitor.visitRegExpProperty(this);
- }
+ @Nullable
+ @Override
+ public ASTNode getValueNode() {
+ ASTNode node = getNode();
+ ASTNode eq = node.findChildByType(RegExpTT.EQ);
+ return eq != null ? node.findChildByType(RegExpTT.NAME, eq) : null;
+ }
+
+ @Override
+ public void accept(RegExpElementVisitor visitor) {
+ visitor.visitRegExpProperty(this);
+ }
private class MyPsiReference implements PsiReference {
- @Override
- @NotNull
- public PsiElement getElement() {
- return RegExpPropertyImpl.this;
- }
+ @Override
+ @NotNull
+ public PsiElement getElement() {
+ return RegExpPropertyImpl.this;
+ }
- @Override
- @NotNull
- public TextRange getRangeInElement() {
- ASTNode firstNode = getNode().findChildByType(RegExpTT.CARET);
- if (firstNode == null) {
- firstNode = getNode().findChildByType(RegExpTT.LBRACE);
- }
- assert firstNode != null;
- final ASTNode rbrace = getNode().findChildByType(RegExpTT.RBRACE);
- int to = rbrace == null ? getTextRange().getEndOffset() : rbrace.getTextRange().getEndOffset() - 1;
+ @Override
+ @NotNull
+ public TextRange getRangeInElement() {
+ ASTNode node = getNode();
+ ASTNode firstNode = node.findChildByType(RegExpTT.CARET);
+ if (firstNode == null) {
+ firstNode = node.findChildByType(RegExpTT.LBRACE);
+ }
+ assert firstNode != null;
+ ASTNode eq = node.findChildByType(RegExpTT.EQ);
+ final ASTNode rbrace = node.findChildByType(RegExpTT.RBRACE);
+ int to;
+ if (eq != null) {
+ to = eq.getTextRange().getEndOffset() - 1;
+ }
+ else if (rbrace != null) {
+ to = rbrace.getTextRange().getEndOffset() - 1;
+ }
+ else {
+ to = getTextRange().getEndOffset();
+ }
- final TextRange t = new TextRange(firstNode.getStartOffset() + 1, to);
- return t.shiftRight(-getTextRange().getStartOffset());
- }
+ final TextRange t = new TextRange(firstNode.getStartOffset() + 1, to);
+ return t.shiftRight(-getTextRange().getStartOffset());
+ }
- @Override
- @Nullable
- public PsiElement resolve() {
- return RegExpPropertyImpl.this;
- }
+ @Override
+ @Nullable
+ public PsiElement resolve() {
+ return RegExpPropertyImpl.this;
+ }
- @Override
- @NotNull
- public String getCanonicalText() {
- return getRangeInElement().substring(getElement().getText());
- }
+ @Override
+ @NotNull
+ public String getCanonicalText() {
+ return getRangeInElement().substring(getElement().getText());
+ }
- @Override
- public PsiElement handleElementRename(@NotNull String newElementName) throws IncorrectOperationException {
- throw new IncorrectOperationException();
- }
+ @Override
+ public PsiElement handleElementRename(@NotNull String newElementName) throws IncorrectOperationException {
+ throw new IncorrectOperationException();
+ }
- @Override
- public PsiElement bindToElement(@NotNull PsiElement element) throws IncorrectOperationException {
- throw new IncorrectOperationException();
- }
+ @Override
+ public PsiElement bindToElement(@NotNull PsiElement element) throws IncorrectOperationException {
+ throw new IncorrectOperationException();
+ }
- @Override
- public boolean isReferenceTo(@NotNull PsiElement element) {
- return false;
- }
+ @Override
+ public boolean isReferenceTo(@NotNull PsiElement element) {
+ return false;
+ }
@Override
@NotNull
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/regexp-lexer.flex b/RegExpSupport/src/org/intellij/lang/regexp/regexp-lexer.flex
index c4b98e88c5c5..b19883f8ea6a 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/regexp-lexer.flex
+++ b/RegExpSupport/src/org/intellij/lang/regexp/regexp-lexer.flex
@@ -301,6 +301,7 @@ HEX_CHAR=[0-9a-fA-F]
{
"^" { return RegExpTT.CARET; }
{NAME} { return RegExpTT.NAME; }
+ "=" { return RegExpTT.EQ; }
{RBRACE} { yypopstate(); return RegExpTT.RBRACE; }
{ANY} { yypopstate(); yypushback(1); }
}
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/validation/RegExpAnnotator.java b/RegExpSupport/src/org/intellij/lang/regexp/validation/RegExpAnnotator.java
index 4de3713858b7..a85c9588fb49 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/validation/RegExpAnnotator.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/validation/RegExpAnnotator.java
@@ -219,9 +219,16 @@ public final class RegExpAnnotator extends RegExpElementVisitor implements Annot
if (category == null) {
return;
}
- if(!myLanguageHosts.isValidCategory(category.getPsi(), category.getText())) {
+ String propertyName = category.getText();
+ if(!myLanguageHosts.isValidCategory(category.getPsi(), propertyName)) {
final Annotation a = myHolder.createErrorAnnotation(category, "Unknown character category");
a.setHighlightType(ProblemHighlightType.LIKE_UNKNOWN_SYMBOL);
+ return;
+ }
+ ASTNode valueNode = property.getValueNode();
+ if (valueNode != null && !myLanguageHosts.isValidPropertyValue(category.getPsi(), propertyName, valueNode.getText())) {
+ final Annotation a = myHolder.createErrorAnnotation(valueNode, "Unknown property value");
+ a.setHighlightType(ProblemHighlightType.LIKE_UNKNOWN_SYMBOL);
}
}