diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 697d2ce4182..5bcff8c6b2d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -84,7 +84,8 @@ public class JetExpressionParsing extends AbstractJetParsing { IDENTIFIER, // SimpleName FIELD_IDENTIFIER, // Field reference - PACKAGE_KEYWORD // for absolute qualified names + PACKAGE_KEYWORD, // for absolute qualified names + IDE_TEMPLATE_START ); private static final TokenSet STATEMENT_FIRST = TokenSet.orSet( @@ -102,7 +103,7 @@ public class JetExpressionParsing extends AbstractJetParsing { ); /*package*/ static final TokenSet EXPRESSION_FOLLOW = TokenSet.create( - SEMICOLON, ARROW, COMMA, RBRACE, RPAR, RBRACKET + SEMICOLON, ARROW, COMMA, RBRACE, RPAR, RBRACKET, IDE_TEMPLATE_END ); @SuppressWarnings({"UnusedDeclaration"}) @@ -506,6 +507,9 @@ public class JetExpressionParsing extends AbstractJetParsing { if (at(LPAR)) { parseParenthesizedExpression(); } + else if (at(IDE_TEMPLATE_START)) { + parseIdeTemplate(); + } else if (at(HASH)) { parseTupleExpression(); } @@ -1831,6 +1835,22 @@ public class JetExpressionParsing extends AbstractJetParsing { parseExpression(); argument.done(VALUE_ARGUMENT); } + + /* + * "<#<" expression ">#>" + */ + private void parseIdeTemplate() { + PsiBuilder.Marker placeholder = mark(); + + advance(); + if (at(IDE_TEMPLATE_END)) { + error("Expecting IDE template"); + } else { + parseExpression(); + } + expect(IDE_TEMPLATE_END, ""); + placeholder.done(PARENTHESIZED); + } public void parseObjectLiteral() { PsiBuilder.Marker literal = mark(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex b/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex index 3e884bc914e..2a8c6c87b75 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex @@ -197,6 +197,8 @@ LONG_TEMPLATE_ENTRY_END=\} \!in{IDENTIFIER_PART} { yypushback(3); return JetTokens.EXCL; } \!is{IDENTIFIER_PART} { yypushback(3); return JetTokens.EXCL; } +"<#<" { return JetTokens.IDE_TEMPLATE_START ; } +">#>" { return JetTokens.IDE_TEMPLATE_END ; } "===" { return JetTokens.EQEQEQ ; } "!==" { return JetTokens.EXCLEQEQEQ; } "!in" { return JetTokens.NOT_IN; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java b/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java index d05cb05b052..8f508acd71d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java @@ -114,6 +114,9 @@ public interface JetTokens { JetToken HASH = new JetToken("HASH"); JetToken AT = new JetToken("AT"); JetToken ATAT = new JetToken("ATAT"); + + JetToken IDE_TEMPLATE_START = new JetToken("IDE_TEMPLATE_START"); + JetToken IDE_TEMPLATE_END = new JetToken("IDE_TEMPLATE_END"); TokenSet LABELS = TokenSet.create(AT, ATAT, LABEL_IDENTIFIER); diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java b/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java index 60eea12256e..5f61f688edc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 1/12/12 7:11 PM */ +/* The following code was generated by JFlex 1.4.3 on 1/31/12 3:47 PM */ package org.jetbrains.jet.lexer; @@ -13,8 +13,8 @@ import org.jetbrains.jet.lexer.JetTokens; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 1/12/12 7:11 PM from the specification file - * /Users/abreslav/work/jet/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex + * on 1/31/12 3:47 PM from the specification file + * /home/geevee/jet/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex */ class _JetLexer implements FlexLexer { /** initial size of the lookahead buffer */ @@ -40,14 +40,14 @@ class _JetLexer implements FlexLexer { * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = - "\11\0\1\3\1\7\1\0\1\3\23\0\1\3\1\57\1\25\1\77"+ - "\1\10\1\67\1\65\1\23\1\72\1\73\1\13\1\62\1\76\1\21"+ - "\1\17\1\12\1\14\11\1\1\74\1\75\1\63\1\60\1\64\1\61"+ + "\11\0\1\3\1\7\1\0\1\3\23\0\1\3\1\57\1\25\1\61"+ + "\1\10\1\70\1\66\1\23\1\73\1\74\1\13\1\65\1\77\1\21"+ + "\1\17\1\12\1\14\11\1\1\75\1\76\1\60\1\63\1\62\1\64"+ "\1\11\1\2\1\16\2\2\1\20\1\2\11\4\1\22\3\4\1\54"+ - "\3\4\1\15\2\4\1\70\1\24\1\71\1\0\1\4\1\6\1\42"+ + "\3\4\1\15\2\4\1\71\1\24\1\72\1\0\1\4\1\6\1\42"+ "\1\46\1\35\1\56\1\40\1\52\1\44\1\32\1\33\1\47\1\43"+ "\1\51\1\4\1\37\1\36\1\41\1\4\1\45\1\34\1\31\1\26"+ - "\1\55\1\50\1\15\1\53\1\4\1\27\1\66\1\30\54\0\1\4"+ + "\1\55\1\50\1\15\1\53\1\4\1\27\1\67\1\30\54\0\1\4"+ "\12\0\1\4\4\0\1\4\5\0\27\4\1\0\37\4\1\0\u013f\4"+ "\31\0\162\4\4\0\14\4\16\0\5\4\11\0\1\4\213\0\1\4"+ "\13\0\1\4\1\0\3\4\1\0\1\4\1\0\24\4\1\0\54\4"+ @@ -121,27 +121,27 @@ class _JetLexer implements FlexLexer { private static final String ZZ_ACTION_PACKED_0 = "\4\0\1\1\1\2\1\3\1\4\2\1\1\5\1\6"+ "\1\7\1\2\1\10\1\11\1\12\1\13\1\14\1\15"+ - "\20\3\1\16\1\17\1\20\1\21\1\22\1\23\2\1"+ - "\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33"+ + "\20\3\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+ + "\2\1\1\25\1\26\1\27\1\30\1\31\1\32\1\33"+ "\1\34\1\35\1\36\1\35\1\0\1\37\1\40\1\0"+ "\1\40\1\41\1\42\1\0\1\43\1\0\1\44\1\0"+ "\1\45\1\0\1\46\1\47\1\50\1\51\1\52\1\43"+ "\2\2\1\43\1\53\1\54\1\55\1\56\2\12\1\0"+ "\3\3\1\57\1\60\1\61\7\3\1\62\10\3\1\63"+ - "\1\0\1\64\1\65\1\66\1\67\1\70\1\71\1\72"+ - "\1\73\1\74\1\75\1\76\1\0\1\77\2\100\1\0"+ - "\1\40\1\101\1\43\1\3\2\0\1\50\1\102\4\0"+ - "\1\103\4\3\1\104\10\3\1\105\4\3\1\106\1\107"+ - "\2\3\1\110\1\111\1\112\1\113\1\114\1\115\2\0"+ - "\2\40\1\44\1\45\1\0\2\102\1\43\2\0\1\116"+ - "\1\3\1\117\1\3\1\120\4\3\1\121\1\122\4\3"+ - "\1\123\1\3\1\124\1\125\1\76\1\0\1\126\1\50"+ - "\2\0\1\127\1\130\1\131\1\3\1\132\3\3\1\133"+ - "\1\134\1\135\1\0\1\103\1\3\1\136\1\3\1\137"+ - "\1\3\1\140\1\141"; + "\1\0\1\64\1\0\1\65\1\0\1\66\1\67\1\70"+ + "\1\71\1\72\1\73\1\74\1\75\1\76\1\0\1\77"+ + "\2\100\1\0\1\40\1\101\1\43\1\3\2\0\1\50"+ + "\1\102\4\0\1\103\4\3\1\104\10\3\1\105\4\3"+ + "\1\106\1\107\2\3\1\110\1\111\1\112\1\113\1\114"+ + "\1\115\1\116\1\117\2\0\2\40\1\44\1\45\1\0"+ + "\2\102\1\43\2\0\1\120\1\3\1\121\1\3\1\122"+ + "\4\3\1\123\1\124\4\3\1\125\1\3\1\126\1\127"+ + "\1\76\1\0\1\130\1\50\2\0\1\131\1\132\1\133"+ + "\1\3\1\134\3\3\1\135\1\136\1\137\1\0\1\103"+ + "\1\3\1\140\1\3\1\141\1\3\1\142\1\143"; private static int [] zzUnpackAction() { - int [] result = new int[224]; + int [] result = new int[228]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -171,7 +171,7 @@ class _JetLexer implements FlexLexer { "\0\u0400\0\u0440\0\u0100\0\u0100\0\u0480\0\u04c0\0\u0500\0\u0540"+ "\0\u0580\0\u05c0\0\u0600\0\u0640\0\u0680\0\u06c0\0\u0700\0\u0740"+ "\0\u0780\0\u07c0\0\u0800\0\u0840\0\u0880\0\u08c0\0\u0100\0\u0900"+ - "\0\u0940\0\u0980\0\u09c0\0\u0a00\0\u0a40\0\u0100\0\u0100\0\u0100"+ + "\0\u0940\0\u0100\0\u0980\0\u09c0\0\u0a00\0\u0a40\0\u0100\0\u0100"+ "\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0a80\0\u0100\0\u0ac0"+ "\0\u0b00\0\u0100\0\u0b40\0\u0b80\0\u0bc0\0\u0100\0\u0100\0\u0c00"+ "\0\u0c40\0\u0c80\0\u0cc0\0\u0d00\0\u0d40\0\u0d80\0\u0100\0\u0dc0"+ @@ -180,23 +180,24 @@ class _JetLexer implements FlexLexer { "\0\u1040\0\u0180\0\u0180\0\u0180\0\u1080\0\u10c0\0\u1100\0\u1140"+ "\0\u1180\0\u11c0\0\u1200\0\u1240\0\u1280\0\u12c0\0\u1300\0\u1340"+ "\0\u1380\0\u13c0\0\u1400\0\u1440\0\u0180\0\u1480\0\u14c0\0\u1500"+ - "\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100"+ - "\0\u1540\0\u1580\0\u0100\0\u0100\0\u15c0\0\u1600\0\u1640\0\u0100"+ - "\0\u1680\0\u0100\0\u16c0\0\u1700\0\u1740\0\u1780\0\u17c0\0\u1800"+ - "\0\u1840\0\u1880\0\u18c0\0\u1900\0\u1940\0\u1980\0\u19c0\0\u0180"+ - "\0\u1a00\0\u1a40\0\u1a80\0\u1ac0\0\u1b00\0\u1b40\0\u1b80\0\u1bc0"+ - "\0\u0100\0\u1c00\0\u1c40\0\u1c80\0\u1cc0\0\u0180\0\u0180\0\u1d00"+ - "\0\u1d40\0\u0180\0\u0180\0\u1d80\0\u1d80\0\u0100\0\u0100\0\u1dc0"+ - "\0\u1e00\0\u0100\0\u1e40\0\u0100\0\u0100\0\u1e80\0\u1ec0\0\u0100"+ - "\0\u1f00\0\u1680\0\u1f40\0\u0180\0\u1f80\0\u0180\0\u1fc0\0\u0180"+ - "\0\u2000\0\u2040\0\u2080\0\u20c0\0\u0180\0\u0180\0\u2100\0\u2140"+ - "\0\u2180\0\u21c0\0\u0180\0\u2200\0\u0180\0\u0100\0\u0100\0\u2240"+ - "\0\u0b40\0\u0100\0\u2280\0\u22c0\0\u0180\0\u0180\0\u0180\0\u2300"+ - "\0\u0180\0\u2340\0\u2380\0\u23c0\0\u0180\0\u0180\0\u0180\0\u2400"+ - "\0\u0100\0\u2440\0\u0180\0\u2480\0\u0180\0\u24c0\0\u0180\0\u0180"; + "\0\u0100\0\u1540\0\u0100\0\u0100\0\u1580\0\u0100\0\u0100\0\u0100"+ + "\0\u0100\0\u0100\0\u15c0\0\u1600\0\u0100\0\u0100\0\u1640\0\u1680"+ + "\0\u16c0\0\u0100\0\u1700\0\u0100\0\u1740\0\u1780\0\u17c0\0\u1800"+ + "\0\u1840\0\u1880\0\u18c0\0\u1900\0\u1940\0\u1980\0\u19c0\0\u1a00"+ + "\0\u1a40\0\u0180\0\u1a80\0\u1ac0\0\u1b00\0\u1b40\0\u1b80\0\u1bc0"+ + "\0\u1c00\0\u1c40\0\u0100\0\u1c80\0\u1cc0\0\u1d00\0\u1d40\0\u0180"+ + "\0\u0180\0\u1d80\0\u1dc0\0\u0180\0\u0180\0\u1e00\0\u1e00\0\u0100"+ + "\0\u0100\0\u0100\0\u0100\0\u1e40\0\u1e80\0\u0100\0\u1ec0\0\u0100"+ + "\0\u0100\0\u1f00\0\u1f40\0\u0100\0\u1f80\0\u1700\0\u1fc0\0\u0180"+ + "\0\u2000\0\u0180\0\u2040\0\u0180\0\u2080\0\u20c0\0\u2100\0\u2140"+ + "\0\u0180\0\u0180\0\u2180\0\u21c0\0\u2200\0\u2240\0\u0180\0\u2280"+ + "\0\u0180\0\u0100\0\u0100\0\u22c0\0\u0b40\0\u0100\0\u2300\0\u2340"+ + "\0\u0180\0\u0180\0\u0180\0\u2380\0\u0180\0\u23c0\0\u2400\0\u2440"+ + "\0\u0180\0\u0180\0\u0180\0\u2480\0\u0100\0\u24c0\0\u0180\0\u2500"+ + "\0\u0180\0\u2540\0\u0180\0\u0180"; private static int [] zzUnpackRowMap() { - int [] result = new int[224]; + int [] result = new int[228]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -246,215 +247,215 @@ class _JetLexer implements FlexLexer { "\3\0\1\103\2\0\26\103\23\0\1\105\1\0\1\105"+ "\1\0\1\106\2\0\1\107\3\0\2\105\1\0\1\105"+ "\1\0\1\105\3\0\1\105\2\0\26\105\33\0\1\110"+ - "\1\111\44\0\1\112\77\0\1\113\20\0\1\114\12\0"+ + "\1\111\47\0\1\112\77\0\1\113\15\0\1\114\12\0"+ "\1\114\1\115\1\116\1\100\1\101\17\0\1\101\5\0"+ "\1\116\32\0\1\117\12\0\1\117\2\0\1\120\101\0"+ - "\1\121\36\0\1\122\3\0\1\123\13\0\7\21\1\0"+ - "\13\21\1\124\1\125\53\21\25\0\1\126\53\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\1\7\1\127\12\7\1\130\5\7"+ - "\1\131\3\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ - "\1\132\2\7\1\133\12\7\1\134\4\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\135\2\0\26\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\5\7\1\136\12\7\1\137\5\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\15\7\1\140\10\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\141\2\0\26\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\20\7\1\142\5\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\11\7\1\143\14\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\3\7\1\144\22\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\7\7\1\145\16\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\14\7\1\146\11\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\1\7\1\147\24\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\150"+ - "\2\0\5\7\1\151\3\7\1\152\14\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\1\7\1\153\24\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\11\7\1\154\14\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\5\7\1\155\20\7\54\0\1\156"+ - "\24\0\1\157\77\0\1\160\3\0\1\161\73\0\1\162"+ - "\1\0\1\163\75\0\1\164\77\0\1\165\104\0\1\166"+ - "\100\0\1\167\71\0\1\170\17\0\7\66\2\0\13\66"+ - "\2\0\52\66\2\0\1\171\1\0\1\171\1\0\1\172"+ - "\6\0\2\171\1\0\1\171\1\0\1\171\3\0\1\171"+ - "\1\173\1\0\26\171\21\0\7\174\1\0\16\174\1\175"+ - "\51\174\1\0\2\73\1\0\2\73\6\0\3\73\1\0"+ - "\1\73\1\0\1\73\3\0\1\73\2\0\26\73\21\0"+ - "\6\176\2\0\70\176\1\0\2\73\1\0\2\73\6\0"+ - "\3\73\1\0\1\73\1\0\1\73\3\0\1\73\2\0"+ - "\1\73\1\177\24\73\22\0\1\117\12\0\1\117\2\0"+ - "\1\200\61\0\1\201\12\0\1\201\4\0\1\201\40\0"+ - "\1\201\15\0\6\102\1\202\1\0\70\102\1\0\2\103"+ - "\1\0\2\103\6\0\3\103\1\0\1\103\1\0\1\103"+ - "\3\0\1\103\2\0\26\103\21\0\6\203\2\0\70\203"+ - "\1\0\2\105\1\0\2\105\6\0\3\105\1\0\1\105"+ - "\1\0\1\105\3\0\1\105\2\0\26\105\21\0\6\204"+ - "\2\0\70\204\7\110\1\0\70\110\13\205\1\206\64\205"+ - "\1\0\1\114\12\0\1\114\2\0\1\207\1\101\17\0"+ - "\1\101\40\0\2\115\11\0\1\115\1\0\1\115\1\210"+ - "\1\115\1\0\1\211\12\0\1\115\2\0\1\115\1\211"+ - "\1\115\3\0\1\115\3\0\1\115\3\0\1\115\22\0"+ - "\1\116\12\0\1\116\2\0\1\212\61\0\1\117\12\0"+ - "\1\117\3\0\1\101\17\0\1\101\37\0\7\21\1\0"+ - "\70\21\25\0\1\213\53\0\2\7\1\0\2\7\6\0"+ + "\1\121\40\0\1\122\1\123\14\0\7\21\1\0\13\21"+ + "\1\124\1\125\53\21\25\0\1\126\53\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\1\7\1\127\12\7\1\130\5\7\1\131"+ + "\3\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\3\7\1\132"+ + "\2\7\1\133\12\7\1\134\4\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\135\2\0\26\7\22\0\2\7\1\0\2\7\6\0"+ "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ - "\2\7\1\214\11\7\1\215\11\7\22\0\2\7\1\0"+ + "\5\7\1\136\12\7\1\137\5\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\216\2\0\11\7\1\217\10\7\1\220\3\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\10\7\1\221\15\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\10\7\1\222\15\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\6\7\1\223\17\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\11\7\1\224\14\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\16\7\1\225\7\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\20\7\1\226\5\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\3\7\1\227\22\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\4\7\1\230\21\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\26\7\2\0\1\231\17\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\1\232\25\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\7\7\1\233\16\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\2\7\1\234\4\7\1\235\16\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\6\7\1\236\17\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\14\7\1\237\11\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\20\7\1\240\5\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\2\7\1\241\23\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\14\7\1\242\3\7"+ - "\1\243\5\7\55\0\1\244\2\0\1\245\120\0\1\246"+ - "\77\0\1\247\20\0\2\171\1\0\2\171\6\0\3\171"+ - "\1\0\1\171\1\0\1\171\3\0\1\171\2\0\26\171"+ - "\21\0\6\250\2\0\70\250\1\0\2\251\11\0\1\251"+ - "\1\0\1\251\1\0\1\251\14\0\1\251\2\0\1\251"+ - "\1\0\1\251\3\0\1\251\3\0\1\251\3\0\1\251"+ - "\21\0\6\176\1\252\1\0\70\176\1\0\2\73\1\0"+ - "\2\73\6\0\3\73\1\0\1\73\1\0\1\73\3\0"+ - "\1\73\2\0\2\73\1\253\23\73\22\0\1\201\12\0"+ - "\1\201\63\0\6\203\1\254\1\0\70\203\6\204\1\255"+ - "\1\0\70\204\13\205\1\256\64\205\12\257\1\260\1\206"+ - "\64\257\1\0\1\117\12\0\1\117\64\0\2\261\11\0"+ - "\1\261\1\0\1\261\1\200\1\261\14\0\1\261\2\0"+ - "\1\261\1\0\1\261\3\0\1\261\3\0\1\261\3\0"+ - "\1\261\22\0\1\201\12\0\1\201\4\0\1\262\40\0"+ - "\1\262\34\0\1\200\60\0\25\213\1\263\52\213\1\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\3\7\1\264\22\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\5\7\1\265\20\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\266\16\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\2\7\1\267\23\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\270\16\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\271\16\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\1\272\25\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\3\7\1\273\22\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\7\7\1\274\16\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\20\7\1\275\5\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\7\7\1\276\16\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\12\7\1\277\13\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\300\2\0\26\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\11\7\1\301\14\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\20\7\1\302\5\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\6\7\1\303\17\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\3\7\1\304\22\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\3\7\1\305\22\7\22\0\2\306\1\0\2\306"+ - "\6\0\3\306\1\0\1\306\1\0\1\306\3\0\1\306"+ - "\2\0\26\306\21\0\6\250\1\307\1\0\70\250\1\0"+ - "\2\310\11\0\1\310\1\0\1\310\1\0\1\310\14\0"+ - "\1\310\2\0\1\310\1\0\1\310\3\0\1\310\3\0"+ - "\1\310\3\0\1\310\22\0\2\73\1\0\2\73\6\0"+ + "\1\7\2\0\15\7\1\140\10\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\141\2\0\26\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\20\7\1\142\5\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\11\7\1\143\14\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\3\7\1\144\22\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\7\7\1\145\16\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\14\7\1\146\11\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\1\7\1\147\24\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\150\2\0"+ + "\5\7\1\151\3\7\1\152\14\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\1\7\1\153\24\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\11\7\1\154\14\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\5\7\1\155\20\7\54\0\1\156\27\0"+ + "\1\157\75\0\1\160\1\0\1\161\75\0\1\162\1\0"+ + "\1\163\76\0\1\164\1\165\77\0\1\166\1\0\1\167"+ + "\100\0\1\170\100\0\1\171\73\0\1\172\14\0\7\66"+ + "\2\0\13\66\2\0\52\66\2\0\1\173\1\0\1\173"+ + "\1\0\1\174\6\0\2\173\1\0\1\173\1\0\1\173"+ + "\3\0\1\173\1\175\1\0\26\173\21\0\7\176\1\0"+ + "\16\176\1\177\51\176\1\0\2\73\1\0\2\73\6\0"+ "\3\73\1\0\1\73\1\0\1\73\3\0\1\73\2\0"+ - "\3\73\1\311\22\73\21\0\12\205\1\312\1\256\64\205"+ - "\13\257\1\313\64\257\1\0\2\261\11\0\1\261\1\0"+ - "\1\261\1\0\1\261\1\0\1\211\12\0\1\261\2\0"+ - "\1\261\1\211\1\261\3\0\1\261\3\0\1\261\3\0"+ - "\1\261\21\0\25\213\1\314\52\213\1\0\2\7\1\0"+ + "\26\73\21\0\6\200\2\0\70\200\1\0\2\73\1\0"+ + "\2\73\6\0\3\73\1\0\1\73\1\0\1\73\3\0"+ + "\1\73\2\0\1\73\1\201\24\73\22\0\1\117\12\0"+ + "\1\117\2\0\1\202\61\0\1\203\12\0\1\203\4\0"+ + "\1\203\43\0\1\203\12\0\6\102\1\204\1\0\70\102"+ + "\1\0\2\103\1\0\2\103\6\0\3\103\1\0\1\103"+ + "\1\0\1\103\3\0\1\103\2\0\26\103\21\0\6\205"+ + "\2\0\70\205\1\0\2\105\1\0\2\105\6\0\3\105"+ + "\1\0\1\105\1\0\1\105\3\0\1\105\2\0\26\105"+ + "\21\0\6\206\2\0\70\206\7\110\1\0\70\110\13\207"+ + "\1\210\64\207\1\0\1\114\12\0\1\114\2\0\1\211"+ + "\1\101\17\0\1\101\40\0\2\115\11\0\1\115\1\0"+ + "\1\115\1\212\1\115\1\0\1\213\12\0\1\115\2\0"+ + "\1\115\1\213\1\115\3\0\1\115\3\0\1\115\3\0"+ + "\1\115\22\0\1\116\12\0\1\116\2\0\1\214\61\0"+ + "\1\117\12\0\1\117\3\0\1\101\17\0\1\101\37\0"+ + "\7\21\1\0\70\21\25\0\1\215\53\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\7\2\0\17\7\1\315\6\7\22\0\2\7\1\0"+ - "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\7\2\0\1\316\25\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\14\7\1\317\11\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\2\7\1\320\23\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\3\7\1\321\22\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\4\7\1\322\21\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\11\7\1\323\14\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\14\7\1\324\11\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\12\7\1\325\13\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\7\7\1\326\16\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\7\7\1\327\16\7\22\0\2\330\11\0\1\330"+ - "\1\0\1\330\1\0\1\330\14\0\1\330\2\0\1\330"+ - "\1\0\1\330\3\0\1\330\3\0\1\330\3\0\1\330"+ - "\21\0\12\257\1\260\1\313\64\257\25\213\1\331\52\213"+ - "\1\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\6\7\1\332\17\7"+ + "\1\7\2\0\2\7\1\216\11\7\1\217\11\7\22\0"+ + "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ + "\1\7\3\0\1\220\2\0\11\7\1\221\10\7\1\222"+ + "\3\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\10\7\1\223"+ + "\15\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\10\7\1\224"+ + "\15\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\6\7\1\225"+ + "\17\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\11\7\1\226"+ + "\14\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\16\7\1\227"+ + "\7\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\20\7\1\230"+ + "\5\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\3\7\1\231"+ + "\22\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\4\7\1\232"+ + "\21\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\26\7\5\0"+ + "\1\233\14\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\1\234\25\7"+ "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\1\333\25\7\22\0"+ + "\1\0\1\7\3\0\1\7\2\0\7\7\1\235\16\7"+ + "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ + "\1\0\1\7\3\0\1\7\2\0\2\7\1\236\4\7"+ + "\1\237\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\6\7"+ + "\1\240\17\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ + "\1\241\11\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\20\7"+ + "\1\242\5\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\2\7"+ + "\1\243\23\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ + "\1\244\3\7\1\245\5\7\55\0\1\246\2\0\1\247"+ + "\123\0\1\250\74\0\1\251\101\0\1\252\100\0\1\253"+ + "\15\0\2\173\1\0\2\173\6\0\3\173\1\0\1\173"+ + "\1\0\1\173\3\0\1\173\2\0\26\173\21\0\6\254"+ + "\2\0\70\254\1\0\2\255\11\0\1\255\1\0\1\255"+ + "\1\0\1\255\14\0\1\255\2\0\1\255\1\0\1\255"+ + "\3\0\1\255\3\0\1\255\3\0\1\255\21\0\6\200"+ + "\1\256\1\0\70\200\1\0\2\73\1\0\2\73\6\0"+ + "\3\73\1\0\1\73\1\0\1\73\3\0\1\73\2\0"+ + "\2\73\1\257\23\73\22\0\1\203\12\0\1\203\63\0"+ + "\6\205\1\260\1\0\70\205\6\206\1\261\1\0\70\206"+ + "\13\207\1\262\64\207\12\263\1\264\1\210\64\263\1\0"+ + "\1\117\12\0\1\117\64\0\2\265\11\0\1\265\1\0"+ + "\1\265\1\202\1\265\14\0\1\265\2\0\1\265\1\0"+ + "\1\265\3\0\1\265\3\0\1\265\3\0\1\265\22\0"+ + "\1\203\12\0\1\203\4\0\1\266\43\0\1\266\31\0"+ + "\1\202\60\0\25\215\1\267\52\215\1\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\3\7\1\270\22\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\5\7\1\271\20\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\7\7\1\272\16\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\2\7\1\273\23\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\7\7\1\274\16\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\7\7\1\275\16\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\1\276\25\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ + "\2\0\3\7\1\277\22\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ + "\2\0\7\7\1\300\16\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ + "\2\0\20\7\1\301\5\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ + "\2\0\7\7\1\302\16\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ + "\2\0\12\7\1\303\13\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\304"+ + "\2\0\26\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\11\7"+ + "\1\305\14\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\20\7"+ + "\1\306\5\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\6\7"+ + "\1\307\17\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ + "\1\310\22\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ + "\1\311\22\7\22\0\2\312\1\0\2\312\6\0\3\312"+ + "\1\0\1\312\1\0\1\312\3\0\1\312\2\0\26\312"+ + "\21\0\6\254\1\313\1\0\70\254\1\0\2\314\11\0"+ + "\1\314\1\0\1\314\1\0\1\314\14\0\1\314\2\0"+ + "\1\314\1\0\1\314\3\0\1\314\3\0\1\314\3\0"+ + "\1\314\22\0\2\73\1\0\2\73\6\0\3\73\1\0"+ + "\1\73\1\0\1\73\3\0\1\73\2\0\3\73\1\315"+ + "\22\73\21\0\12\207\1\316\1\262\64\207\13\263\1\317"+ + "\64\263\1\0\2\265\11\0\1\265\1\0\1\265\1\0"+ + "\1\265\1\0\1\213\12\0\1\265\2\0\1\265\1\213"+ + "\1\265\3\0\1\265\3\0\1\265\3\0\1\265\21\0"+ + "\25\215\1\320\52\215\1\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\17\7\1\321\6\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\1\322\25\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ + "\1\323\11\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\2\7"+ + "\1\324\23\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ + "\1\325\22\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\4\7"+ + "\1\326\21\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\11\7"+ + "\1\327\14\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ + "\1\330\11\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\12\7"+ + "\1\331\13\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\7\7"+ + "\1\332\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\7\7"+ + "\1\333\16\7\22\0\2\334\11\0\1\334\1\0\1\334"+ + "\1\0\1\334\14\0\1\334\2\0\1\334\1\0\1\334"+ + "\3\0\1\334\3\0\1\334\3\0\1\334\21\0\12\263"+ + "\1\264\1\317\64\263\25\215\1\335\52\215\1\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\6\7\1\336\17\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\1\337\25\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\13\7\1\340\12\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\6\7\1\341\17\7\22\0\2\176\11\0"+ + "\1\176\1\0\1\176\1\0\1\176\14\0\1\176\2\0"+ + "\1\176\1\0\1\176\3\0\1\176\3\0\1\176\3\0"+ + "\1\176\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\342\2\0\26\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\13\7\1\334\12\7\22\0"+ + "\1\7\3\0\1\7\2\0\7\7\1\343\16\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\6\7\1\335\17\7\22\0"+ - "\2\174\11\0\1\174\1\0\1\174\1\0\1\174\14\0"+ - "\1\174\2\0\1\174\1\0\1\174\3\0\1\174\3\0"+ - "\1\174\3\0\1\174\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\3\0\1\336\2\0"+ - "\26\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\337"+ - "\16\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\340"+ - "\16\7\21\0"; + "\1\7\3\0\1\7\2\0\7\7\1\344\16\7\21\0"; private static int [] zzUnpackTrans() { - int [] result = new int[9472]; + int [] result = new int[9600]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -495,18 +496,19 @@ class _JetLexer implements FlexLexer { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\4\0\1\11\15\1\2\11\22\1\1\11\6\1\10\11"+ - "\1\1\1\11\1\1\1\0\1\11\1\1\1\0\1\1"+ - "\2\11\1\0\1\1\1\0\1\1\1\0\1\1\1\0"+ - "\1\11\2\1\2\11\4\1\5\11\1\1\1\0\27\1"+ - "\1\0\2\1\10\11\1\1\1\0\2\11\1\1\1\0"+ - "\1\1\1\11\1\1\1\11\2\0\2\1\4\0\16\1"+ - "\1\11\14\1\2\11\2\0\1\11\1\1\2\11\1\0"+ - "\1\1\1\11\1\1\2\0\22\1\2\11\1\0\1\1"+ - "\1\11\2\0\13\1\1\0\1\11\7\1"; + "\4\0\1\11\15\1\2\11\22\1\1\11\2\1\1\11"+ + "\4\1\7\11\1\1\1\11\1\1\1\0\1\11\1\1"+ + "\1\0\1\1\2\11\1\0\1\1\1\0\1\1\1\0"+ + "\1\1\1\0\1\11\2\1\2\11\4\1\5\11\1\1"+ + "\1\0\27\1\1\0\1\1\1\0\1\11\1\0\2\11"+ + "\1\1\5\11\1\1\1\0\2\11\1\1\1\0\1\1"+ + "\1\11\1\1\1\11\2\0\2\1\4\0\16\1\1\11"+ + "\14\1\4\11\2\0\1\11\1\1\2\11\1\0\1\1"+ + "\1\11\1\1\2\0\22\1\2\11\1\0\1\1\1\11"+ + "\2\0\13\1\1\0\1\11\7\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[224]; + int [] result = new int[228]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -840,23 +842,23 @@ class _JetLexer implements FlexLexer { case 3: { return JetTokens.IDENTIFIER; } - case 98: break; + case 100: break; case 11: { pushState(STRING); return JetTokens.OPEN_QUOTE; } - case 99: break; + case 101: break; case 71: { return JetTokens.FOR_KEYWORD ; } - case 100: break; - case 95: + case 102: break; + case 97: { return JetTokens.RETURN_KEYWORD ; } - case 101: break; - case 81: + case 103: break; + case 83: { return JetTokens.NULL_KEYWORD ; } - case 102: break; + case 104: break; case 34: { if (lBraceCount == 0) { popState(); @@ -865,373 +867,381 @@ class _JetLexer implements FlexLexer { lBraceCount--; return JetTokens.RBRACE; } - case 103: break; - case 18: + case 105: break; + case 15: { return JetTokens.LT ; } - case 104: break; + case 106: break; case 51: { return JetTokens.DO_KEYWORD ; } - case 105: break; - case 17: + case 107: break; + case 20: { return JetTokens.PLUS ; } - case 106: break; + case 108: break; case 67: { return JetTokens.RAW_STRING_LITERAL; } - case 107: break; - case 55: + case 109: break; + case 57: { return JetTokens.PLUSEQ ; } - case 108: break; - case 86: + case 110: break; + case 88: { popState(); return JetTokens.THIS_KEYWORD; } - case 109: break; - case 27: + case 111: break; + case 28: { return JetTokens.COMMA ; } - case 110: break; - case 19: + case 112: break; + case 17: { return JetTokens.GT ; } - case 111: break; + case 113: break; case 4: { return JetTokens.WHITE_SPACE; } - case 112: break; - case 24: + case 114: break; + case 25: { return JetTokens.RPAR ; } - case 113: break; - case 54: + case 115: break; + case 55: { return JetTokens.DOUBLE_ARROW; } - case 114: break; - case 79: + case 116: break; + case 81: { return JetTokens.TRUE_KEYWORD ; } - case 115: break; + case 117: break; + case 77: + { return JetTokens.IDE_TEMPLATE_START ; + } + case 118: break; case 36: { return JetTokens.FIELD_IDENTIFIER; } - case 116: break; + case 119: break; case 59: { return JetTokens.ANDAND ; } - case 117: break; + case 120: break; case 63: { pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START; } - case 118: break; + case 121: break; case 66: { return JetTokens.DOC_COMMENT; } - case 119: break; + case 122: break; case 35: { return JetTokens.FLOAT_LITERAL; } - case 120: break; + case 123: break; case 39: { return JetTokens.EOL_COMMENT; } - case 121: break; - case 83: + case 124: break; + case 85: { return JetTokens.WHEN_KEYWORD ; } - case 122: break; - case 25: + case 125: break; + case 26: { return JetTokens.COLON ; } - case 123: break; - case 57: + case 126: break; + case 53: { return JetTokens.LTEQ ; } - case 124: break; - case 46: + case 127: break; + case 45: { return JetTokens.ARROW ; } - case 125: break; + case 128: break; case 32: { popState(); return JetTokens.IDENTIFIER; } - case 126: break; - case 21: + case 129: break; + case 22: { return JetTokens.LBRACKET ; } - case 127: break; + case 130: break; case 65: { yypushback(2); return JetTokens.INTEGER_LITERAL; } - case 128: break; + case 131: break; case 10: { return JetTokens.CHARACTER_LITERAL; } - case 129: break; + case 132: break; case 72: { return JetTokens.VAR_KEYWORD ; } - case 130: break; - case 58: + case 133: break; + case 54: { return JetTokens.GTEQ ; } - case 131: break; + case 134: break; case 2: { return JetTokens.INTEGER_LITERAL; } - case 132: break; + case 135: break; case 13: { return JetTokens.RBRACE ; } - case 133: break; - case 90: + case 136: break; + case 92: { return JetTokens.CLASS_KEYWORD ; } - case 134: break; + case 137: break; case 14: { return JetTokens.EXCL ; } - case 135: break; + case 138: break; case 68: { return JetTokens.TRY_KEYWORD ; } - case 136: break; + case 139: break; case 52: { return JetTokens.EXCLEQ ; } - case 137: break; - case 45: + case 140: break; + case 46: { return JetTokens.MINUSEQ ; } - case 138: break; - case 96: + case 141: break; + case 98: { return JetTokens.PACKAGE_KEYWORD ; } - case 139: break; - case 87: + case 142: break; + case 89: { return JetTokens.THROW_KEYWORD ; } - case 140: break; - case 89: + case 143: break; + case 91: { return JetTokens.SUPER_KEYWORD ; } - case 141: break; - case 92: + case 144: break; + case 94: { return JetTokens.WHILE_KEYWORD ; } - case 142: break; + case 145: break; case 44: { return JetTokens.MINUSMINUS; } - case 143: break; - case 97: + case 146: break; + case 99: { return JetTokens.CONTINUE_KEYWORD ; } - case 144: break; + case 147: break; case 75: { return JetTokens.NOT_IN; } - case 145: break; + case 148: break; case 38: { return JetTokens.ATAT ; } - case 146: break; + case 149: break; case 6: { return JetTokens.DIV ; } - case 147: break; + case 150: break; + case 78: + { return JetTokens.IDE_TEMPLATE_END ; + } + case 151: break; case 37: { return JetTokens.LABEL_IDENTIFIER; } - case 148: break; + case 152: break; case 29: { return JetTokens.REGULAR_STRING_PART; } - case 149: break; - case 16: + case 153: break; + case 19: { return JetTokens.QUEST ; } - case 150: break; + case 154: break; case 60: { return JetTokens.OROR ; } - case 151: break; - case 20: + case 155: break; + case 21: { return JetTokens.PERC ; } - case 152: break; + case 156: break; case 76: { return JetTokens.EXCLEQEQEQ; } - case 153: break; + case 157: break; case 61: { return JetTokens.PERCEQ ; } - case 154: break; + case 158: break; case 43: { return JetTokens.RANGE ; } - case 155: break; + case 159: break; case 1: { return TokenType.BAD_CHARACTER; } - case 156: break; + case 160: break; case 74: { return JetTokens.NOT_IS; } - case 157: break; + case 161: break; case 7: { return JetTokens.MUL ; } - case 158: break; - case 22: + case 162: break; + case 23: { return JetTokens.RBRACKET ; } - case 159: break; - case 56: + case 163: break; + case 58: { return JetTokens.PLUSPLUS ; } - case 160: break; - case 78: + case 164: break; + case 80: { return JetTokens.THIS_KEYWORD ; } - case 161: break; + case 165: break; case 8: { return JetTokens.DOT ; } - case 162: break; - case 26: + case 166: break; + case 27: { return JetTokens.SEMICOLON ; } - case 163: break; + case 167: break; case 49: { return JetTokens.IF_KEYWORD ; } - case 164: break; + case 168: break; case 64: { return JetTokens.ESCAPE_SEQUENCE; } - case 165: break; + case 169: break; case 31: { popState(); return JetTokens.CLOSING_QUOTE; } - case 166: break; - case 15: + case 170: break; + case 18: { return JetTokens.EQ ; } - case 167: break; + case 171: break; case 5: { return JetTokens.AT ; } - case 168: break; + case 172: break; case 69: { return JetTokens.AS_SAFE; } - case 169: break; - case 23: + case 173: break; + case 24: { return JetTokens.LPAR ; } - case 170: break; + case 174: break; case 9: { return JetTokens.MINUS ; } - case 171: break; - case 93: + case 175: break; + case 95: { return JetTokens.FALSE_KEYWORD ; } - case 172: break; - case 80: + case 176: break; + case 82: { return JetTokens.TYPE_KEYWORD ; } - case 173: break; + case 177: break; case 70: { return JetTokens.FUN_KEYWORD ; } - case 174: break; + case 178: break; case 47: { return JetTokens.IS_KEYWORD ; } - case 175: break; + case 179: break; case 30: { popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE; } - case 176: break; + case 180: break; case 33: { lBraceCount++; return JetTokens.LBRACE; } - case 177: break; - case 85: + case 181: break; + case 87: { yypushback(3); return JetTokens.EXCL; } - case 178: break; + case 182: break; case 41: { return JetTokens.DIVEQ ; } - case 179: break; - case 82: + case 183: break; + case 84: { return JetTokens.ELSE_KEYWORD ; } - case 180: break; + case 184: break; case 50: { return JetTokens.AS_KEYWORD ; } - case 181: break; + case 185: break; case 48: { return JetTokens.IN_KEYWORD ; } - case 182: break; - case 53: + case 186: break; + case 56: { return JetTokens.EQEQ ; } - case 183: break; - case 77: + case 187: break; + case 79: { return JetTokens.EQEQEQ ; } - case 184: break; + case 188: break; case 73: { return JetTokens.VAL_KEYWORD ; } - case 185: break; - case 84: + case 189: break; + case 86: { return JetTokens.CAPITALIZED_THIS_KEYWORD ; } - case 186: break; + case 190: break; case 42: { return JetTokens.MULTEQ ; } - case 187: break; + case 191: break; case 62: { pushState(SHORT_TEMPLATE_ENTRY); yypushback(yylength() - 1); return JetTokens.SHORT_TEMPLATE_ENTRY_START; } - case 188: break; + case 192: break; case 12: { return JetTokens.LBRACE ; } - case 189: break; - case 94: + case 193: break; + case 96: { return JetTokens.OBJECT_KEYWORD ; } - case 190: break; - case 91: + case 194: break; + case 93: { return JetTokens.BREAK_KEYWORD ; } - case 191: break; + case 195: break; case 40: { return JetTokens.BLOCK_COMMENT; } - case 192: break; - case 88: + case 196: break; + case 90: { return JetTokens.TRAIT_KEYWORD ; } - case 193: break; - case 28: + case 197: break; + case 16: { return JetTokens.HASH ; } - case 194: break; + case 198: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true;