diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 97da7e7..ce1c62c 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
+
-
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index b04e44c..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gen/jp/s6n/idea/typespec/lang/parser/_TypeSpecLexer.java b/gen/jp/s6n/idea/typespec/lang/parser/_TypeSpecLexer.java
index a8b373b..5fdccad 100644
--- a/gen/jp/s6n/idea/typespec/lang/parser/_TypeSpecLexer.java
+++ b/gen/jp/s6n/idea/typespec/lang/parser/_TypeSpecLexer.java
@@ -38,7 +38,29 @@ public class _TypeSpecLexer implements FlexLexer {
private static final int [] ZZ_CMAP_TOP = zzUnpackcmap_top();
private static final String ZZ_CMAP_TOP_PACKED_0 =
- "\1\0\37\u0100\1\u0200\267\u0100\10\u0300\u1020\u0100";
+ "\1\0\1\u0100\1\u0200\1\u0300\1\u0400\1\u0500\1\u0600\1\u0700"+
+ "\1\u0800\1\u0900\1\u0a00\1\u0b00\1\u0c00\1\u0d00\1\u0e00\1\u0f00"+
+ "\1\u1000\1\u0100\1\u1100\1\u1200\1\u1300\1\u0100\1\u1400\1\u1500"+
+ "\1\u1600\1\u1700\1\u1800\1\u1900\1\u1a00\1\u1b00\1\u0100\1\u1c00"+
+ "\1\u1d00\1\u1e00\1\u1f00\1\u2000\1\u2100\1\u2200\1\u2300\1\u2400"+
+ "\1\u1f00\1\u2500\1\u1f00\1\u2600\1\u2700\1\u2800\2\u1f00\1\u2900"+
+ "\1\u2a00\1\u2b00\1\u1f00\31\u0100\1\u2c00\121\u0100\1\u2d00\4\u0100"+
+ "\1\u2e00\1\u0100\1\u2f00\1\u3000\1\u3100\1\u3200\1\u3300\1\u3400"+
+ "\53\u0100\1\u3500\10\u3600\31\u1f00\1\u0100\1\u3700\1\u3800\1\u0100"+
+ "\1\u3900\1\u3a00\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u4000"+
+ "\1\u4100\1\u0100\1\u4200\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700"+
+ "\1\u4800\1\u1f00\1\u4900\1\u4a00\1\u4b00\1\u4c00\1\u4d00\1\u4e00"+
+ "\1\u4f00\1\u5000\1\u5100\1\u5200\1\u5300\1\u5400\1\u1f00\1\u5500"+
+ "\1\u5600\1\u5700\1\u1f00\3\u0100\1\u5800\1\u5900\1\u5a00\12\u1f00"+
+ "\4\u0100\1\u5b00\17\u1f00\2\u0100\1\u5c00\41\u1f00\2\u0100\1\u5d00"+
+ "\1\u5e00\2\u1f00\1\u5f00\1\u6000\27\u0100\1\u6100\2\u0100\1\u6200"+
+ "\45\u1f00\1\u0100\1\u6300\1\u6400\11\u1f00\1\u6500\24\u1f00\1\u6600"+
+ "\1\u6700\1\u1f00\1\u6800\1\u6900\1\u6a00\1\u6b00\2\u1f00\1\u6c00"+
+ "\5\u1f00\1\u6d00\1\u6e00\1\u6f00\5\u1f00\1\u7000\1\u7100\4\u1f00"+
+ "\1\u7200\1\u1f00\1\u7300\1\u7400\1\u7500\1\u7600\1\u7700\1\u7800"+
+ "\1\u7900\1\u7a00\1\u1f00\1\u7b00\1\u7c00\5\u1f00\246\u0100\1\u7d00"+
+ "\20\u0100\1\u7e00\1\u7f00\25\u0100\1\u8000\34\u0100\1\u8100\14\u1f00"+
+ "\2\u0100\1\u8200\u0b06\u1f00\1\u8300\u02fe\u1f00";
private static int [] zzUnpackcmap_top() {
int [] result = new int[4352];
@@ -67,17 +89,260 @@ private static int zzUnpackcmap_top(String packed, int offset, int [] result) {
private static final String ZZ_CMAP_BLOCKS_PACKED_0 =
"\11\0\1\1\1\2\2\3\1\2\22\0\1\1\1\0"+
- "\1\4\1\5\2\0\1\6\1\0\1\7\1\10\1\11"+
- "\1\0\1\12\1\13\1\14\1\15\12\16\1\17\1\20"+
- "\1\21\1\22\1\23\1\24\1\25\32\26\1\27\1\30"+
- "\1\31\1\0\1\32\1\33\1\34\1\26\1\35\1\36"+
- "\1\37\1\40\1\41\1\26\1\42\2\26\1\43\1\44"+
- "\1\45\1\46\1\47\1\26\1\50\1\51\1\52\1\53"+
- "\1\54\1\26\1\55\1\56\1\26\1\57\1\60\1\61"+
- "\7\0\1\62\u01a2\0\2\62\326\0\u0100\62";
+ "\1\4\1\5\1\6\1\0\1\7\1\0\1\10\1\11"+
+ "\1\12\1\0\1\13\1\14\1\15\1\16\12\17\1\20"+
+ "\1\21\1\22\1\23\1\24\1\25\1\26\32\6\1\27"+
+ "\1\30\1\31\1\0\1\6\1\32\1\33\1\6\1\34"+
+ "\1\35\1\36\1\37\1\40\1\6\1\41\2\6\1\42"+
+ "\1\43\1\44\1\45\1\46\1\6\1\47\1\50\1\51"+
+ "\1\52\1\53\1\6\1\54\1\55\1\6\1\56\1\57"+
+ "\1\60\7\0\1\61\43\0\2\6\3\0\1\6\6\0"+
+ "\1\6\1\0\1\62\2\0\1\6\5\0\27\6\1\0"+
+ "\37\6\1\0\u01ca\6\4\0\14\6\16\0\5\6\7\0"+
+ "\1\6\1\0\1\6\21\0\160\62\5\6\1\0\2\6"+
+ "\2\0\4\6\1\0\1\6\6\0\1\6\1\62\3\6"+
+ "\1\0\1\6\1\0\24\6\1\0\123\6\1\0\213\6"+
+ "\1\0\5\62\2\0\246\6\1\0\46\6\2\0\1\6"+
+ "\6\0\51\6\10\0\55\62\1\0\1\62\1\0\2\62"+
+ "\1\0\2\62\1\0\1\62\10\0\33\6\4\0\4\6"+
+ "\35\0\13\62\5\0\53\6\37\62\4\0\2\6\1\62"+
+ "\143\6\1\0\1\6\7\62\2\0\6\62\2\6\2\62"+
+ "\1\0\4\62\2\6\12\62\3\6\2\0\1\6\20\0"+
+ "\1\6\1\62\36\6\33\62\2\0\131\6\13\62\1\6"+
+ "\16\0\12\62\41\6\11\62\2\6\4\0\1\6\2\0"+
+ "\1\62\2\0\26\6\4\62\1\6\11\62\1\6\3\62"+
+ "\1\6\5\62\22\0\31\6\3\62\4\0\13\6\65\0"+
+ "\25\6\1\0\10\6\25\0\17\62\1\0\41\62\66\6"+
+ "\3\62\1\6\22\62\1\6\7\62\12\6\2\62\2\0"+
+ "\12\62\1\0\20\6\3\62\1\0\10\6\2\0\2\6"+
+ "\2\0\26\6\1\0\7\6\1\0\1\6\3\0\4\6"+
+ "\2\0\1\62\1\6\7\62\2\0\2\62\2\0\3\62"+
+ "\1\6\10\0\1\62\4\0\2\6\1\0\3\6\2\62"+
+ "\2\0\12\62\2\6\12\0\1\6\1\0\1\62\2\0"+
+ "\3\62\1\0\6\6\4\0\2\6\2\0\26\6\1\0"+
+ "\7\6\1\0\2\6\1\0\2\6\1\0\2\6\2\0"+
+ "\1\62\1\0\5\62\4\0\2\62\2\0\3\62\3\0"+
+ "\1\62\7\0\4\6\1\0\1\6\7\0\14\62\3\6"+
+ "\1\62\13\0\3\62\1\0\11\6\1\0\3\6\1\0"+
+ "\26\6\1\0\7\6\1\0\2\6\1\0\5\6\2\0"+
+ "\1\62\1\6\10\62\1\0\3\62\1\0\3\62\2\0"+
+ "\1\6\17\0\2\6\2\62\2\0\12\62\11\0\1\6"+
+ "\6\62\1\0\3\62\1\0\10\6\2\0\2\6\2\0"+
+ "\26\6\1\0\7\6\1\0\2\6\1\0\5\6\2\0"+
+ "\1\62\1\6\7\62\2\0\2\62\2\0\3\62\10\0"+
+ "\2\62\4\0\2\6\1\0\3\6\2\62\2\0\12\62"+
+ "\1\0\1\6\20\0\1\62\1\6\1\0\6\6\3\0"+
+ "\3\6\1\0\4\6\3\0\2\6\1\0\1\6\1\0"+
+ "\2\6\3\0\2\6\3\0\3\6\3\0\14\6\4\0"+
+ "\5\62\3\0\3\62\1\0\4\62\2\0\1\6\6\0"+
+ "\1\62\16\0\12\62\20\0\5\62\10\6\1\0\3\6"+
+ "\1\0\27\6\1\0\20\6\3\0\1\6\7\62\1\0"+
+ "\3\62\1\0\4\62\7\0\2\62\1\0\3\6\5\0"+
+ "\2\6\2\62\2\0\12\62\20\0\1\6\3\62\1\0"+
+ "\10\6\1\0\3\6\1\0\27\6\1\0\12\6\1\0"+
+ "\5\6\2\0\1\62\1\6\7\62\1\0\3\62\1\0"+
+ "\4\62\7\0\2\62\7\0\1\6\1\0\2\6\2\62"+
+ "\2\0\12\62\1\0\2\6\15\0\4\62\1\0\10\6"+
+ "\1\0\3\6\1\0\51\6\2\62\1\6\7\62\1\0"+
+ "\3\62\1\0\4\62\1\6\5\0\3\6\1\62\7\0"+
+ "\3\6\2\62\2\0\12\62\12\0\6\6\2\0\2\62"+
+ "\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6"+
+ "\2\0\7\6\3\0\1\62\4\0\6\62\1\0\1\62"+
+ "\1\0\10\62\6\0\12\62\2\0\2\62\15\0\60\6"+
+ "\1\62\2\6\7\62\5\0\7\6\10\62\1\0\12\62"+
+ "\47\0\2\6\1\0\1\6\1\0\5\6\1\0\30\6"+
+ "\1\0\1\6\1\0\12\6\1\62\2\6\11\62\1\6"+
+ "\2\0\5\6\1\0\1\6\1\0\6\62\2\0\12\62"+
+ "\2\0\4\6\40\0\1\6\27\0\2\62\6\0\12\62"+
+ "\13\0\1\62\1\0\1\62\1\0\1\62\4\0\2\62"+
+ "\10\6\1\0\44\6\4\0\24\62\1\0\2\62\5\6"+
+ "\13\62\1\0\44\62\11\0\1\62\71\0\53\6\24\62"+
+ "\1\6\12\62\6\0\6\6\4\62\4\6\3\62\1\6"+
+ "\3\62\2\6\7\62\3\6\4\62\15\6\14\62\1\6"+
+ "\17\62\2\0\46\6\1\0\1\6\5\0\1\6\2\0"+
+ "\53\6\1\0\115\6\1\0\4\6\2\0\7\6\1\0"+
+ "\1\6\1\0\4\6\2\0\51\6\1\0\4\6\2\0"+
+ "\41\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0"+
+ "\4\6\2\0\17\6\1\0\71\6\1\0\4\6\2\0"+
+ "\103\6\2\0\3\62\11\0\11\62\16\0\20\6\20\0"+
+ "\126\6\2\0\6\6\3\0\u016c\6\2\0\21\6\1\0"+
+ "\32\6\5\0\113\6\3\0\13\6\7\0\15\6\1\0"+
+ "\4\6\3\62\13\0\22\6\3\62\13\0\22\6\2\62"+
+ "\14\0\15\6\1\0\3\6\1\0\2\62\14\0\64\6"+
+ "\40\62\3\0\1\6\4\0\1\6\1\62\2\0\12\62"+
+ "\41\0\3\62\2\0\12\62\6\0\131\6\7\0\51\6"+
+ "\1\62\1\6\5\0\106\6\12\0\37\6\1\0\14\62"+
+ "\4\0\14\62\12\0\12\62\36\6\2\0\5\6\13\0"+
+ "\54\6\4\0\32\6\6\0\13\62\45\0\27\6\5\62"+
+ "\4\0\65\6\12\62\1\0\35\62\2\0\13\62\6\0"+
+ "\12\62\15\0\1\6\10\0\16\62\102\0\5\62\57\6"+
+ "\21\62\7\6\4\0\12\62\21\0\11\62\14\0\3\62"+
+ "\36\6\15\62\2\6\12\62\54\6\16\62\14\0\44\6"+
+ "\24\62\10\0\12\62\3\0\3\6\12\62\44\6\2\0"+
+ "\11\6\7\0\53\6\2\0\3\6\20\0\3\62\1\0"+
+ "\25\62\4\6\1\62\6\6\1\62\2\6\3\62\1\6"+
+ "\5\0\300\6\72\62\1\0\5\62\26\6\2\0\6\6"+
+ "\2\0\46\6\2\0\6\6\2\0\10\6\1\0\1\6"+
+ "\1\0\1\6\1\0\1\6\1\0\37\6\2\0\65\6"+
+ "\1\0\7\6\1\0\1\6\3\0\3\6\1\0\7\6"+
+ "\3\0\4\6\2\0\6\6\4\0\15\6\5\0\3\6"+
+ "\1\0\7\6\53\0\2\61\22\0\1\6\2\0\2\62"+
+ "\10\0\1\6\12\0\1\62\34\0\1\6\15\0\1\6"+
+ "\20\0\15\6\63\0\15\62\4\0\1\62\3\0\14\62"+
+ "\21\0\1\6\4\0\1\6\2\0\12\6\1\0\1\6"+
+ "\2\0\6\6\4\0\1\6\1\0\1\6\1\0\1\6"+
+ "\1\0\1\6\1\0\20\6\2\0\4\6\5\0\5\6"+
+ "\4\0\1\6\21\0\51\6\13\0\6\6\17\0\2\6"+
+ "\u016f\0\2\6\14\0\1\6\246\0\1\6\31\0\13\6"+
+ "\4\0\3\6\307\0\1\6\347\0\2\6\12\0\1\6"+
+ "\11\0\1\6\72\0\4\6\1\0\5\6\11\0\1\6"+
+ "\2\0\1\6\2\0\2\6\2\0\1\6\4\0\1\6"+
+ "\2\0\1\6\1\0\2\6\2\0\1\6\3\0\1\6"+
+ "\3\0\2\6\10\0\3\6\5\0\1\6\1\0\1\6"+
+ "\5\0\14\6\13\0\2\6\2\0\1\6\1\0\2\6"+
+ "\1\0\1\6\22\0\1\6\2\0\2\6\22\0\6\6"+
+ "\1\0\1\6\1\0\2\6\3\0\2\6\10\0\2\6"+
+ "\4\0\2\6\13\0\2\6\5\0\2\6\2\0\1\6"+
+ "\5\0\2\6\1\0\1\6\1\0\2\6\24\0\2\6"+
+ "\5\0\6\6\1\0\4\6\2\0\1\6\4\0\1\6"+
+ "\2\0\1\6\2\0\6\6\1\0\1\6\2\0\1\6"+
+ "\1\0\1\6\1\0\1\6\6\0\1\6\3\0\1\6"+
+ "\6\0\1\6\12\0\2\6\17\0\1\6\2\0\1\6"+
+ "\4\0\1\6\1\0\1\6\4\0\3\6\1\0\1\6"+
+ "\13\0\2\6\60\0\3\6\11\0\1\6\16\0\1\6"+
+ "\16\0\1\6\164\0\2\6\317\0\3\6\23\0\2\6"+
+ "\63\0\1\6\4\0\1\6\252\0\57\6\1\0\57\6"+
+ "\1\0\205\6\6\0\4\6\3\62\2\6\14\0\46\6"+
+ "\1\0\1\6\5\0\1\6\2\0\70\6\7\0\1\6"+
+ "\17\0\1\62\27\6\11\0\7\6\1\0\7\6\1\0"+
+ "\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0"+
+ "\7\6\1\0\7\6\1\0\40\62\5\0\3\6\31\0"+
+ "\11\6\6\62\6\6\2\0\6\6\3\0\126\6\2\0"+
+ "\2\62\5\6\1\0\132\6\1\0\4\6\5\0\53\6"+
+ "\1\0\136\6\21\0\33\6\65\0\20\6\227\0\1\6"+
+ "\1\0\1\6\146\0\266\6\112\0\360\6\20\0\215\6"+
+ "\103\0\56\6\2\0\15\6\3\0\20\6\12\62\2\6"+
+ "\24\0\57\6\1\62\4\0\12\62\1\0\37\6\2\62"+
+ "\120\6\2\62\45\0\11\6\2\0\147\6\2\0\65\6"+
+ "\2\0\5\6\60\0\13\6\1\62\3\6\1\62\4\6"+
+ "\1\62\27\6\5\62\30\0\64\6\14\0\2\62\62\6"+
+ "\22\62\12\0\12\62\6\0\22\62\6\6\3\0\1\6"+
+ "\1\0\2\6\13\62\34\6\10\62\2\0\27\6\15\62"+
+ "\14\0\35\6\3\0\4\62\57\6\16\62\16\0\1\6"+
+ "\12\62\6\0\5\6\1\62\12\6\12\62\5\6\1\0"+
+ "\51\6\16\62\11\0\3\6\1\62\10\6\2\62\2\0"+
+ "\12\62\6\0\27\6\3\0\1\6\3\62\62\6\1\62"+
+ "\1\6\3\62\2\6\2\62\5\6\2\62\1\6\1\62"+
+ "\1\6\30\0\3\6\2\0\13\6\5\62\2\0\3\6"+
+ "\2\62\12\0\6\6\2\0\6\6\2\0\6\6\11\0"+
+ "\7\6\1\0\7\6\1\0\53\6\1\0\14\6\10\0"+
+ "\163\6\10\62\1\0\2\62\2\0\12\62\6\0\244\6"+
+ "\14\0\27\6\4\0\61\6\4\0\u0100\61\156\6\2\0"+
+ "\152\6\46\0\7\6\14\0\5\6\5\0\1\6\1\62"+
+ "\12\6\1\0\15\6\1\0\5\6\1\0\1\6\1\0"+
+ "\2\6\1\0\2\6\1\0\154\6\41\0\153\6\22\0"+
+ "\100\6\2\0\66\6\50\0\14\6\4\0\20\62\20\0"+
+ "\20\62\3\0\2\62\30\0\3\62\40\0\5\6\1\0"+
+ "\207\6\23\0\12\62\7\0\32\6\4\0\1\62\1\0"+
+ "\32\6\13\0\131\6\3\0\6\6\2\0\6\6\2\0"+
+ "\6\6\2\0\3\6\43\0\14\6\1\0\32\6\1\0"+
+ "\23\6\1\0\2\6\1\0\17\6\2\0\16\6\42\0"+
+ "\173\6\105\0\65\6\210\0\1\62\202\0\35\6\3\0"+
+ "\61\6\17\0\1\62\37\0\40\6\15\0\36\6\5\0"+
+ "\46\6\5\62\5\0\36\6\2\0\44\6\4\0\10\6"+
+ "\1\0\5\6\52\0\236\6\2\0\12\62\6\0\44\6"+
+ "\4\0\44\6\4\0\50\6\10\0\64\6\234\0\67\6"+
+ "\11\0\26\6\12\0\10\6\230\0\6\6\2\0\1\6"+
+ "\1\0\54\6\1\0\2\6\3\0\1\6\2\0\27\6"+
+ "\12\0\27\6\11\0\37\6\101\0\23\6\1\0\2\6"+
+ "\12\0\26\6\12\0\32\6\106\0\70\6\6\0\2\6"+
+ "\100\0\1\6\3\62\1\0\2\62\5\0\4\62\4\6"+
+ "\1\0\3\6\1\0\35\6\2\0\3\62\4\0\1\62"+
+ "\40\0\35\6\3\0\35\6\43\0\10\6\1\0\34\6"+
+ "\2\62\31\0\66\6\12\0\26\6\12\0\23\6\15\0"+
+ "\22\6\156\0\111\6\67\0\63\6\15\0\63\6\15\0"+
+ "\44\6\4\62\10\0\12\62\306\0\35\6\12\0\1\6"+
+ "\10\0\26\6\13\62\217\0\27\6\11\0\3\62\65\6"+
+ "\17\62\37\0\12\62\17\0\4\62\55\6\13\62\25\0"+
+ "\31\6\7\0\12\62\6\0\3\62\44\6\16\62\1\0"+
+ "\12\62\4\0\1\6\2\62\11\0\43\6\1\62\2\0"+
+ "\1\6\11\0\3\62\60\6\16\62\4\6\4\0\4\62"+
+ "\3\0\12\62\1\6\1\0\1\6\43\0\22\6\1\0"+
+ "\31\6\14\62\6\0\1\62\101\0\7\6\1\0\1\6"+
+ "\1\0\4\6\1\0\17\6\1\0\12\6\7\0\57\6"+
+ "\14\62\5\0\12\62\6\0\4\62\1\0\10\6\2\0"+
+ "\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0"+
+ "\5\6\1\0\2\62\1\6\7\62\2\0\2\62\2\0"+
+ "\3\62\2\0\1\6\6\0\1\62\5\0\5\6\2\62"+
+ "\2\0\7\62\3\0\5\62\213\0\65\6\22\62\4\6"+
+ "\5\0\12\62\4\0\1\62\1\6\40\0\60\6\24\62"+
+ "\2\6\1\0\1\6\10\0\12\62\246\0\57\6\7\62"+
+ "\2\0\11\62\27\0\4\6\2\62\42\0\60\6\21\62"+
+ "\3\0\1\6\13\0\12\62\46\0\53\6\15\62\1\6"+
+ "\7\0\12\62\66\0\33\6\2\0\17\62\4\0\12\62"+
+ "\306\0\54\6\17\62\145\0\100\6\12\62\25\0\1\6"+
+ "\240\0\10\6\2\0\47\6\7\62\2\0\7\62\1\6"+
+ "\1\0\1\6\1\62\33\0\1\6\12\62\50\6\7\62"+
+ "\1\6\4\62\10\0\1\62\10\0\1\6\13\62\56\6"+
+ "\20\62\3\0\1\6\42\0\71\6\7\0\11\6\1\0"+
+ "\45\6\10\62\1\0\10\62\1\6\17\0\12\62\30\0"+
+ "\36\6\2\0\26\62\1\0\16\62\111\0\7\6\1\0"+
+ "\2\6\1\0\46\6\6\62\3\0\1\62\1\0\2\62"+
+ "\1\0\7\62\1\6\1\62\10\0\12\62\6\0\6\6"+
+ "\1\0\2\6\1\0\40\6\5\62\1\0\2\62\1\0"+
+ "\5\62\1\6\7\0\12\62\u0136\0\23\6\4\62\11\0"+
+ "\232\6\146\0\157\6\21\0\304\6\274\0\57\6\321\0"+
+ "\107\6\271\0\71\6\7\0\37\6\1\0\12\62\146\0"+
+ "\36\6\2\0\5\62\13\0\60\6\7\62\11\0\4\6"+
+ "\14\0\12\62\11\0\25\6\5\0\23\6\260\0\100\6"+
+ "\200\0\113\6\4\0\1\62\1\6\67\62\7\0\4\62"+
+ "\15\6\100\0\2\6\1\0\1\6\34\0\370\6\10\0"+
+ "\363\6\15\0\37\6\61\0\3\6\21\0\4\6\10\0"+
+ "\u018c\6\4\0\153\6\5\0\15\6\3\0\11\6\7\0"+
+ "\12\6\3\0\2\62\306\0\5\62\3\0\6\62\10\0"+
+ "\10\62\2\0\7\62\36\0\4\62\224\0\3\62\273\0"+
+ "\125\6\1\0\107\6\1\0\2\6\2\0\1\6\2\0"+
+ "\2\6\2\0\4\6\1\0\14\6\1\0\1\6\1\0"+
+ "\7\6\1\0\101\6\1\0\4\6\2\0\10\6\1\0"+
+ "\7\6\1\0\34\6\1\0\4\6\1\0\5\6\1\0"+
+ "\1\6\3\0\7\6\1\0\u0154\6\2\0\31\6\1\0"+
+ "\31\6\1\0\37\6\1\0\31\6\1\0\37\6\1\0"+
+ "\31\6\1\0\37\6\1\0\31\6\1\0\37\6\1\0"+
+ "\31\6\1\0\10\6\2\0\151\62\4\0\62\62\10\0"+
+ "\1\62\16\0\1\62\26\0\5\62\1\0\17\62\120\0"+
+ "\7\62\1\0\21\62\2\0\7\62\1\0\2\62\1\0"+
+ "\5\62\325\0\55\6\3\0\7\62\7\6\2\0\12\62"+
+ "\4\0\1\6\u0171\0\54\6\16\62\6\0\305\6\13\0"+
+ "\7\62\51\0\104\6\7\62\1\6\4\0\12\62\246\0"+
+ "\4\6\1\0\33\6\1\0\2\6\1\0\1\6\2\0"+
+ "\1\6\1\0\12\6\1\0\4\6\1\0\1\6\1\0"+
+ "\1\6\6\0\1\6\4\0\1\6\1\0\1\6\1\0"+
+ "\1\6\1\0\3\6\1\0\2\6\1\0\1\6\2\0"+
+ "\1\6\1\0\1\6\1\0\1\6\1\0\1\6\1\0"+
+ "\1\6\1\0\2\6\1\0\1\6\2\0\4\6\1\0"+
+ "\7\6\1\0\4\6\1\0\4\6\1\0\1\6\1\0"+
+ "\12\6\1\0\21\6\5\0\3\6\1\0\5\6\1\0"+
+ "\21\6\110\0\1\6\312\0\1\6\240\0\2\6\14\0"+
+ "\2\6\16\0\1\6\2\0\12\6\113\0\32\6\1\0"+
+ "\2\6\27\0\1\6\24\0\1\6\2\0\11\6\25\0"+
+ "\2\6\256\0\42\6\2\0\160\6\2\0\2\6\1\0"+
+ "\3\6\2\0\123\6\2\0\3\6\1\0\u0107\6\1\0"+
+ "\77\6\13\0\6\6\1\0\30\6\7\0\2\6\2\0"+
+ "\10\6\14\0\1\6\2\0\4\6\2\0\1\6\4\0"+
+ "\2\6\15\0\2\6\2\0\1\6\10\0\2\6\11\0"+
+ "\1\6\5\0\3\6\14\0\3\6\10\0\3\6\2\0"+
+ "\1\6\1\0\1\6\4\0\1\6\6\0\1\6\3\0"+
+ "\1\6\6\0\126\6\60\0\106\6\5\0\10\6\2\0"+
+ "\1\6\12\0\6\6\3\0\1\6\1\0\2\6\3\0"+
+ "\1\6\2\0\10\6\345\0\14\6\41\0\56\6\1\0"+
+ "\12\6\1\0\53\6\1\0\4\6\3\0\51\6\2\0"+
+ "\6\6\3\0\35\6\2\0\63\6\160\0\4\6\4\0"+
+ "\3\6\5\0\3\6\15\0\6\6\152\0\327\6\51\0"+
+ "\65\6\13\0\336\6\2\0\u0182\6\16\0\u0131\6\37\0"+
+ "\36\6\342\0\360\62\20\0";
private static int [] zzUnpackcmap_blocks() {
- int [] result = new int[1024];
+ int [] result = new int[33792];
int offset = 0;
offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result);
return result;
@@ -102,19 +367,20 @@ private static int zzUnpackcmap_blocks(String packed, int offset, int [] result)
private static final String ZZ_ACTION_PACKED_0 =
"\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7"+
- "\1\10\1\1\1\11\1\1\1\12\1\13\1\14\1\15"+
+ "\1\10\1\11\1\1\1\12\1\1\1\13\1\14\1\15"+
"\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\1"+
- "\14\22\1\25\1\26\1\27\1\3\1\0\1\30\1\31"+
- "\2\0\1\32\1\0\1\33\1\34\2\0\10\22\1\35"+
- "\3\22\1\36\7\22\1\37\2\0\1\12\3\22\1\40"+
- "\1\41\20\22\3\0\1\42\1\22\1\43\3\22\1\44"+
- "\5\22\1\45\4\22\1\46\1\42\1\0\1\47\1\50"+
- "\2\22\1\51\2\22\1\52\1\22\1\53\2\22\1\54"+
- "\1\55\1\22\1\47\1\22\1\56\1\57\2\22\1\60"+
- "\1\61\1\22\1\62\2\22\1\63\2\22\1\64\1\65";
+ "\14\5\1\25\1\26\1\27\1\3\1\0\1\30\1\31"+
+ "\1\13\2\0\1\32\1\0\1\33\1\34\2\0\10\5"+
+ "\1\35\3\5\1\36\7\5\1\37\2\0\1\13\3\5"+
+ "\1\40\1\41\20\5\3\0\1\42\1\5\1\43\3\5"+
+ "\1\44\5\5\1\45\4\5\1\46\1\42\1\0\1\47"+
+ "\1\50\2\5\1\51\2\5\1\52\1\5\1\53\2\5"+
+ "\1\54\1\55\1\5\1\47\1\5\1\56\1\57\2\5"+
+ "\1\60\1\61\1\5\1\62\2\5\1\63\2\5\1\64"+
+ "\1\65";
private static int [] zzUnpackAction() {
- int [] result = new int[151];
+ int [] result = new int[152];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -139,28 +405,28 @@ private static int zzUnpackAction(String packed, int offset, int [] result) {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
- "\0\0\0\63\0\146\0\231\0\314\0\63\0\63\0\63"+
- "\0\63\0\377\0\u0132\0\u0165\0\u0198\0\u01cb\0\63\0\63"+
- "\0\63\0\63\0\63\0\u01fe\0\u0231\0\63\0\63\0\u0264"+
+ "\0\0\0\63\0\146\0\231\0\314\0\377\0\63\0\63"+
+ "\0\63\0\63\0\u0132\0\u0165\0\u0198\0\u01cb\0\u01fe\0\63"+
+ "\0\63\0\63\0\63\0\63\0\u0231\0\63\0\63\0\u0264"+
"\0\u0297\0\u02ca\0\u02fd\0\u0330\0\u0363\0\u0396\0\u03c9\0\u03fc"+
"\0\u042f\0\u0462\0\u0495\0\u04c8\0\63\0\63\0\63\0\63"+
- "\0\u04fb\0\63\0\63\0\u052e\0\u0561\0\u0594\0\u05c7\0\63"+
- "\0\63\0\u05fa\0\u062d\0\u0660\0\u0693\0\u06c6\0\u06f9\0\u072c"+
- "\0\u075f\0\u0792\0\u07c5\0\u0231\0\u07f8\0\u082b\0\u085e\0\u0231"+
- "\0\u0891\0\u08c4\0\u08f7\0\u092a\0\u095d\0\u0990\0\u09c3\0\63"+
- "\0\u09f6\0\u0a29\0\u05c7\0\63\0\u05fa\0\u0a5c\0\u0231\0\u0231"+
- "\0\u0a8f\0\u0ac2\0\u0af5\0\u0b28\0\u0b5b\0\u0b8e\0\u0bc1\0\u0bf4"+
+ "\0\u04fb\0\63\0\63\0\u052e\0\u0561\0\u0594\0\u05c7\0\u05fa"+
+ "\0\63\0\63\0\u062d\0\u0660\0\u0693\0\u06c6\0\u06f9\0\u072c"+
+ "\0\u075f\0\u0792\0\u07c5\0\u07f8\0\377\0\u082b\0\u085e\0\u0891"+
+ "\0\377\0\u08c4\0\u08f7\0\u092a\0\u095d\0\u0990\0\u09c3\0\u09f6"+
+ "\0\63\0\u0a29\0\u0a5c\0\u05fa\0\63\0\u062d\0\u0a8f\0\377"+
+ "\0\377\0\u0ac2\0\u0af5\0\u0b28\0\u0b5b\0\u0b8e\0\u0bc1\0\u0bf4"+
"\0\u0c27\0\u0c5a\0\u0c8d\0\u0cc0\0\u0cf3\0\u0d26\0\u0d59\0\u0d8c"+
- "\0\u0dbf\0\u0df2\0\u0e25\0\u0df2\0\u0e58\0\u0231\0\u0e8b\0\u0ebe"+
- "\0\u0ef1\0\u0231\0\u0f24\0\u0f57\0\u0f8a\0\u0fbd\0\u0ff0\0\u0231"+
- "\0\u1023\0\u1056\0\u1089\0\u10bc\0\u0231\0\63\0\u10ef\0\u09f6"+
- "\0\u0231\0\u1122\0\u1155\0\u0231\0\u1188\0\u11bb\0\u0231\0\u11ee"+
- "\0\u0231\0\u1221\0\u1254\0\u0231\0\u0231\0\u1287\0\63\0\u12ba"+
- "\0\u0231\0\u0231\0\u12ed\0\u1320\0\u0231\0\u0231\0\u1353\0\u0231"+
- "\0\u1386\0\u13b9\0\u0231\0\u13ec\0\u141f\0\u0231\0\u0231";
+ "\0\u0dbf\0\u0df2\0\u0e25\0\u0e58\0\u0e25\0\u0e8b\0\377\0\u0ebe"+
+ "\0\u0ef1\0\u0f24\0\377\0\u0f57\0\u0f8a\0\u0fbd\0\u0ff0\0\u1023"+
+ "\0\377\0\u1056\0\u1089\0\u10bc\0\u10ef\0\377\0\63\0\u1122"+
+ "\0\u0a29\0\377\0\u1155\0\u1188\0\377\0\u11bb\0\u11ee\0\377"+
+ "\0\u1221\0\377\0\u1254\0\u1287\0\377\0\377\0\u12ba\0\63"+
+ "\0\u12ed\0\377\0\377\0\u1320\0\u1353\0\377\0\377\0\u1386"+
+ "\0\377\0\u13b9\0\u13ec\0\377\0\u141f\0\u1452\0\377\0\377";
private static int [] zzUnpackRowMap() {
- int [] result = new int[151];
+ int [] result = new int[152];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -183,142 +449,145 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) {
private static final int [] ZZ_TRANS = zzUnpacktrans();
private static final String ZZ_TRANS_PACKED_0 =
- "\1\2\3\3\1\4\1\5\1\6\1\7\1\10\1\2"+
- "\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20"+
+ "\1\2\3\3\1\4\1\5\1\6\1\7\1\10\1\11"+
+ "\1\6\1\12\1\13\1\14\1\15\1\16\1\17\1\20"+
"\1\21\1\22\1\23\1\24\1\25\1\26\1\2\1\27"+
- "\1\2\1\30\1\31\1\25\1\32\1\33\1\34\1\25"+
- "\1\35\1\25\1\36\1\37\1\40\2\25\1\41\1\42"+
- "\1\43\1\44\2\25\1\45\1\46\1\47\1\2\64\0"+
- "\3\3\57\0\2\4\1\0\1\4\1\50\23\4\1\51"+
- "\32\4\27\0\1\52\27\0\1\53\21\0\1\15\60\0"+
- "\1\54\57\0\1\55\3\0\1\56\61\0\1\57\1\0"+
- "\1\15\63\0\1\60\70\0\1\61\50\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\23\25\4\0"+
- "\30\62\1\63\2\62\1\0\27\62\13\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\7\25\1\64"+
- "\1\25\1\65\11\25\17\0\1\25\2\0\1\25\7\0"+
- "\1\25\3\0\1\25\1\0\3\25\1\66\17\25\17\0"+
- "\1\25\2\0\1\25\7\0\1\25\3\0\1\25\1\0"+
- "\11\25\1\67\7\25\1\70\1\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\1\71\22\25"+
- "\17\0\1\25\2\0\1\25\7\0\1\25\3\0\1\25"+
- "\1\0\10\25\1\72\1\73\3\25\1\74\5\25\17\0"+
- "\1\25\2\0\1\25\7\0\1\25\3\0\1\25\1\0"+
- "\12\25\1\75\10\25\17\0\1\25\2\0\1\25\7\0"+
- "\1\25\3\0\1\25\1\0\1\76\2\25\1\77\17\25"+
- "\17\0\1\25\2\0\1\25\7\0\1\25\3\0\1\25"+
- "\1\0\13\25\1\100\7\25\17\0\1\25\2\0\1\25"+
- "\7\0\1\25\3\0\1\25\1\0\1\25\1\101\21\25"+
- "\17\0\1\25\2\0\1\25\7\0\1\25\3\0\1\25"+
- "\1\0\14\25\1\102\5\25\1\103\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\11\25\1\104"+
- "\3\25\1\105\5\25\17\0\1\25\2\0\1\25\7\0"+
- "\1\25\3\0\1\25\1\0\1\106\11\25\1\107\10\25"+
- "\4\0\2\4\1\0\60\4\14\0\1\110\46\0\11\111"+
- "\1\112\51\111\2\56\2\0\56\56\17\0\1\113\44\0"+
- "\30\62\1\63\2\62\1\114\57\62\1\63\2\62\1\115"+
- "\27\62\13\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\6\25\1\116\14\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\22\25\1\117"+
- "\17\0\1\25\2\0\1\25\7\0\1\25\3\0\1\25"+
- "\1\0\1\25\1\120\21\25\17\0\1\25\2\0\1\25"+
- "\7\0\1\25\3\0\1\25\1\0\17\25\1\121\3\25"+
- "\17\0\1\25\2\0\1\25\7\0\1\25\3\0\1\25"+
- "\1\0\16\25\1\122\4\25\17\0\1\25\2\0\1\25"+
- "\7\0\1\25\3\0\1\25\1\0\7\25\1\123\13\25"+
- "\17\0\1\25\2\0\1\25\7\0\1\25\3\0\1\25"+
- "\1\0\13\25\1\124\7\25\17\0\1\25\2\0\1\25"+
- "\7\0\1\25\3\0\1\25\1\0\6\25\1\125\7\25"+
- "\1\126\4\25\17\0\1\25\2\0\1\25\7\0\1\25"+
- "\3\0\1\25\1\0\2\25\1\127\20\25\17\0\1\25"+
- "\2\0\1\25\7\0\1\25\3\0\1\25\1\0\10\25"+
- "\1\130\12\25\17\0\1\25\2\0\1\25\7\0\1\25"+
- "\3\0\1\25\1\0\20\25\1\131\2\25\17\0\1\25"+
- "\2\0\1\25\7\0\1\25\3\0\1\25\1\0\1\132"+
- "\22\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\17\25\1\133\3\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\13\25\1\134"+
- "\7\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\6\25\1\135\14\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\6\25\1\136"+
- "\14\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\7\25\1\137\13\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\6\25\1\140"+
- "\14\25\4\0\11\111\1\141\51\111\11\142\1\143\3\142"+
- "\1\144\45\142\13\0\1\25\2\0\1\25\7\0\1\25"+
- "\3\0\1\25\1\0\1\145\22\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\10\25\1\146"+
- "\12\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\3\25\1\147\17\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\15\25\1\150"+
- "\5\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\12\25\1\151\10\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\16\25\1\152"+
- "\4\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\3\25\1\153\17\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\3\25\1\154"+
- "\17\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\3\25\1\155\17\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\3\25\1\156"+
- "\17\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\7\25\1\157\13\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\3\25\1\160"+
- "\17\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\3\25\1\161\17\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\12\25\1\162"+
- "\10\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\11\25\1\163\11\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\17\25\1\164"+
- "\3\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\2\25\1\165\20\25\4\0\15\111\1\166"+
- "\45\111\11\142\1\167\62\142\1\112\3\142\1\170\45\142"+
- "\13\0\1\25\2\0\1\25\7\0\1\25\3\0\1\25"+
- "\1\0\15\25\1\171\5\25\17\0\1\25\2\0\1\25"+
- "\7\0\1\25\3\0\1\25\1\0\11\25\1\172\2\25"+
- "\1\173\6\25\17\0\1\25\2\0\1\25\7\0\1\25"+
- "\3\0\1\25\1\0\3\25\1\174\17\25\17\0\1\25"+
- "\2\0\1\25\7\0\1\25\3\0\1\25\1\0\14\25"+
- "\1\175\6\25\17\0\1\25\2\0\1\25\7\0\1\25"+
- "\3\0\1\25\1\0\14\25\1\176\6\25\17\0\1\25"+
- "\2\0\1\25\7\0\1\25\3\0\1\25\1\0\7\25"+
- "\1\177\13\25\17\0\1\25\2\0\1\25\7\0\1\25"+
- "\3\0\1\25\1\0\15\25\1\200\5\25\17\0\1\25"+
- "\2\0\1\25\7\0\1\25\3\0\1\25\1\0\14\25"+
- "\1\201\6\25\17\0\1\25\2\0\1\25\7\0\1\25"+
- "\3\0\1\25\1\0\1\202\22\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\12\25\1\203"+
- "\10\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\11\25\1\204\11\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\5\25\1\205"+
- "\15\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\3\25\1\206\17\25\4\0\15\142\1\207"+
- "\45\142\13\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\2\25\1\210\20\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\11\25\1\211"+
- "\11\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\16\25\1\212\4\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\4\25\1\213"+
- "\16\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\13\25\1\214\7\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\14\25\1\215"+
- "\6\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\4\25\1\216\16\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\12\25\1\217"+
- "\10\25\17\0\1\25\2\0\1\25\7\0\1\25\3\0"+
- "\1\25\1\0\15\25\1\220\5\25\17\0\1\25\2\0"+
- "\1\25\7\0\1\25\3\0\1\25\1\0\1\221\22\25"+
- "\17\0\1\25\2\0\1\25\7\0\1\25\3\0\1\25"+
- "\1\0\1\222\22\25\17\0\1\25\2\0\1\25\7\0"+
- "\1\25\3\0\1\25\1\0\4\25\1\223\16\25\17\0"+
- "\1\25\2\0\1\25\7\0\1\25\3\0\1\25\1\0"+
- "\1\25\1\224\21\25\17\0\1\25\2\0\1\25\7\0"+
- "\1\25\3\0\1\25\1\0\1\25\1\225\21\25\17\0"+
- "\1\25\2\0\1\25\7\0\1\25\3\0\1\25\1\0"+
- "\3\25\1\226\17\25\17\0\1\25\2\0\1\25\7\0"+
- "\1\25\3\0\1\25\1\0\3\25\1\227\17\25\4\0";
+ "\1\30\1\31\1\6\1\32\1\33\1\34\1\6\1\35"+
+ "\1\6\1\36\1\37\1\40\2\6\1\41\1\42\1\43"+
+ "\1\44\2\6\1\45\1\46\1\47\2\2\64\0\3\3"+
+ "\57\0\2\4\1\0\1\4\1\50\23\4\1\51\32\4"+
+ "\5\0\2\6\3\0\1\6\4\0\1\6\7\0\1\52"+
+ "\3\0\23\6\1\53\3\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\23\6\4\0\1\6\17\0"+
+ "\1\54\60\0\1\55\57\0\1\56\3\0\1\57\51\0"+
+ "\2\6\3\0\1\6\2\0\1\60\1\0\1\16\13\0"+
+ "\23\6\4\0\1\6\20\0\1\61\70\0\1\62\34\0"+
+ "\30\63\1\64\1\63\1\0\30\63\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\7\6\1\65\1\6\1\66"+
+ "\11\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\3\6\1\67\17\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\11\6\1\70"+
+ "\7\6\1\71\1\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\1\72\22\6\4\0\1\6"+
+ "\5\0\2\6\3\0\1\6\4\0\1\6\13\0\10\6"+
+ "\1\73\1\74\3\6\1\75\5\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\12\6\1\76"+
+ "\10\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\1\77\2\6\1\100\17\6\4\0\1\6"+
+ "\5\0\2\6\3\0\1\6\4\0\1\6\13\0\13\6"+
+ "\1\101\7\6\4\0\1\6\5\0\2\6\3\0\1\6"+
+ "\4\0\1\6\13\0\1\6\1\102\21\6\4\0\1\6"+
+ "\5\0\2\6\3\0\1\6\4\0\1\6\13\0\14\6"+
+ "\1\103\5\6\1\104\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\11\6\1\105\3\6\1\106"+
+ "\5\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\1\107\11\6\1\110\10\6\4\0\1\6"+
+ "\2\4\1\0\60\4\15\0\1\60\1\0\1\54\60\0"+
+ "\1\111\45\0\12\112\1\113\50\112\2\57\2\0\55\57"+
+ "\1\0\1\57\17\0\1\114\43\0\30\63\1\64\1\63"+
+ "\1\115\60\63\1\64\1\63\1\116\30\63\5\0\2\6"+
+ "\3\0\1\6\4\0\1\6\13\0\6\6\1\117\14\6"+
+ "\4\0\1\6\5\0\2\6\3\0\1\6\4\0\1\6"+
+ "\13\0\22\6\1\120\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\1\6\1\121\21\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\17\6\1\122\3\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\16\6\1\123\4\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\7\6\1\124\13\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\13\6\1\125\7\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\6\6\1\126\7\6\1\127\4\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\2\6\1\130"+
+ "\20\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\10\6\1\131\12\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\20\6\1\132"+
+ "\2\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\1\133\22\6\4\0\1\6\5\0\2\6"+
+ "\3\0\1\6\4\0\1\6\13\0\17\6\1\134\3\6"+
+ "\4\0\1\6\5\0\2\6\3\0\1\6\4\0\1\6"+
+ "\13\0\13\6\1\135\7\6\4\0\1\6\5\0\2\6"+
+ "\3\0\1\6\4\0\1\6\13\0\6\6\1\136\14\6"+
+ "\4\0\1\6\5\0\2\6\3\0\1\6\4\0\1\6"+
+ "\13\0\6\6\1\137\14\6\4\0\1\6\5\0\2\6"+
+ "\3\0\1\6\4\0\1\6\13\0\7\6\1\140\13\6"+
+ "\4\0\1\6\5\0\2\6\3\0\1\6\4\0\1\6"+
+ "\13\0\6\6\1\141\14\6\4\0\1\6\12\112\1\142"+
+ "\50\112\12\143\1\144\3\143\1\145\44\143\5\0\2\6"+
+ "\3\0\1\6\4\0\1\6\13\0\1\146\22\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\10\6\1\147\12\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\3\6\1\150\17\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\15\6\1\151\5\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\12\6\1\152\10\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\16\6\1\153\4\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\3\6\1\154\17\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\3\6\1\155\17\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\3\6\1\156\17\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\3\6\1\157\17\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\7\6\1\160\13\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\3\6\1\161\17\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\3\6\1\162\17\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\12\6\1\163\10\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\11\6\1\164\11\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\17\6\1\165\3\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\2\6\1\166\20\6\4\0"+
+ "\1\6\16\112\1\167\44\112\12\143\1\170\62\143\1\113"+
+ "\3\143\1\171\44\143\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\15\6\1\172\5\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\11\6\1\173"+
+ "\2\6\1\174\6\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\3\6\1\175\17\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\14\6\1\176\6\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\14\6\1\177\6\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\7\6\1\200\13\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\15\6\1\201\5\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\14\6\1\202\6\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\1\203\22\6\4\0\1\6"+
+ "\5\0\2\6\3\0\1\6\4\0\1\6\13\0\12\6"+
+ "\1\204\10\6\4\0\1\6\5\0\2\6\3\0\1\6"+
+ "\4\0\1\6\13\0\11\6\1\205\11\6\4\0\1\6"+
+ "\5\0\2\6\3\0\1\6\4\0\1\6\13\0\5\6"+
+ "\1\206\15\6\4\0\1\6\5\0\2\6\3\0\1\6"+
+ "\4\0\1\6\13\0\3\6\1\207\17\6\4\0\1\6"+
+ "\16\143\1\210\44\143\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\2\6\1\211\20\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\11\6\1\212"+
+ "\11\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\16\6\1\213\4\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\4\6\1\214"+
+ "\16\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\13\6\1\215\7\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\14\6\1\216"+
+ "\6\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\4\6\1\217\16\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\12\6\1\220"+
+ "\10\6\4\0\1\6\5\0\2\6\3\0\1\6\4\0"+
+ "\1\6\13\0\15\6\1\221\5\6\4\0\1\6\5\0"+
+ "\2\6\3\0\1\6\4\0\1\6\13\0\1\222\22\6"+
+ "\4\0\1\6\5\0\2\6\3\0\1\6\4\0\1\6"+
+ "\13\0\1\223\22\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\4\6\1\224\16\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\1\6\1\225\21\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\1\6\1\226\21\6\4\0"+
+ "\1\6\5\0\2\6\3\0\1\6\4\0\1\6\13\0"+
+ "\3\6\1\227\17\6\4\0\1\6\5\0\2\6\3\0"+
+ "\1\6\4\0\1\6\13\0\3\6\1\230\17\6\4\0"+
+ "\1\6";
private static int [] zzUnpacktrans() {
- int [] result = new int[5202];
+ int [] result = new int[5253];
int offset = 0;
offset = zzUnpacktrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -356,13 +625,13 @@ private static int zzUnpacktrans(String packed, int offset, int [] result) {
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
- "\1\0\1\11\3\1\4\11\5\1\5\11\2\1\2\11"+
- "\15\1\4\11\1\0\2\11\2\0\1\1\1\0\2\11"+
- "\2\0\24\1\1\11\2\0\1\1\1\11\24\1\3\0"+
- "\22\1\1\11\1\0\17\1\1\11\20\1";
+ "\1\0\1\11\4\1\4\11\5\1\5\11\1\1\2\11"+
+ "\15\1\4\11\1\0\2\11\1\1\2\0\1\1\1\0"+
+ "\2\11\2\0\24\1\1\11\2\0\1\1\1\11\24\1"+
+ "\3\0\22\1\1\11\1\0\17\1\1\11\20\1";
private static int [] zzUnpackAttribute() {
- int [] result = new int[151];
+ int [] result = new int[152];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -697,72 +966,72 @@ else if (zzAtEOF) {
// fall through
case 57: break;
case 5:
- { return AMP;
+ { return IDENT;
}
// fall through
case 58: break;
case 6:
- { return LPAREN;
+ { return AMP;
}
// fall through
case 59: break;
case 7:
- { return RPAREN;
+ { return LPAREN;
}
// fall through
case 60: break;
case 8:
- { return COMMA;
+ { return RPAREN;
}
// fall through
case 61: break;
case 9:
- { return DOT;
+ { return COMMA;
}
// fall through
case 62: break;
case 10:
- { return NUMERIC_LITERAL;
+ { return DOT;
}
// fall through
case 63: break;
case 11:
- { return COLON;
+ { return NUMERIC_LITERAL;
}
// fall through
case 64: break;
case 12:
- { return SEMICOLON;
+ { return COLON;
}
// fall through
case 65: break;
case 13:
- { return LT;
+ { return SEMICOLON;
}
// fall through
case 66: break;
case 14:
- { return EQ;
+ { return LT;
}
// fall through
case 67: break;
case 15:
- { return GT;
+ { return EQ;
}
// fall through
case 68: break;
case 16:
- { return QUEST;
+ { return GT;
}
// fall through
case 69: break;
case 17:
- { return AT;
+ { return QUEST;
}
// fall through
case 70: break;
case 18:
- { return IDENT;
+ { return AT;
}
// fall through
case 71: break;
diff --git a/grammars/TypeSpec.bnf b/grammars/TypeSpec.bnf
index f8309a3..5a6ef26 100644
--- a/grammars/TypeSpec.bnf
+++ b/grammars/TypeSpec.bnf
@@ -65,7 +65,7 @@
STRING_LITERAL = 'regexp:"([^\\"\r\n]|\\[^\r\n])*"?'
NUMERIC_LITERAL = 'regexp:-?\d+(\.\d+)?'
- IDENT = 'regexp:[a-zA-Z][a-zA-Z0-9\-_]*|`(\\`|[^`])+`'
+ IDENT = 'regexp:[$_\p{ID_Start}\p{Emoji}][$\p{ID_Continue}\p{Emoji}]*|`(\\`|[^`])+`'
WHITE_SPACE = 'regexp:\s+'
DOC_COMMENT = 'regexp:/\*\*([^*]|\*[^/])*\*/'
diff --git a/grammars/_TypeSpecLexer.flex b/grammars/_TypeSpecLexer.flex
index afd6249..dfed09c 100644
--- a/grammars/_TypeSpecLexer.flex
+++ b/grammars/_TypeSpecLexer.flex
@@ -27,7 +27,7 @@ WHITE_SPACE=\s+
STRING_LITERAL=\"([^\\\"\r\n]|\\[^\r\n])*\"?
NUMERIC_LITERAL=-?[0-9]+(\.[0-9]+)?
-IDENT=[a-zA-Z][a-zA-Z0-9\-_]*|`(\\`|[^`])+`
+IDENT=[$_\p{ID_Start}\p{Emoji}][$\p{ID_Continue}\p{Emoji}]*|`(\\`|[^`])+`
WHITE_SPACE=[ \t\n\x0B\f\r]+
DOC_COMMENT="/"\*\*([^*]|\*[^/])*\*"/"
BLOCK_COMMENT="/"\*([^*]|\*[^/])*\*"/"