Support unicode escapes in chars and strings

This commit is contained in:
Andrey Breslav
2011-11-12 18:54:03 +04:00
parent ff62489233
commit 30926012c7
7 changed files with 310 additions and 238 deletions
@@ -198,7 +198,7 @@ public class CheckerTestUtil {
opened.pop();
}
assert opened.isEmpty() : "Stack is not empty";
assert opened.isEmpty() : "Stack is not empty: " + opened;
}
else {
@@ -165,29 +165,60 @@ public class CompileTimeConstantResolver {
return error;
}
// Strip the quotes
if (text.charAt(0) != '\'' || text.charAt(text.length() - 1) != '\'') {
return new ErrorValue("Incorret character constant");
return new ErrorValue("Incorrect character literal");
}
text = text.substring(1, text.length() - 1); // now there're no quotes
if (text.length() == 0) {
return new ErrorValue("Empty character literal");
}
text = text.substring(1, text.length() - 1);
if (text.length() == 0) {
return new ErrorValue("Empty character literal");
} else if (text.length() == 1) {
if (text.charAt(0) == '\\') {
return new ErrorValue("Illegal escape: " + text);
} else {
if (text.charAt(0) != '\\') {
// No escape
if (text.length() == 1) {
return new CharValue(text.charAt(0));
}
} else if (text.length() == 2 && text.charAt(0) == '\\') {
Character escaped = translateEscape(text.charAt(1));
if (escaped == null) {
return new ErrorValue("Illegal escape: " + text);
}
return new CharValue(escaped);
} else {
return new ErrorValue("Too many characters in character literal");
return new ErrorValue("Too many characters in a character literal" + text);
}
return escapedStringToCharValue(text);
}
@NotNull
public static CompileTimeConstant<?> escapedStringToCharValue(@NotNull String text) {
assert text.length() > 0 && text.charAt(0) == '\\' : "Only escaped sequences must be passed to this routine: " + text;
// Escape
String escape = text.substring(1); // strip the slash
switch (escape.length()) {
case 0:
// bare slash
return illegalEscape(text);
case 1:
// one-char escape
Character escaped = translateEscape(escape.charAt(0));
if (escaped == null) {
return illegalEscape(text);
}
return new CharValue(escaped);
case 5:
// unicode escape
if (escape.charAt(0) == 'u') {
try {
Integer intValue = Integer.valueOf(escape.substring(1), 16);
return new CharValue((char) intValue.intValue());
} catch (NumberFormatException e) {
// Will be reported below
}
}
break;
}
return illegalEscape(text);
}
private static ErrorValue illegalEscape(String text) {
return new ErrorValue("Illegal escape: " + text);
}
@Nullable
@@ -840,18 +840,15 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
@Override
public void visitEscapeStringTemplateEntry(JetEscapeStringTemplateEntry entry) {
// TODO : Check escape
String text = entry.getText();
assert text.length() == 2 && text.charAt(0) == '\\';
char escaped = text.charAt(1);
Character character = CompileTimeConstantResolver.translateEscape(escaped);
if (character == null) {
CompileTimeConstant<?> character = CompileTimeConstantResolver.escapedStringToCharValue(text);
if (character instanceof ErrorValue) {
context.trace.report(ILLEGAL_ESCAPE_SEQUENCE.on(entry));
value[0] = CompileTimeConstantResolver.OUT_OF_RANGE;
}
else {
builder.append(character);
builder.append(((CharValue) character).getValue());
}
}
});
@@ -866,7 +863,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
public JetType visitAnnotatedExpression(JetAnnotatedExpression expression, ExpressionTypingContext data) {
return facade.getType(expression.getBaseExpression(), data);
}
@Override
public JetType visitJetElement(JetElement element, ExpressionTypingContext context) {
context.trace.report(UNSUPPORTED.on(element, getClass().getCanonicalName()));
@@ -92,7 +92,7 @@ HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|0[Xx]{HEX_DIGIT}*\.{HEX_DIGIT}+
CHARACTER_LITERAL="'"([^\\\'\n]|{ESCAPE_SEQUENCE})*("'"|\\)?
// TODO: introduce symbols (e.g. 'foo) as another way to write string literals
STRING_LITERAL=\"([^\\\"\n]|{ESCAPE_SEQUENCE})*(\"|\\)?
ESCAPE_SEQUENCE=\\[^\n]
ESCAPE_SEQUENCE=\\(u{HEX_DIGIT}{HEX_DIGIT}{HEX_DIGIT}{HEX_DIGIT}|[^\n])
// ANY_ESCAPE_SEQUENCE = \\[^]
THREE_QUO = (\"\"\")
@@ -1,4 +1,4 @@
/* The following code was generated by JFlex 1.4.3 on 11/10/11 3:46 PM */
/* The following code was generated by JFlex 1.4.3 on 11/12/11 11:48 AM */
package org.jetbrains.jet.lexer;
@@ -13,8 +13,8 @@ import org.jetbrains.jet.lexer.JetTokens;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 11/10/11 3:46 PM from the specification file
* <tt>/Users/yozh/devel/jb/jet/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
* on 11/12/11 11:48 AM from the specification file
* <tt>/Users/abreslav/work/jet/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
*/
class _JetLexer implements FlexLexer {
/** initial size of the lookahead buffer */
@@ -44,10 +44,10 @@ class _JetLexer implements FlexLexer {
"\1\10\1\67\1\65\1\23\1\72\1\73\1\13\1\62\1\76\1\21"+
"\1\17\1\12\1\14\11\1\1\74\1\75\1\63\1\60\1\64\1\61"+
"\1\11\1\2\1\16\2\2\1\20\1\2\11\4\1\22\3\4\1\54"+
"\3\4\1\15\2\4\1\70\1\24\1\71\1\0\1\4\1\6\1\31"+
"\1\44\1\36\1\56\1\33\1\52\1\4\1\47\1\41\1\45\1\51"+
"\1\50\1\32\1\30\1\37\1\35\1\4\1\43\1\34\1\40\1\42"+
"\1\55\1\46\1\15\1\53\1\4\1\26\1\66\1\27\54\0\1\4"+
"\3\4\1\15\2\4\1\70\1\24\1\71\1\0\1\4\1\6\1\32"+
"\1\44\1\37\1\56\1\34\1\52\1\4\1\47\1\42\1\45\1\51"+
"\1\50\1\33\1\31\1\40\1\36\1\4\1\43\1\35\1\41\1\26"+
"\1\55\1\46\1\15\1\53\1\4\1\27\1\66\1\30\54\0\1\4"+
"\12\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\213\0\1\4"+
"\13\0\1\4\1\0\3\4\1\0\1\4\1\0\24\4\1\0\54\4"+
@@ -129,18 +129,19 @@ class _JetLexer implements FlexLexer {
"\1\43\1\53\1\54\1\55\1\56\2\12\1\0\2\3"+
"\1\57\10\3\1\60\1\61\1\62\10\3\1\63\1\0"+
"\1\64\1\65\1\66\1\67\1\70\1\71\1\72\1\73"+
"\1\74\1\75\1\76\1\0\1\77\1\100\1\0\1\101"+
"\1\74\1\75\1\76\1\0\1\77\2\100\1\0\1\101"+
"\1\43\1\3\2\0\1\50\1\102\4\0\1\103\2\3"+
"\1\104\7\3\1\105\10\3\1\106\1\107\1\3\1\110"+
"\1\111\1\112\1\113\1\114\1\115\1\0\1\40\1\44"+
"\1\45\1\0\2\102\1\43\2\0\1\3\1\116\1\117"+
"\5\3\1\120\1\121\1\3\1\122\2\3\1\123\2\3"+
"\1\124\1\125\1\76\1\50\2\0\1\3\1\126\1\3"+
"\1\127\1\3\1\130\1\131\1\3\1\132\1\133\1\134"+
"\1\103\2\3\1\135\1\136\3\3\1\137\1\140";
"\1\104\7\3\1\105\7\3\1\106\1\3\1\107\1\3"+
"\1\110\1\111\1\112\1\113\1\114\1\115\2\0\1\40"+
"\1\44\1\45\1\0\2\102\1\43\2\0\1\116\1\3"+
"\1\117\4\3\1\120\1\3\1\121\1\3\1\122\2\3"+
"\1\123\2\3\1\124\1\125\1\76\1\0\1\50\2\0"+
"\1\3\1\126\1\3\1\127\1\3\1\130\1\131\1\3"+
"\1\132\1\133\1\134\1\0\1\103\2\3\1\135\1\136"+
"\3\3\1\137\1\140";
private static int [] zzUnpackAction() {
int [] result = new int[217];
int [] result = new int[221];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -180,22 +181,22 @@ class _JetLexer implements FlexLexer {
"\0\u0180\0\u0180\0\u1200\0\u1240\0\u1280\0\u12c0\0\u1300\0\u1340"+
"\0\u1380\0\u13c0\0\u0180\0\u1400\0\u1440\0\u1480\0\u0100\0\u0100"+
"\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u14c0\0\u1500"+
"\0\u0100\0\u0100\0\u1540\0\u0100\0\u1580\0\u0100\0\u15c0\0\u1600"+
"\0\u0100\0\u0100\0\u1540\0\u1580\0\u0100\0\u15c0\0\u0100\0\u1600"+
"\0\u1640\0\u1680\0\u16c0\0\u1700\0\u1740\0\u1780\0\u17c0\0\u1800"+
"\0\u1840\0\u0100\0\u1880\0\u18c0\0\u1900\0\u1940\0\u1980\0\u19c0"+
"\0\u1a00\0\u0180\0\u1a40\0\u1a80\0\u1ac0\0\u1b00\0\u1b40\0\u1b80"+
"\0\u1bc0\0\u1c00\0\u0180\0\u0180\0\u1c40\0\u0180\0\u0180\0\u1c80"+
"\0\u1c80\0\u0100\0\u0100\0\u1cc0\0\u0100\0\u0100\0\u0100\0\u1d00"+
"\0\u1d40\0\u0100\0\u1d80\0\u1580\0\u1dc0\0\u1e00\0\u0180\0\u0180"+
"\0\u1e40\0\u1e80\0\u1ec0\0\u1f00\0\u1f40\0\u0180\0\u0180\0\u1f80"+
"\0\u0180\0\u1fc0\0\u2000\0\u0180\0\u2040\0\u2080\0\u0180\0\u0100"+
"\0\u0100\0\u0100\0\u20c0\0\u2100\0\u2140\0\u0180\0\u2180\0\u0180"+
"\0\u21c0\0\u0180\0\u0180\0\u2200\0\u0180\0\u0180\0\u0180\0\u0100"+
"\0\u2240\0\u2280\0\u0180\0\u0180\0\u22c0\0\u2300\0\u2340\0\u0180"+
"\0\u0180";
"\0\u1840\0\u1880\0\u0100\0\u18c0\0\u1900\0\u1940\0\u1980\0\u19c0"+
"\0\u1a00\0\u1a40\0\u0180\0\u1a80\0\u1ac0\0\u1b00\0\u1b40\0\u1b80"+
"\0\u1bc0\0\u1c00\0\u0180\0\u1c40\0\u0180\0\u1c80\0\u0180\0\u0180"+
"\0\u1cc0\0\u1cc0\0\u0100\0\u0100\0\u1d00\0\u1d40\0\u0100\0\u0100"+
"\0\u0100\0\u1d80\0\u1dc0\0\u0100\0\u1e00\0\u15c0\0\u1e40\0\u0180"+
"\0\u1e80\0\u0180\0\u1ec0\0\u1f00\0\u1f40\0\u1f80\0\u0180\0\u1fc0"+
"\0\u0180\0\u2000\0\u0180\0\u2040\0\u2080\0\u0180\0\u20c0\0\u2100"+
"\0\u0180\0\u0100\0\u0100\0\u2140\0\u0100\0\u2180\0\u21c0\0\u2200"+
"\0\u0180\0\u2240\0\u0180\0\u2280\0\u0180\0\u0180\0\u22c0\0\u0180"+
"\0\u0180\0\u0180\0\u2300\0\u0100\0\u2340\0\u2380\0\u0180\0\u0180"+
"\0\u23c0\0\u2400\0\u2440\0\u0180\0\u0180";
private static int [] zzUnpackRowMap() {
int [] result = new int[217];
int [] result = new int[221];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -220,206 +221,235 @@ class _JetLexer implements FlexLexer {
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\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\23\1\24\1\25"+
"\1\26\1\7\1\27\1\30\1\7\1\31\1\32\1\33"+
"\1\34\1\7\1\35\1\36\1\7\1\37\3\7\1\40"+
"\1\20\1\7\1\21\1\5\1\22\1\7\1\23\1\24"+
"\1\25\1\26\1\7\1\27\1\30\1\7\1\31\1\32"+
"\1\33\1\34\1\35\1\36\1\7\1\37\3\7\1\40"+
"\1\7\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\1\61\1\62\1\63\1\64\7\65\1\66\1\67"+
"\13\65\1\70\1\71\52\65\2\0\1\72\1\0\1\72"+
"\1\0\1\73\6\0\2\72\1\0\1\72\1\0\1\72"+
"\5\0\27\72\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\74\1\75\1\25\1\26\1\7\1\27\1\30\1\7"+
"\1\31\1\32\1\33\1\34\1\7\1\35\1\36\1\7"+
"\1\37\3\7\1\40\1\7\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\1\61\1\62\1\63\1\64"+
"\101\0\1\6\12\0\1\6\2\0\1\76\1\77\12\0"+
"\1\77\45\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\27\7\24\0\1\10\3\0"+
"\1\10\70\0\6\100\2\0\70\100\2\0\1\101\1\0"+
"\1\101\1\0\1\102\6\0\2\101\1\0\1\101\1\0"+
"\1\101\5\0\27\101\23\0\1\103\1\0\1\103\1\0"+
"\1\104\2\0\1\105\3\0\2\103\1\0\1\103\1\0"+
"\1\103\5\0\27\103\33\0\1\106\1\107\44\0\1\110"+
"\3\0\1\72\2\0\26\72\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\74\1\75\1\25\1\26\1\7"+
"\1\27\1\30\1\7\1\31\1\32\1\33\1\34\1\35"+
"\1\36\1\7\1\37\3\7\1\40\1\7\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\1\61\1\62"+
"\1\63\1\64\101\0\1\6\12\0\1\6\2\0\1\76"+
"\1\77\13\0\1\77\44\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\26\7\24\0\1\10\3\0\1\10\70\0\6\100\2\0"+
"\70\100\2\0\1\101\1\0\1\101\1\0\1\102\6\0"+
"\2\101\1\0\1\101\1\0\1\101\3\0\1\101\2\0"+
"\26\101\23\0\1\103\1\0\1\103\1\0\1\104\2\0"+
"\1\105\3\0\2\103\1\0\1\103\1\0\1\103\3\0"+
"\1\103\2\0\26\103\33\0\1\106\1\107\44\0\1\110"+
"\77\0\1\111\20\0\1\112\12\0\1\112\1\113\1\114"+
"\1\76\1\77\12\0\1\77\10\0\1\114\34\0\1\115"+
"\1\76\1\77\13\0\1\77\7\0\1\114\34\0\1\115"+
"\12\0\1\115\2\0\1\116\101\0\1\117\36\0\1\120"+
"\3\0\1\121\13\0\7\21\1\0\13\21\1\122\1\123"+
"\53\21\25\0\1\124\53\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\1\7\1\125"+
"\10\7\1\126\14\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\4\7\1\127"+
"\22\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\20\7\1\130\6\7\22\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\125\2\0"+
"\1\7\1\126\24\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\4\7\1\127\21\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\17\7\1\130\6\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\131\2\0"+
"\26\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\132"+
"\7\7\1\133\6\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\13\7\1\134\12\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\12\7\1\135\3\7\1\136\3\7\1\137\3\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\12\7\1\131\14\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\7\7\1\132\10\7\1\133\6\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\14\7\1\134\12\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\13\7\1\135"+
"\3\7\1\136\3\7\1\137\3\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\1\140\3\7\1\141\15\7\1\142\4\7\22\0\2\7"+
"\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+
"\5\0\3\7\1\143\23\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\5\0\13\7"+
"\1\7\3\0\1\7\2\0\1\140\3\7\1\141\14\7"+
"\1\142\4\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+
"\1\143\22\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\12\7"+
"\1\144\13\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\5\0\17\7\1\145\7\7"+
"\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+
"\1\0\1\7\5\0\1\7\1\146\5\7\1\147\2\7"+
"\1\150\14\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\5\0\17\7\1\151\7\7"+
"\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+
"\1\0\1\7\5\0\1\7\1\152\25\7\22\0\2\7"+
"\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+
"\5\0\7\7\1\153\17\7\62\0\1\154\16\0\1\155"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\16\7"+
"\1\145\7\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\146\2\0\1\7"+
"\1\147\5\7\1\150\16\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\16\7\1\151\7\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\1\7\1\152\24\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\7\7\1\153\16\7\63\0\1\154\15\0\1\155"+
"\77\0\1\156\3\0\1\157\73\0\1\160\1\0\1\161"+
"\75\0\1\162\77\0\1\163\104\0\1\164\100\0\1\165"+
"\71\0\1\166\17\0\7\65\2\0\13\65\2\0\52\65"+
"\2\0\1\167\1\0\1\167\1\0\1\170\6\0\2\167"+
"\1\0\1\167\1\0\1\167\3\0\1\171\1\0\27\167"+
"\21\0\7\172\1\0\70\172\1\0\2\72\1\0\2\72"+
"\6\0\3\72\1\0\1\72\1\0\1\72\5\0\27\72"+
"\21\0\6\173\2\0\70\173\1\0\1\115\12\0\1\115"+
"\2\0\1\174\61\0\1\175\12\0\1\175\4\0\1\175"+
"\40\0\1\175\15\0\6\100\1\176\1\0\70\100\1\0"+
"\2\101\1\0\2\101\6\0\3\101\1\0\1\101\1\0"+
"\1\101\5\0\27\101\21\0\6\177\2\0\70\177\1\0"+
"\2\103\1\0\2\103\6\0\3\103\1\0\1\103\1\0"+
"\1\103\5\0\27\103\21\0\6\200\2\0\70\200\7\106"+
"\1\0\70\106\13\201\1\202\64\201\1\0\1\112\12\0"+
"\1\112\2\0\1\203\1\77\12\0\1\77\45\0\2\113"+
"\11\0\1\113\1\0\1\113\1\204\1\113\1\0\1\205"+
"\6\0\1\113\1\0\1\113\1\0\1\205\1\113\5\0"+
"\1\113\5\0\1\113\3\0\1\113\22\0\1\114\12\0"+
"\1\114\2\0\1\206\61\0\1\115\12\0\1\115\3\0"+
"\1\77\12\0\1\77\44\0\7\21\1\0\70\21\25\0"+
"\1\207\53\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\2\7\1\210\24\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\20\7\1\211\6\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\27\7\2\0\1\212\17\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\4\7\1\213"+
"\22\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\5\7\1\214\21\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\1\215\26\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\5\0\1\7"+
"\1\216\25\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\5\0\15\7\1\217\11\7"+
"\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+
"\1\0\1\7\5\0\1\7\1\220\10\7\1\221\10\7"+
"\1\222\3\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\5\0\11\7\1\223\1\7"+
"\1\224\13\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\5\0\5\7\1\225\21\7"+
"\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+
"\1\0\1\7\5\0\10\7\1\226\16\7\22\0\2\7"+
"\1\0\1\167\1\0\1\167\3\0\1\167\1\171\1\0"+
"\26\167\21\0\7\172\1\0\16\172\1\173\51\172\1\0"+
"\2\72\1\0\2\72\6\0\3\72\1\0\1\72\1\0"+
"\1\72\3\0\1\72\2\0\26\72\21\0\6\174\2\0"+
"\70\174\1\0\1\115\12\0\1\115\2\0\1\175\61\0"+
"\1\176\12\0\1\176\4\0\1\176\40\0\1\176\15\0"+
"\6\100\1\177\1\0\70\100\1\0\2\101\1\0\2\101"+
"\6\0\3\101\1\0\1\101\1\0\1\101\3\0\1\101"+
"\2\0\26\101\21\0\6\200\2\0\70\200\1\0\2\103"+
"\1\0\2\103\6\0\3\103\1\0\1\103\1\0\1\103"+
"\3\0\1\103\2\0\26\103\21\0\6\201\2\0\70\201"+
"\7\106\1\0\70\106\13\202\1\203\64\202\1\0\1\112"+
"\12\0\1\112\2\0\1\204\1\77\13\0\1\77\44\0"+
"\2\113\11\0\1\113\1\0\1\113\1\205\1\113\1\0"+
"\1\206\7\0\1\113\1\0\1\113\1\0\1\206\1\113"+
"\4\0\1\113\5\0\1\113\3\0\1\113\22\0\1\114"+
"\12\0\1\114\2\0\1\207\61\0\1\115\12\0\1\115"+
"\3\0\1\77\13\0\1\77\43\0\7\21\1\0\70\21"+
"\25\0\1\210\53\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\17\7"+
"\1\211\6\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\2\7"+
"\1\212\23\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\26\7"+
"\2\0\1\213\17\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\4\7"+
"\1\214\21\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\5\7"+
"\1\215\20\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\1\216"+
"\25\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\1\7\1\217"+
"\24\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\14\7\1\220"+
"\11\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\221\2\0\1\7\1\222"+
"\20\7\1\223\3\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\11\7\1\224\1\225\13\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\5\7\1\226\20\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\10\7\1\227\15\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\3\7\1\230\22\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\3\7\1\231\5\7\1\232\14\7\22\0\2\7"+
"\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+
"\5\0\3\7\1\227\23\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\5\0\3\7"+
"\1\230\5\7\1\231\15\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\5\0\20\7"+
"\1\232\6\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\5\0\13\7\1\233\13\7"+
"\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+
"\1\0\1\7\5\0\1\234\26\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\11\7\1\235\15\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\13\7\1\236"+
"\4\7\1\237\6\7\51\0\1\240\3\0\1\241\123\0"+
"\1\242\77\0\1\243\20\0\2\167\1\0\2\167\6\0"+
"\3\167\1\0\1\167\1\0\1\167\5\0\27\167\21\0"+
"\6\244\2\0\70\244\6\173\1\245\1\0\70\173\1\0"+
"\1\175\12\0\1\175\63\0\6\177\1\246\1\0\70\177"+
"\6\200\1\247\1\0\70\200\13\201\1\250\64\201\12\251"+
"\1\252\1\202\64\251\1\0\1\115\12\0\1\115\64\0"+
"\2\253\11\0\1\253\1\0\1\253\1\174\1\253\10\0"+
"\1\253\1\0\1\253\2\0\1\253\5\0\1\253\5\0"+
"\1\253\3\0\1\253\22\0\1\175\12\0\1\175\4\0"+
"\1\254\40\0\1\254\34\0\1\174\60\0\25\207\1\255"+
"\52\207\1\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\3\7\1\256\23\7\22\0"+
"\3\0\1\7\2\0\1\233\25\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+
"\1\7\2\0\17\7\1\234\6\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+
"\1\7\2\0\12\7\1\235\13\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+
"\1\7\2\0\11\7\1\236\14\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+
"\1\7\2\0\12\7\1\237\4\7\1\240\6\7\52\0"+
"\1\241\3\0\1\242\122\0\1\243\77\0\1\244\20\0"+
"\2\167\1\0\2\167\6\0\3\167\1\0\1\167\1\0"+
"\1\167\3\0\1\167\2\0\26\167\21\0\6\245\2\0"+
"\70\245\1\0\2\246\11\0\1\246\1\0\1\246\1\0"+
"\1\246\11\0\1\246\1\0\1\246\2\0\1\246\4\0"+
"\1\246\5\0\1\246\3\0\1\246\21\0\6\174\1\247"+
"\1\0\70\174\1\0\1\176\12\0\1\176\63\0\6\200"+
"\1\250\1\0\70\200\6\201\1\251\1\0\70\201\13\202"+
"\1\252\64\202\12\253\1\254\1\203\64\253\1\0\1\115"+
"\12\0\1\115\64\0\2\255\11\0\1\255\1\0\1\255"+
"\1\175\1\255\11\0\1\255\1\0\1\255\2\0\1\255"+
"\4\0\1\255\5\0\1\255\3\0\1\255\22\0\1\176"+
"\12\0\1\176\4\0\1\256\40\0\1\256\34\0\1\175"+
"\60\0\25\210\1\257\52\210\1\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\17\7\1\260\6\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\3\7\1\261\22\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\3\7\1\262\22\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\3\7\1\263\22\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\10\7\1\264\15\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\4\7\1\265\21\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\3\7\1\266\22\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\3\7\1\267\22\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\11\7\1\270\14\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\4\7\1\271\21\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\7\7\1\272\16\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+
"\2\0\3\7\1\273\22\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\274"+
"\2\0\26\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\1\7"+
"\1\275\24\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\3\0\1\7\2\0\1\276"+
"\25\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\17\7\1\277"+
"\6\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\4\7\1\300"+
"\21\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\4\7\1\301"+
"\21\7\22\0\2\302\1\0\2\302\6\0\3\302\1\0"+
"\1\302\1\0\1\302\3\0\1\302\2\0\26\302\21\0"+
"\6\245\1\303\1\0\70\245\1\0\2\304\11\0\1\304"+
"\1\0\1\304\1\0\1\304\11\0\1\304\1\0\1\304"+
"\2\0\1\304\4\0\1\304\5\0\1\304\3\0\1\304"+
"\21\0\12\202\1\305\1\252\64\202\13\253\1\306\64\253"+
"\1\0\2\255\11\0\1\255\1\0\1\255\1\0\1\255"+
"\1\0\1\206\7\0\1\255\1\0\1\255\1\0\1\206"+
"\1\255\4\0\1\255\5\0\1\255\3\0\1\255\21\0"+
"\25\210\1\307\52\210\1\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\4\7\1\310\21\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\12\7\1\311\13\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\11\7\1\312\14\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\4\7\1\313\21\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\6\7\1\314\17\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\10\7\1\315\15\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\15\7\1\316\10\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\12\7\1\317\13\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\20\7\1\320\5\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\3\7\1\321\22\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+
"\3\7\1\322\22\7\22\0\2\323\11\0\1\323\1\0"+
"\1\323\1\0\1\323\11\0\1\323\1\0\1\323\2\0"+
"\1\323\4\0\1\323\5\0\1\323\3\0\1\323\21\0"+
"\12\253\1\254\1\306\64\253\25\210\1\324\52\210\1\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\20\7\1\257\6\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\3\7\1\260\23\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\3\7\1\261"+
"\23\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\10\7\1\262\16\7\22\0"+
"\1\7\3\0\1\7\2\0\5\7\1\325\20\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\4\7\1\263\22\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\3\7\1\264\23\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\11\7\1\265"+
"\15\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\3\7\1\266\23\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\4\7\1\267\22\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\7\7\1\270\17\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\3\7\1\271"+
"\23\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\12\7\1\272\14\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\1\7\1\273\25\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\1\274\26\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\5\0\20\7\1\275\6\7"+
"\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+
"\1\0\1\7\5\0\4\7\1\276\22\7\22\0\2\7"+
"\1\7\3\0\1\7\2\0\1\326\25\7\22\0\2\7"+
"\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+
"\5\0\4\7\1\277\22\7\22\0\2\300\1\0\2\300"+
"\6\0\3\300\1\0\1\300\1\0\1\300\5\0\27\300"+
"\21\0\6\244\1\301\1\0\70\244\12\201\1\302\1\250"+
"\64\201\13\251\1\303\64\251\1\0\2\253\11\0\1\253"+
"\1\0\1\253\1\0\1\253\1\0\1\205\6\0\1\253"+
"\1\0\1\253\1\0\1\205\1\253\5\0\1\253\5\0"+
"\1\253\3\0\1\253\21\0\25\207\1\304\52\207\1\0"+
"\3\0\1\7\2\0\10\7\1\327\15\7\22\0\2\7"+
"\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+
"\3\0\1\7\2\0\1\330\25\7\22\0\2\172\11\0"+
"\1\172\1\0\1\172\1\0\1\172\11\0\1\172\1\0"+
"\1\172\2\0\1\172\4\0\1\172\5\0\1\172\3\0"+
"\1\172\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\7\2\0\1\7\1\331"+
"\24\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\3\0\1\332\2\0\26\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\4\7\1\305\22\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\13\7\1\306\13\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\11\7\1\307"+
"\15\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\4\7\1\310\22\7\22\0"+
"\1\7\3\0\1\7\2\0\6\7\1\333\17\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\6\7\1\311\20\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\10\7\1\312\16\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\16\7\1\313"+
"\10\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\13\7\1\314\13\7\22\0"+
"\1\7\3\0\1\7\2\0\3\7\1\334\22\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\21\7\1\315\5\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\3\7\1\316\23\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\3\7\1\317"+
"\23\7\21\0\12\251\1\252\1\303\64\251\25\207\1\320"+
"\52\207\1\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\5\7\1\321\21\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\1\322\26\7\22\0\2\7\1\0\2\7"+
"\6\0\3\7\1\0\1\7\1\0\1\7\5\0\10\7"+
"\1\323\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+
"\1\0\1\7\1\0\1\7\5\0\1\324\26\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\1\7\1\325\25\7\22\0\2\7\1\0"+
"\2\7\6\0\3\7\1\0\1\7\1\0\1\7\5\0"+
"\12\7\1\326\14\7\22\0\2\7\1\0\2\7\6\0"+
"\3\7\1\0\1\7\1\0\1\7\5\0\6\7\1\327"+
"\20\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+
"\1\7\1\0\1\7\5\0\3\7\1\330\23\7\22\0"+
"\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+
"\1\7\5\0\3\7\1\331\23\7\21\0";
"\1\7\3\0\1\7\2\0\3\7\1\335\22\7\21\0";
private static int [] zzUnpackTrans() {
int [] result = new int[9088];
int [] result = new int[9344];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -464,13 +494,14 @@ class _JetLexer implements FlexLexer {
"\1\1\1\11\1\1\1\0\1\11\1\1\1\0\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\0\27\1\1\0"+
"\2\1\10\11\1\1\1\0\2\11\1\0\1\11\1\1"+
"\1\11\2\0\2\1\4\0\3\1\1\11\27\1\2\11"+
"\1\0\3\11\1\0\1\1\1\11\1\1\2\0\22\1"+
"\3\11\2\0\13\1\1\11\11\1";
"\2\1\10\11\1\1\1\0\2\11\1\1\1\0\1\11"+
"\1\1\1\11\2\0\2\1\4\0\3\1\1\11\27\1"+
"\2\11\2\0\3\11\1\0\1\1\1\11\1\1\2\0"+
"\22\1\2\11\1\0\1\11\2\0\13\1\1\0\1\11"+
"\11\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[217];
int [] result = new int[221];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -809,7 +840,7 @@ class _JetLexer implements FlexLexer {
{ pushState(STRING); return JetTokens.OPEN_QUOTE;
}
case 98: break;
case 70:
case 71:
{ return JetTokens.FOR_KEYWORD ;
}
case 99: break;
@@ -1106,7 +1137,7 @@ class _JetLexer implements FlexLexer {
{ return JetTokens.TYPE_KEYWORD ;
}
case 171: break;
case 71:
case 70:
{ return JetTokens.FUN_KEYWORD ;
}
case 172: break;
@@ -18,4 +18,5 @@ fun demo() {
"foo${bar + map { "foo" }}sdfsdf"
"foo${bar + map {
"foo$sdf${ buzz{}}" }}sdfsdf"
"a<!ILLEGAL_ESCAPE_SEQUENCE!>\u<!> <!ILLEGAL_ESCAPE_SEQUENCE!>\u<!>0 <!ILLEGAL_ESCAPE_SEQUENCE!>\u<!>00 <!ILLEGAL_ESCAPE_SEQUENCE!>\u<!>000 \u0000 \u0AaA <!ILLEGAL_ESCAPE_SEQUENCE!>\u<!>0AAz.length( ) + \u0022b"
}
@@ -23,4 +23,16 @@ fun test() {
<!ERROR_COMPILE_TIME_VALUE!>'\123'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\ra'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\000'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\000'<!>
'\u0000'
'\u000a'
'\u000A'
<!ERROR_COMPILE_TIME_VALUE!>'\u'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\u0'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\u00'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\u000'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\u000z'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\\u000'<!>
<!ERROR_COMPILE_TIME_VALUE!>'\'<!>
}