diff --git a/CHANGELOG.md b/CHANGELOG.md index 50ac7a8..4cdbc73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Removed ### Fixed +- Fixed issue with parsing of float arguments in lookups (#21) ## [1.0.1] ### Changed diff --git a/src/main/gen/com/kinglozzer/silverstripe/parser/_SilverstripeLexer.java b/src/main/gen/com/kinglozzer/silverstripe/parser/_SilverstripeLexer.java index 4e84cdc..8d4b8c7 100644 --- a/src/main/gen/com/kinglozzer/silverstripe/parser/_SilverstripeLexer.java +++ b/src/main/gen/com/kinglozzer/silverstripe/parser/_SilverstripeLexer.java @@ -71,11 +71,12 @@ public static int ZZ_CMAP(int ch) { /* The ZZ_CMAP_A table has 320 entries */ static final char ZZ_CMAP_A[] = zzUnpackCMap( - "\11\0\1\2\1\1\2\51\1\1\22\0\1\2\1\25\1\31\1\0\1\4\1\7\1\27\1\32\1\61\1\45"+ - "\2\0\1\52\1\44\1\47\1\42\12\3\2\0\1\6\1\24\1\10\2\0\2\5\1\56\6\5\1\60\10\5"+ - "\1\57\7\5\1\0\1\46\2\0\1\23\1\0\1\35\1\36\1\40\1\41\1\21\1\20\1\37\1\17\1"+ - "\15\1\53\1\5\1\11\1\55\1\26\1\12\1\13\1\43\1\33\1\22\1\16\1\34\1\54\1\14\3"+ - "\5\1\50\1\30\1\62\7\0\1\51\242\0\2\51\26\0"); + "\11\0\1\2\1\1\2\60\1\1\22\0\1\2\1\35\1\41\1\0\1\14\1\17\1\37\1\42\1\70\1\55"+ + "\1\0\1\3\1\61\1\54\1\5\1\52\1\7\1\13\10\4\2\0\1\16\1\34\1\20\2\0\1\11\1\12"+ + "\1\65\1\11\1\6\1\11\3\15\1\67\10\15\1\66\4\15\1\10\2\15\1\0\1\56\2\0\1\33"+ + "\1\0\1\45\1\46\1\50\1\51\1\31\1\30\1\47\1\27\1\25\1\62\1\15\1\21\1\64\1\36"+ + "\1\22\1\23\1\53\1\43\1\32\1\26\1\44\1\63\1\24\1\10\2\15\1\57\1\40\1\71\7\0"+ + "\1\60\242\0\2\60\26\0"); /** * Translates DFA states to action switch labels. @@ -84,23 +85,24 @@ public static int ZZ_CMAP(int ch) { private static final String ZZ_ACTION_PACKED_0 = "\20\0\1\1\1\2\3\3\1\4\1\5\1\4\1\6"+ - "\1\7\1\10\5\11\1\12\1\13\1\14\1\5\1\15"+ - "\1\11\4\16\2\11\1\17\1\20\1\21\2\22\1\23"+ - "\2\22\7\23\1\22\1\24\1\5\2\24\1\0\1\25"+ - "\1\11\1\16\2\11\1\26\2\11\1\27\4\11\1\30"+ - "\1\31\3\11\1\32\1\11\4\33\3\0\1\34\1\35"+ - "\1\36\3\16\1\0\1\31\1\0\1\37\1\40\2\23"+ - "\1\41\6\23\4\0\1\42\1\43\2\0\1\25\1\16"+ - "\1\44\2\0\1\45\2\0\1\46\10\0\3\16\1\47"+ - "\1\0\10\23\2\0\1\43\3\24\1\0\1\24\1\42"+ - "\1\25\1\50\1\0\1\51\5\0\1\52\1\53\1\54"+ - "\1\23\1\55\4\23\1\56\1\42\4\0\1\52\1\57"+ - "\2\23\1\60\3\23\1\42\2\0\4\23\1\61\2\0"+ - "\1\62\1\63\1\64\1\23\3\0\1\65\3\0\1\66"+ - "\3\0\1\67\5\0\1\70"; + "\1\7\1\10\3\11\1\12\2\11\1\13\1\14\1\5"+ + "\1\11\1\15\1\16\1\17\1\15\1\11\3\17\2\11"+ + "\1\20\1\21\2\22\1\23\2\22\7\23\1\22\1\24"+ + "\1\5\2\24\1\0\1\11\1\25\1\11\1\17\2\11"+ + "\1\26\2\11\1\27\4\11\1\30\1\31\3\11\1\32"+ + "\1\11\4\33\3\0\1\34\1\35\1\36\2\0\1\15"+ + "\2\0\3\17\1\0\1\31\1\0\1\37\1\40\2\23"+ + "\1\41\6\23\4\0\1\42\1\43\2\0\1\25\1\17"+ + "\1\44\3\0\1\45\1\0\1\46\11\0\3\15\3\17"+ + "\1\47\1\0\10\23\2\0\1\43\3\24\1\0\1\24"+ + "\1\42\1\25\1\50\1\0\1\51\5\0\1\52\1\53"+ + "\1\54\1\23\1\55\4\23\1\56\1\42\4\0\1\52"+ + "\1\57\2\23\1\60\3\23\1\42\2\0\4\23\1\61"+ + "\2\0\1\62\1\63\1\64\1\23\3\0\1\65\3\0"+ + "\1\66\3\0\1\67\5\0\1\70"; private static int [] zzUnpackAction() { - int [] result = new int[223]; + int [] result = new int[235]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -125,37 +127,39 @@ 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\377\0\u0132\0\u0165"+ - "\0\u0198\0\u01cb\0\u01fe\0\u0231\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\u042f\0\u042f\0\u042f\0\u04fb\0\u0495\0\u052e\0\u0561"+ - "\0\u042f\0\u042f\0\u0594\0\u0495\0\u05c7\0\u04c8\0\u05fa\0\u062d"+ - "\0\u0660\0\u0693\0\u06c6\0\u06f9\0\u042f\0\u042f\0\u042f\0\u042f"+ - "\0\u072c\0\u075f\0\u0792\0\u07c5\0\u07f8\0\u082b\0\u085e\0\u0891"+ - "\0\u08c4\0\u08f7\0\u092a\0\u095d\0\u0990\0\u09c3\0\u09f6\0\u0a29"+ - "\0\u0a5c\0\u0a8f\0\u0a8f\0\u0ac2\0\u0af5\0\u0b28\0\u0b5b\0\u0b8e"+ - "\0\u0bc1\0\u0b8e\0\u0bf4\0\u0c27\0\u0c5a\0\u0c8d\0\u042f\0\u0cc0"+ - "\0\u0cf3\0\u0d26\0\u0d59\0\u042f\0\u0d8c\0\u042f\0\u0462\0\u0495"+ - "\0\u0dbf\0\u0396\0\u03c9\0\u03fc\0\u042f\0\u0df2\0\u042f\0\u0e25"+ - "\0\u0e58\0\u0e8b\0\u06c6\0\u042f\0\u06f9\0\u0ebe\0\u042f\0\u0ef1"+ - "\0\u0f24\0\u075f\0\u0f57\0\u0f8a\0\u0fbd\0\u0ff0\0\u1023\0\u1056"+ - "\0\u1089\0\u10bc\0\u10ef\0\u1122\0\u1155\0\u1188\0\u11bb\0\u11ee"+ - "\0\u042f\0\u1221\0\u042f\0\u1254\0\u0b8e\0\u1287\0\u0bf4\0\u12ba"+ - "\0\u0b8e\0\u12ed\0\u1320\0\u1353\0\u0cf3\0\u1386\0\u13b9\0\u13ec"+ - "\0\u141f\0\u1452\0\u1485\0\u14b8\0\u042f\0\u14eb\0\u151e\0\u1551"+ - "\0\u1584\0\u15b7\0\u15ea\0\u161d\0\u1650\0\u1683\0\u16b6\0\u16e9"+ - "\0\u042f\0\u171c\0\u174f\0\u1782\0\u17b5\0\u1188\0\u17e8\0\u05fa"+ - "\0\u181b\0\u184e\0\u042f\0\u1881\0\u18b4\0\u18e7\0\u191a\0\u194d"+ - "\0\u05fa\0\u042f\0\u075f\0\u1980\0\u19b3\0\u19e6\0\u1a19\0\u1a4c"+ - "\0\u1a7f\0\u042f\0\u1782\0\u1ab2\0\u1ae5\0\u1b18\0\u1b4b\0\u042f"+ - "\0\u042f\0\u1b7e\0\u1bb1\0\u1be4\0\u1c17\0\u1c4a\0\u1c7d\0\u1ae5"+ - "\0\u1cb0\0\u1ce3\0\u1d16\0\u1d49\0\u1d7c\0\u1daf\0\u075f\0\u1de2"+ - "\0\u1e15\0\u075f\0\u075f\0\u075f\0\u1e48\0\u1e7b\0\u1eae\0\u1ee1"+ - "\0\u075f\0\u1f14\0\u1f47\0\u1f7a\0\u042f\0\u1fad\0\u1fe0\0\u2013"+ - "\0\u042f\0\u2046\0\u2079\0\u20ac\0\u20df\0\u2112\0\u042f"; + "\0\0\0\72\0\164\0\256\0\350\0\u0122\0\u015c\0\u0196"+ + "\0\u01d0\0\u020a\0\u0244\0\u027e\0\u02b8\0\u02f2\0\u032c\0\u0366"+ + "\0\u03a0\0\u03da\0\u0414\0\u044e\0\u0488\0\u04c2\0\u04fc\0\u0536"+ + "\0\u0570\0\u04c2\0\u04c2\0\u04c2\0\u05aa\0\u0536\0\u04c2\0\u05e4"+ + "\0\u061e\0\u04c2\0\u0658\0\u0536\0\u0692\0\u06cc\0\u0706\0\u0740"+ + "\0\u077a\0\u0570\0\u07b4\0\u07ee\0\u0828\0\u0862\0\u089c\0\u04c2"+ + "\0\u04c2\0\u04c2\0\u08d6\0\u0910\0\u094a\0\u0984\0\u09be\0\u09f8"+ + "\0\u0a32\0\u0a6c\0\u0aa6\0\u0ae0\0\u0b1a\0\u0b54\0\u0b8e\0\u0bc8"+ + "\0\u0c02\0\u0c3c\0\u0c76\0\u0706\0\u0cb0\0\u0cb0\0\u0cea\0\u0d24"+ + "\0\u0d5e\0\u0d98\0\u0dd2\0\u0e0c\0\u0dd2\0\u0e46\0\u0e80\0\u0eba"+ + "\0\u0ef4\0\u04c2\0\u0f2e\0\u0f68\0\u0fa2\0\u0fdc\0\u04c2\0\u1016"+ + "\0\u04c2\0\u04fc\0\u0536\0\u1050\0\u0414\0\u044e\0\u0488\0\u04c2"+ + "\0\u108a\0\u04c2\0\u0706\0\u10c4\0\u10fe\0\u1138\0\u1172\0\u11ac"+ + "\0\u11e6\0\u1220\0\u0862\0\u04c2\0\u089c\0\u125a\0\u04c2\0\u1294"+ + "\0\u12ce\0\u0910\0\u1308\0\u1342\0\u137c\0\u13b6\0\u13f0\0\u142a"+ + "\0\u1464\0\u149e\0\u14d8\0\u1512\0\u154c\0\u1586\0\u15c0\0\u15fa"+ + "\0\u04c2\0\u1634\0\u04c2\0\u166e\0\u0dd2\0\u16a8\0\u16e2\0\u0e46"+ + "\0\u0dd2\0\u171c\0\u1756\0\u1790\0\u0f68\0\u17ca\0\u1804\0\u183e"+ + "\0\u1878\0\u18b2\0\u18b2\0\u1138\0\u1172\0\u18ec\0\u1926\0\u1960"+ + "\0\u04c2\0\u199a\0\u19d4\0\u1a0e\0\u1a48\0\u1a82\0\u1abc\0\u1af6"+ + "\0\u1b30\0\u1b6a\0\u1ba4\0\u1bde\0\u04c2\0\u1c18\0\u1c52\0\u1c8c"+ + "\0\u1cc6\0\u1586\0\u1d00\0\u0740\0\u1d3a\0\u1d74\0\u04c2\0\u1dae"+ + "\0\u1de8\0\u1e22\0\u1e5c\0\u1e96\0\u0740\0\u04c2\0\u0910\0\u1ed0"+ + "\0\u1f0a\0\u1f44\0\u1f7e\0\u1fb8\0\u1ff2\0\u04c2\0\u1c8c\0\u202c"+ + "\0\u2066\0\u20a0\0\u20da\0\u04c2\0\u04c2\0\u2114\0\u214e\0\u2188"+ + "\0\u21c2\0\u21fc\0\u2236\0\u2066\0\u2270\0\u22aa\0\u22e4\0\u231e"+ + "\0\u2358\0\u2392\0\u0910\0\u23cc\0\u2406\0\u0910\0\u0910\0\u0910"+ + "\0\u2440\0\u247a\0\u24b4\0\u24ee\0\u0910\0\u2528\0\u2562\0\u259c"+ + "\0\u04c2\0\u25d6\0\u2610\0\u264a\0\u04c2\0\u2684\0\u26be\0\u26f8"+ + "\0\u2732\0\u276c\0\u04c2"; private static int [] zzUnpackRowMap() { - int [] result = new int[223]; + int [] result = new int[235]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -178,204 +182,236 @@ 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 = - "\4\21\1\22\1\21\1\23\37\21\1\24\1\21\1\25"+ - "\12\21\1\26\1\27\1\30\1\26\1\31\43\26\1\32"+ - "\1\0\10\26\1\33\1\34\1\35\1\36\1\34\1\37"+ - "\2\34\1\40\37\34\1\41\1\34\1\0\7\34\1\42"+ - "\2\34\1\27\1\36\2\34\1\43\3\34\13\43\2\34"+ - "\1\43\4\34\7\43\1\34\1\43\5\34\1\0\1\34"+ - "\6\43\3\34\1\35\1\44\1\45\1\46\1\47\3\34"+ - "\5\47\1\50\1\47\1\51\3\47\2\34\1\52\2\34"+ - "\1\53\1\54\7\47\1\34\1\47\1\34\1\55\1\34"+ - "\1\56\1\34\1\0\1\57\6\47\2\34\1\60\1\61"+ - "\1\44\2\60\1\62\1\63\1\64\1\60\1\65\2\62"+ - "\1\66\1\67\3\62\1\70\2\62\2\60\1\62\4\60"+ - "\1\71\2\62\1\72\1\62\1\73\1\62\1\60\1\62"+ - "\1\74\4\60\1\0\1\60\6\62\2\60\1\34\1\35"+ - "\1\44\1\34\1\46\1\47\1\34\1\40\1\34\13\47"+ - "\2\34\1\47\2\34\1\53\1\54\7\47\1\34\1\47"+ - "\5\34\1\0\1\57\6\47\2\34\1\75\1\76\4\75"+ - "\1\77\1\100\41\75\1\101\11\75\1\34\1\35\1\44"+ - "\1\45\1\46\1\47\1\102\1\40\1\102\13\47\1\102"+ - "\1\103\1\104\1\105\1\106\1\53\1\54\7\47\1\34"+ - "\1\47\5\34\1\0\1\34\6\47\3\34\1\35\1\44"+ - "\2\34\1\107\1\34\1\40\1\34\13\107\2\34\1\107"+ - "\4\34\11\107\2\34\1\107\2\34\1\0\1\34\6\107"+ - "\3\34\1\35\1\44\2\34\1\110\1\34\1\40\1\34"+ - "\4\110\1\111\1\112\5\110\2\34\1\110\2\34\1\53"+ - "\1\54\7\110\1\34\1\110\2\34\1\113\2\34\1\0"+ - "\1\34\6\110\3\34\1\35\1\44\13\34\1\114\21\34"+ - "\1\115\10\34\1\0\1\34\1\116\5\34\1\117\1\34"+ - "\31\120\1\53\1\54\12\120\1\55\15\120\1\34\1\35"+ - "\1\44\2\34\1\121\3\34\13\121\2\34\1\121\4\34"+ - "\7\121\1\34\1\121\5\34\1\0\1\57\6\121\3\34"+ - "\1\35\1\36\1\45\1\46\11\34\1\122\1\34\1\123"+ - "\3\34\1\124\1\34\1\125\2\34\1\53\1\54\16\34"+ - "\1\0\11\34\1\126\1\127\1\130\41\126\1\131\16\126"+ - "\4\21\1\22\1\21\1\132\37\21\1\133\1\21\1\134"+ - "\17\21\1\0\3\21\13\0\2\21\1\0\4\21\7\0"+ - "\1\21\1\0\7\21\6\0\11\21\1\135\54\21\1\0"+ - "\47\21\1\0\15\21\1\22\56\21\64\0\1\27\63\0"+ - "\1\44\65\0\1\47\3\0\13\47\2\0\1\47\4\0"+ - "\7\47\1\0\1\47\7\0\6\47\3\0\1\35\66\0"+ - "\1\136\3\0\13\136\2\0\1\136\4\0\7\136\1\0"+ - "\1\136\7\0\6\136\12\0\1\137\55\0\1\43\1\0"+ - "\1\43\3\0\13\43\2\0\1\43\4\0\7\43\1\0"+ - "\1\43\7\0\6\43\5\0\1\45\62\0\1\47\1\0"+ - "\1\47\3\0\13\47\2\0\1\47\4\0\7\47\1\0"+ - "\1\47\7\0\6\47\5\0\1\47\1\0\1\47\3\0"+ - "\13\47\2\0\1\47\4\0\1\140\6\47\1\0\1\47"+ - "\7\0\6\47\5\0\1\47\1\0\1\47\3\0\13\47"+ - "\2\0\1\47\4\0\2\47\1\141\4\47\1\0\1\47"+ - "\7\0\6\47\5\0\1\47\1\0\1\47\3\0\13\47"+ - "\2\0\1\47\4\0\1\47\1\142\5\47\1\0\1\47"+ - "\7\0\6\47\2\0\31\143\1\144\31\143\32\145\1\144"+ - "\30\145\1\0\1\61\64\0\1\62\1\0\1\62\3\0"+ - "\13\62\2\0\1\62\4\0\7\62\1\0\1\62\7\0"+ - "\6\62\11\0\1\146\63\0\1\147\55\0\1\62\1\0"+ - "\1\62\3\0\1\62\1\150\11\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\4\62\1\151\6\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\7\62\1\152\3\62\2\0\1\153\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\1\154\12\62\2\0\1\155\4\0\7\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\10\62\1\156\2\62\2\0\1\62\4\0\7\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\13\62\2\0\1\62\4\0\2\62\1\157\4\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\13\62\2\0\1\62\4\0\2\62\1\160\4\62"+ - "\1\0\1\62\7\0\6\62\46\0\1\161\16\0\1\75"+ - "\1\162\4\75\1\77\1\100\41\75\1\101\11\75\1\162"+ - "\1\76\4\162\1\163\1\164\53\162\1\75\1\162\4\75"+ - "\1\77\1\165\41\75\1\101\12\75\1\162\4\75\1\77"+ - "\1\100\1\166\40\75\1\101\11\75\1\101\1\162\4\101"+ - "\1\167\1\170\53\101\24\0\1\171\41\0\1\47\1\0"+ - "\1\47\3\0\1\47\1\172\11\47\2\0\1\47\4\0"+ - "\7\47\1\0\1\47\7\0\6\47\31\0\1\173\63\0"+ - "\1\173\35\0\1\107\1\0\1\107\3\0\13\107\2\0"+ - "\1\107\4\0\11\107\2\0\1\107\4\0\6\107\4\0"+ - "\1\174\1\175\1\0\1\175\3\0\13\175\1\176\1\0"+ - "\1\175\4\0\7\175\1\0\1\175\2\0\1\177\1\200"+ - "\3\0\6\175\4\0\1\174\1\175\1\0\1\175\3\0"+ - "\11\175\1\201\1\175\1\176\1\0\1\175\4\0\7\175"+ - "\1\0\1\175\2\0\1\177\1\200\3\0\6\175\5\0"+ - "\1\177\1\0\1\177\3\0\13\177\2\0\1\177\4\0"+ - "\7\177\1\0\1\177\2\0\1\177\1\200\3\0\6\177"+ - "\21\0\1\202\65\0\1\203\75\0\1\204\25\0\31\120"+ - "\2\0\12\120\1\0\15\120\2\0\1\174\1\205\1\0"+ - "\1\205\3\0\13\205\1\176\1\0\1\205\4\0\7\205"+ - "\1\0\1\205\7\0\6\205\35\0\1\206\64\0\1\207"+ - "\61\0\1\210\72\0\1\211\21\0\1\136\1\0\1\136"+ - "\3\0\13\136\2\0\1\136\4\0\7\136\1\0\1\136"+ - "\7\0\6\136\5\0\1\47\1\0\1\47\3\0\13\47"+ - "\2\0\1\47\4\0\1\47\1\212\5\47\1\0\1\47"+ - "\7\0\6\47\5\0\1\47\1\0\1\47\3\0\1\213"+ - "\12\47\2\0\1\47\4\0\7\47\1\0\1\47\7\0"+ - "\6\47\5\0\1\47\1\0\1\47\3\0\1\214\12\47"+ - "\2\0\1\47\4\0\7\47\1\0\1\47\7\0\6\47"+ - "\20\0\1\215\25\0\1\216\21\0\1\62\1\0\1\62"+ - "\3\0\1\62\1\217\11\62\2\0\1\62\4\0\7\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\5\62\1\220\5\62\2\0\1\62\4\0\7\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\13\62\2\0\1\62\4\0\5\62\1\221\1\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\11\62\1\222\1\62\2\0\1\62\4\0\7\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\13\62\2\0\1\62\4\0\6\62\1\223\1\0"+ - "\1\62\7\0\6\62\5\0\1\62\1\0\1\62\3\0"+ - "\13\62\2\0\1\62\4\0\7\62\1\0\1\224\7\0"+ - "\6\62\5\0\1\62\1\0\1\62\3\0\11\62\1\225"+ - "\1\62\2\0\1\62\4\0\7\62\1\0\1\62\7\0"+ - "\6\62\5\0\1\62\1\0\1\62\3\0\13\62\2\0"+ - "\1\62\4\0\5\62\1\226\1\62\1\0\1\62\7\0"+ - "\6\62\11\0\1\227\53\0\6\162\1\163\1\164\61\162"+ - "\1\163\1\230\61\162\1\163\1\164\1\231\52\162\1\232"+ - "\1\0\4\232\1\233\1\234\1\166\40\232\1\235\11\232"+ - "\1\236\1\0\47\236\1\0\11\236\1\101\1\162\4\101"+ - "\1\167\1\237\54\101\1\162\4\101\1\167\1\170\1\231"+ - "\52\101\3\0\1\47\1\0\1\47\3\0\5\47\1\240"+ - "\5\47\2\0\1\47\4\0\7\47\1\0\1\47\7\0"+ - "\6\47\4\0\1\174\21\0\1\176\40\0\1\176\63\0"+ - "\1\241\1\0\1\241\3\0\13\241\2\0\1\241\4\0"+ - "\7\241\1\0\1\241\2\0\1\241\4\0\6\241\23\0"+ - "\1\242\63\0\1\243\114\0\1\244\42\0\1\245\37\0"+ - "\1\246\62\0\1\247\60\0\1\250\56\0\1\47\1\0"+ - "\1\47\3\0\10\47\1\251\2\47\2\0\1\47\4\0"+ - "\7\47\1\0\1\47\7\0\6\47\5\0\1\47\1\0"+ - "\1\47\3\0\11\47\1\212\1\47\2\0\1\47\4\0"+ - "\7\47\1\0\1\47\7\0\6\47\5\0\1\47\1\0"+ - "\1\47\3\0\1\251\12\47\2\0\1\47\4\0\7\47"+ - "\1\0\1\47\7\0\6\47\46\0\1\252\21\0\1\62"+ - "\1\0\1\62\3\0\2\62\1\253\10\62\2\0\1\62"+ - "\4\0\7\62\1\0\1\62\7\0\6\62\5\0\1\62"+ - "\1\0\1\62\3\0\6\62\1\253\4\62\2\0\1\62"+ - "\4\0\7\62\1\0\1\62\7\0\6\62\5\0\1\62"+ - "\1\0\1\62\3\0\1\254\12\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\10\62\1\255\2\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\12\62\1\256\2\0\1\62\4\0\7\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\13\62\2\0\1\62\4\0\1\62\1\257\5\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\10\62\1\260\2\62\2\0\1\62\4\0\7\62"+ - "\1\0\1\62\7\0\6\62\5\0\1\62\1\0\1\62"+ - "\3\0\6\62\1\261\4\62\2\0\1\62\4\0\7\62"+ - "\1\0\1\62\7\0\6\62\12\0\1\262\62\0\1\231"+ - "\52\0\1\232\1\0\4\232\1\233\1\234\41\232\1\235"+ - "\12\232\1\0\4\232\1\233\1\263\41\232\1\235\12\232"+ - "\1\0\4\232\1\233\1\234\1\236\40\232\1\235\11\232"+ - "\1\235\1\0\4\235\1\264\1\265\54\235\1\0\4\235"+ - "\1\264\1\265\1\231\52\235\3\0\1\241\1\0\1\241"+ - "\3\0\13\241\2\0\1\241\4\0\7\241\1\0\1\241"+ - "\2\0\1\241\1\200\3\0\6\241\57\0\1\266\42\0"+ - "\1\267\46\0\1\270\63\0\1\245\51\0\1\270\61\0"+ - "\1\271\55\0\1\62\1\0\1\62\3\0\13\62\2\0"+ - "\1\62\4\0\1\62\1\272\5\62\1\0\1\62\7\0"+ - "\6\62\5\0\1\62\1\0\1\62\3\0\12\62\1\273"+ - "\2\0\1\62\4\0\7\62\1\0\1\62\7\0\6\62"+ - "\5\0\1\62\1\0\1\274\3\0\13\274\2\0\1\274"+ - "\4\0\7\274\1\0\1\274\7\0\6\274\5\0\1\62"+ - "\1\0\1\62\3\0\4\62\1\275\6\62\2\0\1\62"+ - "\4\0\7\62\1\0\1\62\7\0\6\62\5\0\1\62"+ - "\1\0\1\62\3\0\12\62\1\276\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\10\62\1\277\2\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\2\0\1\235\1\0"+ - "\4\235\1\264\1\300\54\235\1\0\4\235\1\264\1\265"+ - "\1\0\52\235\21\0\1\301\63\0\1\302\43\0\1\62"+ - "\1\0\1\62\3\0\13\62\2\0\1\62\4\0\6\62"+ - "\1\303\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\4\62\1\304\6\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\274\1\0"+ - "\1\274\3\0\13\274\2\0\1\274\4\0\7\274\1\0"+ - "\1\274\7\0\6\274\5\0\1\62\1\0\1\62\3\0"+ - "\13\62\2\0\1\62\4\0\1\305\6\62\1\0\1\62"+ - "\7\0\6\62\5\0\1\62\1\0\1\62\3\0\5\62"+ - "\1\306\5\62\2\0\1\62\4\0\7\62\1\0\1\62"+ - "\7\0\6\62\5\0\1\62\1\0\1\62\3\0\13\62"+ - "\2\0\1\62\4\0\6\62\1\307\1\0\1\62\7\0"+ - "\6\62\43\0\1\310\61\0\1\311\25\0\1\62\1\0"+ - "\1\62\3\0\10\62\1\312\2\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\7\62\1\313\3\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\10\62\1\314\2\62\2\0\1\62\4\0"+ - "\7\62\1\0\1\62\7\0\6\62\5\0\1\62\1\0"+ - "\1\62\3\0\13\62\2\0\1\62\4\0\2\62\1\315"+ - "\4\62\1\0\1\62\7\0\6\62\60\0\1\316\1\0"+ - "\1\317\35\0\1\320\32\0\1\62\1\0\1\62\3\0"+ - "\13\62\2\0\1\62\4\0\4\62\1\321\2\62\1\0"+ - "\1\62\7\0\6\62\61\0\1\322\40\0\1\323\42\0"+ - "\1\324\124\0\1\325\57\0\1\326\21\0\1\327\104\0"+ - "\1\330\43\0\1\331\66\0\1\332\100\0\1\333\55\0"+ - "\1\334\44\0\1\335\60\0\1\336\65\0\1\337\44\0"; + "\14\21\1\22\1\21\1\23\37\21\1\24\1\25\12\21"+ + "\1\26\1\27\1\30\11\26\1\31\42\26\1\32\1\0"+ + "\10\26\1\33\1\34\1\35\1\36\2\34\1\37\6\34"+ + "\1\40\2\34\1\41\40\34\1\0\7\34\1\42\2\34"+ + "\1\27\1\36\3\34\1\43\1\34\3\43\2\34\1\43"+ + "\3\34\13\43\2\34\1\43\4\34\7\43\1\34\1\43"+ + "\4\34\1\0\1\34\6\43\3\34\1\35\1\44\1\45"+ + "\1\46\1\47\1\50\1\51\3\50\1\46\1\52\1\50"+ + "\3\34\5\50\1\53\1\50\1\54\3\50\2\34\1\55"+ + "\2\34\1\56\1\57\7\50\1\34\1\50\1\45\1\60"+ + "\2\34\1\0\1\61\6\50\2\34\1\62\1\63\1\44"+ + "\3\62\1\64\1\62\3\64\2\62\1\64\1\65\1\66"+ + "\1\62\1\67\2\64\1\70\1\71\3\64\1\72\2\64"+ + "\2\62\1\64\4\62\1\73\2\64\1\74\1\64\1\75"+ + "\1\64\1\62\1\64\1\76\3\62\1\0\1\62\6\64"+ + "\2\62\1\34\1\35\1\44\3\34\1\50\1\34\3\50"+ + "\1\34\1\52\1\50\1\34\1\41\1\34\13\50\2\34"+ + "\1\50\2\34\1\56\1\57\7\50\1\34\1\50\4\34"+ + "\1\0\1\61\6\50\2\34\1\77\1\100\14\77\1\101"+ + "\1\102\40\77\1\103\11\77\1\34\1\35\1\44\1\45"+ + "\1\46\1\104\1\50\1\51\3\50\1\46\1\52\1\50"+ + "\1\105\1\41\1\105\13\50\1\105\1\106\1\107\1\110"+ + "\1\111\1\56\1\57\7\50\1\34\1\50\1\45\3\34"+ + "\1\0\1\34\6\50\3\34\1\35\1\44\3\34\1\112"+ + "\1\34\3\112\2\34\1\112\1\34\1\41\1\34\13\112"+ + "\2\34\1\112\4\34\11\112\2\34\1\112\1\34\1\0"+ + "\1\34\6\112\3\34\1\35\1\44\3\34\1\113\1\34"+ + "\3\113\2\34\1\113\1\34\1\41\1\34\4\113\1\114"+ + "\1\115\5\113\2\34\1\113\2\34\1\56\1\57\7\113"+ + "\1\34\1\113\2\34\1\116\1\34\1\0\1\34\6\113"+ + "\3\34\1\35\1\44\23\34\1\117\21\34\1\120\7\34"+ + "\1\0\1\34\1\121\5\34\1\122\1\34\41\123\1\56"+ + "\1\57\12\123\1\60\14\123\1\34\1\35\1\44\3\34"+ + "\1\124\1\34\3\124\2\34\1\124\3\34\13\124\2\34"+ + "\1\124\4\34\7\124\1\34\1\124\4\34\1\0\1\61"+ + "\6\124\3\34\1\35\1\36\1\45\1\46\1\104\1\34"+ + "\1\51\3\34\1\46\1\52\11\34\1\125\1\34\1\126"+ + "\3\34\1\127\1\34\1\130\2\34\1\56\1\57\11\34"+ + "\1\45\3\34\1\0\11\34\1\131\1\132\1\133\51\131"+ + "\1\134\15\131\14\21\1\22\1\21\1\135\37\21\1\136"+ + "\1\137\20\21\1\0\1\21\3\0\2\21\1\0\3\21"+ + "\13\0\2\21\1\0\4\21\7\0\1\21\1\0\6\21"+ + "\6\0\21\21\1\140\53\21\1\0\56\21\1\0\25\21"+ + "\1\22\55\21\73\0\1\27\72\0\1\44\75\0\1\50"+ + "\1\0\3\50\2\0\1\50\3\0\13\50\2\0\1\50"+ + "\4\0\7\50\1\0\1\50\6\0\6\50\3\0\1\35"+ + "\76\0\1\141\1\0\3\141\2\0\1\141\3\0\13\141"+ + "\2\0\1\141\4\0\7\141\1\0\1\141\6\0\6\141"+ + "\22\0\1\142\55\0\1\43\1\0\6\43\1\0\1\43"+ + "\3\0\13\43\2\0\1\43\4\0\7\43\1\0\1\43"+ + "\6\0\6\43\6\0\1\46\1\143\1\0\1\51\3\0"+ + "\1\46\62\0\1\46\1\143\1\144\1\46\3\0\1\46"+ + "\15\0\1\144\44\0\1\145\2\0\1\145\3\0\1\145"+ + "\62\0\1\50\1\0\6\50\1\0\1\50\3\0\13\50"+ + "\2\0\1\50\4\0\7\50\1\0\1\50\6\0\6\50"+ + "\6\0\1\46\1\143\1\144\1\46\1\146\1\0\1\147"+ + "\1\46\15\0\1\144\14\0\1\147\27\0\1\50\1\0"+ + "\6\50\1\0\1\50\3\0\13\50\2\0\1\50\4\0"+ + "\1\150\6\50\1\0\1\50\6\0\6\50\6\0\1\50"+ + "\1\0\6\50\1\0\1\50\3\0\13\50\2\0\1\50"+ + "\4\0\2\50\1\151\4\50\1\0\1\50\6\0\6\50"+ + "\6\0\1\50\1\0\6\50\1\0\1\50\3\0\13\50"+ + "\2\0\1\50\4\0\1\50\1\152\5\50\1\0\1\50"+ + "\6\0\6\50\2\0\41\153\1\154\30\153\42\155\1\154"+ + "\27\155\1\0\1\63\74\0\1\64\1\0\6\64\1\0"+ + "\1\64\3\0\13\64\2\0\1\64\4\0\7\64\1\0"+ + "\1\64\6\0\6\64\21\0\1\156\72\0\1\157\55\0"+ + "\1\64\1\0\6\64\1\0\1\64\3\0\1\64\1\160"+ + "\11\64\2\0\1\64\4\0\7\64\1\0\1\64\6\0"+ + "\6\64\6\0\1\64\1\0\6\64\1\0\1\64\3\0"+ + "\4\64\1\161\6\64\2\0\1\64\4\0\7\64\1\0"+ + "\1\64\6\0\6\64\6\0\1\64\1\0\6\64\1\0"+ + "\1\64\3\0\7\64\1\162\3\64\2\0\1\163\4\0"+ + "\7\64\1\0\1\64\6\0\6\64\6\0\1\64\1\0"+ + "\6\64\1\0\1\64\3\0\1\164\12\64\2\0\1\165"+ + "\4\0\7\64\1\0\1\64\6\0\6\64\6\0\1\64"+ + "\1\0\6\64\1\0\1\64\3\0\10\64\1\166\2\64"+ + "\2\0\1\64\4\0\7\64\1\0\1\64\6\0\6\64"+ + "\6\0\1\64\1\0\6\64\1\0\1\64\3\0\13\64"+ + "\2\0\1\64\4\0\2\64\1\167\4\64\1\0\1\64"+ + "\6\0\6\64\6\0\1\64\1\0\6\64\1\0\1\64"+ + "\3\0\13\64\2\0\1\64\4\0\2\64\1\170\4\64"+ + "\1\0\1\64\6\0\6\64\56\0\1\171\15\0\1\77"+ + "\1\172\14\77\1\101\1\102\40\77\1\103\11\77\1\172"+ + "\1\100\14\172\1\173\1\174\52\172\1\77\1\172\14\77"+ + "\1\101\1\175\40\77\1\103\12\77\1\172\14\77\1\101"+ + "\1\102\1\176\37\77\1\103\11\77\1\103\1\172\14\103"+ + "\1\177\1\200\52\103\34\0\1\201\41\0\1\50\1\0"+ + "\6\50\1\0\1\50\3\0\1\50\1\202\11\50\2\0"+ + "\1\50\4\0\7\50\1\0\1\50\6\0\6\50\41\0"+ + "\1\203\72\0\1\203\35\0\1\112\1\0\6\112\1\0"+ + "\1\112\3\0\13\112\2\0\1\112\4\0\11\112\2\0"+ + "\1\112\3\0\6\112\4\0\1\204\1\0\1\205\1\206"+ + "\6\205\1\0\1\205\3\0\13\205\1\207\1\0\1\205"+ + "\4\0\7\205\1\0\1\205\2\0\1\210\3\0\6\205"+ + "\4\0\1\204\1\0\1\205\1\206\6\205\1\0\1\205"+ + "\3\0\11\205\1\211\1\205\1\207\1\0\1\205\4\0"+ + "\7\205\1\0\1\205\2\0\1\210\3\0\6\205\6\0"+ + "\1\210\1\206\6\210\1\0\1\210\3\0\13\210\2\0"+ + "\1\210\4\0\7\210\1\0\1\210\2\0\1\210\3\0"+ + "\6\210\31\0\1\212\74\0\1\213\104\0\1\214\24\0"+ + "\41\123\2\0\12\123\1\0\14\123\2\0\1\204\1\0"+ + "\1\215\1\0\6\215\1\0\1\215\3\0\13\215\1\207"+ + "\1\0\1\215\4\0\7\215\1\0\1\215\6\0\6\215"+ + "\45\0\1\216\73\0\1\217\70\0\1\220\101\0\1\221"+ + "\21\0\1\141\1\0\6\141\1\0\1\141\3\0\13\141"+ + "\2\0\1\141\4\0\7\141\1\0\1\141\6\0\6\141"+ + "\5\0\1\222\1\223\2\0\1\223\3\0\1\223\40\0"+ + "\1\222\21\0\1\145\1\0\1\144\1\145\3\0\1\145"+ + "\15\0\1\144\44\0\1\224\1\0\2\224\1\0\3\224"+ + "\14\0\2\224\13\0\2\224\1\0\2\224\13\0\1\224"+ + "\13\0\1\225\3\0\1\225\62\0\1\50\1\0\6\50"+ + "\1\0\1\50\3\0\13\50\2\0\1\50\4\0\1\50"+ + "\1\226\5\50\1\0\1\50\6\0\6\50\6\0\1\50"+ + "\1\0\6\50\1\0\1\50\3\0\1\227\12\50\2\0"+ + "\1\50\4\0\7\50\1\0\1\50\6\0\6\50\6\0"+ + "\1\50\1\0\6\50\1\0\1\50\3\0\1\230\12\50"+ + "\2\0\1\50\4\0\7\50\1\0\1\50\6\0\6\50"+ + "\30\0\1\231\25\0\1\232\21\0\1\64\1\0\6\64"+ + "\1\0\1\64\3\0\1\64\1\233\11\64\2\0\1\64"+ + "\4\0\7\64\1\0\1\64\6\0\6\64\6\0\1\64"+ + "\1\0\6\64\1\0\1\64\3\0\5\64\1\234\5\64"+ + "\2\0\1\64\4\0\7\64\1\0\1\64\6\0\6\64"+ + "\6\0\1\64\1\0\6\64\1\0\1\64\3\0\13\64"+ + "\2\0\1\64\4\0\5\64\1\235\1\64\1\0\1\64"+ + "\6\0\6\64\6\0\1\64\1\0\6\64\1\0\1\64"+ + "\3\0\11\64\1\236\1\64\2\0\1\64\4\0\7\64"+ + "\1\0\1\64\6\0\6\64\6\0\1\64\1\0\6\64"+ + "\1\0\1\64\3\0\13\64\2\0\1\64\4\0\6\64"+ + "\1\237\1\0\1\64\6\0\6\64\6\0\1\64\1\0"+ + "\6\64\1\0\1\64\3\0\13\64\2\0\1\64\4\0"+ + "\7\64\1\0\1\240\6\0\6\64\6\0\1\64\1\0"+ + "\6\64\1\0\1\64\3\0\11\64\1\241\1\64\2\0"+ + "\1\64\4\0\7\64\1\0\1\64\6\0\6\64\6\0"+ + "\1\64\1\0\6\64\1\0\1\64\3\0\13\64\2\0"+ + "\1\64\4\0\5\64\1\242\1\64\1\0\1\64\6\0"+ + "\6\64\21\0\1\243\52\0\16\172\1\173\1\174\70\172"+ + "\1\173\1\244\70\172\1\173\1\174\1\245\51\172\1\246"+ + "\1\0\14\246\1\247\1\250\1\176\37\246\1\251\11\246"+ + "\1\252\1\0\56\252\1\0\11\252\1\103\1\172\14\103"+ + "\1\177\1\253\53\103\1\172\14\103\1\177\1\200\1\245"+ + "\51\103\4\0\1\50\1\0\6\50\1\0\1\50\3\0"+ + "\5\50\1\254\5\50\2\0\1\50\4\0\7\50\1\0"+ + "\1\50\6\0\6\50\4\0\1\204\31\0\1\207\41\0"+ + "\1\255\1\0\6\255\1\0\1\255\3\0\13\255\2\0"+ + "\1\255\4\0\7\255\1\0\1\255\2\0\1\255\3\0"+ + "\6\255\4\0\1\207\120\0\1\256\72\0\1\257\122\0"+ + "\1\260\52\0\1\261\46\0\1\262\71\0\1\263\67\0"+ + "\1\264\56\0\1\223\2\0\1\223\3\0\1\223\62\0"+ + "\1\50\1\0\6\50\1\0\1\50\3\0\10\50\1\265"+ + "\2\50\2\0\1\50\4\0\7\50\1\0\1\50\6\0"+ + "\6\50\6\0\1\50\1\0\6\50\1\0\1\50\3\0"+ + "\11\50\1\226\1\50\2\0\1\50\4\0\7\50\1\0"+ + "\1\50\6\0\6\50\6\0\1\50\1\0\6\50\1\0"+ + "\1\50\3\0\1\265\12\50\2\0\1\50\4\0\7\50"+ + "\1\0\1\50\6\0\6\50\56\0\1\266\21\0\1\64"+ + "\1\0\6\64\1\0\1\64\3\0\2\64\1\267\10\64"+ + "\2\0\1\64\4\0\7\64\1\0\1\64\6\0\6\64"+ + "\6\0\1\64\1\0\6\64\1\0\1\64\3\0\6\64"+ + "\1\267\4\64\2\0\1\64\4\0\7\64\1\0\1\64"+ + "\6\0\6\64\6\0\1\64\1\0\6\64\1\0\1\64"+ + "\3\0\1\270\12\64\2\0\1\64\4\0\7\64\1\0"+ + "\1\64\6\0\6\64\6\0\1\64\1\0\6\64\1\0"+ + "\1\64\3\0\10\64\1\271\2\64\2\0\1\64\4\0"+ + "\7\64\1\0\1\64\6\0\6\64\6\0\1\64\1\0"+ + "\6\64\1\0\1\64\3\0\12\64\1\272\2\0\1\64"+ + "\4\0\7\64\1\0\1\64\6\0\6\64\6\0\1\64"+ + "\1\0\6\64\1\0\1\64\3\0\13\64\2\0\1\64"+ + "\4\0\1\64\1\273\5\64\1\0\1\64\6\0\6\64"+ + "\6\0\1\64\1\0\6\64\1\0\1\64\3\0\10\64"+ + "\1\274\2\64\2\0\1\64\4\0\7\64\1\0\1\64"+ + "\6\0\6\64\6\0\1\64\1\0\6\64\1\0\1\64"+ + "\3\0\6\64\1\275\4\64\2\0\1\64\4\0\7\64"+ + "\1\0\1\64\6\0\6\64\22\0\1\276\71\0\1\245"+ + "\51\0\1\246\1\0\14\246\1\247\1\250\40\246\1\251"+ + "\12\246\1\0\14\246\1\247\1\277\40\246\1\251\12\246"+ + "\1\0\14\246\1\247\1\250\1\252\37\246\1\251\11\246"+ + "\1\251\1\0\14\251\1\300\1\301\53\251\1\0\14\251"+ + "\1\300\1\301\1\245\51\251\4\0\1\255\1\206\6\255"+ + "\1\0\1\255\3\0\13\255\2\0\1\255\4\0\7\255"+ + "\1\0\1\255\2\0\1\255\3\0\6\255\66\0\1\302"+ + "\52\0\1\303\55\0\1\304\72\0\1\261\60\0\1\304"+ + "\70\0\1\305\55\0\1\64\1\0\6\64\1\0\1\64"+ + "\3\0\13\64\2\0\1\64\4\0\1\64\1\306\5\64"+ + "\1\0\1\64\6\0\6\64\6\0\1\64\1\0\6\64"+ + "\1\0\1\64\3\0\12\64\1\307\2\0\1\64\4\0"+ + "\7\64\1\0\1\64\6\0\6\64\6\0\1\64\1\0"+ + "\1\310\1\64\3\310\1\64\1\0\1\310\3\0\13\310"+ + "\2\0\1\310\4\0\7\310\1\0\1\310\6\0\6\310"+ + "\6\0\1\64\1\0\6\64\1\0\1\64\3\0\4\64"+ + "\1\311\6\64\2\0\1\64\4\0\7\64\1\0\1\64"+ + "\6\0\6\64\6\0\1\64\1\0\6\64\1\0\1\64"+ + "\3\0\12\64\1\312\2\0\1\64\4\0\7\64\1\0"+ + "\1\64\6\0\6\64\6\0\1\64\1\0\6\64\1\0"+ + "\1\64\3\0\10\64\1\313\2\64\2\0\1\64\4\0"+ + "\7\64\1\0\1\64\6\0\6\64\2\0\1\251\1\0"+ + "\14\251\1\300\1\314\53\251\1\0\14\251\1\300\1\301"+ + "\1\0\51\251\31\0\1\315\72\0\1\316\43\0\1\64"+ + "\1\0\6\64\1\0\1\64\3\0\13\64\2\0\1\64"+ + "\4\0\6\64\1\317\1\0\1\64\6\0\6\64\6\0"+ + "\1\64\1\0\6\64\1\0\1\64\3\0\4\64\1\320"+ + "\6\64\2\0\1\64\4\0\7\64\1\0\1\64\6\0"+ + "\6\64\6\0\1\310\1\0\6\310\1\0\1\310\3\0"+ + "\13\310\2\0\1\310\4\0\7\310\1\0\1\310\6\0"+ + "\6\310\6\0\1\64\1\0\6\64\1\0\1\64\3\0"+ + "\13\64\2\0\1\64\4\0\1\321\6\64\1\0\1\64"+ + "\6\0\6\64\6\0\1\64\1\0\6\64\1\0\1\64"+ + "\3\0\5\64\1\322\5\64\2\0\1\64\4\0\7\64"+ + "\1\0\1\64\6\0\6\64\6\0\1\64\1\0\6\64"+ + "\1\0\1\64\3\0\13\64\2\0\1\64\4\0\6\64"+ + "\1\323\1\0\1\64\6\0\6\64\53\0\1\324\70\0"+ + "\1\325\25\0\1\64\1\0\6\64\1\0\1\64\3\0"+ + "\10\64\1\326\2\64\2\0\1\64\4\0\7\64\1\0"+ + "\1\64\6\0\6\64\6\0\1\64\1\0\6\64\1\0"+ + "\1\64\3\0\7\64\1\327\3\64\2\0\1\64\4\0"+ + "\7\64\1\0\1\64\6\0\6\64\6\0\1\64\1\0"+ + "\6\64\1\0\1\64\3\0\10\64\1\330\2\64\2\0"+ + "\1\64\4\0\7\64\1\0\1\64\6\0\6\64\6\0"+ + "\1\64\1\0\6\64\1\0\1\64\3\0\13\64\2\0"+ + "\1\64\4\0\2\64\1\331\4\64\1\0\1\64\6\0"+ + "\6\64\67\0\1\332\1\0\1\333\45\0\1\334\32\0"+ + "\1\64\1\0\6\64\1\0\1\64\3\0\13\64\2\0"+ + "\1\64\4\0\4\64\1\335\2\64\1\0\1\64\6\0"+ + "\6\64\70\0\1\336\50\0\1\337\51\0\1\340\132\0"+ + "\1\341\66\0\1\342\31\0\1\343\113\0\1\344\52\0"+ + "\1\345\75\0\1\346\107\0\1\347\64\0\1\350\53\0"+ + "\1\351\67\0\1\352\74\0\1\353\43\0"; private static int [] zzUnpackTrans() { - int [] result = new int[8517]; + int [] result = new int[10150]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -413,18 +449,19 @@ 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 = - "\20\0\5\1\1\11\3\1\3\11\4\1\2\11\12\1"+ - "\4\11\20\1\1\0\15\1\1\11\4\1\1\11\1\1"+ - "\1\11\3\1\3\0\1\11\1\1\1\11\3\1\1\0"+ - "\1\11\1\0\1\1\1\11\11\1\4\0\2\1\2\0"+ - "\1\11\1\1\1\11\2\0\1\1\2\0\1\1\10\0"+ - "\3\1\1\11\1\0\10\1\2\0\1\11\3\1\1\0"+ - "\4\1\1\0\1\11\5\0\1\1\1\11\7\1\1\11"+ - "\1\1\4\0\2\11\7\1\2\0\5\1\2\0\4\1"+ - "\3\0\1\1\3\0\1\11\3\0\1\11\5\0\1\11"; + "\20\0\5\1\1\11\3\1\3\11\2\1\1\11\2\1"+ + "\1\11\15\1\3\11\20\1\1\0\16\1\1\11\4\1"+ + "\1\11\1\1\1\11\3\1\3\0\1\11\1\1\1\11"+ + "\2\0\1\1\2\0\3\1\1\0\1\11\1\0\1\1"+ + "\1\11\11\1\4\0\2\1\2\0\1\11\1\1\1\11"+ + "\3\0\1\1\1\0\1\1\11\0\6\1\1\11\1\0"+ + "\10\1\2\0\1\11\3\1\1\0\4\1\1\0\1\11"+ + "\5\0\1\1\1\11\7\1\1\11\1\1\4\0\2\11"+ + "\7\1\2\0\5\1\2\0\4\1\3\0\1\1\3\0"+ + "\1\11\3\0\1\11\5\0\1\11"; private static int [] zzUnpackAttribute() { - int [] result = new int[223]; + int [] result = new int[235]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -831,17 +868,17 @@ else if (zzAtEOF) { // fall through case 69: break; case 14: - { yypushstate(SS_LOOKUP); return SilverstripeTokenTypes.SS_LOOKUP; + { return SilverstripeTokenTypes.SS_DOT; } // fall through case 70: break; case 15: - { yypopstate(); return SilverstripeTokenTypes.SS_RIGHT_PARENTHESIS; + { yypushstate(SS_LOOKUP); return SilverstripeTokenTypes.SS_LOOKUP; } // fall through case 71: break; case 16: - { return SilverstripeTokenTypes.SS_DOT; + { yypopstate(); return SilverstripeTokenTypes.SS_RIGHT_PARENTHESIS; } // fall through case 72: break; diff --git a/src/main/java/com/kinglozzer/silverstripe/parser/Silverstripe.flex b/src/main/java/com/kinglozzer/silverstripe/parser/Silverstripe.flex index da207da..01f25bd 100644 --- a/src/main/java/com/kinglozzer/silverstripe/parser/Silverstripe.flex +++ b/src/main/java/com/kinglozzer/silverstripe/parser/Silverstripe.flex @@ -44,7 +44,13 @@ import com.intellij.util.containers.Stack; CRLF= (\n|\r|\r\n) WHITE_SPACE= [\ \t] -NUMBER=[0-9]+ +SIGN= [+-] +FLOAT= [0-9]*\.?[0-9]+([eE][-+]?[0-9]+)? +HEXADECIMAL= 0[xX][0-9a-fA-F]+ +OCTAL= 0[0-7]+ +BINARY= 0[bB][01]+ +DECIMAL= 0 | [1-9][0-9]* +INTEGER_OR_FLOAT= ( {SIGN} )? ( {HEXADECIMAL} | {BINARY} | {FLOAT} | {OCTAL} | {DECIMAL} ) SS_LOOKUP= \$[a-zA-Z_]+([a-zA-Z0-9_])* SS_IDENTIFIER= [a-zA-Z_]+([a-zA-Z0-9_])* SS_BLOCK_START= <% @@ -173,7 +179,7 @@ SS_TEXT= (([^<${\\]+) | (\\.) | (<[^%]) | (\$[^A-Za-z_]) | (\{[^\$]) | (\{\$[^A- { "=" { return SilverstripeTokenTypes.SS_EQUALS; } - {NUMBER} { return SilverstripeTokenTypes.SS_NUMBER; } + {INTEGER_OR_FLOAT} { return SilverstripeTokenTypes.SS_NUMBER; } {SS_PRIMITIVE} { return SilverstripeTokenTypes.SS_PRIMITIVE; } {SS_STRING} { return SilverstripeTokenTypes.SS_STRING; } {SS_LOOKUP} { yypushstate(SS_LOOKUP); return SilverstripeTokenTypes.SS_LOOKUP; } @@ -203,7 +209,7 @@ SS_TEXT= (([^<${\\]+) | (\\.) | (<[^%]) | (\$[^A-Za-z_]) | (\{[^\$]) | (\{\$[^A- { {SS_COMPARISON_OPERATOR} { return SilverstripeTokenTypes.SS_COMPARISON_OPERATOR; } - {NUMBER} { return SilverstripeTokenTypes.SS_NUMBER; } + {INTEGER_OR_FLOAT} { return SilverstripeTokenTypes.SS_NUMBER; } {SS_AND_OR_OPERATOR} { return SilverstripeTokenTypes.SS_AND_OR_OPERATOR; } {SS_STRING} { return SilverstripeTokenTypes.SS_STRING; } {SS_IDENTIFIER} { yypushstate(SS_LOOKUP); return SilverstripeTokenTypes.SS_LOOKUP; } @@ -302,7 +308,7 @@ SS_TEXT= (([^<${\\]+) | (\\.) | (<[^%]) | (\$[^A-Za-z_]) | (\{[^\$]) | (\{\$[^A- {SS_IDENTIFIER} { yypushstate(SS_LOOKUP); return SilverstripeTokenTypes.SS_LOOKUP; } {SS_LOOKUP} { yypushstate(SS_LOOKUP); return SilverstripeTokenTypes.SS_LOOKUP; } {SS_STRING} { return SilverstripeTokenTypes.SS_STRING; } - {NUMBER} { return SilverstripeTokenTypes.SS_NUMBER; } + {INTEGER_OR_FLOAT} { return SilverstripeTokenTypes.SS_NUMBER; } {WHITE_SPACE}+ { return TokenType.WHITE_SPACE; } {CRLF}+ { yypushback(yylength()); yypopstate(); } . { yypushback(yylength()); yypopstate(); } diff --git a/src/test/java/parser/SilverstripeParserTest.java b/src/test/java/parser/SilverstripeParserTest.java index 51c6687..dd97a02 100644 --- a/src/test/java/parser/SilverstripeParserTest.java +++ b/src/test/java/parser/SilverstripeParserTest.java @@ -92,4 +92,8 @@ public void testIssue11() { public void testIssue12() { doTest(true); } + + public void testIssue21() { + doTest(true); + } } diff --git a/src/test/testData/parser/Issue21.ss b/src/test/testData/parser/Issue21.ss new file mode 100644 index 0000000..4a50d94 --- /dev/null +++ b/src/test/testData/parser/Issue21.ss @@ -0,0 +1,7 @@ +{$Test(0)} +{$Test(-0123)} +{$Test(0x1A)} +{$Test(0b11111111)} +{$Test(15.25)} +{$Test(7E-2)} +{$Test(-1.2e3)} diff --git a/src/test/testData/parser/Issue21.txt b/src/test/testData/parser/Issue21.txt new file mode 100644 index 0000000..009b346 --- /dev/null +++ b/src/test/testData/parser/Issue21.txt @@ -0,0 +1,71 @@ +FILE + SilverstripePsiElementImpl([Ss] SS_STATEMENTS) + PsiElement(SS_LEFT_BRACE)('{') + SilverstripePsiElementImpl([Ss] SS_LOOKUP) + SilverstripeLookupStepImpl([Ss] SS_LOOKUP_STEP) + PsiElement([Ss] SS_LOOKUP)('$Test') + PsiElement(SS_LEFT_PARENTHESIS)('(') + SilverstripePsiElementImpl([Ss] SS_LOOKUP_STEP_ARGS) + PsiElement(SS_NUMBER)('0') + PsiElement(SS_RIGHT_PARENTHESIS)(')') + PsiElement(SS_RIGHT_BRACE)('}') + PsiWhiteSpace('\n') + PsiElement(SS_LEFT_BRACE)('{') + SilverstripePsiElementImpl([Ss] SS_LOOKUP) + SilverstripeLookupStepImpl([Ss] SS_LOOKUP_STEP) + PsiElement([Ss] SS_LOOKUP)('$Test') + PsiElement(SS_LEFT_PARENTHESIS)('(') + SilverstripePsiElementImpl([Ss] SS_LOOKUP_STEP_ARGS) + PsiElement(SS_NUMBER)('-0123') + PsiElement(SS_RIGHT_PARENTHESIS)(')') + PsiElement(SS_RIGHT_BRACE)('}') + PsiWhiteSpace('\n') + PsiElement(SS_LEFT_BRACE)('{') + SilverstripePsiElementImpl([Ss] SS_LOOKUP) + SilverstripeLookupStepImpl([Ss] SS_LOOKUP_STEP) + PsiElement([Ss] SS_LOOKUP)('$Test') + PsiElement(SS_LEFT_PARENTHESIS)('(') + SilverstripePsiElementImpl([Ss] SS_LOOKUP_STEP_ARGS) + PsiElement(SS_NUMBER)('0x1A') + PsiElement(SS_RIGHT_PARENTHESIS)(')') + PsiElement(SS_RIGHT_BRACE)('}') + PsiWhiteSpace('\n') + PsiElement(SS_LEFT_BRACE)('{') + SilverstripePsiElementImpl([Ss] SS_LOOKUP) + SilverstripeLookupStepImpl([Ss] SS_LOOKUP_STEP) + PsiElement([Ss] SS_LOOKUP)('$Test') + PsiElement(SS_LEFT_PARENTHESIS)('(') + SilverstripePsiElementImpl([Ss] SS_LOOKUP_STEP_ARGS) + PsiElement(SS_NUMBER)('0b11111111') + PsiElement(SS_RIGHT_PARENTHESIS)(')') + PsiElement(SS_RIGHT_BRACE)('}') + PsiWhiteSpace('\n') + PsiElement(SS_LEFT_BRACE)('{') + SilverstripePsiElementImpl([Ss] SS_LOOKUP) + SilverstripeLookupStepImpl([Ss] SS_LOOKUP_STEP) + PsiElement([Ss] SS_LOOKUP)('$Test') + PsiElement(SS_LEFT_PARENTHESIS)('(') + SilverstripePsiElementImpl([Ss] SS_LOOKUP_STEP_ARGS) + PsiElement(SS_NUMBER)('15.25') + PsiElement(SS_RIGHT_PARENTHESIS)(')') + PsiElement(SS_RIGHT_BRACE)('}') + PsiWhiteSpace('\n') + PsiElement(SS_LEFT_BRACE)('{') + SilverstripePsiElementImpl([Ss] SS_LOOKUP) + SilverstripeLookupStepImpl([Ss] SS_LOOKUP_STEP) + PsiElement([Ss] SS_LOOKUP)('$Test') + PsiElement(SS_LEFT_PARENTHESIS)('(') + SilverstripePsiElementImpl([Ss] SS_LOOKUP_STEP_ARGS) + PsiElement(SS_NUMBER)('7E-2') + PsiElement(SS_RIGHT_PARENTHESIS)(')') + PsiElement(SS_RIGHT_BRACE)('}') + PsiWhiteSpace('\n') + PsiElement(SS_LEFT_BRACE)('{') + SilverstripePsiElementImpl([Ss] SS_LOOKUP) + SilverstripeLookupStepImpl([Ss] SS_LOOKUP_STEP) + PsiElement([Ss] SS_LOOKUP)('$Test') + PsiElement(SS_LEFT_PARENTHESIS)('(') + SilverstripePsiElementImpl([Ss] SS_LOOKUP_STEP_ARGS) + PsiElement(SS_NUMBER)('-1.2e3') + PsiElement(SS_RIGHT_PARENTHESIS)(')') + PsiElement(SS_RIGHT_BRACE)('}') \ No newline at end of file