From bfe22843ce9217bc4e722bd0c4f5d26860d32f9c Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 24 Feb 2011 16:01:51 +0300 Subject: [PATCH] Labels --- grammar/src/expressions.grm | 19 +- grammar/src/lexical.grm | 1 + idea/META-INF/plugin.xml | 1 + .../jetbrains/jet/lang/JetHighlighter.java | 8 + .../jet/lang/annotations/LabelsAnnotator.java | 36 + .../lang/parsing/JetExpressionParsing.java | 47 +- .../jet/lang/psi/JetBreakExpression.java | 2 +- .../jet/lang/psi/JetContinueExpression.java | 2 +- .../lang/psi/JetLabelQualifiedExpression.java | 29 + .../jet/lang/psi/JetReturnExpression.java | 2 +- .../jet/lang/psi/JetThisExpression.java | 2 +- .../jetbrains/jet/lang/psi/JetVisitor.java | 10 +- idea/src/org/jetbrains/jet/lexer/Jet.flex | 3 + .../org/jetbrains/jet/lexer/JetTokens.java | 5 +- .../org/jetbrains/jet/lexer/_JetLexer.java | 924 +++++++++--------- idea/testData/psi/ControlStructures.jet | 12 +- idea/testData/psi/ControlStructures.txt | 32 +- idea/testData/psi/Labels.jet | 60 ++ idea/testData/psi/Labels.txt | 377 +++++++ idea/testData/psi/SimpleExpressions.jet | 12 +- idea/testData/psi/SimpleExpressions.txt | 32 +- 21 files changed, 1086 insertions(+), 530 deletions(-) create mode 100644 idea/src/org/jetbrains/jet/lang/annotations/LabelsAnnotator.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetLabelQualifiedExpression.java create mode 100644 idea/testData/psi/Labels.jet create mode 100644 idea/testData/psi/Labels.txt diff --git a/grammar/src/expressions.grm b/grammar/src/expressions.grm index 0ed0fbe0b8b..ab8da2e35f5 100644 --- a/grammar/src/expressions.grm +++ b/grammar/src/expressions.grm @@ -82,7 +82,7 @@ atomicExpression : literalConstant : functionLiteral : tupleLiteral - : "this" ("<" type ">")? + : "this" label? ("<" type ">")? : if : when : try @@ -97,6 +97,12 @@ atomicExpression : "namespace" // for the root namespace ; +label + : "@" + : "@@" + : LabelName + ; + literalConstant : "true" | "false" : StringWithTemplates @@ -163,12 +169,13 @@ prefixUnaryOperation : "++" : "--" : "!" // No ~ : attributes // mandatory + : label ; postfixUnaryOperation : "++" : "--" - : typeArguments? valueArguments - : typeArguments + : typeArguments? valueArguments (label? functionLiteral) + : typeArguments (label? functionLiteral) : arrayAccess : memberAccessOperation postfixUnaryOperation // TODO: Review ; @@ -187,9 +194,9 @@ valueArguments jump : "throw" expression - : "return" expression? - : "continue" stringLiteral? - : "break" stringLiteral? + : "return" label? expression? + : "continue" label? + : "break" label? // yield ? ; diff --git a/grammar/src/lexical.grm b/grammar/src/lexical.grm index 2da24ec5200..e6144a1b2cb 100644 --- a/grammar/src/lexical.grm +++ b/grammar/src/lexical.grm @@ -1,5 +1,6 @@ SimpleName : /*java identifier*/; FieldName : "$" SimpleName; +LabelName : "@" SimpleName; [helper] Digit : ["0".."9"]; IntegerLiteral : Digit+ "L"? [helper] HexDigit : Digit | ["A"-"F", "a"-"f"]; diff --git a/idea/META-INF/plugin.xml b/idea/META-INF/plugin.xml index 5a0efc52715..4e8789e38b9 100644 --- a/idea/META-INF/plugin.xml +++ b/idea/META-INF/plugin.xml @@ -22,6 +22,7 @@ + diff --git a/idea/src/org/jetbrains/jet/lang/JetHighlighter.java b/idea/src/org/jetbrains/jet/lang/JetHighlighter.java index d18bc49b306..d33bd68f546 100644 --- a/idea/src/org/jetbrains/jet/lang/JetHighlighter.java +++ b/idea/src/org/jetbrains/jet/lang/JetHighlighter.java @@ -37,6 +37,12 @@ public class JetHighlighter extends SyntaxHighlighterBase { SyntaxHighlighterColors.KEYWORD.getDefaultAttributes() ); + public static final TextAttributesKey JET_LABEL_IDENTIFIER = TextAttributesKey.createTextAttributesKey( + "JET.LABEL.IDENTIFIER", +// TODO: proper attributes + SyntaxHighlighterColors.NUMBER.getDefaultAttributes() + ); + private static final TextAttributesKey JET_NUMBER = TextAttributesKey.createTextAttributesKey( "JET.NUMBER", SyntaxHighlighterColors.NUMBER.getDefaultAttributes() @@ -74,6 +80,8 @@ public class JetHighlighter extends SyntaxHighlighterBase { fillMap(keys1, JetTokens.KEYWORDS, JET_KEYWORD); + keys1.put(JetTokens.LABEL_IDENTIFIER, JET_LABEL_IDENTIFIER); + keys1.put(JetTokens.ATAT, JET_LABEL_IDENTIFIER); keys1.put(JetTokens.FIELD_IDENTIFIER, JET_FIELD_IDENTIFIER); keys1.put(JetTokens.INTEGER_LITERAL, JET_NUMBER); keys1.put(JetTokens.LONG_LITERAL, JET_NUMBER); diff --git a/idea/src/org/jetbrains/jet/lang/annotations/LabelsAnnotator.java b/idea/src/org/jetbrains/jet/lang/annotations/LabelsAnnotator.java new file mode 100644 index 00000000000..61b74f9b175 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/annotations/LabelsAnnotator.java @@ -0,0 +1,36 @@ +/* + * @author max + */ +package org.jetbrains.jet.lang.annotations; + +import com.intellij.lang.ASTNode; +import com.intellij.lang.annotation.AnnotationHolder; +import com.intellij.lang.annotation.Annotator; +import com.intellij.psi.PsiElement; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.JetHighlighter; +import org.jetbrains.jet.lang.psi.*; +import org.jetbrains.jet.lexer.JetTokens; + +public class LabelsAnnotator implements Annotator { + public void annotate(@NotNull PsiElement element, @NotNull final AnnotationHolder holder) { + element.accept(new JetVisitor() { + @Override + public void visitPrefixExpression(JetPrefixExpression expression) { + ASTNode operationTokenNode = expression.getOperationTokenNode(); + if (JetTokens.LABELS.contains(operationTokenNode.getElementType())) { + holder.createInfoAnnotation(operationTokenNode, null).setTextAttributes(JetHighlighter.JET_LABEL_IDENTIFIER); + } + } + + @Override + public void visitLabelQualifiedExpression(JetLabelQualifiedExpression expression) { + ASTNode targetLabelNode = expression.getTargetLabelNode(); + if (targetLabelNode != null) { + holder.createInfoAnnotation(targetLabelNode, null).setTextAttributes(JetHighlighter.JET_LABEL_IDENTIFIER); + } + } + + }); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 4edf37472ce..2cb4a322844 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -34,7 +34,7 @@ public class JetExpressionParsing extends AbstractJetParsing { private static final TokenSet EXPRESSION_FIRST = TokenSet.orSet(TokenSet.create( // Prefix - MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LBRACKET, + MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LBRACKET, LABEL_IDENTIFIER, AT, ATAT, // Atomic LPAR, // parenthesized @@ -91,7 +91,7 @@ public class JetExpressionParsing extends AbstractJetParsing { private enum Precedence { POSTFIX(PLUSPLUS, MINUSMINUS), // typeArguments? valueArguments : typeArguments : arrayAccess - PREFIX(MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL) { // attributes + PREFIX(MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LABEL_IDENTIFIER, AT, ATAT) { // attributes @Override public void parseHigherPrecedence(JetExpressionParsing parser) { @@ -278,8 +278,8 @@ public class JetExpressionParsing extends AbstractJetParsing { * * postfixUnaryOperation * : "++" : "--" - * : typeArguments? valueArguments - * : typeArguments + * : typeArguments? valueArguments (label? functionLiteral) + * : typeArguments (label? functionLiteral) * : arrayAccess * : memberAccessOperation postfixUnaryOperation // TODO: Review * ; @@ -354,12 +354,19 @@ public class JetExpressionParsing extends AbstractJetParsing { } /* - * expression functionLiteral? + * expression (label? functionLiteral)? */ protected boolean parseCallWithClosure() { boolean success = false; - while (!myBuilder.newlineBeforeCurrentToken() && at(LBRACE)) { - parseFunctionLiteral(); + while (!myBuilder.newlineBeforeCurrentToken() + && (at(LBRACE) + || atSet(LABELS) && lookahead(1) == LBRACE)) { + if (!at(LBRACE)) { + assert _atSet(LABELS); + parsePrefixExpression(); + } else { + parseFunctionLiteral(); + } success = true; } return success; @@ -368,7 +375,7 @@ public class JetExpressionParsing extends AbstractJetParsing { /* * atomicExpression * : tupleLiteral // or parenthesized expression - * : "this" ("<" type ">")? + * : "this" label? ("<" type ">")? * : "typeof" "(" expression ")" * : "new" constructorInvocation * : objectLiteral @@ -1231,13 +1238,8 @@ public class JetExpressionParsing extends AbstractJetParsing { } /* - * : "continue" stringLiteral? - * : "break" stringLiteral? - * - * stringLiteral - * : StringWithTemplates - * : NoEscapeString - * ; + * : "continue" label? + * : "break" label? */ private void parseJump(JetNodeType type) { assert _at(BREAK_KEYWORD) || _at(CONTINUE_KEYWORD); @@ -1246,13 +1248,13 @@ public class JetExpressionParsing extends AbstractJetParsing { advance(); // BREAK_KEYWORD or CONTINUE_KEYWORD - if (!eol() && (at(RAW_STRING_LITERAL) || at(STRING_LITERAL))) advance(); // RAW_STRING_LITERAL or STRING_LITERAL + if (!eol() && atSet(LABELS)) advance(); // LABELS marker.done(type); } /* - * "return" expression? + * "return" label? expression? */ private void parseReturn() { assert _at(RETURN_KEYWORD); @@ -1261,6 +1263,10 @@ public class JetExpressionParsing extends AbstractJetParsing { advance(); // RETURN_KEYWORD + if (atSet(LABELS)) { + advance(); // LABELS + } + if (atSet(EXPRESSION_FIRST) && !at(EOL_OR_SEMICOLON)) parseExpression(); returnExpression.done(RETURN); @@ -1379,12 +1385,17 @@ public class JetExpressionParsing extends AbstractJetParsing { } /* - * "this" ("<" type ">")? + * "this" label? ("<" type ">")? */ private void parseThisExpression() { assert _at(THIS_KEYWORD); PsiBuilder.Marker mark = mark(); advance(); // THIS_KEYWORD + + if (atSet(LABELS)) { + advance(); // LABELS + } + if (at(LT)) { // This may be "this < foo" or "this", thus the backtracking PsiBuilder.Marker supertype = mark(); diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetBreakExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetBreakExpression.java index 8c6d4ce2abd..a3dd46f7602 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetBreakExpression.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetBreakExpression.java @@ -9,7 +9,7 @@ import org.jetbrains.jet.lexer.JetTokens; /** * @author max */ -public class JetBreakExpression extends JetExpression { +public class JetBreakExpression extends JetLabelQualifiedExpression { public JetBreakExpression(@NotNull ASTNode node) { super(node); } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetContinueExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetContinueExpression.java index f5f09201956..72fbe3bacc3 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetContinueExpression.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetContinueExpression.java @@ -9,7 +9,7 @@ import org.jetbrains.jet.lexer.JetTokens; /** * @author max */ -public class JetContinueExpression extends JetExpression { +public class JetContinueExpression extends JetLabelQualifiedExpression { public JetContinueExpression(@NotNull ASTNode node) { super(node); } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetLabelQualifiedExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetLabelQualifiedExpression.java new file mode 100644 index 00000000000..c74809a0198 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetLabelQualifiedExpression.java @@ -0,0 +1,29 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lexer.JetToken; +import org.jetbrains.jet.lexer.JetTokens; + +/** + * @author abreslav + */ +public class JetLabelQualifiedExpression extends JetExpression { + + public JetLabelQualifiedExpression(@NotNull ASTNode node) { + super(node); + } + + @Nullable + public JetToken getTargetLabel() { + ASTNode targetLabelNode = getTargetLabelNode(); + if (targetLabelNode == null) return null; + return (JetToken) targetLabelNode.getElementType(); + } + + @Nullable + public ASTNode getTargetLabelNode() { + return getNode().findChildByType(JetTokens.LABELS); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetReturnExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetReturnExpression.java index 478990d1e9a..2982b819992 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetReturnExpression.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetReturnExpression.java @@ -7,7 +7,7 @@ import org.jetbrains.annotations.Nullable; /** * @author max */ -public class JetReturnExpression extends JetExpression { +public class JetReturnExpression extends JetLabelQualifiedExpression { public JetReturnExpression(@NotNull ASTNode node) { super(node); } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetThisExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetThisExpression.java index feaac7b903e..34e1b857445 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetThisExpression.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetThisExpression.java @@ -8,7 +8,7 @@ import org.jetbrains.jet.JetNodeTypes; /** * @author max */ -public class JetThisExpression extends JetExpression { +public class JetThisExpression extends JetLabelQualifiedExpression { public JetThisExpression(@NotNull ASTNode node) { super(node); } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java index 0b7bc6568d1..5037a02439a 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java @@ -171,6 +171,10 @@ public class JetVisitor extends PsiElementVisitor { } public void visitReturnExpression(JetReturnExpression expression) { + visitLabelQualifiedExpression(expression); + } + + public void visitLabelQualifiedExpression(JetLabelQualifiedExpression expression) { visitExpression(expression); } @@ -179,11 +183,11 @@ public class JetVisitor extends PsiElementVisitor { } public void visitBreakExpression(JetBreakExpression expression) { - visitExpression(expression); + visitLabelQualifiedExpression(expression); } public void visitContinueExpression(JetContinueExpression expression) { - visitExpression(expression); + visitLabelQualifiedExpression(expression); } public void visitIfExpression(JetIfExpression expression) { @@ -271,7 +275,7 @@ public class JetVisitor extends PsiElementVisitor { } public void visitThisExpression(JetThisExpression expression) { - visitExpression(expression); + visitLabelQualifiedExpression(expression); } public void visitParenthesizedExpression(JetParenthesizedExpression expression) { diff --git a/idea/src/org/jetbrains/jet/lexer/Jet.flex b/idea/src/org/jetbrains/jet/lexer/Jet.flex index c37d23ce545..7053ff356e7 100644 --- a/idea/src/org/jetbrains/jet/lexer/Jet.flex +++ b/idea/src/org/jetbrains/jet/lexer/Jet.flex @@ -28,6 +28,7 @@ PLAIN_IDENTIFIER=[:jletter:] [:jletterdigit:]* ESCAPED_IDENTIFIER = `{PLAIN_IDENTIFIER}` IDENTIFIER = {PLAIN_IDENTIFIER}|{ESCAPED_IDENTIFIER} FIELD_IDENTIFIER = \${IDENTIFIER} +LABEL_IDENTIFIER = \@{IDENTIFIER} BLOCK_COMMENT=("/*"[^"*"]{COMMENT_TAIL})|"/*" // TODO: Wiki markup for doc comments? @@ -119,6 +120,7 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}? {FIELD_IDENTIFIER} { return JetTokens.FIELD_IDENTIFIER; } {IDENTIFIER} { return JetTokens.IDENTIFIER; } + {LABEL_IDENTIFIER} { return JetTokens.LABEL_IDENTIFIER; } "===" { return JetTokens.EQEQEQ ; } "!==" { return JetTokens.EXCLEQEQEQ; } @@ -144,6 +146,7 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}? "->" { return JetTokens.ARROW ; } "=>" { return JetTokens.DOUBLE_ARROW; } ".." { return JetTokens.RANGE ; } + "@@" { return JetTokens.ATAT ; } "[" { return JetTokens.LBRACKET ; } "]" { return JetTokens.RBRACKET ; } "{" { return JetTokens.LBRACE ; } diff --git a/idea/src/org/jetbrains/jet/lexer/JetTokens.java b/idea/src/org/jetbrains/jet/lexer/JetTokens.java index 0b20ed21d68..ede761524ca 100644 --- a/idea/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/idea/src/org/jetbrains/jet/lexer/JetTokens.java @@ -56,6 +56,7 @@ public interface JetTokens { JetToken IDENTIFIER = new JetToken("IDENTIFIER"); + JetToken LABEL_IDENTIFIER = new JetToken("LABEL_IDENTIFIER"); JetToken FIELD_IDENTIFIER = new JetToken("FIELD_IDENTIFIER"); JetToken LBRACKET = new JetToken("LBRACKET"); @@ -103,6 +104,8 @@ public interface JetTokens { JetToken NOT_IS = JetKeywordToken.keyword("NOT_IS"); JetToken HASH = new JetToken("HASH"); JetToken AT = new JetToken("AT"); + JetToken ATAT = new JetToken("ATAT"); + TokenSet LABELS = TokenSet.create(AT, ATAT, LABEL_IDENTIFIER); JetToken COMMA = new JetToken("COMMA"); @@ -158,5 +161,5 @@ public interface JetTokens { TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS, MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, SAFE_ACCESS, ELVIS, MAP, FILTER, QUEST, COLON, SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, - NOT_IN, NOT_IS, HASH, IDENTIFIER); + NOT_IN, NOT_IS, HASH, IDENTIFIER, LABEL_IDENTIFIER, ATAT, AT); } diff --git a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java index 66050894b89..a6fcce99e68 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 2/8/11 6:25 PM */ +/* The following code was generated by JFlex 1.4.3 on 2/22/11 5:36 PM */ /* It's an automatically generated code. Do not modify it. */ package org.jetbrains.jet.lexer; @@ -11,7 +11,7 @@ import com.intellij.psi.tree.IElementType; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 2/8/11 6:25 PM from the specification file + * on 2/22/11 5:36 PM from the specification file * /Users/abreslav/work/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex */ class _JetLexer implements FlexLexer { @@ -35,15 +35,15 @@ class _JetLexer implements FlexLexer { * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = - "\11\5\1\3\1\12\1\0\1\3\1\0\16\5\4\0\1\3\1\60"+ - "\1\26\1\101\1\7\1\70\1\64\1\24\1\75\1\76\1\11\1\61"+ - "\1\100\1\22\1\20\1\10\1\13\11\1\1\67\1\77\1\62\1\57"+ - "\1\63\1\66\1\102\1\2\1\15\1\2\1\17\1\21\1\17\5\4"+ - "\1\16\3\4\1\23\3\4\1\54\3\4\1\14\2\4\1\71\1\25"+ - "\1\72\1\0\1\4\1\6\1\30\1\46\1\35\1\56\1\32\1\45"+ - "\1\4\1\51\1\40\1\47\1\53\1\52\1\31\1\27\1\41\1\34"+ - "\1\4\1\43\1\33\1\37\1\42\1\55\1\50\1\36\1\44\1\4"+ - "\1\73\1\65\1\74\1\0\41\5\2\0\4\4\4\0\1\4\2\0"+ + "\11\5\1\3\1\13\1\0\1\3\1\0\16\5\4\0\1\3\1\61"+ + "\1\27\1\102\1\7\1\71\1\65\1\25\1\76\1\77\1\12\1\62"+ + "\1\101\1\23\1\21\1\11\1\14\11\1\1\70\1\100\1\63\1\60"+ + "\1\64\1\67\1\10\1\2\1\16\1\2\1\20\1\22\1\20\5\4"+ + "\1\17\3\4\1\24\3\4\1\55\3\4\1\15\2\4\1\72\1\26"+ + "\1\73\1\0\1\4\1\6\1\31\1\47\1\36\1\57\1\33\1\46"+ + "\1\4\1\52\1\41\1\50\1\54\1\53\1\32\1\30\1\42\1\35"+ + "\1\4\1\44\1\34\1\40\1\43\1\56\1\51\1\37\1\45\1\4"+ + "\1\74\1\66\1\75\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\23\5\12\0\1\4\13\0\1\4\1\0\3\4\1\0"+ @@ -138,26 +138,26 @@ class _JetLexer implements FlexLexer { private static final String ZZ_ACTION_PACKED_0 = "\1\0\1\1\1\2\1\3\1\4\1\1\1\3\1\5"+ - "\1\6\1\2\1\7\1\10\1\11\1\12\16\3\1\13"+ - "\1\14\1\15\1\16\1\17\2\1\1\20\1\21\1\22"+ + "\1\6\1\7\1\2\1\10\1\11\1\12\1\13\16\3"+ + "\1\14\1\15\1\16\1\17\1\20\2\1\1\21\1\22"+ "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+ "\1\33\1\34\1\35\3\36\1\0\1\37\1\0\1\40"+ - "\1\41\1\42\1\43\1\0\2\2\1\36\1\44\1\45"+ - "\1\46\1\47\1\50\1\51\2\11\3\12\3\3\1\52"+ - "\7\3\1\53\1\54\1\55\11\3\1\56\1\57\1\60"+ - "\1\0\1\61\1\62\1\63\1\64\1\65\1\66\1\67"+ - "\1\70\1\71\1\72\1\73\1\36\1\3\1\0\1\41"+ - "\1\74\1\0\1\35\3\0\1\12\1\75\1\3\1\76"+ - "\6\3\1\77\6\3\1\100\1\101\4\3\1\102\1\103"+ - "\1\104\1\105\1\106\1\107\1\37\1\0\2\74\1\0"+ - "\1\36\2\0\1\3\1\110\1\3\1\111\2\3\1\112"+ - "\1\113\1\114\5\3\1\115\1\3\1\116\1\41\1\0"+ - "\1\36\1\0\3\3\1\117\1\3\1\120\2\3\1\121"+ - "\1\122\1\123\1\75\3\3\1\124\1\125\1\126\5\3"+ - "\1\127\1\130\1\131"; + "\1\0\1\41\1\42\1\43\1\44\1\45\1\0\2\2"+ + "\1\36\1\46\1\47\1\50\1\51\1\52\1\53\2\12"+ + "\3\13\3\3\1\54\7\3\1\55\1\56\1\57\11\3"+ + "\1\60\1\61\1\62\1\0\1\63\1\64\1\65\1\66"+ + "\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\36"+ + "\1\3\2\0\1\43\1\76\1\0\1\35\3\0\1\13"+ + "\1\77\1\3\1\100\6\3\1\101\6\3\1\102\1\103"+ + "\4\3\1\104\1\105\1\106\1\107\1\110\1\111\1\37"+ + "\1\40\1\0\2\76\1\0\1\36\2\0\1\3\1\112"+ + "\1\3\1\113\2\3\1\114\1\115\1\116\5\3\1\117"+ + "\1\3\1\120\1\43\1\0\1\36\1\0\3\3\1\121"+ + "\1\3\1\122\2\3\1\123\1\124\1\125\1\77\3\3"+ + "\1\126\1\127\1\130\5\3\1\131\1\132\1\133"; private static int [] zzUnpackAction() { - int [] result = new int[206]; + int [] result = new int[211]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -186,31 +186,32 @@ class _JetLexer implements FlexLexer { "\0\u0218\0\u025b\0\u029e\0\u02e1\0\u0324\0\u0367\0\u03aa\0\u03ed"+ "\0\u0430\0\u0473\0\u04b6\0\u04f9\0\u053c\0\u057f\0\u05c2\0\u0605"+ "\0\u0648\0\u068b\0\u06ce\0\u0711\0\u0754\0\u0797\0\u07da\0\u081d"+ - "\0\u0860\0\u08a3\0\u08e6\0\u0929\0\103\0\u096c\0\103\0\103"+ + "\0\u0860\0\u08a3\0\u08e6\0\u0929\0\u096c\0\103\0\u09af\0\103"+ "\0\103\0\103\0\103\0\103\0\103\0\103\0\103\0\103"+ - "\0\103\0\103\0\u09af\0\u09f2\0\u0a35\0\u0a78\0\u0abb\0\u0afe"+ - "\0\u0b41\0\103\0\103\0\u0b84\0\u0bc7\0\u0c0a\0\u0c4d\0\103"+ - "\0\103\0\103\0\103\0\103\0\103\0\103\0\u0c90\0\u0cd3"+ - "\0\u0d16\0\u0d59\0\u0d9c\0\u0ddf\0\u0e22\0\311\0\u0e65\0\u0ea8"+ - "\0\u0eeb\0\u0f2e\0\u0f71\0\u0fb4\0\u0ff7\0\311\0\311\0\311"+ - "\0\u103a\0\u107d\0\u10c0\0\u1103\0\u1146\0\u1189\0\u11cc\0\u120f"+ - "\0\u1252\0\311\0\u1295\0\103\0\u12d8\0\u131b\0\103\0\103"+ - "\0\103\0\103\0\103\0\103\0\103\0\103\0\103\0\103"+ - "\0\u135e\0\103\0\u13a1\0\u13e4\0\u1427\0\u146a\0\u146a\0\u14ad"+ - "\0\u14f0\0\u1533\0\103\0\u1576\0\u15b9\0\311\0\u15fc\0\u163f"+ - "\0\u1682\0\u16c5\0\u1708\0\u174b\0\311\0\u178e\0\u17d1\0\u1814"+ - "\0\u1857\0\u189a\0\u18dd\0\311\0\311\0\u1920\0\u1963\0\u19a6"+ - "\0\u19e9\0\311\0\311\0\103\0\103\0\103\0\103\0\103"+ - "\0\u1a2c\0\u1a6f\0\103\0\u1ab2\0\u1af5\0\u1b38\0\u1b7b\0\u1bbe"+ - "\0\311\0\u1c01\0\311\0\u1c44\0\u1c87\0\311\0\u1cca\0\311"+ - "\0\u1d0d\0\u1d50\0\u1d93\0\u1dd6\0\u1e19\0\311\0\u1e5c\0\311"+ - "\0\103\0\u1e9f\0\u146a\0\u1ee2\0\u1f25\0\u1f68\0\u1fab\0\311"+ - "\0\u1fee\0\311\0\u2031\0\u2074\0\311\0\311\0\311\0\103"+ - "\0\u20b7\0\u20fa\0\u213d\0\311\0\311\0\311\0\u2180\0\u21c3"+ - "\0\u2206\0\u2249\0\u228c\0\311\0\311\0\311"; + "\0\103\0\103\0\u09f2\0\u0a35\0\u0a78\0\u0abb\0\u0afe\0\u0b41"+ + "\0\u0b84\0\103\0\u0bc7\0\u0c0a\0\103\0\103\0\u0c4d\0\u0c90"+ + "\0\u0cd3\0\u0d16\0\103\0\103\0\103\0\103\0\103\0\103"+ + "\0\103\0\u0d59\0\u0d9c\0\u0ddf\0\u0e22\0\u0e65\0\u0ea8\0\u0eeb"+ + "\0\311\0\u0f2e\0\u0f71\0\u0fb4\0\u0ff7\0\u103a\0\u107d\0\u10c0"+ + "\0\311\0\311\0\311\0\u1103\0\u1146\0\u1189\0\u11cc\0\u120f"+ + "\0\u1252\0\u1295\0\u12d8\0\u131b\0\311\0\u135e\0\103\0\u13a1"+ + "\0\u13e4\0\103\0\103\0\103\0\103\0\103\0\103\0\103"+ + "\0\103\0\103\0\103\0\u1427\0\103\0\u146a\0\u14ad\0\u14f0"+ + "\0\u1533\0\u1576\0\u1576\0\u15b9\0\u15fc\0\u163f\0\103\0\u1682"+ + "\0\u16c5\0\311\0\u1708\0\u174b\0\u178e\0\u17d1\0\u1814\0\u1857"+ + "\0\311\0\u189a\0\u18dd\0\u1920\0\u1963\0\u19a6\0\u19e9\0\311"+ + "\0\311\0\u1a2c\0\u1a6f\0\u1ab2\0\u1af5\0\311\0\311\0\103"+ + "\0\103\0\103\0\103\0\103\0\103\0\u1b38\0\u1b7b\0\103"+ + "\0\u1bbe\0\u1c01\0\u1c44\0\u1c87\0\u1cca\0\311\0\u1d0d\0\311"+ + "\0\u1d50\0\u1d93\0\311\0\u1dd6\0\311\0\u1e19\0\u1e5c\0\u1e9f"+ + "\0\u1ee2\0\u1f25\0\311\0\u1f68\0\311\0\103\0\u1fab\0\u1576"+ + "\0\u1fee\0\u2031\0\u2074\0\u20b7\0\311\0\u20fa\0\311\0\u213d"+ + "\0\u2180\0\311\0\311\0\311\0\103\0\u21c3\0\u2206\0\u2249"+ + "\0\311\0\311\0\311\0\u228c\0\u22cf\0\u2312\0\u2355\0\u2398"+ + "\0\311\0\311\0\311"; private static int [] zzUnpackRowMap() { - int [] result = new int[206]; + int [] result = new int[211]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -234,229 +235,236 @@ 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\10\1\11\1\5\1\12\4\4\1\13\1\4\1\14"+ - "\1\4\1\15\1\2\1\16\1\17\1\20\1\4\1\21"+ - "\2\4\1\22\1\4\1\23\1\24\1\25\1\4\1\26"+ - "\1\4\1\27\1\30\1\4\1\31\3\4\1\32\1\33"+ + "\1\10\1\11\1\12\1\5\1\13\4\4\1\14\1\4"+ + "\1\15\1\4\1\16\1\2\1\17\1\20\1\21\1\4"+ + "\1\22\2\4\1\23\1\4\1\24\1\25\1\26\1\4"+ + "\1\27\1\4\1\30\1\31\1\4\1\32\3\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\1\55\1\56\1\57\1\60\104\0\1\3\11\0"+ + "\1\54\1\55\1\56\1\57\1\60\104\0\1\3\12\0"+ "\1\3\2\0\1\61\1\62\1\63\1\64\10\0\1\64"+ - "\12\0\1\62\4\0\1\61\3\0\1\62\25\0\2\4"+ - "\1\0\2\4\1\0\1\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\30\4\27\0\1\5\6\0\1\5"+ - "\72\0\1\65\1\0\1\65\2\0\1\65\4\0\4\65"+ - "\1\0\1\65\1\0\1\65\3\0\30\65\25\0\1\4"+ - "\1\66\1\0\1\66\1\4\1\67\1\66\3\0\1\4"+ - "\4\66\1\0\1\66\1\0\1\66\3\0\30\66\34\0"+ - "\1\70\1\71\45\0\1\72\102\0\1\73\24\0\1\74"+ - "\11\0\1\74\1\75\1\76\1\61\1\62\1\63\1\64"+ - "\10\0\1\64\3\0\1\75\6\0\1\62\1\76\3\0"+ - "\1\61\3\0\1\62\25\0\1\77\7\0\1\100\1\0"+ - "\1\77\4\0\1\101\45\0\1\102\36\0\1\103\34\0"+ - "\1\104\3\0\1\105\17\0\12\15\1\0\11\15\1\106"+ - "\1\107\55\15\12\110\1\0\12\110\1\111\1\112\54\110"+ - "\1\0\2\4\1\0\2\4\1\0\1\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\1\4\1\113\1\4"+ - "\1\114\7\4\1\115\14\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\116\23\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\7\4\1\117\13\4\1\120\4\4\25\0\2\4"+ - "\1\0\2\4\1\0\1\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\12\4\1\121\10\4\1\122\4\4"+ - "\25\0\2\4\1\0\2\4\1\0\1\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\14\4\1\123\1\124"+ - "\4\4\1\125\5\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\1\126\3\4\1\127\11\4\1\130\11\4\25\0\2\4"+ - "\1\0\2\4\1\0\1\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\17\4\1\131\10\4\25\0\2\4"+ - "\1\0\2\4\1\0\1\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\132\24\4\25\0\2\4"+ - "\1\0\2\4\1\0\1\4\3\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\4\1\133\10\4\1\134\1\135"+ - "\14\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\14\4\1\136"+ - "\13\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\22\4\1\137"+ - "\5\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\22\4\1\140"+ - "\5\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\1\4\1\141"+ - "\26\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\12\4\1\142"+ - "\15\4\103\0\1\143\3\0\1\144\57\0\1\145\16\0"+ - "\1\146\102\0\1\147\1\0\1\150\100\0\1\151\102\0"+ - "\1\152\107\0\1\153\103\0\1\154\35\0\1\155\46\0"+ - "\1\156\72\0\1\157\24\0\1\77\11\0\1\77\3\0"+ - "\1\62\1\160\1\64\10\0\1\64\12\0\1\62\10\0"+ - "\1\62\25\0\1\161\11\0\1\161\3\0\1\62\2\0"+ - "\1\161\22\0\1\62\10\0\1\62\2\0\1\161\22\0"+ - "\2\65\1\0\2\65\1\162\1\65\3\0\5\65\1\0"+ - "\1\65\1\0\1\65\3\0\30\65\25\0\2\66\1\0"+ - "\2\66\1\0\1\66\3\0\5\66\1\0\1\66\1\0"+ - "\1\66\3\0\30\66\26\0\1\163\1\0\1\163\2\0"+ - "\1\163\4\0\4\163\1\0\1\163\1\0\1\163\3\0"+ - "\30\163\24\0\12\70\1\0\70\70\11\164\1\165\71\164"+ - "\1\0\1\74\11\0\1\74\3\0\1\62\1\77\1\64"+ - "\10\0\1\64\12\0\1\62\10\0\1\62\24\0\1\166"+ - "\2\75\7\166\1\0\1\75\1\166\1\75\1\167\1\75"+ - "\1\170\1\75\1\166\1\171\4\166\1\75\1\166\1\75"+ - "\1\166\1\171\1\75\7\166\2\75\3\166\1\167\3\166"+ - "\1\75\24\166\1\0\1\76\11\0\1\76\2\0\1\61"+ - "\1\0\1\172\31\0\1\61\31\0\1\77\11\0\1\77"+ - "\3\0\1\62\1\0\1\64\10\0\1\64\12\0\1\62"+ - "\10\0\1\62\24\0\12\15\1\0\70\15\12\110\1\0"+ - "\12\110\1\111\1\173\66\110\1\0\70\110\26\0\1\174"+ - "\55\0\2\4\1\0\2\4\1\0\1\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\2\4\1\175\25\4"+ - "\25\0\2\4\1\0\2\4\1\0\1\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\21\4\1\176\6\4"+ - "\25\0\2\4\1\0\2\4\1\0\1\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\23\4\1\177\4\4"+ - "\25\0\2\4\1\0\2\4\1\0\1\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\10\4\1\200\17\4"+ - "\25\0\2\4\1\0\2\4\1\0\1\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\4\4\1\201\23\4"+ - "\25\0\2\4\1\0\2\4\1\0\1\4\3\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\1\202\27\4\25\0"+ - "\2\4\1\0\2\4\1\0\1\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\1\4\1\203\26\4\25\0"+ - "\2\4\1\0\2\4\1\0\1\4\3\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\13\4\1\204\1\4\1\205"+ - "\12\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\5\4\1\206"+ - "\22\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\11\4\1\207"+ - "\2\4\1\210\13\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\20\4\1\211\7\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\10\4\1\212\17\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\23\4\1\213\4\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\14\4\1\214\13\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\1\215\27\4\25\0\2\4\1\0\2\4\1\0\1\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\216\24\4\25\0\2\4\1\0\2\4\1\0\1\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\217\5\4\1\220\16\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\11\4\1\221\16\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\14\4\1\222\6\4\1\223\4\4\103\0\1\224"+ - "\52\0\1\225\3\0\1\226\126\0\1\227\24\0\1\161"+ - "\11\0\1\161\3\0\1\62\25\0\1\62\10\0\1\62"+ - "\25\0\2\163\1\0\2\163\1\230\1\163\3\0\5\163"+ - "\1\0\1\163\1\0\1\163\3\0\30\163\24\0\11\164"+ - "\1\231\71\164\10\232\1\233\1\165\71\232\1\0\2\166"+ - "\10\0\1\166\1\0\1\166\1\0\1\166\1\0\1\166"+ - "\1\0\1\234\4\0\1\166\1\0\1\166\1\0\1\234"+ - "\1\166\7\0\2\166\7\0\1\166\25\0\2\166\10\0"+ - "\1\166\1\0\1\166\1\0\1\166\1\160\1\166\1\0"+ - "\1\234\4\0\1\166\1\0\1\166\1\0\1\234\1\166"+ - "\7\0\2\166\7\0\1\166\25\0\1\235\1\166\10\0"+ - "\1\235\1\0\1\166\1\0\1\166\1\0\1\166\1\236"+ - "\1\234\4\0\1\166\1\0\1\166\1\0\1\234\1\166"+ - "\7\0\2\166\7\0\1\166\2\0\1\236\41\0\1\160"+ - "\62\0\26\174\1\237\54\174\1\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\240\24\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\23\4\1\241\4\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\242\24\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\243\24\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\10\4\1\244\17\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\245\23\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\246\24\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\247\24\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\250\23\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\12\4\1\251\15\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\3\4\1\252\24\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\13\4\1\253\14\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\254\23\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\1\4\1\255\26\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\1\256\27\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\23\4\1\257\4\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\4\4\1\260\23\4\24\0\10\164\1\261\1\231\71\164"+ - "\11\232\1\262\71\232\1\0\1\161\11\0\1\161\6\0"+ - "\1\236\36\0\1\236\22\0\1\235\1\166\10\0\1\235"+ - "\1\0\1\166\1\0\1\263\1\0\1\166\1\0\1\234"+ - "\4\0\1\166\1\0\1\166\1\0\1\234\1\166\7\0"+ - "\1\263\1\166\7\0\1\263\25\0\1\161\11\0\1\161"+ - "\67\0\26\174\1\264\54\174\1\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\265\23\4\25\0\2\4\1\0\2\4"+ - "\1\0\1\4\3\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\1\266\27\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\11\4\1\267\16\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\4\4\1\270\23\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\12\4\1\271\15\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\21\4\1\272\6\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\6\4\1\273\21\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\14\4\1\274\13\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\3\4\1\275\24\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\24\4\1\276\3\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\3\4\1\277\24\4\24\0\10\232\1\233\1\262\71\232"+ - "\26\174\1\300\54\174\1\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\5\4\1\301\22\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\4\4\1\302\23\4\25\0\2\4\1\0\2\4\1\0"+ - "\1\4\3\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\1\303\27\4\25\0\2\4\1\0\2\4\1\0\1\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\16\4"+ - "\1\304\11\4\25\0\2\4\1\0\2\4\1\0\1\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\10\4"+ - "\1\305\17\4\25\0\2\4\1\0\2\4\1\0\1\4"+ - "\3\0\5\4\1\0\1\4\1\0\1\4\3\0\1\306"+ - "\27\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\1\4\1\307"+ - "\26\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\11\4\1\310"+ - "\16\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\13\4\1\311"+ - "\14\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\6\4\1\312"+ - "\21\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\12\4\1\313"+ - "\15\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\3\4\1\314"+ - "\24\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\3\4\1\315"+ - "\24\4\25\0\2\4\1\0\2\4\1\0\1\4\3\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\1\316\27\4"+ - "\24\0"; + "\12\0\1\62\4\0\1\61\3\0\1\62\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\30\4\26\0\1\5\7\0\1\5"+ + "\71\0\1\65\1\0\1\65\2\0\1\65\5\0\4\65"+ + "\1\0\1\65\1\0\1\65\3\0\30\65\24\0\1\4"+ + "\1\66\1\0\1\66\1\4\1\67\1\66\4\0\1\4"+ + "\4\66\1\0\1\66\1\0\1\66\3\0\30\66\25\0"+ + "\1\70\1\0\1\70\1\0\1\71\1\70\1\72\4\0"+ + "\4\70\1\0\1\70\1\0\1\70\3\0\30\70\34\0"+ + "\1\73\1\74\45\0\1\75\102\0\1\76\23\0\1\77"+ + "\12\0\1\77\1\100\1\101\1\61\1\62\1\63\1\64"+ + "\10\0\1\64\3\0\1\100\6\0\1\62\1\101\3\0"+ + "\1\61\3\0\1\62\24\0\1\102\10\0\1\103\1\0"+ + "\1\102\4\0\1\104\45\0\1\105\36\0\1\106\34\0"+ + "\1\107\3\0\1\110\16\0\13\16\1\0\11\16\1\111"+ + "\1\112\54\16\13\113\1\0\12\113\1\114\1\115\53\113"+ + "\1\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\4\1\116\1\4"+ + "\1\117\7\4\1\120\14\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\4\4\1\121\23\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\7\4\1\122\13\4\1\123\4\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\12\4\1\124\10\4\1\125\4\4"+ + "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\14\4\1\126\1\127"+ + "\4\4\1\130\5\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\131\3\4\1\132\11\4\1\133\11\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\17\4\1\134\10\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\135\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\4\1\136\10\4\1\137\1\140"+ + "\14\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\14\4\1\141"+ + "\13\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\22\4\1\142"+ + "\5\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\22\4\1\143"+ + "\5\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\1\4\1\144"+ + "\26\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\12\4\1\145"+ + "\15\4\103\0\1\146\3\0\1\147\57\0\1\150\16\0"+ + "\1\151\102\0\1\152\1\0\1\153\100\0\1\154\102\0"+ + "\1\155\107\0\1\156\103\0\1\157\35\0\1\160\46\0"+ + "\1\161\72\0\1\162\23\0\1\102\12\0\1\102\3\0"+ + "\1\62\1\163\1\64\10\0\1\64\12\0\1\62\10\0"+ + "\1\62\24\0\1\164\12\0\1\164\3\0\1\62\2\0"+ + "\1\164\22\0\1\62\10\0\1\62\2\0\1\164\21\0"+ + "\2\65\1\0\2\65\1\165\1\65\4\0\5\65\1\0"+ + "\1\65\1\0\1\65\3\0\30\65\24\0\2\66\1\0"+ + "\2\66\1\0\1\66\4\0\5\66\1\0\1\66\1\0"+ + "\1\66\3\0\30\66\25\0\1\166\1\0\1\166\2\0"+ + "\1\166\5\0\4\166\1\0\1\166\1\0\1\166\3\0"+ + "\30\166\24\0\2\70\1\0\2\70\1\0\1\70\4\0"+ + "\5\70\1\0\1\70\1\0\1\70\3\0\30\70\25\0"+ + "\1\167\1\0\1\167\2\0\1\167\5\0\4\167\1\0"+ + "\1\167\1\0\1\167\3\0\30\167\23\0\13\73\1\0"+ + "\67\73\12\170\1\171\70\170\1\0\1\77\12\0\1\77"+ + "\3\0\1\62\1\102\1\64\10\0\1\64\12\0\1\62"+ + "\10\0\1\62\23\0\1\172\2\100\10\172\1\0\1\100"+ + "\1\172\1\100\1\173\1\100\1\174\1\100\1\172\1\175"+ + "\4\172\1\100\1\172\1\100\1\172\1\175\1\100\7\172"+ + "\2\100\3\172\1\173\3\172\1\100\23\172\1\0\1\101"+ + "\12\0\1\101\2\0\1\61\1\0\1\176\31\0\1\61"+ + "\30\0\1\102\12\0\1\102\3\0\1\62\1\0\1\64"+ + "\10\0\1\64\12\0\1\62\10\0\1\62\23\0\13\16"+ + "\1\0\67\16\13\113\1\0\12\113\1\114\1\177\66\113"+ + "\1\0\67\113\27\0\1\200\54\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\2\4\1\201\25\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\21\4\1\202\6\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\23\4\1\203\4\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\10\4\1\204\17\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\4\4\1\205\23\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\206\27\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\4\1\207\26\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\13\4\1\210\1\4\1\211\12\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\212\22\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\11\4\1\213\2\4\1\214\13\4\24\0"+ + "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\20\4\1\215\7\4\24\0"+ + "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\10\4\1\216\17\4\24\0"+ + "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\23\4\1\217\4\4\24\0"+ + "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\14\4\1\220\13\4\24\0"+ + "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\221\27\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\222\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\223\5\4\1\224\16\4"+ + "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\11\4\1\225\16\4"+ + "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\14\4\1\226\6\4"+ + "\1\227\4\4\103\0\1\230\52\0\1\231\3\0\1\232"+ + "\126\0\1\233\23\0\1\164\12\0\1\164\3\0\1\62"+ + "\25\0\1\62\10\0\1\62\24\0\2\166\1\0\2\166"+ + "\1\234\1\166\4\0\5\166\1\0\1\166\1\0\1\166"+ + "\3\0\30\166\24\0\2\167\1\0\2\167\1\235\1\167"+ + "\4\0\5\167\1\0\1\167\1\0\1\167\3\0\30\167"+ + "\23\0\12\170\1\236\70\170\11\237\1\240\1\171\70\237"+ + "\1\0\2\172\11\0\1\172\1\0\1\172\1\0\1\172"+ + "\1\0\1\172\1\0\1\241\4\0\1\172\1\0\1\172"+ + "\1\0\1\241\1\172\7\0\2\172\7\0\1\172\24\0"+ + "\2\172\11\0\1\172\1\0\1\172\1\0\1\172\1\163"+ + "\1\172\1\0\1\241\4\0\1\172\1\0\1\172\1\0"+ + "\1\241\1\172\7\0\2\172\7\0\1\172\24\0\1\242"+ + "\1\172\11\0\1\242\1\0\1\172\1\0\1\172\1\0"+ + "\1\172\1\243\1\241\4\0\1\172\1\0\1\172\1\0"+ + "\1\241\1\172\7\0\2\172\7\0\1\172\2\0\1\243"+ + "\41\0\1\163\61\0\27\200\1\244\53\200\1\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\245\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\23\4\1\246\4\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\247\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\250\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\251\17\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\4\4\1\252\23\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\253\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\254\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\4\4\1\255\23\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\12\4\1\256\15\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\257\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\13\4\1\260\14\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\4\4\1\261\23\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\4\1\262\26\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\263\27\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\23\4\1\264\4\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\265\23\4\23\0\11\170\1\266"+ + "\1\236\70\170\12\237\1\267\70\237\1\0\1\164\12\0"+ + "\1\164\6\0\1\243\36\0\1\243\21\0\1\242\1\172"+ + "\11\0\1\242\1\0\1\172\1\0\1\270\1\0\1\172"+ + "\1\0\1\241\4\0\1\172\1\0\1\172\1\0\1\241"+ + "\1\172\7\0\1\270\1\172\7\0\1\270\24\0\1\164"+ + "\12\0\1\164\66\0\27\200\1\271\53\200\1\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\4\4\1\272\23\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\273\27\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\11\4\1\274\16\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\275\23\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\12\4\1\276\15\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\21\4\1\277\6\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\300\21\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\14\4\1\301\13\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\302\24\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\24\4\1\303\3\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\304\24\4\23\0\11\237\1\240"+ + "\1\267\70\237\27\200\1\305\53\200\1\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\306\22\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\307\23\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\310\27\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\16\4\1\311\11\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\10\4\1\312\17\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\313\27\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\4\1\314\26\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\11\4\1\315\16\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\13\4\1\316\14\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\6\4\1\317\21\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\12\4\1\320\15\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\321\24\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\322\24\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\323\27\4\23\0"; private static int [] zzUnpackTrans() { - int [] result = new int[8911]; + int [] result = new int[9179]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -497,15 +505,15 @@ class _JetLexer implements FlexLexer { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\0\1\11\42\1\1\11\1\1\14\11\2\1\1\0"+ - "\1\1\1\0\2\1\2\11\1\0\3\1\7\11\35\1"+ - "\1\11\1\0\1\1\12\11\1\1\1\11\1\0\2\1"+ - "\1\0\1\1\3\0\1\11\30\1\5\11\1\0\1\1"+ - "\1\11\1\0\1\1\2\0\21\1\1\11\1\0\1\1"+ - "\1\0\13\1\1\11\16\1"; + "\1\0\1\11\43\1\1\11\1\1\13\11\2\1\1\0"+ + "\1\1\1\0\1\1\1\0\1\11\2\1\2\11\1\0"+ + "\3\1\7\11\35\1\1\11\1\0\1\1\12\11\1\1"+ + "\1\11\2\0\2\1\1\0\1\1\3\0\1\11\30\1"+ + "\6\11\1\0\1\1\1\11\1\0\1\1\2\0\21\1"+ + "\1\11\1\0\1\1\1\0\13\1\1\11\16\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[206]; + int [] result = new int[211]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -813,359 +821,367 @@ class _JetLexer implements FlexLexer { case 3: { return JetTokens.IDENTIFIER; } - case 90: break; - case 64: + case 92: break; + case 66: { return JetTokens.FOR_KEYWORD ; } - case 91: break; - case 86: + case 93: break; + case 88: { return JetTokens.RETURN_KEYWORD ; } - case 92: break; - case 72: + case 94: break; + case 74: { return JetTokens.NULL_KEYWORD ; } - case 93: break; - case 14: + case 95: break; + case 15: { return JetTokens.LT ; } - case 94: break; - case 46: + case 96: break; + case 48: { return JetTokens.DO_KEYWORD ; } - case 95: break; - case 13: + case 97: break; + case 14: { return JetTokens.PLUS ; } - case 96: break; + case 98: break; case 29: { return JetTokens.LONG_LITERAL; } - case 97: break; - case 61: + case 99: break; + case 63: { return JetTokens.RAW_STRING_LITERAL; } - case 98: break; - case 50: + case 100: break; + case 52: { return JetTokens.PLUSEQ ; } - case 99: break; - case 26: + case 101: break; + case 27: { return JetTokens.COMMA ; } - case 100: break; - case 15: + case 102: break; + case 16: { return JetTokens.GT ; } - case 101: break; + case 103: break; case 4: { return JetTokens.WHITE_SPACE; } - case 102: break; - case 84: + case 104: break; + case 86: { return JetTokens.TYPEOF_KEYWORD ; } - case 103: break; - case 24: + case 105: break; + case 25: { return JetTokens.RPAR ; } - case 104: break; - case 48: + case 106: break; + case 50: { return JetTokens.DOUBLE_ARROW; } - case 105: break; - case 74: + case 107: break; + case 76: { return JetTokens.TRUE_KEYWORD ; } - case 106: break; + case 108: break; case 31: { return JetTokens.FIELD_IDENTIFIER; } - case 107: break; - case 54: + case 109: break; + case 56: { return JetTokens.ANDAND ; } - case 108: break; - case 60: + case 110: break; + case 62: { return JetTokens.DOC_COMMENT; } - case 109: break; + case 111: break; case 30: { return JetTokens.FLOAT_LITERAL; } - case 110: break; - case 32: + case 112: break; + case 34: { return JetTokens.EOL_COMMENT; } - case 111: break; - case 77: + case 113: break; + case 79: { return JetTokens.WHEN_KEYWORD ; } - case 112: break; - case 17: + case 114: break; + case 18: { return JetTokens.COLON ; } - case 113: break; - case 52: + case 115: break; + case 54: { return JetTokens.LTEQ ; } - case 114: break; - case 41: + case 116: break; + case 43: { return JetTokens.ARROW ; } - case 115: break; - case 19: + case 117: break; + case 20: { return JetTokens.LBRACKET ; } - case 116: break; - case 59: + case 118: break; + case 61: { yypushback(2); return JetTokens.INTEGER_LITERAL; } - case 117: break; - case 9: + case 119: break; + case 10: { return JetTokens.CHARACTER_LITERAL; } - case 118: break; - case 66: + case 120: break; + case 68: { return JetTokens.VAR_KEYWORD ; } - case 119: break; - case 53: + case 121: break; + case 55: { return JetTokens.GTEQ ; } - case 120: break; + case 122: break; case 2: { return JetTokens.INTEGER_LITERAL; } - case 121: break; - case 22: + case 123: break; + case 23: { return JetTokens.RBRACE ; } - case 122: break; - case 79: + case 124: break; + case 81: { return JetTokens.CLASS_KEYWORD ; } - case 123: break; - case 12: + case 125: break; + case 13: { return JetTokens.EXCL ; } - case 124: break; - case 63: + case 126: break; + case 65: { return JetTokens.TRY_KEYWORD ; } - case 125: break; - case 49: + case 127: break; + case 51: { return JetTokens.EXCLEQ ; } - case 126: break; - case 40: + case 128: break; + case 42: { return JetTokens.MINUSEQ ; } - case 127: break; - case 80: + case 129: break; + case 82: { return JetTokens.THROW_KEYWORD ; } - case 128: break; - case 83: + case 130: break; + case 85: { return JetTokens.WHILE_KEYWORD ; } - case 129: break; - case 39: + case 131: break; + case 41: { return JetTokens.MINUSMINUS; } - case 130: break; - case 87: + case 132: break; + case 89: { return JetTokens.CONTINUE_KEYWORD ; } - case 131: break; - case 69: - { return JetTokens.NOT_IN; - } - case 132: break; - case 5: - { return JetTokens.DIV ; - } case 133: break; - case 57: - { return JetTokens.ELVIS ; + case 33: + { return JetTokens.ATAT ; } case 134: break; - case 16: - { return JetTokens.QUEST ; + case 71: + { return JetTokens.NOT_IN; } case 135: break; - case 55: - { return JetTokens.OROR ; + case 6: + { return JetTokens.DIV ; } case 136: break; - case 18: - { return JetTokens.PERC ; + case 59: + { return JetTokens.ELVIS ; } case 137: break; - case 71: - { return JetTokens.EXCLEQEQEQ; + case 32: + { return JetTokens.LABEL_IDENTIFIER; } case 138: break; - case 58: - { return JetTokens.PERCEQ ; + case 17: + { return JetTokens.QUEST ; } case 139: break; - case 37: - { return JetTokens.RANGE ; + case 57: + { return JetTokens.OROR ; } case 140: break; + case 19: + { return JetTokens.PERC ; + } + case 141: break; + case 73: + { return JetTokens.EXCLEQEQEQ; + } + case 142: break; + case 60: + { return JetTokens.PERCEQ ; + } + case 143: break; + case 39: + { return JetTokens.RANGE ; + } + case 144: break; case 1: { return TokenType.BAD_CHARACTER; } - case 141: break; - case 56: + case 145: break; + case 58: { return JetTokens.SAFE_ACCESS; } - case 142: break; - case 88: + case 146: break; + case 90: { return JetTokens.NAMESPACE_KEYWORD ; } - case 143: break; - case 70: - { return JetTokens.NOT_IS; - } - case 144: break; - case 6: - { return JetTokens.MUL ; - } - case 145: break; - case 20: - { return JetTokens.RBRACKET ; - } - case 146: break; - case 51: - { return JetTokens.PLUSPLUS ; - } case 147: break; - case 76: - { return JetTokens.THIS_KEYWORD ; + case 72: + { return JetTokens.NOT_IS; } case 148: break; case 7: - { return JetTokens.DOT ; + { return JetTokens.MUL ; } case 149: break; - case 25: - { return JetTokens.SEMICOLON ; + case 21: + { return JetTokens.RBRACKET ; } case 150: break; - case 45: - { return JetTokens.IF_KEYWORD ; + case 53: + { return JetTokens.PLUSPLUS ; } case 151: break; - case 11: - { return JetTokens.EQ ; + case 78: + { return JetTokens.THIS_KEYWORD ; } case 152: break; - case 28: - { return JetTokens.AT ; + case 8: + { return JetTokens.DOT ; } case 153: break; - case 23: - { return JetTokens.LPAR ; + case 26: + { return JetTokens.SEMICOLON ; } case 154: break; - case 8: - { return JetTokens.MINUS ; + case 47: + { return JetTokens.IF_KEYWORD ; } case 155: break; - case 81: - { return JetTokens.FALSE_KEYWORD ; + case 12: + { return JetTokens.EQ ; } case 156: break; - case 75: - { return JetTokens.TYPE_KEYWORD ; + case 5: + { return JetTokens.AT ; } case 157: break; - case 65: - { return JetTokens.FUN_KEYWORD ; + case 24: + { return JetTokens.LPAR ; } case 158: break; - case 44: - { return JetTokens.IS_KEYWORD ; + case 9: + { return JetTokens.MINUS ; } case 159: break; - case 34: - { return JetTokens.DIVEQ ; + case 83: + { return JetTokens.FALSE_KEYWORD ; } case 160: break; - case 89: - { return JetTokens.EXTENSION_KEYWORD ; + case 77: + { return JetTokens.TYPE_KEYWORD ; } case 161: break; - case 73: - { return JetTokens.ELSE_KEYWORD ; + case 67: + { return JetTokens.FUN_KEYWORD ; } case 162: break; - case 42: - { return JetTokens.AS_KEYWORD ; + case 46: + { return JetTokens.IS_KEYWORD ; } case 163: break; - case 43: - { return JetTokens.IN_KEYWORD ; + case 36: + { return JetTokens.DIVEQ ; } case 164: break; - case 47: - { return JetTokens.EQEQ ; + case 91: + { return JetTokens.EXTENSION_KEYWORD ; } case 165: break; - case 67: - { return JetTokens.VAL_KEYWORD ; + case 75: + { return JetTokens.ELSE_KEYWORD ; } case 166: break; - case 68: - { return JetTokens.EQEQEQ ; + case 44: + { return JetTokens.AS_KEYWORD ; } case 167: break; - case 78: - { return JetTokens.CAPITALIZED_THIS_KEYWORD ; + case 45: + { return JetTokens.IN_KEYWORD ; } case 168: break; - case 62: - { return JetTokens.NEW_KEYWORD ; + case 49: + { return JetTokens.EQEQ ; } case 169: break; - case 35: - { return JetTokens.MULTEQ ; + case 69: + { return JetTokens.VAL_KEYWORD ; } case 170: break; - case 10: - { return JetTokens.STRING_LITERAL; + case 70: + { return JetTokens.EQEQEQ ; } case 171: break; - case 21: - { return JetTokens.LBRACE ; + case 80: + { return JetTokens.CAPITALIZED_THIS_KEYWORD ; } case 172: break; - case 85: - { return JetTokens.OBJECT_KEYWORD ; + case 64: + { return JetTokens.NEW_KEYWORD ; } case 173: break; - case 82: - { return JetTokens.BREAK_KEYWORD ; + case 37: + { return JetTokens.MULTEQ ; } case 174: break; - case 33: - { return JetTokens.BLOCK_COMMENT; + case 11: + { return JetTokens.STRING_LITERAL; } case 175: break; - case 38: - { return JetTokens.FILTER ; + case 22: + { return JetTokens.LBRACE ; } case 176: break; - case 27: - { return JetTokens.HASH ; + case 87: + { return JetTokens.OBJECT_KEYWORD ; } case 177: break; - case 36: - { return JetTokens.MAP ; + case 84: + { return JetTokens.BREAK_KEYWORD ; } case 178: break; + case 35: + { return JetTokens.BLOCK_COMMENT; + } + case 179: break; + case 40: + { return JetTokens.FILTER ; + } + case 180: break; + case 28: + { return JetTokens.HASH ; + } + case 181: break; + case 38: + { return JetTokens.MAP ; + } + case 182: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; diff --git a/idea/testData/psi/ControlStructures.jet b/idea/testData/psi/ControlStructures.jet index 093b2c10a6e..82abdd79e20 100644 --- a/idea/testData/psi/ControlStructures.jet +++ b/idea/testData/psi/ControlStructures.jet @@ -3,9 +3,9 @@ fun a( a : foo = throw new Foo, a : foo = return 10, a : foo = break, - a : foo = break "la", + a : foo = break @la, a : foo = continue, - a : foo = continue "la", + a : foo = continue @la, a : foo = if (10) foo else bar, a : foo = if (10) foo ) { @@ -13,11 +13,11 @@ fun a( return 10 break - "la" - break "la" + @la + break @la continue - "la" - continue "la" + @la + continue @la if (foo) if (foo) bar diff --git a/idea/testData/psi/ControlStructures.txt b/idea/testData/psi/ControlStructures.txt index 332afae7ceb..324d58bf8d7 100644 --- a/idea/testData/psi/ControlStructures.txt +++ b/idea/testData/psi/ControlStructures.txt @@ -83,7 +83,7 @@ JetFile: ControlStructures.jet BREAK PsiElement(break)('break') PsiWhiteSpace(' ') - PsiElement(STRING_LITERAL)('"la"') + PsiElement(LABEL_IDENTIFIER)('@la') PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER @@ -117,7 +117,7 @@ JetFile: ControlStructures.jet CONTINUE PsiElement(continue)('continue') PsiWhiteSpace(' ') - PsiElement(STRING_LITERAL)('"la"') + PsiElement(LABEL_IDENTIFIER)('@la') PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER @@ -197,24 +197,24 @@ JetFile: ControlStructures.jet BREAK PsiElement(break)('break') PsiWhiteSpace('\n ') - STRING_CONSTANT - PsiElement(STRING_LITERAL)('"la"') - PsiWhiteSpace('\n ') - BREAK - PsiElement(break)('break') - PsiWhiteSpace(' ') - PsiElement(STRING_LITERAL)('"la"') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@la') + PsiWhiteSpace('\n ') + BREAK + PsiElement(break)('break') + PsiWhiteSpace(' ') + PsiElement(LABEL_IDENTIFIER)('@la') PsiWhiteSpace('\n ') CONTINUE PsiElement(continue)('continue') PsiWhiteSpace('\n ') - STRING_CONSTANT - PsiElement(STRING_LITERAL)('"la"') - PsiWhiteSpace('\n ') - CONTINUE - PsiElement(continue)('continue') - PsiWhiteSpace(' ') - PsiElement(STRING_LITERAL)('"la"') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@la') + PsiWhiteSpace('\n ') + CONTINUE + PsiElement(continue)('continue') + PsiWhiteSpace(' ') + PsiElement(LABEL_IDENTIFIER)('@la') PsiWhiteSpace('\n ') IF PsiElement(if)('if') diff --git a/idea/testData/psi/Labels.jet b/idea/testData/psi/Labels.jet new file mode 100644 index 00000000000..57f1eb85da4 --- /dev/null +++ b/idea/testData/psi/Labels.jet @@ -0,0 +1,60 @@ +fun foo() { + return + return 1 + return (@a 1) + + return@ + return@ 1 + return@ (@ 1) + return@ @ 1 + + return@a + return@a 1 + return@a (@a 1) + return@a @a 1 + + return@@ + return@@ 1 + return@@ (@@ 1) + return@@ @@ 1 + + @a return@@ + @a return@@ 1 + @a return@@ (@@ 1) + @a return@@ @@ 1 + + break + break@ + break@a + break@@ + + continue + continue@ + continue@a + continue@@ + + a.filter @f{ + if (1) return + return@f true + } + + a.filter @{ + if (1) return + return@ true + } + + a.filter @@{ + if (1) return + return@@ true + } + + this + this@ + this@a + this@@ + + this + this@ + this@a + this@@ +} \ No newline at end of file diff --git a/idea/testData/psi/Labels.txt b/idea/testData/psi/Labels.txt new file mode 100644 index 00000000000..5ea02f555d8 --- /dev/null +++ b/idea/testData/psi/Labels.txt @@ -0,0 +1,377 @@ +JetFile: Labels.jet + NAMESPACE + FUN + PsiElement(fun)('fun') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + TYPE_PARAMETER_LIST + + VALUE_PARAMETER_LIST + PsiElement(LPAR)('(') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + BLOCK + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiWhiteSpace(' ') + PARENTHESIZED + PsiElement(LPAR)('(') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiElement(RPAR)(')') + PsiWhiteSpace('\n\n ') + RETURN + PsiElement(return)('return') + PsiElement(AT)('@') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(AT)('@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(AT)('@') + PsiWhiteSpace(' ') + PARENTHESIZED + PsiElement(LPAR)('(') + PREFIX_EXPRESSION + PsiElement(AT)('@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiElement(RPAR)(')') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(AT)('@') + PsiWhiteSpace(' ') + PREFIX_EXPRESSION + PsiElement(AT)('@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n\n ') + RETURN + PsiElement(return)('return') + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + PARENTHESIZED + PsiElement(LPAR)('(') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiElement(RPAR)(')') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n\n ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + PARENTHESIZED + PsiElement(LPAR)('(') + PREFIX_EXPRESSION + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiElement(RPAR)(')') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + PREFIX_EXPRESSION + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n\n ') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace('\n ') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n ') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + PARENTHESIZED + PsiElement(LPAR)('(') + PREFIX_EXPRESSION + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiElement(RPAR)(')') + PsiWhiteSpace('\n ') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace(' ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + PREFIX_EXPRESSION + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n\n ') + BREAK + PsiElement(break)('break') + PsiWhiteSpace('\n ') + BREAK + PsiElement(break)('break') + PsiElement(AT)('@') + PsiWhiteSpace('\n ') + BREAK + PsiElement(break)('break') + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace('\n ') + BREAK + PsiElement(break)('break') + PsiElement(ATAT)('@@') + PsiWhiteSpace('\n\n ') + CONTINUE + PsiElement(continue)('continue') + PsiWhiteSpace('\n ') + CONTINUE + PsiElement(continue)('continue') + PsiElement(AT)('@') + PsiWhiteSpace('\n ') + CONTINUE + PsiElement(continue)('continue') + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace('\n ') + CONTINUE + PsiElement(continue)('continue') + PsiElement(ATAT)('@@') + PsiWhiteSpace('\n\n ') + CALL_EXPRESSION + DOT_QIALIFIED_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('a') + PsiElement(DOT)('.') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('filter') + PsiWhiteSpace(' ') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@f') + FUNCTION_LITERAL + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n ') + BODY + IF + PsiElement(if)('if') + PsiWhiteSpace(' ') + PsiElement(LPAR)('(') + CONDITION + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + THEN + RETURN + PsiElement(return)('return') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(LABEL_IDENTIFIER)('@f') + PsiWhiteSpace(' ') + BOOLEAN_CONSTANT + PsiElement(true)('true') + PsiWhiteSpace('\n ') + PsiElement(RBRACE)('}') + PsiWhiteSpace('\n\n ') + CALL_EXPRESSION + DOT_QIALIFIED_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('a') + PsiElement(DOT)('.') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('filter') + PsiWhiteSpace(' ') + PREFIX_EXPRESSION + PsiElement(AT)('@') + FUNCTION_LITERAL + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n ') + BODY + IF + PsiElement(if)('if') + PsiWhiteSpace(' ') + PsiElement(LPAR)('(') + CONDITION + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + THEN + RETURN + PsiElement(return)('return') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(AT)('@') + PsiWhiteSpace(' ') + BOOLEAN_CONSTANT + PsiElement(true)('true') + PsiWhiteSpace('\n ') + PsiElement(RBRACE)('}') + PsiWhiteSpace('\n\n ') + CALL_EXPRESSION + DOT_QIALIFIED_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('a') + PsiElement(DOT)('.') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('filter') + PsiWhiteSpace(' ') + PREFIX_EXPRESSION + PsiElement(ATAT)('@@') + FUNCTION_LITERAL + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n ') + BODY + IF + PsiElement(if)('if') + PsiWhiteSpace(' ') + PsiElement(LPAR)('(') + CONDITION + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + THEN + RETURN + PsiElement(return)('return') + PsiWhiteSpace('\n ') + RETURN + PsiElement(return)('return') + PsiElement(ATAT)('@@') + PsiWhiteSpace(' ') + BOOLEAN_CONSTANT + PsiElement(true)('true') + PsiWhiteSpace('\n ') + PsiElement(RBRACE)('}') + PsiWhiteSpace('\n\n ') + THIS_EXPRESSION + PsiElement(this)('this') + PsiWhiteSpace('\n ') + THIS_EXPRESSION + PsiElement(this)('this') + PsiElement(AT)('@') + PsiWhiteSpace('\n ') + THIS_EXPRESSION + PsiElement(this)('this') + PsiElement(LABEL_IDENTIFIER)('@a') + PsiWhiteSpace('\n ') + THIS_EXPRESSION + PsiElement(this)('this') + PsiElement(ATAT)('@@') + PsiWhiteSpace('\n\n ') + THIS_EXPRESSION + PsiElement(this)('this') + PsiElement(LT)('<') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('A') + PsiElement(GT)('>') + PsiWhiteSpace('\n ') + THIS_EXPRESSION + PsiElement(this)('this') + PsiElement(AT)('@') + PsiElement(LT)('<') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('A') + PsiElement(GT)('>') + PsiWhiteSpace('\n ') + THIS_EXPRESSION + PsiElement(this)('this') + PsiElement(LABEL_IDENTIFIER)('@a') + PsiElement(LT)('<') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('A') + PsiElement(GT)('>') + PsiWhiteSpace('\n ') + THIS_EXPRESSION + PsiElement(this)('this') + PsiElement(ATAT)('@@') + PsiElement(LT)('<') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('A') + PsiElement(GT)('>') + PsiWhiteSpace('\n') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/idea/testData/psi/SimpleExpressions.jet b/idea/testData/psi/SimpleExpressions.jet index 0cd377e6a62..db877d3764f 100644 --- a/idea/testData/psi/SimpleExpressions.jet +++ b/idea/testData/psi/SimpleExpressions.jet @@ -27,9 +27,9 @@ fun a( a : foo = throw new Foo, a : foo = return 10, a : foo = break, - a : foo = break "la", + a : foo = break @la, a : foo = continue, - a : foo = continue "la", + a : foo = continue @la, a : foo = 10, a : foo = 10, a : foo = 10, @@ -39,9 +39,9 @@ fun a( return 10 break - "la" - break "la" + @la + break @la continue - "la" - continue "la" + @la + continue @la } \ No newline at end of file diff --git a/idea/testData/psi/SimpleExpressions.txt b/idea/testData/psi/SimpleExpressions.txt index 6f2d562f236..09a374f8af5 100644 --- a/idea/testData/psi/SimpleExpressions.txt +++ b/idea/testData/psi/SimpleExpressions.txt @@ -550,7 +550,7 @@ JetFile: SimpleExpressions.jet BREAK PsiElement(break)('break') PsiWhiteSpace(' ') - PsiElement(STRING_LITERAL)('"la"') + PsiElement(LABEL_IDENTIFIER)('@la') PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER @@ -584,7 +584,7 @@ JetFile: SimpleExpressions.jet CONTINUE PsiElement(continue)('continue') PsiWhiteSpace(' ') - PsiElement(STRING_LITERAL)('"la"') + PsiElement(LABEL_IDENTIFIER)('@la') PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER @@ -670,23 +670,23 @@ JetFile: SimpleExpressions.jet BREAK PsiElement(break)('break') PsiWhiteSpace('\n ') - STRING_CONSTANT - PsiElement(STRING_LITERAL)('"la"') - PsiWhiteSpace('\n ') - BREAK - PsiElement(break)('break') - PsiWhiteSpace(' ') - PsiElement(STRING_LITERAL)('"la"') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@la') + PsiWhiteSpace('\n ') + BREAK + PsiElement(break)('break') + PsiWhiteSpace(' ') + PsiElement(LABEL_IDENTIFIER)('@la') PsiWhiteSpace('\n ') CONTINUE PsiElement(continue)('continue') PsiWhiteSpace('\n ') - STRING_CONSTANT - PsiElement(STRING_LITERAL)('"la"') - PsiWhiteSpace('\n ') - CONTINUE - PsiElement(continue)('continue') - PsiWhiteSpace(' ') - PsiElement(STRING_LITERAL)('"la"') + PREFIX_EXPRESSION + PsiElement(LABEL_IDENTIFIER)('@la') + PsiWhiteSpace('\n ') + CONTINUE + PsiElement(continue)('continue') + PsiWhiteSpace(' ') + PsiElement(LABEL_IDENTIFIER)('@la') PsiWhiteSpace('\n') PsiElement(RBRACE)('}') \ No newline at end of file