Merge pull request #389 from ice1k/fix-new-pragma-parser

Trying to allow invalid syntax as "bad character" instead of crashing…
This commit is contained in:
Rik 2019-02-17 20:42:29 +01:00 committed by GitHub
commit ec419633b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 377 additions and 376 deletions

View File

@ -206,7 +206,7 @@ nhaddock_start = {left_brace}{dash}{white_char}?{vertical_bar}
<OPTIONS_GHC> {
<<EOF>> {
yybegin(YYINITIAL);
return HS_NOT_TERMINATED_OPTIONS_GHC;
return com.intellij.psi.TokenType.BAD_CHARACTER;
}
{pragma_end} {
@ -228,6 +228,11 @@ nhaddock_start = {left_brace}{dash}{white_char}?{vertical_bar}
[\-a-zA-Z0-9_=]+ {
return HS_ONE_PRAGMA;
}
#|\-\} {
yybegin(YYINITIAL);
return com.intellij.psi.TokenType.BAD_CHARACTER;
}
}
{pragma_start} {
@ -273,10 +278,6 @@ nhaddock_start = {left_brace}{dash}{white_char}?{vertical_bar}
{haddock} { return HS_HADDOCK; }
// TODO: we maybe need to delete these two.
{pragma_start} { return HS_PRAGMA_START; }
{pragma_end} { return HS_PRAGMA_END; }
{comment} { return HS_COMMENT; }
{white_space} { return com.intellij.psi.TokenType.WHITE_SPACE; }

View File

@ -82,19 +82,19 @@ public class _HaskellLexer implements FlexLexer {
"\1\14\1\1\3\4\1\15\1\16\1\17\1\20\1\21"+
"\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31"+
"\1\32\1\33\1\34\1\35\1\36\3\5\10\37\2\3"+
"\1\0\1\40\2\0\1\41\5\0\1\4\1\42\1\43"+
"\3\5\1\44\4\5\1\45\2\5\3\0\1\46\5\0"+
"\1\21\1\47\4\0\1\50\1\51\4\5\1\52\1\53"+
"\1\54\1\55\1\56\3\0\1\57\1\0\1\60\6\0"+
"\1\61\11\5\1\62\2\5\1\0\1\63\1\0\1\63"+
"\3\46\1\64\1\65\1\66\17\0\1\21\20\0\1\67"+
"\1\70\4\5\1\71\1\60\7\0\6\5\1\72\1\73"+
"\2\5\1\74\1\0\1\46\1\75\1\46\27\0\1\76"+
"\1\77\2\5\1\60\3\0\1\100\6\5\1\101\4\0"+
"\1\5\1\102\1\0\1\103\1\104\1\5\1\105\4\5"+
"\5\0\1\106\2\5\1\107\1\5\1\110\2\0\1\75"+
"\2\0\1\111\1\0\1\112\2\0\2\75\23\0\1\113"+
"\2\0\1\46\5\0\1\114\1\115\1\116\3\0\1\75";
"\1\40\2\41\2\0\1\42\5\0\1\43\1\44\3\5"+
"\1\45\4\5\1\46\2\5\3\0\1\47\5\0\1\21"+
"\1\50\4\0\1\51\1\52\4\5\1\53\1\54\1\55"+
"\1\56\1\57\3\0\1\60\1\0\1\40\1\61\6\0"+
"\11\5\1\62\2\5\1\0\1\63\1\0\1\63\3\47"+
"\1\64\1\65\1\66\17\0\1\21\20\0\1\67\1\70"+
"\4\5\1\71\1\61\7\0\6\5\1\72\1\73\2\5"+
"\1\74\1\0\1\47\1\75\1\47\27\0\1\76\1\77"+
"\2\5\1\61\3\0\1\100\6\5\1\101\4\0\1\5"+
"\1\102\1\0\1\103\1\104\1\5\1\105\4\5\5\0"+
"\1\106\2\5\1\107\1\5\1\110\2\0\1\75\2\0"+
"\1\111\1\0\1\112\2\0\2\75\23\0\1\113\2\0"+
"\1\47\5\0\1\114\1\115\1\116\3\0\1\75";
private static int [] zzUnpackAction() {
int [] result = new int[325];
@ -130,15 +130,15 @@ public class _HaskellLexer implements FlexLexer {
"\0\u0960\0\u0960\0\u0960\0\u0960\0\u01e0\0\u01e0\0\u01e0\0\u01e0"+
"\0\u0c60\0\u01e0\0\u0cc0\0\u01e0\0\u01e0\0\u0d20\0\u0d80\0\u0de0"+
"\0\u01e0\0\u0e40\0\u0ea0\0\u0f00\0\u0f60\0\u0fc0\0\u1020\0\u1080"+
"\0\u10e0\0\u1140\0\u11a0\0\u1200\0\u1260\0\u0a20\0\u01e0\0\u12c0"+
"\0\u10e0\0\u1140\0\u11a0\0\u1200\0\u1260\0\u12c0\0\u0a20\0\u01e0"+
"\0\u1320\0\u1380\0\u13e0\0\u1440\0\u14a0\0\u05a0\0\u1500\0\u1560"+
"\0\u15c0\0\u1620\0\u05a0\0\u1680\0\u16e0\0\u1740\0\u17a0\0\u05a0"+
"\0\u1800\0\u1860\0\u18c0\0\u1920\0\u1980\0\u19e0\0\u1a40\0\u1aa0"+
"\0\u1b00\0\u1b60\0\u1bc0\0\u1c20\0\u01e0\0\u1c80\0\u1ce0\0\u0c60"+
"\0\u1d40\0\u01e0\0\u1da0\0\u1e00\0\u1e60\0\u1ec0\0\u1f20\0\u01e0"+
"\0\u01e0\0\u01e0\0\u01e0\0\u01e0\0\u1f80\0\u1080\0\u1fe0\0\u01e0"+
"\0\u2040\0\u20a0\0\u2100\0\u2160\0\u21c0\0\u2220\0\u2280\0\u22e0"+
"\0\u01e0\0\u2340\0\u23a0\0\u2400\0\u2460\0\u24c0\0\u2520\0\u2580"+
"\0\u2040\0\u01e0\0\u20a0\0\u2100\0\u2160\0\u21c0\0\u2220\0\u2280"+
"\0\u22e0\0\u2340\0\u23a0\0\u2400\0\u2460\0\u24c0\0\u2520\0\u2580"+
"\0\u25e0\0\u2640\0\u05a0\0\u26a0\0\u2700\0\u2760\0\u27c0\0\u27c0"+
"\0\u2820\0\u2880\0\u28e0\0\u2940\0\u1aa0\0\u1b00\0\u01e0\0\u29a0"+
"\0\u2a00\0\u2a60\0\u2ac0\0\u2b20\0\u2b80\0\u2be0\0\u2c40\0\u2ca0"+
@ -201,338 +201,339 @@ public class _HaskellLexer implements FlexLexer {
"\1\0\7\71\1\72\26\71\1\75\72\71\1\76\5\71"+
"\1\0\7\71\1\72\104\71\1\77\12\71\1\100\7\71"+
"\1\0\6\71\1\0\2\101\1\102\1\101\1\103\13\104"+
"\1\0\1\104\1\0\1\104\1\0\1\104\1\0\10\104"+
"\1\0\1\101\1\104\1\0\1\104\1\0\1\104\1\0"+
"\23\104\1\105\1\106\7\0\1\104\12\0\1\107\7\0"+
"\2\104\1\0\6\104\141\0\1\11\1\10\2\11\34\0"+
"\1\11\77\0\1\11\1\0\2\11\34\0\1\11\77\0"+
"\1\110\1\0\2\110\1\36\1\111\1\0\1\112\1\113"+
"\6\0\1\114\1\36\6\0\1\115\7\0\1\36\1\110"+
"\3\0\1\36\1\0\1\36\25\0\14\36\35\0\1\21"+
"\1\116\2\21\1\117\6\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\3\21\1\120\2\21\6\0\10\21"+
"\1\121\2\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\3\21\1\122\4\21\1\123\2\21"+
"\1\0\6\21\1\0\1\124\6\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\5\21\1\125\5\21\1\0\6\21\1\0"+
"\1\0\1\104\1\0\1\104\1\0\1\104\1\0\1\105"+
"\7\104\1\0\1\101\1\104\1\0\1\104\1\0\1\104"+
"\1\0\23\104\1\106\1\107\7\0\1\104\12\0\1\110"+
"\7\0\2\104\1\0\6\104\141\0\1\11\1\10\2\11"+
"\34\0\1\11\77\0\1\11\1\0\2\11\34\0\1\11"+
"\77\0\1\111\1\0\2\111\1\36\1\112\1\0\1\113"+
"\1\114\6\0\1\115\1\36\6\0\1\36\7\0\1\36"+
"\1\111\3\0\1\36\1\0\1\36\25\0\14\36\35\0"+
"\1\21\1\116\2\21\1\117\6\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\3\21\1\126"+
"\7\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\3\21\1\127\7\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\13\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\1\21\1\130\11\21\1\0\6\21\1\0\7\21\2\0"+
"\24\21\33\0\2\21\1\0\3\21\1\120\2\21\6\0"+
"\10\21\1\121\2\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\5\21\1\131\5\21\1\0"+
"\6\21\1\0\1\132\6\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\5\0\1\36\13\0\1\36\6\0\1\36\7\0\1\36"+
"\4\0\1\36\1\0\1\36\25\0\14\36\16\0\1\133"+
"\16\0\13\25\1\0\6\25\1\0\7\25\2\0\1\25"+
"\1\0\1\25\1\0\1\25\1\0\24\25\33\0\2\25"+
"\1\0\6\25\11\0\1\134\14\0\1\26\1\27\3\0"+
"\1\26\2\0\1\26\1\0\1\135\1\0\1\134\24\0"+
"\1\26\76\0\2\27\3\0\1\27\2\0\1\27\30\0"+
"\1\27\55\0\1\36\13\0\1\36\4\0\1\26\1\27"+
"\1\136\2\0\1\26\2\0\1\26\1\0\1\36\1\137"+
"\3\0\1\36\1\0\1\36\17\0\1\26\5\0\5\36"+
"\1\53\6\36\40\0\1\134\4\0\1\140\7\0\1\26"+
"\1\27\3\0\1\26\2\141\1\26\1\140\1\135\1\0"+
"\1\134\24\0\1\26\51\0\1\11\1\0\2\11\33\0"+
"\1\135\1\11\103\0\1\36\13\0\1\36\6\0\1\36"+
"\7\0\1\36\4\0\1\36\1\0\1\36\25\0\14\36"+
"\27\0\2\142\1\0\16\142\1\143\51\142\1\0\14\142"+
"\1\144\27\142\2\106\1\145\16\106\1\146\52\106\1\145"+
"\43\106\5\0\1\36\13\0\1\36\4\0\1\26\1\27"+
"\1\36\2\0\1\26\2\0\1\26\1\0\1\36\1\137"+
"\3\0\1\36\1\0\1\36\17\0\1\26\5\0\14\36"+
"\34\0\1\36\13\0\1\36\6\0\1\52\7\0\1\36"+
"\4\0\1\36\1\0\1\36\25\0\14\36\34\0\1\36"+
"\13\21\1\36\2\21\4\0\1\36\1\21\2\0\1\21"+
"\3\0\1\36\3\0\1\21\1\36\1\21\1\36\25\0"+
"\14\36\16\0\2\21\1\0\6\21\5\0\1\36\13\0"+
"\1\36\6\0\1\36\7\0\1\36\4\0\1\36\1\0"+
"\1\36\25\0\5\36\1\54\6\36\34\0\1\36\13\0"+
"\1\36\6\0\1\36\7\0\1\36\4\0\1\36\1\0"+
"\1\36\25\0\13\36\1\51\35\0\13\147\1\0\4\147"+
"\3\0\2\147\1\0\2\147\1\0\1\147\1\150\1\0"+
"\1\147\1\0\1\147\1\0\1\147\1\0\17\147\1\0"+
"\3\147\5\0\1\150\2\0\1\151\2\0\1\152\20\0"+
"\2\147\1\0\6\147\30\0\1\153\115\0\13\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\1\21\1\154"+
"\3\21\1\155\6\0\10\21\1\156\2\21\1\0\6\21"+
"\2\21\1\0\6\21\6\0\3\21\1\122\4\21\1\123"+
"\2\21\1\0\6\21\1\0\1\124\6\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\5\21\1\125\5\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\3\21"+
"\1\126\7\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\3\21\1\127\7\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\13\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\5\21"+
"\1\157\2\0\1\71\261\0\1\160\43\0\1\161\233\0"+
"\1\162\43\0\1\163\152\0\1\164\102\0\13\165\1\0"+
"\4\165\3\0\2\165\1\0\2\165\1\0\1\165\1\166"+
"\1\0\1\165\1\0\1\165\1\0\1\165\1\0\17\165"+
"\1\0\3\165\5\0\1\166\2\0\1\167\2\0\1\170"+
"\20\0\2\165\1\0\6\165\1\0\2\101\1\102\1\101"+
"\34\0\1\101\77\0\2\101\1\102\1\101\34\0\1\101"+
"\1\0\1\101\124\0\1\171\115\0\13\104\1\0\1\104"+
"\1\0\1\104\1\0\1\104\1\0\10\104\2\0\1\104"+
"\1\0\1\104\1\0\1\104\1\0\23\104\11\0\1\104"+
"\22\0\2\104\1\0\6\104\2\142\1\0\16\142\1\143"+
"\51\142\1\0\44\142\1\0\1\110\1\0\2\110\1\0"+
"\1\111\1\0\1\112\1\113\6\0\1\114\20\0\1\110"+
"\105\0\1\172\2\0\1\173\136\0\1\174\140\0\1\175"+
"\1\176\1\0\1\177\134\0\1\200\132\0\1\36\13\0"+
"\1\36\6\0\1\36\7\0\1\36\4\0\1\36\1\0"+
"\1\36\25\0\14\36\13\0\1\201\21\0\1\21\1\202"+
"\4\21\1\203\4\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\13\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\2\21\1\204\3\21\6\0"+
"\7\21\1\205\3\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\1\21\1\206\5\21\1\207"+
"\3\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\13\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\1\210\5\21\6\0\6\21\1\211\4\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\13\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\4\21\1\212\1\21\6\0\13\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\1\213\5\21\6\0"+
"\13\21\1\0\6\21\1\0\1\214\6\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\6\21\1\215\4\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\11\0\1\216"+
"\154\0\1\217\1\0\1\220\2\0\1\217\2\0\1\217"+
"\30\0\1\217\7\0\1\220\66\0\1\221\4\0\1\221"+
"\2\0\1\221\30\0\1\221\50\0\1\222\1\223\1\0"+
"\2\224\1\36\32\222\1\36\1\224\3\222\1\36\27\222"+
"\1\36\1\222\1\36\1\222\5\36\20\222\1\0\11\222"+
"\40\0\1\135\132\0\1\225\2\0\1\225\30\0\1\225"+
"\57\0\3\226\5\0\1\226\6\0\1\226\2\0\3\226"+
"\2\0\1\226\3\0\1\226\14\0\2\226\1\0\2\226"+
"\3\0\1\226\37\0\1\226\103\0\1\227\53\0\1\142"+
"\2\0\1\142\2\0\1\142\1\230\2\0\1\142\4\0"+
"\2\231\1\0\1\142\1\232\1\231\1\233\1\0\1\231"+
"\3\0\1\234\2\0\2\142\1\235\1\236\1\237\1\240"+
"\1\241\1\242\2\0\1\243\1\244\1\0\1\245\1\246"+
"\1\242\1\237\1\0\1\231\2\0\1\237\2\142\32\0"+
"\1\142\2\0\1\142\12\0\1\247\13\0\1\247\6\0"+
"\1\247\7\0\1\247\4\0\1\247\1\0\1\247\23\0"+
"\1\227\1\0\14\247\30\0\4\250\2\0\1\106\2\0"+
"\1\106\2\0\1\106\1\251\2\0\1\106\4\0\2\106"+
"\1\0\1\106\1\252\1\106\1\253\1\0\1\106\2\0"+
"\1\250\1\254\2\0\2\106\1\255\1\256\1\257\1\260"+
"\1\261\1\262\2\0\1\263\1\264\1\0\1\265\1\266"+
"\1\262\1\257\1\0\1\106\2\0\1\257\2\106\32\0"+
"\1\106\2\0\1\106\13\0\13\147\1\0\6\147\1\0"+
"\7\147\1\150\1\0\1\147\1\0\1\147\1\0\1\147"+
"\1\0\24\147\4\0\1\150\2\0\1\151\2\0\1\152"+
"\20\0\2\147\1\0\6\147\6\0\13\147\1\0\2\147"+
"\5\0\1\147\2\0\1\147\7\0\1\147\1\0\1\147"+
"\60\0\2\147\1\0\6\147\1\0\1\267\1\0\2\267"+
"\1\270\33\0\1\267\44\0\1\271\37\0\13\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\2\21\1\272"+
"\3\21\6\0\3\21\1\273\7\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\2\21\1\274"+
"\10\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\3\21\1\275\7\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\13\165\1\0"+
"\6\165\1\0\7\165\1\166\1\0\1\165\1\0\1\165"+
"\1\0\1\165\1\0\24\165\4\0\1\166\2\0\1\167"+
"\2\0\1\170\20\0\2\165\1\0\6\165\6\0\13\165"+
"\1\0\2\165\5\0\1\165\2\0\1\165\7\0\1\165"+
"\1\0\1\165\60\0\2\165\1\0\6\165\124\0\1\276"+
"\13\0\1\172\2\0\16\172\1\277\116\172\17\0\1\300"+
"\127\0\1\301\140\0\1\302\135\0\1\303\5\0\1\304"+
"\140\0\1\305\132\0\1\306\135\0\1\307\12\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\13\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\1\310\5\21\6\0\10\21\1\311\2\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\3\21"+
"\1\312\7\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\13\21\1\0\6\21\1\0\1\313"+
"\6\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\1\314\12\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\13\21\1\0\6\21\1\0\1\315\6\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\3\21\1\316\7\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\13\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\1\317\5\21\6\0\6\21\1\320\4\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\3\21"+
"\1\321\7\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\130\0\1\322\35\0\1\217\4\0\1\217"+
"\2\0\1\217\30\0\1\217\61\0\1\134\14\0\1\221"+
"\4\0\1\221\2\0\1\221\3\0\1\134\24\0\1\221"+
"\50\0\1\222\2\0\135\222\1\0\1\323\1\0\2\323"+
"\34\0\1\323\5\0\1\324\36\0\1\324\31\0\1\222"+
"\1\323\1\0\2\325\34\222\1\325\5\222\1\324\36\222"+
"\1\324\31\222\33\0\1\326\2\0\1\326\30\0\1\326"+
"\76\0\2\231\3\0\1\231\2\0\1\231\30\0\1\231"+
"\3\0\1\227\106\0\1\327\7\0\1\330\5\0\1\331"+
"\66\0\3\332\5\0\1\332\6\0\1\332\2\0\3\332"+
"\2\0\1\332\3\0\1\332\14\0\2\332\1\0\2\332"+
"\3\0\1\332\37\0\1\332\47\0\1\242\10\0\1\333"+
"\2\0\1\334\1\0\1\335\13\0\1\142\67\0\1\142"+
"\2\0\2\142\4\0\1\142\2\0\1\142\1\0\1\142"+
"\2\0\3\142\2\0\20\142\1\0\3\142\12\0\1\142"+
"\13\0\1\142\67\0\1\327\5\0\1\336\133\0\1\142"+
"\147\0\1\142\113\0\1\337\11\0\1\340\3\0\1\341"+
"\10\0\1\142\1\0\1\342\124\0\1\142\142\0\1\336"+
"\136\0\1\342\5\0\1\142\114\0\1\327\10\0\1\142"+
"\137\0\1\142\7\0\1\142\61\0\1\247\13\0\1\247"+
"\6\0\1\247\7\0\1\247\4\0\1\247\1\0\1\247"+
"\25\0\14\247\30\0\4\250\14\0\1\106\17\0\1\250"+
"\131\0\1\106\2\0\1\106\30\0\1\106\112\0\1\343"+
"\7\0\1\344\5\0\1\345\66\0\3\106\5\0\1\106"+
"\6\0\1\106\2\0\3\106\2\0\1\106\3\0\1\106"+
"\14\0\2\106\1\0\2\106\3\0\1\106\37\0\1\106"+
"\47\0\1\262\10\0\1\346\2\0\1\347\1\0\1\350"+
"\13\0\1\106\67\0\1\106\2\0\2\106\4\0\1\106"+
"\2\0\1\106\1\0\1\106\2\0\3\106\2\0\20\106"+
"\1\0\3\106\12\0\1\106\13\0\1\106\67\0\1\343"+
"\5\0\1\351\133\0\1\106\147\0\1\106\113\0\1\106"+
"\11\0\1\352\3\0\1\353\10\0\1\106\1\0\1\354"+
"\124\0\1\106\142\0\1\351\136\0\1\354\5\0\1\106"+
"\114\0\1\343\10\0\1\106\137\0\1\106\7\0\1\106"+
"\162\0\1\271\37\0\3\21\1\355\7\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\4\21"+
"\1\356\6\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\12\21\1\357\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\7\21\1\360"+
"\3\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\1\172\1\361\17\172\1\277\116\172\13\0\1\362"+
"\132\0\1\363\137\0\1\303\140\0\1\172\141\0\1\172"+
"\144\0\1\364\132\0\1\303\134\0\13\21\1\0\6\21"+
"\1\0\3\21\1\365\3\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\13\21\1\0\6\21\1\0\1\366\6\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\7\21\1\367\3\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\1\370\12\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\12\21\1\371\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\13\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\372\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\13\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\1\21\1\373\4\21\6\0\6\21\1\374\4\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\1\375\132\0\1\323\1\0\2\323\34\0\1\323\76\0"+
"\1\324\1\376\1\377\135\324\1\222\1\323\1\0\2\325"+
"\34\222\1\325\76\222\33\0\1\326\2\0\1\326\30\0"+
"\1\326\3\0\1\227\116\0\1\142\127\0\1\142\164\0"+
"\1\142\57\0\3\332\5\0\1\332\6\0\1\332\2\0"+
"\3\332\2\0\1\332\3\0\1\332\14\0\2\332\1\0"+
"\2\332\3\0\1\332\3\0\1\227\33\0\1\332\66\0"+
"\1\142\141\0\1\142\114\0\1\142\24\0\1\142\136\0"+
"\1\142\132\0\1\142\16\0\1\227\126\0\1\142\112\0"+
"\1\142\152\0\1\142\141\0\1\106\127\0\1\106\164\0"+
"\1\106\126\0\1\106\141\0\1\106\114\0\1\106\24\0"+
"\1\106\136\0\1\106\140\0\1\106\112\0\1\106\152\0"+
"\1\106\75\0\13\21\1\0\6\21\1\0\7\21\1\0"+
"\1\u0100\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\6\21\6\0\5\21\1\u0101\5\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\3\21\1\u0102\7\21\1\0\6\21\1\0\7\21"+
"\6\0\1\21\1\130\11\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\6\21\1\172\1\0\17\172\1\277"+
"\116\172\20\0\1\u0103\131\0\1\304\142\0\1\172\130\0"+
"\5\21\1\u0104\1\21\1\u0105\3\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\4\21\1\u0106"+
"\6\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\33\0\2\21\1\0\6\21\6\0\5\21\1\131\5\21"+
"\1\0\6\21\1\0\1\132\6\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\13\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\1\u0107\5\21\6\0\13\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\1\21\1\u0108\1\0\6\21\6\0"+
"\5\21\1\u0109\5\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\1\u010a\12\21\1\0\6\21"+
"\6\21\5\0\1\36\13\0\1\36\6\0\1\36\7\0"+
"\1\36\4\0\1\36\1\0\1\36\25\0\14\36\16\0"+
"\1\133\16\0\13\25\1\0\6\25\1\0\7\25\2\0"+
"\1\25\1\0\1\25\1\0\1\25\1\0\24\25\33\0"+
"\2\25\1\0\6\25\11\0\1\134\14\0\1\26\1\27"+
"\3\0\1\26\2\0\1\26\1\0\1\135\1\0\1\134"+
"\24\0\1\26\76\0\2\27\3\0\1\27\2\0\1\27"+
"\30\0\1\27\55\0\1\36\13\0\1\36\4\0\1\26"+
"\1\27\1\136\2\0\1\26\2\0\1\26\1\0\1\36"+
"\1\137\3\0\1\36\1\0\1\36\17\0\1\26\5\0"+
"\5\36\1\53\6\36\40\0\1\134\4\0\1\140\7\0"+
"\1\26\1\27\3\0\1\26\2\141\1\26\1\140\1\135"+
"\1\0\1\134\24\0\1\26\51\0\1\11\1\0\2\11"+
"\33\0\1\135\1\11\103\0\1\36\13\0\1\36\6\0"+
"\1\36\7\0\1\36\4\0\1\36\1\0\1\36\25\0"+
"\14\36\27\0\2\142\1\0\16\142\1\143\51\142\1\0"+
"\14\142\1\144\27\142\2\107\1\145\16\107\1\146\52\107"+
"\1\145\43\107\5\0\1\36\13\0\1\36\4\0\1\26"+
"\1\27\1\36\2\0\1\26\2\0\1\26\1\0\1\36"+
"\1\137\3\0\1\36\1\0\1\36\17\0\1\26\5\0"+
"\14\36\34\0\1\36\13\0\1\36\6\0\1\52\7\0"+
"\1\36\4\0\1\36\1\0\1\36\25\0\14\36\34\0"+
"\1\36\13\21\1\36\2\21\4\0\1\36\1\21\2\0"+
"\1\21\3\0\1\36\3\0\1\21\1\36\1\21\1\36"+
"\25\0\14\36\16\0\2\21\1\0\6\21\5\0\1\36"+
"\13\0\1\36\6\0\1\36\7\0\1\36\4\0\1\36"+
"\1\0\1\36\25\0\5\36\1\54\6\36\34\0\1\36"+
"\13\0\1\36\6\0\1\36\7\0\1\36\4\0\1\36"+
"\1\0\1\36\25\0\13\36\1\51\35\0\13\147\1\0"+
"\4\147\3\0\2\147\1\0\2\147\1\0\1\147\1\150"+
"\1\0\1\147\1\0\1\147\1\0\1\147\1\0\17\147"+
"\1\0\3\147\5\0\1\150\2\0\1\151\2\0\1\152"+
"\20\0\2\147\1\0\6\147\30\0\1\153\115\0\13\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\1\21"+
"\1\154\3\21\1\155\6\0\10\21\1\156\2\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\13\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\5\21\1\157\2\0\1\71\261\0\1\160\43\0\1\161"+
"\233\0\1\162\43\0\1\163\152\0\1\164\102\0\13\165"+
"\1\0\4\165\3\0\2\165\1\0\2\165\1\0\1\165"+
"\1\166\1\0\1\165\1\0\1\165\1\0\1\165\1\0"+
"\17\165\1\0\3\165\5\0\1\166\2\0\1\167\2\0"+
"\1\170\20\0\2\165\1\0\6\165\1\0\2\101\1\102"+
"\1\101\34\0\1\101\77\0\2\101\1\102\1\101\34\0"+
"\1\101\1\0\1\101\124\0\1\171\115\0\13\104\1\0"+
"\1\104\1\0\1\104\1\0\1\104\1\0\10\104\2\0"+
"\1\104\1\0\1\104\1\0\1\104\1\0\23\104\11\0"+
"\1\104\22\0\2\104\1\0\6\104\6\0\13\104\1\0"+
"\1\104\1\0\1\104\1\0\1\104\1\0\10\104\2\0"+
"\1\104\1\0\1\104\1\0\1\104\1\0\23\104\11\0"+
"\1\104\17\0\1\172\2\0\2\104\1\0\6\104\2\142"+
"\1\0\16\142\1\143\51\142\1\0\44\142\1\0\1\111"+
"\1\0\2\111\1\0\1\112\1\0\1\113\1\114\6\0"+
"\1\115\20\0\1\111\105\0\1\173\2\0\1\174\136\0"+
"\1\175\140\0\1\176\1\177\1\0\1\200\134\0\1\201"+
"\133\0\1\21\1\202\4\21\1\203\4\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\13\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\2\21"+
"\1\u010b\3\21\12\0\1\u010c\126\0\4\377\14\0\1\u010d"+
"\6\0\1\u010e\10\0\1\377\77\0\1\377\1\0\2\377"+
"\14\0\1\u010d\6\0\1\u010e\10\0\1\377\104\0\1\u010f"+
"\1\u0110\136\0\3\21\1\u0111\7\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\10\0\1\304\135\0"+
"\11\21\1\u0112\1\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\4\21\1\u0113\6\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\13\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\1\u0114\5\21\6\0\4\21\1\u0115\6\21\1\0\6\21"+
"\1\204\3\21\6\0\7\21\1\205\3\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\3\21"+
"\1\u0116\7\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\123\0\1\u0117\143\0\1\u0118\40\0\1\u0119"+
"\121\0\1\u011a\156\0\1\u011b\114\0\3\21\1\u011c\7\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\13\21\1\0\6\21\1\0\7\21\1\0\1\u011d"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\1\21"+
"\1\206\5\21\1\207\3\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\6\21\6\0\13\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\1\210\5\21\6\0"+
"\6\21\1\211\4\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\13\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\1\21\1\u011e\1\0\6\21\17\0\1\u011f"+
"\131\0\1\u0120\126\0\1\324\1\u0121\1\377\2\u0122\1\0"+
"\32\324\1\0\1\u0122\3\324\1\0\27\324\1\0\1\324"+
"\1\0\1\324\5\0\20\324\1\0\11\324\14\0\1\u0123"+
"\260\0\1\u0124\10\0\1\u0125\2\0\1\u0126\144\0\1\u0127"+
"\251\0\1\u0128\10\0\1\u0121\1\377\2\u0121\14\0\1\u010d"+
"\6\0\1\u010e\10\0\1\u0121\76\0\1\324\1\u0121\1\377"+
"\2\u0122\34\324\1\u0122\76\324\132\0\1\u0129\13\0\1\u012a"+
"\266\0\1\u012b\36\0\1\u012c\113\0\1\u012d\135\0\1\u012e"+
"\162\0\1\u012f\121\0\1\u0130\260\0\1\u0131\137\0\1\u0132"+
"\14\0\1\u0133\140\0\1\u0134\137\0\1\u0135\260\0\1\u0136"+
"\22\0\1\u0137\137\0\1\u0138\245\0\1\u0139\136\0\1\u013a"+
"\33\0\1\u013b\135\0\1\u013c\137\0\1\u013d\141\0\1\u013e"+
"\131\0\1\u013f\260\0\1\u0140\137\0\1\u0141\23\0\1\u0142"+
"\131\0\1\u0143\140\0\1\u0144\252\0\1\u0145\14\0\1\376"+
"\1\377\135\0";
"\24\21\33\0\2\21\1\0\4\21\1\212\1\21\6\0"+
"\13\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\1\213\5\21\6\0\13\21\1\0\6\21\1\0\1\214"+
"\6\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\6\21\1\215"+
"\4\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\11\0\1\216\154\0\1\217\1\0\1\220\2\0"+
"\1\217\2\0\1\217\30\0\1\217\7\0\1\220\66\0"+
"\1\221\4\0\1\221\2\0\1\221\30\0\1\221\50\0"+
"\1\222\1\223\1\0\2\224\1\36\32\222\1\36\1\224"+
"\3\222\1\36\27\222\1\36\1\222\1\36\1\222\5\36"+
"\20\222\1\0\11\222\40\0\1\135\132\0\1\225\2\0"+
"\1\225\30\0\1\225\57\0\3\226\5\0\1\226\6\0"+
"\1\226\2\0\3\226\2\0\1\226\3\0\1\226\14\0"+
"\2\226\1\0\2\226\3\0\1\226\37\0\1\226\103\0"+
"\1\227\53\0\1\142\2\0\1\142\2\0\1\142\1\230"+
"\2\0\1\142\4\0\2\231\1\0\1\142\1\232\1\231"+
"\1\233\1\0\1\231\3\0\1\234\2\0\2\142\1\235"+
"\1\236\1\237\1\240\1\241\1\242\2\0\1\243\1\244"+
"\1\0\1\245\1\246\1\242\1\237\1\0\1\231\2\0"+
"\1\237\2\142\32\0\1\142\2\0\1\142\12\0\1\247"+
"\13\0\1\247\6\0\1\247\7\0\1\247\4\0\1\247"+
"\1\0\1\247\23\0\1\227\1\0\14\247\30\0\4\250"+
"\2\0\1\107\2\0\1\107\2\0\1\107\1\251\2\0"+
"\1\107\4\0\2\107\1\0\1\107\1\252\1\107\1\253"+
"\1\0\1\107\2\0\1\250\1\254\2\0\2\107\1\255"+
"\1\256\1\257\1\260\1\261\1\262\2\0\1\263\1\264"+
"\1\0\1\265\1\266\1\262\1\257\1\0\1\107\2\0"+
"\1\257\2\107\32\0\1\107\2\0\1\107\13\0\13\147"+
"\1\0\6\147\1\0\7\147\1\150\1\0\1\147\1\0"+
"\1\147\1\0\1\147\1\0\24\147\4\0\1\150\2\0"+
"\1\151\2\0\1\152\20\0\2\147\1\0\6\147\6\0"+
"\13\147\1\0\2\147\5\0\1\147\2\0\1\147\7\0"+
"\1\147\1\0\1\147\60\0\2\147\1\0\6\147\1\0"+
"\1\267\1\0\2\267\1\270\33\0\1\267\44\0\1\271"+
"\37\0\13\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\2\21\1\272\3\21\6\0\3\21\1\273\7\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\2\21\1\274\10\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\6\21\6\0\3\21\1\275\7\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\13\165\1\0\6\165\1\0\7\165\1\166\1\0"+
"\1\165\1\0\1\165\1\0\1\165\1\0\24\165\4\0"+
"\1\166\2\0\1\167\2\0\1\170\20\0\2\165\1\0"+
"\6\165\6\0\13\165\1\0\2\165\5\0\1\165\2\0"+
"\1\165\7\0\1\165\1\0\1\165\60\0\2\165\1\0"+
"\6\165\124\0\1\276\13\0\1\173\2\0\16\173\1\277"+
"\116\173\17\0\1\300\127\0\1\301\140\0\1\302\135\0"+
"\1\303\5\0\1\304\140\0\1\305\132\0\1\306\135\0"+
"\1\307\12\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\13\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\1\310\5\21\6\0\10\21\1\311"+
"\2\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\3\21\1\312\7\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\13\21\1\0"+
"\6\21\1\0\1\313\6\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\1\314\12\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\13\21\1\0\6\21\1\0"+
"\1\315\6\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\3\21"+
"\1\316\7\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\13\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\1\317\5\21\6\0\6\21\1\320"+
"\4\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\3\21\1\321\7\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\130\0\1\322\35\0"+
"\1\217\4\0\1\217\2\0\1\217\30\0\1\217\61\0"+
"\1\134\14\0\1\221\4\0\1\221\2\0\1\221\3\0"+
"\1\134\24\0\1\221\50\0\1\222\2\0\135\222\1\0"+
"\1\323\1\0\2\323\34\0\1\323\5\0\1\324\36\0"+
"\1\324\31\0\1\222\1\323\1\0\2\325\34\222\1\325"+
"\5\222\1\324\36\222\1\324\31\222\33\0\1\326\2\0"+
"\1\326\30\0\1\326\76\0\2\231\3\0\1\231\2\0"+
"\1\231\30\0\1\231\3\0\1\227\106\0\1\327\7\0"+
"\1\330\5\0\1\331\66\0\3\332\5\0\1\332\6\0"+
"\1\332\2\0\3\332\2\0\1\332\3\0\1\332\14\0"+
"\2\332\1\0\2\332\3\0\1\332\37\0\1\332\47\0"+
"\1\242\10\0\1\333\2\0\1\334\1\0\1\335\13\0"+
"\1\142\67\0\1\142\2\0\2\142\4\0\1\142\2\0"+
"\1\142\1\0\1\142\2\0\3\142\2\0\20\142\1\0"+
"\3\142\12\0\1\142\13\0\1\142\67\0\1\327\5\0"+
"\1\336\133\0\1\142\147\0\1\142\113\0\1\337\11\0"+
"\1\340\3\0\1\341\10\0\1\142\1\0\1\342\124\0"+
"\1\142\142\0\1\336\136\0\1\342\5\0\1\142\114\0"+
"\1\327\10\0\1\142\137\0\1\142\7\0\1\142\61\0"+
"\1\247\13\0\1\247\6\0\1\247\7\0\1\247\4\0"+
"\1\247\1\0\1\247\25\0\14\247\30\0\4\250\14\0"+
"\1\107\17\0\1\250\131\0\1\107\2\0\1\107\30\0"+
"\1\107\112\0\1\343\7\0\1\344\5\0\1\345\66\0"+
"\3\107\5\0\1\107\6\0\1\107\2\0\3\107\2\0"+
"\1\107\3\0\1\107\14\0\2\107\1\0\2\107\3\0"+
"\1\107\37\0\1\107\47\0\1\262\10\0\1\346\2\0"+
"\1\347\1\0\1\350\13\0\1\107\67\0\1\107\2\0"+
"\2\107\4\0\1\107\2\0\1\107\1\0\1\107\2\0"+
"\3\107\2\0\20\107\1\0\3\107\12\0\1\107\13\0"+
"\1\107\67\0\1\343\5\0\1\351\133\0\1\107\147\0"+
"\1\107\113\0\1\107\11\0\1\352\3\0\1\353\10\0"+
"\1\107\1\0\1\354\124\0\1\107\142\0\1\351\136\0"+
"\1\354\5\0\1\107\114\0\1\343\10\0\1\107\137\0"+
"\1\107\7\0\1\107\162\0\1\271\37\0\3\21\1\355"+
"\7\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\4\21\1\356\6\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\12\21\1\357"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\7\21\1\360\3\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\6\21\1\173\1\361\17\173\1\277"+
"\116\173\13\0\1\362\132\0\1\363\137\0\1\303\140\0"+
"\1\173\141\0\1\173\144\0\1\364\132\0\1\303\134\0"+
"\13\21\1\0\6\21\1\0\3\21\1\365\3\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\13\21\1\0\6\21\1\0"+
"\1\366\6\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\7\21"+
"\1\367\3\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\1\370\12\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\6\0\12\21\1\371"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\13\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\372\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\13\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\1\21\1\373\4\21\6\0\6\21"+
"\1\374\4\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\1\375\132\0\1\323\1\0\2\323"+
"\34\0\1\323\76\0\1\324\1\376\1\377\135\324\1\222"+
"\1\323\1\0\2\325\34\222\1\325\76\222\33\0\1\326"+
"\2\0\1\326\30\0\1\326\3\0\1\227\116\0\1\142"+
"\127\0\1\142\164\0\1\142\57\0\3\332\5\0\1\332"+
"\6\0\1\332\2\0\3\332\2\0\1\332\3\0\1\332"+
"\14\0\2\332\1\0\2\332\3\0\1\332\3\0\1\227"+
"\33\0\1\332\66\0\1\142\141\0\1\142\114\0\1\142"+
"\24\0\1\142\136\0\1\142\132\0\1\142\16\0\1\227"+
"\126\0\1\142\112\0\1\142\152\0\1\142\141\0\1\107"+
"\127\0\1\107\164\0\1\107\126\0\1\107\141\0\1\107"+
"\114\0\1\107\24\0\1\107\136\0\1\107\140\0\1\107"+
"\112\0\1\107\152\0\1\107\75\0\13\21\1\0\6\21"+
"\1\0\7\21\1\0\1\u0100\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\6\0"+
"\5\21\1\u0101\5\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\3\21\1\u0102\7\21\1\0"+
"\6\21\1\0\7\21\2\0\1\21\1\0\1\21\1\0"+
"\1\21\1\0\24\21\33\0\2\21\1\0\6\21\1\173"+
"\1\0\17\173\1\277\116\173\20\0\1\u0103\131\0\1\304"+
"\142\0\1\173\130\0\5\21\1\u0104\1\21\1\u0105\3\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\6\0\4\21\1\u0106\6\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\6\21\6\0\13\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\1\u0107\5\21\6\0"+
"\13\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\1\21\1\u0108"+
"\1\0\6\21\6\0\5\21\1\u0109\5\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\1\u010a"+
"\12\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\13\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\2\21\1\u010b\3\21\12\0\1\u010c\126\0"+
"\4\377\14\0\1\u010d\6\0\1\u010e\10\0\1\377\77\0"+
"\1\377\1\0\2\377\14\0\1\u010d\6\0\1\u010e\10\0"+
"\1\377\104\0\1\u010f\1\u0110\136\0\3\21\1\u0111\7\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\2\21\1\0\6\21"+
"\10\0\1\304\135\0\11\21\1\u0112\1\21\1\0\6\21"+
"\1\0\7\21\2\0\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\4\21"+
"\1\u0113\6\21\1\0\6\21\1\0\7\21\2\0\1\21"+
"\1\0\1\21\1\0\1\21\1\0\24\21\33\0\2\21"+
"\1\0\6\21\6\0\13\21\1\0\6\21\1\0\7\21"+
"\2\0\1\21\1\0\1\21\1\0\1\21\1\0\24\21"+
"\33\0\2\21\1\0\1\u0114\5\21\6\0\4\21\1\u0115"+
"\6\21\1\0\6\21\1\0\7\21\2\0\1\21\1\0"+
"\1\21\1\0\1\21\1\0\24\21\33\0\2\21\1\0"+
"\6\21\6\0\3\21\1\u0116\7\21\1\0\6\21\1\0"+
"\7\21\2\0\1\21\1\0\1\21\1\0\1\21\1\0"+
"\24\21\33\0\2\21\1\0\6\21\123\0\1\u0117\143\0"+
"\1\u0118\40\0\1\u0119\121\0\1\u011a\156\0\1\u011b\114\0"+
"\3\21\1\u011c\7\21\1\0\6\21\1\0\7\21\2\0"+
"\1\21\1\0\1\21\1\0\1\21\1\0\24\21\33\0"+
"\2\21\1\0\6\21\6\0\13\21\1\0\6\21\1\0"+
"\7\21\1\0\1\u011d\1\21\1\0\1\21\1\0\1\21"+
"\1\0\24\21\33\0\2\21\1\0\6\21\6\0\13\21"+
"\1\0\6\21\1\0\7\21\2\0\1\21\1\0\1\21"+
"\1\0\1\21\1\0\24\21\33\0\1\21\1\u011e\1\0"+
"\6\21\17\0\1\u011f\131\0\1\u0120\126\0\1\324\1\u0121"+
"\1\377\2\u0122\1\0\32\324\1\0\1\u0122\3\324\1\0"+
"\27\324\1\0\1\324\1\0\1\324\5\0\20\324\1\0"+
"\11\324\14\0\1\u0123\260\0\1\u0124\10\0\1\u0125\2\0"+
"\1\u0126\144\0\1\u0127\251\0\1\u0128\10\0\1\u0121\1\377"+
"\2\u0121\14\0\1\u010d\6\0\1\u010e\10\0\1\u0121\76\0"+
"\1\324\1\u0121\1\377\2\u0122\34\324\1\u0122\76\324\132\0"+
"\1\u0129\13\0\1\u012a\266\0\1\u012b\36\0\1\u012c\113\0"+
"\1\u012d\135\0\1\u012e\162\0\1\u012f\121\0\1\u0130\260\0"+
"\1\u0131\137\0\1\u0132\14\0\1\u0133\140\0\1\u0134\137\0"+
"\1\u0135\260\0\1\u0136\22\0\1\u0137\137\0\1\u0138\245\0"+
"\1\u0139\136\0\1\u013a\33\0\1\u013b\135\0\1\u013c\137\0"+
"\1\u013d\141\0\1\u013e\131\0\1\u013f\260\0\1\u0140\137\0"+
"\1\u0141\23\0\1\u0142\131\0\1\u0143\140\0\1\u0144\252\0"+
"\1\u0145\14\0\1\376\1\377\135\0";
private static int [] zzUnpackTrans() {
int [] result = new int[25248];
@ -575,15 +576,14 @@ public class _HaskellLexer implements FlexLexer {
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\5\0\1\11\1\1\1\11\21\1\1\11\1\1\1\11"+
"\20\1\4\11\1\1\1\11\1\1\2\11\3\1\1\11"+
"\11\1\1\0\1\1\2\0\1\11\5\0\16\1\3\0"+
"\1\1\5\0\1\1\1\11\4\0\1\11\5\1\5\11"+
"\3\0\1\11\1\0\1\1\6\0\1\11\14\1\1\0"+
"\1\1\1\0\6\1\1\11\17\0\1\1\20\0\2\11"+
"\4\1\1\11\1\1\7\0\13\1\1\0\3\1\27\0"+
"\5\1\3\0\10\1\4\0\2\1\1\0\10\1\5\0"+
"\6\1\2\0\1\1\2\0\1\1\1\0\1\1\2\0"+
"\2\1\23\0\1\11\2\0\1\11\5\0\3\11\3\0"+
"\1\1";
"\14\1\2\0\1\11\5\0\15\1\3\0\1\1\5\0"+
"\1\1\1\11\4\0\1\11\5\1\5\11\3\0\1\11"+
"\1\0\1\11\1\1\6\0\14\1\1\0\1\1\1\0"+
"\6\1\1\11\17\0\1\1\20\0\2\11\4\1\1\11"+
"\1\1\7\0\13\1\1\0\3\1\27\0\5\1\3\0"+
"\10\1\4\0\2\1\1\0\10\1\5\0\6\1\2\0"+
"\1\1\2\0\1\1\1\0\1\1\2\0\2\1\23\0"+
"\1\11\2\0\1\11\5\0\3\11\3\0\1\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[325];
@ -922,7 +922,7 @@ public class _HaskellLexer implements FlexLexer {
case 328: break;
case OPTIONS_GHC: {
yybegin(YYINITIAL);
return HS_NOT_TERMINATED_OPTIONS_GHC;
return com.intellij.psi.TokenType.BAD_CHARACTER;
} // fall though
case 329: break;
default:
@ -1087,60 +1087,66 @@ public class _HaskellLexer implements FlexLexer {
// fall through
case 109: break;
case 32:
{ return HS_ONE_PRAGMA;
{ yybegin(YYINITIAL);
return com.intellij.psi.TokenType.BAD_CHARACTER;
}
// fall through
case 110: break;
case 33:
{ return HS_PRAGMA_SEP;
{ return HS_ONE_PRAGMA;
}
// fall through
case 111: break;
case 34:
{ return HS_IF;
{ return HS_PRAGMA_SEP;
}
// fall through
case 112: break;
case 35:
{ return HS_IN;
{ return HS_IF;
}
// fall through
case 113: break;
case 36:
{ return HS_DO;
{ return HS_IN;
}
// fall through
case 114: break;
case 37:
{ return HS_OF;
{ return HS_DO;
}
// fall through
case 115: break;
case 38:
{ return HS_COMMENT;
{ return HS_OF;
}
// fall through
case 116: break;
case 39:
{ return HS_STRING_LITERAL;
{ return HS_COMMENT;
}
// fall through
case 117: break;
case 40:
{ return HS_STRING_LITERAL;
}
// fall through
case 118: break;
case 41:
{ yybegin(QQ);
qqDepth = 0;
qqStart = getTokenStart();
}
// fall through
case 118: break;
case 41:
case 119: break;
case 42:
{ yybegin(NCOMMENT);
commentDepth = 0;
commentStart = getTokenStart();
}
// fall through
case 119: break;
case 42:
case 120: break;
case 43:
{ if (commentDepth > 0) {
commentDepth--;
}
@ -1152,13 +1158,13 @@ public class _HaskellLexer implements FlexLexer {
}
}
// fall through
case 120: break;
case 43:
case 121: break;
case 44:
{ commentDepth++;
}
// fall through
case 121: break;
case 44:
case 122: break;
case 45:
{ if (haddockDepth > 0) {
haddockDepth--;
}
@ -1170,13 +1176,13 @@ public class _HaskellLexer implements FlexLexer {
}
}
// fall through
case 122: break;
case 45:
case 123: break;
case 46:
{ haddockDepth++;
}
// fall through
case 123: break;
case 46:
case 124: break;
case 47:
{ if (qqDepth > 0) {
qqDepth--;
}
@ -1188,19 +1194,14 @@ public class _HaskellLexer implements FlexLexer {
}
}
// fall through
case 124: break;
case 47:
{ qqDepth++;
}
// fall through
case 125: break;
case 48:
{ return HS_DIRECTIVE;
{ qqDepth++;
}
// fall through
case 126: break;
case 49:
{ return HS_PRAGMA_END;
{ return HS_DIRECTIVE;
}
// fall through
case 127: break;

View File

@ -1,7 +1,6 @@
package intellij.haskell.alex
package intellij.haskell
import com.intellij.testFramework.ParsingTestCase
import intellij.haskell.HaskellParserDefinition
class HaskellParsingTest extends ParsingTestCase("", "hs", new HaskellParserDefinition) {
override def getTestDataPath: String = "src/test/testData/parsing-hs"