[groovy] lexer: fix escape sequences in triple single quoted strings,

add bunch of tests
This commit is contained in:
Daniil Ovchinnikov
2017-03-23 20:02:39 +03:00
parent b12aa86b50
commit 3d7a40bc70
15 changed files with 425 additions and 259 deletions
@@ -215,31 +215,31 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer {
"\1\0\1\153\3\52\1\137\3\52\1\140\1\141\32\52"+
"\1\145\3\52\1\146\5\52\1\133\1\154\1\62\2\134"+
"\1\136\1\0\3\7\1\155\6\7\1\156\1\7\1\157"+
"\2\0\2\7\1\160\3\0\1\14\7\0\7\7\1\161"+
"\2\0\2\7\1\160\3\0\2\14\6\0\7\7\1\161"+
"\2\7\1\162\10\7\1\163\1\164\3\7\1\165\1\7"+
"\1\166\1\7\1\167\3\52\1\155\6\52\1\156\1\52"+
"\1\157\2\52\1\160\7\52\1\161\2\52\1\162\10\52"+
"\1\163\1\164\3\52\1\165\1\52\1\166\1\52\1\133"+
"\2\154\1\62\1\0\1\134\1\170\1\171\1\172\7\7"+
"\1\173\1\7\1\14\1\0\1\14\5\0\6\7\1\174"+
"\1\173\1\7\1\14\1\0\1\14\4\0\6\7\1\174"+
"\1\175\3\7\1\176\1\7\1\177\1\7\1\200\1\7"+
"\1\201\3\7\1\202\1\170\1\171\1\172\7\52\1\173"+
"\7\52\1\174\1\175\3\52\1\176\1\52\1\177\1\52"+
"\1\200\1\52\1\201\3\52\1\202\1\133\1\0\1\154"+
"\1\0\2\7\1\203\3\7\1\204\2\7\2\0\3\7"+
"\1\0\2\7\1\203\3\7\1\204\2\7\1\0\3\7"+
"\1\205\1\7\1\206\1\7\1\207\2\7\1\210\1\7"+
"\1\211\1\212\1\213\1\7\2\52\1\203\3\52\1\204"+
"\5\52\1\205\1\52\1\206\1\52\1\207\2\52\1\210"+
"\1\52\1\211\1\212\1\213\1\52\1\0\1\214\3\7"+
"\1\215\1\216\1\217\1\14\1\220\1\221\7\7\1\214"+
"\3\52\1\215\1\216\1\217\1\220\1\221\7\52\4\7"+
"\1\222\1\223\1\224\2\7\1\225\4\52\1\222\1\223"+
"\1\224\2\52\1\225\2\7\1\226\1\227\1\7\1\230"+
"\2\52\1\226\1\227\1\52\1\230\1\231\1\232\1\7"+
"\1\231\1\232\1\52\1\7\1\52\2\233";
"\1\215\1\216\1\217\1\220\1\221\7\7\1\214\3\52"+
"\1\215\1\216\1\217\1\220\1\221\7\52\4\7\1\222"+
"\1\223\1\224\2\7\1\225\4\52\1\222\1\223\1\224"+
"\2\52\1\225\2\7\1\226\1\227\1\7\1\230\2\52"+
"\1\226\1\227\1\52\1\230\1\231\1\232\1\7\1\231"+
"\1\232\1\52\1\7\1\52\2\233";
private static int [] zzUnpackAction() {
int [] result = new int[684];
int [] result = new int[681];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -326,33 +326,33 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer {
"\0\u0378\0\u0378\0\u5262\0\u6b3e\0\u057e\0\u6b88\0\u057e\0\u6bd2"+
"\0\u6c1c\0\u6c66\0\u6cb0\0\u6cfa\0\u6d44\0\u6d8e\0\u057e\0\u6dd8"+
"\0\u6e22\0\u6e6c\0\u6eb6\0\u6f00\0\u6f4a\0\u6f94\0\u6fde\0\u7028"+
"\0\u7072\0\u70bc\0\u7106\0\u7150\0\u719a\0\u71e4\0\u057e\0\u057e"+
"\0\u722e\0\u7278\0\u72c2\0\u057e\0\u730c\0\u057e\0\u7356\0\u057e"+
"\0\u73a0\0\u73ea\0\u7434\0\u747e\0\u74c8\0\u057e\0\u1236\0\u7512"+
"\0\u1236\0\u755c\0\u75a6\0\u75f0\0\u763a\0\u7684\0\u76ce\0\u7718"+
"\0\u1236\0\u7762\0\u77ac\0\u77f6\0\u7840\0\u788a\0\u78d4\0\u791e"+
"\0\u1236\0\u1236\0\u7968\0\u79b2\0\u79fc\0\u1236\0\u7a46\0\u1236"+
"\0\u7a90\0\u1236\0\u7ada\0\u7b24\0\u7b6e\0\u7bb8\0\u7c02\0\u1236"+
"\0\u0378\0\u6aaa\0\u7c4c\0\u6b3e\0\u7c96\0\u7ce0\0\u057e\0\u7d2a"+
"\0\u7d74\0\u7dbe\0\u057e\0\u7e08\0\u7e52\0\u7e9c\0\u7ee6\0\u7f30"+
"\0\u7f7a\0\u7fc4\0\u057e\0\u800e\0\u057e\0\u8058\0\u057e\0\u80a2"+
"\0\u80ec\0\u057e\0\u8136\0\u057e\0\u057e\0\u057e\0\u8180\0\u81ca"+
"\0\u8214\0\u1236\0\u825e\0\u82a8\0\u82f2\0\u1236\0\u833c\0\u8386"+
"\0\u83d0\0\u841a\0\u8464\0\u1236\0\u84ae\0\u1236\0\u84f8\0\u1236"+
"\0\u8542\0\u858c\0\u1236\0\u85d6\0\u1236\0\u1236\0\u1236\0\u8620"+
"\0\u7c4c\0\u057e\0\u866a\0\u86b4\0\u86fe\0\u057e\0\u057e\0\u057e"+
"\0\u6f00\0\u057e\0\u057e\0\u8748\0\u8792\0\u87dc\0\u8826\0\u8870"+
"\0\u88ba\0\u8904\0\u1236\0\u894e\0\u8998\0\u89e2\0\u1236\0\u1236"+
"\0\u1236\0\u1236\0\u1236\0\u8a2c\0\u8a76\0\u8ac0\0\u8b0a\0\u8b54"+
"\0\u8b9e\0\u8be8\0\u8c32\0\u8c7c\0\u8cc6\0\u8d10\0\u057e\0\u057e"+
"\0\u057e\0\u8d5a\0\u8da4\0\u057e\0\u8dee\0\u8e38\0\u8e82\0\u8ecc"+
"\0\u1236\0\u1236\0\u1236\0\u8f16\0\u8f60\0\u1236\0\u8faa\0\u8ff4"+
"\0\u057e\0\u057e\0\u903e\0\u057e\0\u9088\0\u90d2\0\u1236\0\u1236"+
"\0\u911c\0\u1236\0\u057e\0\u057e\0\u9166\0\u1236\0\u1236\0\u91b0"+
"\0\u91fa\0\u9244\0\u057e\0\u1236";
"\0\u7072\0\u70bc\0\u7106\0\u7150\0\u719a\0\u057e\0\u057e\0\u71e4"+
"\0\u722e\0\u7278\0\u057e\0\u72c2\0\u057e\0\u730c\0\u057e\0\u7356"+
"\0\u73a0\0\u73ea\0\u7434\0\u747e\0\u057e\0\u1236\0\u74c8\0\u1236"+
"\0\u7512\0\u755c\0\u75a6\0\u75f0\0\u763a\0\u7684\0\u76ce\0\u1236"+
"\0\u7718\0\u7762\0\u77ac\0\u77f6\0\u7840\0\u788a\0\u78d4\0\u1236"+
"\0\u1236\0\u791e\0\u7968\0\u79b2\0\u1236\0\u79fc\0\u1236\0\u7a46"+
"\0\u1236\0\u7a90\0\u7ada\0\u7b24\0\u7b6e\0\u7bb8\0\u1236\0\u0378"+
"\0\u6aaa\0\u7c02\0\u6b3e\0\u7c4c\0\u7c96\0\u057e\0\u7ce0\0\u7d2a"+
"\0\u7d74\0\u057e\0\u7dbe\0\u7e08\0\u7e52\0\u7e9c\0\u7ee6\0\u7f30"+
"\0\u057e\0\u7f7a\0\u057e\0\u7fc4\0\u057e\0\u800e\0\u8058\0\u057e"+
"\0\u80a2\0\u057e\0\u057e\0\u057e\0\u80ec\0\u8136\0\u8180\0\u1236"+
"\0\u81ca\0\u8214\0\u825e\0\u1236\0\u82a8\0\u82f2\0\u833c\0\u8386"+
"\0\u83d0\0\u1236\0\u841a\0\u1236\0\u8464\0\u1236\0\u84ae\0\u84f8"+
"\0\u1236\0\u8542\0\u1236\0\u1236\0\u1236\0\u858c\0\u7c02\0\u057e"+
"\0\u85d6\0\u8620\0\u866a\0\u057e\0\u057e\0\u057e\0\u057e\0\u057e"+
"\0\u86b4\0\u86fe\0\u8748\0\u8792\0\u87dc\0\u8826\0\u8870\0\u1236"+
"\0\u88ba\0\u8904\0\u894e\0\u1236\0\u1236\0\u1236\0\u1236\0\u1236"+
"\0\u8998\0\u89e2\0\u8a2c\0\u8a76\0\u8ac0\0\u8b0a\0\u8b54\0\u8b9e"+
"\0\u8be8\0\u8c32\0\u8c7c\0\u057e\0\u057e\0\u057e\0\u8cc6\0\u8d10"+
"\0\u057e\0\u8d5a\0\u8da4\0\u8dee\0\u8e38\0\u1236\0\u1236\0\u1236"+
"\0\u8e82\0\u8ecc\0\u1236\0\u8f16\0\u8f60\0\u057e\0\u057e\0\u8faa"+
"\0\u057e\0\u8ff4\0\u903e\0\u1236\0\u1236\0\u9088\0\u1236\0\u057e"+
"\0\u057e\0\u90d2\0\u1236\0\u1236\0\u911c\0\u9166\0\u91b0\0\u057e"+
"\0\u1236";
private static int [] zzUnpackRowMap() {
int [] result = new int[684];
int [] result = new int[681];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -735,249 +735,247 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer {
"\35\0\14\26\1\u01e8\1\26\2\0\7\26\1\0\2\26"+
"\3\0\20\26\22\0\1\232\2\u0112\1\u01e9\2\u0112\1\u0113"+
"\103\232\2\0\2\232\2\u0184\1\u01ea\105\0\1\u0112\1\232"+
"\2\u0184\1\u01ea\103\0\6\u0114\1\u0186\36\u0114\1\u01eb\111\u0114"+
"\1\u01ec\44\u0114\1\235\2\u0116\1\u01ed\2\u0116\1\u0117\103\235"+
"\2\0\2\235\2\u0189\1\u01ee\105\0\1\u0116\1\235\2\u0189"+
"\1\u01ee\103\0\6\u018b\1\u018c\35\u018b\1\0\1\u018b\1\u01ef"+
"\163\u018b\1\0\35\u018b\1\0\1\u018b\1\u01f0\43\u018b\13\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\1\26\1\u01f1"+
"\16\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\1\26\1\u01f2\16\26\35\0\14\26\1\u01f3\1\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\10\26\1\u01f4"+
"\5\26\2\0\7\26\1\0\2\26\3\0\20\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\6\26\1\u01f5"+
"\11\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\6\26\1\u01f6\11\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\4\26\1\u01f7\13\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\15\26\1\u01f8\2\26\35\0"+
"\10\26\1\u01f9\5\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\10\26\1\u01fa\5\26\2\0\7\26\1\0"+
"\2\u0184\1\u01ea\103\0\157\u0114\1\u01eb\44\u0114\1\235\2\u0116"+
"\1\u01ec\2\u0116\1\u0117\103\235\2\0\2\235\2\u0189\1\u01ed"+
"\105\0\1\u0116\1\235\2\u0189\1\u01ed\103\0\6\u018b\1\u018c"+
"\35\u018b\1\0\1\u018b\1\u01ee\163\u018b\1\0\35\u018b\1\0"+
"\1\u018b\1\u01ef\43\u018b\13\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\1\26\1\u01f0\16\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\1\26\1\u01f1\16\26\35\0"+
"\14\26\1\u01f2\1\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\10\26\1\u01f3\5\26\2\0\7\26\1\0"+
"\2\26\3\0\20\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\2\26\1\u01fb\15\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\6\26\1\u01fc\11\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\15\26\1\u01fd"+
"\2\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\5\26\1\u01fe\12\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\2\26\1\u01ff\15\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\5\26\1\u0200\12\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\4\26\1\u0201"+
"\2\26\3\0\6\26\1\u01f4\11\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\6\26\1\u01f5\11\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\4\26\1\u01f6"+
"\13\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\17\26\1\u0202\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\6\26\1\u0203\11\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\13\26\1\u0204\4\26\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\5\26\1\u0205\12\26"+
"\35\0\14\26\1\u0206\1\26\2\0\7\26\1\0\2\26"+
"\3\0\20\26\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\5\122\1\u0207\12\122\35\0\6\122\1\u0208\7\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\14\122"+
"\1\u0209\1\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\14\122\1\u020a\1\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\6\122\1\u020b\11\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\1\122\1\u020c\16\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\6\122\1\u020d\11\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\12\122"+
"\1\u020e\5\122\35\0\6\122\1\u020f\7\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\11\122\1\u0210\6\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\3\122\1\u0211\14\122"+
"\35\0\14\122\1\u0212\1\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\1\122\1\u0213\16\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\1\122\1\u0214\16\122\35\0\14\122"+
"\1\u0215\1\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\10\122\1\u0216\5\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\6\122\1\u0217\11\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\6\122\1\u0218\11\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\4\122\1\u0219\13\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\15\122"+
"\1\u021a\2\122\35\0\10\122\1\u021b\5\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\10\122\1\u021c\5\122"+
"\15\26\1\u01f7\2\26\35\0\10\26\1\u01f8\5\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\10\26\1\u01f9"+
"\5\26\2\0\7\26\1\0\2\26\3\0\20\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\2\26\1\u01fa"+
"\15\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\6\26\1\u01fb\11\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\15\26\1\u01fc\2\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\5\26\1\u01fd\12\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\2\26\1\u01fe"+
"\15\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\5\26\1\u01ff\12\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\4\26\1\u0200\13\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\17\26\1\u0201\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\6\26\1\u0202\11\26"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\13\26"+
"\1\u0203\4\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\5\26\1\u0204\12\26\35\0\14\26\1\u0205\1\26"+
"\2\0\7\26\1\0\2\26\3\0\20\26\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\5\122\1\u0206\12\122"+
"\35\0\6\122\1\u0207\7\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\14\122\1\u0208\1\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\14\122\1\u0209\1\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\2\122\1\u021d\15\122"+
"\2\0\7\122\1\0\1\122\4\0\6\122\1\u020a\11\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\1\122"+
"\1\u020b\16\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\6\122\1\u020c\11\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\12\122\1\u020d\5\122\35\0\6\122"+
"\1\u020e\7\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\11\122"+
"\1\u020f\6\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\3\122\1\u0210\14\122\35\0\14\122\1\u0211\1\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\1\122\1\u0212\16\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\1\122"+
"\1\u0213\16\122\35\0\14\122\1\u0214\1\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\10\122\1\u0215\5\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\6\122\1\u0216\11\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\6\122"+
"\1\u021e\11\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\15\122\1\u021f\2\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\5\122\1\u0220\12\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\2\122\1\u0221\15\122"+
"\1\u0217\11\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\4\122\1\u0218\13\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\15\122\1\u0219\2\122\35\0\10\122"+
"\1\u021a\5\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\10\122\1\u021b\5\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\2\122\1\u021c\15\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\6\122\1\u021d\11\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\15\122\1\u021e\2\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\5\122"+
"\1\u0222\12\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\4\122\1\u0223\13\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\17\122\1\u0224\35\0\16\122\2\0"+
"\7\122\1\0\1\122\4\0\6\122\1\u0225\11\122\35\0"+
"\16\122\2\0\7\122\1\0\1\122\4\0\13\122\1\u0226"+
"\4\122\35\0\16\122\2\0\7\122\1\0\1\122\4\0"+
"\5\122\1\u0227\12\122\35\0\14\122\1\u0228\1\122\2\0"+
"\7\122\1\0\1\122\4\0\20\122\22\0\7\u016a\1\u0229"+
"\1\u022a\101\u016a\10\u01d8\1\u022b\101\u01d8\7\u016d\1\u016e\1\u022c"+
"\101\u016d\13\0\6\26\1\u022d\7\26\2\0\7\26\1\0"+
"\2\26\3\0\20\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\7\26\1\u022e\10\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\5\26\1\u022f\12\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\11\26\1\u0230"+
"\6\26\35\0\4\26\1\u0231\11\26\2\0\7\26\1\0"+
"\2\26\3\0\20\26\35\0\6\26\1\u0232\7\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\14\26\1\u0233"+
"\1\26\2\0\7\26\1\0\2\26\3\0\20\26\35\0"+
"\12\26\1\u0234\3\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\1\26\1\u0235\16\26\22\0\2\232\1\u0112\1\232\2\u0112"+
"\1\u0183\36\232\1\u0111\44\232\1\0\2\u0184\1\u0185\1\0"+
"\1\u0184\104\0\6\u0114\1\u0186\36\u0114\1\u0236\111\u0114\1\u0111"+
"\1\u021f\12\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\2\122\1\u0220\15\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\5\122\1\u0221\12\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\4\122\1\u0222\13\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\17\122"+
"\1\u0223\35\0\16\122\2\0\7\122\1\0\1\122\4\0"+
"\6\122\1\u0224\11\122\35\0\16\122\2\0\7\122\1\0"+
"\1\122\4\0\13\122\1\u0225\4\122\35\0\16\122\2\0"+
"\7\122\1\0\1\122\4\0\5\122\1\u0226\12\122\35\0"+
"\14\122\1\u0227\1\122\2\0\7\122\1\0\1\122\4\0"+
"\20\122\22\0\7\u016a\1\u0228\1\u0229\101\u016a\10\u01d8\1\u022a"+
"\101\u01d8\7\u016d\1\u016e\1\u022b\101\u016d\13\0\6\26\1\u022c"+
"\7\26\2\0\7\26\1\0\2\26\3\0\20\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\7\26\1\u022d"+
"\10\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\5\26\1\u022e\12\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\11\26\1\u022f\6\26\35\0\4\26\1\u0230"+
"\11\26\2\0\7\26\1\0\2\26\3\0\20\26\35\0"+
"\6\26\1\u0231\7\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\14\26\1\u0232\1\26\2\0\7\26\1\0"+
"\2\26\3\0\20\26\35\0\12\26\1\u0233\3\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\1\26\1\u0234\16\26\22\0"+
"\2\232\1\u0112\1\232\2\u0112\1\u0183\36\232\1\u0111\44\232"+
"\1\0\2\u0184\1\u0185\1\0\1\u0184\104\0\45\u0114\1\u0111"+
"\44\u0114\2\235\1\u0116\1\235\2\u0116\1\u0188\35\235\1\0"+
"\1\235\1\u0115\43\235\1\0\2\u0189\1\u018a\1\0\1\u0189"+
"\104\0\6\u018b\1\0\35\u018b\1\0\1\u018b\1\u0237\51\u018b"+
"\104\0\6\u018b\1\0\35\u018b\1\0\1\u018b\1\u0235\51\u018b"+
"\1\0\35\u018b\1\0\1\u018b\1\0\43\u018b\13\0\2\26"+
"\1\u0238\13\26\2\0\7\26\1\0\2\26\3\0\20\26"+
"\1\u0236\13\26\2\0\7\26\1\0\2\26\3\0\20\26"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\5\26"+
"\1\u0239\12\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\2\26\1\u023a\15\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\2\26\1\u023b\15\26\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\1\26\1\u023c\16\26"+
"\1\u0237\12\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\2\26\1\u0238\15\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\2\26\1\u0239\15\26\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\1\26\1\u023a\16\26"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\5\26"+
"\1\u023d\12\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\11\26\1\u023e\6\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\2\26\1\u023f\15\26\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\5\26\1\u0240\12\26"+
"\1\u023b\12\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\11\26\1\u023c\6\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\2\26\1\u023d\15\26\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\5\26\1\u023e\12\26"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\6\26"+
"\1\u0241\11\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\15\26\1\u0242\2\26\35\0\10\26\1\u0243\5\26"+
"\1\u023f\11\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\15\26\1\u0240\2\26\35\0\10\26\1\u0241\5\26"+
"\2\0\7\26\1\0\2\26\3\0\20\26\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\4\26\1\u0244\13\26"+
"\2\0\7\26\1\0\2\26\3\0\4\26\1\u0242\13\26"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\11\26"+
"\1\u0245\6\26\35\0\14\26\1\u0246\1\26\2\0\7\26"+
"\1\0\2\26\3\0\20\26\35\0\10\26\1\u0247\5\26"+
"\1\u0243\6\26\35\0\14\26\1\u0244\1\26\2\0\7\26"+
"\1\0\2\26\3\0\20\26\35\0\10\26\1\u0245\5\26"+
"\2\0\7\26\1\0\2\26\3\0\20\26\35\0\6\122"+
"\1\u0248\7\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\1\u0246\7\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\7\122"+
"\1\u0249\10\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\5\122\1\u024a\12\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\11\122\1\u024b\6\122\35\0\4\122"+
"\1\u024c\11\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\6\122\1\u024d\7\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\14\122\1\u024e\1\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\12\122\1\u024f\3\122"+
"\1\u0247\10\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\5\122\1\u0248\12\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\11\122\1\u0249\6\122\35\0\4\122"+
"\1\u024a\11\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\6\122\1\u024b\7\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\14\122\1\u024c\1\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\12\122\1\u024d\3\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\1\122\1\u0250\16\122"+
"\35\0\2\122\1\u0251\13\122\2\0\7\122\1\0\1\122"+
"\2\0\7\122\1\0\1\122\4\0\1\122\1\u024e\16\122"+
"\35\0\2\122\1\u024f\13\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\5\122\1\u0252\12\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\2\122\1\u0253\15\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\2\122\1\u0254\15\122"+
"\4\0\5\122\1\u0250\12\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\2\122\1\u0251\15\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\2\122\1\u0252\15\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\1\122"+
"\1\u0255\16\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\5\122\1\u0256\12\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\11\122\1\u0257\6\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\2\122\1\u0258\15\122"+
"\1\u0253\16\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\5\122\1\u0254\12\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\11\122\1\u0255\6\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\2\122\1\u0256\15\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\5\122"+
"\1\u0259\12\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\6\122\1\u025a\11\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\15\122\1\u025b\2\122\35\0\10\122"+
"\1\u025c\5\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\1\u0257\12\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\6\122\1\u0258\11\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\15\122\1\u0259\2\122\35\0\10\122"+
"\1\u025a\5\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\4\122"+
"\1\u025d\13\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\11\122\1\u025e\6\122\35\0\14\122\1\u025f\1\122"+
"\1\u025b\13\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\11\122\1\u025c\6\122\35\0\14\122\1\u025d\1\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\10\122"+
"\1\u0260\5\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\22\0\7\u01d8\1\u01d9\1\u0261\101\u01d8\13\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\14\26\1\u0262\3\26\35\0"+
"\14\26\1\u0263\1\26\2\0\7\26\1\0\2\26\3\0"+
"\1\u025e\5\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\22\0\7\u01d8\1\u01d9\1\u025f\101\u01d8\13\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\14\26\1\u0260\3\26\35\0"+
"\14\26\1\u0261\1\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\2\26\1\u0264\15\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\1\26\1\u0265\16\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\5\26\1\u0266\12\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\4\26\1\u0267"+
"\2\26\1\u0262\15\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\1\26\1\u0263\16\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\5\26\1\u0264\12\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\4\26\1\u0265"+
"\13\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\11\26\1\u0268\6\26\22\0\45\u0114\1\u0269\44\u0114\6\u018b"+
"\1\0\35\u018b\1\0\1\u018b\1\u0115\43\u018b\13\0\14\26"+
"\1\u026a\1\26\2\0\7\26\1\0\2\26\3\0\20\26"+
"\35\0\14\26\1\u026b\1\26\2\0\7\26\1\0\2\26"+
"\3\0\20\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\5\26\1\u026c\12\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\2\26\1\u026d\15\26\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\12\26\1\u026e\5\26"+
"\35\0\4\26\1\u026f\11\26\2\0\7\26\1\0\2\26"+
"\3\0\20\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\10\26\1\u0270\7\26\35\0\14\26\1\u0271\1\26"+
"\2\0\7\26\1\0\2\26\3\0\20\26\35\0\6\26"+
"\1\u0272\7\26\2\0\7\26\1\0\2\26\3\0\20\26"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\14\122"+
"\1\u0273\3\122\35\0\14\122\1\u0274\1\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\2\122\1\u0275\15\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\1\122\1\u0276\16\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\5\122"+
"\1\u0277\12\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\4\122\1\u0278\13\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\11\122\1\u0279\6\122\35\0\14\122"+
"\1\u027a\1\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\14\122\1\u027b\1\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\5\122\1\u027c\12\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\2\122\1\u027d\15\122\35\0\16\122"+
"\2\0\7\122\1\0\1\122\4\0\12\122\1\u027e\5\122"+
"\35\0\4\122\1\u027f\11\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\10\122\1\u0280\7\122\35\0\14\122\1\u0281\1\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\6\122"+
"\1\u0282\7\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\11\26"+
"\1\u0283\6\26\35\0\14\26\1\u0284\1\26\2\0\7\26"+
"\1\0\2\26\3\0\20\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\2\26\1\u0285\15\26\35\0\14\26"+
"\1\u0286\1\26\2\0\7\26\1\0\2\26\3\0\20\26"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\5\26"+
"\1\u0287\12\26\35\0\14\26\1\u0288\1\26\2\0\7\26"+
"\1\0\2\26\3\0\20\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\1\u0289\17\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\11\26\1\u028a\6\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\11\26\1\u028b"+
"\6\26\35\0\14\26\1\u028c\1\26\2\0\7\26\1\0"+
"\2\26\3\0\20\26\35\0\16\122\2\0\7\122\1\0"+
"\1\122\4\0\11\122\1\u028d\6\122\35\0\14\122\1\u028e"+
"\11\26\1\u0266\6\26\22\0\6\u018b\1\0\35\u018b\1\0"+
"\1\u018b\1\u0115\43\u018b\13\0\14\26\1\u0267\1\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\14\26\1\u0268"+
"\1\26\2\0\7\26\1\0\2\26\3\0\20\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\5\26\1\u0269"+
"\12\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\2\26\1\u026a\15\26\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\12\26\1\u026b\5\26\35\0\4\26\1\u026c"+
"\11\26\2\0\7\26\1\0\2\26\3\0\20\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\10\26\1\u026d"+
"\7\26\35\0\14\26\1\u026e\1\26\2\0\7\26\1\0"+
"\2\26\3\0\20\26\35\0\6\26\1\u026f\7\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\16\122\2\0"+
"\7\122\1\0\1\122\4\0\14\122\1\u0270\3\122\35\0"+
"\14\122\1\u0271\1\122\2\0\7\122\1\0\1\122\4\0"+
"\20\122\35\0\16\122\2\0\7\122\1\0\1\122\4\0"+
"\2\122\1\u0272\15\122\35\0\16\122\2\0\7\122\1\0"+
"\1\122\4\0\1\122\1\u0273\16\122\35\0\16\122\2\0"+
"\7\122\1\0\1\122\4\0\5\122\1\u0274\12\122\35\0"+
"\16\122\2\0\7\122\1\0\1\122\4\0\4\122\1\u0275"+
"\13\122\35\0\16\122\2\0\7\122\1\0\1\122\4\0"+
"\11\122\1\u0276\6\122\35\0\14\122\1\u0277\1\122\2\0"+
"\7\122\1\0\1\122\4\0\20\122\35\0\14\122\1\u0278"+
"\1\122\2\0\7\122\1\0\1\122\4\0\20\122\35\0"+
"\16\122\2\0\7\122\1\0\1\122\4\0\2\122\1\u028f"+
"\15\122\35\0\14\122\1\u0290\1\122\2\0\7\122\1\0"+
"\1\122\4\0\20\122\35\0\16\122\2\0\7\122\1\0"+
"\1\122\4\0\5\122\1\u0291\12\122\35\0\14\122\1\u0292"+
"\1\122\2\0\7\122\1\0\1\122\4\0\20\122\35\0"+
"\16\122\2\0\7\122\1\0\1\122\4\0\1\u0293\17\122"+
"\16\122\2\0\7\122\1\0\1\122\4\0\5\122\1\u0279"+
"\12\122\35\0\16\122\2\0\7\122\1\0\1\122\4\0"+
"\2\122\1\u027a\15\122\35\0\16\122\2\0\7\122\1\0"+
"\1\122\4\0\12\122\1\u027b\5\122\35\0\4\122\1\u027c"+
"\11\122\2\0\7\122\1\0\1\122\4\0\20\122\35\0"+
"\16\122\2\0\7\122\1\0\1\122\4\0\10\122\1\u027d"+
"\7\122\35\0\14\122\1\u027e\1\122\2\0\7\122\1\0"+
"\1\122\4\0\20\122\35\0\6\122\1\u027f\7\122\2\0"+
"\7\122\1\0\1\122\4\0\20\122\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\11\26\1\u0280\6\26\35\0"+
"\14\26\1\u0281\1\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\2\26\1\u0282\15\26\35\0\14\26\1\u0283\1\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\5\26\1\u0284\12\26\35\0"+
"\14\26\1\u0285\1\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\16\26\2\0\7\26\1\0\2\26\3\0"+
"\1\u0286\17\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\11\26\1\u0287\6\26\35\0\16\26\2\0\7\26"+
"\1\0\2\26\3\0\11\26\1\u0288\6\26\35\0\14\26"+
"\1\u0289\1\26\2\0\7\26\1\0\2\26\3\0\20\26"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\11\122"+
"\1\u0294\6\122\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\11\122\1\u0295\6\122\35\0\14\122\1\u0296\1\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\5\26\1\u0297\12\26"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\10\26"+
"\1\u0298\7\26\35\0\14\26\1\u0299\1\26\2\0\7\26"+
"\1\0\2\26\3\0\20\26\35\0\12\26\1\u029a\3\26"+
"\2\0\7\26\1\0\2\26\3\0\20\26\35\0\10\26"+
"\1\u029b\5\26\2\0\7\26\1\0\2\26\3\0\20\26"+
"\35\0\16\26\2\0\7\26\1\0\2\26\3\0\5\26"+
"\1\u029c\12\26\35\0\16\122\2\0\7\122\1\0\1\122"+
"\4\0\5\122\1\u029d\12\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\10\122\1\u029e\7\122\35\0\14\122"+
"\1\u029f\1\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\12\122\1\u02a0\3\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\35\0\10\122\1\u02a1\5\122\2\0\7\122"+
"\1\u028a\6\122\35\0\14\122\1\u028b\1\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\5\122\1\u02a2\12\122\35\0\16\26"+
"\2\0\7\26\1\0\2\26\3\0\4\26\1\u02a3\13\26"+
"\35\0\4\26\1\u02a4\11\26\2\0\7\26\1\0\2\26"+
"\3\0\20\26\35\0\16\26\2\0\7\26\1\0\2\26"+
"\3\0\16\26\1\u02a5\1\26\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\4\122\1\u02a6\13\122\35\0\4\122"+
"\1\u02a7\11\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\16\122"+
"\1\u02a8\1\122\35\0\14\26\1\u02a9\1\26\2\0\7\26"+
"\1\0\2\26\3\0\20\26\35\0\14\122\1\u02aa\1\122"+
"\2\0\7\122\1\0\1\122\4\0\20\122\35\0\12\26"+
"\1\u02ab\3\26\2\0\7\26\1\0\2\26\3\0\20\26"+
"\35\0\12\122\1\u02ac\3\122\2\0\7\122\1\0\1\122"+
"\4\0\20\122\22\0";
"\1\0\1\122\4\0\2\122\1\u028c\15\122\35\0\14\122"+
"\1\u028d\1\122\2\0\7\122\1\0\1\122\4\0\20\122"+
"\35\0\16\122\2\0\7\122\1\0\1\122\4\0\5\122"+
"\1\u028e\12\122\35\0\14\122\1\u028f\1\122\2\0\7\122"+
"\1\0\1\122\4\0\20\122\35\0\16\122\2\0\7\122"+
"\1\0\1\122\4\0\1\u0290\17\122\35\0\16\122\2\0"+
"\7\122\1\0\1\122\4\0\11\122\1\u0291\6\122\35\0"+
"\16\122\2\0\7\122\1\0\1\122\4\0\11\122\1\u0292"+
"\6\122\35\0\14\122\1\u0293\1\122\2\0\7\122\1\0"+
"\1\122\4\0\20\122\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\5\26\1\u0294\12\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\10\26\1\u0295\7\26\35\0"+
"\14\26\1\u0296\1\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\12\26\1\u0297\3\26\2\0\7\26\1\0"+
"\2\26\3\0\20\26\35\0\10\26\1\u0298\5\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\16\26\2\0"+
"\7\26\1\0\2\26\3\0\5\26\1\u0299\12\26\35\0"+
"\16\122\2\0\7\122\1\0\1\122\4\0\5\122\1\u029a"+
"\12\122\35\0\16\122\2\0\7\122\1\0\1\122\4\0"+
"\10\122\1\u029b\7\122\35\0\14\122\1\u029c\1\122\2\0"+
"\7\122\1\0\1\122\4\0\20\122\35\0\12\122\1\u029d"+
"\3\122\2\0\7\122\1\0\1\122\4\0\20\122\35\0"+
"\10\122\1\u029e\5\122\2\0\7\122\1\0\1\122\4\0"+
"\20\122\35\0\16\122\2\0\7\122\1\0\1\122\4\0"+
"\5\122\1\u029f\12\122\35\0\16\26\2\0\7\26\1\0"+
"\2\26\3\0\4\26\1\u02a0\13\26\35\0\4\26\1\u02a1"+
"\11\26\2\0\7\26\1\0\2\26\3\0\20\26\35\0"+
"\16\26\2\0\7\26\1\0\2\26\3\0\16\26\1\u02a2"+
"\1\26\35\0\16\122\2\0\7\122\1\0\1\122\4\0"+
"\4\122\1\u02a3\13\122\35\0\4\122\1\u02a4\11\122\2\0"+
"\7\122\1\0\1\122\4\0\20\122\35\0\16\122\2\0"+
"\7\122\1\0\1\122\4\0\16\122\1\u02a5\1\122\35\0"+
"\14\26\1\u02a6\1\26\2\0\7\26\1\0\2\26\3\0"+
"\20\26\35\0\14\122\1\u02a7\1\122\2\0\7\122\1\0"+
"\1\122\4\0\20\122\35\0\12\26\1\u02a8\3\26\2\0"+
"\7\26\1\0\2\26\3\0\20\26\35\0\12\122\1\u02a9"+
"\3\122\2\0\7\122\1\0\1\122\4\0\20\122\22\0";
private static int [] zzUnpackTrans() {
int [] result = new int[37518];
int [] result = new int[37370];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -1025,12 +1023,12 @@ public class _GroovyLexer extends GroovyLexerBase implements FlexLexer {
"\1\11\1\1\5\11\47\1\1\0\4\1\2\11\1\1"+
"\1\0\23\1\3\11\3\1\1\11\2\0\36\1\5\11"+
"\1\0\1\11\61\1\2\11\1\0\15\1\2\0\3\1"+
"\3\0\1\1\7\0\34\1\1\11\56\1\2\11\1\0"+
"\16\1\1\0\1\1\5\0\70\1\1\11\1\0\1\1"+
"\1\0\11\1\2\0\51\1\1\0\113\1";
"\3\0\2\1\6\0\34\1\1\11\56\1\2\11\1\0"+
"\16\1\1\0\1\1\4\0\70\1\1\11\1\0\1\1"+
"\1\0\11\1\1\0\51\1\1\0\112\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[684];
int [] result = new int[681];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -128,12 +128,10 @@ mSINGLE_QUOTED_STRING_BEGIN = "\'" ( {mSTRING_ESC}
| [^\\\'\r\n]
| "$")*
mSINGLE_QUOTED_STRING = {mSINGLE_QUOTED_STRING_BEGIN} \'
mTRIPLE_QUOTED_STRING = "\'\'\'" ({mSTRING_ESC}
| \"
| "$"
| [^\']
mTRIPLE_QUOTED_STRING = \'\'\' ({mSTRING_ESC}
| [^\\']
| {mSTRING_NL}
| \'(\')?[^\'] )* (\'\'\' | \\)?
| \'(\')?[^'] )* (\'{1,3} | \\)?
mSTRING_LITERAL = {mTRIPLE_QUOTED_STRING} | {mSINGLE_QUOTED_STRING}
@@ -124,6 +124,30 @@ class ExpressionsParsingTest extends GroovyParsingTestCase {
void testgstring$str9() throws Throwable { doTest() }
void teststring$singleQuoted() { doTest() }
void teststring$tripleSingleQuoted$ok() { doTest() }
void teststring$tripleSingleQuoted$err0() { doTest() }
void teststring$tripleSingleQuoted$err1() { doTest() }
void teststring$tripleSingleQuoted$err2() { doTest() }
void teststring$tripleSingleQuoted$err3() { doTest() }
void teststring$tripleSingleQuoted$err4() { doTest() }
void teststring$tripleSingleQuoted$err5() { doTest() }
void teststring$tripleSingleQuoted$unfinished0() { doTest() }
void teststring$tripleSingleQuoted$unfinished1() { doTest() }
void teststring$tripleSingleQuoted$unfinished2() { doTest() }
void teststring$tripleSingleQuoted$unfinished3() { doTest() }
void testgstring$str_error1() throws Throwable { doTest() }
void testgstring$str_error2() throws Throwable { doTest() }
@@ -0,0 +1,37 @@
'
''
'\'
'\''
'\\'
'foo
'foo'
'\t\n'
'\j\i'
-----
Groovy script
Literal
PsiElement(string)(''')
PsiElement(new line)('\n')
Literal
PsiElement(string)('''')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''\'')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''\''')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''\\'')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''foo')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''foo'')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''\t\n'')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''\j\i'')
@@ -0,0 +1,5 @@
'''
-----
Groovy script
Literal
PsiElement(string)(''''')
@@ -0,0 +1,5 @@
''''
-----
Groovy script
Literal
PsiElement(string)('''''')
@@ -0,0 +1,5 @@
'''''
-----
Groovy script
Literal
PsiElement(string)(''''''')
@@ -0,0 +1,5 @@
'''\'
-----
Groovy script
Literal
PsiElement(string)(''''\'')
@@ -0,0 +1,5 @@
'''\''
-----
Groovy script
Literal
PsiElement(string)(''''\''')
@@ -0,0 +1,5 @@
'''\'''
-----
Groovy script
Literal
PsiElement(string)(''''\'''')
@@ -0,0 +1,58 @@
''''''
'''\\'''
'''\
'''
'''\
'''
'''\\
'''
'''\'''
'''
'''
'''
'''foo'''
'''\r\n'''
'''\j\i'''
-----
Groovy script
Literal
PsiElement(string)('''''''')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''''\\'''')
PsiElement(new line)('\n\n')
Literal
PsiElement(string)(''''\\n'''')
PsiElement(new line)('\n\n')
Literal
PsiElement(string)(''''\\n\n\n'''')
PsiElement(new line)('\n\n')
Literal
PsiElement(string)(''''\\\n'''')
PsiElement(new line)('\n\n')
Literal
PsiElement(string)(''''\'''\n'''')
PsiElement(new line)('\n\n')
Literal
PsiElement(string)(''''\n\n\n'''')
PsiElement(new line)('\n\n')
Literal
PsiElement(string)(''''foo'''')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''''\r\n'''')
PsiElement(new line)('\n')
Literal
PsiElement(string)(''''\j\i'''')
PsiElement(new line)('\n')
@@ -0,0 +1,5 @@
'''foo
-----
Groovy script
Literal
PsiElement(string)(''''foo')
@@ -0,0 +1,5 @@
'''foo'
-----
Groovy script
Literal
PsiElement(string)(''''foo'')
@@ -0,0 +1,5 @@
'''foo''
-----
Groovy script
Literal
PsiElement(string)(''''foo''')
@@ -0,0 +1,6 @@
'''foo''
bar
-----
Groovy script
Literal
PsiElement(string)(''''foo''\nbar')