KT-1385 support multi line strings with templates

This commit is contained in:
Andrey Breslav
2012-02-24 14:25:12 +04:00
parent 565aea36d9
commit f049d27fa3
13 changed files with 460 additions and 400 deletions
@@ -87,7 +87,6 @@ public interface JetNodeTypes {
JetNodeType BOOLEAN_CONSTANT = new JetNodeType("BOOLEAN_CONSTANT", JetConstantExpression.class); JetNodeType BOOLEAN_CONSTANT = new JetNodeType("BOOLEAN_CONSTANT", JetConstantExpression.class);
JetNodeType FLOAT_CONSTANT = new JetNodeType("FLOAT_CONSTANT", JetConstantExpression.class); JetNodeType FLOAT_CONSTANT = new JetNodeType("FLOAT_CONSTANT", JetConstantExpression.class);
JetNodeType CHARACTER_CONSTANT = new JetNodeType("CHARACTER_CONSTANT", JetConstantExpression.class); JetNodeType CHARACTER_CONSTANT = new JetNodeType("CHARACTER_CONSTANT", JetConstantExpression.class);
JetNodeType RAW_STRING_CONSTANT = new JetNodeType("STRING_CONSTANT", JetConstantExpression.class);
JetNodeType INTEGER_CONSTANT = new JetNodeType("INTEGER_CONSTANT", JetConstantExpression.class); JetNodeType INTEGER_CONSTANT = new JetNodeType("INTEGER_CONSTANT", JetConstantExpression.class);
JetNodeType STRING_TEMPLATE = new JetNodeType("STRING_TEMPLATE", JetStringTemplateExpression.class); JetNodeType STRING_TEMPLATE = new JetNodeType("STRING_TEMPLATE", JetStringTemplateExpression.class);
@@ -48,7 +48,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
} }
private static final TokenSet TYPE_ARGUMENT_LIST_STOPPERS = TokenSet.create( private static final TokenSet TYPE_ARGUMENT_LIST_STOPPERS = TokenSet.create(
INTEGER_LITERAL, FLOAT_LITERAL, CHARACTER_LITERAL, OPEN_QUOTE, RAW_STRING_LITERAL, INTEGER_LITERAL, FLOAT_LITERAL, CHARACTER_LITERAL, OPEN_QUOTE,
PACKAGE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, TRAIT_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, PACKAGE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, TRAIT_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD,
FUN_KEYWORD, FOR_KEYWORD, NULL_KEYWORD, FUN_KEYWORD, FOR_KEYWORD, NULL_KEYWORD,
TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD,
@@ -70,7 +70,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
// literal constant // literal constant
TRUE_KEYWORD, FALSE_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD,
OPEN_QUOTE, RAW_STRING_LITERAL, OPEN_QUOTE,
INTEGER_LITERAL, CHARACTER_LITERAL, FLOAT_LITERAL, INTEGER_LITERAL, CHARACTER_LITERAL, FLOAT_LITERAL,
NULL_KEYWORD, NULL_KEYWORD,
@@ -701,9 +701,6 @@ public class JetExpressionParsing extends AbstractJetParsing {
if (at(TRUE_KEYWORD) || at(FALSE_KEYWORD)) { if (at(TRUE_KEYWORD) || at(FALSE_KEYWORD)) {
parseOneTokenExpression(BOOLEAN_CONSTANT); parseOneTokenExpression(BOOLEAN_CONSTANT);
} }
else if (at(RAW_STRING_LITERAL)) {
parseOneTokenExpression(RAW_STRING_CONSTANT);
}
else if (at(INTEGER_LITERAL)) { else if (at(INTEGER_LITERAL)) {
parseOneTokenExpression(INTEGER_CONSTANT); parseOneTokenExpression(INTEGER_CONSTANT);
} }
@@ -161,9 +161,6 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
else if (elementType == JetNodeTypes.CHARACTER_CONSTANT) { else if (elementType == JetNodeTypes.CHARACTER_CONSTANT) {
value = compileTimeConstantResolver.getCharValue(text, context.expectedType); value = compileTimeConstantResolver.getCharValue(text, context.expectedType);
} }
else if (elementType == JetNodeTypes.RAW_STRING_CONSTANT) {
value = compileTimeConstantResolver.getRawStringValue(text, context.expectedType);
}
else if (elementType == JetNodeTypes.NULL) { else if (elementType == JetNodeTypes.NULL) {
value = compileTimeConstantResolver.getNullValue(context.expectedType); value = compileTimeConstantResolver.getNullValue(context.expectedType);
} }
@@ -111,9 +111,6 @@ public class ExpressionTypingUtils {
else if (constantType == JetNodeTypes.CHARACTER_CONSTANT) { else if (constantType == JetNodeTypes.CHARACTER_CONSTANT) {
return semanticServices.getStandardLibrary().getCharType(); return semanticServices.getStandardLibrary().getCharType();
} }
else if (constantType == JetNodeTypes.RAW_STRING_CONSTANT) {
return semanticServices.getStandardLibrary().getStringType();
}
else if (constantType == JetNodeTypes.NULL) { else if (constantType == JetNodeTypes.NULL) {
return JetStandardClasses.getNullableNothingType(); return JetStandardClasses.getNullableNothingType();
} }
@@ -45,7 +45,7 @@ import org.jetbrains.jet.lexer.JetTokens;
%eof{ return; %eof{ return;
%eof} %eof}
%xstate STRING SHORT_TEMPLATE_ENTRY %xstate STRING RAW_STRING SHORT_TEMPLATE_ENTRY
%state LONG_TEMPLATE_ENTRY %state LONG_TEMPLATE_ENTRY
DIGIT=[0-9] DIGIT=[0-9]
@@ -110,25 +110,31 @@ LONG_TEMPLATE_ENTRY_END=\}
// String templates // String templates
\" { pushState(STRING); return JetTokens.OPEN_QUOTE; } {THREE_QUO} { pushState(RAW_STRING); return JetTokens.OPEN_QUOTE; }
<RAW_STRING> \n { return JetTokens.REGULAR_STRING_PART; }
<RAW_STRING> \" { return JetTokens.REGULAR_STRING_PART; }
<RAW_STRING> \\ { return JetTokens.REGULAR_STRING_PART; }
<RAW_STRING> {THREE_QUO} { popState(); return JetTokens.CLOSING_QUOTE; }
<STRING> \" { popState(); return JetTokens.CLOSING_QUOTE; } \" { pushState(STRING); return JetTokens.OPEN_QUOTE; }
<STRING> \n { popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE; } <STRING> \n { popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE; }
<STRING> {REGULAR_STRING_PART} { return JetTokens.REGULAR_STRING_PART; } <STRING> \" { popState(); return JetTokens.CLOSING_QUOTE; }
<STRING> {ESCAPE_SEQUENCE} { return JetTokens.ESCAPE_SEQUENCE; } <STRING> {ESCAPE_SEQUENCE} { return JetTokens.ESCAPE_SEQUENCE; }
<STRING> {SHORT_TEMPLATE_ENTRY} {
pushState(SHORT_TEMPLATE_ENTRY); <STRING, RAW_STRING> {REGULAR_STRING_PART} { return JetTokens.REGULAR_STRING_PART; }
yypushback(yylength() - 1); <STRING, RAW_STRING> {SHORT_TEMPLATE_ENTRY} {
return JetTokens.SHORT_TEMPLATE_ENTRY_START; pushState(SHORT_TEMPLATE_ENTRY);
} yypushback(yylength() - 1);
return JetTokens.SHORT_TEMPLATE_ENTRY_START;
}
// Only *this* keyword is itself an expression valid in this position // Only *this* keyword is itself an expression valid in this position
// *null*, *true* and *false* are also keywords and expression, but it does not make sense to put them // *null*, *true* and *false* are also keywords and expression, but it does not make sense to put them
// in a string template for it'd be easier to just type them in without a dollar // in a string template for it'd be easier to just type them in without a dollar
<SHORT_TEMPLATE_ENTRY> "this" { popState(); return JetTokens.THIS_KEYWORD; } <SHORT_TEMPLATE_ENTRY> "this" { popState(); return JetTokens.THIS_KEYWORD; }
<SHORT_TEMPLATE_ENTRY> {IDENTIFIER} { popState(); return JetTokens.IDENTIFIER; } <SHORT_TEMPLATE_ENTRY> {IDENTIFIER} { popState(); return JetTokens.IDENTIFIER; }
<STRING> {LONELY_DOLLAR} { return JetTokens.REGULAR_STRING_PART; } <STRING, RAW_STRING> {LONELY_DOLLAR} { return JetTokens.REGULAR_STRING_PART; }
<STRING> {LONG_TEMPLATE_ENTRY_START} { pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START; } <STRING, RAW_STRING> {LONG_TEMPLATE_ENTRY_START} { pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START; }
<LONG_TEMPLATE_ENTRY> "{" { lBraceCount++; return JetTokens.LBRACE; } <LONG_TEMPLATE_ENTRY> "{" { lBraceCount++; return JetTokens.LBRACE; }
<LONG_TEMPLATE_ENTRY> "}" { <LONG_TEMPLATE_ENTRY> "}" {
@@ -158,9 +164,6 @@ LONG_TEMPLATE_ENTRY_END=\}
{CHARACTER_LITERAL} { return JetTokens.CHARACTER_LITERAL; } {CHARACTER_LITERAL} { return JetTokens.CHARACTER_LITERAL; }
//{STRING_LITERAL} { return JetTokens.STRING_LITERAL; } //{STRING_LITERAL} { return JetTokens.STRING_LITERAL; }
// TODO: Decide what to do with """ ... """"
{RAW_STRING_LITERAL} { return JetTokens.RAW_STRING_LITERAL; }
"continue" { return JetTokens.CONTINUE_KEYWORD ;} "continue" { return JetTokens.CONTINUE_KEYWORD ;}
"package" { return JetTokens.PACKAGE_KEYWORD ;} "package" { return JetTokens.PACKAGE_KEYWORD ;}
"return" { return JetTokens.RETURN_KEYWORD ;} "return" { return JetTokens.RETURN_KEYWORD ;}
@@ -45,8 +45,6 @@ public interface JetTokens {
JetToken LONG_TEMPLATE_ENTRY_END = new JetToken("LONG_TEMPLATE_ENTRY_END"); JetToken LONG_TEMPLATE_ENTRY_END = new JetToken("LONG_TEMPLATE_ENTRY_END");
JetToken DANGLING_NEWLINE = new JetToken("DANGLING_NEWLINE"); JetToken DANGLING_NEWLINE = new JetToken("DANGLING_NEWLINE");
JetToken RAW_STRING_LITERAL = new JetToken("RAW_STRING_LITERAL");
JetKeywordToken PACKAGE_KEYWORD = JetKeywordToken.keyword("package"); JetKeywordToken PACKAGE_KEYWORD = JetKeywordToken.keyword("package");
JetKeywordToken AS_KEYWORD = JetKeywordToken.keyword("as"); JetKeywordToken AS_KEYWORD = JetKeywordToken.keyword("as");
JetKeywordToken TYPE_KEYWORD = JetKeywordToken.keyword("type"); JetKeywordToken TYPE_KEYWORD = JetKeywordToken.keyword("type");
@@ -185,7 +183,7 @@ public interface JetTokens {
TokenSet WHITESPACES = TokenSet.create(TokenType.WHITE_SPACE); TokenSet WHITESPACES = TokenSet.create(TokenType.WHITE_SPACE);
TokenSet COMMENTS = TokenSet.create(EOL_COMMENT, BLOCK_COMMENT, DOC_COMMENT); TokenSet COMMENTS = TokenSet.create(EOL_COMMENT, BLOCK_COMMENT, DOC_COMMENT);
TokenSet STRINGS = TokenSet.create(CHARACTER_LITERAL, REGULAR_STRING_PART, RAW_STRING_LITERAL); TokenSet STRINGS = TokenSet.create(CHARACTER_LITERAL, REGULAR_STRING_PART);
TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, AS_SAFE, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS, TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, AS_SAFE, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS,
MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR,
SAFE_ACCESS, ELVIS, SAFE_ACCESS, ELVIS,
@@ -1,35 +1,20 @@
/* /* The following code was generated by JFlex 1.4.3 on 2/24/12 1:22 PM */
* Copyright 2010-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* The following code was generated by JFlex 1.4.3 on 1/31/12 3:47 PM */
package org.jetbrains.jet.lexer; package org.jetbrains.jet.lexer;
import com.intellij.lexer.FlexLexer; import java.util.*;
import com.intellij.psi.TokenType; import com.intellij.lexer.*;
import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.IElementType;
import java.util.Stack; import org.jetbrains.jet.lexer.JetTokens;
/** /**
* This class is a scanner generated by * This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3 * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 1/31/12 3:47 PM from the specification file * on 2/24/12 1:22 PM from the specification file
* <tt>/home/geevee/jet/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt> * <tt>/Users/abreslav/work/jet/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
*/ */
class _JetLexer implements FlexLexer { class _JetLexer implements FlexLexer {
/** initial size of the lookahead buffer */ /** initial size of the lookahead buffer */
@@ -38,8 +23,9 @@ class _JetLexer implements FlexLexer {
/** lexical states */ /** lexical states */
public static final int STRING = 2; public static final int STRING = 2;
public static final int YYINITIAL = 0; public static final int YYINITIAL = 0;
public static final int LONG_TEMPLATE_ENTRY = 6; public static final int LONG_TEMPLATE_ENTRY = 8;
public static final int SHORT_TEMPLATE_ENTRY = 4; public static final int RAW_STRING = 4;
public static final int SHORT_TEMPLATE_ENTRY = 6;
/** /**
* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
@@ -48,7 +34,7 @@ class _JetLexer implements FlexLexer {
* l is of the form l = 2*k, k a non negative integer * l is of the form l = 2*k, k a non negative integer
*/ */
private static final int ZZ_LEXSTATE[] = { private static final int ZZ_LEXSTATE[] = {
0, 0, 1, 1, 2, 2, 3, 3 0, 0, 1, 1, 2, 2, 3, 3, 4, 4
}; };
/** /**
@@ -134,29 +120,29 @@ class _JetLexer implements FlexLexer {
private static final int [] ZZ_ACTION = zzUnpackAction(); private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 = private static final String ZZ_ACTION_PACKED_0 =
"\4\0\1\1\1\2\1\3\1\4\2\1\1\5\1\6"+ "\5\0\1\1\1\2\1\3\1\4\2\1\1\5\1\6"+
"\1\7\1\2\1\10\1\11\1\12\1\13\1\14\1\15"+ "\1\7\1\2\1\10\1\11\1\12\1\13\1\14\1\15"+
"\20\3\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+ "\20\3\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+
"\2\1\1\25\1\26\1\27\1\30\1\31\1\32\1\33"+ "\2\1\1\25\1\26\1\27\1\30\1\31\1\32\1\33"+
"\1\34\1\35\1\36\1\35\1\0\1\37\1\40\1\0"+ "\1\34\1\35\1\36\1\35\1\0\1\37\2\35\1\40"+
"\1\40\1\41\1\42\1\0\1\43\1\0\1\44\1\0"+ "\1\0\1\40\1\41\1\42\1\0\1\43\1\0\1\44"+
"\1\45\1\0\1\46\1\47\1\50\1\51\1\52\1\43"+ "\1\0\1\45\1\0\1\46\1\47\1\50\1\51\1\52"+
"\2\2\1\43\1\53\1\54\1\55\1\56\2\12\1\0"+ "\1\43\2\2\1\43\1\53\1\54\1\55\1\56\2\12"+
"\3\3\1\57\1\60\1\61\7\3\1\62\10\3\1\63"+ "\1\0\3\3\1\57\1\60\1\61\7\3\1\62\10\3"+
"\1\0\1\64\1\0\1\65\1\0\1\66\1\67\1\70"+ "\1\63\1\0\1\64\1\0\1\65\1\0\1\66\1\67"+
"\1\71\1\72\1\73\1\74\1\75\1\76\1\0\1\77"+ "\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\0"+
"\2\100\1\0\1\40\1\101\1\43\1\3\2\0\1\50"+ "\1\77\2\100\2\0\1\40\1\101\1\43\1\3\2\0"+
"\1\102\4\0\1\103\4\3\1\104\10\3\1\105\4\3"+ "\1\50\1\102\4\0\1\103\4\3\1\104\10\3\1\105"+
"\1\106\1\107\2\3\1\110\1\111\1\112\1\113\1\114"+ "\4\3\1\106\1\107\2\3\1\110\1\111\1\112\1\113"+
"\1\115\1\116\1\117\2\0\2\40\1\44\1\45\1\0"+ "\1\114\1\115\1\116\1\117\2\0\2\40\1\44\1\45"+
"\2\102\1\43\2\0\1\120\1\3\1\121\1\3\1\122"+ "\1\0\2\102\1\43\1\0\1\120\1\3\1\121\1\3"+
"\4\3\1\123\1\124\4\3\1\125\1\3\1\126\1\127"+ "\1\122\4\3\1\123\1\124\4\3\1\125\1\3\1\126"+
"\1\76\1\0\1\130\1\50\2\0\1\131\1\132\1\133"+ "\1\127\1\76\1\0\1\130\1\50\1\0\1\131\1\132"+
"\1\3\1\134\3\3\1\135\1\136\1\137\1\0\1\103"+ "\1\133\1\3\1\134\3\3\1\135\1\136\1\137\1\0"+
"\1\3\1\140\1\3\1\141\1\3\1\142\1\143"; "\1\3\1\140\1\3\1\141\1\3\1\142\1\143";
private static int [] zzUnpackAction() { private static int [] zzUnpackAction() {
int [] result = new int[228]; int [] result = new int[229];
int offset = 0; int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result; return result;
@@ -183,36 +169,36 @@ class _JetLexer implements FlexLexer {
private static final String ZZ_ROWMAP_PACKED_0 = private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\100\0\200\0\300\0\u0100\0\u0140\0\u0180\0\u01c0"+ "\0\0\0\100\0\200\0\300\0\u0100\0\u0140\0\u0180\0\u01c0"+
"\0\u0200\0\u0240\0\u0280\0\u02c0\0\u0300\0\u0340\0\u0380\0\u03c0"+ "\0\u0200\0\u0240\0\u0280\0\u02c0\0\u0300\0\u0340\0\u0380\0\u03c0"+
"\0\u0400\0\u0440\0\u0100\0\u0100\0\u0480\0\u04c0\0\u0500\0\u0540"+ "\0\u0400\0\u0440\0\u0480\0\u0140\0\u0140\0\u04c0\0\u0500\0\u0540"+
"\0\u0580\0\u05c0\0\u0600\0\u0640\0\u0680\0\u06c0\0\u0700\0\u0740"+ "\0\u0580\0\u05c0\0\u0600\0\u0640\0\u0680\0\u06c0\0\u0700\0\u0740"+
"\0\u0780\0\u07c0\0\u0800\0\u0840\0\u0880\0\u08c0\0\u0100\0\u0900"+ "\0\u0780\0\u07c0\0\u0800\0\u0840\0\u0880\0\u08c0\0\u0900\0\u0140"+
"\0\u0940\0\u0100\0\u0980\0\u09c0\0\u0a00\0\u0a40\0\u0100\0\u0100"+ "\0\u0940\0\u0980\0\u0140\0\u09c0\0\u0a00\0\u0a40\0\u0a80\0\u0140"+
"\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0a80\0\u0100\0\u0ac0"+ "\0\u0140\0\u0140\0\u0140\0\u0140\0\u0140\0\u0140\0\u0ac0\0\u0140"+
"\0\u0b00\0\u0100\0\u0b40\0\u0b80\0\u0bc0\0\u0100\0\u0100\0\u0c00"+ "\0\u0b00\0\u0b40\0\u0140\0\u0140\0\u0b80\0\u0bc0\0\u0c00\0\u0c40"+
"\0\u0c40\0\u0c80\0\u0cc0\0\u0d00\0\u0d40\0\u0d80\0\u0100\0\u0dc0"+ "\0\u0140\0\u0140\0\u0c80\0\u0cc0\0\u0d00\0\u0d40\0\u0d80\0\u0dc0"+
"\0\u0e00\0\u0100\0\u0100\0\u0e40\0\u0e80\0\u0ec0\0\u0f00\0\u0100"+ "\0\u0e00\0\u0140\0\u0e40\0\u0e80\0\u0140\0\u0140\0\u0ec0\0\u0f00"+
"\0\u0100\0\u0100\0\u0100\0\u0100\0\u0f40\0\u0f80\0\u0fc0\0\u1000"+ "\0\u0f40\0\u0f80\0\u0140\0\u0140\0\u0140\0\u0140\0\u0140\0\u0fc0"+
"\0\u1040\0\u0180\0\u0180\0\u0180\0\u1080\0\u10c0\0\u1100\0\u1140"+ "\0\u1000\0\u1040\0\u1080\0\u10c0\0\u01c0\0\u01c0\0\u01c0\0\u1100"+
"\0\u1180\0\u11c0\0\u1200\0\u1240\0\u1280\0\u12c0\0\u1300\0\u1340"+ "\0\u1140\0\u1180\0\u11c0\0\u1200\0\u1240\0\u1280\0\u12c0\0\u1300"+
"\0\u1380\0\u13c0\0\u1400\0\u1440\0\u0180\0\u1480\0\u14c0\0\u1500"+ "\0\u1340\0\u1380\0\u13c0\0\u1400\0\u1440\0\u1480\0\u14c0\0\u01c0"+
"\0\u0100\0\u1540\0\u0100\0\u0100\0\u1580\0\u0100\0\u0100\0\u0100"+ "\0\u1500\0\u1540\0\u1580\0\u0140\0\u15c0\0\u0140\0\u0140\0\u1600"+
"\0\u0100\0\u0100\0\u15c0\0\u1600\0\u0100\0\u0100\0\u1640\0\u1680"+ "\0\u0140\0\u0140\0\u0140\0\u0140\0\u0140\0\u1640\0\u1680\0\u0140"+
"\0\u16c0\0\u0100\0\u1700\0\u0100\0\u1740\0\u1780\0\u17c0\0\u1800"+ "\0\u0140\0\u16c0\0\u1700\0\u1740\0\u1780\0\u0140\0\u17c0\0\u0140"+
"\0\u1840\0\u1880\0\u18c0\0\u1900\0\u1940\0\u1980\0\u19c0\0\u1a00"+ "\0\u1800\0\u1840\0\u1880\0\u18c0\0\u1900\0\u1940\0\u1980\0\u19c0"+
"\0\u1a40\0\u0180\0\u1a80\0\u1ac0\0\u1b00\0\u1b40\0\u1b80\0\u1bc0"+ "\0\u0140\0\u1a00\0\u1a40\0\u1a80\0\u1ac0\0\u01c0\0\u1b00\0\u1b40"+
"\0\u1c00\0\u1c40\0\u0100\0\u1c80\0\u1cc0\0\u1d00\0\u1d40\0\u0180"+ "\0\u1b80\0\u1bc0\0\u1c00\0\u1c40\0\u1c80\0\u1cc0\0\u0140\0\u1d00"+
"\0\u0180\0\u1d80\0\u1dc0\0\u0180\0\u0180\0\u1e00\0\u1e00\0\u0100"+ "\0\u1d40\0\u1d80\0\u1dc0\0\u01c0\0\u01c0\0\u1e00\0\u1e40\0\u01c0"+
"\0\u0100\0\u0100\0\u0100\0\u1e40\0\u1e80\0\u0100\0\u1ec0\0\u0100"+ "\0\u01c0\0\u1e80\0\u1e80\0\u0140\0\u0140\0\u0140\0\u0140\0\u1ec0"+
"\0\u0100\0\u1f00\0\u1f40\0\u0100\0\u1f80\0\u1700\0\u1fc0\0\u0180"+ "\0\u1f00\0\u0140\0\u1f40\0\u0140\0\u0140\0\u1f80\0\u1fc0\0\u0140"+
"\0\u2000\0\u0180\0\u2040\0\u0180\0\u2080\0\u20c0\0\u2100\0\u2140"+ "\0\u2000\0\u17c0\0\u01c0\0\u2040\0\u01c0\0\u2080\0\u01c0\0\u20c0"+
"\0\u0180\0\u0180\0\u2180\0\u21c0\0\u2200\0\u2240\0\u0180\0\u2280"+ "\0\u2100\0\u2140\0\u2180\0\u01c0\0\u01c0\0\u21c0\0\u2200\0\u2240"+
"\0\u0180\0\u0100\0\u0100\0\u22c0\0\u0b40\0\u0100\0\u2300\0\u2340"+ "\0\u2280\0\u01c0\0\u22c0\0\u01c0\0\u0140\0\u0140\0\u2300\0\u0bc0"+
"\0\u0180\0\u0180\0\u0180\0\u2380\0\u0180\0\u23c0\0\u2400\0\u2440"+ "\0\u0140\0\u2340\0\u01c0\0\u01c0\0\u01c0\0\u2380\0\u01c0\0\u23c0"+
"\0\u0180\0\u0180\0\u0180\0\u2480\0\u0100\0\u24c0\0\u0180\0\u2500"+ "\0\u2400\0\u2440\0\u01c0\0\u01c0\0\u01c0\0\u2480\0\u24c0\0\u01c0"+
"\0\u0180\0\u2540\0\u0180\0\u0180"; "\0\u2500\0\u01c0\0\u2540\0\u01c0\0\u01c0";
private static int [] zzUnpackRowMap() { private static int [] zzUnpackRowMap() {
int [] result = new int[228]; int [] result = new int[229];
int offset = 0; int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result; return result;
@@ -235,239 +221,239 @@ class _JetLexer implements FlexLexer {
private static final int [] ZZ_TRANS = zzUnpackTrans(); private static final int [] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 = private static final String ZZ_TRANS_PACKED_0 =
"\1\5\1\6\1\7\1\10\1\7\1\5\1\11\1\10"+ "\1\6\1\7\1\10\1\11\1\10\1\6\1\12\1\11"+
"\1\12\1\13\1\14\1\15\1\16\2\7\1\17\1\7"+ "\1\13\1\14\1\15\1\16\1\17\2\10\1\20\1\10"+
"\1\20\1\7\1\21\1\5\1\22\1\7\1\23\1\24"+ "\1\21\1\10\1\22\1\6\1\23\1\10\1\24\1\25"+
"\1\25\1\7\1\26\1\27\1\30\1\31\1\32\1\33"+ "\1\26\1\10\1\27\1\30\1\31\1\32\1\33\1\34"+
"\1\34\1\35\2\7\1\36\1\37\1\7\1\40\1\7"+ "\1\35\1\36\2\10\1\37\1\40\1\10\1\41\1\10"+
"\1\41\1\7\1\42\1\43\1\44\1\45\1\46\1\47"+ "\1\42\1\10\1\43\1\44\1\45\1\46\1\47\1\50"+
"\1\50\1\51\1\52\1\53\1\54\1\55\1\56\1\57"+
"\1\60\1\61\1\62\1\63\1\64\1\65\7\66\1\67"+
"\1\70\13\66\1\71\1\72\52\66\2\0\1\73\1\0"+
"\1\73\1\0\1\74\6\0\2\73\1\0\1\73\1\0"+
"\1\73\3\0\1\73\2\0\1\75\25\73\21\0\1\5"+
"\1\6\1\7\1\10\1\7\1\5\1\11\1\10\1\12"+
"\1\13\1\14\1\15\1\16\2\7\1\17\1\7\1\20"+
"\1\7\1\21\1\5\1\22\1\7\1\76\1\77\1\25"+
"\1\7\1\26\1\27\1\30\1\31\1\32\1\33\1\34"+
"\1\35\2\7\1\36\1\37\1\7\1\40\1\7\1\41"+
"\1\7\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"+ "\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\60"+
"\1\61\1\62\1\63\1\64\1\65\101\0\1\6\12\0"+ "\1\61\1\62\1\63\1\64\1\65\1\66\7\67\1\70"+
"\1\6\2\0\1\100\1\101\17\0\1\101\40\0\2\7"+ "\1\71\13\67\1\72\1\73\61\67\1\74\1\71\13\67"+
"\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ "\1\74\1\75\52\67\2\0\1\76\1\0\1\76\1\0"+
"\3\0\1\7\2\0\26\7\24\0\1\10\3\0\1\10"+ "\1\77\6\0\2\76\1\0\1\76\1\0\1\76\3\0"+
"\70\0\6\102\2\0\70\102\2\0\1\103\1\0\1\103"+ "\1\76\2\0\1\100\25\76\21\0\1\6\1\7\1\10"+
"\1\0\1\104\6\0\2\103\1\0\1\103\1\0\1\103"+ "\1\11\1\10\1\6\1\12\1\11\1\13\1\14\1\15"+
"\3\0\1\103\2\0\26\103\23\0\1\105\1\0\1\105"+ "\1\16\1\17\2\10\1\20\1\10\1\21\1\10\1\22"+
"\1\0\1\106\2\0\1\107\3\0\2\105\1\0\1\105"+ "\1\6\1\23\1\10\1\101\1\102\1\26\1\10\1\27"+
"\1\0\1\105\3\0\1\105\2\0\26\105\33\0\1\110"+ "\1\30\1\31\1\32\1\33\1\34\1\35\1\36\2\10"+
"\1\111\47\0\1\112\77\0\1\113\15\0\1\114\12\0"+ "\1\37\1\40\1\10\1\41\1\10\1\42\1\10\1\43"+
"\1\114\1\115\1\116\1\100\1\101\17\0\1\101\5\0"+ "\1\44\1\45\1\46\1\47\1\50\1\51\1\52\1\53"+
"\1\116\32\0\1\117\12\0\1\117\2\0\1\120\101\0"+ "\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63"+
"\1\121\40\0\1\122\1\123\14\0\7\21\1\0\13\21"+ "\1\64\1\65\1\66\101\0\1\7\12\0\1\7\2\0"+
"\1\124\1\125\53\21\25\0\1\126\53\0\2\7\1\0"+ "\1\103\1\104\17\0\1\104\40\0\2\10\1\0\2\10"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\1\7\2\0\1\7\1\127\12\7\1\130\5\7\1\131"+ "\2\0\26\10\24\0\1\11\3\0\1\11\70\0\6\105"+
"\3\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\2\0\70\105\2\0\1\106\1\0\1\106\1\0\1\107"+
"\1\7\1\0\1\7\3\0\1\7\2\0\3\7\1\132"+ "\6\0\2\106\1\0\1\106\1\0\1\106\3\0\1\106"+
"\2\7\1\133\12\7\1\134\4\7\22\0\2\7\1\0"+ "\2\0\26\106\23\0\1\110\1\0\1\110\1\0\1\111"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\2\0\1\112\3\0\2\110\1\0\1\110\1\0\1\110"+
"\1\135\2\0\26\7\22\0\2\7\1\0\2\7\6\0"+ "\3\0\1\110\2\0\26\110\33\0\1\113\1\114\47\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\1\115\77\0\1\116\15\0\1\117\12\0\1\117\1\120"+
"\5\7\1\136\12\7\1\137\5\7\22\0\2\7\1\0"+ "\1\121\1\103\1\104\17\0\1\104\5\0\1\121\32\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\122\12\0\1\122\2\0\1\123\101\0\1\124\40\0"+
"\1\7\2\0\15\7\1\140\10\7\22\0\2\7\1\0"+ "\1\125\1\126\14\0\7\22\1\0\13\22\1\127\1\130"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\53\22\25\0\1\131\53\0\2\10\1\0\2\10\6\0"+
"\1\141\2\0\26\7\22\0\2\7\1\0\2\7\6\0"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\1\10\1\132\12\10\1\133\5\10\1\134\3\10\22\0"+
"\20\7\1\142\5\7\22\0\2\7\1\0\2\7\6\0"+ "\2\10\1\0\2\10\6\0\3\10\1\0\1\10\1\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\1\10\3\0\1\10\2\0\3\10\1\135\2\10\1\136"+
"\11\7\1\143\14\7\22\0\2\7\1\0\2\7\6\0"+ "\12\10\1\137\4\10\22\0\2\10\1\0\2\10\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\140\2\0"+
"\3\7\1\144\22\7\22\0\2\7\1\0\2\7\6\0"+ "\26\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\1\10\1\0\1\10\3\0\1\10\2\0\5\10\1\141"+
"\7\7\1\145\16\7\22\0\2\7\1\0\2\7\6\0"+ "\12\10\1\142\5\10\22\0\2\10\1\0\2\10\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\14\7\1\146\11\7\22\0\2\7\1\0\2\7\6\0"+ "\15\10\1\143\10\10\22\0\2\10\1\0\2\10\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\144\2\0"+
"\1\7\1\147\24\7\22\0\2\7\1\0\2\7\6\0"+ "\26\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\150\2\0"+ "\1\10\1\0\1\10\3\0\1\10\2\0\20\10\1\145"+
"\5\7\1\151\3\7\1\152\14\7\22\0\2\7\1\0"+ "\5\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\10\1\0\1\10\3\0\1\10\2\0\11\10\1\146"+
"\1\7\2\0\1\7\1\153\24\7\22\0\2\7\1\0"+ "\14\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\10\1\0\1\10\3\0\1\10\2\0\3\10\1\147"+
"\1\7\2\0\11\7\1\154\14\7\22\0\2\7\1\0"+ "\22\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\10\1\0\1\10\3\0\1\10\2\0\7\10\1\150"+
"\1\7\2\0\5\7\1\155\20\7\54\0\1\156\27\0"+ "\16\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\157\75\0\1\160\1\0\1\161\75\0\1\162\1\0"+ "\1\10\1\0\1\10\3\0\1\10\2\0\14\10\1\151"+
"\1\163\76\0\1\164\1\165\77\0\1\166\1\0\1\167"+ "\11\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\100\0\1\170\100\0\1\171\73\0\1\172\14\0\7\66"+ "\1\10\1\0\1\10\3\0\1\10\2\0\1\10\1\152"+
"\2\0\13\66\2\0\52\66\2\0\1\173\1\0\1\173"+ "\24\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\0\1\174\6\0\2\173\1\0\1\173\1\0\1\173"+ "\1\10\1\0\1\10\3\0\1\153\2\0\5\10\1\154"+
"\3\0\1\173\1\175\1\0\26\173\21\0\7\176\1\0"+ "\3\10\1\155\14\10\22\0\2\10\1\0\2\10\6\0"+
"\16\176\1\177\51\176\1\0\2\73\1\0\2\73\6\0"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\3\73\1\0\1\73\1\0\1\73\3\0\1\73\2\0"+ "\1\10\1\156\24\10\22\0\2\10\1\0\2\10\6\0"+
"\26\73\21\0\6\200\2\0\70\200\1\0\2\73\1\0"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\2\73\6\0\3\73\1\0\1\73\1\0\1\73\3\0"+ "\11\10\1\157\14\10\22\0\2\10\1\0\2\10\6\0"+
"\1\73\2\0\1\73\1\201\24\73\22\0\1\117\12\0"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\1\117\2\0\1\202\61\0\1\203\12\0\1\203\4\0"+ "\5\10\1\160\20\10\54\0\1\161\27\0\1\162\75\0"+
"\1\203\43\0\1\203\12\0\6\102\1\204\1\0\70\102"+ "\1\163\1\0\1\164\75\0\1\165\1\0\1\166\76\0"+
"\1\0\2\103\1\0\2\103\6\0\3\103\1\0\1\103"+ "\1\167\1\170\77\0\1\171\1\0\1\172\100\0\1\173"+
"\1\0\1\103\3\0\1\103\2\0\26\103\21\0\6\205"+ "\100\0\1\174\73\0\1\175\14\0\7\67\2\0\13\67"+
"\2\0\70\205\1\0\2\105\1\0\2\105\6\0\3\105"+ "\2\0\52\67\2\0\1\176\1\0\1\176\1\0\1\177"+
"\1\0\1\105\1\0\1\105\3\0\1\105\2\0\26\105"+ "\6\0\2\176\1\0\1\176\1\0\1\176\3\0\1\176"+
"\21\0\6\206\2\0\70\206\7\110\1\0\70\110\13\207"+ "\1\200\1\0\26\176\21\0\7\201\1\0\16\201\1\202"+
"\1\210\64\207\1\0\1\114\12\0\1\114\2\0\1\211"+ "\51\201\25\0\1\203\53\0\2\76\1\0\2\76\6\0"+
"\1\101\17\0\1\101\40\0\2\115\11\0\1\115\1\0"+ "\3\76\1\0\1\76\1\0\1\76\3\0\1\76\2\0"+
"\1\115\1\212\1\115\1\0\1\213\12\0\1\115\2\0"+ "\26\76\21\0\6\204\2\0\70\204\1\0\2\76\1\0"+
"\1\115\1\213\1\115\3\0\1\115\3\0\1\115\3\0"+ "\2\76\6\0\3\76\1\0\1\76\1\0\1\76\3\0"+
"\1\115\22\0\1\116\12\0\1\116\2\0\1\214\61\0"+ "\1\76\2\0\1\76\1\205\24\76\22\0\1\122\12\0"+
"\1\117\12\0\1\117\3\0\1\101\17\0\1\101\37\0"+ "\1\122\2\0\1\206\61\0\1\207\12\0\1\207\4\0"+
"\7\21\1\0\70\21\25\0\1\215\53\0\2\7\1\0"+ "\1\207\43\0\1\207\12\0\6\105\1\210\1\0\70\105"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\0\2\106\1\0\2\106\6\0\3\106\1\0\1\106"+
"\1\7\2\0\2\7\1\216\11\7\1\217\11\7\22\0"+ "\1\0\1\106\3\0\1\106\2\0\26\106\21\0\6\211"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ "\2\0\70\211\1\0\2\110\1\0\2\110\6\0\3\110"+
"\1\7\3\0\1\220\2\0\11\7\1\221\10\7\1\222"+ "\1\0\1\110\1\0\1\110\3\0\1\110\2\0\26\110"+
"\3\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\21\0\6\212\2\0\70\212\7\113\1\0\70\113\13\213"+
"\1\7\1\0\1\7\3\0\1\7\2\0\10\7\1\223"+ "\1\214\64\213\1\0\1\117\12\0\1\117\2\0\1\215"+
"\15\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\1\104\17\0\1\104\40\0\2\120\11\0\1\120\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\10\7\1\224"+ "\1\120\1\216\1\120\1\0\1\217\12\0\1\120\2\0"+
"\15\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\1\120\1\217\1\120\3\0\1\120\3\0\1\120\3\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\6\7\1\225"+ "\1\120\22\0\1\121\12\0\1\121\2\0\1\220\61\0"+
"\17\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\1\122\12\0\1\122\3\0\1\104\17\0\1\104\37\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\11\7\1\226"+ "\7\22\1\0\70\22\25\0\1\221\53\0\2\10\1\0"+
"\14\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\2\10\6\0\3\10\1\0\1\10\1\0\1\10\3\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\16\7\1\227"+ "\1\10\2\0\2\10\1\222\11\10\1\223\11\10\22\0"+
"\7\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\2\10\1\0\2\10\6\0\3\10\1\0\1\10\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\20\7\1\230"+ "\1\10\3\0\1\224\2\0\11\10\1\225\10\10\1\226"+
"\5\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\3\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\3\7\1\231"+ "\1\10\1\0\1\10\3\0\1\10\2\0\10\10\1\227"+
"\22\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\15\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\4\7\1\232"+ "\1\10\1\0\1\10\3\0\1\10\2\0\10\10\1\230"+
"\21\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\15\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\26\7\5\0"+ "\1\10\1\0\1\10\3\0\1\10\2\0\6\10\1\231"+
"\1\233\14\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\17\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\1\234\25\7"+ "\1\10\1\0\1\10\3\0\1\10\2\0\11\10\1\232"+
"\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ "\14\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\0\1\7\3\0\1\7\2\0\7\7\1\235\16\7"+ "\1\10\1\0\1\10\3\0\1\10\2\0\16\10\1\233"+
"\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ "\7\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\0\1\7\3\0\1\7\2\0\2\7\1\236\4\7"+ "\1\10\1\0\1\10\3\0\1\10\2\0\20\10\1\234"+
"\1\237\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\5\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\6\7"+ "\1\10\1\0\1\10\3\0\1\10\2\0\3\10\1\235"+
"\1\240\17\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\22\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ "\1\10\1\0\1\10\3\0\1\10\2\0\4\10\1\236"+
"\1\241\11\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\21\10\22\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\20\7"+ "\1\10\1\0\1\10\3\0\1\10\2\0\26\10\5\0"+
"\1\242\5\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\1\237\14\0\2\10\1\0\2\10\6\0\3\10\1\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\2\7"+ "\1\10\1\0\1\10\3\0\1\10\2\0\1\240\25\10"+
"\1\243\23\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\22\0\2\10\1\0\2\10\6\0\3\10\1\0\1\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ "\1\0\1\10\3\0\1\10\2\0\7\10\1\241\16\10"+
"\1\244\3\7\1\245\5\7\55\0\1\246\2\0\1\247"+ "\22\0\2\10\1\0\2\10\6\0\3\10\1\0\1\10"+
"\123\0\1\250\74\0\1\251\101\0\1\252\100\0\1\253"+ "\1\0\1\10\3\0\1\10\2\0\2\10\1\242\4\10"+
"\15\0\2\173\1\0\2\173\6\0\3\173\1\0\1\173"+ "\1\243\16\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\0\1\173\3\0\1\173\2\0\26\173\21\0\6\254"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\6\10"+
"\2\0\70\254\1\0\2\255\11\0\1\255\1\0\1\255"+ "\1\244\17\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\0\1\255\14\0\1\255\2\0\1\255\1\0\1\255"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\14\10"+
"\3\0\1\255\3\0\1\255\3\0\1\255\21\0\6\200"+ "\1\245\11\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\256\1\0\70\200\1\0\2\73\1\0\2\73\6\0"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\20\10"+
"\3\73\1\0\1\73\1\0\1\73\3\0\1\73\2\0"+ "\1\246\5\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\2\73\1\257\23\73\22\0\1\203\12\0\1\203\63\0"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\2\10"+
"\6\205\1\260\1\0\70\205\6\206\1\261\1\0\70\206"+ "\1\247\23\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\13\207\1\262\64\207\12\263\1\264\1\210\64\263\1\0"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\14\10"+
"\1\117\12\0\1\117\64\0\2\265\11\0\1\265\1\0"+ "\1\250\3\10\1\251\5\10\55\0\1\252\2\0\1\253"+
"\1\265\1\202\1\265\14\0\1\265\2\0\1\265\1\0"+ "\123\0\1\254\74\0\1\255\101\0\1\256\100\0\1\257"+
"\1\265\3\0\1\265\3\0\1\265\3\0\1\265\22\0"+ "\15\0\2\176\1\0\2\176\6\0\3\176\1\0\1\176"+
"\1\203\12\0\1\203\4\0\1\266\43\0\1\266\31\0"+ "\1\0\1\176\3\0\1\176\2\0\26\176\21\0\6\260"+
"\1\202\60\0\25\215\1\267\52\215\1\0\2\7\1\0"+ "\2\0\70\260\1\0\2\261\11\0\1\261\1\0\1\261"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\0\1\261\14\0\1\261\2\0\1\261\1\0\1\261"+
"\1\7\2\0\3\7\1\270\22\7\22\0\2\7\1\0"+ "\3\0\1\261\3\0\1\261\3\0\1\261\46\0\1\73"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\52\0\6\204\1\262\1\0\70\204\1\0\2\76\1\0"+
"\1\7\2\0\5\7\1\271\20\7\22\0\2\7\1\0"+ "\2\76\6\0\3\76\1\0\1\76\1\0\1\76\3\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\76\2\0\2\76\1\263\23\76\22\0\1\207\12\0"+
"\1\7\2\0\7\7\1\272\16\7\22\0\2\7\1\0"+ "\1\207\63\0\6\211\1\264\1\0\70\211\6\212\1\265"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\0\70\212\13\213\1\266\64\213\12\267\1\270\1\214"+
"\1\7\2\0\2\7\1\273\23\7\22\0\2\7\1\0"+ "\64\267\1\0\1\122\12\0\1\122\64\0\2\271\11\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\271\1\0\1\271\1\206\1\271\14\0\1\271\2\0"+
"\1\7\2\0\7\7\1\274\16\7\22\0\2\7\1\0"+ "\1\271\1\0\1\271\3\0\1\271\3\0\1\271\3\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\1\271\22\0\1\207\12\0\1\207\4\0\1\272\43\0"+
"\1\7\2\0\7\7\1\275\16\7\22\0\2\7\1\0"+ "\1\272\31\0\1\206\61\0\2\10\1\0\2\10\6\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\1\7\2\0\1\276\25\7\22\0\2\7\1\0\2\7"+ "\3\10\1\273\22\10\22\0\2\10\1\0\2\10\6\0"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\2\0\3\7\1\277\22\7\22\0\2\7\1\0\2\7"+ "\5\10\1\274\20\10\22\0\2\10\1\0\2\10\6\0"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\2\0\7\7\1\300\16\7\22\0\2\7\1\0\2\7"+ "\7\10\1\275\16\10\22\0\2\10\1\0\2\10\6\0"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\2\0\20\7\1\301\5\7\22\0\2\7\1\0\2\7"+ "\2\10\1\276\23\10\22\0\2\10\1\0\2\10\6\0"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\2\0\7\7\1\302\16\7\22\0\2\7\1\0\2\7"+ "\7\10\1\277\16\10\22\0\2\10\1\0\2\10\6\0"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\2\0\12\7\1\303\13\7\22\0\2\7\1\0\2\7"+ "\7\10\1\300\16\10\22\0\2\10\1\0\2\10\6\0"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\304"+ "\3\10\1\0\1\10\1\0\1\10\3\0\1\10\2\0"+
"\2\0\26\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\1\301\25\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\11\7"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\3\10"+
"\1\305\14\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\1\302\22\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\20\7"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\7\10"+
"\1\306\5\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\1\303\16\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\6\7"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\20\10"+
"\1\307\17\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\1\304\5\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\7\10"+
"\1\310\22\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\1\305\16\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ "\1\0\1\10\1\0\1\10\3\0\1\10\2\0\12\10"+
"\1\311\22\7\22\0\2\312\1\0\2\312\6\0\3\312"+ "\1\306\13\10\22\0\2\10\1\0\2\10\6\0\3\10"+
"\1\0\1\312\1\0\1\312\3\0\1\312\2\0\26\312"+ "\1\0\1\10\1\0\1\10\3\0\1\307\2\0\26\10"+
"\21\0\6\254\1\313\1\0\70\254\1\0\2\314\11\0"+ "\22\0\2\10\1\0\2\10\6\0\3\10\1\0\1\10"+
"\1\314\1\0\1\314\1\0\1\314\14\0\1\314\2\0"+ "\1\0\1\10\3\0\1\10\2\0\11\10\1\310\14\10"+
"\1\314\1\0\1\314\3\0\1\314\3\0\1\314\3\0"+ "\22\0\2\10\1\0\2\10\6\0\3\10\1\0\1\10"+
"\1\314\22\0\2\73\1\0\2\73\6\0\3\73\1\0"+ "\1\0\1\10\3\0\1\10\2\0\20\10\1\311\5\10"+
"\1\73\1\0\1\73\3\0\1\73\2\0\3\73\1\315"+ "\22\0\2\10\1\0\2\10\6\0\3\10\1\0\1\10"+
"\22\73\21\0\12\207\1\316\1\262\64\207\13\263\1\317"+ "\1\0\1\10\3\0\1\10\2\0\6\10\1\312\17\10"+
"\64\263\1\0\2\265\11\0\1\265\1\0\1\265\1\0"+ "\22\0\2\10\1\0\2\10\6\0\3\10\1\0\1\10"+
"\1\265\1\0\1\213\12\0\1\265\2\0\1\265\1\213"+ "\1\0\1\10\3\0\1\10\2\0\3\10\1\313\22\10"+
"\1\265\3\0\1\265\3\0\1\265\3\0\1\265\21\0"+ "\22\0\2\10\1\0\2\10\6\0\3\10\1\0\1\10"+
"\25\215\1\320\52\215\1\0\2\7\1\0\2\7\6\0"+ "\1\0\1\10\3\0\1\10\2\0\3\10\1\314\22\10"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\22\0\2\315\1\0\2\315\6\0\3\315\1\0\1\315"+
"\17\7\1\321\6\7\22\0\2\7\1\0\2\7\6\0"+ "\1\0\1\315\3\0\1\315\2\0\26\315\21\0\6\260"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ "\1\316\1\0\70\260\1\0\2\317\11\0\1\317\1\0"+
"\1\322\25\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\1\317\1\0\1\317\14\0\1\317\2\0\1\317\1\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ "\1\317\3\0\1\317\3\0\1\317\3\0\1\317\22\0"+
"\1\323\11\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\2\76\1\0\2\76\6\0\3\76\1\0\1\76\1\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\2\7"+ "\1\76\3\0\1\76\2\0\3\76\1\320\22\76\21\0"+
"\1\324\23\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\12\213\1\321\1\266\64\213\13\267\1\322\64\267\1\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ "\2\271\11\0\1\271\1\0\1\271\1\0\1\271\1\0"+
"\1\325\22\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\1\217\12\0\1\271\2\0\1\271\1\217\1\271\3\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\4\7"+ "\1\271\3\0\1\271\3\0\1\271\22\0\2\10\1\0"+
"\1\326\21\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\2\10\6\0\3\10\1\0\1\10\1\0\1\10\3\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\11\7"+ "\1\10\2\0\17\10\1\323\6\10\22\0\2\10\1\0"+
"\1\327\14\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\2\10\6\0\3\10\1\0\1\10\1\0\1\10\3\0"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ "\1\10\2\0\1\324\25\10\22\0\2\10\1\0\2\10"+
"\1\330\11\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\12\7"+ "\2\0\14\10\1\325\11\10\22\0\2\10\1\0\2\10"+
"\1\331\13\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\7\7"+ "\2\0\2\10\1\326\23\10\22\0\2\10\1\0\2\10"+
"\1\332\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\7\7"+ "\2\0\3\10\1\327\22\10\22\0\2\10\1\0\2\10"+
"\1\333\16\7\22\0\2\334\11\0\1\334\1\0\1\334"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\1\0\1\334\14\0\1\334\2\0\1\334\1\0\1\334"+ "\2\0\4\10\1\330\21\10\22\0\2\10\1\0\2\10"+
"\3\0\1\334\3\0\1\334\3\0\1\334\21\0\12\263"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\1\264\1\317\64\263\25\215\1\335\52\215\1\0\2\7"+ "\2\0\11\10\1\331\14\10\22\0\2\10\1\0\2\10"+
"\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\3\0\1\7\2\0\6\7\1\336\17\7\22\0\2\7"+ "\2\0\14\10\1\332\11\10\22\0\2\10\1\0\2\10"+
"\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\3\0\1\7\2\0\1\337\25\7\22\0\2\7\1\0"+ "\2\0\12\10\1\333\13\10\22\0\2\10\1\0\2\10"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\1\7\2\0\13\7\1\340\12\7\22\0\2\7\1\0"+ "\2\0\7\10\1\334\16\10\22\0\2\10\1\0\2\10"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\1\7\2\0\6\7\1\341\17\7\22\0\2\176\11\0"+ "\2\0\7\10\1\335\16\10\22\0\2\336\11\0\1\336"+
"\1\176\1\0\1\176\1\0\1\176\14\0\1\176\2\0"+ "\1\0\1\336\1\0\1\336\14\0\1\336\2\0\1\336"+
"\1\176\1\0\1\176\3\0\1\176\3\0\1\176\3\0"+ "\1\0\1\336\3\0\1\336\3\0\1\336\3\0\1\336"+
"\1\176\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ "\21\0\12\267\1\270\1\322\64\267\1\0\2\10\1\0"+
"\1\7\1\0\1\7\3\0\1\342\2\0\26\7\22\0"+ "\2\10\6\0\3\10\1\0\1\10\1\0\1\10\3\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ "\1\10\2\0\6\10\1\337\17\10\22\0\2\10\1\0"+
"\1\7\3\0\1\7\2\0\7\7\1\343\16\7\22\0"+ "\2\10\6\0\3\10\1\0\1\10\1\0\1\10\3\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ "\1\10\2\0\1\340\25\10\22\0\2\10\1\0\2\10"+
"\1\7\3\0\1\7\2\0\7\7\1\344\16\7\21\0"; "\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\2\0\13\10\1\341\12\10\22\0\2\10\1\0\2\10"+
"\6\0\3\10\1\0\1\10\1\0\1\10\3\0\1\10"+
"\2\0\6\10\1\342\17\10\22\0\2\201\11\0\1\201"+
"\1\0\1\201\1\0\1\201\14\0\1\201\2\0\1\201"+
"\1\0\1\201\3\0\1\201\3\0\1\201\3\0\1\201"+
"\22\0\2\10\1\0\2\10\6\0\3\10\1\0\1\10"+
"\1\0\1\10\3\0\1\343\2\0\26\10\22\0\2\10"+
"\1\0\2\10\6\0\3\10\1\0\1\10\1\0\1\10"+
"\3\0\1\10\2\0\7\10\1\344\16\10\22\0\2\10"+
"\1\0\2\10\6\0\3\10\1\0\1\10\1\0\1\10"+
"\3\0\1\10\2\0\7\10\1\345\16\10\21\0";
private static int [] zzUnpackTrans() { private static int [] zzUnpackTrans() {
int [] result = new int[9600]; int [] result = new int[9600];
@@ -511,19 +497,19 @@ class _JetLexer implements FlexLexer {
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 = private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\4\0\1\11\15\1\2\11\22\1\1\11\2\1\1\11"+ "\5\0\1\11\15\1\2\11\22\1\1\11\2\1\1\11"+
"\4\1\7\11\1\1\1\11\1\1\1\0\1\11\1\1"+ "\4\1\7\11\1\1\1\11\1\1\1\0\2\11\2\1"+
"\1\0\1\1\2\11\1\0\1\1\1\0\1\1\1\0"+ "\1\0\1\1\2\11\1\0\1\1\1\0\1\1\1\0"+
"\1\1\1\0\1\11\2\1\2\11\4\1\5\11\1\1"+ "\1\1\1\0\1\11\2\1\2\11\4\1\5\11\1\1"+
"\1\0\27\1\1\0\1\1\1\0\1\11\1\0\2\11"+ "\1\0\27\1\1\0\1\1\1\0\1\11\1\0\2\11"+
"\1\1\5\11\1\1\1\0\2\11\1\1\1\0\1\1"+ "\1\1\5\11\1\1\1\0\2\11\1\1\2\0\1\1"+
"\1\11\1\1\1\11\2\0\2\1\4\0\16\1\1\11"+ "\1\11\1\1\1\11\2\0\2\1\4\0\1\11\15\1"+
"\14\1\4\11\2\0\1\11\1\1\2\11\1\0\1\1"+ "\1\11\14\1\4\11\2\0\1\11\1\1\2\11\1\0"+
"\1\11\1\1\2\0\22\1\2\11\1\0\1\1\1\11"+ "\1\1\1\11\1\1\1\0\22\1\2\11\1\0\1\1"+
"\2\0\13\1\1\0\1\11\7\1"; "\1\11\1\0\13\1\1\0\7\1";
private static int [] zzUnpackAttribute() { private static int [] zzUnpackAttribute() {
int [] result = new int[228]; int [] result = new int[229];
int offset = 0; int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result; return result;
@@ -895,73 +881,73 @@ class _JetLexer implements FlexLexer {
{ return JetTokens.PLUS ; { return JetTokens.PLUS ;
} }
case 108: break; case 108: break;
case 67:
{ return JetTokens.RAW_STRING_LITERAL;
}
case 109: break;
case 57: case 57:
{ return JetTokens.PLUSEQ ; { return JetTokens.PLUSEQ ;
} }
case 110: break; case 109: break;
case 88: case 88:
{ popState(); return JetTokens.THIS_KEYWORD; { popState(); return JetTokens.THIS_KEYWORD;
} }
case 111: break; case 110: break;
case 28: case 28:
{ return JetTokens.COMMA ; { return JetTokens.COMMA ;
} }
case 112: break; case 111: break;
case 17: case 17:
{ return JetTokens.GT ; { return JetTokens.GT ;
} }
case 113: break; case 112: break;
case 4: case 4:
{ return JetTokens.WHITE_SPACE; { return JetTokens.WHITE_SPACE;
} }
case 114: break; case 113: break;
case 25: case 25:
{ return JetTokens.RPAR ; { return JetTokens.RPAR ;
} }
case 115: break; case 114: break;
case 55: case 55:
{ return JetTokens.DOUBLE_ARROW; { return JetTokens.DOUBLE_ARROW;
} }
case 116: break; case 115: break;
case 81: case 81:
{ return JetTokens.TRUE_KEYWORD ; { return JetTokens.TRUE_KEYWORD ;
} }
case 117: break; case 116: break;
case 77: case 77:
{ return JetTokens.IDE_TEMPLATE_START ; { return JetTokens.IDE_TEMPLATE_START ;
} }
case 118: break; case 117: break;
case 36: case 36:
{ return JetTokens.FIELD_IDENTIFIER; { return JetTokens.FIELD_IDENTIFIER;
} }
case 119: break; case 118: break;
case 59: case 59:
{ return JetTokens.ANDAND ; { return JetTokens.ANDAND ;
} }
case 120: break; case 119: break;
case 63: case 63:
{ pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START; { pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START;
} }
case 121: break; case 120: break;
case 66: case 66:
{ return JetTokens.DOC_COMMENT; { return JetTokens.DOC_COMMENT;
} }
case 122: break; case 121: break;
case 35: case 35:
{ return JetTokens.FLOAT_LITERAL; { return JetTokens.FLOAT_LITERAL;
} }
case 123: break; case 122: break;
case 39: case 39:
{ return JetTokens.EOL_COMMENT; { return JetTokens.EOL_COMMENT;
} }
case 124: break; case 123: break;
case 85: case 85:
{ return JetTokens.WHEN_KEYWORD ; { return JetTokens.WHEN_KEYWORD ;
} }
case 124: break;
case 67:
{ pushState(RAW_STRING); return JetTokens.OPEN_QUOTE;
}
case 125: break; case 125: break;
case 26: case 26:
{ return JetTokens.COLON ; { return JetTokens.COLON ;
@@ -1103,135 +1089,135 @@ class _JetLexer implements FlexLexer {
{ return TokenType.BAD_CHARACTER; { return TokenType.BAD_CHARACTER;
} }
case 160: break; case 160: break;
case 62:
{ pushState(SHORT_TEMPLATE_ENTRY);
yypushback(yylength() - 1);
return JetTokens.SHORT_TEMPLATE_ENTRY_START;
}
case 161: break;
case 74: case 74:
{ return JetTokens.NOT_IS; { return JetTokens.NOT_IS;
} }
case 161: break; case 162: break;
case 7: case 7:
{ return JetTokens.MUL ; { return JetTokens.MUL ;
} }
case 162: break; case 163: break;
case 23: case 23:
{ return JetTokens.RBRACKET ; { return JetTokens.RBRACKET ;
} }
case 163: break; case 164: break;
case 58: case 58:
{ return JetTokens.PLUSPLUS ; { return JetTokens.PLUSPLUS ;
} }
case 164: break; case 165: break;
case 80: case 80:
{ return JetTokens.THIS_KEYWORD ; { return JetTokens.THIS_KEYWORD ;
} }
case 165: break; case 166: break;
case 8: case 8:
{ return JetTokens.DOT ; { return JetTokens.DOT ;
} }
case 166: break; case 167: break;
case 27: case 27:
{ return JetTokens.SEMICOLON ; { return JetTokens.SEMICOLON ;
} }
case 167: break; case 168: break;
case 49: case 49:
{ return JetTokens.IF_KEYWORD ; { return JetTokens.IF_KEYWORD ;
} }
case 168: break; case 169: break;
case 64: case 64:
{ return JetTokens.ESCAPE_SEQUENCE; { return JetTokens.ESCAPE_SEQUENCE;
} }
case 169: break; case 170: break;
case 31: case 31:
{ popState(); return JetTokens.CLOSING_QUOTE; { popState(); return JetTokens.CLOSING_QUOTE;
} }
case 170: break; case 171: break;
case 18: case 18:
{ return JetTokens.EQ ; { return JetTokens.EQ ;
} }
case 171: break; case 172: break;
case 5: case 5:
{ return JetTokens.AT ; { return JetTokens.AT ;
} }
case 172: break; case 173: break;
case 69: case 69:
{ return JetTokens.AS_SAFE; { return JetTokens.AS_SAFE;
} }
case 173: break; case 174: break;
case 24: case 24:
{ return JetTokens.LPAR ; { return JetTokens.LPAR ;
} }
case 174: break; case 175: break;
case 9: case 9:
{ return JetTokens.MINUS ; { return JetTokens.MINUS ;
} }
case 175: break; case 176: break;
case 95: case 95:
{ return JetTokens.FALSE_KEYWORD ; { return JetTokens.FALSE_KEYWORD ;
} }
case 176: break; case 177: break;
case 82: case 82:
{ return JetTokens.TYPE_KEYWORD ; { return JetTokens.TYPE_KEYWORD ;
} }
case 177: break; case 178: break;
case 70: case 70:
{ return JetTokens.FUN_KEYWORD ; { return JetTokens.FUN_KEYWORD ;
} }
case 178: break; case 179: break;
case 47: case 47:
{ return JetTokens.IS_KEYWORD ; { return JetTokens.IS_KEYWORD ;
} }
case 179: break; case 180: break;
case 30: case 30:
{ popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE; { popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE;
} }
case 180: break; case 181: break;
case 33: case 33:
{ lBraceCount++; return JetTokens.LBRACE; { lBraceCount++; return JetTokens.LBRACE;
} }
case 181: break; case 182: break;
case 87: case 87:
{ yypushback(3); return JetTokens.EXCL; { yypushback(3); return JetTokens.EXCL;
} }
case 182: break; case 183: break;
case 41: case 41:
{ return JetTokens.DIVEQ ; { return JetTokens.DIVEQ ;
} }
case 183: break; case 184: break;
case 84: case 84:
{ return JetTokens.ELSE_KEYWORD ; { return JetTokens.ELSE_KEYWORD ;
} }
case 184: break; case 185: break;
case 50: case 50:
{ return JetTokens.AS_KEYWORD ; { return JetTokens.AS_KEYWORD ;
} }
case 185: break; case 186: break;
case 48: case 48:
{ return JetTokens.IN_KEYWORD ; { return JetTokens.IN_KEYWORD ;
} }
case 186: break; case 187: break;
case 56: case 56:
{ return JetTokens.EQEQ ; { return JetTokens.EQEQ ;
} }
case 187: break; case 188: break;
case 79: case 79:
{ return JetTokens.EQEQEQ ; { return JetTokens.EQEQEQ ;
} }
case 188: break; case 189: break;
case 73: case 73:
{ return JetTokens.VAL_KEYWORD ; { return JetTokens.VAL_KEYWORD ;
} }
case 189: break; case 190: break;
case 86: case 86:
{ return JetTokens.CAPITALIZED_THIS_KEYWORD ; { return JetTokens.CAPITALIZED_THIS_KEYWORD ;
} }
case 190: break; case 191: break;
case 42: case 42:
{ return JetTokens.MULTEQ ; { return JetTokens.MULTEQ ;
} }
case 191: break;
case 62:
{ pushState(SHORT_TEMPLATE_ENTRY);
yypushback(yylength() - 1);
return JetTokens.SHORT_TEMPLATE_ENTRY_START;
}
case 192: break; case 192: break;
case 12: case 12:
{ return JetTokens.LBRACE ; { return JetTokens.LBRACE ;
@@ -0,0 +1,31 @@
fun box() : String {
val s = "abc"
val test1 = """$s"""
if (test1 != "abc") return "Fail 1: $test1"
val test2 = """${s}"""
if (test2 != "abc") return "Fail 2: $test2"
val test3 = """ "$s" """
if (test3 != " \"abc\" ") return "Fail 3: $test3"
val test4 = """ "${s}" """
if (test4 != " \"abc\" ") return "Fail 4: $test4"
val test5 =
"""
${s.length}
"""
if (test5 != "\n 3\n") return "Fail 5: $test5"
val test6 = """\n"""
if (test6 != "\\n") return "Fail 6: $test6"
val test7 = """\${'$'}foo"""
if (test7 != "\\\$foo") return "Fail 7: $test7"
val test8 = """$ foo"""
if (test8 != "$ foo") return "Fail 8: $test8"
return "OK"
}
@@ -0,0 +1,43 @@
fun box() : String {
val s = "abc"
val test1 = """$s"""
if (test1 != "abc") return "Fail 1: $test1"
val test2 = """${s}"""
if (test2 != "abc") return "Fail 2: $test2"
val test3 = """ "$s" """
if (test3 != " \"abc\" ") return "Fail 3: $test3"
val test4 = """ "${s}" """
if (test4 != " \"abc\" ") return "Fail 4: $test4"
val test5 =
"""
${s.length}
"""
if (test5 != "\n 3\n") return "Fail 5: $test5"
val test6 = """\n"""
if (test6 != "\\n") return "Fail 6: $test6"
val test7 = """\${'$'}foo"""
if (test7 != "\\\$foo") return "Fail 7: $test7"
val test8 = """$ foo"""
if (test8 != "$ foo") return "Fail 8: $test8"
return "OK"
}
fun new() : String {
return """
sdfasdf
${<!UNRESOLVED_REFERENCE!>a<!>}
ds"asdfas
$<!UNRESOLVED_REFERENCE!>b<!>
asgfaf
"""
}
+5 -2
View File
@@ -105,8 +105,11 @@ JetFile: SimpleExpressions.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(EQ)('=') PsiElement(EQ)('=')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
STRING_CONSTANT STRING_TEMPLATE
PsiElement(RAW_STRING_LITERAL)('"""dsf"""') PsiElement(OPEN_QUOTE)('"""')
LITERAL_STRING_TEMPLATE_ENTRY
PsiElement(REGULAR_STRING_PART)('dsf')
PsiElement(CLOSING_QUOTE)('"""')
PsiElement(COMMA)(',') PsiElement(COMMA)(',')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
VALUE_PARAMETER VALUE_PARAMETER
+5 -2
View File
@@ -259,8 +259,11 @@ JetFile: When.jet
PsiElement(is)('is') PsiElement(is)('is')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
EXPRESSION_PATTERN EXPRESSION_PATTERN
STRING_CONSTANT STRING_TEMPLATE
PsiElement(RAW_STRING_LITERAL)('"""ddd"""') PsiElement(OPEN_QUOTE)('"""')
LITERAL_STRING_TEMPLATE_ENTRY
PsiElement(REGULAR_STRING_PART)('ddd')
PsiElement(CLOSING_QUOTE)('"""')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ARROW)('->') PsiElement(ARROW)('->')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
@@ -73,6 +73,10 @@ public class StringsTest extends CodegenTestCase {
blackBoxFile("rawStrings.jet"); blackBoxFile("rawStrings.jet");
} }
public void testMultilineStringsWithTemplates() throws Exception {
blackBoxFile("multilineStringsWithTemplates.jet");
}
public void testKt881() throws Exception { public void testKt881() throws Exception {
blackBoxFile("regressions/kt881.jet"); blackBoxFile("regressions/kt881.jet");
} }
@@ -192,7 +192,6 @@ public class JetHighlighter extends SyntaxHighlighterBase {
keys1.put(JetTokens.ESCAPE_SEQUENCE, JET_STRING_ESCAPE); keys1.put(JetTokens.ESCAPE_SEQUENCE, JET_STRING_ESCAPE);
keys1.put(JetTokens.CHARACTER_LITERAL, JET_STRING); keys1.put(JetTokens.CHARACTER_LITERAL, JET_STRING);
keys1.put(JetTokens.RAW_STRING_LITERAL, JET_STRING);
keys1.put(JetTokens.EOL_COMMENT, JET_COMMENT); keys1.put(JetTokens.EOL_COMMENT, JET_COMMENT);
keys1.put(JetTokens.BLOCK_COMMENT, JET_COMMENT); keys1.put(JetTokens.BLOCK_COMMENT, JET_COMMENT);