From 69ade018f9294dc97b6a3f7bef652519068d0bc8 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 15 Dec 2010 16:21:16 +0300 Subject: [PATCH] Imports and recovery --- grammar/src/lexical.grm | 6 +- idea/idea.iml | 2 +- idea/idea.properties | 1 + idea/src/org/jetbrains/jet/JetNodeTypes.java | 2 + .../jet/lang/parsing/JetParsing.java | 213 ++++-- idea/src/org/jetbrains/jet/lexer/Jet.flex | 3 +- .../org/jetbrains/jet/lexer/JetTokens.java | 8 +- .../org/jetbrains/jet/lexer/_JetLexer.java | 653 +++++++++--------- idea/testData/psi/BabySteps.txt | 3 +- idea/testData/psi/EmptyFile.txt | 3 +- idea/testData/psi/FileStart_ERR.jet | 2 + idea/testData/psi/Imports.jet | 8 + idea/testData/psi/Imports.txt | 56 ++ idea/testData/psi/Imports_ERR.jet | 17 + .../jetbrains/jet/parsing/JetParsingTest.java | 2 + 15 files changed, 580 insertions(+), 399 deletions(-) create mode 100644 idea/idea.properties create mode 100644 idea/testData/psi/FileStart_ERR.jet create mode 100644 idea/testData/psi/Imports.jet create mode 100644 idea/testData/psi/Imports.txt create mode 100644 idea/testData/psi/Imports_ERR.jet diff --git a/grammar/src/lexical.grm b/grammar/src/lexical.grm index 7fb845d6116..2c776cd2519 100644 --- a/grammar/src/lexical.grm +++ b/grammar/src/lexical.grm @@ -31,7 +31,6 @@ NoEscapeString : /* """-quoted string */; /* Keywords: namespace -import as type class @@ -60,6 +59,8 @@ else while do match +out +ref Soft: wraps -- in a class header @@ -67,6 +68,7 @@ where -- in class, function and type headers by -- in a class header (Delegation specifier) lazy -- in a property/parameter declaration get, set -- in a property definition +import abstract virtual enum @@ -77,6 +79,4 @@ private public internal protected -out -ref */ \ No newline at end of file diff --git a/idea/idea.iml b/idea/idea.iml index 45711e25b08..18094bf1615 100644 --- a/idea/idea.iml +++ b/idea/idea.iml @@ -7,7 +7,7 @@ - + diff --git a/idea/idea.properties b/idea/idea.properties new file mode 100644 index 00000000000..4249c9d9e25 --- /dev/null +++ b/idea/idea.properties @@ -0,0 +1 @@ +idea.home=/home/user/work/idea.src \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/JetNodeTypes.java b/idea/src/org/jetbrains/jet/JetNodeTypes.java index 45cb8652622..8a96a91eb0a 100644 --- a/idea/src/org/jetbrains/jet/JetNodeTypes.java +++ b/idea/src/org/jetbrains/jet/JetNodeTypes.java @@ -28,5 +28,7 @@ public interface JetNodeTypes { JetNodeType VALUE_PARAMETER_LIST = new JetNodeType("VALUE_PARAMETER_LIST"); JetNodeType NAMED_ARGUMENT = new JetNodeType("NAMED_ARGUMENT"); JetNodeType CLASS_BODY = new JetNodeType("CLASS_BODY"); + JetNodeType IMPORT_DIRECTIVE = new JetNodeType("IMPORT_DIRECTIVE"); + IElementType NAMESPACE_NAME = new JetNodeType("NAMESPACE_NAME"); } diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 97267c34727..ee0ee0df42a 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -5,94 +5,155 @@ package org.jetbrains.jet.lang.parsing; import com.intellij.lang.ITokenTypeRemapper; import com.intellij.lang.PsiBuilder; +import com.intellij.lang.WhitespaceSkippedCallback; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeType; import org.jetbrains.jet.lexer.JetSoftKeywordToken; import org.jetbrains.jet.lexer.JetToken; -import org.jetbrains.jet.lexer.JetTokens; import static org.jetbrains.jet.JetNodeTypes.*; import static org.jetbrains.jet.lexer.JetTokens.*; public class JetParsing { - public static final TokenSet CLASS_NAME_FOLLOW = TokenSet.create(LT, WRAPS_KEYWORD, LPAR, COLON, LBRACE); - public static final TokenSet TYPE_PARAMETER_GT_FOLLOW = TokenSet.create(WHERE_KEYWORD, WRAPS_KEYWORD, LPAR, COLON, LBRACE, GT); - public static final TokenSet PARAMETER_NAME_FOLLOW = TokenSet.create(COLON, EQ, COMMA, RPAR); + public static final TokenSet CLASS_NAME_RECOVERY_SET = TokenSet.create(LT, WRAPS_KEYWORD, LPAR, COLON, LBRACE); + public static final TokenSet TYPE_PARAMETER_GT_RECOVERY_SET = TokenSet.create(WHERE_KEYWORD, WRAPS_KEYWORD, LPAR, COLON, LBRACE, GT); + public static final TokenSet PARAMETER_NAME_RECOVERY_SET = TokenSet.create(COLON, EQ, COMMA, RPAR); + private static final TokenSet NAMESPACE_NAME_RECOVERY_SET = TokenSet.create(DOT, EOL_OR_SEMICOLON); + + private final WhitespaceSkippedCallback myWhitespaceSkippedCallback = new WhitespaceSkippedCallback() { + public void onSkip(IElementType type, int start, int end) { + CharSequence whitespace = JetParsing.this.myBuilder.getOriginalText(); + for (int i = start; i < end; i++) { + char c = whitespace.charAt(i); + if (c == '\n') { + myEOLInLastWhitespace = true; + break; + } + } + } + }; private final PsiBuilder myBuilder; + private boolean myEOLInLastWhitespace; public JetParsing(PsiBuilder myBuilder) { this.myBuilder = myBuilder; + myBuilder.setWhitespaceSkippedCallback(myWhitespaceSkippedCallback); } - + /* + * [start] jetlFile + * : preamble toplevelObject[| import]* [eof] + * ; + */ public void parseFile() { PsiBuilder.Marker fileMarker = mark(); - PsiBuilder.Marker namespaceMarker = parsePreamble(); + PsiBuilder.Marker namespaceMarker = mark(); + + parsePreamble(); while (!eof()) { - parseTopLevelObject(); - } - - if (namespaceMarker != null) { - namespaceMarker.done(NAMESPACE); + if (at(IMPORT_KEYWORD)) { + parseImportDirective(); + } + else { + parseTopLevelObject(); + } } + namespaceMarker.done(NAMESPACE); fileMarker.done(JET_FILE); } - @Nullable - private PsiBuilder.Marker parsePreamble() { + /* + *preamble + * : namespaceHeader? import* + * ; + */ + private void parsePreamble() { + /* + * namespaceHeader + * : "namespace" SimpleName{"."} + * ; + */ if (at(NAMESPACE_KEYWORD)) { - PsiBuilder.Marker namespaceMarker = mark(); advance(); - parseQualifiedName(); - return namespaceMarker; + parseNamespaceName(); } while (at(IMPORT_KEYWORD)) { parseImportDirective(); } - - return null; } + /* SimpleName{"."} */ + private void parseNamespaceName() { + PsiBuilder.Marker nsName = mark(); + expect(IDENTIFIER, "Expecting qualified name", NAMESPACE_NAME_RECOVERY_SET); + while (at(DOT)) { + advance(); + expect(IDENTIFIER, "Namespace name must be a '.'-separated identifier list", NAMESPACE_NAME_RECOVERY_SET); + if (at(EOL_OR_SEMICOLON)) break; + } + nsName.done(NAMESPACE_NAME); + } + + /* + * import + * : "import" SimpleName{"."} ("." "*" | "as" SimpleName)? + * ; + */ private void parseImportDirective() { - // TODO - } + assert at(IMPORT_KEYWORD); + PsiBuilder.Marker importDirective = mark(); + advance(); - private PsiBuilder.Marker mark() { - return myBuilder.mark(); - } - - private void parseQualifiedName() { - while (true) { - if (tt() != IDENTIFIER) { - if (tt() != DOT) { - error("Expecting qualified name"); - break; - } - error("Qualified name must start with an identifier"); + expect(IDENTIFIER, "Expecting qualified name", TokenSet.create(DOT, MAP)); + while (at(DOT)) { + advance(); + if (at(IDENTIFIER)) { advance(); } + else if (at(MUL)) { + advance(); + handleUselessRename(); + break; + } else { - advance(); - if (tt() != DOT) break; - advance(); + errorWithRecovery("Qualified name must be a '.'-separated identifier list", TokenSet.create(AS_KEYWORD, DOT, MAP, SEMICOLON)); } } + if (at(MAP)) { + advance(); + handleUselessRename(); + } + else if (at(AS_KEYWORD)) { + advance(); + expect(IDENTIFIER, "Expecting identifier", TokenSet.create(SEMICOLON)); + } + cosumeIf(SEMICOLON); + importDirective.done(IMPORT_DIRECTIVE); } - private void error(String message) { - myBuilder.error(message); + private void cosumeIf(JetToken token) { + if (at(token)) advance(); + } + + private void handleUselessRename() { + if (at(AS_KEYWORD)) { + PsiBuilder.Marker as = mark(); + advance(); + cosumeIf(IDENTIFIER); + as.error("Cannot rename a all imported items to one identifier"); + } } private void parseTopLevelObject() { PsiBuilder.Marker decl = mark(); if (!parseModifierList()) { decl.drop(); + advance(); return; } @@ -127,22 +188,27 @@ public class JetParsing { } private JetNodeType parseTypedef() { + advance(); // TODO return TYPEDEF; } private JetNodeType parseBlockNamespace() { + advance(); // TODO return NAMESPACE; } private JetNodeType parseProperty() { + advance(); // TODO return PROPERTY; } private JetNodeType parseFunction() { + advance(); // TODO return FUN; } private JetNodeType parseExtension() { + advance(); // TODO return EXTENSION; } @@ -150,10 +216,10 @@ public class JetParsing { assert at(CLASS_KEYWORD); advance(); - expect(IDENTIFIER, "Class name expected", CLASS_NAME_FOLLOW); + expect(IDENTIFIER, "Class name expected", CLASS_NAME_RECOVERY_SET); parseTypeParameterList(); - if (at(WRAPS_KEYWORD)) advance(); + cosumeIf(WRAPS_KEYWORD); if (at(LPAR)) { parsePrimaryConstructorParameterList(); } @@ -279,7 +345,7 @@ public class JetParsing { } private void parseFunctionParameterRest() { - expect(IDENTIFIER, "Parameter name expected", PARAMETER_NAME_FOLLOW); + expect(IDENTIFIER, "Parameter name expected", PARAMETER_NAME_RECOVERY_SET); if (at(COLON)) { advance(); @@ -312,13 +378,13 @@ public class JetParsing { advance(); } - expect(GT, "Missing '>'", TYPE_PARAMETER_GT_FOLLOW); + expect(GT, "Missing '>'", TYPE_PARAMETER_GT_RECOVERY_SET); } list.done(TYPE_PARAMETER_LIST); } private void parseTypeParameter() { - if (TYPE_PARAMETER_GT_FOLLOW.contains(tt())) { + if (TYPE_PARAMETER_GT_RECOVERY_SET.contains(tt())) { error("Type parameter declaration expected"); return; } @@ -341,25 +407,49 @@ public class JetParsing { // tODO: } + private boolean parseModifierList() { + // TODO + return true; + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + private boolean expect(JetToken expectation, String message) { return expect(expectation, message, null); } + private PsiBuilder.Marker mark() { + return myBuilder.mark(); + } + + private void error(String message) { + myBuilder.error(message); + } + private boolean expect(JetToken expectation, String message, TokenSet recoverySet) { - JetToken tt = tt(); - if (tt == expectation) { + if (at(expectation)) { advance(); return true; } - if (recoverySet == null || recoverySet.contains(tt)) { + errorWithRecovery(message, recoverySet); + + return false; + } + + private void errorWithRecovery(String message, TokenSet recoverySet) { + JetToken tt = tt(); + if (recoverySet == null || recoverySet.contains(tt) + || (recoverySet.contains(EOL_OR_SEMICOLON) + && (tt == SEMICOLON || myEOLInLastWhitespace))) { error(message); } else { errorAndAdvance(message); } - - return false; } private void errorAndAdvance(String message) { @@ -368,16 +458,12 @@ public class JetParsing { err.error(message); } - private boolean parseModifierList() { - // TODO - return true; - } - private boolean eof() { return myBuilder.eof(); } private void advance() { + myEOLInLastWhitespace = false; myBuilder.advanceLexer(); } @@ -385,21 +471,24 @@ public class JetParsing { return (JetToken) myBuilder.getTokenType(); } - - private boolean at(final IElementType expectation) { JetToken token = tt(); if (token == expectation) return true; + if (expectation == EOL_OR_SEMICOLON) { + if (token == SEMICOLON) return true; + if (myEOLInLastWhitespace) return true; + } if (token == IDENTIFIER && expectation instanceof JetSoftKeywordToken) { if (((JetSoftKeywordToken) expectation).getValue().equals(myBuilder.getTokenText())) { - myBuilder.setTokenTypeRemapper(new ITokenTypeRemapper() { - public IElementType filter(IElementType source, int start, int end, CharSequence text) { - return expectation; - } - }); +// myBuilder.setTokenTypeRemapper(new ITokenTypeRemapper() { +// public IElementType filter(IElementType source, int start, int end, CharSequence text) { +// return expectation; +// } +// }); - tt(); - myBuilder.setTokenTypeRemapper(null); +// tt(); +// myBuilder.setTokenTypeRemapper(null); + myBuilder.remapCurrentToken(expectation); return true; } } diff --git a/idea/src/org/jetbrains/jet/lexer/Jet.flex b/idea/src/org/jetbrains/jet/lexer/Jet.flex index 8c9bc6d8541..916aa42008a 100644 --- a/idea/src/org/jetbrains/jet/lexer/Jet.flex +++ b/idea/src/org/jetbrains/jet/lexer/Jet.flex @@ -77,7 +77,6 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}? {RAW_STRING_LITERAL} { return JetTokens.RAW_STRING_LITERAL; } "namespace" { return JetTokens.NAMESPACE_KEYWORD ;} - "import" { return JetTokens.IMPORT_KEYWORD ;} "as" { return JetTokens.AS_KEYWORD ;} "type" { return JetTokens.TYPE_KEYWORD ;} "class" { return JetTokens.CLASS_KEYWORD ;} @@ -96,6 +95,8 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}? "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 ;} diff --git a/idea/src/org/jetbrains/jet/lexer/JetTokens.java b/idea/src/org/jetbrains/jet/lexer/JetTokens.java index 2aaa0c8b65e..0c357b56e77 100644 --- a/idea/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/idea/src/org/jetbrains/jet/lexer/JetTokens.java @@ -25,7 +25,6 @@ public interface JetTokens { JetToken RAW_STRING_LITERAL = new JetToken("RAW_STRING_LITERAL"); JetToken NAMESPACE_KEYWORD = new JetToken("NAMESPACE_KEYWORD"); - JetToken IMPORT_KEYWORD = new JetToken("IMPORT_KEYWORD"); JetToken AS_KEYWORD = new JetToken("AS_KEYWORD"); JetToken TYPE_KEYWORD = new JetToken("TYPE_KEYWORD"); JetToken CLASS_KEYWORD = new JetToken("CLASS_KEYWORD"); @@ -98,7 +97,10 @@ public interface JetTokens { JetToken MINUSEQ = new JetToken("MINUSEQ"); JetToken COMMA = new JetToken("COMMA"); + JetToken EOL_OR_SEMICOLON = new JetToken("EOL_OR_SEMICOLON"); + JetSoftKeywordToken WRAPS_KEYWORD = new JetSoftKeywordToken("wraps"); + JetSoftKeywordToken IMPORT_KEYWORD = new JetSoftKeywordToken("import"); JetSoftKeywordToken WHERE_KEYWORD = new JetSoftKeywordToken("where"); JetSoftKeywordToken BY_KEYWORD = new JetSoftKeywordToken("by"); JetSoftKeywordToken LAZY_KEYWORD = new JetSoftKeywordToken("lazy"); @@ -117,14 +119,14 @@ public interface JetTokens { JetSoftKeywordToken OUT_KEYWORD = new JetSoftKeywordToken("out"); JetSoftKeywordToken REF_KEYWORD = new JetSoftKeywordToken("ref"); - TokenSet KEYWORDS = TokenSet.create(NAMESPACE_KEYWORD, IMPORT_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, + TokenSet KEYWORDS = TokenSet.create(NAMESPACE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, DECOMPOSER_KEYWORD, EXTENSION_KEYWORD, FOR_KEYWORD, NULL_KEYWORD, TYPEOF_KEYWORD, NEW_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, ISNOT_KEYWORD, IN_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD, ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, MATCH_KEYWORD ); - TokenSet SOFT_KEYWORDS = TokenSet.create(WRAPS_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, LAZY_KEYWORD, GET_KEYWORD, + TokenSet SOFT_KEYWORDS = TokenSet.create(WRAPS_KEYWORD, IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, LAZY_KEYWORD, GET_KEYWORD, SET_KEYWORD, ABSTRACT_KEYWORD, VIRTUAL_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, ATTRIBUTE_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, OUT_KEYWORD, REF_KEYWORD diff --git a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java index 7d569480545..89de0bda131 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/10/10 9:22 PM */ +/* The following code was generated by JFlex 1.4.3 on 12/15/10 2:07 PM */ /* It's an automatically generated code. Do not modify it. */ 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 12/10/10 9:22 PM from the specification file - * /Users/max/Projects/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex + * on 12/15/10 2:07 PM from the specification file + * /home/user/work/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex */ class _JetLexer implements FlexLexer { /** initial size of the lookahead buffer */ @@ -42,9 +42,9 @@ class _JetLexer implements FlexLexer { "\1\74\1\17\1\15\1\6\1\11\11\1\1\72\1\73\1\64\1\66"+ "\1\65\1\71\1\0\1\2\1\13\1\2\1\14\1\16\1\14\5\4"+ "\1\4\3\4\1\20\7\4\1\12\2\4\1\53\1\22\1\54\1\0"+ - "\1\4\1\0\1\25\1\50\1\32\1\45\1\27\1\43\1\4\1\41"+ - "\1\33\1\52\1\51\1\40\1\26\1\24\1\34\1\31\1\4\1\35"+ - "\1\30\1\36\1\44\1\42\1\47\1\46\1\37\1\4\1\55\1\70"+ + "\1\4\1\0\1\25\1\50\1\32\1\44\1\27\1\42\1\4\1\36"+ + "\1\37\1\52\1\51\1\35\1\26\1\24\1\45\1\31\1\4\1\41"+ + "\1\30\1\33\1\43\1\40\1\47\1\46\1\34\1\4\1\55\1\70"+ "\1\56\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,20 +144,20 @@ 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\3\33\1\34"+ "\1\35\1\36\1\37\1\0\2\2\1\40\1\41\1\42"+ - "\1\43\1\44\2\11\3\12\3\3\1\45\5\3\1\46"+ - "\1\3\1\47\1\50\12\3\1\51\2\3\1\52\1\53"+ - "\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63"+ - "\1\64\1\33\1\35\1\65\2\0\1\12\1\66\1\3"+ - "\1\67\16\3\1\70\1\71\1\3\1\72\1\73\3\3"+ - "\1\74\1\0\2\65\1\0\1\33\2\0\1\3\1\75"+ - "\1\3\1\76\7\3\1\77\1\100\1\101\5\3\1\35"+ - "\1\0\1\33\1\0\1\3\1\102\2\3\1\103\1\3"+ - "\1\104\3\3\1\105\1\106\1\3\1\107\1\110\1\66"+ - "\3\3\1\111\1\112\1\113\1\114\7\3\1\115\1\3"+ - "\1\116\1\117\1\3\1\120"; + "\1\43\1\44\2\11\3\12\3\3\1\45\10\3\1\46"+ + "\1\47\1\50\6\3\1\51\4\3\1\52\1\53\1\54"+ + "\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\64"+ + "\1\33\1\35\1\65\2\0\1\12\1\66\1\3\1\67"+ + "\13\3\1\70\1\71\1\3\1\72\1\3\1\73\1\74"+ + "\1\3\1\75\3\3\1\76\1\0\2\65\1\0\1\33"+ + "\2\0\1\3\1\77\1\3\1\100\3\3\1\101\1\102"+ + "\1\3\1\103\7\3\1\35\1\0\1\33\1\0\1\3"+ + "\1\104\1\3\1\105\2\3\1\106\1\107\1\3\1\110"+ + "\2\3\1\111\1\112\1\66\3\3\1\113\1\114\1\3"+ + "\1\115\6\3\1\116\1\3\1\117\1\120\1\3\1\121"; private static int [] zzUnpackAction() { - int [] result = new int[199]; + int [] result = new int[197]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -191,25 +191,25 @@ class _JetLexer implements FlexLexer { "\0\u090e\0\75\0\75\0\u094b\0\u0988\0\u09c5\0\75\0\75"+ "\0\75\0\75\0\75\0\75\0\u0a02\0\u0a3f\0\u0a7c\0\u0ab9"+ "\0\u0af6\0\u0b33\0\u0b70\0\267\0\u0bad\0\u0bea\0\u0c27\0\u0c64"+ - "\0\u0ca1\0\267\0\u0cde\0\u0d1b\0\267\0\u0d58\0\u0d95\0\u0dd2"+ - "\0\u0e0f\0\u0e4c\0\u0e89\0\u0ec6\0\u0f03\0\u0f40\0\u0f7d\0\267"+ + "\0\u0ca1\0\u0cde\0\u0d1b\0\u0d58\0\267\0\u0d95\0\267\0\u0dd2"+ + "\0\u0e0f\0\u0e4c\0\u0e89\0\u0ec6\0\u0f03\0\267\0\u0f40\0\u0f7d"+ "\0\u0fba\0\u0ff7\0\75\0\75\0\75\0\75\0\75\0\75"+ "\0\u1034\0\75\0\75\0\75\0\75\0\u1071\0\u10ae\0\u10eb"+ "\0\u1128\0\u1165\0\75\0\u11a2\0\u11df\0\267\0\u121c\0\u1259"+ "\0\u1296\0\u12d3\0\u1310\0\u134d\0\u138a\0\u13c7\0\u1404\0\u1441"+ - "\0\u147e\0\u14bb\0\u14f8\0\u1535\0\267\0\267\0\u1572\0\267"+ - "\0\267\0\u15af\0\u15ec\0\u1629\0\75\0\u1666\0\u16a3\0\75"+ - "\0\u16e0\0\u171d\0\u175a\0\u1797\0\u17d4\0\267\0\u1811\0\267"+ - "\0\u184e\0\u188b\0\u18c8\0\u1905\0\u1942\0\u197f\0\u19bc\0\267"+ - "\0\u19f9\0\267\0\u1a36\0\u1a73\0\u1ab0\0\u1aed\0\u1b2a\0\75"+ - "\0\u1b67\0\u1128\0\u1ba4\0\u1be1\0\267\0\u1c1e\0\u1c5b\0\267"+ - "\0\u1c98\0\267\0\u1cd5\0\u1d12\0\u1d4f\0\267\0\267\0\u1d8c"+ - "\0\267\0\267\0\75\0\u1dc9\0\u1e06\0\u1e43\0\267\0\267"+ - "\0\267\0\267\0\u1e80\0\u1ebd\0\u1efa\0\u1f37\0\u1f74\0\u1fb1"+ - "\0\u1fee\0\267\0\u202b\0\267\0\267\0\u2068\0\267"; + "\0\u147e\0\267\0\267\0\u14bb\0\267\0\u14f8\0\267\0\267"+ + "\0\u1535\0\267\0\u1572\0\u15af\0\u15ec\0\75\0\u1629\0\u1666"+ + "\0\75\0\u16a3\0\u16e0\0\u171d\0\u175a\0\u1797\0\267\0\u17d4"+ + "\0\267\0\u1811\0\u184e\0\u188b\0\u18c8\0\267\0\u1905\0\267"+ + "\0\u1942\0\u197f\0\u19bc\0\u19f9\0\u1a36\0\u1a73\0\u1ab0\0\75"+ + "\0\u1aed\0\u1128\0\u1b2a\0\u1b67\0\267\0\u1ba4\0\267\0\u1be1"+ + "\0\u1c1e\0\267\0\267\0\u1c5b\0\267\0\u1c98\0\u1cd5\0\267"+ + "\0\267\0\75\0\u1d12\0\u1d4f\0\u1d8c\0\267\0\267\0\u1dc9"+ + "\0\267\0\u1e06\0\u1e43\0\u1e80\0\u1ebd\0\u1efa\0\u1f37\0\267"+ + "\0\u1f74\0\267\0\267\0\u1fb1\0\267"; private static int [] zzUnpackRowMap() { - int [] result = new int[199]; + int [] result = new int[197]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -235,214 +235,209 @@ class _JetLexer implements FlexLexer { "\1\2\1\3\1\4\1\5\1\4\1\2\1\6\1\7"+ "\1\5\1\10\3\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\1\23\1\24\1\25\3\4\1\26\1\27\1\4"+ + "\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\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\76\0"+ "\1\3\7\0\1\3\2\0\1\55\1\56\1\57\10\0"+ - "\1\57\13\0\1\55\1\0\1\55\30\0\2\4\1\0"+ + "\1\57\12\0\1\55\1\0\1\55\31\0\2\4\1\0"+ "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ "\27\4\25\0\1\5\4\0\1\5\72\0\1\60\1\61"+ "\56\0\1\62\74\0\1\63\7\0\1\64\7\0\1\64"+ - "\1\65\1\66\1\55\1\56\1\57\10\0\1\57\13\0"+ - "\1\55\1\0\1\55\1\65\1\0\1\66\25\0\1\56"+ - "\5\0\1\67\1\0\1\56\3\0\1\70\53\0\1\71"+ - "\22\0\1\72\46\0\1\73\6\0\10\13\1\0\10\13"+ - "\1\74\1\75\52\13\10\76\1\0\11\76\1\77\1\100"+ - "\51\76\1\0\2\4\1\0\2\4\3\0\4\4\1\0"+ - "\1\4\1\0\1\4\3\0\1\4\1\101\1\4\1\102"+ - "\14\4\1\103\6\4\23\0\2\4\1\0\2\4\3\0"+ - "\4\4\1\0\1\4\1\0\1\4\3\0\4\4\1\104"+ - "\22\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ - "\1\4\1\0\1\4\3\0\1\4\1\105\25\4\23\0"+ + "\1\65\1\66\1\55\1\56\1\57\10\0\1\57\12\0"+ + "\1\55\1\0\1\55\1\0\1\65\1\0\1\66\25\0"+ + "\1\56\5\0\1\67\1\0\1\56\3\0\1\70\53\0"+ + "\1\71\22\0\1\72\46\0\1\73\6\0\10\13\1\0"+ + "\10\13\1\74\1\75\52\13\10\76\1\0\11\76\1\77"+ + "\1\100\51\76\1\0\2\4\1\0\2\4\3\0\4\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\4\1\101\1\4"+ + "\1\102\13\4\1\103\7\4\23\0\2\4\1\0\2\4"+ + "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\4\4"+ + "\1\104\22\4\23\0\2\4\1\0\2\4\3\0\4\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\4\1\105\25\4"+ + "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ + "\1\0\1\4\3\0\11\4\1\106\10\4\1\107\4\4"+ + "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ + "\1\0\1\4\3\0\11\4\1\110\7\4\1\111\5\4"+ + "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\112\1\4\1\113\2\4"+ + "\1\114\11\4\23\0\2\4\1\0\2\4\3\0\4\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\115\3\4\1\116"+ + "\11\4\1\117\10\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\1\4\1\120"+ + "\25\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\121\23\4\23\0"+ "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\14\4\1\106\5\4\1\107\4\4\23\0"+ + "\1\4\3\0\1\4\1\122\15\4\1\123\1\4\1\124"+ + "\5\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\125\15\4\1\126"+ + "\5\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\17\4\1\127\4\4\1\130"+ + "\2\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\12\4\1\131\14\4\23\0"+ "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\10\4\1\110\3\4\1\111\12\4\23\0"+ - "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\1\112\1\4\1\113\1\4\1\114\12\4"+ - "\1\115\7\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\24\4\1\116\2\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\117\23\4\23\0\2\4"+ + "\1\4\3\0\15\4\1\132\11\4\103\0\1\133\4\0"+ + "\1\134\74\0\1\135\74\0\1\136\74\0\1\137\74\0"+ + "\1\140\74\0\1\141\75\0\1\142\75\0\1\143\21\0"+ + "\1\144\54\0\1\145\3\0\1\56\7\0\1\56\2\0"+ + "\1\55\1\0\1\57\10\0\1\57\12\0\1\55\1\0"+ + "\1\55\31\0\1\146\7\0\1\146\2\0\1\55\2\0"+ + "\1\146\22\0\1\55\1\0\1\55\14\0\1\146\13\0"+ + "\10\60\1\0\64\60\7\147\1\150\65\147\1\0\1\64"+ + "\7\0\1\64\2\0\1\55\1\56\1\57\10\0\1\57"+ + "\12\0\1\55\1\0\1\55\30\0\1\151\2\65\5\151"+ + "\1\0\1\65\1\151\2\65\1\151\1\65\1\151\1\152"+ + "\4\151\1\65\1\151\1\65\1\151\1\152\1\65\7\151"+ + "\1\65\1\151\1\65\3\151\1\65\24\151\1\0\1\66"+ + "\7\0\1\66\63\0\10\13\1\0\64\13\10\76\1\0"+ + "\11\76\1\77\1\153\61\76\1\0\64\76\23\0\1\154"+ + "\52\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ + "\1\0\1\4\3\0\2\4\1\155\24\4\23\0\2\4"+ "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\11\4\1\120\1\4\1\121\1\4\1\122\11\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\4\1\123\25\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\1\4\1\124\6\4\1\125\7\4\1\126\6\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\127\4\4\1\130\16\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\15\4\1\131\11\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\11\4\1\132\15\4\103\0\1\133\4\0\1\134"+ - "\74\0\1\135\74\0\1\136\74\0\1\137\74\0\1\140"+ - "\74\0\1\141\75\0\1\142\75\0\1\143\21\0\1\144"+ - "\54\0\1\145\3\0\1\56\7\0\1\56\2\0\1\55"+ - "\1\0\1\57\10\0\1\57\13\0\1\55\1\0\1\55"+ - "\30\0\1\146\7\0\1\146\2\0\1\55\2\0\1\146"+ - "\23\0\1\55\1\0\1\55\13\0\1\146\13\0\10\60"+ - "\1\0\64\60\7\147\1\150\65\147\1\0\1\64\7\0"+ - "\1\64\2\0\1\55\1\56\1\57\10\0\1\57\13\0"+ - "\1\55\1\0\1\55\27\0\1\151\2\65\5\151\1\0"+ - "\1\65\1\151\2\65\1\151\1\65\1\151\1\152\4\151"+ - "\1\65\1\151\1\65\1\151\1\152\1\65\10\151\1\65"+ - "\1\151\1\65\2\151\1\65\24\151\1\0\1\66\7\0"+ - "\1\66\63\0\10\13\1\0\64\13\10\76\1\0\11\76"+ - "\1\77\1\153\61\76\1\0\64\76\23\0\1\154\52\0"+ - "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\2\4\1\155\24\4\23\0\2\4\1\0"+ - "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ - "\23\4\1\156\3\4\23\0\2\4\1\0\2\4\3\0"+ - "\4\4\1\0\1\4\1\0\1\4\3\0\14\4\1\157"+ - "\12\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ - "\1\4\1\0\1\4\3\0\12\4\1\160\14\4\23\0"+ - "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\4\4\1\161\22\4\23\0\2\4\1\0"+ - "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ - "\12\4\1\162\14\4\23\0\2\4\1\0\2\4\3\0"+ - "\4\4\1\0\1\4\1\0\1\4\3\0\1\163\26\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\4\1\164\25\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\5\4\1\165\21\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\1\166"+ - "\26\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ - "\1\4\1\0\1\4\3\0\26\4\1\167\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\12\4\1\170\14\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\20\4"+ - "\1\171\6\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\5\4\1\172\21\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\7\4\1\173\1\4\1\174\15\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\11\4\1\175\2\4\1\176\12\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\14\4\1\177\12\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\11\4\1\200\15\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\1\201"+ - "\26\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ - "\1\4\1\0\1\4\3\0\6\4\1\202\20\4\23\0"+ - "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\7\4\1\203\17\4\23\0\2\4\1\0"+ - "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ - "\3\4\1\204\23\4\110\0\1\205\7\0\1\146\7\0"+ - "\1\146\2\0\1\55\26\0\1\55\1\0\1\55\27\0"+ - "\7\147\1\206\65\147\6\207\1\210\1\150\65\207\1\0"+ - "\2\151\6\0\1\151\1\0\2\151\1\0\1\151\1\0"+ - "\1\211\4\0\1\151\1\0\1\151\1\0\1\211\1\151"+ - "\10\0\1\151\1\0\1\151\2\0\1\151\25\0\1\212"+ - "\1\151\6\0\1\212\1\0\2\151\1\0\1\151\1\213"+ - "\1\211\4\0\1\151\1\0\1\151\1\0\1\211\1\151"+ - "\10\0\1\151\1\0\1\151\2\0\1\151\10\0\1\213"+ - "\13\0\23\154\1\214\51\154\1\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\215\23\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\14\4\1\216\12\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\6\4\1\217\20\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\220\23\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\221\23\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\12\4\1\222\14\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\4\4\1\223\22\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\10\4\1\224\16\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\10\4"+ - "\1\225\16\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\3\4\1\226\23\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\20\4\1\227\6\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\230\23\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\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\4\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\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\10\4\1\233\16\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\234\22\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\10\4"+ - "\1\235\16\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\14\4\1\236\12\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\4\1\237\25\4\22\0\6\147"+ - "\1\240\1\206\65\147\7\207\1\241\65\207\1\0\1\146"+ - "\7\0\1\146\5\0\1\213\41\0\1\213\14\0\1\212"+ - "\1\151\6\0\1\212\1\0\1\151\1\242\1\0\1\151"+ - "\1\0\1\211\4\0\1\151\1\0\1\151\1\0\1\211"+ - "\1\151\10\0\1\242\1\0\1\242\2\0\1\151\25\0"+ - "\1\146\7\0\1\146\63\0\23\154\1\243\51\154\1\0"+ - "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\4\4\1\244\22\4\23\0\2\4\1\0"+ - "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ - "\15\4\1\245\11\4\23\0\2\4\1\0\2\4\3\0"+ - "\4\4\1\0\1\4\1\0\1\4\3\0\1\246\26\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\7\4\1\247\17\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\250\22\4\23\0\2\4\1\0\2\4"+ + "\3\0\23\4\1\156\3\4\23\0\2\4\1\0\2\4"+ "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\11\4"+ - "\1\251\15\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\12\4\1\252\14\4"+ + "\1\157\15\4\23\0\2\4\1\0\2\4\3\0\4\4"+ + "\1\0\1\4\1\0\1\4\3\0\7\4\1\160\17\4"+ "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\6\4\1\253\20\4\23\0\2\4"+ + "\1\0\1\4\3\0\4\4\1\161\22\4\23\0\2\4"+ "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\11\4\1\254\15\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\10\4"+ - "\1\255\16\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\23\4\1\256\3\4"+ - "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\257\23\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\2\4\1\260\24\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\261\23\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\25\4\1\262\1\4"+ - "\22\0\6\207\1\210\1\241\65\207\23\154\1\263\51\154"+ - "\1\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\5\4\1\264\21\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\265\22\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\1\266"+ - "\26\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ - "\1\4\1\0\1\4\3\0\12\4\1\267\14\4\23\0"+ + "\3\0\7\4\1\162\17\4\23\0\2\4\1\0\2\4"+ + "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\1\4"+ + "\1\163\25\4\23\0\2\4\1\0\2\4\3\0\4\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\164\26\4\23\0"+ "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\12\4\1\270\14\4\23\0\2\4\1\0"+ + "\1\4\3\0\5\4\1\165\21\4\23\0\2\4\1\0"+ "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ - "\1\271\26\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\17\4\1\272\7\4"+ + "\13\4\1\166\1\4\1\167\11\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\17\4\1\170\7\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\1\171\26\4"+ "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\5\4\1\273\21\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\1\4\1\274\25\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\7\4"+ - "\1\275\17\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\20\4\1\276\6\4"+ + "\1\0\1\4\3\0\11\4\1\172\3\4\1\173\11\4"+ "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\10\4\1\277\16\4\23\0\2\4"+ - "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\6\4\1\300\20\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\10\4"+ - "\1\301\16\4\23\0\2\4\1\0\2\4\3\0\4\4"+ - "\1\0\1\4\1\0\1\4\3\0\3\4\1\302\23\4"+ + "\1\0\1\4\3\0\7\4\1\174\6\4\1\175\10\4"+ "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\4\4\1\303\22\4\23\0\2\4"+ + "\1\0\1\4\3\0\11\4\1\176\15\4\23\0\2\4"+ "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\304\23\4\23\0\2\4\1\0\2\4"+ - "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\1\305"+ - "\26\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ - "\1\4\1\0\1\4\3\0\3\4\1\306\23\4\23\0"+ + "\3\0\1\177\26\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\15\4\1\200"+ + "\11\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\6\4\1\201\20\4\23\0"+ "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\11\4\1\307\15\4\22\0"; + "\1\4\3\0\7\4\1\202\17\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\26\4\1\203\23\0\2\4\1\0\2\4\3\0\4\4"+ + "\1\0\1\4\1\0\1\4\3\0\13\4\1\204\13\4"+ + "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\205\23\4\110\0\1\206"+ + "\7\0\1\146\7\0\1\146\2\0\1\55\25\0\1\55"+ + "\1\0\1\55\30\0\7\147\1\207\65\147\6\210\1\211"+ + "\1\150\65\210\1\0\2\151\6\0\1\151\1\0\2\151"+ + "\1\0\1\151\1\0\1\212\4\0\1\151\1\0\1\151"+ + "\1\0\1\212\1\151\7\0\1\151\1\0\1\151\3\0"+ + "\1\151\25\0\1\213\1\151\6\0\1\213\1\0\2\151"+ + "\1\0\1\151\1\214\1\212\4\0\1\151\1\0\1\151"+ + "\1\0\1\212\1\151\7\0\1\151\1\0\1\151\3\0"+ + "\1\151\10\0\1\214\13\0\23\154\1\215\51\154\1\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\216\23\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\11\4\1\217\15\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\6\4\1\220"+ + "\20\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\221\23\4\23\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\222\23\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\223\22\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\7\4\1\224"+ + "\17\4\23\0\2\4\1\0\2\4\3\0\4\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\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\226\22\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\21\4\1\227\5\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\3\4\1\230"+ + "\23\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\21\4\1\231\5\4\23\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\17\4\1\232\7\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\233\22\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\21\4\1\234"+ + "\5\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\235\23\4\23\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\11\4\1\236\15\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\4\1\237\25\4\22\0\6\147\1\240\1\207\65\147"+ + "\7\210\1\241\65\210\1\0\1\146\7\0\1\146\5\0"+ + "\1\214\41\0\1\214\14\0\1\213\1\151\6\0\1\213"+ + "\1\0\1\151\1\242\1\0\1\151\1\0\1\212\4\0"+ + "\1\151\1\0\1\151\1\0\1\212\1\151\7\0\1\242"+ + "\1\0\1\242\3\0\1\151\25\0\1\146\7\0\1\146"+ + "\63\0\23\154\1\243\51\154\1\0\2\4\1\0\2\4"+ + "\3\0\4\4\1\0\1\4\1\0\1\4\3\0\4\4"+ + "\1\244\22\4\23\0\2\4\1\0\2\4\3\0\4\4"+ + "\1\0\1\4\1\0\1\4\3\0\12\4\1\245\14\4"+ + "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\246\26\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\247\22\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\13\4\1\250"+ + "\13\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\21\4\1\251\5\4\23\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\23\4\1\252\3\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\7\4\1\253\17\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\15\4\1\254"+ + "\11\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\255\23\4\23\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\2\4\1\256\24\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\6\4\1\257\20\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\3\4\1\260"+ + "\23\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\25\4\1\261\1\4\22\0"+ + "\6\210\1\211\1\241\65\210\23\154\1\262\51\154\1\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\263\21\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\264\22\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\1\265\26\4"+ + "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ + "\1\0\1\4\3\0\16\4\1\266\10\4\23\0\2\4"+ + "\1\0\2\4\3\0\4\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\267\26\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\5\4\1\270"+ + "\21\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\7\4\1\271\17\4\23\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\4\1\272\25\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\13\4\1\273\13\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\17\4\1\274"+ + "\7\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\21\4\1\275\5\4\23\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\276\20\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\21\4\1\277\5\4\23\0\2\4\1\0\2\4\3\0"+ + "\4\4\1\0\1\4\1\0\1\4\3\0\3\4\1\300"+ + "\23\4\23\0\2\4\1\0\2\4\3\0\4\4\1\0"+ + "\1\4\1\0\1\4\3\0\4\4\1\301\22\4\23\0"+ + "\2\4\1\0\2\4\3\0\4\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\302\23\4\23\0\2\4\1\0"+ + "\2\4\3\0\4\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\303\26\4\23\0\2\4\1\0\2\4\3\0\4\4"+ + "\1\0\1\4\1\0\1\4\3\0\3\4\1\304\23\4"+ + "\23\0\2\4\1\0\2\4\3\0\4\4\1\0\1\4"+ + "\1\0\1\4\3\0\15\4\1\305\11\4\22\0"; private static int [] zzUnpackTrans() { - int [] result = new int[8357]; + int [] result = new int[8174]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -485,12 +480,12 @@ class _JetLexer implements FlexLexer { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\1\0\1\11\30\1\6\11\11\1\4\11\4\1\2\11"+ "\1\0\2\1\6\11\36\1\6\11\1\1\4\11\3\1"+ - "\2\0\1\11\31\1\1\11\1\0\1\1\1\11\1\0"+ - "\1\1\2\0\23\1\1\11\1\0\1\1\1\0\17\1"+ - "\1\11\24\1"; + "\2\0\1\11\32\1\1\11\1\0\1\1\1\11\1\0"+ + "\1\1\2\0\22\1\1\11\1\0\1\1\1\0\16\1"+ + "\1\11\23\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[199]; + int [] result = new int[197]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -798,323 +793,327 @@ class _JetLexer implements FlexLexer { case 3: { return JetTokens.IDENTIFIER; } - case 81: break; - case 58: - { return JetTokens.FOR_KEYWORD ; - } case 82: break; - case 75: - { return JetTokens.RETURN_KEYWORD ; + case 60: + { return JetTokens.FOR_KEYWORD ; } case 83: break; case 61: - { return JetTokens.NULL_KEYWORD ; + { return JetTokens.OUT_KEYWORD ; } case 84: break; + case 76: + { return JetTokens.RETURN_KEYWORD ; + } + case 85: break; + case 63: + { return JetTokens.NULL_KEYWORD ; + } + case 86: break; case 20: { return JetTokens.LT ; } - case 85: break; + case 87: break; case 41: { return JetTokens.DO_KEYWORD ; } - case 86: break; + case 88: break; case 17: { return JetTokens.PLUS ; } - case 87: break; + case 89: break; case 54: { return JetTokens.RAW_STRING_LITERAL; } - case 88: break; + case 90: break; case 43: { return JetTokens.PLUSEQ ; } - case 89: break; + case 91: break; case 26: { return JetTokens.COMMA ; } - case 90: break; - case 66: + case 92: break; + case 68: { return JetTokens.MATCH_KEYWORD ; } - case 91: break; + case 93: break; case 21: { return JetTokens.GT ; } - case 92: break; + case 94: break; case 4: { return JetTokens.WHITE_SPACE; } - case 93: break; - case 76: + case 95: break; + case 75: { return JetTokens.TYPEOF_KEYWORD ; } - case 94: break; + case 96: break; case 16: { return JetTokens.RPAR ; } - case 95: break; - case 63: + case 97: break; + case 67: { return JetTokens.TRUE_KEYWORD ; } - case 96: break; + case 98: break; case 49: { return JetTokens.ANDAND ; } - case 97: break; + case 99: break; case 53: { return JetTokens.DOC_COMMENT; } - case 98: break; + case 100: break; case 27: { return JetTokens.FLOAT_LITERAL; } - case 99: break; + case 101: break; case 28: { return JetTokens.EOL_COMMENT; } - case 100: break; + case 102: break; case 24: { return JetTokens.COLON ; } - case 101: break; + case 103: break; case 46: { return JetTokens.LTEQ ; } - case 102: break; - case 73: - { return JetTokens.IMPORT_KEYWORD ; - } - case 103: break; + case 104: break; case 11: { return JetTokens.LBRACKET ; } - case 104: break; + case 105: break; case 9: { return JetTokens.CHARACTER_LITERAL; } - case 105: break; - case 56: + case 106: break; + case 57: { return JetTokens.VAR_KEYWORD ; } - case 106: break; + case 107: break; case 47: { return JetTokens.GTEQ ; } - case 107: break; + case 108: break; case 2: { return JetTokens.INTEGER_LITERAL; } - case 108: break; + case 109: break; case 14: { return JetTokens.RBRACE ; } - case 109: break; - case 67: + case 110: break; + case 69: { return JetTokens.CLASS_KEYWORD ; } - case 110: break; + case 111: break; case 18: { return JetTokens.EXCL ; } - case 111: break; + case 112: break; case 44: { return JetTokens.EXCLEQ ; } - case 112: break; + case 113: break; case 36: { return JetTokens.MINUSEQ ; } - case 113: break; - case 69: + case 114: break; + case 70: { return JetTokens.THROW_KEYWORD ; } - case 114: break; - case 71: + case 115: break; + case 73: { return JetTokens.WHILE_KEYWORD ; } - case 115: break; + case 116: break; case 35: { return JetTokens.MINUSMINUS; } - case 116: break; - case 77: + case 117: break; + case 78: { return JetTokens.CONTINUE_KEYWORD ; } - case 117: break; + case 118: break; case 5: { return JetTokens.DIV ; } - case 118: break; + case 119: break; case 52: { return JetTokens.ELVIS ; } - case 119: break; + case 120: break; case 23: { return JetTokens.QUEST ; } - case 120: break; + case 121: break; case 50: { return JetTokens.OROR ; } - case 121: break; + case 122: break; case 19: { return JetTokens.PERC ; } - case 122: break; + case 123: break; case 45: { return JetTokens.PERCEQ ; } - case 123: break; + case 124: break; case 33: { return JetTokens.RANGE ; } - case 124: break; + case 125: break; case 1: { return TokenType.BAD_CHARACTER; } - case 125: break; + case 126: break; case 51: { return JetTokens.SAFE_ACCESS; } - case 126: break; - case 78: + case 127: break; + case 79: { return JetTokens.NAMESPACE_KEYWORD ; } - case 127: break; - case 80: + case 128: break; + case 81: { return JetTokens.DECOMPOSER_KEYWORD ; } - case 128: break; + case 129: break; case 6: { return JetTokens.MUL ; } - case 129: break; + case 130: break; case 12: { return JetTokens.RBRACKET ; } - case 130: break; + case 131: break; case 42: { return JetTokens.PLUSPLUS ; } - case 131: break; - case 65: + case 132: break; + case 66: { return JetTokens.THIS_KEYWORD ; } - case 132: break; + case 133: break; case 7: { return JetTokens.DOT ; } - case 133: break; + case 134: break; case 25: { return JetTokens.SEMICOLON ; } - case 134: break; + case 135: break; case 40: { return JetTokens.IF_KEYWORD ; } - case 135: break; + case 136: break; case 22: { return JetTokens.EQ ; } - case 136: break; + case 137: break; case 15: { return JetTokens.LPAR ; } - case 137: break; + case 138: break; case 8: { return JetTokens.MINUS ; } - case 138: break; - case 70: + case 139: break; + case 72: { return JetTokens.FALSE_KEYWORD ; } - case 139: break; - case 64: + case 140: break; + case 65: { return JetTokens.TYPE_KEYWORD ; } - case 140: break; + case 141: break; + case 58: + { return JetTokens.REF_KEYWORD ; + } + case 142: break; case 59: { return JetTokens.FUN_KEYWORD ; } - case 141: break; + case 143: break; case 39: { return JetTokens.IS_KEYWORD ; } - case 142: break; + case 144: break; case 30: { return JetTokens.DIVEQ ; } - case 143: break; - case 79: + case 145: break; + case 80: { return JetTokens.EXTENSION_KEYWORD ; } - case 144: break; + case 146: break; case 37: { return JetTokens.AS_KEYWORD ; } - case 145: break; - case 62: + case 147: break; + case 64: { return JetTokens.ELSE_KEYWORD ; } - case 146: break; + case 148: break; case 38: { return JetTokens.IN_KEYWORD ; } - case 147: break; + case 149: break; case 48: { return JetTokens.EQEQ ; } - case 148: break; - case 57: + case 150: break; + case 56: { return JetTokens.VAL_KEYWORD ; } - case 149: break; - case 60: + case 151: break; + case 62: { return JetTokens.EQEQEQ ; } - case 150: break; + case 152: break; case 55: { return JetTokens.NEW_KEYWORD ; } - case 151: break; + case 153: break; case 31: { return JetTokens.MULTEQ ; } - case 152: break; + case 154: break; case 10: { return JetTokens.STRING_LITERAL; } - case 153: break; + case 155: break; case 13: { return JetTokens.LBRACE ; } - case 154: break; - case 68: + case 156: break; + case 71: { return JetTokens.ISNOT_KEYWORD ; } - case 155: break; - case 74: + case 157: break; + case 77: { return JetTokens.OBJECT_KEYWORD ; } - case 156: break; - case 72: + case 158: break; + case 74: { return JetTokens.BREAK_KEYWORD ; } - case 157: break; + case 159: break; case 29: { return JetTokens.BLOCK_COMMENT; } - case 158: break; + case 160: break; case 34: { return JetTokens.FILTER ; } - case 159: break; + case 161: break; case 32: { return JetTokens.MAP ; } - case 160: break; + case 162: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; diff --git a/idea/testData/psi/BabySteps.txt b/idea/testData/psi/BabySteps.txt index 3f26d9550d0..7d2c81bc1f1 100644 --- a/idea/testData/psi/BabySteps.txt +++ b/idea/testData/psi/BabySteps.txt @@ -2,7 +2,8 @@ JetFile: BabySteps.jet NAMESPACE PsiElement(NAMESPACE_KEYWORD)('namespace') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + NAMESPACE_NAME + PsiElement(IDENTIFIER)('foo') PsiWhiteSpace('\n\n') CLASS PsiElement(CLASS_KEYWORD)('class') diff --git a/idea/testData/psi/EmptyFile.txt b/idea/testData/psi/EmptyFile.txt index 5ddd4d78d84..9cc81e6e40b 100644 --- a/idea/testData/psi/EmptyFile.txt +++ b/idea/testData/psi/EmptyFile.txt @@ -1,2 +1,3 @@ JetFile: EmptyFile.jet - + NAMESPACE + \ No newline at end of file diff --git a/idea/testData/psi/FileStart_ERR.jet b/idea/testData/psi/FileStart_ERR.jet new file mode 100644 index 00000000000..dafb2f44095 --- /dev/null +++ b/idea/testData/psi/FileStart_ERR.jet @@ -0,0 +1,2 @@ +/namespace foo.bar +import foo \ No newline at end of file diff --git a/idea/testData/psi/Imports.jet b/idea/testData/psi/Imports.jet new file mode 100644 index 00000000000..606c82fdde9 --- /dev/null +++ b/idea/testData/psi/Imports.jet @@ -0,0 +1,8 @@ +namespace foo.bar.goo + +import foo +import foo.bar +import foo as bar +import foo.bar as bar +import foo.* +import foo. * \ No newline at end of file diff --git a/idea/testData/psi/Imports.txt b/idea/testData/psi/Imports.txt new file mode 100644 index 00000000000..65ddd3cbda6 --- /dev/null +++ b/idea/testData/psi/Imports.txt @@ -0,0 +1,56 @@ +JetFile: Imports.jet + NAMESPACE + PsiElement(NAMESPACE_KEYWORD)('namespace') + PsiWhiteSpace(' ') + NAMESPACE_NAME + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('goo') + PsiWhiteSpace('\n\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + PsiWhiteSpace(' ') + PsiElement(AS_KEYWORD)('as') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('bar') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') + PsiWhiteSpace(' ') + PsiElement(AS_KEYWORD)('as') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('bar') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + PsiElement(MAP)('.*') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiWhiteSpace(' ') + PsiElement(MUL)('*') \ No newline at end of file diff --git a/idea/testData/psi/Imports_ERR.jet b/idea/testData/psi/Imports_ERR.jet new file mode 100644 index 00000000000..e0dd8554138 --- /dev/null +++ b/idea/testData/psi/Imports_ERR.jet @@ -0,0 +1,17 @@ +namespace foo.bar.goo + +import foo as +import foo. +import foo.bar. +import foo. as bar +import foo.bar.* as bar +import foo.bar.* as + +import foo as ; +import foo. ; +import foo.bar. ; +import foo. as bar ; +import foo.bar.* as bar ; +import foo.bar.* as ; + +class Foo {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java b/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java index 9664e966729..995d767fdce 100644 --- a/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java +++ b/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java @@ -29,4 +29,6 @@ public class JetParsingTest extends ParsingTestCase { public void testEmptyFile() throws Exception {doTest(true);} public void testBabySteps() throws Exception {doTest(true);} + public void testImports() throws Exception {doTest(true);} + public void testImports_ERR() throws Exception {doTest(true);} }