From e5a3518248e35a84af0c1392351acff78229dc5f Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Wed, 4 Dec 2013 14:30:32 +0400 Subject: [PATCH] Parse longs with 'L' suffix. Report error if 'l' used. --- .../jet/lang/diagnostics/Errors.java | 1 + .../diagnostics/PositioningStrategies.java | 14 + .../rendering/DefaultErrorMessages.java | 1 + .../evaluate/ConstantExpressionEvaluator.kt | 16 +- .../constants/CompileTimeConstantChecker.java | 5 + .../src/org/jetbrains/jet/lexer/Jet.flex | 7 +- .../org/jetbrains/jet/lexer/_JetLexer.java | 724 +++++++++--------- .../testData/codegen/box/constants/long.kt | 10 + .../diagnostics/tests/evaluate/integer.kt | 10 + .../tests/evaluate/wrongLongSuffix.kt | 10 + .../testData/evaluate/constant/integer.kt | 31 + compiler/testData/psi/IntegerLiteral.kt | 17 + compiler/testData/psi/IntegerLiteral.txt | 102 +++ .../checkers/JetDiagnosticsTestGenerated.java | 10 + .../BlackBoxCodegenTestGenerated.java | 5 + .../EvaluateExpressionTestGenerated.java | 5 + .../jet/parsing/JetParsingTestGenerated.java | 5 + 17 files changed, 605 insertions(+), 368 deletions(-) create mode 100644 compiler/testData/codegen/box/constants/long.kt create mode 100644 compiler/testData/diagnostics/tests/evaluate/integer.kt create mode 100644 compiler/testData/diagnostics/tests/evaluate/wrongLongSuffix.kt create mode 100644 compiler/testData/evaluate/constant/integer.kt create mode 100644 compiler/testData/psi/IntegerLiteral.kt create mode 100644 compiler/testData/psi/IntegerLiteral.txt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index afbc3c58757..e26f79a4314 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -466,6 +466,7 @@ public interface Errors { // Compile-time values DiagnosticFactory0 INTEGER_OVERFLOW = DiagnosticFactory0.create(WARNING); + DiagnosticFactory0 WRONG_LONG_SUFFIX = DiagnosticFactory0.create(ERROR, LONG_LITERAL_SUFFIX); DiagnosticFactory0 INT_LITERAL_OUT_OF_RANGE = DiagnosticFactory0.create(ERROR); DiagnosticFactory0 FLOAT_LITERAL_OUT_OF_RANGE = DiagnosticFactory0.create(ERROR); DiagnosticFactory2 CONSTANT_EXPECTED_TYPE_MISMATCH = DiagnosticFactory2.create(ERROR); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java index d94f17ae1aa..751e1a4d792 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java @@ -449,6 +449,20 @@ public class PositioningStrategies { } }; + public static final PositioningStrategy LONG_LITERAL_SUFFIX = new PositioningStrategy() { + @NotNull + @Override + public List 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() { } } \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java index 97791b6e577..588f2a2301e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java @@ -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"); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt b/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt index e384019d5b1..887129d56a1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt @@ -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.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) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantChecker.java index cd8735e930e..f4fc4c1149a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantChecker.java @@ -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)) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex b/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex index 6a48b922506..96fc8bd3f94 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex @@ -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]) diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java b/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java index 44e02d903f1..252092e8feb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java @@ -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 * JFlex 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 * C:/Development/kotlin/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex */ 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; } diff --git a/compiler/testData/codegen/box/constants/long.kt b/compiler/testData/codegen/box/constants/long.kt new file mode 100644 index 00000000000..7fa2eaf4f50 --- /dev/null +++ b/compiler/testData/codegen/box/constants/long.kt @@ -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" +} + diff --git a/compiler/testData/diagnostics/tests/evaluate/integer.kt b/compiler/testData/diagnostics/tests/evaluate/integer.kt new file mode 100644 index 00000000000..85774b0ddc7 --- /dev/null +++ b/compiler/testData/diagnostics/tests/evaluate/integer.kt @@ -0,0 +1,10 @@ +val a1: Int = 1L +val a2: Int = 0x1L +val a3: Int = 0X1L +val a4: Int = 0b1L +val a5: Int = 0B1L +val a6: Long = 1L +val a7: Long = 0x1L +val a8: Long = 0X1L +val a9: Long = 0b1L +val a10: Long = 0B1L \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/evaluate/wrongLongSuffix.kt b/compiler/testData/diagnostics/tests/evaluate/wrongLongSuffix.kt new file mode 100644 index 00000000000..148347d8153 --- /dev/null +++ b/compiler/testData/diagnostics/tests/evaluate/wrongLongSuffix.kt @@ -0,0 +1,10 @@ +val a1: Int = 1l +val a2: Int = 0x1l +val a3: Int = 0X1l +val a4: Int = 0b1l +val a5: Int = 0B1l +val a6: Long = 1l +val a7: Long = 0x1l +val a8: Long = 0X1l +val a9: Long = 0b1l +val a10: Long = 0B1l \ No newline at end of file diff --git a/compiler/testData/evaluate/constant/integer.kt b/compiler/testData/evaluate/constant/integer.kt new file mode 100644 index 00000000000..3e29ef07aca --- /dev/null +++ b/compiler/testData/evaluate/constant/integer.kt @@ -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 diff --git a/compiler/testData/psi/IntegerLiteral.kt b/compiler/testData/psi/IntegerLiteral.kt new file mode 100644 index 00000000000..ea0fc3d2d24 --- /dev/null +++ b/compiler/testData/psi/IntegerLiteral.kt @@ -0,0 +1,17 @@ +val array = array( + 1, + 0x1, + 0X1, + 0b1, + 0B1, + 1L, + 0x1L, + 0X1L, + 0b1L, + 0B1L, + 1l, + 0x1l, + 0X1l, + 0b1l, + 0B1l, +) \ No newline at end of file diff --git a/compiler/testData/psi/IntegerLiteral.txt b/compiler/testData/psi/IntegerLiteral.txt new file mode 100644 index 00000000000..34e6dea4665 --- /dev/null +++ b/compiler/testData/psi/IntegerLiteral.txt @@ -0,0 +1,102 @@ +JetFile: IntegerLiteral.kt + NAMESPACE_HEADER + + 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 + + PsiWhiteSpace('\n') + PsiElement(RPAR)(')') \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 16bb1293e74..0f9f6d9a44c 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -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") diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index df39ccb75a4..98f0aafd712 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -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") diff --git a/compiler/tests/org/jetbrains/jet/evaluate/EvaluateExpressionTestGenerated.java b/compiler/tests/org/jetbrains/jet/evaluate/EvaluateExpressionTestGenerated.java index f1a4f284c6e..d07f3f92b07 100644 --- a/compiler/tests/org/jetbrains/jet/evaluate/EvaluateExpressionTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/evaluate/EvaluateExpressionTestGenerated.java @@ -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"); diff --git a/compiler/tests/org/jetbrains/jet/parsing/JetParsingTestGenerated.java b/compiler/tests/org/jetbrains/jet/parsing/JetParsingTestGenerated.java index 45236213439..c2ff9c93c85 100644 --- a/compiler/tests/org/jetbrains/jet/parsing/JetParsingTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/parsing/JetParsingTestGenerated.java @@ -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");