A few more basic expressions, some bits about newlines

This commit is contained in:
Andrey Breslav
2010-12-27 20:12:31 +03:00
parent 28696f9d60
commit 0f852ed88f
11 changed files with 311 additions and 275 deletions
+3 -3
View File
@@ -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
+2 -3
View File
@@ -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:
+1 -1
View File
@@ -11,7 +11,7 @@ preamble
;
namespaceHeader
: "namespace" SimpleName{"."}
: "namespace" SimpleName{"."} SEMI?
;
import
@@ -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");
}
@@ -204,4 +204,9 @@ import static org.jetbrains.jet.lexer.JetTokens.*;
currentPosition.rollbackTo();
return lastOccurrence;
}
protected boolean eol() {
return myBuilder.eolInLastWhitespace();
}
}
@@ -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() {
@@ -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() {
+20 -21
View File
@@ -78,39 +78,38 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}?
<YYINITIAL> {STRING_LITERAL} { return JetTokens.STRING_LITERAL; }
<YYINITIAL> {RAW_STRING_LITERAL} { return JetTokens.RAW_STRING_LITERAL; }
<YYINITIAL> "decomposer" { return JetTokens.DECOMPOSER_KEYWORD ;}
<YYINITIAL> "namespace" { return JetTokens.NAMESPACE_KEYWORD ;}
<YYINITIAL> "as" { return JetTokens.AS_KEYWORD ;}
<YYINITIAL> "type" { return JetTokens.TYPE_KEYWORD ;}
<YYINITIAL> "extension" { return JetTokens.EXTENSION_KEYWORD ;}
<YYINITIAL> "continue" { return JetTokens.CONTINUE_KEYWORD ;}
<YYINITIAL> "return" { return JetTokens.RETURN_KEYWORD ;}
<YYINITIAL> "typeof" { return JetTokens.TYPEOF_KEYWORD ;}
<YYINITIAL> "object" { return JetTokens.OBJECT_KEYWORD ;}
<YYINITIAL> "isnot" { return JetTokens.ISNOT_KEYWORD ;}
<YYINITIAL> "while" { return JetTokens.WHILE_KEYWORD ;}
<YYINITIAL> "break" { return JetTokens.BREAK_KEYWORD ;}
<YYINITIAL> "class" { return JetTokens.CLASS_KEYWORD ;}
<YYINITIAL> "match" { return JetTokens.MATCH_KEYWORD ;}
<YYINITIAL> "throw" { return JetTokens.THROW_KEYWORD ;}
<YYINITIAL> "false" { return JetTokens.FALSE_KEYWORD ;}
<YYINITIAL> "true" { return JetTokens.TRUE_KEYWORD ;}
<YYINITIAL> "type" { return JetTokens.TYPE_KEYWORD ;}
<YYINITIAL> "this" { return JetTokens.THIS_KEYWORD ;}
<YYINITIAL> "null" { return JetTokens.NULL_KEYWORD ;}
<YYINITIAL> "else" { return JetTokens.ELSE_KEYWORD ;}
<YYINITIAL> "try" { return JetTokens.TRY_KEYWORD ;}
<YYINITIAL> "val" { return JetTokens.VAL_KEYWORD ;}
<YYINITIAL> "var" { return JetTokens.VAR_KEYWORD ;}
<YYINITIAL> "fun" { return JetTokens.FUN_KEYWORD ;}
<YYINITIAL> "decomposer" { return JetTokens.DECOMPOSER_KEYWORD ;}
<YYINITIAL> "extension" { return JetTokens.EXTENSION_KEYWORD ;}
<YYINITIAL> "for" { return JetTokens.FOR_KEYWORD ;}
<YYINITIAL> "null" { return JetTokens.NULL_KEYWORD ;}
<YYINITIAL> "typeof" { return JetTokens.TYPEOF_KEYWORD ;}
<YYINITIAL> "new" { return JetTokens.NEW_KEYWORD ;}
<YYINITIAL> "true" { return JetTokens.TRUE_KEYWORD ;}
<YYINITIAL> "false" { return JetTokens.FALSE_KEYWORD ;}
<YYINITIAL> "is" { return JetTokens.IS_KEYWORD ;}
<YYINITIAL> "isnot" { return JetTokens.ISNOT_KEYWORD ;}
<YYINITIAL> "in" { return JetTokens.IN_KEYWORD ;}
<YYINITIAL> "out" { return JetTokens.OUT_KEYWORD ;}
<YYINITIAL> "ref" { return JetTokens.REF_KEYWORD ;}
<YYINITIAL> "throw" { return JetTokens.THROW_KEYWORD ;}
<YYINITIAL> "return" { return JetTokens.RETURN_KEYWORD ;}
<YYINITIAL> "break" { return JetTokens.BREAK_KEYWORD ;}
<YYINITIAL> "continue" { return JetTokens.CONTINUE_KEYWORD ;}
<YYINITIAL> "object" { return JetTokens.OBJECT_KEYWORD ;}
<YYINITIAL> "is" { return JetTokens.IS_KEYWORD ;}
<YYINITIAL> "in" { return JetTokens.IN_KEYWORD ;}
<YYINITIAL> "if" { return JetTokens.IF_KEYWORD ;}
<YYINITIAL> "else" { return JetTokens.ELSE_KEYWORD ;}
<YYINITIAL> "while" { return JetTokens.WHILE_KEYWORD ;}
<YYINITIAL> "do" { return JetTokens.DO_KEYWORD ;}
<YYINITIAL> "match" { return JetTokens.MATCH_KEYWORD ;}
<YYINITIAL> "try" { return JetTokens.TRY_KEYWORD ;}
<YYINITIAL> "as" { return JetTokens.AS_KEYWORD ;}
<YYINITIAL> {IDENTIFIER} { return JetTokens.IDENTIFIER; }
+227 -229
View File
@@ -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
* <a href="http://www.jflex.de/">JFlex</a> 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
* <tt>/home/user/work/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex</tt>
*/
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;
+1 -1
View File
@@ -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 ')'
<empty list>
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('a')
+1 -1
View File
@@ -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 ')'
<empty list>
PsiWhiteSpace('\n\n ')
CONSTRUCTOR