From c6e2bda77e6b1a6465dc58e9d03bbd73dd164422 Mon Sep 17 00:00:00 2001 From: "igor.petrenko" Date: Thu, 27 Nov 2025 14:07:05 +0200 Subject: [PATCH] CE-114 remote.dot.name --- .../plugin/gen/parser/OapParser.java | 9 +- .../plugin/gen/parser/_OapLexer.java | 970 +++++++++--------- .../plugin/gen/psi/OapDotRemote.java | 2 +- .../plugin/gen/psi/impl/OapDotRemoteImpl.java | 4 +- grammars/_OapLexer.flex | 13 +- grammars/oap.bnf | 2 +- .../plugin/parser/OapParserTest.kt | 4 + testdata/parser/RemoteDotName.oap | 8 + testdata/parser/RemoteDotName.txt | 57 + 9 files changed, 578 insertions(+), 491 deletions(-) create mode 100644 testdata/parser/RemoteDotName.oap create mode 100644 testdata/parser/RemoteDotName.txt diff --git a/gen/oap/application/plugin/gen/parser/OapParser.java b/gen/oap/application/plugin/gen/parser/OapParser.java index 47e766d..bcfb5e9 100644 --- a/gen/oap/application/plugin/gen/parser/OapParser.java +++ b/gen/oap/application/plugin/gen/parser/OapParser.java @@ -440,12 +440,13 @@ static boolean dot_parameters(PsiBuilder b, int l) { public static boolean dot_remote(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "dot_remote")) return false; if (!nextTokenIs(b, OAP_DOT)) return false; - boolean r; - Marker m = enter_section_(b); + boolean r, p; + Marker m = enter_section_(b, l, _NONE_, OAP_DOT_REMOTE, null); r = consumeToken(b, OAP_DOT); + p = r; // pin = 1 r = r && remote_name(b, l + 1); - exit_section_(b, m, OAP_DOT_REMOTE, r); - return r; + exit_section_(b, l, m, r, p, null); + return r || p; } /* ********************************************************** */ diff --git a/gen/oap/application/plugin/gen/parser/_OapLexer.java b/gen/oap/application/plugin/gen/parser/_OapLexer.java index 8633961..821324c 100644 --- a/gen/oap/application/plugin/gen/parser/_OapLexer.java +++ b/gen/oap/application/plugin/gen/parser/_OapLexer.java @@ -35,27 +35,28 @@ public class _OapLexer implements FlexLexer { public static final int SERVICES_IN = 20; public static final int SERVICES_SERVICE = 22; public static final int SERVICES_SERVICE_REMOTE = 24; - public static final int SERVICES_SERVICE_PARAMETERS = 26; - public static final int SERVICES_SERVICE_WS_SERVICE = 28; - public static final int SERVICES_SERVICE_WS_SERVICE_DOT_PATH = 30; - public static final int SERVICES_SERVICE_WS_HANDLER = 32; - public static final int SERVICES_SERVICE_WS_HANDLER_DOT_PATH = 34; - public static final int SERVICES_SERVICE_SUPERVISION = 36; - public static final int LISTEN = 38; - public static final int LISTEN_IN = 40; - public static final int _ARRAY = 42; - public static final int _OBJECT = 44; - public static final int _OBJECT_ENTITY = 46; - public static final int KEY_VALUE_SINGLE_OR_ARRAY = 48; - public static final int KEY_VALUE_SINGLE_OR_ARRAY_ARRAY = 50; - public static final int KEY_VALUE_CLASS = 52; - public static final int KEY_VALUE_STRING = 54; - public static final int _VALUE_REFERENCE = 56; - public static final int VALUE_REFERENCE = 58; - public static final int KEY_VALUE_MODULE_REFERENCE_SINGLE_OR_ARRAY = 60; - public static final int KEY_VALUE_MODULE_REFERENCE_SINGLE_OR_ARRAY_ARRAY = 62; - public static final int MODULE_REFERENCE = 64; - public static final int _ENV = 66; + public static final int SERVICES_SERVICE_REMOTE_DOT_NAME = 26; + public static final int SERVICES_SERVICE_PARAMETERS = 28; + public static final int SERVICES_SERVICE_WS_SERVICE = 30; + public static final int SERVICES_SERVICE_WS_SERVICE_DOT_PATH = 32; + public static final int SERVICES_SERVICE_WS_HANDLER = 34; + public static final int SERVICES_SERVICE_WS_HANDLER_DOT_PATH = 36; + public static final int SERVICES_SERVICE_SUPERVISION = 38; + public static final int LISTEN = 40; + public static final int LISTEN_IN = 42; + public static final int _ARRAY = 44; + public static final int _OBJECT = 46; + public static final int _OBJECT_ENTITY = 48; + public static final int KEY_VALUE_SINGLE_OR_ARRAY = 50; + public static final int KEY_VALUE_SINGLE_OR_ARRAY_ARRAY = 52; + public static final int KEY_VALUE_CLASS = 54; + public static final int KEY_VALUE_STRING = 56; + public static final int _VALUE_REFERENCE = 58; + public static final int VALUE_REFERENCE = 60; + public static final int KEY_VALUE_MODULE_REFERENCE_SINGLE_OR_ARRAY = 62; + public static final int KEY_VALUE_MODULE_REFERENCE_SINGLE_OR_ARRAY_ARRAY = 64; + public static final int MODULE_REFERENCE = 66; + public static final int _ENV = 68; /** * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l @@ -66,9 +67,9 @@ public class _OapLexer implements FlexLexer { private static final int ZZ_LEXSTATE[] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, - 16, 16, 15, 15, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 16, 16, 17, 17, 16, 16, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, - 31, 31, 32, 32 + 31, 31, 32, 32, 33, 33 }; /** @@ -391,33 +392,34 @@ private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\41\0\1\1\3\2\10\1\1\3\1\2\1\1\1\4"+ + "\42\0\1\1\3\2\10\1\1\3\1\2\1\1\1\4"+ "\1\5\3\1\2\6\1\7\1\10\1\11\1\12\1\13"+ "\1\14\1\15\2\1\1\16\1\17\1\2\1\1\1\20"+ "\1\21\1\22\1\23\1\24\1\25\1\24\1\26\1\27"+ - "\13\1\1\30\1\31\1\32\1\33\1\34\4\1\1\35"+ - "\2\1\1\36\4\1\1\37\1\40\1\41\1\1\1\42"+ - "\1\43\1\24\1\44\1\45\2\6\1\46\1\47\1\50"+ - "\1\2\1\51\1\52\4\51\1\53\1\54\1\0\1\55"+ - "\11\0\1\56\4\0\1\6\5\0\1\24\30\0\1\6"+ - "\1\0\1\24\2\6\1\0\4\51\6\0\1\56\5\0"+ - "\1\57\1\24\13\0\1\60\14\0\1\6\1\24\2\6"+ - "\5\51\4\0\1\61\2\0\1\62\2\0\1\24\3\0"+ - "\1\63\6\0\1\64\2\0\1\65\1\66\1\0\1\67"+ - "\2\0\1\70\4\0\1\24\1\62\2\51\1\71\1\51"+ - "\1\72\10\0\1\24\16\0\1\73\3\0\1\24\3\51"+ - "\6\0\1\74\1\75\1\24\3\0\1\76\1\0\1\77"+ - "\12\0\1\100\1\24\1\101\2\51\2\0\1\102\3\0"+ - "\1\24\1\0\1\103\5\0\1\104\6\0\1\24\1\105"+ - "\1\51\3\0\1\106\1\107\1\24\1\110\7\0\1\111"+ - "\1\0\1\112\1\0\1\113\1\0\1\114\1\0\1\24"+ - "\10\0\1\115\2\0\1\24\1\0\1\116\1\0\1\117"+ - "\1\120\5\0\1\24\1\0\1\121\2\0\1\122\2\0"+ - "\1\24\1\0\1\123\1\124\2\0\1\24\1\0\1\125"+ - "\1\0\1\126\1\127\1\0\1\130"; + "\10\1\1\30\3\1\1\31\1\1\1\32\1\33\1\34"+ + "\4\1\1\35\2\1\1\36\4\1\1\37\1\40\1\41"+ + "\1\1\1\42\1\43\1\24\1\44\1\45\2\6\1\46"+ + "\1\47\1\50\1\2\1\51\1\52\4\51\1\53\1\54"+ + "\1\0\1\55\11\0\1\56\4\0\1\6\5\0\1\24"+ + "\31\0\1\6\1\0\1\24\2\6\1\0\4\51\6\0"+ + "\1\56\5\0\1\57\1\24\13\0\1\60\15\0\1\6"+ + "\1\24\2\6\5\51\4\0\1\61\2\0\1\62\2\0"+ + "\1\24\3\0\1\63\6\0\1\64\1\0\1\65\1\0"+ + "\1\66\1\67\1\0\1\70\2\0\1\71\4\0\1\24"+ + "\1\62\2\51\1\72\1\51\1\73\10\0\1\24\16\0"+ + "\1\74\3\0\1\24\3\51\6\0\1\75\1\76\1\24"+ + "\3\0\1\77\1\0\1\100\12\0\1\101\1\24\1\102"+ + "\2\51\2\0\1\103\3\0\1\24\1\0\1\104\5\0"+ + "\1\105\6\0\1\24\1\106\1\51\3\0\1\107\1\110"+ + "\1\24\1\111\7\0\1\112\1\0\1\113\1\0\1\114"+ + "\1\0\1\115\1\0\1\24\10\0\1\116\2\0\1\24"+ + "\1\0\1\117\1\0\1\120\1\121\5\0\1\24\1\0"+ + "\1\122\2\0\1\123\2\0\1\24\1\0\1\124\1\125"+ + "\2\0\1\24\1\0\1\126\1\0\1\127\1\130\1\0"+ + "\1\131"; private static int [] zzUnpackAction() { - int [] result = new int[426]; + int [] result = new int[431]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -448,57 +450,57 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\u0498\0\u04c9\0\u04fa\0\u052b\0\u055c\0\u058d\0\u05be\0\u05ef"+ "\0\u0620\0\u0651\0\u0682\0\u06b3\0\u06e4\0\u0715\0\u0746\0\u0777"+ "\0\u07a8\0\u07d9\0\u080a\0\u083b\0\u086c\0\u089d\0\u08ce\0\u08ff"+ - "\0\u0651\0\u0651\0\u0930\0\u0961\0\u0992\0\u09c3\0\u09f4\0\u0651"+ - "\0\u0651\0\u0651\0\u0651\0\u0651\0\u0651\0\u0651\0\u0a25\0\u0a56"+ - "\0\u0651\0\u0a87\0\u0ab8\0\u0ae9\0\u0651\0\u0651\0\u0651\0\u0651"+ - "\0\u0b1a\0\u0651\0\u0b4b\0\u0651\0\u0651\0\u0b7c\0\u0bad\0\u0bde"+ - "\0\u0c0f\0\u0c40\0\u0c71\0\u0ca2\0\u0cd3\0\u0d04\0\u0d35\0\u0d66"+ - "\0\u0651\0\u0651\0\u0651\0\u0651\0\u0651\0\u0d97\0\u0dc8\0\u0df9"+ - "\0\u0e2a\0\u0651\0\u0e5b\0\u0e8c\0\u0651\0\u0ebd\0\u0eee\0\u0f1f"+ - "\0\u0f50\0\u0f81\0\u0651\0\u0fb2\0\u0fe3\0\u0651\0\u0651\0\u1014"+ - "\0\u09c3\0\u0651\0\u1045\0\u1076\0\u0651\0\u0651\0\u10a7\0\u10d8"+ - "\0\u1109\0\u0651\0\u113a\0\u116b\0\u119c\0\u11cd\0\u0651\0\u0651"+ - "\0\u11fe\0\u0715\0\u0715\0\u122f\0\u1260\0\u1291\0\u12c2\0\u12f3"+ - "\0\u1324\0\u1355\0\u08ff\0\u0651\0\u1386\0\u13b7\0\u13e8\0\u1419"+ - "\0\u0715\0\u144a\0\u147b\0\u14ac\0\u0ae9\0\u14dd\0\u150e\0\u153f"+ + "\0\u0930\0\u0682\0\u0682\0\u0961\0\u0992\0\u09c3\0\u09f4\0\u0a25"+ + "\0\u0682\0\u0682\0\u0682\0\u0682\0\u0682\0\u0682\0\u0682\0\u0a56"+ + "\0\u0a87\0\u0682\0\u0ab8\0\u0ae9\0\u0b1a\0\u0682\0\u0682\0\u0682"+ + "\0\u0682\0\u0b4b\0\u0682\0\u0b7c\0\u0682\0\u0682\0\u0bad\0\u0bde"+ + "\0\u0c0f\0\u0c40\0\u0c71\0\u0ca2\0\u0cd3\0\u0d04\0\u0682\0\u0d35"+ + "\0\u0d66\0\u0d97\0\u0682\0\u0dc8\0\u0682\0\u0682\0\u0682\0\u0df9"+ + "\0\u0e2a\0\u0e5b\0\u0e8c\0\u0682\0\u0ebd\0\u0eee\0\u0682\0\u0f1f"+ + "\0\u0f50\0\u0f81\0\u0fb2\0\u0fe3\0\u0682\0\u1014\0\u1045\0\u0682"+ + "\0\u0682\0\u1076\0\u09f4\0\u0682\0\u10a7\0\u10d8\0\u0682\0\u0682"+ + "\0\u1109\0\u113a\0\u116b\0\u0682\0\u119c\0\u11cd\0\u11fe\0\u122f"+ + "\0\u0682\0\u0682\0\u1260\0\u0746\0\u0746\0\u1291\0\u12c2\0\u12f3"+ + "\0\u1324\0\u1355\0\u1386\0\u13b7\0\u0930\0\u0682\0\u13e8\0\u1419"+ + "\0\u144a\0\u147b\0\u0746\0\u14ac\0\u14dd\0\u150e\0\u0b1a\0\u153f"+ "\0\u1570\0\u15a1\0\u15d2\0\u1603\0\u1634\0\u1665\0\u1696\0\u16c7"+ "\0\u16f8\0\u1729\0\u175a\0\u178b\0\u17bc\0\u17ed\0\u181e\0\u184f"+ - "\0\u1880\0\u18b1\0\u18e2\0\u1913\0\u1944\0\u1975\0\u0fe3\0\u0651"+ - "\0\u19a6\0\u19d7\0\u1a08\0\u1a39\0\u1a6a\0\u1a9b\0\u1acc\0\u1afd"+ - "\0\u1b2e\0\u1b5f\0\u1b90\0\u1bc1\0\u1bf2\0\u1c23\0\u1c54\0\u08ff"+ - "\0\u1c85\0\u1cb6\0\u1ce7\0\u1d18\0\u1d49\0\u1d7a\0\u1dab\0\u1ddc"+ + "\0\u1880\0\u18b1\0\u18e2\0\u1913\0\u1944\0\u1975\0\u19a6\0\u19d7"+ + "\0\u1a08\0\u1045\0\u0682\0\u1a39\0\u1a6a\0\u1a9b\0\u1acc\0\u1afd"+ + "\0\u1b2e\0\u1b5f\0\u1b90\0\u1bc1\0\u1bf2\0\u1c23\0\u1c54\0\u1c85"+ + "\0\u1cb6\0\u1ce7\0\u0930\0\u1d18\0\u1d49\0\u1d7a\0\u1dab\0\u1ddc"+ "\0\u1e0d\0\u1e3e\0\u1e6f\0\u1ea0\0\u1ed1\0\u1f02\0\u1f33\0\u1f64"+ - "\0\u1f95\0\u1fc6\0\u0651\0\u1ff7\0\u2028\0\u2059\0\u208a\0\u20bb"+ - "\0\u20ec\0\u211d\0\u214e\0\u217f\0\u21b0\0\u21e1\0\u2212\0\u0fe3"+ - "\0\u2243\0\u2274\0\u22a5\0\u22d6\0\u2307\0\u2338\0\u2369\0\u239a"+ - "\0\u23cb\0\u23fc\0\u242d\0\u245e\0\u0651\0\u248f\0\u24c0\0\u0651"+ - "\0\u24f1\0\u2522\0\u2553\0\u2584\0\u25b5\0\u25e6\0\u0651\0\u2617"+ - "\0\u2648\0\u2679\0\u26aa\0\u26db\0\u270c\0\u0651\0\u273d\0\u276e"+ - "\0\u0651\0\u0651\0\u279f\0\u0651\0\u27d0\0\u2801\0\u0651\0\u2832"+ - "\0\u2863\0\u2894\0\u28c5\0\u28f6\0\u09c3\0\u2927\0\u2958\0\u1109"+ - "\0\u2989\0\u1109\0\u29ba\0\u29eb\0\u2a1c\0\u2a4d\0\u2a7e\0\u2aaf"+ - "\0\u2ae0\0\u2b11\0\u2b42\0\u2b73\0\u2ba4\0\u2bd5\0\u2c06\0\u2c37"+ - "\0\u2c68\0\u2c99\0\u2cca\0\u2cfb\0\u2d2c\0\u2d5d\0\u2d8e\0\u2dbf"+ - "\0\u2df0\0\u0651\0\u2e21\0\u2e52\0\u2e83\0\u2eb4\0\u2ee5\0\u2f16"+ - "\0\u2f47\0\u2f78\0\u2fa9\0\u2fda\0\u300b\0\u303c\0\u306d\0\u0651"+ - "\0\u0651\0\u309e\0\u30cf\0\u3100\0\u3131\0\u0651\0\u3162\0\u0651"+ - "\0\u3193\0\u31c4\0\u31f5\0\u3226\0\u3257\0\u3288\0\u32b9\0\u32ea"+ - "\0\u331b\0\u334c\0\u0651\0\u337d\0\u1109\0\u33ae\0\u33df\0\u3410"+ - "\0\u3441\0\u0651\0\u3472\0\u34a3\0\u34d4\0\u3505\0\u3536\0\u0651"+ - "\0\u3567\0\u3598\0\u35c9\0\u35fa\0\u362b\0\u0651\0\u365c\0\u368d"+ - "\0\u36be\0\u36ef\0\u3720\0\u3751\0\u3782\0\u1109\0\u37b3\0\u37e4"+ - "\0\u3815\0\u3846\0\u0651\0\u0651\0\u3877\0\u0651\0\u38a8\0\u38d9"+ - "\0\u390a\0\u393b\0\u396c\0\u399d\0\u39ce\0\u0651\0\u39ff\0\u0651"+ - "\0\u3a30\0\u1109\0\u3a61\0\u0651\0\u3a92\0\u3ac3\0\u3af4\0\u3b25"+ - "\0\u3b56\0\u3b87\0\u3bb8\0\u3be9\0\u3c1a\0\u3c4b\0\u0651\0\u3c7c"+ - "\0\u3cad\0\u3cde\0\u3d0f\0\u0651\0\u3d40\0\u0651\0\u0651\0\u3d71"+ - "\0\u3da2\0\u3dd3\0\u3e04\0\u3e35\0\u3e66\0\u3e97\0\u0651\0\u3ec8"+ - "\0\u3ef9\0\u0651\0\u3f2a\0\u3f5b\0\u3f8c\0\u3fbd\0\u0651\0\u0651"+ - "\0\u3fee\0\u401f\0\u4050\0\u4081\0\u0651\0\u40b2\0\u0b1a\0\u0651"+ - "\0\u40e3\0\u0651"; + "\0\u1f95\0\u1fc6\0\u1ff7\0\u2028\0\u2059\0\u0682\0\u208a\0\u20bb"+ + "\0\u20ec\0\u211d\0\u214e\0\u217f\0\u21b0\0\u21e1\0\u2212\0\u2243"+ + "\0\u2274\0\u22a5\0\u22d6\0\u1045\0\u2307\0\u2338\0\u2369\0\u239a"+ + "\0\u23cb\0\u23fc\0\u242d\0\u245e\0\u248f\0\u24c0\0\u24f1\0\u2522"+ + "\0\u0682\0\u2553\0\u2584\0\u0682\0\u25b5\0\u25e6\0\u2617\0\u2648"+ + "\0\u2679\0\u26aa\0\u0682\0\u26db\0\u270c\0\u273d\0\u276e\0\u279f"+ + "\0\u27d0\0\u0682\0\u2801\0\u0682\0\u2832\0\u0682\0\u0682\0\u2863"+ + "\0\u0682\0\u2894\0\u28c5\0\u0682\0\u28f6\0\u2927\0\u2958\0\u2989"+ + "\0\u29ba\0\u09f4\0\u29eb\0\u2a1c\0\u116b\0\u2a4d\0\u116b\0\u2a7e"+ + "\0\u2aaf\0\u2ae0\0\u2b11\0\u2b42\0\u2b73\0\u2ba4\0\u2bd5\0\u2c06"+ + "\0\u2c37\0\u2c68\0\u2c99\0\u2cca\0\u2cfb\0\u2d2c\0\u2d5d\0\u2d8e"+ + "\0\u2dbf\0\u2df0\0\u2e21\0\u2e52\0\u2e83\0\u2eb4\0\u0682\0\u2ee5"+ + "\0\u2f16\0\u2f47\0\u2f78\0\u2fa9\0\u2fda\0\u300b\0\u303c\0\u306d"+ + "\0\u309e\0\u30cf\0\u3100\0\u3131\0\u0682\0\u0682\0\u3162\0\u3193"+ + "\0\u31c4\0\u31f5\0\u0682\0\u3226\0\u0682\0\u3257\0\u3288\0\u32b9"+ + "\0\u32ea\0\u331b\0\u334c\0\u337d\0\u33ae\0\u33df\0\u3410\0\u0682"+ + "\0\u3441\0\u116b\0\u3472\0\u34a3\0\u34d4\0\u3505\0\u0682\0\u3536"+ + "\0\u3567\0\u3598\0\u35c9\0\u35fa\0\u0682\0\u362b\0\u365c\0\u368d"+ + "\0\u36be\0\u36ef\0\u0682\0\u3720\0\u3751\0\u3782\0\u37b3\0\u37e4"+ + "\0\u3815\0\u3846\0\u116b\0\u3877\0\u38a8\0\u38d9\0\u390a\0\u0682"+ + "\0\u0682\0\u393b\0\u0682\0\u396c\0\u399d\0\u39ce\0\u39ff\0\u3a30"+ + "\0\u3a61\0\u3a92\0\u0682\0\u3ac3\0\u0682\0\u3af4\0\u116b\0\u3b25"+ + "\0\u0682\0\u3b56\0\u3b87\0\u3bb8\0\u3be9\0\u3c1a\0\u3c4b\0\u3c7c"+ + "\0\u3cad\0\u3cde\0\u3d0f\0\u0682\0\u3d40\0\u3d71\0\u3da2\0\u3dd3"+ + "\0\u0682\0\u3e04\0\u0682\0\u0682\0\u3e35\0\u3e66\0\u3e97\0\u3ec8"+ + "\0\u3ef9\0\u3f2a\0\u3f5b\0\u0682\0\u3f8c\0\u3fbd\0\u0682\0\u3fee"+ + "\0\u401f\0\u4050\0\u4081\0\u0682\0\u0682\0\u40b2\0\u40e3\0\u4114"+ + "\0\u4145\0\u0682\0\u4176\0\u0b4b\0\u0682\0\u41a7\0\u0682"; private static int [] zzUnpackRowMap() { - int [] result = new int[426]; + int [] result = new int[431]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -521,253 +523,255 @@ 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\42\1\43\1\44\1\45\1\42\1\43\1\42\1\46"+ - "\6\42\1\47\13\42\1\50\1\51\1\52\3\42\1\53"+ - "\3\42\1\54\4\42\1\55\10\42\1\43\1\56\1\57"+ - "\1\42\1\43\1\60\1\46\1\42\1\61\1\62\3\42"+ - "\1\47\16\42\1\63\12\42\1\64\1\42\1\65\6\42"+ - "\1\66\1\43\1\56\1\57\1\42\1\43\1\42\1\46"+ - "\1\66\3\42\2\66\1\67\1\42\1\70\1\42\3\66"+ - "\1\71\2\42\27\66\2\42\1\66\1\43\1\44\1\45"+ - "\1\42\1\43\1\42\1\46\1\66\2\42\1\72\2\66"+ - "\1\67\3\42\3\66\2\42\1\73\27\66\3\42\1\43"+ - "\1\44\1\45\1\42\1\43\1\42\1\46\6\42\1\47"+ - "\1\42\1\70\4\42\1\74\34\42\1\43\1\44\1\45"+ - "\1\42\1\43\1\42\1\46\6\42\1\47\10\42\1\75"+ - "\27\42\1\76\2\42\1\43\1\44\1\45\1\42\1\43"+ - "\1\42\1\46\6\42\1\47\13\42\1\77\7\42\1\100"+ - "\15\42\1\101\1\42\1\43\1\102\1\103\1\42\1\43"+ - "\1\42\1\46\1\104\5\42\1\47\1\42\1\70\1\42"+ - "\3\104\3\42\27\104\3\42\1\43\1\102\1\103\1\42"+ - "\1\43\1\42\1\46\6\42\1\47\1\42\1\70\4\42"+ - "\1\105\31\42\1\106\2\42\1\43\1\44\1\45\1\42"+ - "\1\43\1\42\1\46\6\42\1\47\40\42\1\107\1\110"+ - "\1\42\1\43\1\44\1\45\1\42\1\43\1\42\1\46"+ - "\1\111\4\42\1\112\1\47\3\42\3\111\3\42\10\111"+ - "\1\113\16\111\1\114\1\115\1\42\1\43\1\44\1\45"+ - "\1\42\1\43\1\42\1\46\6\42\1\47\11\42\1\116"+ - "\2\42\1\117\1\52\3\42\1\120\1\42\1\121\3\42"+ - "\1\122\1\42\1\123\1\124\3\42\1\125\2\42\1\115"+ - "\1\42\1\43\1\44\1\45\1\42\1\43\1\42\1\46"+ - "\6\42\1\47\25\42\1\126\5\42\1\127\1\130\3\42"+ - "\1\131\1\132\1\42\1\43\1\44\1\45\1\42\1\43"+ - "\1\42\1\46\1\111\4\42\1\112\1\47\1\42\1\133"+ - "\1\42\3\111\3\42\27\111\1\134\1\115\1\42\1\43"+ - "\1\44\1\45\1\42\1\43\1\42\1\46\5\42\1\135"+ - "\1\47\15\42\1\52\3\42\1\136\5\42\1\137\2\42"+ - "\1\140\5\42\1\131\1\115\1\42\1\43\1\56\1\57"+ - "\1\42\1\43\1\42\1\46\6\42\1\47\27\42\1\141"+ - "\13\42\1\43\1\44\1\45\1\42\1\43\1\42\1\46"+ - "\5\42\1\142\1\47\12\42\1\143\1\144\1\42\1\52"+ - "\11\42\1\137\10\42\1\131\1\115\1\42\1\43\1\44"+ - "\1\45\1\42\1\43\1\42\1\46\5\42\1\145\1\47"+ - "\13\42\1\146\1\147\15\42\1\150\1\151\4\42\1\131"+ - "\1\115\1\42\1\43\1\44\1\45\1\42\1\43\1\42"+ - "\1\46\1\152\4\42\1\112\1\47\3\42\3\152\3\42"+ - "\27\152\1\153\2\42\1\43\1\44\1\45\1\42\1\43"+ - "\1\42\1\46\1\154\5\42\1\47\3\42\3\154\3\42"+ - "\27\154\1\42\1\115\1\66\1\43\1\44\1\45\1\42"+ - "\1\43\1\155\1\46\1\66\1\61\1\62\1\72\2\66"+ - "\1\67\1\156\2\42\3\66\2\42\1\73\27\66\1\106"+ - "\2\42\1\43\1\44\1\45\1\42\1\43\1\42\1\46"+ - "\1\111\2\42\1\72\1\42\1\112\1\47\1\42\1\157"+ - "\1\42\3\111\3\42\10\111\1\160\16\111\1\106\1\115"+ - "\1\66\1\43\1\56\1\57\1\42\1\43\1\155\1\46"+ - "\1\161\1\61\1\62\1\162\2\66\1\67\1\156\2\42"+ - "\3\66\1\105\2\42\5\66\1\163\14\66\1\164\4\66"+ - "\1\42\1\165\1\66\1\43\1\56\1\57\1\42\1\43"+ - "\1\155\1\46\1\66\3\42\2\66\1\67\1\42\1\70"+ - "\1\42\3\66\1\166\2\42\27\66\2\42\1\66\1\43"+ - "\1\44\1\45\1\42\1\43\1\155\1\46\1\66\2\42"+ - "\1\72\2\66\1\67\3\42\3\66\2\42\1\73\27\66"+ - "\3\42\1\43\1\56\1\57\1\42\1\43\1\42\1\46"+ - "\1\104\5\42\1\47\1\42\1\70\1\42\3\104\3\42"+ - "\27\104\2\42\1\66\1\43\1\56\1\57\1\42\1\43"+ - "\1\155\1\46\1\66\1\61\1\62\1\42\2\66\1\67"+ - "\1\156\1\70\1\42\3\66\3\42\5\66\1\163\14\66"+ - "\1\164\4\66\3\42\1\43\1\56\1\57\1\42\1\43"+ - "\1\42\1\46\6\42\1\47\1\156\1\70\41\42\1\43"+ - "\1\167\1\170\1\42\1\43\1\42\1\46\1\171\4\42"+ - "\1\112\1\47\2\42\1\172\3\171\3\42\11\171\1\173"+ - "\1\171\1\174\5\171\1\175\1\176\4\171\3\42\1\43"+ - "\1\56\1\57\1\42\1\43\1\42\1\46\6\42\1\47"+ - "\1\177\1\70\4\42\1\200\34\42\1\43\1\44\1\45"+ - "\1\42\1\43\1\42\1\46\3\42\1\72\2\42\1\47"+ - "\1\177\7\42\1\73\32\42\1\43\1\42\1\43\1\42"+ - "\1\43\1\42\1\46\1\171\4\42\1\112\1\47\2\42"+ - "\1\172\3\171\3\42\13\171\1\174\13\171\2\42\1\66"+ - "\6\42\1\46\1\66\3\42\2\66\1\67\3\42\3\66"+ - "\3\42\27\66\1\131\1\115\62\0\1\43\1\0\1\43"+ - "\1\0\1\43\55\0\1\44\1\201\56\0\1\43\1\44"+ - "\1\43\1\0\1\43\53\0\2\202\1\0\56\202\16\0"+ - "\1\203\107\0\1\204\47\0\1\205\70\0\1\206\60\0"+ - "\1\207\44\0\1\210\64\0\1\211\26\0\1\56\1\212"+ - "\56\0\1\43\1\56\1\43\1\0\1\43\53\0\6\213"+ - "\1\214\17\213\1\215\32\213\30\0\1\216\64\0\1\217"+ - "\74\0\1\220\10\0\1\66\4\0\1\66\2\0\1\66"+ - "\3\0\3\66\3\0\3\66\3\0\27\66\2\0\1\66"+ - "\4\0\1\66\2\0\1\66\3\0\2\66\1\221\3\0"+ - "\3\66\3\0\27\66\47\0\1\222\60\0\1\223\15\0"+ - "\1\102\1\224\56\0\1\43\1\102\1\43\1\0\1\43"+ - "\53\0\1\225\7\0\1\225\4\0\1\226\4\0\3\225"+ - "\3\0\27\225\2\0\1\111\7\0\1\111\3\0\1\111"+ - "\1\0\1\111\3\0\3\111\3\0\27\111\2\0\1\111"+ - "\7\0\1\111\3\0\1\111\1\0\1\111\3\0\3\111"+ - "\3\0\13\111\1\227\13\111\33\0\1\230\63\0\1\231"+ - "\67\0\1\232\55\0\1\233\50\0\1\234\64\0\1\235"+ - "\77\0\1\236\56\0\1\237\37\0\1\240\70\0\1\241"+ - "\70\0\1\242\54\0\1\243\44\0\1\244\14\0\1\245"+ - "\47\0\1\246\54\0\1\247\72\0\1\250\63\0\1\251"+ - "\63\0\1\252\44\0\1\253\56\0\1\254\20\0\1\255"+ - "\44\0\1\256\21\0\1\152\7\0\1\152\3\0\1\152"+ - "\1\0\1\152\3\0\3\152\3\0\27\152\2\0\1\154"+ - "\7\0\1\154\3\0\1\154\1\0\1\154\3\0\3\154"+ - "\3\0\27\154\2\0\6\257\1\260\17\257\1\261\32\257"+ - "\1\111\7\0\1\111\3\0\1\111\1\0\1\111\3\0"+ - "\3\111\3\0\14\111\1\262\12\111\2\0\1\66\4\0"+ - "\1\66\2\0\1\66\3\0\3\66\3\0\3\66\3\0"+ - "\1\263\26\66\2\0\1\66\4\0\1\66\2\0\1\66"+ - "\3\0\3\66\3\0\3\66\3\0\20\66\1\264\6\66"+ - "\4\0\1\167\1\265\56\0\1\43\1\167\1\43\1\0"+ - "\1\43\53\0\1\171\7\0\1\171\3\0\1\171\1\0"+ - "\1\171\3\0\3\171\3\0\27\171\2\0\1\171\7\0"+ - "\1\171\3\0\1\171\1\0\1\171\3\0\3\171\3\0"+ - "\4\171\1\266\22\171\2\0\1\171\7\0\1\171\3\0"+ - "\1\171\1\0\1\171\3\0\3\171\3\0\15\171\1\267"+ - "\11\171\2\0\1\171\7\0\1\171\3\0\1\171\1\0"+ - "\1\171\3\0\3\171\3\0\4\171\1\270\22\171\2\0"+ - "\1\171\7\0\1\171\3\0\1\171\1\0\1\171\3\0"+ - "\3\171\3\0\7\171\1\271\17\171\4\0\1\44\122\0"+ - "\1\272\62\0\1\273\42\0\1\274\62\0\1\275\71\0"+ - "\1\276\65\0\1\277\12\0\1\56\56\0\6\213\1\300"+ - "\17\213\1\215\32\213\42\0\1\301\65\0\1\302\64\0"+ - "\1\303\51\0\1\304\44\0\1\305\32\0\1\102\66\0"+ - "\1\306\11\0\3\306\3\0\27\306\2\0\1\111\7\0"+ - "\1\111\3\0\1\111\1\0\1\111\3\0\3\111\3\0"+ - "\16\111\1\307\10\111\53\0\1\310\44\0\1\311\10\0"+ - "\1\273\60\0\1\312\56\0\1\313\4\0\1\314\57\0"+ - "\1\315\53\0\1\316\63\0\1\317\26\0\1\320\107\0"+ - "\1\321\60\0\1\322\57\0\1\323\70\0\1\324\60\0"+ - "\1\325\56\0\1\326\61\0\1\327\61\0\1\330\53\0"+ - "\1\331\56\0\1\332\62\0\1\333\55\0\1\334\55\0"+ - "\1\335\67\0\1\336\62\0\1\337\10\0\6\257\1\340"+ - "\17\257\1\261\32\257\1\111\7\0\1\111\3\0\1\111"+ - "\1\0\1\111\3\0\3\111\3\0\2\111\1\341\24\111"+ - "\2\0\1\66\4\0\1\66\2\0\1\66\3\0\3\66"+ - "\3\0\3\66\3\0\12\66\1\342\14\66\2\0\1\66"+ - "\4\0\1\66\2\0\1\66\3\0\3\66\3\0\3\66"+ - "\3\0\23\66\1\343\3\66\4\0\1\167\56\0\1\171"+ - "\7\0\1\171\3\0\1\171\1\0\1\171\3\0\3\171"+ - "\3\0\20\171\1\344\6\171\2\0\1\171\7\0\1\171"+ - "\3\0\1\171\1\0\1\171\3\0\3\171\3\0\3\171"+ - "\1\345\23\171\2\0\1\171\7\0\1\171\3\0\1\171"+ - "\1\0\1\171\3\0\3\171\3\0\12\171\1\346\5\171"+ - "\1\347\6\171\2\0\1\171\7\0\1\171\3\0\1\171"+ - "\1\0\1\171\3\0\3\171\3\0\10\171\1\350\16\171"+ - "\37\0\1\351\57\0\1\352\55\0\1\353\71\0\1\354"+ - "\52\0\1\355\100\0\1\356\55\0\1\303\62\0\1\357"+ - "\41\0\1\360\61\0\1\361\56\0\1\362\25\0\1\306"+ - "\7\0\1\306\4\0\1\226\4\0\3\306\3\0\27\306"+ - "\2\0\1\111\7\0\1\111\3\0\1\111\1\0\1\111"+ - "\3\0\3\111\3\0\12\111\1\363\14\111\54\0\1\364"+ - "\36\0\1\365\72\0\1\366\57\0\1\367\71\0\1\370"+ - "\36\0\1\371\75\0\1\372\47\0\1\373\63\0\1\374"+ - "\11\0\1\375\43\0\1\376\60\0\1\377\60\0\1\u0100"+ - "\63\0\1\u0101\73\0\1\u0102\57\0\1\u0103\46\0\1\u0104"+ - "\53\0\1\u0105\74\0\1\u0106\56\0\1\u0107\44\0\1\u0108"+ - "\64\0\1\u0109\60\0\1\u010a\60\0\1\u010b\24\0\1\111"+ - "\7\0\1\111\3\0\1\111\1\0\1\111\3\0\3\111"+ - "\3\0\12\111\1\u010c\14\111\2\0\1\66\4\0\1\66"+ - "\2\0\1\66\3\0\3\66\3\0\3\66\3\0\21\66"+ - "\1\343\5\66\2\0\1\66\4\0\1\66\2\0\1\66"+ - "\3\0\3\66\3\0\3\66\3\0\4\66\1\u010d\22\66"+ - "\2\0\1\171\7\0\1\171\3\0\1\171\1\0\1\171"+ - "\3\0\3\171\3\0\14\171\1\u010e\12\171\2\0\1\171"+ - "\7\0\1\171\3\0\1\171\1\0\1\171\3\0\3\171"+ - "\3\0\23\171\1\u010f\3\171\2\0\1\171\7\0\1\171"+ - "\3\0\1\171\1\0\1\171\3\0\3\171\3\0\5\171"+ - "\1\u0110\21\171\2\0\1\171\7\0\1\171\3\0\1\171"+ - "\1\0\1\171\3\0\3\171\3\0\24\171\1\u0111\2\171"+ - "\2\0\1\171\7\0\1\171\3\0\1\171\1\0\1\171"+ - "\3\0\3\171\3\0\21\171\1\u0112\5\171\42\0\1\u0113"+ - "\64\0\1\u0114\56\0\1\u0115\71\0\1\u0116\45\0\1\u0117"+ - "\60\0\1\u0118\60\0\1\u0119\54\0\1\u011a\24\0\1\111"+ - "\7\0\1\111\3\0\1\111\1\0\1\111\3\0\3\111"+ - "\3\0\4\111\1\u011b\22\111\52\0\1\u011c\63\0\1\u011d"+ - "\41\0\1\u011e\60\0\1\u011f\67\0\1\u0120\67\0\1\u0121"+ - "\56\0\1\u0122\40\0\1\u0123\64\0\1\u0124\71\0\1\u0125"+ - "\63\0\1\u0126\50\0\1\u0127\61\0\1\u0128\67\0\1\u0129"+ - "\66\0\1\u012a\35\0\1\u012b\75\0\1\u012c\40\0\1\u012d"+ - "\30\0\1\111\7\0\1\111\3\0\1\111\1\0\1\111"+ - "\3\0\3\111\3\0\23\111\1\u012e\3\111\2\0\1\171"+ - "\7\0\1\171\3\0\1\171\1\0\1\171\3\0\3\171"+ - "\3\0\4\171\1\u012f\22\171\2\0\1\171\7\0\1\171"+ - "\3\0\1\171\1\0\1\171\3\0\3\171\3\0\12\171"+ - "\1\u0130\14\171\2\0\1\171\7\0\1\171\3\0\1\171"+ - "\1\0\1\171\3\0\3\171\3\0\10\171\1\u0131\16\171"+ - "\40\0\1\u0132\55\0\1\u0133\61\0\1\u0134\57\0\1\u0135"+ - "\57\0\1\u0136\76\0\1\u0137\46\0\1\u0138\72\0\1\u0139"+ - "\10\0\1\111\7\0\1\111\3\0\1\111\1\0\1\111"+ - "\3\0\3\111\3\0\13\111\1\u013a\13\111\32\0\1\u013b"+ - "\72\0\1\u013c\61\0\1\u013d\61\0\1\u013e\50\0\1\u013f"+ - "\60\0\1\u0140\100\0\1\u0141\50\0\1\u0142\64\0\1\u0143"+ - "\63\0\1\u0144\37\0\1\u0145\73\0\1\u0146\53\0\1\u0147"+ - "\54\0\1\u0148\77\0\1\u0149\61\0\1\u014a\37\0\1\u014b"+ - "\25\0\1\111\7\0\1\111\3\0\1\111\1\0\1\111"+ - "\3\0\3\111\3\0\3\111\1\u014c\23\111\2\0\1\171"+ - "\7\0\1\171\3\0\1\171\1\0\1\171\3\0\3\171"+ - "\3\0\12\171\1\u014d\14\171\2\0\1\171\7\0\1\171"+ - "\3\0\1\171\1\0\1\171\3\0\3\171\3\0\4\171"+ - "\1\u014e\22\171\2\0\1\171\7\0\1\171\3\0\1\171"+ - "\1\0\1\171\3\0\3\171\3\0\2\171\1\u014f\24\171"+ - "\55\0\1\u0150\56\0\1\u0151\42\0\1\u0152\61\0\1\u0153"+ - "\60\0\1\u0154\60\0\1\u0155\24\0\1\111\7\0\1\111"+ - "\3\0\1\111\1\0\1\111\3\0\3\111\3\0\4\111"+ - "\1\u0156\22\111\34\0\1\u0157\100\0\1\u0158\42\0\1\u0159"+ - "\76\0\1\u015a\46\0\1\u015b\53\0\1\u015c\101\0\1\u015d"+ - "\56\0\1\u015e\42\0\1\u015f\70\0\1\u0160\60\0\1\u0161"+ - "\65\0\1\u0162\51\0\1\u0163\56\0\1\u0164\20\0\1\111"+ - "\7\0\1\111\3\0\1\111\1\0\1\111\3\0\3\111"+ - "\3\0\4\111\1\u0165\22\111\2\0\1\171\7\0\1\171"+ - "\3\0\1\171\1\0\1\171\3\0\3\171\3\0\21\171"+ - "\1\u0166\5\171\2\0\1\171\7\0\1\171\3\0\1\171"+ - "\1\0\1\171\3\0\3\171\3\0\4\171\1\u0167\22\171"+ - "\52\0\1\u0168\34\0\1\u0169\35\0\1\u016a\1\0\1\u016a"+ - "\1\0\1\u016a\124\0\1\u016b\42\0\1\u016c\25\0\1\111"+ - "\7\0\1\111\3\0\1\111\1\0\1\111\3\0\3\111"+ - "\3\0\14\111\1\u016d\12\111\54\0\1\u016e\52\0\1\u016f"+ - "\50\0\1\u0170\75\0\1\u0171\51\0\1\u0172\56\0\1\u0173"+ - "\66\0\1\u0174\34\0\1\u0175\74\0\1\u0176\73\0\1\u0177"+ - "\43\0\1\u0178\75\0\1\u0179\7\0\1\111\1\u016a\1\0"+ - "\1\u016a\1\0\1\u016a\2\0\1\111\3\0\1\111\1\0"+ - "\1\111\3\0\3\111\3\0\27\111\2\0\1\171\7\0"+ - "\1\171\3\0\1\171\1\0\1\171\3\0\3\171\3\0"+ - "\21\171\1\u017a\5\171\32\0\1\u017b\74\0\1\u017c\15\0"+ - "\1\u016a\1\0\1\u016a\1\0\1\u016a\42\0\1\u017d\10\0"+ - "\1\111\7\0\1\111\3\0\1\111\1\0\1\111\3\0"+ - "\3\111\3\0\22\111\1\u017e\4\111\54\0\1\u017f\56\0"+ - "\1\u0180\50\0\1\u0181\54\0\1\u0182\56\0\1\u0183\100\0"+ - "\1\u0184\63\0\1\u0185\43\0\1\u0186\54\0\1\u0187\76\0"+ - "\1\u0188\42\0\1\u0189\24\0\1\111\7\0\1\111\3\0"+ - "\1\111\1\0\1\111\3\0\3\111\3\0\1\u018a\26\111"+ - "\32\0\1\u018b\101\0\1\u018c\54\0\1\u018d\63\0\1\u018e"+ - "\44\0\1\u018f\71\0\1\u0190\43\0\1\u0191\75\0\1\u0192"+ - "\53\0\1\u0193\67\0\1\u0194\11\0\1\111\7\0\1\111"+ - "\3\0\1\111\1\0\1\111\3\0\3\111\3\0\22\111"+ - "\1\u0195\4\111\54\0\1\u0196\52\0\1\u0197\64\0\1\u0198"+ - "\60\0\1\u0199\54\0\1\u019a\61\0\1\u019b\66\0\1\u019c"+ - "\5\0\1\111\7\0\1\111\3\0\1\111\1\0\1\111"+ - "\3\0\3\111\3\0\10\111\1\u019d\16\111\42\0\1\u019e"+ - "\71\0\1\u019f\43\0\1\u01a0\70\0\1\u01a1\54\0\1\u01a2"+ - "\20\0\1\111\7\0\1\111\3\0\1\111\1\0\1\111"+ - "\3\0\3\111\3\0\15\111\1\u01a3\11\111\47\0\1\u01a4"+ - "\64\0\1\u01a5\57\0\1\u01a6\10\0\1\111\7\0\1\111"+ - "\3\0\1\111\1\0\1\111\3\0\3\111\3\0\14\111"+ - "\1\u01a7\12\111\46\0\1\u01a8\50\0\1\u01a9\57\0\1\u01aa"+ - "\25\0"; + "\1\43\1\44\1\45\1\46\1\43\1\44\1\43\1\47"+ + "\6\43\1\50\13\43\1\51\1\52\1\53\3\43\1\54"+ + "\3\43\1\55\4\43\1\56\10\43\1\44\1\57\1\60"+ + "\1\43\1\44\1\61\1\47\1\43\1\62\1\63\3\43"+ + "\1\50\16\43\1\64\12\43\1\65\1\43\1\66\6\43"+ + "\1\67\1\44\1\57\1\60\1\43\1\44\1\43\1\47"+ + "\1\67\3\43\2\67\1\70\1\43\1\71\1\43\3\67"+ + "\1\72\2\43\27\67\2\43\1\67\1\44\1\45\1\46"+ + "\1\43\1\44\1\43\1\47\1\67\2\43\1\73\2\67"+ + "\1\70\3\43\3\67\2\43\1\74\27\67\3\43\1\44"+ + "\1\45\1\46\1\43\1\44\1\43\1\47\6\43\1\50"+ + "\1\43\1\71\4\43\1\75\34\43\1\44\1\45\1\46"+ + "\1\43\1\44\1\43\1\47\6\43\1\50\10\43\1\76"+ + "\27\43\1\77\2\43\1\44\1\45\1\46\1\43\1\44"+ + "\1\43\1\47\6\43\1\50\13\43\1\100\7\43\1\101"+ + "\15\43\1\102\1\43\1\44\1\103\1\104\1\43\1\44"+ + "\1\43\1\47\1\105\5\43\1\50\1\43\1\71\1\43"+ + "\3\105\3\43\27\105\3\43\1\44\1\103\1\104\1\43"+ + "\1\44\1\43\1\47\6\43\1\50\1\43\1\71\4\43"+ + "\1\106\31\43\1\107\2\43\1\44\1\45\1\46\1\43"+ + "\1\44\1\43\1\47\6\43\1\50\40\43\1\110\1\111"+ + "\1\43\1\44\1\45\1\46\1\43\1\44\1\43\1\47"+ + "\1\112\4\43\1\113\1\50\3\43\3\112\3\43\10\112"+ + "\1\114\16\112\1\115\1\116\1\43\1\44\1\45\1\46"+ + "\1\43\1\44\1\43\1\47\6\43\1\50\11\43\1\117"+ + "\2\43\1\120\1\53\3\43\1\121\1\43\1\122\3\43"+ + "\1\123\1\43\1\124\1\125\3\43\1\126\2\43\1\116"+ + "\1\43\1\44\1\45\1\46\1\43\1\44\1\43\1\47"+ + "\5\43\1\127\1\50\25\43\1\130\5\43\1\131\1\132"+ + "\3\43\1\133\1\116\1\43\1\44\1\57\1\60\1\43"+ + "\1\44\1\43\1\47\6\43\1\50\25\43\1\134\15\43"+ + "\1\44\1\45\1\46\1\43\1\44\1\43\1\47\1\112"+ + "\4\43\1\113\1\50\1\43\1\135\1\43\3\112\3\43"+ + "\27\112\1\136\1\116\1\43\1\44\1\45\1\46\1\43"+ + "\1\44\1\43\1\47\5\43\1\137\1\50\15\43\1\53"+ + "\3\43\1\140\5\43\1\141\2\43\1\142\5\43\1\133"+ + "\1\116\1\43\1\44\1\57\1\60\1\43\1\44\1\43"+ + "\1\47\6\43\1\50\27\43\1\143\13\43\1\44\1\45"+ + "\1\46\1\43\1\44\1\43\1\47\5\43\1\144\1\50"+ + "\12\43\1\145\1\146\1\43\1\53\11\43\1\141\10\43"+ + "\1\133\1\116\1\43\1\44\1\45\1\46\1\43\1\44"+ + "\1\43\1\47\5\43\1\147\1\50\13\43\1\150\1\151"+ + "\15\43\1\152\1\153\4\43\1\133\1\116\1\43\1\44"+ + "\1\45\1\46\1\43\1\44\1\43\1\47\1\154\4\43"+ + "\1\113\1\50\3\43\3\154\3\43\27\154\1\155\2\43"+ + "\1\44\1\45\1\46\1\43\1\44\1\43\1\47\1\156"+ + "\5\43\1\50\3\43\3\156\3\43\27\156\1\43\1\116"+ + "\1\67\1\44\1\45\1\46\1\43\1\44\1\157\1\47"+ + "\1\67\1\62\1\63\1\73\2\67\1\70\1\160\2\43"+ + "\3\67\2\43\1\74\27\67\1\107\2\43\1\44\1\45"+ + "\1\46\1\43\1\44\1\43\1\47\1\112\2\43\1\73"+ + "\1\43\1\113\1\50\1\43\1\161\1\43\3\112\3\43"+ + "\10\112\1\162\16\112\1\107\1\116\1\67\1\44\1\57"+ + "\1\60\1\43\1\44\1\157\1\47\1\163\1\62\1\63"+ + "\1\164\2\67\1\70\1\160\2\43\3\67\1\106\2\43"+ + "\5\67\1\165\14\67\1\166\4\67\1\43\1\167\1\67"+ + "\1\44\1\57\1\60\1\43\1\44\1\157\1\47\1\67"+ + "\3\43\2\67\1\70\1\43\1\71\1\43\3\67\1\170"+ + "\2\43\27\67\2\43\1\67\1\44\1\45\1\46\1\43"+ + "\1\44\1\157\1\47\1\67\2\43\1\73\2\67\1\70"+ + "\3\43\3\67\2\43\1\74\27\67\3\43\1\44\1\57"+ + "\1\60\1\43\1\44\1\43\1\47\1\105\5\43\1\50"+ + "\1\43\1\71\1\43\3\105\3\43\27\105\2\43\1\67"+ + "\1\44\1\57\1\60\1\43\1\44\1\157\1\47\1\67"+ + "\1\62\1\63\1\43\2\67\1\70\1\160\1\71\1\43"+ + "\3\67\3\43\5\67\1\165\14\67\1\166\4\67\3\43"+ + "\1\44\1\57\1\60\1\43\1\44\1\43\1\47\6\43"+ + "\1\50\1\160\1\71\41\43\1\44\1\171\1\172\1\43"+ + "\1\44\1\43\1\47\1\173\4\43\1\113\1\50\2\43"+ + "\1\174\3\173\3\43\11\173\1\175\1\173\1\176\5\173"+ + "\1\177\1\200\4\173\3\43\1\44\1\57\1\60\1\43"+ + "\1\44\1\43\1\47\6\43\1\50\1\201\1\71\4\43"+ + "\1\202\34\43\1\44\1\45\1\46\1\43\1\44\1\43"+ + "\1\47\3\43\1\73\2\43\1\50\1\201\7\43\1\74"+ + "\32\43\1\44\1\43\1\44\1\43\1\44\1\43\1\47"+ + "\1\173\4\43\1\113\1\50\2\43\1\174\3\173\3\43"+ + "\13\173\1\176\13\173\2\43\1\67\6\43\1\47\1\67"+ + "\3\43\2\67\1\70\3\43\3\67\3\43\27\67\1\133"+ + "\1\116\62\0\1\44\1\0\1\44\1\0\1\44\55\0"+ + "\1\45\1\203\56\0\1\44\1\45\1\44\1\0\1\44"+ + "\53\0\2\204\1\0\56\204\16\0\1\205\107\0\1\206"+ + "\47\0\1\207\70\0\1\210\60\0\1\211\44\0\1\212"+ + "\64\0\1\213\26\0\1\57\1\214\56\0\1\44\1\57"+ + "\1\44\1\0\1\44\53\0\6\215\1\216\17\215\1\217"+ + "\32\215\30\0\1\220\64\0\1\221\74\0\1\222\10\0"+ + "\1\67\4\0\1\67\2\0\1\67\3\0\3\67\3\0"+ + "\3\67\3\0\27\67\2\0\1\67\4\0\1\67\2\0"+ + "\1\67\3\0\2\67\1\223\3\0\3\67\3\0\27\67"+ + "\47\0\1\224\60\0\1\225\15\0\1\103\1\226\56\0"+ + "\1\44\1\103\1\44\1\0\1\44\53\0\1\227\7\0"+ + "\1\227\4\0\1\230\4\0\3\227\3\0\27\227\2\0"+ + "\1\112\7\0\1\112\3\0\1\112\1\0\1\112\3\0"+ + "\3\112\3\0\27\112\2\0\1\112\7\0\1\112\3\0"+ + "\1\112\1\0\1\112\3\0\3\112\3\0\13\112\1\231"+ + "\13\112\33\0\1\232\63\0\1\233\67\0\1\234\55\0"+ + "\1\235\50\0\1\236\64\0\1\237\77\0\1\240\56\0"+ + "\1\241\37\0\1\242\70\0\1\243\70\0\1\244\40\0"+ + "\1\245\74\0\1\246\44\0\1\247\14\0\1\250\47\0"+ + "\1\251\54\0\1\252\72\0\1\253\63\0\1\254\63\0"+ + "\1\255\44\0\1\256\56\0\1\257\20\0\1\260\44\0"+ + "\1\261\21\0\1\154\7\0\1\154\3\0\1\154\1\0"+ + "\1\154\3\0\3\154\3\0\27\154\2\0\1\156\7\0"+ + "\1\156\3\0\1\156\1\0\1\156\3\0\3\156\3\0"+ + "\27\156\2\0\6\262\1\263\17\262\1\264\32\262\1\112"+ + "\7\0\1\112\3\0\1\112\1\0\1\112\3\0\3\112"+ + "\3\0\14\112\1\265\12\112\2\0\1\67\4\0\1\67"+ + "\2\0\1\67\3\0\3\67\3\0\3\67\3\0\1\266"+ + "\26\67\2\0\1\67\4\0\1\67\2\0\1\67\3\0"+ + "\3\67\3\0\3\67\3\0\20\67\1\267\6\67\4\0"+ + "\1\171\1\270\56\0\1\44\1\171\1\44\1\0\1\44"+ + "\53\0\1\173\7\0\1\173\3\0\1\173\1\0\1\173"+ + "\3\0\3\173\3\0\27\173\2\0\1\173\7\0\1\173"+ + "\3\0\1\173\1\0\1\173\3\0\3\173\3\0\4\173"+ + "\1\271\22\173\2\0\1\173\7\0\1\173\3\0\1\173"+ + "\1\0\1\173\3\0\3\173\3\0\15\173\1\272\11\173"+ + "\2\0\1\173\7\0\1\173\3\0\1\173\1\0\1\173"+ + "\3\0\3\173\3\0\4\173\1\273\22\173\2\0\1\173"+ + "\7\0\1\173\3\0\1\173\1\0\1\173\3\0\3\173"+ + "\3\0\7\173\1\274\17\173\4\0\1\45\122\0\1\275"+ + "\62\0\1\276\42\0\1\277\62\0\1\300\71\0\1\301"+ + "\65\0\1\302\12\0\1\57\56\0\6\215\1\303\17\215"+ + "\1\217\32\215\42\0\1\304\65\0\1\305\64\0\1\306"+ + "\51\0\1\307\44\0\1\310\32\0\1\103\66\0\1\311"+ + "\11\0\3\311\3\0\27\311\2\0\1\112\7\0\1\112"+ + "\3\0\1\112\1\0\1\112\3\0\3\112\3\0\16\112"+ + "\1\312\10\112\53\0\1\313\44\0\1\314\10\0\1\276"+ + "\60\0\1\315\56\0\1\316\4\0\1\317\57\0\1\320"+ + "\53\0\1\321\63\0\1\322\26\0\1\323\107\0\1\324"+ + "\60\0\1\325\57\0\1\326\61\0\1\327\67\0\1\330"+ + "\60\0\1\331\56\0\1\332\61\0\1\333\61\0\1\334"+ + "\53\0\1\335\56\0\1\336\62\0\1\337\55\0\1\340"+ + "\55\0\1\341\67\0\1\342\62\0\1\343\10\0\6\262"+ + "\1\344\17\262\1\264\32\262\1\112\7\0\1\112\3\0"+ + "\1\112\1\0\1\112\3\0\3\112\3\0\2\112\1\345"+ + "\24\112\2\0\1\67\4\0\1\67\2\0\1\67\3\0"+ + "\3\67\3\0\3\67\3\0\12\67\1\346\14\67\2\0"+ + "\1\67\4\0\1\67\2\0\1\67\3\0\3\67\3\0"+ + "\3\67\3\0\23\67\1\347\3\67\4\0\1\171\56\0"+ + "\1\173\7\0\1\173\3\0\1\173\1\0\1\173\3\0"+ + "\3\173\3\0\20\173\1\350\6\173\2\0\1\173\7\0"+ + "\1\173\3\0\1\173\1\0\1\173\3\0\3\173\3\0"+ + "\3\173\1\351\23\173\2\0\1\173\7\0\1\173\3\0"+ + "\1\173\1\0\1\173\3\0\3\173\3\0\12\173\1\352"+ + "\5\173\1\353\6\173\2\0\1\173\7\0\1\173\3\0"+ + "\1\173\1\0\1\173\3\0\3\173\3\0\10\173\1\354"+ + "\16\173\37\0\1\355\57\0\1\356\55\0\1\357\71\0"+ + "\1\360\52\0\1\361\100\0\1\362\55\0\1\306\62\0"+ + "\1\363\41\0\1\364\61\0\1\365\56\0\1\366\25\0"+ + "\1\311\7\0\1\311\4\0\1\230\4\0\3\311\3\0"+ + "\27\311\2\0\1\112\7\0\1\112\3\0\1\112\1\0"+ + "\1\112\3\0\3\112\3\0\12\112\1\367\14\112\54\0"+ + "\1\370\36\0\1\371\72\0\1\372\57\0\1\373\71\0"+ + "\1\374\36\0\1\375\75\0\1\376\47\0\1\377\63\0"+ + "\1\u0100\11\0\1\u0101\43\0\1\u0102\60\0\1\u0103\60\0"+ + "\1\u0104\60\0\1\u0105\63\0\1\u0106\73\0\1\u0107\57\0"+ + "\1\u0108\46\0\1\u0109\53\0\1\u010a\74\0\1\u010b\56\0"+ + "\1\u010c\44\0\1\u010d\64\0\1\u010e\60\0\1\u010f\60\0"+ + "\1\u0110\24\0\1\112\7\0\1\112\3\0\1\112\1\0"+ + "\1\112\3\0\3\112\3\0\12\112\1\u0111\14\112\2\0"+ + "\1\67\4\0\1\67\2\0\1\67\3\0\3\67\3\0"+ + "\3\67\3\0\21\67\1\347\5\67\2\0\1\67\4\0"+ + "\1\67\2\0\1\67\3\0\3\67\3\0\3\67\3\0"+ + "\4\67\1\u0112\22\67\2\0\1\173\7\0\1\173\3\0"+ + "\1\173\1\0\1\173\3\0\3\173\3\0\14\173\1\u0113"+ + "\12\173\2\0\1\173\7\0\1\173\3\0\1\173\1\0"+ + "\1\173\3\0\3\173\3\0\23\173\1\u0114\3\173\2\0"+ + "\1\173\7\0\1\173\3\0\1\173\1\0\1\173\3\0"+ + "\3\173\3\0\5\173\1\u0115\21\173\2\0\1\173\7\0"+ + "\1\173\3\0\1\173\1\0\1\173\3\0\3\173\3\0"+ + "\24\173\1\u0116\2\173\2\0\1\173\7\0\1\173\3\0"+ + "\1\173\1\0\1\173\3\0\3\173\3\0\21\173\1\u0117"+ + "\5\173\42\0\1\u0118\64\0\1\u0119\56\0\1\u011a\71\0"+ + "\1\u011b\45\0\1\u011c\60\0\1\u011d\60\0\1\u011e\54\0"+ + "\1\u011f\24\0\1\112\7\0\1\112\3\0\1\112\1\0"+ + "\1\112\3\0\3\112\3\0\4\112\1\u0120\22\112\52\0"+ + "\1\u0121\63\0\1\u0122\41\0\1\u0123\60\0\1\u0124\67\0"+ + "\1\u0125\67\0\1\u0126\56\0\1\u0127\40\0\1\u0128\64\0"+ + "\1\u0129\71\0\1\u012a\63\0\1\u012b\50\0\1\u012c\61\0"+ + "\1\u012d\67\0\1\u012e\66\0\1\u012f\35\0\1\u0130\75\0"+ + "\1\u0131\40\0\1\u0132\30\0\1\112\7\0\1\112\3\0"+ + "\1\112\1\0\1\112\3\0\3\112\3\0\23\112\1\u0133"+ + "\3\112\2\0\1\173\7\0\1\173\3\0\1\173\1\0"+ + "\1\173\3\0\3\173\3\0\4\173\1\u0134\22\173\2\0"+ + "\1\173\7\0\1\173\3\0\1\173\1\0\1\173\3\0"+ + "\3\173\3\0\12\173\1\u0135\14\173\2\0\1\173\7\0"+ + "\1\173\3\0\1\173\1\0\1\173\3\0\3\173\3\0"+ + "\10\173\1\u0136\16\173\40\0\1\u0137\55\0\1\u0138\61\0"+ + "\1\u0139\57\0\1\u013a\57\0\1\u013b\76\0\1\u013c\46\0"+ + "\1\u013d\72\0\1\u013e\10\0\1\112\7\0\1\112\3\0"+ + "\1\112\1\0\1\112\3\0\3\112\3\0\13\112\1\u013f"+ + "\13\112\32\0\1\u0140\72\0\1\u0141\61\0\1\u0142\61\0"+ + "\1\u0143\50\0\1\u0144\60\0\1\u0145\100\0\1\u0146\50\0"+ + "\1\u0147\64\0\1\u0148\63\0\1\u0149\37\0\1\u014a\73\0"+ + "\1\u014b\53\0\1\u014c\54\0\1\u014d\77\0\1\u014e\61\0"+ + "\1\u014f\37\0\1\u0150\25\0\1\112\7\0\1\112\3\0"+ + "\1\112\1\0\1\112\3\0\3\112\3\0\3\112\1\u0151"+ + "\23\112\2\0\1\173\7\0\1\173\3\0\1\173\1\0"+ + "\1\173\3\0\3\173\3\0\12\173\1\u0152\14\173\2\0"+ + "\1\173\7\0\1\173\3\0\1\173\1\0\1\173\3\0"+ + "\3\173\3\0\4\173\1\u0153\22\173\2\0\1\173\7\0"+ + "\1\173\3\0\1\173\1\0\1\173\3\0\3\173\3\0"+ + "\2\173\1\u0154\24\173\55\0\1\u0155\56\0\1\u0156\42\0"+ + "\1\u0157\61\0\1\u0158\60\0\1\u0159\60\0\1\u015a\24\0"+ + "\1\112\7\0\1\112\3\0\1\112\1\0\1\112\3\0"+ + "\3\112\3\0\4\112\1\u015b\22\112\34\0\1\u015c\100\0"+ + "\1\u015d\42\0\1\u015e\76\0\1\u015f\46\0\1\u0160\53\0"+ + "\1\u0161\101\0\1\u0162\56\0\1\u0163\42\0\1\u0164\70\0"+ + "\1\u0165\60\0\1\u0166\65\0\1\u0167\51\0\1\u0168\56\0"+ + "\1\u0169\20\0\1\112\7\0\1\112\3\0\1\112\1\0"+ + "\1\112\3\0\3\112\3\0\4\112\1\u016a\22\112\2\0"+ + "\1\173\7\0\1\173\3\0\1\173\1\0\1\173\3\0"+ + "\3\173\3\0\21\173\1\u016b\5\173\2\0\1\173\7\0"+ + "\1\173\3\0\1\173\1\0\1\173\3\0\3\173\3\0"+ + "\4\173\1\u016c\22\173\52\0\1\u016d\34\0\1\u016e\35\0"+ + "\1\u016f\1\0\1\u016f\1\0\1\u016f\124\0\1\u0170\42\0"+ + "\1\u0171\25\0\1\112\7\0\1\112\3\0\1\112\1\0"+ + "\1\112\3\0\3\112\3\0\14\112\1\u0172\12\112\54\0"+ + "\1\u0173\52\0\1\u0174\50\0\1\u0175\75\0\1\u0176\51\0"+ + "\1\u0177\56\0\1\u0178\66\0\1\u0179\34\0\1\u017a\74\0"+ + "\1\u017b\73\0\1\u017c\43\0\1\u017d\75\0\1\u017e\7\0"+ + "\1\112\1\u016f\1\0\1\u016f\1\0\1\u016f\2\0\1\112"+ + "\3\0\1\112\1\0\1\112\3\0\3\112\3\0\27\112"+ + "\2\0\1\173\7\0\1\173\3\0\1\173\1\0\1\173"+ + "\3\0\3\173\3\0\21\173\1\u017f\5\173\32\0\1\u0180"+ + "\74\0\1\u0181\15\0\1\u016f\1\0\1\u016f\1\0\1\u016f"+ + "\42\0\1\u0182\10\0\1\112\7\0\1\112\3\0\1\112"+ + "\1\0\1\112\3\0\3\112\3\0\22\112\1\u0183\4\112"+ + "\54\0\1\u0184\56\0\1\u0185\50\0\1\u0186\54\0\1\u0187"+ + "\56\0\1\u0188\100\0\1\u0189\63\0\1\u018a\43\0\1\u018b"+ + "\54\0\1\u018c\76\0\1\u018d\42\0\1\u018e\24\0\1\112"+ + "\7\0\1\112\3\0\1\112\1\0\1\112\3\0\3\112"+ + "\3\0\1\u018f\26\112\32\0\1\u0190\101\0\1\u0191\54\0"+ + "\1\u0192\63\0\1\u0193\44\0\1\u0194\71\0\1\u0195\43\0"+ + "\1\u0196\75\0\1\u0197\53\0\1\u0198\67\0\1\u0199\11\0"+ + "\1\112\7\0\1\112\3\0\1\112\1\0\1\112\3\0"+ + "\3\112\3\0\22\112\1\u019a\4\112\54\0\1\u019b\52\0"+ + "\1\u019c\64\0\1\u019d\60\0\1\u019e\54\0\1\u019f\61\0"+ + "\1\u01a0\66\0\1\u01a1\5\0\1\112\7\0\1\112\3\0"+ + "\1\112\1\0\1\112\3\0\3\112\3\0\10\112\1\u01a2"+ + "\16\112\42\0\1\u01a3\71\0\1\u01a4\43\0\1\u01a5\70\0"+ + "\1\u01a6\54\0\1\u01a7\20\0\1\112\7\0\1\112\3\0"+ + "\1\112\1\0\1\112\3\0\3\112\3\0\15\112\1\u01a8"+ + "\11\112\47\0\1\u01a9\64\0\1\u01aa\57\0\1\u01ab\10\0"+ + "\1\112\7\0\1\112\3\0\1\112\1\0\1\112\3\0"+ + "\3\112\3\0\14\112\1\u01ac\12\112\46\0\1\u01ad\50\0"+ + "\1\u01ae\57\0\1\u01af\25\0"; private static int [] zzUnpacktrans() { - int [] result = new int[16660]; + int [] result = new int[16856]; int offset = 0; offset = zzUnpacktrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -805,27 +809,28 @@ 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 = - "\41\0\1\11\16\1\2\11\5\1\7\11\2\1\1\11"+ - "\3\1\4\11\1\1\1\11\1\1\2\11\13\1\5\11"+ - "\4\1\1\11\2\1\1\11\5\1\1\11\2\1\2\11"+ - "\2\1\1\11\2\1\2\11\3\1\1\11\4\1\2\11"+ - "\1\0\1\1\11\0\1\11\4\0\1\1\5\0\1\1"+ - "\30\0\1\11\1\0\3\1\1\0\4\1\6\0\1\1"+ - "\5\0\2\1\13\0\1\11\14\0\11\1\4\0\1\11"+ - "\2\0\1\11\2\0\1\1\3\0\1\11\6\0\1\11"+ - "\2\0\2\11\1\0\1\11\2\0\1\11\4\0\7\1"+ - "\10\0\1\1\16\0\1\11\3\0\4\1\6\0\2\11"+ - "\1\1\3\0\1\11\1\0\1\11\12\0\1\11\4\1"+ - "\2\0\1\11\3\0\1\1\1\0\1\11\5\0\1\11"+ - "\6\0\3\1\3\0\2\11\1\1\1\11\7\0\1\11"+ - "\1\0\1\11\1\0\1\1\1\0\1\11\1\0\1\1"+ - "\10\0\1\11\2\0\1\1\1\0\1\11\1\0\2\11"+ - "\5\0\1\1\1\0\1\11\2\0\1\11\2\0\1\1"+ - "\1\0\2\11\2\0\1\1\1\0\1\11\1\0\1\1"+ - "\1\11\1\0\1\11"; + "\42\0\1\11\16\1\2\11\5\1\7\11\2\1\1\11"+ + "\3\1\4\11\1\1\1\11\1\1\2\11\10\1\1\11"+ + "\3\1\1\11\1\1\3\11\4\1\1\11\2\1\1\11"+ + "\5\1\1\11\2\1\2\11\2\1\1\11\2\1\2\11"+ + "\3\1\1\11\4\1\2\11\1\0\1\1\11\0\1\11"+ + "\4\0\1\1\5\0\1\1\31\0\1\11\1\0\3\1"+ + "\1\0\4\1\6\0\1\1\5\0\2\1\13\0\1\11"+ + "\15\0\11\1\4\0\1\11\2\0\1\11\2\0\1\1"+ + "\3\0\1\11\6\0\1\11\1\0\1\11\1\0\2\11"+ + "\1\0\1\11\2\0\1\11\4\0\7\1\10\0\1\1"+ + "\16\0\1\11\3\0\4\1\6\0\2\11\1\1\3\0"+ + "\1\11\1\0\1\11\12\0\1\11\4\1\2\0\1\11"+ + "\3\0\1\1\1\0\1\11\5\0\1\11\6\0\3\1"+ + "\3\0\2\11\1\1\1\11\7\0\1\11\1\0\1\11"+ + "\1\0\1\1\1\0\1\11\1\0\1\1\10\0\1\11"+ + "\2\0\1\1\1\0\1\11\1\0\2\11\5\0\1\1"+ + "\1\0\1\11\2\0\1\11\2\0\1\1\1\0\2\11"+ + "\2\0\1\1\1\0\1\11\1\0\1\1\1\11\1\0"+ + "\1\11"; private static int [] zzUnpackAttribute() { - int [] result = new int[426]; + int [] result = new int[431]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1209,445 +1214,450 @@ else if (zzAtEOF) { { return BAD_CHARACTER; } // fall through - case 89: break; + case 90: break; case 2: { return WHITE_SPACE; } // fall through - case 90: break; + case 91: break; case 3: { yypopState(); return WHITE_SPACE; } // fall through - case 91: break; + case 92: break; case 4: { return OAP_LEFTPAREN; } // fall through - case 92: break; + case 93: break; case 5: { return OAP_RIGHTPAREN; } // fall through - case 93: break; + case 94: break; case 6: { return OAP_KEY_VALUE; } // fall through - case 94: break; + case 95: break; case 7: { return OAP_EQ; } // fall through - case 95: break; + case 96: break; case 8: { yypushState(DEPENDS_ON_IN); return OAP_LEFTBRACKET; } // fall through - case 96: break; + case 97: break; case 9: { return OAP_COMMA; } // fall through - case 97: break; + case 98: break; case 10: { yypopState(); return OAP_RIGHTBRACKET; } // fall through - case 98: break; + case 99: break; case 11: { yybegin(CONFIGURATIONS_OBJECTS); return OAP_LEFTBRACKET; } // fall through - case 99: break; + case 100: break; case 12: { yybegin(YYINITIAL); return OAP_RIGHTBRACKET; } // fall through - case 100: break; + case 101: break; case 13: { yybegin(CONFIGURATIONS_OBJECT); return OAP_LEFTBRACE; } // fall through - case 101: break; + case 102: break; case 14: { yybegin(CONFIGURATIONS_OBJECTS); return OAP_RIGHTBRACE; } // fall through - case 102: break; + case 103: break; case 15: { yybegin(CONFIGURATIONS_OBJECT); return WHITE_SPACE; } // fall through - case 103: break; + case 104: break; case 16: { yypushState(_ARRAY); return OAP_LEFTBRACKET; } // fall through - case 104: break; + case 105: break; case 17: { yypushState(_OBJECT); return OAP_LEFTBRACE; } // fall through - case 105: break; + case 106: break; case 18: { yybegin(SERVICES_IN); return OAP_LEFTBRACE; } // fall through - case 106: break; + case 107: break; case 19: { yybegin(YYINITIAL); return OAP_RIGHTBRACE; } // fall through - case 107: break; + case 108: break; case 20: { return OAP_KEY_NAME; } // fall through - case 108: break; + case 109: break; case 21: { return OAP_DOT; } // fall through - case 109: break; + case 110: break; case 22: { yypushState(SERVICES_SERVICE); return OAP_LEFTBRACE; } // fall through - case 110: break; + case 111: break; case 23: { yypopState(); return OAP_RIGHTBRACE; } // fall through - case 111: break; + case 112: break; case 24: - { return OAP_LEFTBRACE; + { yybegin(SERVICES_SERVICE_REMOTE_DOT_NAME); return OAP_DOT; } // fall through - case 112: break; + case 113: break; case 25: - { yybegin(SERVICES_SERVICE); return OAP_RIGHTBRACE; + { return OAP_LEFTBRACE; } // fall through - case 113: break; + case 114: break; case 26: { yypopState(); yypushState(_OBJECT_ENTITY); return OAP_EQ; } // fall through - case 114: break; + case 115: break; case 27: { yypopState(); yypushState(_OBJECT); return OAP_LEFTBRACE; } // fall through - case 115: break; + case 116: break; case 28: { yybegin(SERVICES_SERVICE_WS_SERVICE_DOT_PATH); return OAP_DOT; } // fall through - case 116: break; + case 117: break; case 29: { yybegin(SERVICES_SERVICE_WS_HANDLER_DOT_PATH); return OAP_DOT; } // fall through - case 117: break; + case 118: break; case 30: { yypopState(); yybegin(SERVICES_SERVICE_SUPERVISION); return OAP_DOT; } // fall through - case 118: break; + case 119: break; case 31: { yypopState(); yypushState(_VALUE_REFERENCE); return OAP_KEY_NAME; } // fall through - case 119: break; + case 120: break; case 32: { yypopState(); yypushState(LISTEN_IN); return OAP_LEFTBRACE; } // fall through - case 120: break; + case 121: break; case 33: { yypushState(_VALUE_REFERENCE); return OAP_KEY_NAME; } // fall through - case 121: break; + case 122: break; case 34: { yypushState(VALUE_REFERENCE); return OAP_LEFTANGLE; } // fall through - case 122: break; + case 123: break; case 35: { yypushState(_OBJECT_ENTITY); return OAP_EQ; } // fall through - case 123: break; + case 124: break; case 36: { yypushState(_ENV); return OAP_DOLLAR; } // fall through - case 124: break; + case 125: break; case 37: { yypopState(); return OAP_COMMA; } // fall through - case 125: break; + case 126: break; case 38: { yypopState(); yypushback(1); } // fall through - case 126: break; + case 127: break; case 39: { yypushState(KEY_VALUE_SINGLE_OR_ARRAY_ARRAY); return OAP_LEFTBRACKET; } // fall through - case 127: break; + case 128: break; case 40: { yypushback(yytext().length()); yypopState(); return WHITE_SPACE; } // fall through - case 128: break; + case 129: break; case 41: { return OAP_REFERENCE_VALUE; } // fall through - case 129: break; + case 130: break; case 42: { yypopState(); return OAP_RIGHTANGLE; } // fall through - case 130: break; + case 131: break; case 43: { yypushState(MODULE_REFERENCE); return OAP_LEFTANGLE; } // fall through - case 131: break; + case 132: break; case 44: { yypushState(KEY_VALUE_MODULE_REFERENCE_SINGLE_OR_ARRAY_ARRAY); return OAP_LEFTBRACKET; } // fall through - case 132: break; + case 133: break; case 45: { return OAP_COMMENT; } // fall through - case 133: break; + case 134: break; case 46: { return OAP_INCLUDE_RESOURCE_NAME; } // fall through - case 134: break; + case 135: break; case 47: { return OAP_CLASS_NAME; } // fall through - case 135: break; + case 136: break; case 48: { yypushState(KEY_VALUE_STRING); return OAP_ID_URL; } // fall through - case 136: break; + case 137: break; case 49: { yypushState(KEY_VALUE_STRING); return OAP_ID_NAME; } // fall through - case 137: break; + case 138: break; case 50: { return OAP_BOOL; } // fall through - case 138: break; + case 139: break; case 51: { yypushState(LISTEN); return OAP_ID_LINK; } // fall through - case 139: break; + case 140: break; case 52: { yypushState(_VALUE_REFERENCE); return OAP_ID_NAME; } // fall through - case 140: break; + case 141: break; case 53: - { yypushState(KEY_VALUE_SINGLE_OR_ARRAY); return OAP_ID_PATH; + { yybegin(_VALUE_REFERENCE); return OAP_ID_NAME; } // fall through - case 141: break; + case 142: break; case 54: - { yypushState(KEY_VALUE_STRING); return OAP_ID_PATH; + { yypushState(KEY_VALUE_SINGLE_OR_ARRAY); return OAP_ID_PATH; } // fall through - case 142: break; + case 143: break; case 55: - { yybegin(KEY_VALUE_SINGLE_OR_ARRAY); return OAP_ID_PATH; + { yypushState(KEY_VALUE_STRING); return OAP_ID_PATH; } // fall through - case 143: break; + case 144: break; case 56: - { yypushState(KEY_VALUE_STRING); return OAP_ID_CRON; + { yybegin(KEY_VALUE_SINGLE_OR_ARRAY); return OAP_ID_PATH; } // fall through - case 144: break; + case 145: break; case 57: - { return OAP_ID_SELF; + { yypushState(KEY_VALUE_STRING); return OAP_ID_CRON; } // fall through - case 145: break; + case 146: break; case 58: - { return OAP_ID_THIS; + { return OAP_ID_SELF; } // fall through - case 146: break; + case 147: break; case 59: - { yypushState(KEY_VALUE_STRING); return OAP_ID_DELAY; + { return OAP_ID_THIS; } // fall through - case 147: break; + case 148: break; case 60: - { yybegin(CONFIGURATIONS_OBJECT_CONFIG); return OAP_ID_CONFIG; + { yypushState(KEY_VALUE_STRING); return OAP_ID_DELAY; } // fall through - case 148: break; + case 149: break; case 61: - { yybegin(CONFIGURATIONS_OBJECT_LOADER); return OAP_ID_LOADER; + { yybegin(CONFIGURATIONS_OBJECT_CONFIG); return OAP_ID_CONFIG; } // fall through - case 149: break; + case 150: break; case 62: - { yypushState(LISTEN); return OAP_ID_LISTEN; + { yybegin(CONFIGURATIONS_OBJECT_LOADER); return OAP_ID_LOADER; } // fall through - case 150: break; + case 151: break; case 63: - { yybegin(SERVICES_SERVICE_REMOTE); return OAP_ID_REMOTE; + { yypushState(LISTEN); return OAP_ID_LISTEN; } // fall through - case 151: break; + case 152: break; case 64: - { yypushState(KEY_VALUE_STRING); return OAP_ID_THREAD; + { yypushState(SERVICES_SERVICE_REMOTE); return OAP_ID_REMOTE; } // fall through - case 152: break; + case 153: break; case 65: - { return OAP_ID_KERNEL; + { yypushState(KEY_VALUE_STRING); return OAP_ID_THREAD; } // fall through - case 153: break; + case 154: break; case 66: - { yypushState(KEY_VALUE_STRING); return OAP_ID_ENABLED; + { return OAP_ID_KERNEL; } // fall through - case 154: break; + case 155: break; case 67: - { yypushState(KEY_VALUE_STRING); return OAP_ID_DEFAULT; + { yypushState(KEY_VALUE_STRING); return OAP_ID_ENABLED; } // fall through - case 155: break; + case 156: break; case 68: - { yypushState(KEY_VALUE_STRING); return OAP_ID_TIMEOUT; + { yypushState(KEY_VALUE_STRING); return OAP_ID_DEFAULT; } // fall through - case 156: break; + case 157: break; case 69: - { return OAP_ID_MODULES; + { yypushState(KEY_VALUE_STRING); return OAP_ID_TIMEOUT; } // fall through - case 157: break; + case 158: break; case 70: - { yybegin(SERVICES); return OAP_ID_SERVICES; + { return OAP_ID_MODULES; } // fall through - case 158: break; + case 159: break; case 71: - { return OAP_ID_REQUIRED; + { yybegin(SERVICES); return OAP_ID_SERVICES; } // fall through - case 159: break; + case 160: break; case 72: - { yypushState(KEY_VALUE_STRING); return OAP_ID_ABSTRACT; + { return OAP_ID_REQUIRED; } // fall through - case 160: break; + case 161: break; case 73: - { yypushState(KEY_VALUE_STRING); return OAP_ID_BLOCKING; + { yypushState(KEY_VALUE_STRING); return OAP_ID_ABSTRACT; } // fall through - case 161: break; + case 162: break; case 74: - { yypushState(KEY_VALUE_STRING); return OAP_ID_SCHEDULE; + { yypushState(KEY_VALUE_STRING); return OAP_ID_BLOCKING; } // fall through - case 162: break; + case 163: break; case 75: - { return OAP_ID_SERVICES; + { yypushState(KEY_VALUE_STRING); return OAP_ID_SCHEDULE; } // fall through - case 163: break; + case 164: break; case 76: - { yypushState(DEPENDS_ON); return OAP_ID_DEPENDS_ON; + { return OAP_ID_SERVICES; } // fall through - case 164: break; + case 165: break; case 77: - { yypushState(KEY_VALUE_STRING); return OAP_ID_SUPERVISE; + { yypushState(DEPENDS_ON); return OAP_ID_DEPENDS_ON; } // fall through - case 165: break; + case 166: break; case 78: - { yypushState(SERVICES_SERVICE_PARAMETERS); return OAP_ID_PARAMETERS; + { yypushState(KEY_VALUE_STRING); return OAP_ID_SUPERVISE; } // fall through - case 166: break; + case 167: break; case 79: - { yypushState(SERVICES_SERVICE_WS_HANDLER); return OAP_ID_WS_HANDLER; + { yypushState(SERVICES_SERVICE_PARAMETERS); return OAP_ID_PARAMETERS; } // fall through - case 167: break; + case 168: break; case 80: - { yypushState(SERVICES_SERVICE_WS_SERVICE); return OAP_ID_WS_SERVICE; + { yypushState(SERVICES_SERVICE_WS_HANDLER); return OAP_ID_WS_HANDLER; } // fall through - case 168: break; + case 169: break; case 81: - { yypushState(SERVICES_SERVICE_SUPERVISION); return OAP_ID_SUPERVISION; + { yypushState(SERVICES_SERVICE_WS_SERVICE); return OAP_ID_WS_SERVICE; } // fall through - case 169: break; + case 170: break; case 82: - { yypushState(KEY_VALUE_STRING); return OAP_ID_COMPRESSION; + { yypushState(SERVICES_SERVICE_SUPERVISION); return OAP_ID_SUPERVISION; } // fall through - case 170: break; + case 171: break; case 83: - { yypushState(KEY_VALUE_MODULE_REFERENCE_SINGLE_OR_ARRAY); return OAP_ID_INTERCEPTORS; + { yypushState(KEY_VALUE_STRING); return OAP_ID_COMPRESSION; } // fall through - case 171: break; + case 172: break; case 84: - { yypushState(KEY_VALUE_STRING); return OAP_ID_SESSIONAWARE; + { yypushState(KEY_VALUE_MODULE_REFERENCE_SINGLE_OR_ARRAY); return OAP_ID_INTERCEPTORS; } // fall through - case 172: break; + case 173: break; case 85: - { yybegin(CONFIGURATIONS); return OAP_ID_CONFIGURATIONS; + { yypushState(KEY_VALUE_STRING); return OAP_ID_SESSIONAWARE; } // fall through - case 173: break; + case 174: break; case 86: - { yypushState(SERVICES_IN); yybegin(KEY_VALUE_CLASS); return OAP_ID_IMPLEMENTATION; + { yybegin(CONFIGURATIONS); return OAP_ID_CONFIGURATIONS; } // fall through - case 174: break; + case 175: break; case 87: - { yypushState(KEY_VALUE_CLASS); return OAP_ID_IMPLEMENTATION; + { yypushState(SERVICES_IN); yybegin(KEY_VALUE_CLASS); return OAP_ID_IMPLEMENTATION; } // fall through - case 175: break; + case 176: break; case 88: + { yypushState(KEY_VALUE_CLASS); return OAP_ID_IMPLEMENTATION; + } + // fall through + case 177: break; + case 89: // lookahead expression with fixed base length zzMarkedPos = Character.offsetByCodePoints (zzBufferL, zzStartRead, 7); { yypushState(INCLUDE); return OAP_ID_INCLUDE; } // fall through - case 176: break; + case 178: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/gen/oap/application/plugin/gen/psi/OapDotRemote.java b/gen/oap/application/plugin/gen/psi/OapDotRemote.java index 7bdf467..f12f07e 100644 --- a/gen/oap/application/plugin/gen/psi/OapDotRemote.java +++ b/gen/oap/application/plugin/gen/psi/OapDotRemote.java @@ -8,7 +8,7 @@ public interface OapDotRemote extends OapCompositeElement { - @NotNull + @Nullable OapRemoteName getRemoteName(); @NotNull diff --git a/gen/oap/application/plugin/gen/psi/impl/OapDotRemoteImpl.java b/gen/oap/application/plugin/gen/psi/impl/OapDotRemoteImpl.java index 286712f..beef4f2 100644 --- a/gen/oap/application/plugin/gen/psi/impl/OapDotRemoteImpl.java +++ b/gen/oap/application/plugin/gen/psi/impl/OapDotRemoteImpl.java @@ -29,9 +29,9 @@ public void accept(@NotNull PsiElementVisitor visitor) { } @Override - @NotNull + @Nullable public OapRemoteName getRemoteName() { - return notNullChild(PsiTreeUtil.getChildOfType(this, OapRemoteName.class)); + return PsiTreeUtil.getChildOfType(this, OapRemoteName.class); } @Override diff --git a/grammars/_OapLexer.flex b/grammars/_OapLexer.flex index 33aadff..bb4aae5 100644 --- a/grammars/_OapLexer.flex +++ b/grammars/_OapLexer.flex @@ -106,7 +106,7 @@ KEY_NAME=[:jletter:] ([:jletterdigit:]|[-/])* %state INCLUDE %state DEPENDS_ON, DEPENDS_ON_IN %state CONFIGURATIONS, CONFIGURATIONS_OBJECTS, CONFIGURATIONS_OBJECT, CONFIGURATIONS_OBJECT_LOADER, CONFIGURATIONS_OBJECT_CONFIG -%state SERVICES, SERVICES_IN, SERVICES_SERVICE, SERVICES_SERVICE_REMOTE +%state SERVICES, SERVICES_IN, SERVICES_SERVICE, SERVICES_SERVICE_REMOTE, SERVICES_SERVICE_REMOTE_DOT_NAME %state SERVICES_SERVICE_PARAMETERS %state SERVICES_SERVICE_WS_SERVICE, SERVICES_SERVICE_WS_SERVICE_DOT_PATH %state SERVICES_SERVICE_WS_HANDLER, SERVICES_SERVICE_WS_HANDLER_DOT_PATH @@ -250,7 +250,7 @@ KEY_NAME=[:jletter:] ([:jletterdigit:]|[-/])* "listen" { yypushState(LISTEN); return OAP_ID_LISTEN; } "link" { yypushState(LISTEN); return OAP_ID_LINK; } "parameters" { yypushState(SERVICES_SERVICE_PARAMETERS); return OAP_ID_PARAMETERS; } - "remote" { yybegin(SERVICES_SERVICE_REMOTE); return OAP_ID_REMOTE; } + "remote" { yypushState(SERVICES_SERVICE_REMOTE); return OAP_ID_REMOTE; } "ws-service" { yypushState(SERVICES_SERVICE_WS_SERVICE); return OAP_ID_WS_SERVICE; } "ws-handler" { yypushState(SERVICES_SERVICE_WS_HANDLER); return OAP_ID_WS_HANDLER; } "supervision" { yypushState(SERVICES_SERVICE_SUPERVISION); return OAP_ID_SUPERVISION; } @@ -259,8 +259,9 @@ KEY_NAME=[:jletter:] ([:jletterdigit:]|[-/])* {NEXTLINE} { return WHITE_SPACE; } } { + "." { yybegin(SERVICES_SERVICE_REMOTE_DOT_NAME); return OAP_DOT; } "{" { return OAP_LEFTBRACE; } - "}" { yybegin(SERVICES_SERVICE); return OAP_RIGHTBRACE; } + "}" { yypopState(); return OAP_RIGHTBRACE; } "url" { yypushState(KEY_VALUE_STRING); return OAP_ID_URL; } "name" { yypushState(_VALUE_REFERENCE); return OAP_ID_NAME; } "timeout" { yypushState(KEY_VALUE_STRING); return OAP_ID_TIMEOUT; } @@ -268,6 +269,12 @@ KEY_NAME=[:jletter:] ([:jletterdigit:]|[-/])* {WHITE_SPACE} { return WHITE_SPACE; } {NEXTLINE} { return WHITE_SPACE; } } + { + "name" { yybegin(_VALUE_REFERENCE); return OAP_ID_NAME; } + + {WHITE_SPACE} { return WHITE_SPACE; } + {NEXTLINE} { yypopState(); return WHITE_SPACE; } +} { "." { yybegin(SERVICES_SERVICE_WS_SERVICE_DOT_PATH); return OAP_DOT; } "{" { return OAP_LEFTBRACE; } diff --git a/grammars/oap.bnf b/grammars/oap.bnf index e1a346b..25598f7 100644 --- a/grammars/oap.bnf +++ b/grammars/oap.bnf @@ -342,7 +342,7 @@ module_services_service_remote ::= 'remote' (&'.' dot_remote | remote_object ) { pin=1 implements="oap.application.plugin.psi.OapKeyValuePairWithIndentNormal" } -dot_remote ::= '.' remote_name +dot_remote ::= '.' remote_name {pin=1} remote_object ::= '{' remote_entries '}' {pin=1} remote_entries ::= (&'name' remote_name | &'timeout' remote_timeout | &'url' remote_url )* diff --git a/src/test/kotlin/oap/application/plugin/parser/OapParserTest.kt b/src/test/kotlin/oap/application/plugin/parser/OapParserTest.kt index fde8ac1..846a1d4 100644 --- a/src/test/kotlin/oap/application/plugin/parser/OapParserTest.kt +++ b/src/test/kotlin/oap/application/plugin/parser/OapParserTest.kt @@ -167,6 +167,10 @@ class OapParserTest : ParsingTestCase("parser", "oap", OapParserDefinition()) { doTest(false) } + fun testRemoteDotName() { + doTest(false) + } + fun testRemoteNameError() { doTest(true) } diff --git a/testdata/parser/RemoteDotName.oap b/testdata/parser/RemoteDotName.oap new file mode 100644 index 0000000..97e5f47 --- /dev/null +++ b/testdata/parser/RemoteDotName.oap @@ -0,0 +1,8 @@ +name = RemoteDotName + +services { + remote-client { + implementation = oap.remote.application.RemoteClient + remote.name = + } +} diff --git a/testdata/parser/RemoteDotName.txt b/testdata/parser/RemoteDotName.txt new file mode 100644 index 0000000..1943444 --- /dev/null +++ b/testdata/parser/RemoteDotName.txt @@ -0,0 +1,57 @@ +OAP_FILE + OAP_MODULE_NAME_PAIR + PsiElement(name)('name') + PsiWhiteSpace(' ') + PsiElement(=)('=') + PsiWhiteSpace(' ') + OAP_MODULE_NAME + PsiElement(key_value)('RemoteDotName') + PsiWhiteSpace('\n\n') + OAP_MODULE_SERVICES + PsiElement(services)('services') + PsiWhiteSpace(' ') + PsiElement({)('{') + PsiWhiteSpace('\n') + PsiWhiteSpace(' ') + OAP_MODULE_SERVICES_SERVICE + OAP_SERVICE_NAME + PsiElement(key_name)('remote-client') + PsiWhiteSpace(' ') + PsiElement({)('{') + PsiWhiteSpace('\n') + PsiWhiteSpace(' ') + OAP_MODULE_SERVICES_SERVICE_IMPLEMENTATION + PsiElement(implementation)('implementation') + PsiWhiteSpace(' ') + PsiElement(=)('=') + PsiWhiteSpace(' ') + OAP_CLASS_NAME_PSI + PsiElement(class_name)('oap.remote.application.RemoteClient') + PsiWhiteSpace('\n') + PsiWhiteSpace(' ') + OAP_MODULE_SERVICES_SERVICE_REMOTE + PsiElement(remote)('remote') + OAP_DOT_REMOTE + PsiElement(.)('.') + OAP_REMOTE_NAME + PsiElement(name)('name') + PsiWhiteSpace(' ') + PsiElement(=)('=') + PsiWhiteSpace(' ') + OAP_REFERENCE_MODULES_VALUE + PsiElement(<)('<') + OAP_REFERENCE_MODULES_VALUE_IN + OAP_REFERENCE_TYPE_MODULES + PsiElement(modules)('modules') + PsiElement(.)('.') + OAP_REFERENCE_MODULES_NAME + PsiElement(reference_value)('oap-module-with-remoting') + PsiElement(.)('.') + OAP_REFERENCE_MODULES_SERVICE_NAME + PsiElement(reference_value)('remote-service') + PsiElement(>)('>') + PsiWhiteSpace('\n') + PsiWhiteSpace(' ') + PsiElement(})('}') + PsiWhiteSpace('\n') + PsiElement(})('}') \ No newline at end of file