Parse longs with 'L' suffix. Report error if 'l' used.

This commit is contained in:
Natalia Ukhorskaya
2013-12-04 14:30:32 +04:00
parent 53d17bc4ce
commit e5a3518248
17 changed files with 605 additions and 368 deletions
@@ -466,6 +466,7 @@ public interface Errors {
// Compile-time values
DiagnosticFactory0<JetExpression> INTEGER_OVERFLOW = DiagnosticFactory0.create(WARNING);
DiagnosticFactory0<JetConstantExpression> WRONG_LONG_SUFFIX = DiagnosticFactory0.create(ERROR, LONG_LITERAL_SUFFIX);
DiagnosticFactory0<JetConstantExpression> INT_LITERAL_OUT_OF_RANGE = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<JetConstantExpression> FLOAT_LITERAL_OUT_OF_RANGE = DiagnosticFactory0.create(ERROR);
DiagnosticFactory2<JetConstantExpression, String, JetType> CONSTANT_EXPECTED_TYPE_MISMATCH = DiagnosticFactory2.create(ERROR);
@@ -449,6 +449,20 @@ public class PositioningStrategies {
}
};
public static final PositioningStrategy<JetElement> LONG_LITERAL_SUFFIX = new PositioningStrategy<JetElement>() {
@NotNull
@Override
public List<TextRange> mark(@NotNull JetElement element) {
if (element instanceof JetConstantExpression) {
if (element.getNode().getElementType() == JetNodeTypes.INTEGER_CONSTANT) {
int endOffset = element.getTextRange().getEndOffset();
return Collections.singletonList(TextRange.create(endOffset - 1, endOffset));
}
}
return super.mark(element);
}
};
private PositioningStrategies() {
}
}
@@ -299,6 +299,7 @@ public class DefaultErrorMessages {
MAP.put(CONSTANT_EXPECTED_TYPE_MISMATCH, "An {0} literal does not conform to the expected type {1}", TO_STRING, RENDER_TYPE);
MAP.put(INTEGER_OVERFLOW, "This operation has led to an overflow");
MAP.put(INT_LITERAL_OUT_OF_RANGE, "The value is out of range");
MAP.put(WRONG_LONG_SUFFIX, "Use 'L' instead of 'l'");
MAP.put(FLOAT_LITERAL_OUT_OF_RANGE, "The value is out of range");
MAP.put(INCORRECT_CHARACTER_LITERAL, "Incorrect character literal");
MAP.put(EMPTY_CHARACTER_LITERAL, "Empty character literal");
@@ -33,7 +33,6 @@ import org.jetbrains.jet.lang.resolve.calls.tasks.ExplicitReceiverKind
import org.jetbrains.jet.lang.types.TypeUtils
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedValueArgument
import org.jetbrains.jet.JetNodeTypes
import java.lang.Long.parseLong as javaParseLong
import java.math.BigInteger
import org.jetbrains.jet.lang.diagnostics.Errors
import com.intellij.psi.util.PsiTreeUtil
@@ -93,7 +92,9 @@ public class ConstantExpressionEvaluator private (val trace: BindingTrace) : Jet
}
if (result == null && expression.getNode().getElementType() == JetNodeTypes.NULL) return NullValue.NULL
return createCompileTimeConstant(result, expression, expectedType)
fun isLongWithSuffix() = expression.getNode().getElementType() == JetNodeTypes.INTEGER_CONSTANT && hasLongSuffix(text)
return createCompileTimeConstant(result, expression, expectedType, !isLongWithSuffix())
}
override fun visitParenthesizedExpression(expression: JetParenthesizedExpression, expectedType: JetType?): CompileTimeConstant<*>? {
@@ -437,12 +438,17 @@ public fun NumberValueTypeConstructor<out Number?>.getCompileTimeConstantForNumb
return createConvertibleCompileTimeConstant(this.getValue(), defaultType)
}
private fun hasLongSuffix(text: String) = text.endsWith('l') || text.endsWith('L')
public fun parseLong(text: String): Long? {
try {
fun substringLongSuffix(s: String) = if (hasLongSuffix(text)) s.substring(0, s.length - 1) else s
fun parseLong(text: String, radix: Int) = java.lang.Long.parseLong(substringLongSuffix(text), radix)
return when {
text.startsWith("0x") || text.startsWith("0X") -> javaParseLong(text.substring(2), 16)
text.startsWith("0b") || text.startsWith("0B") -> javaParseLong(text.substring(2), 2)
else -> javaParseLong(text)
text.startsWith("0x") || text.startsWith("0X") -> parseLong(text.substring(2), 16)
text.startsWith("0b") || text.startsWith("0B") -> parseLong(text.substring(2), 2)
else -> parseLong(text, 10)
}
}
catch (e: NumberFormatException) {
@@ -85,6 +85,11 @@ public class CompileTimeConstantChecker {
if (value == null) {
return reportError(INT_LITERAL_OUT_OF_RANGE.on(expression));
}
if (expression.getText().endsWith("l")) {
return reportError(WRONG_LONG_SUFFIX.on(expression));
}
if (!noExpectedTypeOrError(expectedType)) {
JetType valueType = value.getType(KotlinBuiltIns.getInstance());
if (!JetTypeChecker.INSTANCE.isSubtypeOf(valueType, expectedType)) {
@@ -88,9 +88,10 @@ EOL_COMMENT="/""/"[^\n]*
SHEBANG_COMMENT="#!"[^\n]*
INTEGER_LITERAL={DECIMAL_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}|{BIN_INTEGER_LITERAL}
DECIMAL_INTEGER_LITERAL=(0|([1-9]({DIGIT})*))
HEX_INTEGER_LITERAL=0[Xx]({HEX_DIGIT})*
BIN_INTEGER_LITERAL=0[Bb]({DIGIT})*
DECIMAL_INTEGER_LITERAL=(0|([1-9]({DIGIT})*))({LONG_SUFFIX})?
HEX_INTEGER_LITERAL=0[Xx]({HEX_DIGIT})*({LONG_SUFFIX})?
BIN_INTEGER_LITERAL=0[Bb]({DIGIT})*({LONG_SUFFIX})?
LONG_SUFFIX=[Ll]
//FLOAT_LITERAL=(({FLOATING_POINT_LITERAL1})[Ff])|(({FLOATING_POINT_LITERAL2})[Ff])|(({FLOATING_POINT_LITERAL3})[Ff])|(({FLOATING_POINT_LITERAL4})[Ff])
//DOUBLE_LITERAL=(({FLOATING_POINT_LITERAL1})[Dd]?)|(({FLOATING_POINT_LITERAL2})[Dd]?)|(({FLOATING_POINT_LITERAL3})[Dd]?)|(({FLOATING_POINT_LITERAL4})[Dd])
@@ -1,4 +1,4 @@
/* The following code was generated by JFlex 1.4.3 on 12/4/13 10:49 AM */
/* The following code was generated by JFlex 1.4.3 on 12/4/13 1:36 PM */
package org.jetbrains.jet.lexer;
@@ -14,7 +14,7 @@ import org.jetbrains.jet.lexer.JetTokens;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 12/4/13 10:49 AM from the specification file
* on 12/4/13 1:36 PM from the specification file
* <tt>C:/Development/kotlin/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
*/
class _JetLexer implements FlexLexer {
@@ -44,73 +44,73 @@ class _JetLexer implements FlexLexer {
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
"\11\0\1\3\1\7\1\0\1\3\23\0\1\3\1\14\1\27\1\13"+
"\1\10\1\71\1\67\1\25\1\75\1\76\1\37\1\64\1\100\1\23"+
"\1\20\1\12\1\15\11\1\1\72\1\77\1\65\1\62\1\66\1\63"+
"\1\11\1\2\1\17\2\2\1\22\1\21\11\4\1\24\3\4\1\57"+
"\3\4\1\16\2\4\1\73\1\26\1\74\1\0\1\4\1\6\1\45"+
"\1\51\1\40\1\61\1\43\1\55\1\47\1\34\1\35\1\52\1\46"+
"\1\54\1\4\1\42\1\41\1\44\1\4\1\50\1\36\1\33\1\30"+
"\1\60\1\53\1\16\1\56\1\4\1\31\1\70\1\32\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"+
"\1\0\46\4\1\0\5\4\4\0\202\4\10\0\105\4\1\0\46\4"+
"\2\0\2\4\6\0\20\4\41\0\46\4\2\0\1\4\7\0\47\4"+
"\110\0\33\4\5\0\3\4\56\0\32\4\5\0\13\4\25\0\12\5"+
"\4\0\2\4\1\0\143\4\1\0\1\4\17\0\2\4\7\0\2\4"+
"\12\5\3\4\2\0\1\4\20\0\1\4\1\0\36\4\35\0\3\4"+
"\60\0\46\4\13\0\1\4\u0152\0\66\4\3\0\1\4\22\0\1\4"+
"\7\0\12\4\4\0\12\5\25\0\10\4\2\0\2\4\2\0\26\4"+
"\1\0\7\4\1\0\1\4\3\0\4\4\3\0\1\4\36\0\2\4"+
"\1\0\3\4\4\0\12\5\2\4\23\0\6\4\4\0\2\4\2\0"+
"\26\4\1\0\7\4\1\0\2\4\1\0\2\4\1\0\2\4\37\0"+
"\4\4\1\0\1\4\7\0\12\5\2\0\3\4\20\0\11\4\1\0"+
"\3\4\1\0\26\4\1\0\7\4\1\0\2\4\1\0\5\4\3\0"+
"\1\4\22\0\1\4\17\0\2\4\4\0\12\5\25\0\10\4\2\0"+
"\2\4\2\0\26\4\1\0\7\4\1\0\2\4\1\0\5\4\3\0"+
"\1\4\36\0\2\4\1\0\3\4\4\0\12\5\1\0\1\4\21\0"+
"\1\4\1\0\6\4\3\0\3\4\1\0\4\4\3\0\2\4\1\0"+
"\1\4\1\0\2\4\3\0\2\4\3\0\3\4\3\0\10\4\1\0"+
"\3\4\55\0\11\5\25\0\10\4\1\0\3\4\1\0\27\4\1\0"+
"\12\4\1\0\5\4\46\0\2\4\4\0\12\5\25\0\10\4\1\0"+
"\3\4\1\0\27\4\1\0\12\4\1\0\5\4\3\0\1\4\40\0"+
"\1\4\1\0\2\4\4\0\12\5\25\0\10\4\1\0\3\4\1\0"+
"\27\4\1\0\20\4\46\0\2\4\4\0\12\5\25\0\22\4\3\0"+
"\30\4\1\0\11\4\1\0\1\4\2\0\7\4\72\0\60\4\1\0"+
"\2\4\14\0\7\4\11\0\12\5\47\0\2\4\1\0\1\4\2\0"+
"\2\4\1\0\1\4\2\0\1\4\6\0\4\4\1\0\7\4\1\0"+
"\3\4\1\0\1\4\1\0\1\4\2\0\2\4\1\0\4\4\1\0"+
"\2\4\11\0\1\4\2\0\5\4\1\0\1\4\11\0\12\5\2\0"+
"\2\4\42\0\1\4\37\0\12\5\26\0\10\4\1\0\42\4\35\0"+
"\4\4\164\0\42\4\1\0\5\4\1\0\2\4\25\0\12\5\6\0"+
"\6\4\112\0\46\4\12\0\51\4\7\0\132\4\5\0\104\4\5\0"+
"\122\4\6\0\7\4\1\0\77\4\1\0\1\4\1\0\4\4\2\0"+
"\7\4\1\0\1\4\1\0\4\4\2\0\47\4\1\0\1\4\1\0"+
"\4\4\2\0\37\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0"+
"\1\4\1\0\4\4\2\0\7\4\1\0\7\4\1\0\27\4\1\0"+
"\37\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0\47\4\1\0"+
"\23\4\16\0\11\5\56\0\125\4\14\0\u026c\4\2\0\10\4\12\0"+
"\32\4\5\0\113\4\25\0\15\4\1\0\4\4\16\0\22\4\16\0"+
"\22\4\16\0\15\4\1\0\3\4\17\0\64\4\43\0\1\4\4\0"+
"\1\4\3\0\12\5\46\0\12\5\6\0\130\4\10\0\51\4\127\0"+
"\35\4\51\0\12\5\36\4\2\0\5\4\u038b\0\154\4\224\0\234\4"+
"\4\0\132\4\6\0\26\4\2\0\6\4\2\0\46\4\2\0\6\4"+
"\2\0\10\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0\37\4"+
"\2\0\65\4\1\0\7\4\1\0\1\4\3\0\3\4\1\0\7\4"+
"\3\0\4\4\2\0\6\4\4\0\15\4\5\0\3\4\1\0\7\4"+
"\164\0\1\4\15\0\1\4\202\0\1\4\4\0\1\4\2\0\12\4"+
"\1\0\1\4\3\0\5\4\6\0\1\4\1\0\1\4\1\0\1\4"+
"\1\0\4\4\1\0\3\4\1\0\7\4\3\0\3\4\5\0\5\4"+
"\u0ebb\0\2\4\52\0\5\4\5\0\2\4\4\0\126\4\6\0\3\4"+
"\1\0\132\4\1\0\4\4\5\0\50\4\4\0\136\4\21\0\30\4"+
"\70\0\20\4\u0200\0\u19b6\4\112\0\u51a6\4\132\0\u048d\4\u0773\0\u2ba4\4"+
"\u215c\0\u012e\4\2\0\73\4\225\0\7\4\14\0\5\4\5\0\1\4"+
"\1\0\12\4\1\0\15\4\1\0\5\4\1\0\1\4\1\0\2\4"+
"\1\0\2\4\1\0\154\4\41\0\u016b\4\22\0\100\4\2\0\66\4"+
"\50\0\14\4\164\0\5\4\1\0\207\4\23\0\12\5\7\0\32\4"+
"\6\0\32\4\13\0\131\4\3\0\6\4\2\0\6\4\2\0\6\4"+
"\2\0\3\4\43\0";
"\11\0\1\3\1\7\1\0\1\3\23\0\1\3\1\14\1\30\1\13"+
"\1\10\1\72\1\70\1\26\1\76\1\77\1\40\1\65\1\101\1\24"+
"\1\21\1\12\1\15\11\1\1\73\1\100\1\66\1\63\1\67\1\64"+
"\1\11\1\2\1\17\2\2\1\23\1\22\5\4\1\20\3\4\1\25"+
"\3\4\1\60\3\4\1\16\2\4\1\74\1\27\1\75\1\0\1\4"+
"\1\6\1\46\1\52\1\41\1\62\1\44\1\56\1\50\1\35\1\36"+
"\1\53\1\47\1\55\1\4\1\43\1\42\1\45\1\4\1\51\1\37"+
"\1\34\1\31\1\61\1\54\1\16\1\57\1\4\1\32\1\71\1\33"+
"\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\1\0\46\4\1\0\5\4\4\0\202\4\10\0\105\4"+
"\1\0\46\4\2\0\2\4\6\0\20\4\41\0\46\4\2\0\1\4"+
"\7\0\47\4\110\0\33\4\5\0\3\4\56\0\32\4\5\0\13\4"+
"\25\0\12\5\4\0\2\4\1\0\143\4\1\0\1\4\17\0\2\4"+
"\7\0\2\4\12\5\3\4\2\0\1\4\20\0\1\4\1\0\36\4"+
"\35\0\3\4\60\0\46\4\13\0\1\4\u0152\0\66\4\3\0\1\4"+
"\22\0\1\4\7\0\12\4\4\0\12\5\25\0\10\4\2\0\2\4"+
"\2\0\26\4\1\0\7\4\1\0\1\4\3\0\4\4\3\0\1\4"+
"\36\0\2\4\1\0\3\4\4\0\12\5\2\4\23\0\6\4\4\0"+
"\2\4\2\0\26\4\1\0\7\4\1\0\2\4\1\0\2\4\1\0"+
"\2\4\37\0\4\4\1\0\1\4\7\0\12\5\2\0\3\4\20\0"+
"\11\4\1\0\3\4\1\0\26\4\1\0\7\4\1\0\2\4\1\0"+
"\5\4\3\0\1\4\22\0\1\4\17\0\2\4\4\0\12\5\25\0"+
"\10\4\2\0\2\4\2\0\26\4\1\0\7\4\1\0\2\4\1\0"+
"\5\4\3\0\1\4\36\0\2\4\1\0\3\4\4\0\12\5\1\0"+
"\1\4\21\0\1\4\1\0\6\4\3\0\3\4\1\0\4\4\3\0"+
"\2\4\1\0\1\4\1\0\2\4\3\0\2\4\3\0\3\4\3\0"+
"\10\4\1\0\3\4\55\0\11\5\25\0\10\4\1\0\3\4\1\0"+
"\27\4\1\0\12\4\1\0\5\4\46\0\2\4\4\0\12\5\25\0"+
"\10\4\1\0\3\4\1\0\27\4\1\0\12\4\1\0\5\4\3\0"+
"\1\4\40\0\1\4\1\0\2\4\4\0\12\5\25\0\10\4\1\0"+
"\3\4\1\0\27\4\1\0\20\4\46\0\2\4\4\0\12\5\25\0"+
"\22\4\3\0\30\4\1\0\11\4\1\0\1\4\2\0\7\4\72\0"+
"\60\4\1\0\2\4\14\0\7\4\11\0\12\5\47\0\2\4\1\0"+
"\1\4\2\0\2\4\1\0\1\4\2\0\1\4\6\0\4\4\1\0"+
"\7\4\1\0\3\4\1\0\1\4\1\0\1\4\2\0\2\4\1\0"+
"\4\4\1\0\2\4\11\0\1\4\2\0\5\4\1\0\1\4\11\0"+
"\12\5\2\0\2\4\42\0\1\4\37\0\12\5\26\0\10\4\1\0"+
"\42\4\35\0\4\4\164\0\42\4\1\0\5\4\1\0\2\4\25\0"+
"\12\5\6\0\6\4\112\0\46\4\12\0\51\4\7\0\132\4\5\0"+
"\104\4\5\0\122\4\6\0\7\4\1\0\77\4\1\0\1\4\1\0"+
"\4\4\2\0\7\4\1\0\1\4\1\0\4\4\2\0\47\4\1\0"+
"\1\4\1\0\4\4\2\0\37\4\1\0\1\4\1\0\4\4\2\0"+
"\7\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0\7\4\1\0"+
"\27\4\1\0\37\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0"+
"\47\4\1\0\23\4\16\0\11\5\56\0\125\4\14\0\u026c\4\2\0"+
"\10\4\12\0\32\4\5\0\113\4\25\0\15\4\1\0\4\4\16\0"+
"\22\4\16\0\22\4\16\0\15\4\1\0\3\4\17\0\64\4\43\0"+
"\1\4\4\0\1\4\3\0\12\5\46\0\12\5\6\0\130\4\10\0"+
"\51\4\127\0\35\4\51\0\12\5\36\4\2\0\5\4\u038b\0\154\4"+
"\224\0\234\4\4\0\132\4\6\0\26\4\2\0\6\4\2\0\46\4"+
"\2\0\6\4\2\0\10\4\1\0\1\4\1\0\1\4\1\0\1\4"+
"\1\0\37\4\2\0\65\4\1\0\7\4\1\0\1\4\3\0\3\4"+
"\1\0\7\4\3\0\4\4\2\0\6\4\4\0\15\4\5\0\3\4"+
"\1\0\7\4\164\0\1\4\15\0\1\4\202\0\1\4\4\0\1\4"+
"\2\0\12\4\1\0\1\4\3\0\5\4\6\0\1\4\1\0\1\4"+
"\1\0\1\4\1\0\4\4\1\0\3\4\1\0\7\4\3\0\3\4"+
"\5\0\5\4\u0ebb\0\2\4\52\0\5\4\5\0\2\4\4\0\126\4"+
"\6\0\3\4\1\0\132\4\1\0\4\4\5\0\50\4\4\0\136\4"+
"\21\0\30\4\70\0\20\4\u0200\0\u19b6\4\112\0\u51a6\4\132\0\u048d\4"+
"\u0773\0\u2ba4\4\u215c\0\u012e\4\2\0\73\4\225\0\7\4\14\0\5\4"+
"\5\0\1\4\1\0\12\4\1\0\15\4\1\0\5\4\1\0\1\4"+
"\1\0\2\4\1\0\2\4\1\0\154\4\41\0\u016b\4\22\0\100\4"+
"\2\0\66\4\50\0\14\4\164\0\5\4\1\0\207\4\23\0\12\5"+
"\7\0\32\4\6\0\32\4\13\0\131\4\3\0\6\4\2\0\6\4"+
"\2\0\6\4\2\0\3\4\43\0";
/**
* Translates characters to character classes
@@ -128,24 +128,25 @@ class _JetLexer implements FlexLexer {
"\1\16\3\3\1\17\15\3\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\1\34\1\35\1\36\1\35\1\0\1\37\2\35"+
"\1\40\1\0\1\40\3\41\1\42\1\43\1\0\2\44"+
"\1\0\1\45\1\0\1\46\1\0\1\47\1\50\1\51"+
"\1\52\1\53\1\0\1\54\1\44\2\2\1\44\1\55"+
"\1\56\1\57\1\60\2\13\1\0\3\3\1\61\1\62"+
"\1\63\1\3\1\64\6\3\1\65\10\3\1\66\1\67"+
"\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77"+
"\1\100\1\101\1\0\1\102\2\103\2\0\1\40\1\104"+
"\1\105\1\106\1\44\1\3\2\0\1\107\1\110\1\111"+
"\1\112\4\0\1\113\4\3\1\114\10\3\1\115\4\3"+
"\1\116\1\117\2\3\1\120\1\121\1\122\2\0\2\40"+
"\1\45\1\46\1\123\1\124\2\44\1\0\1\125\1\3"+
"\1\126\1\3\1\127\4\3\1\130\1\131\4\3\1\132"+
"\1\3\1\133\1\101\1\0\1\134\1\135\1\136\1\137"+
"\1\3\1\140\3\3\1\141\1\142\1\143\1\0\1\3"+
"\1\144\1\3\1\145\1\3\1\146\1\147";
"\1\40\1\0\1\40\3\41\1\42\1\43\1\2\1\0"+
"\2\44\1\0\1\45\1\0\1\46\1\0\1\47\1\50"+
"\1\51\1\52\1\53\1\0\1\54\1\44\2\2\1\44"+
"\1\55\1\56\1\57\1\60\2\13\1\0\3\3\1\61"+
"\1\62\1\63\1\3\1\64\6\3\1\65\10\3\1\66"+
"\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\76"+
"\1\77\1\100\1\101\1\0\1\102\2\103\2\0\1\40"+
"\1\104\1\105\1\0\1\106\1\44\1\3\2\0\1\107"+
"\1\110\1\111\1\112\1\0\1\2\2\0\1\113\4\3"+
"\1\114\10\3\1\115\4\3\1\116\1\117\2\3\1\120"+
"\1\121\1\122\2\0\2\40\1\45\1\46\1\123\1\124"+
"\2\44\1\0\1\125\1\3\1\126\1\3\1\127\4\3"+
"\1\130\1\131\4\3\1\132\1\3\1\133\1\101\1\0"+
"\1\134\1\135\1\136\1\137\1\3\1\140\3\3\1\141"+
"\1\142\1\143\1\0\1\3\1\144\1\3\1\145\1\3"+
"\1\146\1\147";
private static int [] zzUnpackAction() {
int [] result = new int[230];
int [] result = new int[232];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -170,38 +171,38 @@ class _JetLexer implements FlexLexer {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\101\0\202\0\303\0\u0104\0\u0145\0\u0186\0\u01c7"+
"\0\u0208\0\u0249\0\u028a\0\u02cb\0\u030c\0\u034d\0\u038e\0\u03cf"+
"\0\u0410\0\u0451\0\u0492\0\u04d3\0\u0514\0\u0186\0\u0186\0\u0555"+
"\0\u0596\0\u05d7\0\u0618\0\u0659\0\u069a\0\u06db\0\u071c\0\u075d"+
"\0\u079e\0\u07df\0\u0820\0\u0861\0\u08a2\0\u08e3\0\u0924\0\u0965"+
"\0\u09a6\0\u0186\0\u09e7\0\u0a28\0\u0a69\0\u0aaa\0\u0aeb\0\u0b2c"+
"\0\u0b6d\0\u0186\0\u0186\0\u0186\0\u0186\0\u0186\0\u0186\0\u0bae"+
"\0\u0186\0\u0bef\0\u0c30\0\u0186\0\u0186\0\u0c71\0\u0cb2\0\u0cf3"+
"\0\u0d34\0\u0186\0\u0d75\0\u0db6\0\u0186\0\u0186\0\u0df7\0\u0186"+
"\0\u0e38\0\u0e79\0\u0eba\0\u0efb\0\u0f3c\0\u0f7d\0\u0186\0\u0fbe"+
"\0\u0fff\0\u0186\0\u1040\0\u1081\0\u10c2\0\u1103\0\u1144\0\u1185"+
"\0\u11c6\0\u0186\0\u0186\0\u0186\0\u0186\0\u0186\0\u1207\0\u1248"+
"\0\u1289\0\u12ca\0\u130b\0\u0208\0\u0208\0\u0208\0\u134c\0\u0186"+
"\0\u138d\0\u13ce\0\u140f\0\u1450\0\u1491\0\u14d2\0\u1513\0\u1554"+
"\0\u1595\0\u15d6\0\u1617\0\u1658\0\u1699\0\u16da\0\u171b\0\u0208"+
"\0\u175c\0\u0186\0\u0186\0\u0186\0\u0186\0\u0186\0\u0186\0\u0186"+
"\0\u0186\0\u0186\0\u179d\0\u17de\0\u0186\0\u0186\0\u181f\0\u1860"+
"\0\u18a1\0\u18e2\0\u0186\0\u0186\0\u0186\0\u1923\0\u0186\0\u1964"+
"\0\u19a5\0\u19e6\0\u1a27\0\u1a27\0\u0186\0\u1a68\0\u1aa9\0\u1aea"+
"\0\u1b2b\0\u0186\0\u1b6c\0\u1bad\0\u1bee\0\u1c2f\0\u0208\0\u1c70"+
"\0\u1cb1\0\u1cf2\0\u1d33\0\u1d74\0\u1db5\0\u1df6\0\u1e37\0\u0186"+
"\0\u1e78\0\u1eb9\0\u1efa\0\u1f3b\0\u0208\0\u0208\0\u1f7c\0\u1fbd"+
"\0\u0208\0\u0208\0\u0186\0\u1ffe\0\u203f\0\u0186\0\u2080\0\u0186"+
"\0\u0186\0\u0186\0\u0186\0\u20c1\0\u2102\0\u2102\0\u0208\0\u2143"+
"\0\u0208\0\u2184\0\u0208\0\u21c5\0\u2206\0\u2247\0\u2288\0\u0208"+
"\0\u0208\0\u22c9\0\u230a\0\u234b\0\u238c\0\u0208\0\u23cd\0\u0208"+
"\0\u0186\0\u240e\0\u0cb2\0\u0208\0\u0208\0\u0208\0\u244f\0\u0208"+
"\0\u2490\0\u24d1\0\u2512\0\u0208\0\u0208\0\u0208\0\u2553\0\u2594"+
"\0\u0208\0\u25d5\0\u0208\0\u2616\0\u0208\0\u0208";
"\0\0\0\102\0\204\0\306\0\u0108\0\u014a\0\u018c\0\u01ce"+
"\0\u0210\0\u0252\0\u0294\0\u02d6\0\u0318\0\u035a\0\u039c\0\u03de"+
"\0\u0420\0\u0462\0\u04a4\0\u04e6\0\u0528\0\u018c\0\u018c\0\u056a"+
"\0\u05ac\0\u05ee\0\u0630\0\u0672\0\u06b4\0\u06f6\0\u0738\0\u077a"+
"\0\u07bc\0\u07fe\0\u0840\0\u0882\0\u08c4\0\u0906\0\u0948\0\u098a"+
"\0\u09cc\0\u018c\0\u0a0e\0\u0a50\0\u0a92\0\u0ad4\0\u0b16\0\u0b58"+
"\0\u0b9a\0\u018c\0\u018c\0\u018c\0\u018c\0\u018c\0\u018c\0\u0bdc"+
"\0\u018c\0\u0c1e\0\u0c60\0\u018c\0\u018c\0\u0ca2\0\u0ce4\0\u0d26"+
"\0\u0d68\0\u018c\0\u0daa\0\u0dec\0\u018c\0\u018c\0\u0e2e\0\u0e70"+
"\0\u018c\0\u0eb2\0\u0ef4\0\u0f36\0\u0f78\0\u0fba\0\u0ffc\0\u018c"+
"\0\u103e\0\u1080\0\u018c\0\u10c2\0\u1104\0\u1146\0\u1188\0\u11ca"+
"\0\u120c\0\u124e\0\u018c\0\u018c\0\u018c\0\u018c\0\u018c\0\u1290"+
"\0\u12d2\0\u1314\0\u1356\0\u1398\0\u0210\0\u0210\0\u0210\0\u13da"+
"\0\u018c\0\u141c\0\u145e\0\u14a0\0\u14e2\0\u1524\0\u1566\0\u15a8"+
"\0\u15ea\0\u162c\0\u166e\0\u16b0\0\u16f2\0\u1734\0\u1776\0\u17b8"+
"\0\u0210\0\u17fa\0\u018c\0\u018c\0\u018c\0\u018c\0\u018c\0\u018c"+
"\0\u018c\0\u018c\0\u018c\0\u183c\0\u187e\0\u018c\0\u018c\0\u18c0"+
"\0\u1902\0\u1944\0\u1986\0\u018c\0\u018c\0\u19c8\0\u018c\0\u1a0a"+
"\0\u018c\0\u1a4c\0\u1a8e\0\u1ad0\0\u1b12\0\u1b12\0\u018c\0\u1b54"+
"\0\u1b96\0\u1bd8\0\u1c1a\0\u018c\0\u1c5c\0\u1c9e\0\u1ce0\0\u1d22"+
"\0\u0210\0\u1d64\0\u1da6\0\u1de8\0\u1e2a\0\u1e6c\0\u1eae\0\u1ef0"+
"\0\u1f32\0\u018c\0\u1f74\0\u1fb6\0\u1ff8\0\u203a\0\u0210\0\u0210"+
"\0\u207c\0\u20be\0\u0210\0\u0210\0\u018c\0\u2100\0\u2142\0\u018c"+
"\0\u2184\0\u018c\0\u018c\0\u018c\0\u018c\0\u21c6\0\u2208\0\u2208"+
"\0\u0210\0\u224a\0\u0210\0\u228c\0\u0210\0\u22ce\0\u2310\0\u2352"+
"\0\u2394\0\u0210\0\u0210\0\u23d6\0\u2418\0\u245a\0\u249c\0\u0210"+
"\0\u24de\0\u0210\0\u018c\0\u2520\0\u0ce4\0\u0210\0\u0210\0\u0210"+
"\0\u2562\0\u0210\0\u25a4\0\u25e6\0\u2628\0\u0210\0\u0210\0\u0210"+
"\0\u266a\0\u26ac\0\u0210\0\u26ee\0\u0210\0\u2730\0\u0210\0\u0210";
private static int [] zzUnpackRowMap() {
int [] result = new int[230];
int [] result = new int[232];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -225,263 +226,265 @@ class _JetLexer implements FlexLexer {
private static final String ZZ_TRANS_PACKED_0 =
"\1\7\1\10\1\11\1\12\1\11\1\7\1\13\1\12"+
"\1\14\1\15\1\16\1\17\1\20\1\21\2\11\1\22"+
"\1\14\1\15\1\16\1\17\1\20\1\21\3\11\1\22"+
"\2\11\1\23\1\11\1\24\1\7\1\25\1\11\1\26"+
"\1\27\1\30\1\11\1\31\1\32\1\33\1\34\1\35"+
"\1\36\1\37\1\40\1\41\2\11\1\42\1\43\1\11"+
"\1\44\1\11\1\45\1\11\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\1\65\1\66\1\67\7\70\1\71"+
"\1\72\15\70\1\73\1\74\60\70\1\75\1\72\15\70"+
"\1\72\16\70\1\73\1\74\60\70\1\75\1\72\16\70"+
"\1\75\1\76\51\70\2\0\1\77\1\0\1\77\1\0"+
"\1\100\7\0\2\77\1\0\2\77\1\0\1\77\3\0"+
"\1\100\7\0\3\77\1\0\2\77\1\0\1\77\3\0"+
"\1\77\2\0\1\101\3\77\1\0\22\77\17\0\12\102"+
"\1\103\24\102\1\104\41\102\1\7\1\10\1\11\1\12"+
"\1\103\25\102\1\104\41\102\1\7\1\10\1\11\1\12"+
"\1\11\1\7\1\13\1\12\1\14\1\15\1\16\1\17"+
"\1\20\1\21\2\11\1\22\2\11\1\23\1\11\1\24"+
"\1\20\1\21\3\11\1\22\2\11\1\23\1\11\1\24"+
"\1\7\1\25\1\11\1\105\1\106\1\30\1\11\1\31"+
"\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+
"\2\11\1\42\1\43\1\11\1\44\1\11\1\45\1\11"+
"\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\1\65"+
"\1\66\1\67\102\0\1\10\13\0\1\10\2\0\1\107"+
"\1\110\1\111\20\0\1\111\11\0\1\110\24\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\22\11\22\0\1\12"+
"\3\0\1\12\71\0\6\112\2\0\71\112\2\0\1\113"+
"\1\0\1\113\1\0\1\114\7\0\2\113\1\0\2\113"+
"\1\0\1\113\3\0\1\113\2\0\4\113\1\0\22\113"+
"\21\0\1\115\1\0\1\115\1\0\1\116\2\0\1\117"+
"\4\0\2\115\1\0\2\115\1\0\1\115\3\0\1\115"+
"\2\0\4\115\1\0\22\115\31\0\1\120\24\0\1\121"+
"\22\0\1\122\32\0\1\123\121\0\1\124\24\0\1\125"+
"\17\0\1\126\13\0\1\126\1\127\1\130\1\107\1\110"+
"\1\111\20\0\1\111\5\0\1\130\3\0\1\110\24\0"+
"\1\131\13\0\1\131\2\0\1\132\103\0\1\133\36\0"+
"\1\134\3\0\1\135\12\0\7\24\1\0\15\24\1\136"+
"\1\137\52\24\27\0\1\140\52\0\2\11\1\0\2\11"+
"\7\0\3\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\1\11\1\141\2\11\1\0\10\11\1\142\5\11"+
"\1\143\3\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\3\11"+
"\1\144\1\0\2\11\1\145\12\11\1\146\4\11\20\0"+
"\2\11\1\0\2\11\7\0\3\11\1\0\2\11\1\0"+
"\1\11\3\0\1\147\2\0\4\11\1\0\22\11\101\0"+
"\1\150\17\0\2\11\1\0\2\11\7\0\3\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\1\11\1\151\12\11\1\152\5\11\20\0\2\11\1\0"+
"\2\11\7\0\3\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\11\11\1\153\10\11\20\0"+
"\2\11\1\0\2\11\7\0\3\11\1\0\2\11\1\0"+
"\1\11\3\0\1\154\2\0\4\11\1\0\22\11\20\0"+
"\2\11\1\0\2\11\7\0\3\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\4\11\1\0\14\11\1\155"+
"\5\11\20\0\2\11\1\0\2\11\7\0\3\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\5\11\1\156\14\11\20\0\2\11\1\0\2\11\7\0"+
"\3\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\3\11\1\157\1\0\22\11\20\0\2\11\1\0\2\11"+
"\7\0\3\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\3\11\1\160\16\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\10\11\1\161\11\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\1\11\1\162\2\11"+
"\1\0\22\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\163\2\0\4\11"+
"\1\0\1\11\1\164\3\11\1\165\14\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\1\11\1\166\2\11\1\0\22\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\5\11"+
"\1\167\14\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\1\11\1\170\20\11\101\0\1\171\3\0\1\172"+
"\74\0\1\173\1\0\1\174\76\0\1\175\100\0\1\176"+
"\105\0\1\177\101\0\1\200\72\0\1\201\110\0\1\202"+
"\6\0\7\70\2\0\15\70\2\0\51\70\2\0\1\203"+
"\1\0\1\203\1\0\1\204\7\0\2\203\1\0\2\203"+
"\1\0\1\203\3\0\1\203\1\205\1\0\4\203\1\0"+
"\22\203\17\0\7\206\1\0\20\206\1\207\50\206\27\0"+
"\1\210\52\0\2\77\1\0\2\77\7\0\3\77\1\0"+
"\2\77\1\0\1\77\3\0\1\77\2\0\4\77\1\0"+
"\22\77\17\0\6\211\2\0\71\211\1\0\2\77\1\0"+
"\2\77\7\0\3\77\1\0\2\77\1\0\1\77\3\0"+
"\1\77\2\0\1\77\1\212\2\77\1\0\22\77\56\0"+
"\1\213\53\0\1\214\67\0\1\131\13\0\1\131\2\0"+
"\1\215\61\0\1\216\13\0\1\216\3\0\1\110\1\0"+
"\1\216\31\0\1\110\6\0\1\216\14\0\6\112\1\217"+
"\1\0\71\112\1\0\2\113\1\0\2\113\7\0\3\113"+
"\1\0\2\113\1\0\1\113\3\0\1\113\2\0\4\113"+
"\1\0\22\113\17\0\6\220\2\0\71\220\1\0\2\115"+
"\1\0\2\115\7\0\3\115\1\0\2\115\1\0\1\115"+
"\3\0\1\115\2\0\4\115\1\0\22\115\17\0\6\221"+
"\2\0\71\221\7\120\1\0\71\120\37\0\1\222\41\0"+
"\7\123\1\0\71\123\36\0\1\223\3\0\1\224\120\0"+
"\1\225\17\0\1\126\13\0\1\126\2\0\1\226\1\110"+
"\1\111\20\0\1\111\11\0\1\110\24\0\2\127\12\0"+
"\1\127\1\0\1\127\1\227\2\127\1\0\1\230\13\0"+
"\1\127\2\0\1\127\1\230\1\127\3\0\1\127\3\0"+
"\1\127\3\0\1\127\20\0\1\130\13\0\1\130\2\0"+
"\1\231\61\0\1\131\13\0\1\131\3\0\1\110\1\111"+
"\20\0\1\111\11\0\1\110\23\0\7\24\1\0\71\24"+
"\27\0\1\232\52\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\2\11"+
"\1\233\1\11\1\0\10\11\1\234\11\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\235\2\0\4\11\1\0\5\11\1\236\10\11"+
"\1\237\3\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\4\11\1\240\15\11\20\0\2\11\1\0\2\11"+
"\7\0\3\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\4\11\1\241\15\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\2\11\1\242\17\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\5\11"+
"\1\243\14\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\12\11\1\244\7\11\20\0\2\11\1\0\2\11"+
"\7\0\3\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\14\11\1\245\5\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\3\11\1\246\1\0\22\11\20\0"+
"\2\11\1\0\2\11\7\0\3\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\4\11\1\0\1\247\21\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\66\1\67\103\0\1\10\13\0\1\10\2\0\1\107"+
"\1\110\1\111\1\112\20\0\1\112\10\0\1\107\1\111"+
"\24\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\22\11"+
"\1\0\1\250\16\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\1\251"+
"\3\11\1\0\22\11\20\0\2\11\1\0\2\11\7\0"+
"\3\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\4\11\1\0\3\11\1\252\16\11\20\0\2\11\1\0"+
"\2\11\7\0\3\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\2\11\1\253\1\11\1\0\3\11\1\254"+
"\16\11\20\0\2\11\1\0\2\11\7\0\3\11\1\0"+
"\22\0\1\12\3\0\1\12\72\0\6\113\2\0\72\113"+
"\2\0\1\114\1\0\1\114\1\0\1\115\7\0\3\114"+
"\1\0\2\114\1\0\1\114\3\0\1\114\2\0\4\114"+
"\1\0\22\114\21\0\1\116\1\0\1\116\1\0\1\117"+
"\2\0\1\120\4\0\3\116\1\0\2\116\1\0\1\116"+
"\3\0\1\116\2\0\4\116\1\0\22\116\31\0\1\121"+
"\25\0\1\122\22\0\1\123\32\0\1\124\123\0\1\125"+
"\24\0\1\126\17\0\1\127\13\0\1\127\1\130\1\131"+
"\1\107\1\110\1\111\1\112\20\0\1\112\5\0\1\131"+
"\2\0\1\107\1\111\24\0\1\132\13\0\1\132\3\0"+
"\1\133\104\0\1\134\36\0\1\135\3\0\1\136\12\0"+
"\7\24\1\0\16\24\1\137\1\140\52\24\30\0\1\141"+
"\52\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\1\11\1\142\2\11"+
"\1\0\10\11\1\143\5\11\1\144\3\11\20\0\2\11"+
"\1\0\2\11\7\0\4\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\3\11\1\145\1\0\2\11\1\146"+
"\12\11\1\147\4\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\150\2\0"+
"\4\11\1\0\22\11\102\0\1\151\17\0\2\11\1\0"+
"\2\11\7\0\4\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\1\11\1\152\12\11\1\153"+
"\5\11\20\0\2\11\1\0\2\11\7\0\4\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\2\11\1\255\17\11\20\0\2\11\1\0\2\11\7\0"+
"\3\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\4\11\1\0\10\11\1\256\11\11\20\0\2\11\1\0"+
"\2\11\7\0\3\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\14\11\1\257\5\11\20\0"+
"\2\11\1\0\2\11\7\0\3\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\2\11\1\260\1\11\1\0"+
"\22\11\20\0\2\11\1\0\2\11\7\0\3\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\10\11\1\261\3\11\1\262\5\11\101\0\1\263\17\0"+
"\2\203\1\0\2\203\7\0\3\203\1\0\2\203\1\0"+
"\1\203\3\0\1\203\2\0\4\203\1\0\22\203\17\0"+
"\6\264\2\0\71\264\1\0\2\265\12\0\1\265\1\0"+
"\1\265\1\0\2\265\15\0\1\265\2\0\1\265\1\0"+
"\1\265\3\0\1\265\3\0\1\265\3\0\1\265\46\0"+
"\1\74\51\0\6\211\1\266\1\0\71\211\1\0\2\77"+
"\1\0\2\77\7\0\3\77\1\0\2\77\1\0\1\77"+
"\3\0\1\77\2\0\2\77\1\267\1\77\1\0\22\77"+
"\20\0\1\216\13\0\1\216\3\0\1\110\33\0\1\110"+
"\23\0\6\220\1\270\1\0\71\220\6\221\1\271\1\0"+
"\71\221\12\0\1\272\67\0\2\273\1\0\2\273\7\0"+
"\3\273\1\0\2\273\1\0\1\273\3\0\1\273\2\0"+
"\4\273\1\0\22\273\20\0\1\131\13\0\1\131\64\0"+
"\2\274\12\0\1\274\1\0\1\274\1\215\2\274\15\0"+
"\1\274\2\0\1\274\1\0\1\274\3\0\1\274\3\0"+
"\1\274\3\0\1\274\20\0\1\275\13\0\1\275\5\0"+
"\1\276\40\0\1\276\34\0\1\215\61\0\2\11\1\0"+
"\2\11\7\0\3\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\3\11\1\277\1\0\22\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\1\11\1\300\20\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\11\11\1\154\10\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\155\2\0"+
"\4\11\1\0\22\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\4\11\1\0\14\11\1\156\5\11\20\0\2\11\1\0"+
"\2\11\7\0\4\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\5\11\1\157\14\11\20\0"+
"\2\11\1\0\2\11\7\0\4\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\3\11\1\160\1\0\22\11"+
"\20\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\3\11"+
"\1\301\16\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\161\16\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\10\11\1\162\11\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\1\11\1\163\2\11\1\0\22\11\20\0\2\11"+
"\1\0\2\11\7\0\4\11\1\0\2\11\1\0\1\11"+
"\3\0\1\164\2\0\4\11\1\0\1\11\1\165\3\11"+
"\1\166\14\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\1\11"+
"\1\167\2\11\1\0\22\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\5\11\1\170\14\11\20\0\2\11"+
"\1\0\2\11\7\0\4\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\1\11\1\171\20\11"+
"\102\0\1\172\3\0\1\173\75\0\1\174\1\0\1\175"+
"\77\0\1\176\101\0\1\177\106\0\1\200\102\0\1\201"+
"\73\0\1\202\111\0\1\203\6\0\7\70\2\0\16\70"+
"\2\0\51\70\2\0\1\204\1\0\1\204\1\0\1\205"+
"\7\0\3\204\1\0\2\204\1\0\1\204\3\0\1\204"+
"\1\206\1\0\4\204\1\0\22\204\17\0\7\207\1\0"+
"\21\207\1\210\50\207\30\0\1\211\52\0\2\77\1\0"+
"\2\77\7\0\4\77\1\0\2\77\1\0\1\77\3\0"+
"\1\77\2\0\4\77\1\0\22\77\17\0\6\212\2\0"+
"\72\212\1\0\2\77\1\0\2\77\7\0\4\77\1\0"+
"\2\77\1\0\1\77\3\0\1\77\2\0\1\77\1\213"+
"\2\77\1\0\22\77\57\0\1\214\53\0\1\215\110\0"+
"\1\216\61\0\1\132\13\0\1\132\3\0\1\217\61\0"+
"\1\220\13\0\1\220\4\0\1\111\1\0\1\220\31\0"+
"\1\111\6\0\1\220\14\0\6\113\1\221\1\0\72\113"+
"\1\0\2\114\1\0\2\114\7\0\4\114\1\0\2\114"+
"\1\0\1\114\3\0\1\114\2\0\4\114\1\0\22\114"+
"\17\0\6\222\2\0\72\222\1\0\2\116\1\0\2\116"+
"\7\0\4\116\1\0\2\116\1\0\1\116\3\0\1\116"+
"\2\0\4\116\1\0\22\116\17\0\6\223\2\0\72\223"+
"\7\121\1\0\72\121\40\0\1\224\41\0\7\124\1\0"+
"\72\124\37\0\1\225\3\0\1\226\121\0\1\227\17\0"+
"\1\127\13\0\1\127\3\0\1\230\1\111\1\112\20\0"+
"\1\112\11\0\1\111\24\0\2\130\12\0\1\130\1\0"+
"\1\130\1\231\1\232\2\130\1\0\1\233\13\0\1\130"+
"\2\0\1\130\1\233\1\130\3\0\1\130\2\0\1\231"+
"\1\130\3\0\1\130\20\0\1\131\13\0\1\131\2\0"+
"\1\107\1\216\33\0\1\107\25\0\1\132\13\0\1\132"+
"\4\0\1\111\1\112\20\0\1\112\11\0\1\111\23\0"+
"\7\24\1\0\72\24\30\0\1\234\52\0\2\11\1\0"+
"\2\11\7\0\4\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\2\11\1\235\1\11\1\0\10\11\1\236"+
"\11\11\20\0\2\11\1\0\2\11\7\0\4\11\1\0"+
"\2\11\1\0\1\11\3\0\1\237\2\0\4\11\1\0"+
"\5\11\1\240\10\11\1\241\3\11\20\0\2\11\1\0"+
"\2\11\7\0\4\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\4\11\1\242\15\11\20\0"+
"\2\11\1\0\2\11\7\0\4\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\4\11\1\0\4\11\1\243"+
"\15\11\20\0\2\11\1\0\2\11\7\0\4\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\2\11\1\244\17\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\4\11\1\0\5\11\1\245\14\11\20\0\2\11\1\0"+
"\2\11\7\0\4\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\12\11\1\246\7\11\20\0"+
"\2\11\1\0\2\11\7\0\4\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\4\11\1\0\14\11\1\247"+
"\5\11\20\0\2\11\1\0\2\11\7\0\4\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\3\11\1\250"+
"\1\0\22\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\1\251\21\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\4\11\1\0\22\11\1\0\1\252\16\0\2\11\1\0"+
"\2\11\7\0\4\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\1\253\3\11\1\0\22\11\20\0\2\11"+
"\1\0\2\11\7\0\4\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\3\11\1\254\16\11"+
"\20\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\2\11\1\255\1\11"+
"\1\0\3\11\1\256\16\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\2\11\1\257\17\11\20\0\2\11"+
"\1\0\2\11\7\0\4\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\10\11\1\260\11\11"+
"\20\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\14\11"+
"\1\261\5\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\2\11"+
"\1\302\1\11\1\0\22\11\20\0\2\11\1\0\2\11"+
"\7\0\3\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\3\11\1\303\16\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\3\11\1\304\16\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\1\305\3\11\1\0"+
"\22\11\20\0\2\11\1\0\2\11\7\0\3\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\3\11\1\306"+
"\1\0\22\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\262\1\11\1\0\22\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\10\11\1\263\3\11\1\264\5\11"+
"\102\0\1\265\17\0\2\204\1\0\2\204\7\0\4\204"+
"\1\0\2\204\1\0\1\204\3\0\1\204\2\0\4\204"+
"\1\0\22\204\17\0\6\266\2\0\72\266\1\0\2\267"+
"\12\0\1\267\1\0\1\267\2\0\2\267\15\0\1\267"+
"\2\0\1\267\1\0\1\267\3\0\1\267\3\0\1\267"+
"\3\0\1\267\47\0\1\74\51\0\6\212\1\270\1\0"+
"\72\212\1\0\2\77\1\0\2\77\7\0\4\77\1\0"+
"\2\77\1\0\1\77\3\0\1\77\2\0\2\77\1\271"+
"\1\77\1\0\22\77\40\0\1\217\61\0\1\220\13\0"+
"\1\220\4\0\1\111\33\0\1\111\23\0\6\222\1\272"+
"\1\0\72\222\6\223\1\273\1\0\72\223\12\0\1\274"+
"\70\0\2\275\1\0\2\275\7\0\4\275\1\0\2\275"+
"\1\0\1\275\3\0\1\275\2\0\4\275\1\0\22\275"+
"\20\0\1\132\13\0\1\132\105\0\1\216\3\0\1\233"+
"\17\0\1\233\35\0\2\276\12\0\1\276\1\0\1\276"+
"\1\0\1\217\2\276\15\0\1\276\2\0\1\276\1\0"+
"\1\276\3\0\1\276\3\0\1\276\3\0\1\276\20\0"+
"\1\277\13\0\1\277\6\0\1\300\40\0\1\300\15\0"+
"\2\11\1\0\2\11\7\0\4\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\3\11\1\301\1\0\22\11"+
"\20\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\1\11"+
"\1\302\20\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\3\11\1\307\16\11\20\0\2\11\1\0\2\11"+
"\7\0\3\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\14\11\1\310\5\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\3\11\1\311\16\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\6\11"+
"\1\312\13\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\313\2\0\4\11"+
"\1\0\22\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\5\11\1\314\14\11\20\0\2\11\1\0\2\11"+
"\7\0\3\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\14\11\1\315\5\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\2\11\1\316\17\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\3\11\1\317\1\0"+
"\22\11\20\0\2\11\1\0\2\11\7\0\3\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\3\11\1\320"+
"\1\0\22\11\17\0\6\264\1\321\1\0\71\264\1\0"+
"\2\322\12\0\1\322\1\0\1\322\1\0\2\322\15\0"+
"\1\322\2\0\1\322\1\0\1\322\3\0\1\322\3\0"+
"\1\322\3\0\1\322\20\0\2\77\1\0\2\77\7\0"+
"\3\77\1\0\2\77\1\0\1\77\3\0\1\77\2\0"+
"\3\77\1\323\1\0\22\77\20\0\2\274\12\0\1\274"+
"\1\0\1\274\1\0\2\274\1\0\1\230\13\0\1\274"+
"\2\0\1\274\1\230\1\274\3\0\1\274\3\0\1\274"+
"\3\0\1\274\20\0\1\275\13\0\1\275\64\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\13\11\1\324\6\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\1\325\3\11\1\0"+
"\22\11\20\0\2\11\1\0\2\11\7\0\3\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\10\11\1\326\11\11\20\0\2\11\1\0\2\11\7\0"+
"\3\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\2\11\1\327\1\11\1\0\22\11\20\0\2\11\1\0"+
"\2\11\7\0\3\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\3\11\1\330\1\0\22\11\20\0\2\11"+
"\1\0\2\11\7\0\3\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\1\331\21\11\20\0"+
"\2\11\1\0\2\11\7\0\3\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\4\11\1\0\5\11\1\332"+
"\14\11\20\0\2\11\1\0\2\11\7\0\3\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\10\11\1\333\11\11\20\0\2\11\1\0\2\11\7\0"+
"\3\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\4\11\1\0\6\11\1\334\13\11\20\0\2\11\1\0"+
"\2\11\7\0\3\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\3\11\1\335\16\11\20\0"+
"\2\11\1\0\2\11\7\0\3\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\4\11\1\0\3\11\1\336"+
"\16\11\20\0\2\337\12\0\1\337\1\0\1\337\1\0"+
"\2\337\15\0\1\337\2\0\1\337\1\0\1\337\3\0"+
"\1\337\3\0\1\337\3\0\1\337\20\0\2\11\1\0"+
"\2\11\7\0\3\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\2\11\1\340\17\11\20\0"+
"\2\11\1\0\2\11\7\0\3\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\1\341\3\11\1\0\22\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\7\11"+
"\1\342\12\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\2\11\1\343\17\11\20\0\2\206\12\0\1\206"+
"\1\0\1\206\1\0\2\206\15\0\1\206\2\0\1\206"+
"\1\0\1\206\3\0\1\206\3\0\1\206\3\0\1\206"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\1\11\3\0\1\344\2\0\4\11\1\0\22\11"+
"\20\0\2\11\1\0\2\11\7\0\3\11\1\0\2\11"+
"\1\0\3\11\1\303\16\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\2\11\1\304\1\11\1\0\22\11\20\0\2\11"+
"\1\0\2\11\7\0\4\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\3\11\1\305\16\11"+
"\20\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\3\11"+
"\1\345\16\11\20\0\2\11\1\0\2\11\7\0\3\11"+
"\1\306\16\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\1\307"+
"\3\11\1\0\22\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\3\11\1\310\1\0\22\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\3\11\1\311\16\11\20\0\2\11"+
"\1\0\2\11\7\0\4\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\14\11\1\312\5\11"+
"\20\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\3\11"+
"\1\313\16\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\3\11\1\346\16\11\17\0";
"\1\0\6\11\1\314\13\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\315"+
"\2\0\4\11\1\0\22\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\5\11\1\316\14\11\20\0\2\11"+
"\1\0\2\11\7\0\4\11\1\0\2\11\1\0\1\11"+
"\3\0\1\11\2\0\4\11\1\0\14\11\1\317\5\11"+
"\20\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\2\11"+
"\1\320\17\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\3\11"+
"\1\321\1\0\22\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\3\11\1\322\1\0\22\11\17\0\6\266\1\323\1\0"+
"\72\266\1\0\2\324\12\0\1\324\1\0\1\324\2\0"+
"\2\324\15\0\1\324\2\0\1\324\1\0\1\324\3\0"+
"\1\324\3\0\1\324\3\0\1\324\20\0\2\77\1\0"+
"\2\77\7\0\4\77\1\0\2\77\1\0\1\77\3\0"+
"\1\77\2\0\3\77\1\325\1\0\22\77\20\0\2\276"+
"\12\0\1\276\1\0\1\276\2\0\2\276\1\0\1\233"+
"\13\0\1\276\2\0\1\276\1\233\1\276\3\0\1\276"+
"\3\0\1\276\3\0\1\276\20\0\1\277\13\0\1\277"+
"\65\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\13\11"+
"\1\326\6\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\1\327"+
"\3\11\1\0\22\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\4\11\1\0\10\11\1\330\11\11\20\0\2\11\1\0"+
"\2\11\7\0\4\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\2\11\1\331\1\11\1\0\22\11\20\0"+
"\2\11\1\0\2\11\7\0\4\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\3\11\1\332\1\0\22\11"+
"\20\0\2\11\1\0\2\11\7\0\4\11\1\0\2\11"+
"\1\0\1\11\3\0\1\11\2\0\4\11\1\0\1\333"+
"\21\11\20\0\2\11\1\0\2\11\7\0\4\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\5\11\1\334\14\11\20\0\2\11\1\0\2\11\7\0"+
"\4\11\1\0\2\11\1\0\1\11\3\0\1\11\2\0"+
"\4\11\1\0\10\11\1\335\11\11\20\0\2\11\1\0"+
"\2\11\7\0\4\11\1\0\2\11\1\0\1\11\3\0"+
"\1\11\2\0\4\11\1\0\6\11\1\336\13\11\20\0"+
"\2\11\1\0\2\11\7\0\4\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\4\11\1\0\3\11\1\337"+
"\16\11\20\0\2\11\1\0\2\11\7\0\4\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\4\11\1\0"+
"\3\11\1\340\16\11\20\0\2\341\12\0\1\341\1\0"+
"\1\341\2\0\2\341\15\0\1\341\2\0\1\341\1\0"+
"\1\341\3\0\1\341\3\0\1\341\3\0\1\341\20\0"+
"\2\11\1\0\2\11\7\0\4\11\1\0\2\11\1\0"+
"\1\11\3\0\1\11\2\0\4\11\1\0\2\11\1\342"+
"\17\11\20\0\2\11\1\0\2\11\7\0\4\11\1\0"+
"\2\11\1\0\1\11\3\0\1\11\2\0\1\343\3\11"+
"\1\0\22\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\7\11\1\344\12\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\2\11\1\345\17\11\20\0\2\207"+
"\12\0\1\207\1\0\1\207\2\0\2\207\15\0\1\207"+
"\2\0\1\207\1\0\1\207\3\0\1\207\3\0\1\207"+
"\3\0\1\207\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\346\2\0\4\11"+
"\1\0\22\11\20\0\2\11\1\0\2\11\7\0\4\11"+
"\1\0\2\11\1\0\1\11\3\0\1\11\2\0\4\11"+
"\1\0\3\11\1\347\16\11\20\0\2\11\1\0\2\11"+
"\7\0\4\11\1\0\2\11\1\0\1\11\3\0\1\11"+
"\2\0\4\11\1\0\3\11\1\350\16\11\17\0";
private static int [] zzUnpackTrans() {
int [] result = new int[9815];
int [] result = new int[10098];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -524,16 +527,17 @@ class _JetLexer implements FlexLexer {
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\6\0\1\11\16\1\2\11\22\1\1\11\7\1\6\11"+
"\1\1\1\11\1\1\1\0\2\11\2\1\1\0\1\1"+
"\1\11\2\1\2\11\1\0\1\11\1\1\1\0\1\1"+
"\1\0\1\1\1\0\1\11\2\1\1\11\1\1\1\0"+
"\5\1\5\11\1\1\1\0\7\1\1\11\21\1\11\11"+
"\1\1\1\0\2\11\1\1\2\0\1\1\3\11\1\1"+
"\1\11\2\0\3\1\1\11\4\0\1\11\15\1\1\11"+
"\12\1\1\11\2\0\1\11\1\1\4\11\2\1\1\0"+
"\22\1\1\11\1\0\14\1\1\0\7\1";
"\1\11\2\1\2\11\1\1\1\0\1\11\1\1\1\0"+
"\1\1\1\0\1\1\1\0\1\11\2\1\1\11\1\1"+
"\1\0\5\1\5\11\1\1\1\0\7\1\1\11\21\1"+
"\11\11\1\1\1\0\2\11\1\1\2\0\1\1\2\11"+
"\1\0\1\11\1\1\1\11\2\0\3\1\1\11\1\0"+
"\1\1\2\0\1\11\15\1\1\11\12\1\1\11\2\0"+
"\1\11\1\1\4\11\2\1\1\0\22\1\1\11\1\0"+
"\14\1\1\0\7\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[230];
int [] result = new int[232];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -661,7 +665,7 @@ class _JetLexer implements FlexLexer {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 1326) {
while (i < 1330) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
@@ -1332,14 +1336,14 @@ class _JetLexer implements FlexLexer {
zzStartRead = commentStart;
return commentStateToTokenType(state);
}
case 231: break;
case 233: break;
case DOC_COMMENT: {
int state = yystate();
popState();
zzStartRead = commentStart;
return commentStateToTokenType(state);
}
case 232: break;
case 234: break;
default:
return null;
}
@@ -0,0 +1,10 @@
fun box(): String {
if (1L != 1.toLong()) return "fail 1"
if (0x1L != 0x1.toLong()) return "fail 2"
if (0X1L != 0X1.toLong()) return "fail 3"
if (0b1L != 0b1.toLong()) return "fail 4"
if (0B1L != 0B1.toLong()) return "fail 5"
return "OK"
}
@@ -0,0 +1,10 @@
val a1: Int = <!CONSTANT_EXPECTED_TYPE_MISMATCH!>1L<!>
val a2: Int = <!CONSTANT_EXPECTED_TYPE_MISMATCH!>0x1L<!>
val a3: Int = <!CONSTANT_EXPECTED_TYPE_MISMATCH!>0X1L<!>
val a4: Int = <!CONSTANT_EXPECTED_TYPE_MISMATCH!>0b1L<!>
val a5: Int = <!CONSTANT_EXPECTED_TYPE_MISMATCH!>0B1L<!>
val a6: Long = 1L
val a7: Long = 0x1L
val a8: Long = 0X1L
val a9: Long = 0b1L
val a10: Long = 0B1L
@@ -0,0 +1,10 @@
val a1: Int = 1<!WRONG_LONG_SUFFIX!>l<!>
val a2: Int = 0x1<!WRONG_LONG_SUFFIX!>l<!>
val a3: Int = 0X1<!WRONG_LONG_SUFFIX!>l<!>
val a4: Int = 0b1<!WRONG_LONG_SUFFIX!>l<!>
val a5: Int = 0B1<!WRONG_LONG_SUFFIX!>l<!>
val a6: Long = 1<!WRONG_LONG_SUFFIX!>l<!>
val a7: Long = 0x1<!WRONG_LONG_SUFFIX!>l<!>
val a8: Long = 0X1<!WRONG_LONG_SUFFIX!>l<!>
val a9: Long = 0b1<!WRONG_LONG_SUFFIX!>l<!>
val a10: Long = 0B1<!WRONG_LONG_SUFFIX!>l<!>
@@ -0,0 +1,31 @@
package test
// val prop1: 1.toLong()
val prop1 = 1L
// val prop2: 1.toLong()
val prop2 = 0x1L
// val prop3: 1.toLong()
val prop3 = 0X1L
// val prop4: 1.toLong()
val prop4 = 0b1L
// val prop5: 1.toLong()
val prop5 = 0B1L
// val prop6: 1.toLong()
val prop6 = 1l
// val prop7: 1.toLong()
val prop7 = 0x1l
// val prop8: 1.toLong()
val prop8 = 0X1l
// val prop9: 1.toLong()
val prop9 = 0b1l
// val prop10: 1.toLong()
val prop10 = 0B1l
+17
View File
@@ -0,0 +1,17 @@
val array = array<Any>(
1,
0x1,
0X1,
0b1,
0B1,
1L,
0x1L,
0X1L,
0b1L,
0B1L,
1l,
0x1l,
0X1l,
0b1l,
0B1l,
)
+102
View File
@@ -0,0 +1,102 @@
JetFile: IntegerLiteral.kt
NAMESPACE_HEADER
<empty list>
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('array')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('array')
TYPE_ARGUMENT_LIST
PsiElement(LT)('<')
TYPE_PROJECTION
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
PsiElement(GT)('>')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0x1')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0X1')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0b1')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0B1')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1L')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0x1L')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0X1L')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0b1L')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0B1L')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1l')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0x1l')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0X1l')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0b1l')
PsiElement(COMMA)(',')
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0B1l')
PsiElement(COMMA)(',')
PsiErrorElement:Expecting an argument
<empty list>
PsiWhiteSpace('\n')
PsiElement(RPAR)(')')
@@ -2759,6 +2759,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
doTest("compiler/testData/diagnostics/tests/evaluate/intOverflow.kt");
}
@TestMetadata("integer.kt")
public void testInteger() throws Exception {
doTest("compiler/testData/diagnostics/tests/evaluate/integer.kt");
}
@TestMetadata("longOverflow.kt")
public void testLongOverflow() throws Exception {
doTest("compiler/testData/diagnostics/tests/evaluate/longOverflow.kt");
@@ -2799,6 +2804,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
doTest("compiler/testData/diagnostics/tests/evaluate/unaryMinusIndependentExpType.kt");
}
@TestMetadata("wrongLongSuffix.kt")
public void testWrongLongSuffix() throws Exception {
doTest("compiler/testData/diagnostics/tests/evaluate/wrongLongSuffix.kt");
}
}
@TestMetadata("compiler/testData/diagnostics/tests/extensions")
@@ -1389,6 +1389,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
doTest("compiler/testData/codegen/box/constants/float.kt");
}
@TestMetadata("long.kt")
public void testLong() throws Exception {
doTest("compiler/testData/codegen/box/constants/long.kt");
}
}
@TestMetadata("compiler/testData/codegen/box/controlStructures")
@@ -63,6 +63,11 @@ public class EvaluateExpressionTestGenerated extends AbstractEvaluateExpressionT
doConstantTest("compiler/testData/evaluate/constant/floatsAndDoubles.kt");
}
@TestMetadata("integer.kt")
public void testInteger() throws Exception {
doConstantTest("compiler/testData/evaluate/constant/integer.kt");
}
@TestMetadata("integers.kt")
public void testIntegers() throws Exception {
doConstantTest("compiler/testData/evaluate/constant/integers.kt");
@@ -242,6 +242,11 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
doParsingTest("compiler/testData/psi/Inner.kt");
}
@TestMetadata("IntegerLiteral.kt")
public void testIntegerLiteral() throws Exception {
doParsingTest("compiler/testData/psi/IntegerLiteral.kt");
}
@TestMetadata("Labels.kt")
public void testLabels() throws Exception {
doParsingTest("compiler/testData/psi/Labels.kt");