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;