From 66b12164aa3aaf39872eaa6aefe92888a738330a Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 17 Jan 2013 21:00:07 +0100 Subject: [PATCH] IDEA-74850 (incorrect numeric literals highlighting) --- .../daemon/impl/analysis/HighlightUtil.java | 70 +- .../src/com/intellij/lexer/_JavaLexer.flex | 65 +- .../src/com/intellij/lexer/_JavaLexer.java | 1031 ++++++++--------- .../src/messages/JavaErrorMessages.properties | 1 + .../advHighlighting/NumericLiterals.java | 33 +- .../advHighlighting7/NumericLiterals.java | 7 + .../lang/java/lexer/JavaLexerTest.java | 35 +- 7 files changed, 623 insertions(+), 619 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index d880cae77f33..67b143c9b0c1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -63,6 +63,8 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.PropertyKey; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static com.intellij.util.containers.ContainerUtil.newTroveSet; @@ -833,27 +835,35 @@ public class HighlightUtil extends HighlightUtilBase { @Nullable public static HighlightInfo checkLiteralExpressionParsingError(@NotNull final PsiLiteralExpression expression) { - final Object value = expression.getValue(); - final PsiElement literal = expression.getFirstChild(); + PsiElement literal = expression.getFirstChild(); assert literal instanceof PsiJavaToken : literal; - final IElementType type = ((PsiJavaToken)literal).getTokenType(); - String text = PsiLiteralExpressionImpl.NUMERIC_LITERALS.contains(type) ? literal.getText().toLowerCase() : literal.getText(); + IElementType type = ((PsiJavaToken)literal).getTokenType(); + if (type == JavaTokenType.TRUE_KEYWORD || type == JavaTokenType.FALSE_KEYWORD || type == JavaTokenType.NULL_KEYWORD) { + return null; + } - if (PsiLiteralExpressionImpl.REAL_LITERALS.contains(type)) { + boolean isInt = PsiLiteralExpressionImpl.INTEGER_LITERALS.contains(type); + boolean isFP = PsiLiteralExpressionImpl.REAL_LITERALS.contains(type); + String text = isInt || isFP ? literal.getText().toLowerCase() : literal.getText(); + Object value = expression.getValue(); + + if (isFP) { if (text.startsWith(PsiLiteralExpressionImpl.HEX_PREFIX)) { final HighlightInfo info = checkFeature(expression, Feature.HEX_FP_LITERALS); if (info != null) return info; } } - if (PsiLiteralExpressionImpl.INTEGER_LITERALS.contains(type)) { + if (isInt) { if (text.startsWith(PsiLiteralExpressionImpl.BIN_PREFIX)) { final HighlightInfo info = checkFeature(expression, Feature.BIN_LITERALS); if (info != null) return info; } } - if (PsiLiteralExpressionImpl.NUMERIC_LITERALS.contains(type)) { + if (isInt || isFP) { if (text.contains("_")) { - final HighlightInfo info = checkFeature(expression, Feature.UNDERSCORES); + HighlightInfo info = checkFeature(expression, Feature.UNDERSCORES); + if (info != null) return info; + info = checkUnderscores(expression, text, isInt); if (info != null) return info; } } @@ -898,15 +908,12 @@ public class HighlightUtil extends HighlightUtilBase { } } } - else if (type == JavaTokenType.FLOAT_LITERAL || type == JavaTokenType.DOUBLE_LITERAL) { + else if (isFP) { if (value == null) { final String message = JavaErrorMessages.message("malformed.floating.point.literal"); return HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, expression, message); } } - else if (type == JavaTokenType.TRUE_KEYWORD || type == JavaTokenType.FALSE_KEYWORD || type == JavaTokenType.NULL_KEYWORD) { - return null; - } else if (type == JavaTokenType.CHARACTER_LITERAL) { // todo[r.sh] clean this mess up if (value != null) { @@ -1003,6 +1010,43 @@ public class HighlightUtil extends HighlightUtilBase { return null; } + private static final Pattern FP_LITERAL_PARTS = + Pattern.compile("(?:" + + "(?:0x([_\\p{XDigit}]*)\\.?([_\\p{XDigit}]*)p[+-]?([_\\d]*))" + + "|" + + "(?:([_\\d]*)\\.?([_\\d]*)e?[+-]?([_\\d]*))" + + ")[fd]?"); + + @Nullable + private static HighlightInfo checkUnderscores(PsiElement expression, String text, boolean isInt) { + String[] parts = ArrayUtil.EMPTY_STRING_ARRAY; + + if (isInt) { + int start = 0, end = text.length(); + if (text.startsWith(PsiLiteralExpressionImpl.HEX_PREFIX) || text.startsWith(PsiLiteralExpressionImpl.BIN_PREFIX)) start += 2; + if (StringUtil.endsWithChar(text, 'l')) --end; + parts = new String[]{text.substring(start, end)}; + } + else { + Matcher matcher = FP_LITERAL_PARTS.matcher(text); + if (matcher.matches()) { + parts = new String[matcher.groupCount()]; + for (int i = 0; i < matcher.groupCount(); i++) { + parts[i] = matcher.group(i + 1); + } + } + } + + for (String part : parts) { + if (part != null && (StringUtil.startsWithChar(part, '_') || StringUtil.endsWithChar(part, '_'))) { + String message = JavaErrorMessages.message("illegal.underscore"); + return HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, expression, message); + } + } + + return null; + } + // true if floating point literal consists of zeros only public static boolean isFPZero(@NotNull final String text) { for (int i = 0; i < text.length(); i++) { diff --git a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex index 5b62d45a8f4a..30413b509690 100644 --- a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex +++ b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex @@ -1,4 +1,18 @@ -/* It's an automatically generated code. Do not modify it. */ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.intellij.lexer; import com.intellij.pom.java.LanguageLevel; @@ -43,38 +57,24 @@ DOC_COMMENT="/*""*"+("/"|([^"/""*"]{COMMENT_TAIL}))? COMMENT_TAIL=([^"*"]*("*"+[^"*""/"])?)*("*"+"/")? END_OF_LINE_COMMENT="/""/"[^\r\n]* -DIGIT=[0-9] -DIGIT_OR_UNDERSCORE=[_0-9] -OCTAL_DIGIT=[0-7] -OCTAL_DIGIT_OR_UNDERSCORE=[_0-7] -HEX_DIGIT=[0-9A-Fa-f] -HEX_DIGIT_OR_UNDERSCORE=[_0-9A-Fa-f] -BINARY_DIGIT=[01] -BINARY_DIGIT_OR_UNDERSCORE=[_01] +DIGIT = [0-9] +DIGIT_OR_UNDERSCORE = [_0-9] +DIGITS = {DIGIT} | {DIGIT} {DIGIT_OR_UNDERSCORE}* +HEX_DIGIT_OR_UNDERSCORE = [_0-9A-Fa-f] -DIGITS={DIGIT}|({DIGIT}{DIGIT_OR_UNDERSCORE}*{DIGIT}) -HEX_DIGITS={HEX_DIGIT}|({HEX_DIGIT}{HEX_DIGIT_OR_UNDERSCORE}*{HEX_DIGIT}) -BINARY_DIGITS={BINARY_DIGIT}|({BINARY_DIGIT}{BINARY_DIGIT_OR_UNDERSCORE}*{BINARY_DIGIT}) +INTEGER_LITERAL = {DIGITS} | {HEX_INTEGER_LITERAL} | {BIN_INTEGER_LITERAL} +LONG_LITERAL = {INTEGER_LITERAL} [Ll] +HEX_INTEGER_LITERAL = 0 [Xx] {HEX_DIGIT_OR_UNDERSCORE}* +BIN_INTEGER_LITERAL = 0 [Bb] {DIGIT_OR_UNDERSCORE}* -INTEGER_LITERAL={DECIMAL_INTEGER_LITERAL}|{OCTAL_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}|{BINARY_INTEGER_LITERAL} -DECIMAL_INTEGER_LITERAL=0|([1-9]({DIGIT_OR_UNDERSCORE}*{DIGIT})?) -OCTAL_INTEGER_LITERAL=0{OCTAL_DIGIT_OR_UNDERSCORE}*{OCTAL_DIGIT} -HEX_INTEGER_LITERAL=0[Xx]{HEX_DIGITS}? -BINARY_INTEGER_LITERAL=0[Bb]{BINARY_DIGITS}? -LONG_LITERAL={INTEGER_LITERAL}[Ll] - -FLOAT_LITERAL=({FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3}|{FLOATING_POINT_LITERAL4})[Ff] -DOUBLE_LITERAL=(({FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3})[Dd]?)|({FLOATING_POINT_LITERAL4}[Dd]) -FLOATING_POINT_LITERAL1={DIGITS}"."{DIGITS}?{EXPONENT_PART}? -FLOATING_POINT_LITERAL2="."{DIGITS}{EXPONENT_PART}? -FLOATING_POINT_LITERAL3={DIGITS}{EXPONENT_PART} -FLOATING_POINT_LITERAL4={DIGITS} -EXPONENT_PART=[Ee]["+""-"]?{DIGITS}? - -HEX_FLOAT_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Ff] -HEX_DOUBLE_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Dd]? -BINARY_EXPONENT=[Pp][+-]?{DIGITS} -HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}.|0[Xx]{HEX_DIGITS}?.{HEX_DIGITS} +FLOAT_LITERAL = ({DEC_FP_LITERAL} | {HEX_FP_LITERAL}) [Ff] | {DIGITS} [Ff] +DOUBLE_LITERAL = ({DEC_FP_LITERAL} | {HEX_FP_LITERAL}) [Dd]? | {DIGITS} [Dd] +DEC_FP_LITERAL = {DIGITS} {DEC_EXPONENT} | {DEC_SIGNIFICAND} {DEC_EXPONENT}? +DEC_SIGNIFICAND = "." {DIGITS} | {DIGITS} "." {DIGIT_OR_UNDERSCORE}* +DEC_EXPONENT = [Ee] [+-]? {DIGIT_OR_UNDERSCORE}* +HEX_FP_LITERAL = {HEX_SIGNIFICAND} {HEX_EXPONENT} +HEX_SIGNIFICAND = 0 [Xx] ({HEX_DIGIT_OR_UNDERSCORE}+ "."? | {HEX_DIGIT_OR_UNDERSCORE}* "." {HEX_DIGIT_OR_UNDERSCORE}+) +HEX_EXPONENT = [Pp] [+-]? {DIGIT_OR_UNDERSCORE}* CHARACTER_LITERAL="'"([^\\\'\r\n]|{ESCAPE_SEQUENCE})*("'"|\\)? STRING_LITERAL=\"([^\\\"\r\n]|{ESCAPE_SEQUENCE})*(\"|\\)? @@ -91,10 +91,7 @@ ESCAPE_SEQUENCE=\\[^\r\n] {LONG_LITERAL} { return JavaTokenType.LONG_LITERAL; } {INTEGER_LITERAL} { return JavaTokenType.INTEGER_LITERAL; } {FLOAT_LITERAL} { return JavaTokenType.FLOAT_LITERAL; } - {HEX_FLOAT_LITERAL} { return JavaTokenType.FLOAT_LITERAL; } {DOUBLE_LITERAL} { return JavaTokenType.DOUBLE_LITERAL; } - {HEX_DOUBLE_LITERAL} { return JavaTokenType.DOUBLE_LITERAL; } - {CHARACTER_LITERAL} { return JavaTokenType.CHARACTER_LITERAL; } {STRING_LITERAL} { return JavaTokenType.STRING_LITERAL; } diff --git a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java index 702d3f66f20a..1c5711cc4c25 100644 --- a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java +++ b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,9 +14,7 @@ * limitations under the License. */ -/* The following code was generated by JFlex 1.4.3 on 5/14/12 1:21 PM */ - -/* It's an automatically generated code. Do not modify it. */ +/* The following code was generated by JFlex 1.4.3 on 1/17/13 8:47 PM */ package com.intellij.lexer; import com.intellij.pom.java.LanguageLevel; @@ -29,7 +27,7 @@ import com.intellij.psi.tree.IElementType; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 5/14/12 1:21 PM from the specification file + * on 1/17/13 8:47 PM from the specification file * /home/sher/Projects/IDEA/tools/lexer/../../community/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex */ class _JavaLexer implements FlexLexer { @@ -53,96 +51,96 @@ class _JavaLexer implements FlexLexer { * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = - "\11\3\1\1\1\26\1\0\1\1\1\6\16\3\4\0\1\1\1\63"+ - "\1\31\1\0\1\2\1\72\1\70\1\27\1\73\1\74\1\5\1\65"+ - "\1\102\1\24\1\22\1\4\1\14\1\13\6\11\2\7\1\105\1\101"+ - "\1\66\1\62\1\67\1\104\1\106\1\12\1\16\1\12\1\21\1\23"+ - "\1\20\5\2\1\17\3\2\1\25\7\2\1\15\2\2\1\77\1\30"+ - "\1\100\1\71\1\10\1\0\1\37\1\43\1\44\1\52\1\35\1\36"+ - "\1\55\1\50\1\51\1\2\1\46\1\40\1\53\1\42\1\45\1\56"+ - "\1\2\1\33\1\41\1\32\1\34\1\57\1\60\1\54\1\47\1\61"+ - "\1\75\1\64\1\76\1\103\41\3\2\0\4\2\4\0\1\2\2\0"+ - "\1\3\7\0\1\2\4\0\1\2\5\0\27\2\1\0\37\2\1\0"+ - "\u013f\2\31\0\162\2\4\0\14\2\16\0\5\2\11\0\1\2\21\0"+ - "\130\3\5\0\23\3\12\0\1\2\13\0\1\2\1\0\3\2\1\0"+ - "\1\2\1\0\24\2\1\0\54\2\1\0\46\2\1\0\5\2\4\0"+ - "\202\2\1\0\4\3\3\0\105\2\1\0\46\2\2\0\2\2\6\0"+ - "\20\2\41\0\46\2\2\0\1\2\7\0\47\2\11\0\21\3\1\0"+ - "\27\3\1\0\3\3\1\0\1\3\1\0\2\3\1\0\1\3\13\0"+ - "\33\2\5\0\3\2\15\0\4\3\14\0\6\3\13\0\32\2\5\0"+ - "\13\2\16\3\7\0\12\3\4\0\2\2\1\3\143\2\1\0\1\2"+ - "\10\3\1\0\6\3\2\2\2\3\1\0\4\3\2\2\12\3\3\2"+ - "\2\0\1\2\17\0\1\3\1\2\1\3\36\2\33\3\2\0\3\2"+ - "\60\0\46\2\13\3\1\2\u014f\0\3\3\66\2\2\0\1\3\1\2"+ - "\20\3\2\0\1\2\4\3\3\0\12\2\2\3\2\0\12\3\21\0"+ - "\3\3\1\0\10\2\2\0\2\2\2\0\26\2\1\0\7\2\1\0"+ - "\1\2\3\0\4\2\2\0\1\3\1\2\7\3\2\0\2\3\2\0"+ - "\3\3\11\0\1\3\4\0\2\2\1\0\3\2\2\3\2\0\12\3"+ - "\4\2\15\0\3\3\1\0\6\2\4\0\2\2\2\0\26\2\1\0"+ - "\7\2\1\0\2\2\1\0\2\2\1\0\2\2\2\0\1\3\1\0"+ - "\5\3\4\0\2\3\2\0\3\3\13\0\4\2\1\0\1\2\7\0"+ - "\14\3\3\2\14\0\3\3\1\0\11\2\1\0\3\2\1\0\26\2"+ - "\1\0\7\2\1\0\2\2\1\0\5\2\2\0\1\3\1\2\10\3"+ - "\1\0\3\3\1\0\3\3\2\0\1\2\17\0\2\2\2\3\2\0"+ - "\12\3\1\0\1\2\17\0\3\3\1\0\10\2\2\0\2\2\2\0"+ - "\26\2\1\0\7\2\1\0\2\2\1\0\5\2\2\0\1\3\1\2"+ - "\6\3\3\0\2\3\2\0\3\3\10\0\2\3\4\0\2\2\1\0"+ - "\3\2\4\0\12\3\1\0\1\2\20\0\1\3\1\2\1\0\6\2"+ - "\3\0\3\2\1\0\4\2\3\0\2\2\1\0\1\2\1\0\2\2"+ - "\3\0\2\2\3\0\3\2\3\0\10\2\1\0\3\2\4\0\5\3"+ - "\3\0\3\3\1\0\4\3\11\0\1\3\17\0\11\3\11\0\1\2"+ - "\7\0\3\3\1\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2"+ - "\1\0\5\2\4\0\7\3\1\0\3\3\1\0\4\3\7\0\2\3"+ - "\11\0\2\2\4\0\12\3\22\0\2\3\1\0\10\2\1\0\3\2"+ - "\1\0\27\2\1\0\12\2\1\0\5\2\2\0\1\3\1\2\7\3"+ - "\1\0\3\3\1\0\4\3\7\0\2\3\7\0\1\2\1\0\2\2"+ + "\11\3\1\1\1\6\1\0\1\1\1\6\16\3\4\0\1\1\1\60"+ + "\1\26\1\0\1\2\1\67\1\65\1\24\1\70\1\71\1\5\1\62"+ + "\1\77\1\22\1\20\1\4\1\13\11\7\1\102\1\76\1\63\1\57"+ + "\1\64\1\101\1\103\1\11\1\15\1\11\1\17\1\21\1\16\5\2"+ + "\1\12\3\2\1\23\7\2\1\14\2\2\1\74\1\25\1\75\1\66"+ + "\1\10\1\0\1\34\1\40\1\41\1\47\1\32\1\33\1\52\1\45"+ + "\1\46\1\2\1\43\1\35\1\50\1\37\1\42\1\53\1\2\1\30"+ + "\1\36\1\27\1\31\1\54\1\55\1\51\1\44\1\56\1\72\1\61"+ + "\1\73\1\100\41\3\2\0\4\2\4\0\1\2\2\0\1\3\7\0"+ + "\1\2\4\0\1\2\5\0\27\2\1\0\37\2\1\0\u013f\2\31\0"+ + "\162\2\4\0\14\2\16\0\5\2\11\0\1\2\21\0\130\3\5\0"+ + "\23\3\12\0\1\2\13\0\1\2\1\0\3\2\1\0\1\2\1\0"+ + "\24\2\1\0\54\2\1\0\46\2\1\0\5\2\4\0\202\2\1\0"+ + "\4\3\3\0\105\2\1\0\46\2\2\0\2\2\6\0\20\2\41\0"+ + "\46\2\2\0\1\2\7\0\47\2\11\0\21\3\1\0\27\3\1\0"+ + "\3\3\1\0\1\3\1\0\2\3\1\0\1\3\13\0\33\2\5\0"+ + "\3\2\15\0\4\3\14\0\6\3\13\0\32\2\5\0\13\2\16\3"+ + "\7\0\12\3\4\0\2\2\1\3\143\2\1\0\1\2\10\3\1\0"+ + "\6\3\2\2\2\3\1\0\4\3\2\2\12\3\3\2\2\0\1\2"+ + "\17\0\1\3\1\2\1\3\36\2\33\3\2\0\3\2\60\0\46\2"+ + "\13\3\1\2\u014f\0\3\3\66\2\2\0\1\3\1\2\20\3\2\0"+ + "\1\2\4\3\3\0\12\2\2\3\2\0\12\3\21\0\3\3\1\0"+ + "\10\2\2\0\2\2\2\0\26\2\1\0\7\2\1\0\1\2\3\0"+ + "\4\2\2\0\1\3\1\2\7\3\2\0\2\3\2\0\3\3\11\0"+ + "\1\3\4\0\2\2\1\0\3\2\2\3\2\0\12\3\4\2\15\0"+ + "\3\3\1\0\6\2\4\0\2\2\2\0\26\2\1\0\7\2\1\0"+ + "\2\2\1\0\2\2\1\0\2\2\2\0\1\3\1\0\5\3\4\0"+ + "\2\3\2\0\3\3\13\0\4\2\1\0\1\2\7\0\14\3\3\2"+ + "\14\0\3\3\1\0\11\2\1\0\3\2\1\0\26\2\1\0\7\2"+ + "\1\0\2\2\1\0\5\2\2\0\1\3\1\2\10\3\1\0\3\3"+ + "\1\0\3\3\2\0\1\2\17\0\2\2\2\3\2\0\12\3\1\0"+ + "\1\2\17\0\3\3\1\0\10\2\2\0\2\2\2\0\26\2\1\0"+ + "\7\2\1\0\2\2\1\0\5\2\2\0\1\3\1\2\6\3\3\0"+ + "\2\3\2\0\3\3\10\0\2\3\4\0\2\2\1\0\3\2\4\0"+ + "\12\3\1\0\1\2\20\0\1\3\1\2\1\0\6\2\3\0\3\2"+ + "\1\0\4\2\3\0\2\2\1\0\1\2\1\0\2\2\3\0\2\2"+ + "\3\0\3\2\3\0\10\2\1\0\3\2\4\0\5\3\3\0\3\3"+ + "\1\0\4\3\11\0\1\3\17\0\11\3\11\0\1\2\7\0\3\3"+ + "\1\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2\1\0\5\2"+ + "\4\0\7\3\1\0\3\3\1\0\4\3\7\0\2\3\11\0\2\2"+ "\4\0\12\3\22\0\2\3\1\0\10\2\1\0\3\2\1\0\27\2"+ - "\1\0\20\2\4\0\6\3\2\0\3\3\1\0\4\3\11\0\1\3"+ - "\10\0\2\2\4\0\12\3\22\0\2\3\1\0\22\2\3\0\30\2"+ - "\1\0\11\2\1\0\1\2\2\0\7\2\3\0\1\3\4\0\6\3"+ - "\1\0\1\3\1\0\10\3\22\0\2\3\15\0\60\2\1\3\2\2"+ - "\7\3\4\0\10\2\10\3\1\0\12\3\47\0\2\2\1\0\1\2"+ - "\2\0\2\2\1\0\1\2\2\0\1\2\6\0\4\2\1\0\7\2"+ - "\1\0\3\2\1\0\1\2\1\0\1\2\2\0\2\2\1\0\4\2"+ - "\1\3\2\2\6\3\1\0\2\3\1\2\2\0\5\2\1\0\1\2"+ - "\1\0\6\3\2\0\12\3\2\0\2\2\42\0\1\2\27\0\2\3"+ - "\6\0\12\3\13\0\1\3\1\0\1\3\1\0\1\3\4\0\2\3"+ - "\10\2\1\0\42\2\6\0\24\3\1\0\2\3\4\2\4\0\10\3"+ - "\1\0\44\3\11\0\1\3\71\0\42\2\1\0\5\2\1\0\2\2"+ - "\1\0\7\3\3\0\4\3\6\0\12\3\6\0\6\2\4\3\106\0"+ - "\46\2\12\0\51\2\7\0\132\2\5\0\104\2\5\0\122\2\6\0"+ - "\7\2\1\0\77\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0"+ - "\1\2\1\0\4\2\2\0\47\2\1\0\1\2\1\0\4\2\2\0"+ - "\37\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0"+ - "\4\2\2\0\7\2\1\0\7\2\1\0\27\2\1\0\37\2\1\0"+ - "\1\2\1\0\4\2\2\0\7\2\1\0\47\2\1\0\23\2\16\0"+ - "\11\3\56\0\125\2\14\0\u026c\2\2\0\10\2\12\0\32\2\5\0"+ - "\113\2\3\0\3\2\17\0\15\2\1\0\4\2\3\3\13\0\22\2"+ - "\3\3\13\0\22\2\2\3\14\0\15\2\1\0\3\2\1\0\2\3"+ - "\14\0\64\2\40\3\3\0\1\2\3\0\2\2\1\3\2\0\12\3"+ - "\41\0\3\3\2\0\12\3\6\0\130\2\10\0\51\2\1\3\126\0"+ - "\35\2\3\0\14\3\4\0\14\3\12\0\12\3\36\2\2\0\5\2"+ - "\u038b\0\154\2\224\0\234\2\4\0\132\2\6\0\26\2\2\0\6\2"+ - "\2\0\46\2\2\0\6\2\2\0\10\2\1\0\1\2\1\0\1\2"+ - "\1\0\1\2\1\0\37\2\2\0\65\2\1\0\7\2\1\0\1\2"+ - "\3\0\3\2\1\0\7\2\3\0\4\2\2\0\6\2\4\0\15\2"+ - "\5\0\3\2\1\0\7\2\17\0\4\3\32\0\5\3\20\0\2\2"+ - "\23\0\1\2\13\0\4\3\6\0\6\3\1\0\1\2\15\0\1\2"+ - "\40\0\22\2\36\0\15\3\4\0\1\3\3\0\6\3\27\0\1\2"+ - "\4\0\1\2\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2"+ - "\1\0\1\2\1\0\1\2\1\0\4\2\1\0\3\2\1\0\7\2"+ - "\3\0\3\2\5\0\5\2\26\0\44\2\u0e81\0\3\2\31\0\11\2"+ - "\6\3\1\0\5\2\2\0\5\2\4\0\126\2\2\0\2\3\2\0"+ - "\3\2\1\0\137\2\5\0\50\2\4\0\136\2\21\0\30\2\70\0"+ - "\20\2\u0200\0\u19b6\2\112\0\u51a6\2\132\0\u048d\2\u0773\0\u2ba4\2\u215c\0"+ - "\u012e\2\2\0\73\2\225\0\7\2\14\0\5\2\5\0\1\2\1\3"+ - "\12\2\1\0\15\2\1\0\5\2\1\0\1\2\1\0\2\2\1\0"+ - "\2\2\1\0\154\2\41\0\u016b\2\22\0\100\2\2\0\66\2\50\0"+ - "\15\2\3\0\20\3\20\0\4\3\17\0\2\2\30\0\3\2\31\0"+ - "\1\2\6\0\5\2\1\0\207\2\2\0\1\3\4\0\1\2\13\0"+ - "\12\3\7\0\32\2\4\0\1\2\1\0\32\2\12\0\132\2\3\0"+ - "\6\2\2\0\6\2\2\0\6\2\2\0\3\2\3\0\2\2\3\0"+ - "\2\2\22\0\3\3\4\0"; + "\1\0\12\2\1\0\5\2\2\0\1\3\1\2\7\3\1\0\3\3"+ + "\1\0\4\3\7\0\2\3\7\0\1\2\1\0\2\2\4\0\12\3"+ + "\22\0\2\3\1\0\10\2\1\0\3\2\1\0\27\2\1\0\20\2"+ + "\4\0\6\3\2\0\3\3\1\0\4\3\11\0\1\3\10\0\2\2"+ + "\4\0\12\3\22\0\2\3\1\0\22\2\3\0\30\2\1\0\11\2"+ + "\1\0\1\2\2\0\7\2\3\0\1\3\4\0\6\3\1\0\1\3"+ + "\1\0\10\3\22\0\2\3\15\0\60\2\1\3\2\2\7\3\4\0"+ + "\10\2\10\3\1\0\12\3\47\0\2\2\1\0\1\2\2\0\2\2"+ + "\1\0\1\2\2\0\1\2\6\0\4\2\1\0\7\2\1\0\3\2"+ + "\1\0\1\2\1\0\1\2\2\0\2\2\1\0\4\2\1\3\2\2"+ + "\6\3\1\0\2\3\1\2\2\0\5\2\1\0\1\2\1\0\6\3"+ + "\2\0\12\3\2\0\2\2\42\0\1\2\27\0\2\3\6\0\12\3"+ + "\13\0\1\3\1\0\1\3\1\0\1\3\4\0\2\3\10\2\1\0"+ + "\42\2\6\0\24\3\1\0\2\3\4\2\4\0\10\3\1\0\44\3"+ + "\11\0\1\3\71\0\42\2\1\0\5\2\1\0\2\2\1\0\7\3"+ + "\3\0\4\3\6\0\12\3\6\0\6\2\4\3\106\0\46\2\12\0"+ + "\51\2\7\0\132\2\5\0\104\2\5\0\122\2\6\0\7\2\1\0"+ + "\77\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0"+ + "\4\2\2\0\47\2\1\0\1\2\1\0\4\2\2\0\37\2\1\0"+ + "\1\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2\0"+ + "\7\2\1\0\7\2\1\0\27\2\1\0\37\2\1\0\1\2\1\0"+ + "\4\2\2\0\7\2\1\0\47\2\1\0\23\2\16\0\11\3\56\0"+ + "\125\2\14\0\u026c\2\2\0\10\2\12\0\32\2\5\0\113\2\3\0"+ + "\3\2\17\0\15\2\1\0\4\2\3\3\13\0\22\2\3\3\13\0"+ + "\22\2\2\3\14\0\15\2\1\0\3\2\1\0\2\3\14\0\64\2"+ + "\40\3\3\0\1\2\3\0\2\2\1\3\2\0\12\3\41\0\3\3"+ + "\2\0\12\3\6\0\130\2\10\0\51\2\1\3\126\0\35\2\3\0"+ + "\14\3\4\0\14\3\12\0\12\3\36\2\2\0\5\2\u038b\0\154\2"+ + "\224\0\234\2\4\0\132\2\6\0\26\2\2\0\6\2\2\0\46\2"+ + "\2\0\6\2\2\0\10\2\1\0\1\2\1\0\1\2\1\0\1\2"+ + "\1\0\37\2\2\0\65\2\1\0\7\2\1\0\1\2\3\0\3\2"+ + "\1\0\7\2\3\0\4\2\2\0\6\2\4\0\15\2\5\0\3\2"+ + "\1\0\7\2\17\0\4\3\32\0\5\3\20\0\2\2\23\0\1\2"+ + "\13\0\4\3\6\0\6\3\1\0\1\2\15\0\1\2\40\0\22\2"+ + "\36\0\15\3\4\0\1\3\3\0\6\3\27\0\1\2\4\0\1\2"+ + "\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2\1\0\1\2"+ + "\1\0\1\2\1\0\4\2\1\0\3\2\1\0\7\2\3\0\3\2"+ + "\5\0\5\2\26\0\44\2\u0e81\0\3\2\31\0\11\2\6\3\1\0"+ + "\5\2\2\0\5\2\4\0\126\2\2\0\2\3\2\0\3\2\1\0"+ + "\137\2\5\0\50\2\4\0\136\2\21\0\30\2\70\0\20\2\u0200\0"+ + "\u19b6\2\112\0\u51a6\2\132\0\u048d\2\u0773\0\u2ba4\2\u215c\0\u012e\2\2\0"+ + "\73\2\225\0\7\2\14\0\5\2\5\0\1\2\1\3\12\2\1\0"+ + "\15\2\1\0\5\2\1\0\1\2\1\0\2\2\1\0\2\2\1\0"+ + "\154\2\41\0\u016b\2\22\0\100\2\2\0\66\2\50\0\15\2\3\0"+ + "\20\3\20\0\4\3\17\0\2\2\30\0\3\2\31\0\1\2\6\0"+ + "\5\2\1\0\207\2\2\0\1\3\4\0\1\2\13\0\12\3\7\0"+ + "\32\2\4\0\1\2\1\0\32\2\12\0\132\2\3\0\6\2\2\0"+ + "\6\2\2\0\6\2\2\0\3\2\3\0\2\2\3\0\2\2\22\0"+ + "\3\3\4\0"; /** * Translates characters to character classes @@ -159,28 +157,27 @@ class _JavaLexer implements FlexLexer { "\1\10\1\11\1\12\20\3\1\13\1\14\1\15\1\16"+ "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+ "\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36"+ - "\1\37\1\40\1\41\1\42\1\43\1\0\1\44\1\45"+ - "\3\46\2\0\3\6\1\46\1\0\1\47\1\50\1\51"+ - "\2\11\2\12\34\3\1\52\3\3\1\53\6\3\1\54"+ - "\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\64"+ - "\1\65\1\66\1\67\1\70\1\41\1\71\2\46\2\0"+ - "\1\6\1\44\1\0\1\6\1\0\1\72\2\3\1\73"+ - "\10\3\1\74\13\3\1\75\11\3\1\76\14\3\1\77"+ - "\1\0\2\71\4\0\1\46\2\0\1\100\2\3\1\101"+ - "\1\3\1\102\1\103\6\3\1\104\6\3\1\105\3\3"+ - "\1\106\1\3\1\107\3\3\1\110\6\3\1\111\5\3"+ - "\1\112\1\3\1\41\4\0\1\45\1\46\1\3\1\113"+ - "\2\3\1\114\1\115\1\116\4\3\1\117\1\3\1\120"+ - "\2\3\1\121\1\3\1\122\1\123\1\3\1\124\13\3"+ - "\1\125\1\3\1\126\1\127\2\3\1\130\2\3\1\131"+ - "\1\3\1\132\1\133\5\3\1\134\1\3\1\135\2\3"+ - "\1\136\3\3\1\137\1\140\3\3\1\141\4\3\1\142"+ - "\1\3\1\143\1\144\2\3\1\145\1\146\1\3\1\147"+ - "\4\3\1\150\1\151\1\3\1\152\2\3\1\153\1\3"+ - "\1\154\1\155\1\3\1\156"; + "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\3\46"+ + "\2\6\1\0\1\47\1\50\1\51\2\11\2\12\34\3"+ + "\1\52\3\3\1\53\6\3\1\54\1\55\1\56\1\57"+ + "\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67"+ + "\1\70\1\41\1\71\1\46\1\6\1\0\1\72\2\3"+ + "\1\73\10\3\1\74\13\3\1\75\11\3\1\76\14\3"+ + "\1\77\1\0\2\71\1\0\1\100\2\3\1\101\1\3"+ + "\1\102\1\103\6\3\1\104\6\3\1\105\3\3\1\106"+ + "\1\3\1\107\3\3\1\110\6\3\1\111\5\3\1\112"+ + "\1\3\1\41\1\0\1\3\1\113\2\3\1\114\1\115"+ + "\1\116\4\3\1\117\1\3\1\120\2\3\1\121\1\3"+ + "\1\122\1\123\1\3\1\124\13\3\1\125\1\3\1\126"+ + "\1\127\2\3\1\130\2\3\1\131\1\3\1\132\1\133"+ + "\5\3\1\134\1\3\1\135\2\3\1\136\3\3\1\137"+ + "\1\140\3\3\1\141\4\3\1\142\1\3\1\143\1\144"+ + "\2\3\1\145\1\146\1\3\1\147\4\3\1\150\1\151"+ + "\1\3\1\152\2\3\1\153\1\3\1\154\1\155\1\3"+ + "\1\156"; private static int [] zzUnpackAction() { - int [] result = new int[342]; + int [] result = new int[320]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -205,52 +202,49 @@ class _JavaLexer implements FlexLexer { private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\107\0\216\0\325\0\u011c\0\u0163\0\u01aa\0\u01f1"+ - "\0\u0238\0\u027f\0\u02c6\0\u030d\0\u0354\0\u039b\0\u03e2\0\u0429"+ - "\0\u0470\0\u04b7\0\u04fe\0\u0545\0\u058c\0\u05d3\0\u061a\0\u0661"+ - "\0\u06a8\0\u06ef\0\u0736\0\u077d\0\u07c4\0\u080b\0\u0852\0\u0899"+ - "\0\u08e0\0\107\0\u0927\0\u096e\0\u09b5\0\107\0\107\0\107"+ - "\0\107\0\107\0\107\0\107\0\107\0\107\0\107\0\u09fc"+ - "\0\107\0\u0a43\0\u0a8a\0\107\0\107\0\u0ad1\0\107\0\107"+ - "\0\107\0\u0b18\0\u0b5f\0\u0ba6\0\u0bed\0\u0c34\0\u0c7b\0\u0cc2"+ - "\0\u0d09\0\u0d50\0\107\0\107\0\107\0\107\0\u0d97\0\u0dde"+ - "\0\107\0\u0e25\0\u0e6c\0\u0eb3\0\u0efa\0\u0f41\0\u0f88\0\u0fcf"+ - "\0\u1016\0\u105d\0\u10a4\0\u10eb\0\u1132\0\u1179\0\u11c0\0\u1207"+ - "\0\u124e\0\u1295\0\u12dc\0\u1323\0\u136a\0\u13b1\0\u13f8\0\u143f"+ - "\0\u1486\0\u14cd\0\u1514\0\u155b\0\u15a2\0\325\0\u15e9\0\u1630"+ - "\0\u1677\0\u16be\0\u1705\0\u174c\0\u1793\0\u17da\0\u1821\0\u1868"+ - "\0\107\0\107\0\107\0\107\0\107\0\107\0\107\0\u18af"+ - "\0\107\0\107\0\107\0\107\0\107\0\u18f6\0\u193d\0\u1984"+ - "\0\u19cb\0\u1a12\0\u1a59\0\u1aa0\0\u1a59\0\u1ae7\0\u1b2e\0\u1b75"+ - "\0\107\0\u1bbc\0\u1c03\0\325\0\u1c4a\0\u1c91\0\u1cd8\0\u1d1f"+ - "\0\u1d66\0\u1dad\0\u1df4\0\u1e3b\0\325\0\u1e82\0\u1ec9\0\u1f10"+ - "\0\u1f57\0\u1f9e\0\u1fe5\0\u202c\0\u2073\0\u20ba\0\u2101\0\u2148"+ - "\0\325\0\u218f\0\u21d6\0\u221d\0\u2264\0\u22ab\0\u22f2\0\u2339"+ - "\0\u2380\0\u23c7\0\u240e\0\u2455\0\u249c\0\u24e3\0\u252a\0\u2571"+ - "\0\u25b8\0\u25ff\0\u2646\0\u268d\0\u26d4\0\u271b\0\u2762\0\107"+ - "\0\u27a9\0\u27f0\0\107\0\u2837\0\u287e\0\u28c5\0\u290c\0\u2953"+ - "\0\u299a\0\u29e1\0\325\0\u2a28\0\u2a6f\0\325\0\u2ab6\0\325"+ - "\0\325\0\u2afd\0\u2b44\0\u2b8b\0\u2bd2\0\u2c19\0\u2c60\0\325"+ - "\0\u2ca7\0\u2cee\0\u2d35\0\u2d7c\0\u2dc3\0\u2e0a\0\325\0\u2e51"+ - "\0\u2e98\0\u2edf\0\325\0\u2f26\0\325\0\u2f6d\0\u2fb4\0\u2ffb"+ - "\0\325\0\u3042\0\u3089\0\u30d0\0\u3117\0\u315e\0\u31a5\0\325"+ - "\0\u31ec\0\u3233\0\u327a\0\u32c1\0\u3308\0\325\0\u334f\0\107"+ - "\0\u3396\0\u33dd\0\u3424\0\u346b\0\u287e\0\u287e\0\u34b2\0\u34f9"+ - "\0\u3540\0\u3587\0\325\0\325\0\u35ce\0\u3615\0\u365c\0\u36a3"+ - "\0\u36ea\0\325\0\u3731\0\325\0\u3778\0\u37bf\0\325\0\u3806"+ - "\0\325\0\325\0\u384d\0\325\0\u3894\0\u38db\0\u3922\0\u3969"+ - "\0\u39b0\0\u39f7\0\u3a3e\0\u3a85\0\u3acc\0\u3b13\0\u3b5a\0\325"+ - "\0\u3ba1\0\325\0\325\0\u3be8\0\u3c2f\0\325\0\u3c76\0\u3cbd"+ - "\0\325\0\u3d04\0\325\0\325\0\u3d4b\0\u3d92\0\u3dd9\0\u3e20"+ - "\0\u3e67\0\325\0\u3eae\0\325\0\u3ef5\0\u3f3c\0\325\0\u3f83"+ - "\0\u3fca\0\u4011\0\325\0\325\0\u4058\0\u409f\0\u40e6\0\325"+ - "\0\u412d\0\u4174\0\u41bb\0\u4202\0\325\0\u4249\0\325\0\325"+ - "\0\u4290\0\u42d7\0\325\0\325\0\u431e\0\325\0\u4365\0\u43ac"+ - "\0\u43f3\0\u443a\0\325\0\325\0\u4481\0\325\0\u44c8\0\u450f"+ - "\0\325\0\u4556\0\325\0\325\0\u459d\0\325"; + "\0\0\0\104\0\210\0\314\0\u0110\0\u0154\0\u0198\0\u01dc"+ + "\0\u0220\0\u0264\0\u02a8\0\u02ec\0\u0330\0\u0374\0\u03b8\0\u03fc"+ + "\0\u0440\0\u0484\0\u04c8\0\u050c\0\u0550\0\u0594\0\u05d8\0\u061c"+ + "\0\u0660\0\u06a4\0\u06e8\0\u072c\0\u0770\0\u07b4\0\u07f8\0\u083c"+ + "\0\u0880\0\104\0\u08c4\0\u0908\0\u094c\0\104\0\104\0\104"+ + "\0\104\0\104\0\104\0\104\0\104\0\104\0\104\0\u0990"+ + "\0\104\0\u09d4\0\u0a18\0\104\0\104\0\104\0\104\0\104"+ + "\0\u0a5c\0\u0aa0\0\u0ae4\0\u0b28\0\u0b6c\0\104\0\104\0\104"+ + "\0\104\0\u0bb0\0\u0bf4\0\104\0\u0c38\0\u0c7c\0\u0cc0\0\u0d04"+ + "\0\u0d48\0\u0d8c\0\u0dd0\0\u0e14\0\u0e58\0\u0e9c\0\u0ee0\0\u0f24"+ + "\0\u0f68\0\u0fac\0\u0ff0\0\u1034\0\u1078\0\u10bc\0\u1100\0\u1144"+ + "\0\u1188\0\u11cc\0\u1210\0\u1254\0\u1298\0\u12dc\0\u1320\0\u1364"+ + "\0\314\0\u13a8\0\u13ec\0\u1430\0\u1474\0\u14b8\0\u14fc\0\u1540"+ + "\0\u1584\0\u15c8\0\u160c\0\104\0\104\0\104\0\104\0\104"+ + "\0\104\0\104\0\u1650\0\104\0\104\0\104\0\104\0\104"+ + "\0\u1694\0\u16d8\0\u171c\0\u1760\0\u17a4\0\104\0\u17e8\0\u182c"+ + "\0\314\0\u1870\0\u18b4\0\u18f8\0\u193c\0\u1980\0\u19c4\0\u1a08"+ + "\0\u1a4c\0\314\0\u1a90\0\u1ad4\0\u1b18\0\u1b5c\0\u1ba0\0\u1be4"+ + "\0\u1c28\0\u1c6c\0\u1cb0\0\u1cf4\0\u1d38\0\314\0\u1d7c\0\u1dc0"+ + "\0\u1e04\0\u1e48\0\u1e8c\0\u1ed0\0\u1f14\0\u1f58\0\u1f9c\0\u1fe0"+ + "\0\u2024\0\u2068\0\u20ac\0\u20f0\0\u2134\0\u2178\0\u21bc\0\u2200"+ + "\0\u2244\0\u2288\0\u22cc\0\u2310\0\104\0\u2354\0\u2398\0\104"+ + "\0\u23dc\0\314\0\u2420\0\u2464\0\314\0\u24a8\0\314\0\314"+ + "\0\u24ec\0\u2530\0\u2574\0\u25b8\0\u25fc\0\u2640\0\314\0\u2684"+ + "\0\u26c8\0\u270c\0\u2750\0\u2794\0\u27d8\0\314\0\u281c\0\u2860"+ + "\0\u28a4\0\314\0\u28e8\0\314\0\u292c\0\u2970\0\u29b4\0\314"+ + "\0\u29f8\0\u2a3c\0\u2a80\0\u2ac4\0\u2b08\0\u2b4c\0\314\0\u2b90"+ + "\0\u2bd4\0\u2c18\0\u2c5c\0\u2ca0\0\314\0\u2ce4\0\104\0\u2d28"+ + "\0\u2d6c\0\u2db0\0\u2df4\0\u2e38\0\314\0\314\0\u2e7c\0\u2ec0"+ + "\0\u2f04\0\u2f48\0\u2f8c\0\314\0\u2fd0\0\314\0\u3014\0\u3058"+ + "\0\314\0\u309c\0\314\0\314\0\u30e0\0\314\0\u3124\0\u3168"+ + "\0\u31ac\0\u31f0\0\u3234\0\u3278\0\u32bc\0\u3300\0\u3344\0\u3388"+ + "\0\u33cc\0\314\0\u3410\0\314\0\314\0\u3454\0\u3498\0\314"+ + "\0\u34dc\0\u3520\0\314\0\u3564\0\314\0\314\0\u35a8\0\u35ec"+ + "\0\u3630\0\u3674\0\u36b8\0\314\0\u36fc\0\314\0\u3740\0\u3784"+ + "\0\314\0\u37c8\0\u380c\0\u3850\0\314\0\314\0\u3894\0\u38d8"+ + "\0\u391c\0\314\0\u3960\0\u39a4\0\u39e8\0\u3a2c\0\314\0\u3a70"+ + "\0\314\0\314\0\u3ab4\0\u3af8\0\314\0\314\0\u3b3c\0\314"+ + "\0\u3b80\0\u3bc4\0\u3c08\0\u3c4c\0\314\0\314\0\u3c90\0\314"+ + "\0\u3cd4\0\u3d18\0\314\0\u3d5c\0\314\0\314\0\u3da0\0\314"; private static int [] zzUnpackRowMap() { - int [] result = new int[342]; + int [] result = new int[320]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -274,379 +268,342 @@ class _JavaLexer implements FlexLexer { private static final String ZZ_TRANS_PACKED_0 = "\1\2\1\3\1\4\1\2\1\5\1\6\1\3\1\7"+ - "\1\4\1\7\1\4\1\7\1\10\5\4\1\11\1\4"+ - "\1\12\1\4\1\3\1\13\1\2\1\14\1\15\1\16"+ - "\1\4\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+ - "\1\26\4\4\1\27\1\30\2\4\1\31\1\32\1\33"+ - "\1\34\1\4\1\35\1\36\1\37\1\40\1\41\1\42"+ - "\1\43\1\44\1\45\1\46\1\47\1\50\1\51\1\52"+ - "\1\53\1\54\1\55\1\56\1\57\1\60\1\61\110\0"+ - "\1\3\4\0\1\3\17\0\1\3\62\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\30\4\31\0"+ - "\1\62\1\63\54\0\1\64\106\0\1\65\33\0\1\7"+ - "\1\66\1\7\1\0\2\7\2\0\1\67\1\70\1\71"+ - "\1\72\1\73\11\0\1\73\1\70\1\0\1\67\11\0"+ - "\1\71\43\0\1\74\1\75\1\76\1\0\2\76\1\77"+ - "\1\100\1\67\1\70\1\71\1\72\1\73\11\0\1\73"+ - "\1\70\1\0\1\67\2\0\1\100\6\0\1\71\1\0"+ - "\1\77\41\0\1\101\1\0\1\101\1\0\2\101\5\0"+ - "\1\102\110\0\1\103\35\0\1\104\4\0\1\105\17\0"+ - "\6\13\1\0\17\13\1\0\1\106\1\107\56\13\6\14"+ - "\1\0\17\14\1\0\1\14\1\110\1\111\55\14\2\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\4\1\112\14\4\1\113\11\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\3\4\1\114"+ - "\24\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\6\4\1\115\1\4\1\116\11\4\1\117"+ - "\5\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\5\4\1\120\1\121\4\4\1\122\3\4"+ - "\1\123\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\7\4\1\124\1\4\1\125\16\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\13\4\1\126\14\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\127\1\4\1\130"+ - "\12\4\1\131\1\132\7\4\1\133\1\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\2\4"+ - "\1\134\1\135\1\4\1\136\22\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\4\1\137"+ - "\11\4\1\140\1\4\1\141\12\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\5\4\1\142"+ - "\1\143\4\4\1\144\2\4\1\145\11\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\4\4"+ - "\1\146\3\4\1\147\10\4\1\150\6\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\151\7\4\1\152\14\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\13\4\1\153\14\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\4\1\154\1\155\2\4\1\156\22\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\13\4\1\157\14\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\16\4\1\160\11\4\107\0"+ - "\1\161\106\0\1\162\106\0\1\163\1\0\1\164\104\0"+ - "\1\165\2\0\1\166\103\0\1\167\3\0\1\170\102\0"+ - "\1\171\5\0\1\172\100\0\1\173\106\0\1\174\131\0"+ - "\1\175\1\0\6\62\1\0\17\62\1\0\60\62\5\176"+ - "\1\177\101\176\7\0\1\7\1\66\1\7\1\0\2\7"+ - "\101\0\1\101\1\0\1\101\1\0\2\101\3\0\1\70"+ - "\1\71\1\0\1\73\11\0\1\73\1\70\13\0\1\71"+ - "\43\0\1\200\1\0\1\200\1\0\2\200\3\0\1\70"+ - "\1\71\2\0\1\201\11\0\1\70\13\0\1\71\12\0"+ - "\1\201\30\0\1\74\1\202\1\74\1\0\2\74\3\0"+ - "\1\70\1\71\1\72\1\73\11\0\1\73\1\70\13\0"+ - "\1\71\43\0\1\74\1\75\1\76\1\0\2\76\101\0"+ - "\1\74\1\75\1\76\1\0\2\76\2\0\1\67\1\70"+ - "\1\71\1\72\1\73\11\0\1\73\1\70\1\0\1\67"+ - "\11\0\1\71\34\0\7\203\1\204\1\203\4\204\1\203"+ - "\1\204\1\205\2\204\1\203\1\204\1\203\1\206\1\0"+ - "\6\203\3\204\1\205\2\203\2\204\5\203\1\204\3\203"+ - "\1\206\30\203\13\0\2\207\2\0\1\67\20\0\1\67"+ - "\55\0\1\101\1\210\1\101\1\0\2\101\3\0\1\70"+ - "\1\71\1\0\1\73\11\0\1\73\1\70\13\0\1\71"+ - "\56\0\1\211\64\0\6\13\1\0\17\13\1\0\60\13"+ - "\6\14\1\0\17\14\1\0\60\14\2\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\2\4\1\212"+ - "\2\4\1\213\7\4\1\214\12\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\4\1\215"+ - "\15\4\1\216\10\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\217\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ - "\1\220\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\2\4\1\221\25\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\222"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\6\4\1\223\21\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\13\4\1\224"+ - "\14\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\4\1\225\26\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\10\4\1\226"+ - "\17\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\7\4\1\227\20\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\7\4\1\230"+ - "\20\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\10\4\1\231\17\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\4\1\232"+ - "\3\4\1\233\22\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\24\4\1\234\3\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\10\4\1\235\17\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\13\4\1\236\14\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\17\4\1\237\10\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\6\4\1\240\21\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\26\4\1\241\1\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\242\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\243\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\244\14\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\245"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\246\6\4\1\247\20\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\5\4"+ - "\1\250\22\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\10\4\1\251\17\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\5\4"+ - "\1\252\22\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\253\6\4\1\254\20\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\24\4\1\255\3\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\4\4\1\256\23\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\2\4\1\257\25\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\260\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\13\4"+ - "\1\261\3\4\1\262\10\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\11\4\1\263\16\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\12\4\1\264\15\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\6\4\1\265\10\4"+ - "\1\266\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\17\4\1\267\10\4\107\0\1\270"+ - "\24\0\5\176\1\271\101\176\4\272\1\273\1\177\101\272"+ - "\7\0\1\200\1\274\1\200\1\0\2\200\3\0\1\70"+ - "\1\71\14\0\1\70\13\0\1\71\43\0\1\200\1\0"+ - "\1\200\1\0\2\200\3\0\1\70\1\71\14\0\1\70"+ - "\13\0\1\71\43\0\1\74\1\202\1\74\1\0\2\74"+ - "\101\0\1\275\1\0\4\275\1\0\1\275\1\0\2\275"+ - "\1\0\1\275\1\0\1\276\7\0\3\275\3\0\2\275"+ - "\5\0\1\275\3\0\1\276\30\0\7\203\1\204\1\277"+ - "\4\204\1\203\1\204\1\205\2\204\1\203\1\204\1\203"+ - "\1\206\1\0\6\203\3\204\1\205\2\203\2\204\5\203"+ - "\1\204\3\203\1\206\30\203\7\0\1\300\1\0\1\300"+ - "\1\275\2\300\1\0\1\275\1\0\2\275\1\0\1\275"+ - "\1\301\1\276\7\0\3\275\3\0\2\275\5\0\1\275"+ - "\3\0\1\276\6\0\1\301\31\0\1\302\2\0\2\207"+ - "\2\0\1\67\20\0\1\67\55\0\1\101\1\210\1\101"+ - "\1\0\2\101\74\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\303\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\10\4"+ - "\1\304\17\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\305\14\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ - "\1\306\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\2\4\1\307\25\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\310\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\21\4\1\311\6\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\312\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\7\4\1\313\20\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\5\4"+ - "\1\314\22\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\5\4\1\315\22\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\316\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\317\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\23\4\1\320"+ - "\4\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\17\4\1\321\10\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\322\27\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\323\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\12\4\1\324\15\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\4\1\325\26\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\326\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\6\4\1\327\21\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\17\4\1\330\10\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\5\4\1\331\22\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\6\4\1\332\21\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\333\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\12\4\1\334\15\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\335\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\7\4\1\336\20\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\337\6\4\1\340\20\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\4\1\341\26\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\342\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\343\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\6\4\1\344\4\4\1\345\14\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\5\4\1\346"+ - "\22\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\11\4\1\347\16\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\13\4\1\350"+ - "\14\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\351\27\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\25\4\1\352\2\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\6\4\1\353\21\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\14\4\1\354\13\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\355\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\20\4\1\356\7\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\6\4\1\357\21\4\25\0\4\176\1\360\1\271"+ - "\101\176\5\272\1\361\101\272\7\0\1\200\1\274\1\200"+ - "\1\0\2\200\101\0\1\275\1\362\4\275\1\0\1\275"+ - "\1\0\2\275\1\0\1\275\1\0\1\276\7\0\3\275"+ - "\3\0\2\275\5\0\1\275\3\0\1\276\37\0\1\200"+ - "\1\0\1\200\1\0\2\200\7\0\1\301\40\0\1\301"+ - "\30\0\1\204\1\363\4\204\1\0\1\204\1\0\2\204"+ - "\1\0\1\204\1\0\1\276\7\0\3\204\3\0\2\204"+ - "\5\0\1\204\3\0\1\276\37\0\1\300\1\364\1\300"+ - "\1\275\2\300\1\0\1\275\1\0\1\365\1\366\1\0"+ - "\1\275\1\0\1\276\7\0\1\275\1\365\1\275\3\0"+ - "\2\275\5\0\1\366\3\0\1\276\37\0\1\200\1\0"+ - "\1\200\1\0\2\200\102\0\1\302\2\0\2\207\74\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\7\4\1\367\20\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\26\4\1\370\1\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\4\1\371\26\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\10\4\1\372\17\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\373\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\374\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+ - "\1\375\21\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\4\1\376\26\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\4"+ - "\1\377\26\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\12\4\1\u0100\15\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\17\4"+ - "\1\u0101\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\4\1\u0102\26\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\16\4"+ - "\1\u0103\11\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\u0104\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\12\4\1\u0105"+ - "\15\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\25\4\1\u0106\2\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\14\4\1\u0107"+ - "\13\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\3\4\1\u0108\24\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\16\4\1\u0109"+ - "\11\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\7\4\1\u010a\20\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\17\4\1\u010b"+ - "\10\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\u010c\27\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\4\1\u010d\26\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\u010e\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u010f\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\4\1\u0110\26\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\2\4\1\u0111\25\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\6\4\1\u0112\21\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u0113\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\u0114\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\17\4\1\u0115\10\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\u0116\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\u0117\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u0118\24\4\25\0\4\272\1\273\1\361\101\272"+ - "\7\0\1\275\1\362\4\275\1\0\1\275\1\0\2\275"+ - "\1\0\1\275\11\0\3\275\3\0\2\275\5\0\1\275"+ - "\43\0\1\204\1\363\4\204\1\0\1\204\1\0\2\204"+ - "\1\0\1\204\11\0\3\204\3\0\2\204\5\0\1\204"+ - "\43\0\1\300\1\364\1\300\1\275\2\300\1\0\1\275"+ - "\1\0\2\275\1\0\1\275\11\0\3\275\3\0\2\275"+ - "\5\0\1\275\36\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\17\4\1\u0119\10\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ - "\1\u011a\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\10\4\1\u011b\17\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\20\4"+ - "\1\u011c\7\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\6\4\1\u011d\21\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u011e"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\5\4\1\u011f\22\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\u0120\27\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\12\4\1\u0121\15\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\4\1\u0122\26\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\16\4\1\u0123\11\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u0124\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\u0125\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\10\4\1\u0126\17\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\4\4\1\u0127\23\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\10\4\1\u0128\17\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\21\4\1\u0129\6\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\u012a\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\6\4\1\u012b\21\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\u012c\24\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\12\4\1\u012d\15\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\u012e\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\12\4"+ - "\1\u012f\15\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\23\4\1\u0130\4\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\17\4"+ - "\1\u0131\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\u0132\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ - "\1\u0133\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\15\4\1\u0134\12\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\12\4"+ - "\1\u0135\15\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\4\4\1\u0136\23\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\13\4"+ - "\1\u0137\14\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\10\4\1\u0138\17\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\2\4"+ - "\1\u0139\25\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\5\4\1\u013a\22\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\12\4"+ - "\1\u013b\15\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\u013c\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u013d"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\u013e\27\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u013f\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\u0140\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\6\4\1\u0141\21\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\10\4\1\u0142\17\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\u0143\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\24\4\1\u0144\3\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\10\4\1\u0145\17\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u0146\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\12\4\1\u0147\15\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u0148\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\10\4\1\u0149\17\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u014a\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\u014b\24\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\u014c\27\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\17\4\1\u014d\10\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\u014e\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\u014f\14\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u0150"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\20\4\1\u0151\7\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\27\4\1\u0152"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\4\4\1\u0153\23\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\7\4\1\u0154\20\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\u0155\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\20\4\1\u0156\7\4"+ - "\25\0"; + "\3\4\1\10\4\4\1\11\1\4\1\12\1\4\1\13"+ + "\1\2\1\14\1\15\1\16\1\4\1\17\1\20\1\21"+ + "\1\22\1\23\1\24\1\25\1\26\4\4\1\27\1\30"+ + "\2\4\1\31\1\32\1\33\1\34\1\4\1\35\1\36"+ + "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+ + "\1\47\1\50\1\51\1\52\1\53\1\54\1\55\1\56"+ + "\1\57\1\60\1\61\105\0\1\3\4\0\1\3\77\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\30\4\31\0\1\62\1\63\51\0\1\64\103\0\1\65"+ + "\33\0\2\7\1\0\1\66\1\7\2\0\1\67\1\70"+ + "\1\71\1\72\10\0\1\72\1\67\1\0\1\66\11\0"+ + "\1\70\43\0\2\7\1\0\1\66\1\7\1\73\1\74"+ + "\1\67\1\70\1\71\1\72\10\0\1\72\1\67\1\0"+ + "\1\66\2\0\1\74\6\0\1\70\1\0\1\73\41\0"+ + "\1\71\3\0\1\71\4\0\1\75\105\0\1\76\34\0"+ + "\1\77\4\0\1\100\17\0\6\13\1\0\15\13\1\101"+ + "\1\102\56\13\6\14\1\0\16\14\1\103\1\104\55\14"+ + "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\4\1\105\14\4\1\106\11\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\107\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\6\4\1\110\1\4\1\111\11\4"+ + "\1\112\5\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\5\4\1\113\1\114\4\4\1\115"+ + "\3\4\1\116\10\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\7\4\1\117\1\4\1\120"+ + "\16\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\13\4\1\121\14\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\122\1\4"+ + "\1\123\12\4\1\124\1\125\7\4\1\126\1\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\2\4\1\127\1\130\1\4\1\131\22\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\4"+ + "\1\132\11\4\1\133\1\4\1\134\12\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\5\4"+ + "\1\135\1\136\4\4\1\137\2\4\1\140\11\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\141\3\4\1\142\10\4\1\143\6\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\144\7\4\1\145\14\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\13\4\1\146"+ + "\14\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\4\1\147\1\150\2\4\1\151\22\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\13\4\1\152\14\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\16\4\1\153\11\4"+ + "\104\0\1\154\103\0\1\155\103\0\1\156\1\0\1\157"+ + "\101\0\1\160\2\0\1\161\100\0\1\162\3\0\1\163"+ + "\77\0\1\164\5\0\1\165\75\0\1\166\103\0\1\167"+ + "\126\0\1\170\1\0\6\62\1\0\75\62\5\171\1\172"+ + "\76\171\7\0\2\71\2\0\1\71\2\0\1\67\1\70"+ + "\1\0\1\72\10\0\1\72\1\67\13\0\1\70\43\0"+ + "\2\173\2\0\1\173\2\0\1\67\1\70\2\0\1\173"+ + "\10\0\1\67\13\0\1\70\12\0\1\173\30\0\3\174"+ + "\1\66\1\174\1\0\3\174\1\175\1\174\10\0\3\174"+ + "\1\66\2\0\2\174\5\0\1\174\43\0\2\74\1\0"+ + "\1\66\1\74\21\0\1\66\66\0\1\176\63\0\6\13"+ + "\1\0\75\13\6\14\1\0\75\14\2\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\2\4\1\177"+ + "\2\4\1\200\7\4\1\201\12\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\202"+ + "\15\4\1\203\10\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\204\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\7\4"+ + "\1\205\20\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\2\4\1\206\25\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\207"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\210\21\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\13\4\1\211"+ + "\14\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\4\1\212\26\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\10\4\1\213"+ + "\17\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\7\4\1\214\20\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\215"+ + "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\10\4\1\216\17\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\217"+ + "\3\4\1\220\22\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\24\4\1\221\3\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\10\4\1\222\17\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\13\4\1\223\14\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\17\4\1\224\10\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\6\4\1\225\21\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\26\4\1\226\1\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\227\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\230\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\13\4\1\231\14\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\232"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\233\6\4\1\234\20\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\5\4"+ + "\1\235\22\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\236\17\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\5\4"+ + "\1\237\22\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\240\6\4\1\241\20\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\24\4\1\242\3\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\4\4\1\243\23\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\2\4\1\244\25\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\245\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\13\4"+ + "\1\246\3\4\1\247\10\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\11\4\1\250\16\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\12\4\1\251\15\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\6\4\1\252\10\4"+ + "\1\253\10\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\17\4\1\254\10\4\104\0\1\255"+ + "\24\0\5\171\1\256\76\171\4\257\1\260\1\172\76\257"+ + "\7\0\2\173\2\0\1\173\2\0\1\67\1\70\13\0"+ + "\1\67\13\0\1\70\43\0\3\174\1\66\1\174\1\0"+ + "\3\174\1\261\1\174\1\0\1\72\6\0\3\174\1\66"+ + "\2\0\2\174\5\0\1\174\3\0\1\72\37\0\3\261"+ + "\1\0\1\261\1\0\3\261\1\0\1\261\10\0\3\261"+ + "\3\0\2\261\5\0\1\261\36\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\3\4\1\262\24\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\10\4\1\263\17\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\13\4\1\264\14\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\7\4\1\265\20\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\2\4\1\266\25\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\267\24\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\21\4\1\270\6\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\271\24\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\7\4\1\272\20\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\5\4\1\273\22\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\5\4\1\274\22\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\275\24\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\276\27\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\23\4\1\277\4\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\17\4\1\300\10\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\301\27\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\302\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+ + "\1\303\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\4\1\304\26\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\305"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\306\21\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\17\4\1\307"+ + "\10\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\310\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\6\4\1\311"+ + "\21\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\312\24\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\12\4\1\313"+ + "\15\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\314\24\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\315"+ + "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\316\6\4\1\317\20\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\4"+ + "\1\320\26\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\321\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\322"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\323\4\4\1\324\14\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\5\4\1\325\22\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\11\4\1\326\16\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\13\4\1\327\14\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\330\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\25\4"+ + "\1\331\2\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\6\4\1\332\21\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\14\4"+ + "\1\333\13\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\5\4\1\334\22\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\20\4"+ + "\1\335\7\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\6\4\1\336\21\4\25\0\4\171"+ + "\1\337\1\256\76\171\5\257\1\340\76\257\7\0\3\261"+ + "\1\0\1\261\1\0\3\261\1\0\1\261\1\0\1\72"+ + "\6\0\3\261\3\0\2\261\5\0\1\261\3\0\1\72"+ + "\32\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\7\4\1\341\20\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\26\4\1\342\1\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\4\1\343\26\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\10\4\1\344\17\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\345\24\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\346\27\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\6\4\1\347\21\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\350\26\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\4\1\351\26\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\12\4\1\352\15\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\17\4\1\353\10\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\354\26\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\16\4\1\355\11\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\356\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+ + "\1\357\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\25\4\1\360\2\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\14\4"+ + "\1\361\13\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\362\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\16\4"+ + "\1\363\11\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\7\4\1\364\20\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\17\4"+ + "\1\365\10\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\366\27\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\367"+ + "\26\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\370\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\371"+ + "\24\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\4\1\372\26\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\2\4\1\373"+ + "\25\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\374\21\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\375"+ + "\24\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\376\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\17\4\1\377"+ + "\10\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\u0100\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\u0101\27\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\u0102\24\4\25\0\4\257\1\260\1\340"+ + "\76\257\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\17\4\1\u0103\10\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\u0104"+ + "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\10\4\1\u0105\17\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\20\4\1\u0106"+ + "\7\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\u0107\21\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\u0108\27\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\5\4\1\u0109\22\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\u010a\27\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\12\4\1\u010b\15\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\u010c\26\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\16\4\1\u010d\11\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\u010e\24\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\5\4\1\u010f\22\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\10\4\1\u0110\17\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\u0111\23\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\10\4\1\u0112\17\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\21\4\1\u0113\6\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\u0114\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\6\4"+ + "\1\u0115\21\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\u0116\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+ + "\1\u0117\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\u0118\27\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\12\4\1\u0119"+ + "\15\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\23\4\1\u011a\4\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\17\4\1\u011b"+ + "\10\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\u011c\24\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\u011d"+ + "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\15\4\1\u011e\12\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\12\4\1\u011f"+ + "\15\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\u0120\23\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\13\4\1\u0121"+ + "\14\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\10\4\1\u0122\17\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\2\4\1\u0123"+ + "\25\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\u0124\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\12\4\1\u0125"+ + "\15\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\u0126\24\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\u0127\27\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\u0128\27\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\u0129\24\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\u012a\24\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\6\4\1\u012b\21\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\10\4\1\u012c\17\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\u012d\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\24\4"+ + "\1\u012e\3\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\u012f\17\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\u0130\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\12\4\1\u0131\15\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\u0132\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\u0133\17\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\u0134\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\u0135\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\u0136"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\17\4\1\u0137\10\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\u0138"+ + "\24\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\13\4\1\u0139\14\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\u013a\27\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\20\4\1\u013b\7\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\27\4\1\u013c\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\u013d\23\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\7\4\1\u013e\20\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\u013f\24\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\20\4\1\u0140\7\4\25\0"; private static int [] zzUnpackTrans() { - int [] result = new int[17892]; + int [] result = new int[15844]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -688,14 +645,12 @@ class _JavaLexer implements FlexLexer { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\1\0\1\11\37\1\1\11\3\1\12\11\1\1\1\11"+ - "\2\1\2\11\1\0\3\11\2\1\2\0\4\1\1\0"+ - "\4\11\2\1\1\11\47\1\7\11\1\1\5\11\4\1"+ - "\2\0\2\1\1\0\1\1\1\0\1\11\56\1\1\11"+ - "\1\0\1\1\1\11\4\0\1\1\2\0\55\1\1\11"+ - "\4\0\142\1"; + "\2\1\5\11\4\1\1\0\4\11\2\1\1\11\47\1"+ + "\7\11\1\1\5\11\4\1\1\0\1\11\56\1\1\11"+ + "\1\0\1\1\1\11\1\0\55\1\1\11\1\0\140\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[342]; + int [] result = new int[320]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -794,7 +749,7 @@ class _JavaLexer implements FlexLexer { char [] map = new char[0x10000]; int i = 0; /* index in packed string */ int j = 0; /* index in unpacked array */ - while (i < 1788) { + while (i < 1784) { int count = packed.charAt(i++); char value = packed.charAt(i++); do map[j++] = value; while (--count > 0); @@ -975,7 +930,7 @@ class _JavaLexer implements FlexLexer { while (true) { if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++]:zzBufferL.charAt(zzCurrentPosL++); + zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++)); else if (zzAtEOF) { zzInput = YYEOF; break zzForAction; @@ -995,7 +950,7 @@ class _JavaLexer implements FlexLexer { break zzForAction; } else { - zzInput = zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++]:zzBufferL.charAt(zzCurrentPosL++); + zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++)); } } int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; diff --git a/java/java-psi-impl/src/messages/JavaErrorMessages.properties b/java/java-psi-impl/src/messages/JavaErrorMessages.properties index 1b02a298c40f..49f1547690f2 100644 --- a/java/java-psi-impl/src/messages/JavaErrorMessages.properties +++ b/java/java-psi-impl/src/messages/JavaErrorMessages.properties @@ -278,6 +278,7 @@ unclosed.char.literal=Unclosed character literal illegal.escape.character.in.string.literal=Illegal escape character in string literal floating.point.number.too.large=Floating point number too large floating.point.number.too.small=Floating point number too small +illegal.underscore=Illegal underscore import.statement.identifier.or.asterisk.expected.=Identifier or '*' expected diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NumericLiterals.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NumericLiterals.java index becdda581a2a..45f728d465f8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NumericLiterals.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NumericLiterals.java @@ -1,24 +1,4 @@ -/* - * Copyright 2000-2012 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/// assignment compatible types -import java.io.*; -import java.net.*; - -public class a { +public class NumericLiterals { final int FI = 2; final int FIBIG = 200000000; @@ -38,7 +18,8 @@ public class a { int i13 = 040000000000; int i14 = 020000000000; int i15 = 0xf044332211; - int octale = 017777777777; // negative + int oi1 = 017777777777; + int oi2 = 08; int bi1 = 0b0010; int bi2 = 0B0010; int bi3 = 1_2; @@ -53,8 +34,8 @@ public class a { long l8 = 0xffffffffffffffffL; long l9 = 0xffffffffffffffff9L; long l10 = 0x8000000000000000L; - long octalValue = 01777777777777777777600L; - long octalValua = 01777777777777777777777L; + long ol1 = 01777777777777777777600L; + long ol2 = 01777777777777777777777L; long bl1 = 0b0010l; long bl2 = 0B0010L; long bl3 = 10_24L; @@ -63,7 +44,8 @@ public class a { float f2 = 1e39f; float f3 = 0E1F; float f4 = 0xabc.defP2f; - float bf1 = 3.141_592f; + float f5 = 3.141_592f; + float f6 = .0f; double dd1 = 1e-324; double dd2 = 1e309; @@ -81,5 +63,6 @@ public class a { double d10 = 1e-F; double d11 = 1e-f; double d12 = 3.141_592_653_589_793d; + double d13 = .0e; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/NumericLiterals.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/NumericLiterals.java index bf9f96ff1e96..cb59ded58cc6 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/NumericLiterals.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/NumericLiterals.java @@ -7,6 +7,11 @@ public class NumericLiterals { int i5 = 0b0001_0010_0100_1000; int i6 = 0b; int i7 = 0b1_1111_1111_1111_1111_1111_1111_1111_1111; + int i8 = 0_; + int i9 = 0_8; + int i10 = 0x_f; + int i11 = 0b_1; + int i12 = 0B2; long l1 = 1_2L; long l2 = 012__34l; @@ -41,5 +46,7 @@ public class NumericLiterals { double d10 = 0x.a_bcP1___23d; double d11 = 1e-3_2_4; double d12 = 0xa_bc.de_fP1_234D; + double d13 = 0x1.0_p-1; + double d14 = 1.0e_1022; } } diff --git a/java/java-tests/testSrc/com/intellij/lang/java/lexer/JavaLexerTest.java b/java/java-tests/testSrc/com/intellij/lang/java/lexer/JavaLexerTest.java index b1639bc4b4be..113211720e39 100644 --- a/java/java-tests/testSrc/com/intellij/lang/java/lexer/JavaLexerTest.java +++ b/java/java-tests/testSrc/com/intellij/lang/java/lexer/JavaLexerTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,6 +52,17 @@ public class JavaLexerTest extends LexerTestCase { "DOUBLE_LITERAL ('3.14')\nWHITE_SPACE (' ')\n" + "DOUBLE_LITERAL ('1e-9d')\nWHITE_SPACE (' ')\n" + "DOUBLE_LITERAL ('1e137')"); + + doTest(". e0 x1 ax .e .p 08 .0e .0f", + "DOT ('.')\nWHITE_SPACE (' ')\n" + + "IDENTIFIER ('e0')\nWHITE_SPACE (' ')\n" + + "IDENTIFIER ('x1')\nWHITE_SPACE (' ')\n" + + "IDENTIFIER ('ax')\nWHITE_SPACE (' ')\n" + + "DOT ('.')\nIDENTIFIER ('e')\nWHITE_SPACE (' ')\n" + + "DOT ('.')\nIDENTIFIER ('p')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('08')\nWHITE_SPACE (' ')\n" + + "DOUBLE_LITERAL ('.0e')\nWHITE_SPACE (' ')\n" + + "FLOAT_LITERAL ('.0f')"); } public void testTigerNumericLiterals() { @@ -66,6 +77,9 @@ public class JavaLexerTest extends LexerTestCase { "DOUBLE_LITERAL ('0xab.P12')\nWHITE_SPACE (' ')\n" + "DOUBLE_LITERAL ('0x.abcP123d')\nWHITE_SPACE (' ')\n" + "DOUBLE_LITERAL ('0xabc.defP1234D')"); + + doTest("p0", + "IDENTIFIER ('p0')"); } public void testCoinNumericLiterals() { @@ -116,15 +130,18 @@ public class JavaLexerTest extends LexerTestCase { } public void testMalformedCoinLiterals() { - doTest("0_ _1 0_8 0x_f 0b_1 0B2 0x1.0_p-1 1.0e_1022", - "INTEGER_LITERAL ('0')\nIDENTIFIER ('_')\nWHITE_SPACE (' ')\n" + + doTest("_1 _b ._ 0_ 0_8 0x_f 0b_1 0B2 0x1.0_p-1 1.0e_1022 0._1", "IDENTIFIER ('_1')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0')\nIDENTIFIER ('_8')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0x')\nIDENTIFIER ('_f')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0b')\nIDENTIFIER ('_1')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0B')\nINTEGER_LITERAL ('2')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0x1')\nDOUBLE_LITERAL ('.0')\nIDENTIFIER ('_p')\nMINUS ('-')\nINTEGER_LITERAL ('1')\nWHITE_SPACE (' ')\n" + - "DOUBLE_LITERAL ('1.0e')\nIDENTIFIER ('_1022')"); + "IDENTIFIER ('_b')\nWHITE_SPACE (' ')\n" + + "DOT ('.')\nIDENTIFIER ('_')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0_')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0_8')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0x_f')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0b_1')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0B2')\nWHITE_SPACE (' ')\n" + + "DOUBLE_LITERAL ('0x1.0_p-1')\nWHITE_SPACE (' ')\n" + + "DOUBLE_LITERAL ('1.0e_1022')\nWHITE_SPACE (' ')\n" + + "DOUBLE_LITERAL ('0._1')"); } public void testMalformedOperators() {