diff --git a/grammar/src/class_members.grm b/grammar/src/class_members.grm index e57a7be3c5a..79e5370af70 100644 --- a/grammar/src/class_members.grm +++ b/grammar/src/class_members.grm @@ -67,11 +67,11 @@ initializer ; block - : "{" (expression ";"?)* "}" + : "{" (expression SEMI)* "}" ; decomposer // TODO: consider other names - : modifiers "decomposer" (type ".")? SimpleName? "(" (attributes SimpleName){","}? ")" // Public properties only + : modifiers "decomposer" (type ".")? SimpleName? "(" (attributes SimpleName){","}? ")" SEMI? // Public properties only ; function @@ -85,7 +85,7 @@ functionBody property : modifiers ("val" | "var") attributes (type ".")? SimpleName (":" type)? ("=" expression)? - (getter? setter? | setter? getter?) + (getter? setter? | setter? getter?) SEMI? ; getter diff --git a/grammar/src/expressions.grm b/grammar/src/expressions.grm index 4ebdfecb65f..d1e15a493a5 100644 --- a/grammar/src/expressions.grm +++ b/grammar/src/expressions.grm @@ -158,7 +158,7 @@ functionLiteral // one can use "it" as a parameter name ; constructorInvocation - : userType "(" expression{","} ")" + : userType valueArguments? ; listLiteral @@ -193,8 +193,7 @@ arrayAccess ; objectLiteral - : "object" delegationSpecifier{","} classBody? - : "object" classBody + : "object" delegationSpecifier{","}? classBody // Cannot make class body optional: foo(object F, a) ; /* Factory methods: diff --git a/grammar/src/toplevel.grm b/grammar/src/toplevel.grm index 0785c684279..14a90d2e5b0 100644 --- a/grammar/src/toplevel.grm +++ b/grammar/src/toplevel.grm @@ -11,7 +11,7 @@ preamble ; namespaceHeader - : "namespace" SimpleName{"."} + : "namespace" SimpleName{"."} SEMI? ; import diff --git a/idea/src/org/jetbrains/jet/JetNodeTypes.java b/idea/src/org/jetbrains/jet/JetNodeTypes.java index f3a0f81f5bf..6945e3e863d 100644 --- a/idea/src/org/jetbrains/jet/JetNodeTypes.java +++ b/idea/src/org/jetbrains/jet/JetNodeTypes.java @@ -69,6 +69,7 @@ public interface JetNodeTypes { JetNodeType RANGE_LITERAL = new JetNodeType("RANGE_LITERAL"); JetNodeType LIST_LITERAL = new JetNodeType("LIST_LITERAL"); JetNodeType TYPEOF = new JetNodeType("TYPEOF"); + JetNodeType NEW = new JetNodeType("NEW"); IElementType NAMESPACE_NAME = new JetNodeType("NAMESPACE_NAME"); } diff --git a/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java index 140cd4bbddd..5725fb44a71 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java @@ -204,4 +204,9 @@ import static org.jetbrains.jet.lexer.JetTokens.*; currentPosition.rollbackTo(); return lastOccurrence; } + + protected boolean eol() { + return myBuilder.eolInLastWhitespace(); + } + } diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 3fa3785a21a..07aa6865416 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -62,13 +62,13 @@ public class JetExpressionParsing extends AbstractJetParsing { parseTypeOf(); } else if (at(NEW_KEYWORD)) { - // TODO + parseNew(); } else if (at(OBJECT_KEYWORD)) { - // TODO + parseObjectLiteral(); } else if (at(THROW_KEYWORD)) { - // TODO + parseThrow(); } else if (at(RETURN_KEYWORD)) { // TODO @@ -126,6 +126,37 @@ public class JetExpressionParsing extends AbstractJetParsing { } } + /* + * : "throw" expression + */ + private void parseThrow() { + assert at(THROW_KEYWORD); + + advance(); // THROW_KEYWORD + + parseExpression(); + } + + /* + * "new" constructorInvocation // identical to new nunctionCall + * + * constructorInvocation + * : userType valueArguments? + */ + private void parseNew() { + assert at(NEW_KEYWORD); + + PsiBuilder.Marker creation = mark(); + advance(); // NEW_KEYWORD + + myJetParsing.parseTypeRef(); + + if (!eol() && at(LPAR)) { + parseValueArgumentList(); + } + creation.done(NEW); + } + /* * "typeof" "(" expression ")" */ @@ -320,8 +351,7 @@ public class JetExpressionParsing extends AbstractJetParsing { /* * objectLiteral - * : "object" delegationSpecifier{","} classBody? - * : "object" classBody + * : "object" delegationSpecifier{","}? classBody // Cannot make class body optional: foo(object F, a) * ; */ public void parseObjectLiteral() { diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index d13a942f985..56e306ac565 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -88,13 +88,15 @@ public class JetParsing extends AbstractJetParsing { private void parsePreamble() { /* * namespaceHeader - * : "namespace" SimpleName{"."} + * : "namespace" SimpleName{"."} SEMI? * ; */ if (at(NAMESPACE_KEYWORD)) { advance(); // NAMESPACE_KEYWORD parseNamespaceName(); + + consumeIf(SEMICOLON); } while (at(IMPORT_KEYWORD)) { @@ -106,10 +108,9 @@ public class JetParsing extends AbstractJetParsing { private void parseNamespaceName() { PsiBuilder.Marker nsName = mark(); expect(IDENTIFIER, "Expecting qualified name", NAMESPACE_NAME_RECOVERY_SET); - while (at(DOT)) { + while (!eol() && at(DOT)) { advance(); // DOT expect(IDENTIFIER, "Namespace name must be a '.'-separated identifier list", NAMESPACE_NAME_RECOVERY_SET); - if (at(EOL_OR_SEMICOLON)) break; } nsName.done(NAMESPACE_NAME); } @@ -242,6 +243,7 @@ public class JetParsing extends AbstractJetParsing { expect(LPAR, "Expecting a property list in parentheses '( ... )'"); + // Property list if (!at(RPAR)) { while (true) { parseAttributeList(); @@ -249,8 +251,8 @@ public class JetParsing extends AbstractJetParsing { skipUntil(TokenSet.create(COMMA, RPAR, EOL_OR_SEMICOLON)); } if (!at(COMMA)) { - if (at(RPAR) || at(EOL_OR_SEMICOLON)) break; - error("Expecting a property name or a closing ')'"); + if (at(RPAR)) break; + error("Expecting ',' or a closing ')'"); skipUntil(TokenSet.create(COMMA, RPAR, EOL_OR_SEMICOLON)); } if (!at(COMMA)) break; @@ -685,7 +687,7 @@ public class JetParsing extends AbstractJetParsing { /* * property * : modifiers ("val" | "var") attributes (type ".")? SimpleName (":" type)? ("=" expression)? - * getter? setter? + * (getter? setter? | setter? getter?) SEMI? * ; */ private JetNodeType parseProperty() { @@ -693,7 +695,8 @@ public class JetParsing extends AbstractJetParsing { advance(); // VAL_KEYWORD or VAR_KEYWORD - TokenSet propertyNameFollow = TokenSet.create(COLON, EQ, LBRACE, EOL_OR_SEMICOLON); + // TODO: EOL_OR_SEMICOLON is too restrictive here + TokenSet propertyNameFollow = TokenSet.create(COLON, EQ, LBRACE, SEMICOLON, EOL_OR_SEMICOLON); int lastDot = findLastBefore(TokenSet.create(DOT), propertyNameFollow, true); @@ -819,9 +822,10 @@ public class JetParsing extends AbstractJetParsing { parseTypeRef(); } - if (at(EOL_OR_SEMICOLON)) { - consumeIf(SEMICOLON); - } else { + if (at(SEMICOLON)) { + advance(); // SEMICOLON + } + else if (at(EQ) || at(LBRACE)) { parseFunctionBody(); } @@ -850,7 +854,7 @@ public class JetParsing extends AbstractJetParsing { /* * block - * : "{" (expression ";"?)* "}" + * : "{" (expression SEMI)* "}" * ; */ private void parseBlock() { diff --git a/idea/src/org/jetbrains/jet/lexer/Jet.flex b/idea/src/org/jetbrains/jet/lexer/Jet.flex index 0d5ae811c67..422ed674fd4 100644 --- a/idea/src/org/jetbrains/jet/lexer/Jet.flex +++ b/idea/src/org/jetbrains/jet/lexer/Jet.flex @@ -78,39 +78,38 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}? {STRING_LITERAL} { return JetTokens.STRING_LITERAL; } {RAW_STRING_LITERAL} { return JetTokens.RAW_STRING_LITERAL; } + "decomposer" { return JetTokens.DECOMPOSER_KEYWORD ;} "namespace" { return JetTokens.NAMESPACE_KEYWORD ;} - "as" { return JetTokens.AS_KEYWORD ;} - "type" { return JetTokens.TYPE_KEYWORD ;} + "extension" { return JetTokens.EXTENSION_KEYWORD ;} + "continue" { return JetTokens.CONTINUE_KEYWORD ;} + "return" { return JetTokens.RETURN_KEYWORD ;} + "typeof" { return JetTokens.TYPEOF_KEYWORD ;} + "object" { return JetTokens.OBJECT_KEYWORD ;} + "isnot" { return JetTokens.ISNOT_KEYWORD ;} + "while" { return JetTokens.WHILE_KEYWORD ;} + "break" { return JetTokens.BREAK_KEYWORD ;} "class" { return JetTokens.CLASS_KEYWORD ;} + "match" { return JetTokens.MATCH_KEYWORD ;} + "throw" { return JetTokens.THROW_KEYWORD ;} + "false" { return JetTokens.FALSE_KEYWORD ;} + "true" { return JetTokens.TRUE_KEYWORD ;} + "type" { return JetTokens.TYPE_KEYWORD ;} "this" { return JetTokens.THIS_KEYWORD ;} + "null" { return JetTokens.NULL_KEYWORD ;} + "else" { return JetTokens.ELSE_KEYWORD ;} + "try" { return JetTokens.TRY_KEYWORD ;} "val" { return JetTokens.VAL_KEYWORD ;} "var" { return JetTokens.VAR_KEYWORD ;} "fun" { return JetTokens.FUN_KEYWORD ;} - "decomposer" { return JetTokens.DECOMPOSER_KEYWORD ;} - "extension" { return JetTokens.EXTENSION_KEYWORD ;} "for" { return JetTokens.FOR_KEYWORD ;} - "null" { return JetTokens.NULL_KEYWORD ;} - "typeof" { return JetTokens.TYPEOF_KEYWORD ;} "new" { return JetTokens.NEW_KEYWORD ;} - "true" { return JetTokens.TRUE_KEYWORD ;} - "false" { return JetTokens.FALSE_KEYWORD ;} - "is" { return JetTokens.IS_KEYWORD ;} - "isnot" { return JetTokens.ISNOT_KEYWORD ;} - "in" { return JetTokens.IN_KEYWORD ;} "out" { return JetTokens.OUT_KEYWORD ;} "ref" { return JetTokens.REF_KEYWORD ;} - "throw" { return JetTokens.THROW_KEYWORD ;} - "return" { return JetTokens.RETURN_KEYWORD ;} - "break" { return JetTokens.BREAK_KEYWORD ;} - "continue" { return JetTokens.CONTINUE_KEYWORD ;} - "object" { return JetTokens.OBJECT_KEYWORD ;} + "is" { return JetTokens.IS_KEYWORD ;} + "in" { return JetTokens.IN_KEYWORD ;} "if" { return JetTokens.IF_KEYWORD ;} - "else" { return JetTokens.ELSE_KEYWORD ;} - "while" { return JetTokens.WHILE_KEYWORD ;} "do" { return JetTokens.DO_KEYWORD ;} - "match" { return JetTokens.MATCH_KEYWORD ;} - "try" { return JetTokens.TRY_KEYWORD ;} - + "as" { return JetTokens.AS_KEYWORD ;} {IDENTIFIER} { return JetTokens.IDENTIFIER; } diff --git a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java index 928cafa6a51..60c0d4e3690 100644 --- a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java +++ b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 12/27/10 7:06 PM */ +/* The following code was generated by JFlex 1.4.3 on 12/27/10 8:11 PM */ /* It's an automatically generated code. Do not modify it. */ package org.jetbrains.jet.lexer; @@ -13,7 +13,7 @@ import org.jetbrains.jet.lexer.JetTokens; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 12/27/10 7:06 PM from the specification file + * on 12/27/10 8:11 PM from the specification file * /home/user/work/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex */ class _JetLexer implements FlexLexer { @@ -42,9 +42,9 @@ class _JetLexer implements FlexLexer { "\1\75\1\20\1\16\1\6\1\11\11\1\1\73\1\74\1\65\1\67"+ "\1\66\1\72\1\0\1\2\1\13\1\2\1\15\1\17\1\15\5\4"+ "\1\14\3\4\1\21\7\4\1\12\2\4\1\54\1\23\1\55\1\0"+ - "\1\4\1\0\1\26\1\51\1\33\1\45\1\30\1\43\1\4\1\37"+ - "\1\40\1\53\1\52\1\36\1\27\1\25\1\46\1\32\1\4\1\42"+ - "\1\31\1\34\1\44\1\41\1\50\1\47\1\35\1\4\1\56\1\71"+ + "\1\4\1\0\1\36\1\45\1\27\1\25\1\26\1\44\1\4\1\50"+ + "\1\41\1\46\1\52\1\51\1\31\1\35\1\30\1\32\1\4\1\34"+ + "\1\33\1\40\1\42\1\53\1\47\1\37\1\43\1\4\1\56\1\71"+ "\1\57\1\0\41\5\2\0\4\4\4\0\1\4\2\0\1\5\7\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\21\0\130\5\5\0"+ @@ -144,18 +144,18 @@ class _JetLexer implements FlexLexer { "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+ "\1\26\2\1\1\27\1\30\1\31\1\32\1\33\3\34"+ "\1\35\1\36\1\37\1\40\1\0\2\2\1\34\1\41"+ - "\1\42\1\43\1\44\1\45\2\11\3\12\3\3\1\46"+ - "\10\3\1\47\1\50\1\51\6\3\1\52\4\3\1\53"+ + "\1\42\1\43\1\44\1\45\2\11\3\12\1\3\1\46"+ + "\13\3\1\47\3\3\1\50\1\51\1\52\6\3\1\53"+ "\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63"+ "\1\64\1\65\1\66\1\34\1\36\1\67\1\0\1\33"+ - "\3\0\1\12\1\70\1\3\1\71\11\3\1\72\2\3"+ - "\1\73\1\74\1\3\1\75\1\3\1\76\1\77\1\3"+ - "\1\100\3\3\1\101\1\0\2\67\1\0\1\34\2\0"+ - "\1\3\1\102\1\3\1\103\3\3\1\104\1\105\1\3"+ - "\1\106\7\3\1\36\1\0\1\34\1\0\1\3\1\107"+ - "\1\3\1\110\2\3\1\111\1\112\1\3\1\113\2\3"+ - "\1\114\1\115\1\70\3\3\1\116\1\117\1\3\1\120"+ - "\6\3\1\121\1\3\1\122\1\123\1\3\1\124"; + "\3\0\1\12\1\70\5\3\1\71\3\3\1\72\1\73"+ + "\3\3\1\74\4\3\1\75\1\3\1\76\2\3\1\77"+ + "\1\100\1\101\1\0\2\67\1\0\1\34\2\0\2\3"+ + "\1\102\6\3\1\103\1\104\1\105\1\3\1\106\4\3"+ + "\1\36\1\0\1\34\1\0\3\3\1\107\1\3\1\110"+ + "\3\3\1\111\1\112\1\113\1\114\1\115\1\70\3\3"+ + "\1\116\1\117\1\3\1\120\6\3\1\121\2\3\1\122"+ + "\1\123\1\124"; private static int [] zzUnpackAction() { int [] result = new int[204]; @@ -191,24 +191,24 @@ class _JetLexer implements FlexLexer { "\0\u083c\0\76\0\76\0\76\0\76\0\76\0\u087a\0\u08b8"+ "\0\u08f6\0\u0934\0\76\0\76\0\u0972\0\u09b0\0\u09ee\0\u0a2c"+ "\0\76\0\76\0\76\0\76\0\76\0\76\0\u0a6a\0\u0aa8"+ - "\0\u0ae6\0\u0b24\0\u0b62\0\u0ba0\0\u0bde\0\272\0\u0c1c\0\u0c5a"+ - "\0\u0c98\0\u0cd6\0\u0d14\0\u0d52\0\u0d90\0\u0dce\0\272\0\u0e0c"+ - "\0\272\0\u0e4a\0\u0e88\0\u0ec6\0\u0f04\0\u0f42\0\u0f80\0\272"+ + "\0\u0ae6\0\u0b24\0\u0b62\0\272\0\u0ba0\0\u0bde\0\u0c1c\0\u0c5a"+ + "\0\u0c98\0\u0cd6\0\u0d14\0\u0d52\0\u0d90\0\u0dce\0\u0e0c\0\272"+ + "\0\u0e4a\0\u0e88\0\u0ec6\0\u0f04\0\272\0\272\0\u0f42\0\u0f80"+ "\0\u0fbe\0\u0ffc\0\u103a\0\u1078\0\76\0\76\0\76\0\76"+ "\0\76\0\76\0\u10b6\0\76\0\76\0\76\0\76\0\76"+ "\0\u10f4\0\u1132\0\u1170\0\u11ae\0\u11ae\0\u11ec\0\u122a\0\u1268"+ - "\0\76\0\u12a6\0\u12e4\0\272\0\u1322\0\u1360\0\u139e\0\u13dc"+ - "\0\u141a\0\u1458\0\u1496\0\u14d4\0\u1512\0\272\0\u1550\0\u158e"+ - "\0\272\0\272\0\u15cc\0\272\0\u160a\0\272\0\272\0\u1648"+ - "\0\272\0\u1686\0\u16c4\0\u1702\0\76\0\u1740\0\u177e\0\76"+ - "\0\u17bc\0\u17fa\0\u1838\0\u1876\0\u18b4\0\272\0\u18f2\0\272"+ - "\0\u1930\0\u196e\0\u19ac\0\u19ea\0\272\0\u1a28\0\272\0\u1a66"+ - "\0\u1aa4\0\u1ae2\0\u1b20\0\u1b5e\0\u1b9c\0\u1bda\0\76\0\u1c18"+ - "\0\u11ae\0\u1c56\0\u1c94\0\272\0\u1cd2\0\272\0\u1d10\0\u1d4e"+ - "\0\272\0\272\0\u1d8c\0\272\0\u1dca\0\u1e08\0\272\0\272"+ + "\0\76\0\u12a6\0\u12e4\0\u1322\0\u1360\0\u139e\0\u13dc\0\272"+ + "\0\u141a\0\u1458\0\u1496\0\272\0\272\0\u14d4\0\u1512\0\u1550"+ + "\0\272\0\u158e\0\u15cc\0\u160a\0\u1648\0\272\0\u1686\0\272"+ + "\0\u16c4\0\u1702\0\272\0\272\0\76\0\u1740\0\u177e\0\76"+ + "\0\u17bc\0\u17fa\0\u1838\0\u1876\0\u18b4\0\u18f2\0\272\0\u1930"+ + "\0\u196e\0\u19ac\0\u19ea\0\u1a28\0\u1a66\0\272\0\272\0\u1aa4"+ + "\0\u1ae2\0\272\0\u1b20\0\u1b5e\0\u1b9c\0\u1bda\0\76\0\u1c18"+ + "\0\u11ae\0\u1c56\0\u1c94\0\u1cd2\0\u1d10\0\272\0\u1d4e\0\272"+ + "\0\u1d8c\0\u1dca\0\u1e08\0\272\0\272\0\272\0\272\0\272"+ "\0\76\0\u1e46\0\u1e84\0\u1ec2\0\272\0\272\0\u1f00\0\272"+ "\0\u1f3e\0\u1f7c\0\u1fba\0\u1ff8\0\u2036\0\u2074\0\272\0\u20b2"+ - "\0\272\0\272\0\u20f0\0\272"; + "\0\u20f0\0\272\0\272\0\272"; private static int [] zzUnpackRowMap() { int [] result = new int[204]; @@ -236,215 +236,213 @@ class _JetLexer implements FlexLexer { private static final String ZZ_TRANS_PACKED_0 = "\1\2\1\3\1\4\1\5\1\4\1\2\1\6\1\7"+ "\1\5\1\10\4\4\1\11\1\4\1\12\1\4\1\13"+ - "\1\2\1\14\1\15\1\16\1\17\1\20\2\4\1\21"+ - "\1\22\3\4\1\23\1\24\1\25\1\26\1\4\1\27"+ - "\1\30\1\4\1\31\1\32\2\4\1\33\1\34\1\35"+ + "\1\2\1\14\1\15\1\16\1\17\1\20\1\21\2\4"+ + "\1\22\1\23\1\24\1\4\1\25\1\26\2\4\1\27"+ + "\1\30\1\4\1\31\3\4\1\32\1\33\1\34\1\35"+ "\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45"+ "\1\46\1\47\1\50\1\51\1\52\1\53\1\54\77\0"+ "\1\3\7\0\1\3\2\0\1\55\1\56\1\57\1\60"+ - "\10\0\1\60\5\0\1\55\4\0\1\56\1\0\1\56"+ - "\31\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\27\4\25\0\1\5\4\0\1\5"+ - "\73\0\1\61\1\62\57\0\1\63\75\0\1\64\7\0"+ - "\1\65\7\0\1\65\1\66\1\67\1\55\1\56\1\57"+ - "\1\60\10\0\1\60\5\0\1\55\4\0\1\56\1\0"+ - "\1\56\1\0\1\66\1\0\1\67\25\0\1\70\5\0"+ - "\1\71\1\0\1\70\4\0\1\72\53\0\1\73\23\0"+ - "\1\74\46\0\1\75\6\0\10\13\1\0\11\13\1\76"+ - "\1\77\52\13\10\100\1\0\12\100\1\101\1\102\51\100"+ - "\1\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\4\1\103\1\4\1\104\13\4"+ - "\1\105\7\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\4\4\1\106\22\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\4\1\107\25\4\23\0\2\4"+ - "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\11\4\1\110\10\4\1\111\4\4\23\0\2\4"+ - "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\11\4\1\112\7\4\1\113\5\4\23\0\2\4"+ - "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\10\4\1\114\1\4\1\115\2\4\1\116\11\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\117\3\4\1\120\11\4\1\121"+ - "\10\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\1\4\1\122\25\4\23\0"+ + "\5\0\1\56\1\60\15\0\1\56\4\0\1\55\25\0"+ "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\3\4\1\123\23\4\23\0\2\4\1\0"+ + "\1\4\3\0\27\4\25\0\1\5\4\0\1\5\73\0"+ + "\1\61\1\62\57\0\1\63\75\0\1\64\7\0\1\65"+ + "\7\0\1\65\1\66\1\67\1\55\1\56\1\57\1\60"+ + "\5\0\1\56\1\60\10\0\1\66\4\0\1\56\1\67"+ + "\3\0\1\55\25\0\1\70\5\0\1\71\1\0\1\70"+ + "\4\0\1\72\53\0\1\73\23\0\1\74\46\0\1\75"+ + "\6\0\10\13\1\0\11\13\1\76\1\77\52\13\10\100"+ + "\1\0\12\100\1\101\1\102\51\100\1\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\1\4\1\124\15\4\1\125\1\4\1\126\5\4\23\0"+ - "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\3\4\1\127\15\4\1\130\5\4\23\0"+ - "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\17\4\1\131\4\4\1\132\2\4\23\0"+ - "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\12\4\1\133\14\4\23\0\2\4\1\0"+ + "\1\4\1\103\1\4\1\104\23\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\15\4\1\134\11\4\104\0\1\135\4\0\1\136\75\0"+ - "\1\137\75\0\1\140\75\0\1\141\75\0\1\142\75\0"+ - "\1\143\76\0\1\144\76\0\1\145\22\0\1\146\54\0"+ - "\1\147\3\0\1\70\7\0\1\70\3\0\1\56\1\150"+ - "\1\60\10\0\1\60\12\0\1\56\1\0\1\56\31\0"+ - "\1\151\7\0\1\151\3\0\1\56\2\0\1\151\22\0"+ - "\1\56\1\0\1\56\14\0\1\151\13\0\10\61\1\0"+ - "\65\61\7\152\1\153\66\152\1\0\1\65\7\0\1\65"+ - "\3\0\1\56\1\70\1\60\10\0\1\60\12\0\1\56"+ - "\1\0\1\56\30\0\1\154\2\66\5\154\1\0\1\66"+ - "\1\154\1\66\1\155\1\66\1\156\1\66\1\154\1\157"+ - "\4\154\1\66\1\154\1\66\1\154\1\157\1\66\2\154"+ - "\1\155\4\154\1\66\1\154\1\66\3\154\1\66\24\154"+ - "\1\0\1\67\7\0\1\67\2\0\1\55\1\0\1\160"+ - "\17\0\1\55\40\0\1\70\7\0\1\70\3\0\1\56"+ - "\1\0\1\60\10\0\1\60\12\0\1\56\1\0\1\56"+ - "\30\0\10\13\1\0\65\13\10\100\1\0\12\100\1\101"+ - "\1\161\61\100\1\0\65\100\24\0\1\162\52\0\2\4"+ - "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\2\4\1\163\24\4\23\0\2\4\1\0\2\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\23\4"+ - "\1\164\3\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\11\4\1\165\15\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\7\4\1\166\17\4\23\0\2\4"+ - "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\167\22\4\23\0\2\4\1\0\2\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\7\4"+ - "\1\170\17\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\1\4\1\171\25\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\172\26\4\23\0\2\4\1\0"+ + "\12\4\1\105\11\4\1\106\2\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\5\4\1\173\21\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\13\4\1\174"+ - "\1\4\1\175\11\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\10\4\1\176"+ - "\6\4\1\177\7\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\1\200\26\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\11\4\1\201\3\4\1\202\11\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\7\4\1\203\6\4\1\204\10\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\11\4\1\205\15\4\23\0\2\4"+ - "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\1\206\26\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\15\4\1\207"+ - "\11\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\6\4\1\210\20\4\23\0"+ + "\3\4\1\107\20\4\1\110\2\4\23\0\2\4\1\0"+ + "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\15\4\1\111\2\4\1\112\6\4\23\0\2\4\1\0"+ + "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\11\4\1\113\15\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\1\4\1\114"+ + "\25\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\115\7\4\1\116"+ + "\3\4\1\117\11\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\6\4\1\120"+ + "\20\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\7\4\1\121\6\4\1\122"+ + "\4\4\1\123\3\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\6\4\1\124"+ + "\1\4\1\125\6\4\1\126\7\4\23\0\2\4\1\0"+ + "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\127\5\4\1\130\3\4\1\131\11\4\23\0"+ "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\7\4\1\211\17\4\23\0\2\4\1\0"+ + "\1\4\3\0\7\4\1\132\17\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\26\4\1\212\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\13\4\1\213\13\4"+ + "\23\4\1\133\3\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\11\4\1\134"+ + "\15\4\104\0\1\135\4\0\1\136\75\0\1\137\75\0"+ + "\1\140\75\0\1\141\75\0\1\142\75\0\1\143\76\0"+ + "\1\144\76\0\1\145\22\0\1\146\54\0\1\147\3\0"+ + "\1\70\7\0\1\70\3\0\1\56\1\150\1\60\5\0"+ + "\1\56\1\60\15\0\1\56\32\0\1\151\7\0\1\151"+ + "\3\0\1\56\2\0\1\151\4\0\1\56\16\0\1\56"+ + "\15\0\1\151\13\0\10\61\1\0\65\61\7\152\1\153"+ + "\66\152\1\0\1\65\7\0\1\65\3\0\1\56\1\70"+ + "\1\60\5\0\1\56\1\60\15\0\1\56\31\0\1\154"+ + "\2\66\5\154\1\0\1\66\1\154\1\66\1\155\1\66"+ + "\1\156\1\66\1\154\1\157\3\154\3\66\2\154\1\157"+ + "\3\154\1\66\5\154\2\66\3\154\1\155\24\154\1\0"+ + "\1\67\7\0\1\67\2\0\1\55\1\0\1\160\32\0"+ + "\1\55\25\0\1\70\7\0\1\70\3\0\1\56\1\0"+ + "\1\60\5\0\1\56\1\60\15\0\1\56\31\0\10\13"+ + "\1\0\65\13\10\100\1\0\12\100\1\101\1\161\61\100"+ + "\1\0\65\100\24\0\1\162\52\0\2\4\1\0\2\4"+ + "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\2\4"+ + "\1\163\24\4\23\0\2\4\1\0\2\4\3\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\13\4\1\164\13\4"+ "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\214\23\4\111\0\1\215"+ - "\7\0\1\151\7\0\1\151\3\0\1\56\25\0\1\56"+ - "\1\0\1\56\30\0\7\152\1\216\66\152\6\217\1\220"+ - "\1\153\66\217\1\0\2\154\6\0\1\154\1\0\1\154"+ - "\1\0\1\154\1\0\1\154\1\0\1\221\4\0\1\154"+ - "\1\0\1\154\1\0\1\221\1\154\7\0\1\154\1\0"+ - "\1\154\3\0\1\154\25\0\2\154\6\0\1\154\1\0"+ - "\1\154\1\0\1\154\1\150\1\154\1\0\1\221\4\0"+ - "\1\154\1\0\1\154\1\0\1\221\1\154\7\0\1\154"+ - "\1\0\1\154\3\0\1\154\25\0\1\222\1\154\6\0"+ - "\1\222\1\0\1\154\1\0\1\154\1\0\1\154\1\223"+ - "\1\221\4\0\1\154\1\0\1\154\1\0\1\221\1\154"+ - "\7\0\1\154\1\0\1\154\3\0\1\154\10\0\1\223"+ - "\31\0\1\150\57\0\24\162\1\224\51\162\1\0\2\4"+ + "\1\0\1\4\3\0\6\4\1\165\20\4\23\0\2\4"+ "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\225\23\4\23\0\2\4\1\0\2\4"+ + "\3\0\10\4\1\166\16\4\23\0\2\4\1\0\2\4"+ "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\11\4"+ - "\1\226\15\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\6\4\1\227\20\4"+ + "\1\167\15\4\23\0\2\4\1\0\2\4\3\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\13\4\1\170\13\4"+ "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\230\23\4\23\0\2\4"+ + "\1\0\1\4\3\0\21\4\1\171\5\4\23\0\2\4"+ "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\231\23\4\23\0\2\4\1\0\2\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\4\4"+ - "\1\232\22\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\7\4\1\233\17\4"+ + "\3\0\13\4\1\172\13\4\23\0\2\4\1\0\2\4"+ + "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\13\4"+ + "\1\173\3\4\1\174\7\4\23\0\2\4\1\0\2\4"+ + "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\22\4"+ + "\1\175\4\4\23\0\2\4\1\0\2\4\3\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\4\4\1\176\22\4"+ "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\234\23\4\23\0\2\4"+ + "\1\0\1\4\3\0\24\4\1\177\2\4\23\0\2\4"+ "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\235\22\4\23\0\2\4\1\0\2\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\21\4"+ - "\1\236\5\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\3\4\1\237\23\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\21\4\1\240\5\4\23\0\2\4"+ + "\3\0\15\4\1\200\1\201\10\4\23\0\2\4\1\0"+ + "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\5\4\1\202\21\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\7\4\1\203"+ + "\4\4\1\204\12\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\10\4\1\205"+ + "\16\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\7\4\1\206\17\4\23\0"+ + "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\24\4\1\207\2\4\23\0\2\4\1\0"+ + "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\10\4\1\210\16\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\1\4\1\211"+ + "\25\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\14\4\1\212\12\4\23\0"+ + "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\7\4\1\213\14\4\1\214\2\4\111\0"+ + "\1\215\7\0\1\151\7\0\1\151\3\0\1\56\7\0"+ + "\1\56\16\0\1\56\31\0\7\152\1\216\66\152\6\217"+ + "\1\220\1\153\66\217\1\0\2\154\6\0\1\154\1\0"+ + "\1\154\1\0\1\154\1\0\1\154\1\0\1\221\3\0"+ + "\3\154\2\0\1\221\3\0\1\154\5\0\2\154\31\0"+ + "\2\154\6\0\1\154\1\0\1\154\1\0\1\154\1\150"+ + "\1\154\1\0\1\221\3\0\3\154\2\0\1\221\3\0"+ + "\1\154\5\0\2\154\31\0\1\222\1\154\6\0\1\222"+ + "\1\0\1\154\1\0\1\154\1\0\1\154\1\223\1\221"+ + "\3\0\3\154\2\0\1\221\3\0\1\154\5\0\2\154"+ + "\14\0\1\223\31\0\1\150\57\0\24\162\1\224\51\162"+ + "\1\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\225\23\4\23\0\2\4"+ "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\17\4\1\241\7\4\23\0\2\4\1\0\2\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\4\4"+ - "\1\242\22\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\21\4\1\243\5\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\244\23\4\23\0\2\4"+ - "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\11\4\1\245\15\4\23\0\2\4\1\0\2\4"+ + "\3\0\1\4\1\226\25\4\23\0\2\4\1\0\2\4"+ "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\1\4"+ - "\1\246\25\4\22\0\6\152\1\247\1\216\66\152\7\217"+ - "\1\250\66\217\1\0\1\151\7\0\1\151\6\0\1\223"+ - "\41\0\1\223\14\0\1\222\1\154\6\0\1\222\1\0"+ - "\1\154\1\0\1\251\1\0\1\154\1\0\1\221\4\0"+ - "\1\154\1\0\1\154\1\0\1\221\1\154\7\0\1\251"+ - "\1\0\1\251\3\0\1\154\25\0\1\151\7\0\1\151"+ - "\64\0\24\162\1\252\51\162\1\0\2\4\1\0\2\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\4\4"+ - "\1\253\22\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\12\4\1\254\14\4"+ + "\1\227\25\4\23\0\2\4\1\0\2\4\3\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\13\4\1\230\13\4"+ "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\255\26\4\23\0\2\4\1\0"+ - "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\4\4\1\256\22\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\13\4\1\257"+ - "\13\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\21\4\1\260\5\4\23\0"+ + "\1\0\1\4\3\0\6\4\1\231\20\4\23\0\2\4"+ + "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\4\1\232\25\4\23\0\2\4\1\0\2\4"+ + "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\2\4"+ + "\1\233\24\4\23\0\2\4\1\0\2\4\3\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\15\4\1\234\11\4"+ + "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\4\1\235\25\4\23\0\2\4"+ + "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\24\4\1\236\2\4\23\0\2\4\1\0\2\4"+ + "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\1\4"+ + "\1\237\25\4\23\0\2\4\1\0\2\4\3\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\4\1\240\25\4"+ + "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\241\23\4\23\0\2\4"+ + "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\6\4\1\242\20\4\23\0\2\4\1\0\2\4"+ + "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\243\23\4\23\0\2\4\1\0\2\4\3\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\6\4\1\244\20\4"+ + "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\11\4\1\245\15\4\23\0\2\4"+ + "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\24\4\1\246\2\4\22\0\6\152\1\247\1\216"+ + "\66\152\7\217\1\250\66\217\1\0\1\151\7\0\1\151"+ + "\6\0\1\223\41\0\1\223\14\0\1\222\1\154\6\0"+ + "\1\222\1\0\1\154\1\0\1\251\1\0\1\154\1\0"+ + "\1\221\3\0\1\251\2\154\2\0\1\221\3\0\1\154"+ + "\5\0\1\251\1\154\31\0\1\151\7\0\1\151\64\0"+ + "\24\162\1\252\51\162\1\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\4\4\1\253"+ + "\22\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\10\4\1\254\16\4\23\0"+ "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\23\4\1\261\3\4\23\0\2\4\1\0"+ + "\1\4\3\0\14\4\1\255\12\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\7\4\1\262\17\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\15\4\1\263"+ - "\11\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\3\4\1\264\23\4\23\0"+ + "\6\4\1\256\20\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\2\4\1\257"+ + "\24\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\23\4\1\260\3\4\23\0"+ "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\2\4\1\265\24\4\23\0\2\4\1\0"+ + "\1\4\3\0\7\4\1\261\17\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\6\4\1\266\20\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\3\4\1\267"+ + "\6\4\1\262\20\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\3\4\1\263"+ "\23\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\25\4\1\270\1\4\22\0"+ + "\1\4\1\0\1\4\3\0\22\4\1\264\4\4\23\0"+ + "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\13\4\1\265\13\4\23\0\2\4\1\0"+ + "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\4\1\266\25\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\25\4\1\267"+ + "\1\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\270\25\4\22\0"+ "\6\217\1\220\1\250\66\217\24\162\1\271\51\162\1\0"+ "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ "\1\4\3\0\5\4\1\272\21\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\4\4\1\273\22\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\1\274\26\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\16\4\1\275\10\4\23\0\2\4"+ - "\1\0\2\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\1\276\26\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\5\4\1\277"+ - "\21\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\7\4\1\300\17\4\23\0"+ + "\6\4\1\273\20\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\10\4\1\274"+ + "\16\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\13\4\1\275\13\4\23\0"+ "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\1\4\1\301\25\4\23\0\2\4\1\0"+ + "\1\4\3\0\10\4\1\276\16\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\13\4\1\302\13\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\17\4\1\303"+ + "\5\4\1\277\21\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\17\4\1\300"+ "\7\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\21\4\1\304\5\4\23\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\301\23\4\23\0"+ "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\6\4\1\305\20\4\23\0\2\4\1\0"+ + "\1\4\3\0\14\4\1\302\12\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\21\4\1\306\5\4\23\0\2\4\1\0\2\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\3\4\1\307"+ - "\23\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\4\4\1\310\22\4\23\0"+ + "\15\4\1\303\11\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\11\4\1\304"+ + "\15\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\6\4\1\305\20\4\23\0"+ "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\3\4\1\311\23\4\23\0\2\4\1\0"+ + "\1\4\3\0\3\4\1\306\23\4\23\0\2\4\1\0"+ "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\1\312\26\4\23\0\2\4\1\0\2\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\3\4\1\313\23\4"+ - "\23\0\2\4\1\0\2\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\15\4\1\314\11\4\22\0"; + "\1\4\1\307\25\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\2\4\1\310"+ + "\24\4\23\0\2\4\1\0\2\4\3\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\311\25\4\23\0"+ + "\2\4\1\0\2\4\3\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\10\4\1\312\16\4\23\0\2\4\1\0"+ + "\2\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\4\1\313\25\4\23\0\2\4\1\0\2\4\3\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\7\4\1\314"+ + "\17\4\22\0"; private static int [] zzUnpackTrans() { int [] result = new int[8494]; @@ -804,11 +802,11 @@ class _JetLexer implements FlexLexer { { return JetTokens.IDENTIFIER; } case 85: break; - case 63: + case 61: { return JetTokens.FOR_KEYWORD ; } case 86: break; - case 64: + case 57: { return JetTokens.OUT_KEYWORD ; } case 87: break; @@ -816,7 +814,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.RETURN_KEYWORD ; } case 88: break; - case 66: + case 67: { return JetTokens.NULL_KEYWORD ; } case 89: break; @@ -824,7 +822,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.LT ; } case 90: break; - case 42: + case 38: { return JetTokens.DO_KEYWORD ; } case 91: break; @@ -844,12 +842,12 @@ class _JetLexer implements FlexLexer { { return JetTokens.PLUSEQ ; } case 95: break; - case 26: - { return JetTokens.COMMA ; + case 72: + { return JetTokens.MATCH_KEYWORD ; } case 96: break; - case 71: - { return JetTokens.MATCH_KEYWORD ; + case 26: + { return JetTokens.COMMA ; } case 97: break; case 21: @@ -860,7 +858,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.WHITE_SPACE; } case 99: break; - case 78: + case 80: { return JetTokens.TYPEOF_KEYWORD ; } case 100: break; @@ -868,7 +866,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.RPAR ; } case 101: break; - case 70: + case 68: { return JetTokens.TRUE_KEYWORD ; } case 102: break; @@ -908,7 +906,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.CHARACTER_LITERAL; } case 111: break; - case 60: + case 63: { return JetTokens.VAR_KEYWORD ; } case 112: break; @@ -924,7 +922,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.RBRACE ; } case 115: break; - case 72: + case 71: { return JetTokens.CLASS_KEYWORD ; } case 116: break; @@ -932,7 +930,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.EXCL ; } case 117: break; - case 58: + case 60: { return JetTokens.TRY_KEYWORD ; } case 118: break; @@ -948,7 +946,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.THROW_KEYWORD ; } case 121: break; - case 76: + case 77: { return JetTokens.WHILE_KEYWORD ; } case 122: break; @@ -996,7 +994,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.SAFE_ACCESS; } case 133: break; - case 82: + case 83: { return JetTokens.NAMESPACE_KEYWORD ; } case 134: break; @@ -1016,7 +1014,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.PLUSPLUS ; } case 138: break; - case 69: + case 70: { return JetTokens.THIS_KEYWORD ; } case 139: break; @@ -1028,7 +1026,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.SEMICOLON ; } case 141: break; - case 41: + case 42: { return JetTokens.IF_KEYWORD ; } case 142: break; @@ -1048,11 +1046,11 @@ class _JetLexer implements FlexLexer { { return JetTokens.FALSE_KEYWORD ; } case 146: break; - case 68: + case 69: { return JetTokens.TYPE_KEYWORD ; } case 147: break; - case 61: + case 58: { return JetTokens.REF_KEYWORD ; } case 148: break; @@ -1068,19 +1066,19 @@ class _JetLexer implements FlexLexer { { return JetTokens.DIVEQ ; } case 151: break; - case 83: + case 82: { return JetTokens.EXTENSION_KEYWORD ; } case 152: break; - case 38: + case 39: { return JetTokens.AS_KEYWORD ; } case 153: break; - case 67: + case 66: { return JetTokens.ELSE_KEYWORD ; } case 154: break; - case 39: + case 41: { return JetTokens.IN_KEYWORD ; } case 155: break; @@ -1088,7 +1086,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.EQEQ ; } case 156: break; - case 59: + case 64: { return JetTokens.VAL_KEYWORD ; } case 157: break; @@ -1096,7 +1094,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.EQEQEQ ; } case 158: break; - case 57: + case 59: { return JetTokens.NEW_KEYWORD ; } case 159: break; @@ -1116,11 +1114,11 @@ class _JetLexer implements FlexLexer { { return JetTokens.ISNOT_KEYWORD ; } case 163: break; - case 80: + case 78: { return JetTokens.OBJECT_KEYWORD ; } case 164: break; - case 77: + case 76: { return JetTokens.BREAK_KEYWORD ; } case 165: break; diff --git a/idea/testData/psi/Decomposers_ERR.txt b/idea/testData/psi/Decomposers_ERR.txt index 3a29b2f4354..3805c9e3f10 100644 --- a/idea/testData/psi/Decomposers_ERR.txt +++ b/idea/testData/psi/Decomposers_ERR.txt @@ -6,7 +6,7 @@ JetFile: Decomposers_ERR.jet DECOMPOSER_PROPERTY_LIST PsiElement(LPAR)('(') PsiElement(IDENTIFIER)('a') - PsiErrorElement:Expecting a property name or a closing ')' + PsiErrorElement:Expecting ',' or a closing ')' PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('a') diff --git a/idea/testData/psi/SimpleClassMembers_ERR.txt b/idea/testData/psi/SimpleClassMembers_ERR.txt index 8d50b38e521..a492c8278f9 100644 --- a/idea/testData/psi/SimpleClassMembers_ERR.txt +++ b/idea/testData/psi/SimpleClassMembers_ERR.txt @@ -90,7 +90,7 @@ JetFile: SimpleClassMembers_ERR.jet PsiElement(COMMA)(',') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('c') - PsiErrorElement:Expecting ')' to close a property list + PsiErrorElement:Expecting ',' or a closing ')' PsiWhiteSpace('\n\n ') CONSTRUCTOR