From c6c028883b7f959c9a2b04b4c12a1042c59c2059 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 11 May 2012 21:46:40 +0400 Subject: [PATCH] Java 8 tokens --- .../src/com/intellij/psi/JavaTokenType.java | 6 +- .../src/com/intellij/lexer/JavaLexer.java | 65 +- .../src/com/intellij/lexer/_JavaLexer.flex | 25 +- .../src/com/intellij/lexer/_JavaLexer.java | 1236 +++++++++-------- .../lang/java/lexer/JavaLexerTest.java | 5 + 5 files changed, 695 insertions(+), 642 deletions(-) rename java/{java-impl => java-psi-impl}/src/com/intellij/lexer/_JavaLexer.flex (91%) diff --git a/java/java-psi-api/src/com/intellij/psi/JavaTokenType.java b/java/java-psi-api/src/com/intellij/psi/JavaTokenType.java index 7b868633a938..81db31947f2b 100644 --- a/java/java-psi-api/src/com/intellij/psi/JavaTokenType.java +++ b/java/java-psi-api/src/com/intellij/psi/JavaTokenType.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * 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. @@ -87,6 +87,7 @@ public interface JavaTokenType extends TokenType{ IElementType TRY_KEYWORD = new IKeywordElementType("TRY_KEYWORD"); IElementType VOLATILE_KEYWORD = new IKeywordElementType("VOLATILE_KEYWORD"); IElementType THROWS_KEYWORD = new IKeywordElementType("THROWS_KEYWORD"); + IElementType NONE_KEYWORD = new IKeywordElementType("NONE_KEYWORD"); IElementType LPARENTH = new IJavaElementType("LPARENTH"); IElementType RPARENTH = new IJavaElementType("RPARENTH"); @@ -139,6 +140,9 @@ public interface JavaTokenType extends TokenType{ IElementType GTGTEQ = new IJavaElementType("GTGTEQ"); IElementType GTGTGTEQ = new IJavaElementType("GTGTGTEQ"); + IElementType DOUBLE_COLON = new IJavaElementType("DOUBLE_COLON"); + IElementType ARROW = new IJavaElementType("ARROW"); + TokenSet OPERATION_BIT_SET = TokenSet.create( EQ, GT, LT, EXCL, TILDE, QUEST, COLON, PLUS, MINUS, ASTERISK, DIV, AND, OR, XOR, PERC, EQEQ, LE, GE, NE, ANDAND, OROR, PLUSPLUS, MINUSMINUS, LTLT, GTGT, GTGTGT, 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 cee9feac4a2d..cf47bdcb772c 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-2009 JetBrains s.r.o. + * 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. @@ -23,50 +23,51 @@ import com.intellij.psi.impl.source.tree.JavaDocElementType; import com.intellij.psi.tree.IElementType; import com.intellij.util.text.CharArrayUtil; import gnu.trove.THashSet; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.util.Set; public class JavaLexer extends LexerBase { - private JavaLexer(boolean isAssertKeywordEnabled, boolean isJDK15) { - myTable = getTable(isAssertKeywordEnabled, isJDK15); - myFlexLexer = new _JavaLexer(isAssertKeywordEnabled, isJDK15); - } + private static final HashTable[] TABLES = new HashTable[]{ + new HashTable(LanguageLevel.JDK_1_8), + new HashTable(LanguageLevel.JDK_1_5), + new HashTable(LanguageLevel.JDK_1_4), + new HashTable(LanguageLevel.JDK_1_3) + }; - public JavaLexer(LanguageLevel level) { - this(level.hasAssertKeyword(), level.hasEnumKeywordAndAutoboxing()); + private static HashTable getTable(final LanguageLevel level) { + for (HashTable table : TABLES) { + if (level.isAtLeast(table.myLevel)) { + return table; + } + } + throw new IllegalArgumentException("Unsupported level: " + level); } - private static HashTable getTable(boolean isAssertKeywordEnabled, boolean isJDK15) { - return isAssertKeywordEnabled - ? isJDK15 ? ourTableWithAssertAndJDK15 : ourTableWithAssert - : isJDK15 ? ourTableWithJDK15 : ourTableWithoutAssert; - } - - private static HashTable getTable(LanguageLevel level) { - return getTable(level.hasAssertKeyword(), level.hasEnumKeywordAndAutoboxing()); - } - - public static boolean isKeyword(String id, LanguageLevel level) { return getTable(level).contains(id); } + private final _JavaLexer myFlexLexer; + private final HashTable myTable; private CharSequence myBuffer; private char[] myBufferArray; private int myBufferIndex; private int myBufferEndOffset; - + private int myTokenEndOffset; // positioned after the last symbol of the current token private IElementType myTokenType; - private _JavaLexer myFlexLexer; - //Positioned after the last symbol of the current token - private int myTokenEndOffset; + public JavaLexer(@NotNull final LanguageLevel level) { + myFlexLexer = new _JavaLexer(level); + myTable = getTable(level); + } private static final class HashTable { private static final int NUM_ENTRIES = 999; private static final Logger LOG = Logger.getInstance("com.intellij.Lexer.JavaLexer"); + private final LanguageLevel myLevel; private final char[][] myTable = new char[NUM_ENTRIES][]; private final IElementType[] myKeywords = new IElementType[NUM_ENTRIES]; private final Set myKeywordsInSet = new THashSet(); @@ -111,12 +112,16 @@ public class JavaLexer extends LexerBase { } @SuppressWarnings({"HardCodedStringLiteral"}) - private HashTable(boolean isAssertKeywordEnabled, boolean isJDK15) { - if (isAssertKeywordEnabled) { + private HashTable(final LanguageLevel level) { + myLevel = level; + if (level.isAtLeast(LanguageLevel.JDK_1_4)) { add("assert", JavaTokenType.ASSERT_KEYWORD); - } - if (isJDK15) { - add("enum", JavaTokenType.ENUM_KEYWORD); + if (level.isAtLeast(LanguageLevel.JDK_1_5)) { + add("enum", JavaTokenType.ENUM_KEYWORD); + if (level.isAtLeast(LanguageLevel.JDK_1_8)) { + add("none", JavaTokenType.NONE_KEYWORD); + } + } } add("abstract", JavaTokenType.ABSTRACT_KEYWORD); add("default", JavaTokenType.DEFAULT_KEYWORD); @@ -172,12 +177,6 @@ public class JavaLexer extends LexerBase { } } - private final HashTable myTable; - private static final HashTable ourTableWithoutAssert = new HashTable(false, false); - private static final HashTable ourTableWithAssert = new HashTable(true, false); - private static final HashTable ourTableWithAssertAndJDK15 = new HashTable(true, true); - private static final HashTable ourTableWithJDK15 = new HashTable(false, true); - @Override public final void start(CharSequence buffer, int startOffset, int endOffset, int initialState) { myBuffer = buffer; diff --git a/java/java-impl/src/com/intellij/lexer/_JavaLexer.flex b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex similarity index 91% rename from java/java-impl/src/com/intellij/lexer/_JavaLexer.flex rename to java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex index ee395afce51e..a1335e5ba747 100644 --- a/java/java-impl/src/com/intellij/lexer/_JavaLexer.flex +++ b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex @@ -1,6 +1,8 @@ /* It's an automatically generated code. Do not modify it. */ package com.intellij.lexer; -import com.intellij.psi.*; + +import com.intellij.pom.java.LanguageLevel; +import com.intellij.psi.JavaTokenType; import com.intellij.psi.impl.source.tree.JavaDocElementType; import com.intellij.psi.tree.IElementType; @@ -8,13 +10,15 @@ import com.intellij.psi.tree.IElementType; %% %{ - private boolean myAssertKeywordEnabled; - private boolean myJdk15Enabled; + private boolean myAssertKeyword; + private boolean myEnumKeyword; + private boolean myNoneKeyword; - public _JavaLexer(boolean isAssertKeywordEnabled, boolean jdk15Enabled){ + public _JavaLexer(LanguageLevel level) { this((java.io.Reader)null); - myAssertKeywordEnabled = isAssertKeywordEnabled; - myJdk15Enabled = jdk15Enabled; + myAssertKeyword = level.isAtLeast(LanguageLevel.JDK_1_4); + myEnumKeyword = level.isAtLeast(LanguageLevel.JDK_1_5); + myNoneKeyword = level.isAtLeast(LanguageLevel.JDK_1_8); } public void goTo(int offset) { @@ -101,7 +105,7 @@ ESCAPE_SEQUENCE=\\[^\r\n] "null" { return JavaTokenType.NULL_KEYWORD; } "abstract" { return JavaTokenType.ABSTRACT_KEYWORD; } - "assert" { return myAssertKeywordEnabled ? JavaTokenType.ASSERT_KEYWORD : JavaTokenType.IDENTIFIER; } + "assert" { return myAssertKeyword ? JavaTokenType.ASSERT_KEYWORD : JavaTokenType.IDENTIFIER; } "boolean" { return JavaTokenType.BOOLEAN_KEYWORD; } "break" { return JavaTokenType.BREAK_KEYWORD; } "byte" { return JavaTokenType.BYTE_KEYWORD; } @@ -115,7 +119,7 @@ ESCAPE_SEQUENCE=\\[^\r\n] "do" { return JavaTokenType.DO_KEYWORD; } "double" { return JavaTokenType.DOUBLE_KEYWORD; } "else" { return JavaTokenType.ELSE_KEYWORD; } - "enum" { return myJdk15Enabled ? JavaTokenType.ENUM_KEYWORD : JavaTokenType.IDENTIFIER; } + "enum" { return myEnumKeyword ? JavaTokenType.ENUM_KEYWORD : JavaTokenType.IDENTIFIER; } "extends" { return JavaTokenType.EXTENDS_KEYWORD; } "final" { return JavaTokenType.FINAL_KEYWORD; } "finally" { return JavaTokenType.FINALLY_KEYWORD; } @@ -150,6 +154,7 @@ ESCAPE_SEQUENCE=\\[^\r\n] "try" { return JavaTokenType.TRY_KEYWORD; } "volatile" { return JavaTokenType.VOLATILE_KEYWORD; } "throws" { return JavaTokenType.THROWS_KEYWORD; } + "none" { return myNoneKeyword ? JavaTokenType.NONE_KEYWORD : JavaTokenType.IDENTIFIER; } {IDENTIFIER} { return JavaTokenType.IDENTIFIER; } @@ -201,5 +206,7 @@ ESCAPE_SEQUENCE=\\[^\r\n] "%" { return JavaTokenType.PERC; } "@" { return JavaTokenType.AT; } - . { return JavaTokenType.BAD_CHARACTER; } + "::" { return JavaTokenType.DOUBLE_COLON; } + "->" { return JavaTokenType.ARROW; } + . { return JavaTokenType.BAD_CHARACTER; } 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 25b809b8a7ba..6f9733947fd3 100644 --- a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java +++ b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java @@ -1,8 +1,26 @@ -/* The following code was generated by JFlex 1.4.3 on 2/3/11 8:56 PM */ +/* + * 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. + */ + +/* The following code was generated by JFlex 1.4.3 on 5/11/12 9:41 PM */ /* It's an automatically generated code. Do not modify it. */ package com.intellij.lexer; -import com.intellij.psi.*; + +import com.intellij.pom.java.LanguageLevel; +import com.intellij.psi.JavaTokenType; import com.intellij.psi.impl.source.tree.JavaDocElementType; import com.intellij.psi.tree.IElementType; @@ -11,8 +29,8 @@ import com.intellij.psi.tree.IElementType; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 2/3/11 8:56 PM from the specification file - * /home/sher/Projects/IDEA/tools/lexer/../../community/java/java-impl/src/com/intellij/lexer/_JavaLexer.flex + * on 5/11/12 9:41 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 { /** initial size of the lookahead buffer */ @@ -142,27 +160,27 @@ class _JavaLexer implements FlexLexer { "\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\2\11"+ - "\2\12\34\3\1\51\3\3\1\52\6\3\1\53\1\54"+ + "\3\46\2\0\3\6\1\46\1\0\1\47\1\50\1\51"+ + "\2\11\2\12\35\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\41\1\67\2\46\2\0\1\6\1\44"+ - "\1\0\1\6\1\0\1\70\2\3\1\71\10\3\1\72"+ - "\13\3\1\73\11\3\1\74\14\3\1\75\1\0\2\67"+ - "\4\0\1\46\2\0\1\76\2\3\1\77\1\3\1\100"+ - "\1\101\6\3\1\102\6\3\1\103\3\3\1\104\1\3"+ - "\1\105\3\3\1\106\6\3\1\107\5\3\1\110\1\3"+ - "\1\41\4\0\1\45\1\46\1\3\1\111\2\3\1\112"+ - "\1\113\1\114\4\3\1\115\1\3\1\116\2\3\1\117"+ - "\1\3\1\120\1\121\1\3\1\122\13\3\1\123\1\3"+ - "\1\124\1\125\2\3\1\126\2\3\1\127\1\3\1\130"+ - "\1\131\5\3\1\132\1\3\1\133\2\3\1\134\3\3"+ - "\1\135\1\136\3\3\1\137\4\3\1\140\1\3\1\141"+ - "\1\142\2\3\1\143\1\144\1\3\1\145\4\3\1\146"+ - "\1\147\1\3\1\150\2\3\1\151\1\3\1\152\1\153"+ - "\1\3\1\154"; + "\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\12\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\1\3"+ + "\1\106\2\3\1\107\1\3\1\110\3\3\1\111\6\3"+ + "\1\112\5\3\1\113\1\3\1\41\4\0\1\45\1\46"+ + "\1\3\1\114\2\3\1\115\1\116\1\117\4\3\1\120"+ + "\1\3\1\121\2\3\1\122\1\3\1\123\1\124\1\3"+ + "\1\125\13\3\1\126\1\3\1\127\1\130\2\3\1\131"+ + "\2\3\1\132\1\3\1\133\1\134\5\3\1\135\1\3"+ + "\1\136\2\3\1\137\3\3\1\140\1\141\3\3\1\142"+ + "\4\3\1\143\1\3\1\144\1\145\2\3\1\146\1\147"+ + "\1\3\1\150\4\3\1\151\1\152\1\3\1\153\2\3"+ + "\1\154\1\3\1\155\1\156\1\3\1\157"; private static int [] zzUnpackAction() { - int [] result = new int[340]; + int [] result = new int[345]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -192,47 +210,48 @@ class _JavaLexer implements FlexLexer { "\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\107"+ - "\0\107\0\u09fc\0\u0a43\0\107\0\107\0\u0a8a\0\107\0\107"+ - "\0\107\0\u0ad1\0\u0b18\0\u0b5f\0\u0ba6\0\u0bed\0\u0c34\0\u0c7b"+ - "\0\u0cc2\0\u0d09\0\107\0\107\0\107\0\u0d50\0\u0d97\0\107"+ - "\0\u0dde\0\u0e25\0\u0e6c\0\u0eb3\0\u0efa\0\u0f41\0\u0f88\0\u0fcf"+ + "\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\325\0\u15a2\0\u15e9\0\u1630"+ - "\0\u1677\0\u16be\0\u1705\0\u174c\0\u1793\0\u17da\0\u1821\0\107"+ - "\0\107\0\107\0\107\0\107\0\107\0\107\0\u1868\0\107"+ - "\0\107\0\107\0\107\0\u18af\0\u18f6\0\u193d\0\u1984\0\u19cb"+ - "\0\u1a12\0\u1a59\0\u1a12\0\u1aa0\0\u1ae7\0\u1b2e\0\107\0\u1b75"+ - "\0\u1bbc\0\325\0\u1c03\0\u1c4a\0\u1c91\0\u1cd8\0\u1d1f\0\u1d66"+ - "\0\u1dad\0\u1df4\0\325\0\u1e3b\0\u1e82\0\u1ec9\0\u1f10\0\u1f57"+ - "\0\u1f9e\0\u1fe5\0\u202c\0\u2073\0\u20ba\0\u2101\0\325\0\u2148"+ - "\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\107\0\u2762\0\u27a9"+ - "\0\107\0\u27f0\0\u2837\0\u287e\0\u28c5\0\u290c\0\u2953\0\u299a"+ - "\0\325\0\u29e1\0\u2a28\0\325\0\u2a6f\0\325\0\325\0\u2ab6"+ - "\0\u2afd\0\u2b44\0\u2b8b\0\u2bd2\0\u2c19\0\325\0\u2c60\0\u2ca7"+ - "\0\u2cee\0\u2d35\0\u2d7c\0\u2dc3\0\325\0\u2e0a\0\u2e51\0\u2e98"+ - "\0\325\0\u2edf\0\325\0\u2f26\0\u2f6d\0\u2fb4\0\325\0\u2ffb"+ - "\0\u3042\0\u3089\0\u30d0\0\u3117\0\u315e\0\325\0\u31a5\0\u31ec"+ - "\0\u3233\0\u327a\0\u32c1\0\325\0\u3308\0\107\0\u334f\0\u3396"+ - "\0\u33dd\0\u3424\0\u2837\0\u2837\0\u346b\0\u34b2\0\u34f9\0\u3540"+ - "\0\325\0\325\0\u3587\0\u35ce\0\u3615\0\u365c\0\u36a3\0\325"+ - "\0\u36ea\0\325\0\u3731\0\u3778\0\325\0\u37bf\0\325\0\325"+ - "\0\u3806\0\325\0\u384d\0\u3894\0\u38db\0\u3922\0\u3969\0\u39b0"+ - "\0\u39f7\0\u3a3e\0\u3a85\0\u3acc\0\u3b13\0\325\0\u3b5a\0\325"+ - "\0\325\0\u3ba1\0\u3be8\0\325\0\u3c2f\0\u3c76\0\325\0\u3cbd"+ - "\0\325\0\325\0\u3d04\0\u3d4b\0\u3d92\0\u3dd9\0\u3e20\0\325"+ - "\0\u3e67\0\325\0\u3eae\0\u3ef5\0\325\0\u3f3c\0\u3f83\0\u3fca"+ - "\0\325\0\325\0\u4011\0\u4058\0\u409f\0\325\0\u40e6\0\u412d"+ - "\0\u4174\0\u41bb\0\325\0\u4202\0\325\0\325\0\u4249\0\u4290"+ - "\0\325\0\325\0\u42d7\0\325\0\u431e\0\u4365\0\u43ac\0\u43f3"+ - "\0\325\0\325\0\u443a\0\325\0\u4481\0\u44c8\0\325\0\u450f"+ - "\0\325\0\325\0\u4556\0\325"; + "\0\u1486\0\u14cd\0\u1514\0\u155b\0\u15a2\0\u15e9\0\325\0\u1630"+ + "\0\u1677\0\u16be\0\u1705\0\u174c\0\u1793\0\u17da\0\u1821\0\u1868"+ + "\0\u18af\0\107\0\107\0\107\0\107\0\107\0\107\0\107"+ + "\0\u18f6\0\107\0\107\0\107\0\107\0\107\0\u193d\0\u1984"+ + "\0\u19cb\0\u1a12\0\u1a59\0\u1aa0\0\u1ae7\0\u1aa0\0\u1b2e\0\u1b75"+ + "\0\u1bbc\0\107\0\u1c03\0\u1c4a\0\325\0\u1c91\0\u1cd8\0\u1d1f"+ + "\0\u1d66\0\u1dad\0\u1df4\0\u1e3b\0\u1e82\0\325\0\u1ec9\0\u1f10"+ + "\0\u1f57\0\u1f9e\0\u1fe5\0\u202c\0\u2073\0\u20ba\0\u2101\0\u2148"+ + "\0\u218f\0\325\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\u27a9"+ + "\0\u27f0\0\107\0\u2837\0\u287e\0\107\0\u28c5\0\u290c\0\u2953"+ + "\0\u299a\0\u29e1\0\u2a28\0\u2a6f\0\325\0\u2ab6\0\u2afd\0\325"+ + "\0\u2b44\0\325\0\325\0\u2b8b\0\u2bd2\0\u2c19\0\u2c60\0\u2ca7"+ + "\0\u2cee\0\325\0\u2d35\0\u2d7c\0\u2dc3\0\u2e0a\0\u2e51\0\u2e98"+ + "\0\325\0\u2edf\0\325\0\u2f26\0\u2f6d\0\325\0\u2fb4\0\325"+ + "\0\u2ffb\0\u3042\0\u3089\0\325\0\u30d0\0\u3117\0\u315e\0\u31a5"+ + "\0\u31ec\0\u3233\0\325\0\u327a\0\u32c1\0\u3308\0\u334f\0\u3396"+ + "\0\325\0\u33dd\0\107\0\u3424\0\u346b\0\u34b2\0\u34f9\0\u290c"+ + "\0\u290c\0\u3540\0\u3587\0\u35ce\0\u3615\0\325\0\325\0\u365c"+ + "\0\u36a3\0\u36ea\0\u3731\0\u3778\0\325\0\u37bf\0\325\0\u3806"+ + "\0\u384d\0\325\0\u3894\0\325\0\325\0\u38db\0\325\0\u3922"+ + "\0\u3969\0\u39b0\0\u39f7\0\u3a3e\0\u3a85\0\u3acc\0\u3b13\0\u3b5a"+ + "\0\u3ba1\0\u3be8\0\325\0\u3c2f\0\325\0\325\0\u3c76\0\u3cbd"+ + "\0\325\0\u3d04\0\u3d4b\0\325\0\u3d92\0\325\0\325\0\u3dd9"+ + "\0\u3e20\0\u3e67\0\u3eae\0\u3ef5\0\325\0\u3f3c\0\325\0\u3f83"+ + "\0\u3fca\0\325\0\u4011\0\u4058\0\u409f\0\325\0\325\0\u40e6"+ + "\0\u412d\0\u4174\0\325\0\u41bb\0\u4202\0\u4249\0\u4290\0\325"+ + "\0\u42d7\0\325\0\325\0\u431e\0\u4365\0\325\0\325\0\u43ac"+ + "\0\325\0\u43f3\0\u443a\0\u4481\0\u44c8\0\325\0\325\0\u450f"+ + "\0\325\0\u4556\0\u459d\0\325\0\u45e4\0\325\0\325\0\u462b"+ + "\0\325"; private static int [] zzUnpackRowMap() { - int [] result = new int[340]; + int [] result = new int[345]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -272,362 +291,366 @@ class _JavaLexer implements FlexLexer { "\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\24\0\6\13\1\0"+ - "\17\13\1\0\1\105\1\106\56\13\6\14\1\0\17\14"+ - "\1\0\1\14\1\107\1\110\55\14\2\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\4\1\111"+ - "\14\4\1\112\11\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\113\24\4\27\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"+ - "\6\4\1\114\1\4\1\115\11\4\1\116\5\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\5\4\1\117\1\120\4\4\1\121\3\4\1\122\10\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\7\4\1\123\1\4\1\124\16\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\13\4"+ - "\1\125\14\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\126\1\4\1\127\12\4\1\130"+ - "\1\131\7\4\1\132\1\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\2\4\1\133\1\134"+ - "\1\4\1\135\22\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\4\1\136\11\4\1\137"+ - "\1\4\1\140\12\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\5\4\1\141\1\142\4\4"+ - "\1\143\2\4\1\144\11\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\4\4\1\145\3\4"+ - "\1\146\10\4\1\147\6\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\150\7\4"+ - "\1\151\14\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\152\14\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\4"+ - "\1\153\1\154\2\4\1\155\22\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\13\4\1\156"+ - "\14\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\16\4\1\157\11\4\107\0\1\160\106\0"+ - "\1\161\106\0\1\162\1\0\1\163\104\0\1\164\2\0"+ - "\1\165\103\0\1\166\3\0\1\167\102\0\1\170\5\0"+ - "\1\171\100\0\1\172\106\0\1\173\24\0\6\62\1\0"+ - "\17\62\1\0\60\62\5\174\1\175\101\174\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\176\1\0\1\176"+ - "\1\0\2\176\3\0\1\70\1\71\2\0\1\177\11\0"+ - "\1\70\13\0\1\71\12\0\1\177\30\0\1\74\1\200"+ - "\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\201"+ - "\1\202\1\201\4\202\1\201\1\202\1\203\2\202\1\201"+ - "\1\202\1\201\1\204\1\0\6\201\3\202\1\203\2\201"+ - "\2\202\5\201\1\202\3\201\1\204\30\201\13\0\2\205"+ - "\2\0\1\67\20\0\1\67\55\0\1\101\1\206\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\207\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\210\2\4\1\211\7\4\1\212"+ - "\12\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\4\1\213\15\4\1\214\10\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\215\27\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\7\4\1\216\20\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\2\4"+ - "\1\217\25\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\220\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\221"+ - "\21\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\13\4\1\222\14\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\4\1\223"+ - "\26\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\10\4\1\224\17\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\7\4\1\225"+ - "\20\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\7\4\1\226\20\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\10\4\1\227"+ - "\17\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\4\1\230\3\4\1\231\22\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\24\4\1\232\3\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\10\4\1\233\17\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\13\4\1\234\14\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\17\4\1\235\10\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\6\4\1\236\21\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\26\4\1\237\1\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\240\27\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\241\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\13\4"+ - "\1\242\14\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\243\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\244\6\4"+ - "\1\245\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\5\4\1\246\22\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\10\4"+ - "\1\247\17\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\1\251"+ - "\6\4\1\252\20\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\24\4\1\253\3\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\4\4\1\254\23\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\2\4\1\255\25\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\256\27\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\257\3\4\1\260\10\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\11\4\1\261\16\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\12\4\1\262\15\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\6\4\1\263\10\4\1\264\10\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\17\4"+ - "\1\265\10\4\107\0\1\266\24\0\5\174\1\267\101\174"+ - "\4\270\1\271\1\175\101\270\7\0\1\176\1\272\1\176"+ - "\1\0\2\176\3\0\1\70\1\71\14\0\1\70\13\0"+ - "\1\71\43\0\1\176\1\0\1\176\1\0\2\176\3\0"+ - "\1\70\1\71\14\0\1\70\13\0\1\71\43\0\1\74"+ - "\1\200\1\74\1\0\2\74\101\0\1\273\1\0\4\273"+ - "\1\0\1\273\1\0\2\273\1\0\1\273\1\0\1\274"+ - "\7\0\3\273\3\0\2\273\5\0\1\273\3\0\1\274"+ - "\30\0\7\201\1\202\1\275\4\202\1\201\1\202\1\203"+ - "\2\202\1\201\1\202\1\201\1\204\1\0\6\201\3\202"+ - "\1\203\2\201\2\202\5\201\1\202\3\201\1\204\30\201"+ - "\7\0\1\276\1\0\1\276\1\273\2\276\1\0\1\273"+ - "\1\0\2\273\1\0\1\273\1\277\1\274\7\0\3\273"+ - "\3\0\2\273\5\0\1\273\3\0\1\274\6\0\1\277"+ - "\31\0\1\300\2\0\2\205\2\0\1\67\20\0\1\67"+ - "\55\0\1\101\1\206\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\301\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\10\4\1\302\17\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\13\4"+ - "\1\303\14\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\7\4\1\304\20\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\2\4"+ - "\1\305\25\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\306\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\21\4"+ - "\1\307\6\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\7\4"+ - "\1\311\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\5\4\1\312\22\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\5\4"+ - "\1\313\22\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\314\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\315"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\23\4\1\316\4\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\17\4\1\317"+ - "\10\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\320\27\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\321\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\12\4\1\322\15\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\4\1\323\26\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\324\27\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\6\4\1\325\21\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\17\4\1\326\10\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\5\4\1\327\22\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\6\4\1\330\21\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\331\24\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\12\4\1\332\15\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"+ - "\7\4\1\334\20\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\335\6\4\1\336\20\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\4\1\337\26\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\340\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\341\27\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\6\4\1\342\4\4\1\343"+ - "\14\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\5\4\1\344\22\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\11\4\1\345"+ - "\16\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\13\4\1\346\14\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\347\27\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\25\4\1\350\2\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\6\4\1\351\21\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\14\4\1\352\13\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\5\4\1\353\22\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\20\4\1\354\7\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\6\4\1\355\21\4"+ - "\25\0\4\174\1\356\1\267\101\174\5\270\1\357\101\270"+ - "\7\0\1\176\1\272\1\176\1\0\2\176\101\0\1\273"+ - "\1\360\4\273\1\0\1\273\1\0\2\273\1\0\1\273"+ - "\1\0\1\274\7\0\3\273\3\0\2\273\5\0\1\273"+ - "\3\0\1\274\37\0\1\176\1\0\1\176\1\0\2\176"+ - "\7\0\1\277\40\0\1\277\30\0\1\202\1\361\4\202"+ - "\1\0\1\202\1\0\2\202\1\0\1\202\1\0\1\274"+ - "\7\0\3\202\3\0\2\202\5\0\1\202\3\0\1\274"+ - "\37\0\1\276\1\362\1\276\1\273\2\276\1\0\1\273"+ - "\1\0\1\363\1\364\1\0\1\273\1\0\1\274\7\0"+ - "\1\273\1\363\1\273\3\0\2\273\5\0\1\364\3\0"+ - "\1\274\37\0\1\176\1\0\1\176\1\0\2\176\102\0"+ - "\1\300\2\0\2\205\74\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\7\4\1\365\20\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\26\4\1\366\1\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\4\1\367\26\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\10\4\1\370\17\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\371\24\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\372\27\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\6\4\1\373\21\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\4"+ - "\1\374\26\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\4\1\375\26\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\12\4"+ - "\1\376\15\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\17\4\1\377\10\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\4"+ - "\1\u0100\26\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\16\4\1\u0101\11\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u0102"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\12\4\1\u0103\15\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\25\4\1\u0104"+ - "\2\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\14\4\1\u0105\13\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\3\4\1\u0106"+ + "\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\16\4\1\u0107\11\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\7\4\1\u0108"+ - "\20\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\17\4\1\u0109\10\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\u010a\27\4"+ + "\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\1\4\1\u010b\26\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\5\4\1\u010c\22\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\u010d\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\4\1\u010e\26\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\2\4\1\u010f\25\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\6\4\1\u0110\21\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\u0111\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\5\4\1\u0112\22\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\17\4\1\u0113\10\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\1\u0115\27\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\u0116\24\4\25\0"+ - "\4\270\1\271\1\357\101\270\7\0\1\273\1\360\4\273"+ - "\1\0\1\273\1\0\2\273\1\0\1\273\11\0\3\273"+ - "\3\0\2\273\5\0\1\273\43\0\1\202\1\361\4\202"+ - "\1\0\1\202\1\0\2\202\1\0\1\202\11\0\3\202"+ - "\3\0\2\202\5\0\1\202\43\0\1\276\1\362\1\276"+ - "\1\273\2\276\1\0\1\273\1\0\2\273\1\0\1\273"+ - "\11\0\3\273\3\0\2\273\5\0\1\273\36\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\17\4"+ - "\1\u0117\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\7\4\1\u0118\20\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\10\4"+ - "\1\u0119\17\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\20\4\1\u011a\7\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+ - "\1\u011b\21\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\u011c\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\5\4\1\u011d"+ - "\22\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\12\4\1\u011f\15\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\4\1\u0120\26\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\16\4\1\u0121\11\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\u0122\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\5\4\1\u0123\22\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\10\4\1\u0124\17\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\4\4\1\u0125\23\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\21\4\1\u0127\6\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\u0128\27\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\6\4\1\u0129\21\4\27\0"+ + "\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\5\4\1\137\14\4\27\0"+ "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u012a\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\12\4\1\u012b\15\4\27\0"+ + "\1\4\1\140\11\4\1\141\1\4\1\142\12\4\27\0"+ "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\u012c\27\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\23\4"+ - "\1\u012e\4\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\17\4\1\u012f\10\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\u0130\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\7\4\1\u0131\20\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\15\4"+ - "\1\u0132\12\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\12\4\1\u0133\15\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\4\4"+ - "\1\u0134\23\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\u0135\14\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\10\4"+ - "\1\u0136\17\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\2\4\1\u0137\25\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\5\4"+ - "\1\u0138\22\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\12\4\1\u0139\15\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\u013a\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\u013b\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\u013c\27\4"+ + "\5\4\1\143\1\144\4\4\1\145\2\4\1\146\11\4"+ "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\u013d\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u013e\24\4"+ + "\4\0\4\4\1\147\3\4\1\150\10\4\1\151\6\4"+ "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\6\4\1\u013f\21\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\10\4\1\u0140\17\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\u0141\27\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\24\4\1\u0142\3\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\10\4\1\u0143\17\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\u0144\24\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\12\4\1\u0145\15\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"+ - "\10\4\1\u0147\17\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"+ - "\3\4\1\u0149\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\u014a\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\17\4"+ - "\1\u014b\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\u014c\24\4\27\0\2\4"+ + "\4\0\3\4\1\152\7\4\1\153\14\4\27\0\2\4"+ "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\13\4"+ - "\1\u014d\14\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\u014e\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\20\4\1\u014f"+ - "\7\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\27\4\1\u0150\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\4\4\1\u0151\23\4"+ + "\1\154\14\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\1\4\1\155\1\156\2\4\1\157"+ + "\22\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\13\4\1\160\14\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\16\4\1\161"+ + "\11\4\107\0\1\162\106\0\1\163\106\0\1\164\1\0"+ + "\1\165\104\0\1\166\2\0\1\167\103\0\1\170\3\0"+ + "\1\171\102\0\1\172\5\0\1\173\100\0\1\174\106\0"+ + "\1\175\131\0\1\176\1\0\6\62\1\0\17\62\1\0"+ + "\60\62\5\177\1\200\101\177\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\201\1\0\1\201\1\0\2\201"+ + "\3\0\1\70\1\71\2\0\1\202\11\0\1\70\13\0"+ + "\1\71\12\0\1\202\30\0\1\74\1\203\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\204\1\205\1\204"+ + "\4\205\1\204\1\205\1\206\2\205\1\204\1\205\1\204"+ + "\1\207\1\0\6\204\3\205\1\206\2\204\2\205\5\204"+ + "\1\205\3\204\1\207\30\204\13\0\2\210\2\0\1\67"+ + "\20\0\1\67\55\0\1\101\1\211\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\212\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\213\2\4\1\214\7\4\1\215\12\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\1\4\1\216\15\4\1\217\10\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\1\220\27\4"+ "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\7\4\1\u0152\20\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u0153\24\4"+ + "\4\0\7\4\1\221\20\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\2\4\1\222\25\4"+ "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\20\4\1\u0154\7\4\25\0"; + "\4\0\1\223\27\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\6\4\1\224\21\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\13\4\1\225\14\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\1\4\1\226\26\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\10\4\1\227\17\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"+ + "\7\4\1\231\20\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\10\4\1\232\17\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\1\4\1\233\3\4\1\234\22\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\24\4\1\235"+ + "\3\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\10\4\1\236\17\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\13\4\1\237"+ + "\14\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\17\4\1\240\10\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\241"+ + "\21\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\26\4\1\242\1\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\1\243\27\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\10\4\1\244\17\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\3\4\1\245\24\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\13\4\1\246\14\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\1\247\27\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\1\250\6\4\1\251\20\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\10\4\1\253\17\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\5\4\1\254\22\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\1\255\6\4\1\256\20\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\24\4\1\257"+ + "\3\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\4\4\1\260\23\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\2\4\1\261"+ + "\25\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\1\262\27\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\13\4\1\263\3\4"+ + "\1\264\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\11\4\1\265\16\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\12\4"+ + "\1\266\15\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\6\4\1\267\10\4\1\270\10\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\17\4\1\271\10\4\107\0\1\272\24\0\5\177"+ + "\1\273\101\177\4\274\1\275\1\200\101\274\7\0\1\201"+ + "\1\276\1\201\1\0\2\201\3\0\1\70\1\71\14\0"+ + "\1\70\13\0\1\71\43\0\1\201\1\0\1\201\1\0"+ + "\2\201\3\0\1\70\1\71\14\0\1\70\13\0\1\71"+ + "\43\0\1\74\1\203\1\74\1\0\2\74\101\0\1\277"+ + "\1\0\4\277\1\0\1\277\1\0\2\277\1\0\1\277"+ + "\1\0\1\300\7\0\3\277\3\0\2\277\5\0\1\277"+ + "\3\0\1\300\30\0\7\204\1\205\1\301\4\205\1\204"+ + "\1\205\1\206\2\205\1\204\1\205\1\204\1\207\1\0"+ + "\6\204\3\205\1\206\2\204\2\205\5\204\1\205\3\204"+ + "\1\207\30\204\7\0\1\302\1\0\1\302\1\277\2\302"+ + "\1\0\1\277\1\0\2\277\1\0\1\277\1\303\1\300"+ + "\7\0\3\277\3\0\2\277\5\0\1\277\3\0\1\300"+ + "\6\0\1\303\31\0\1\304\2\0\2\210\2\0\1\67"+ + "\20\0\1\67\55\0\1\101\1\211\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\305\24\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\10\4\1\306\17\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\13\4\1\307\14\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\7\4\1\310\20\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\2\4\1\311\25\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\21\4\1\313\6\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\3\4\1\314\24\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\7\4\1\315\20\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\5\4\1\316\22\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\5\4\1\317\22\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\3\4\1\320\24\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\1\321\27\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\23\4\1\322\4\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\17\4\1\323\10\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\1\324\27\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ + "\1\325\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\12\4\1\326\15\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\4"+ + "\1\327\26\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\1\330\27\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\331"+ + "\21\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\17\4\1\332\10\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\5\4\1\334\22\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\6\4\1\335"+ + "\21\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\3\4\1\336\24\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\12\4\1\337"+ + "\15\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\3\4\1\340\24\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\7\4\1\341"+ + "\20\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\1\342\6\4\1\343\20\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\4"+ + "\1\344\26\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\3\4\1\345\24\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\346"+ + "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\6\4\1\347\4\4\1\350\14\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\5\4\1\351\22\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\11\4\1\352\16\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\13\4\1\353\14\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\1\354\27\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\25\4"+ + "\1\355\2\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\6\4\1\356\21\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\14\4"+ + "\1\357\13\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\5\4\1\360\22\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\20\4"+ + "\1\361\7\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\6\4\1\362\21\4\25\0\4\177"+ + "\1\363\1\273\101\177\5\274\1\364\101\274\7\0\1\201"+ + "\1\276\1\201\1\0\2\201\101\0\1\277\1\365\4\277"+ + "\1\0\1\277\1\0\2\277\1\0\1\277\1\0\1\300"+ + "\7\0\3\277\3\0\2\277\5\0\1\277\3\0\1\300"+ + "\37\0\1\201\1\0\1\201\1\0\2\201\7\0\1\303"+ + "\40\0\1\303\30\0\1\205\1\366\4\205\1\0\1\205"+ + "\1\0\2\205\1\0\1\205\1\0\1\300\7\0\3\205"+ + "\3\0\2\205\5\0\1\205\3\0\1\300\37\0\1\302"+ + "\1\367\1\302\1\277\2\302\1\0\1\277\1\0\1\370"+ + "\1\371\1\0\1\277\1\0\1\300\7\0\1\277\1\370"+ + "\1\277\3\0\2\277\5\0\1\371\3\0\1\300\37\0"+ + "\1\201\1\0\1\201\1\0\2\201\102\0\1\304\2\0"+ + "\2\210\74\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\7\4\1\372\20\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\26\4\1\373"+ + "\1\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\1\4\1\374\26\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\10\4\1\375"+ + "\17\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\3\4\1\376\24\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\1\377\27\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\6\4\1\u0100\21\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\1\4\1\u0101\26\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\12\4\1\u0103\15\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\17\4\1\u0104\10\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\1\4\1\u0105\26\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\16\4\1\u0106\11\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\1\u0107\27\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\12\4\1\u0108\15\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\25\4\1\u0109\2\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\14\4\1\u010a\13\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\3\4\1\u010b\24\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\16\4\1\u010c\11\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\7\4\1\u010d\20\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\17\4\1\u010e\10\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\1\u010f\27\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\5\4\1\u0111\22\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ + "\1\u0112\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\1\4\1\u0113\26\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\2\4"+ + "\1\u0114\25\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\6\4\1\u0115\21\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ + "\1\u0116\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\5\4\1\u0117\22\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\17\4"+ + "\1\u0118\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\5\4\1\u0119\22\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u011a"+ + "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\3\4\1\u011b\24\4\25\0\4\274\1\275"+ + "\1\364\101\274\7\0\1\277\1\365\4\277\1\0\1\277"+ + "\1\0\2\277\1\0\1\277\11\0\3\277\3\0\2\277"+ + "\5\0\1\277\43\0\1\205\1\366\4\205\1\0\1\205"+ + "\1\0\2\205\1\0\1\205\11\0\3\205\3\0\2\205"+ + "\5\0\1\205\43\0\1\302\1\367\1\302\1\277\2\302"+ + "\1\0\1\277\1\0\2\277\1\0\1\277\11\0\3\277"+ + "\3\0\2\277\5\0\1\277\36\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\17\4\1\u011c\10\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\7\4\1\u011d\20\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\10\4\1\u011e\17\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\20\4\1\u011f\7\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\6\4\1\u0120\21\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\1\u0121\27\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\5\4\1\u0122\22\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\1\u0123\27\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\12\4\1\u0124\15\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\4"+ + "\1\u0125\26\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\16\4\1\u0126\11\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ + "\1\u0127\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\5\4\1\u0128\22\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\10\4"+ + "\1\u0129\17\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\4\4\1\u012a\23\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\10\4"+ + "\1\u012b\17\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\21\4\1\u012c\6\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u012d"+ + "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\6\4\1\u012e\21\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\3\4\1\u012f"+ + "\24\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\12\4\1\u0130\15\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\1\u0131\27\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\12\4\1\u0132\15\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\23\4\1\u0133\4\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\17\4\1\u0134\10\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\3\4\1\u0135\24\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\7\4\1\u0136\20\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\15\4\1\u0137\12\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\12\4\1\u0138\15\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\4\4\1\u0139\23\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\13\4\1\u013a\14\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\10\4\1\u013b\17\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\2\4\1\u013c\25\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\5\4\1\u013d\22\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\12\4\1\u013e\15\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\1\u0140\27\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\1\u0141\27\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ + "\1\u0142\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\3\4\1\u0143\24\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+ + "\1\u0144\21\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\1\u0146"+ + "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\24\4\1\u0147\3\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\10\4\1\u0148"+ + "\17\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\3\4\1\u0149\24\4\27\0\2\4\3\0"+ + "\13\4\1\0\1\4\1\0\1\4\4\0\12\4\1\u014a"+ + "\15\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\10\4\1\u014c"+ + "\17\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ + "\1\4\4\0\3\4\1\u014d\24\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\1\u014f\27\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\17\4\1\u0150\10\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\3\4\1\u0151\24\4\27\0\2\4\3\0\13\4"+ + "\1\0\1\4\1\0\1\4\4\0\13\4\1\u0152\14\4"+ + "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ + "\4\0\1\u0153\27\4\27\0\2\4\3\0\13\4\1\0"+ + "\1\4\1\0\1\4\4\0\20\4\1\u0154\7\4\27\0"+ + "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ + "\27\4\1\u0155\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\4\4\1\u0156\23\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ + "\1\u0157\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ + "\1\0\1\4\4\0\3\4\1\u0158\24\4\27\0\2\4"+ + "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\20\4"+ + "\1\u0159\7\4\25\0"; private static int [] zzUnpackTrans() { - int [] result = new int[17821]; + int [] result = new int[18034]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -668,14 +691,15 @@ class _JavaLexer implements FlexLexer { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\0\1\11\37\1\1\11\3\1\14\11\2\1\2\11"+ - "\1\0\3\11\2\1\2\0\4\1\1\0\3\11\2\1"+ - "\1\11\47\1\7\11\1\1\4\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"; + "\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\50\1\7\11\1\1\5\11\4\1"+ + "\2\0\2\1\1\0\1\1\1\0\1\11\57\1\1\11"+ + "\1\0\1\1\1\11\4\0\1\1\2\0\56\1\1\11"+ + "\4\0\142\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[340]; + int [] result = new int[345]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -734,13 +758,15 @@ class _JavaLexer implements FlexLexer { private boolean zzEOFDone; /* user code: */ - private boolean myAssertKeywordEnabled; - private boolean myJdk15Enabled; + private boolean myAssertKeyword; + private boolean myEnumKeyword; + private boolean myNoneKeyword; - public _JavaLexer(boolean isAssertKeywordEnabled, boolean jdk15Enabled){ + public _JavaLexer(LanguageLevel level) { this((java.io.Reader)null); - myAssertKeywordEnabled = isAssertKeywordEnabled; - myJdk15Enabled = jdk15Enabled; + myAssertKeyword = level.isAtLeast(LanguageLevel.JDK_1_4); + myEnumKeyword = level.isAtLeast(LanguageLevel.JDK_1_5); + myNoneKeyword = level.isAtLeast(LanguageLevel.JDK_1_8); } public void goTo(int offset) { @@ -996,438 +1022,450 @@ class _JavaLexer implements FlexLexer { zzMarkedPos = zzMarkedPosL; switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 66: + case 68: { return JavaTokenType.LONG_KEYWORD; } - case 109: break; - case 97: + case 112: break; + case 100: { return JavaTokenType.PRIVATE_KEYWORD; } - case 110: break; + case 113: break; case 27: { return JavaTokenType.COMMA; } - case 111: break; + case 114: break; case 23: { return JavaTokenType.RBRACE; } - case 112: break; + case 115: break; case 22: { return JavaTokenType.LBRACE; } - case 113: break; + case 116: break; case 65: - { return myJdk15Enabled ? JavaTokenType.ENUM_KEYWORD : JavaTokenType.IDENTIFIER; - } - case 114: break; - case 63: { return JavaTokenType.THIS_KEYWORD; } - case 115: break; - case 81: + case 117: break; + case 84: { return JavaTokenType.CLASS_KEYWORD; } - case 116: break; + case 118: break; case 14: { return JavaTokenType.PLUS; } - case 117: break; - case 53: + case 119: break; + case 54: { return JavaTokenType.XOREQ; } - case 118: break; - case 60: + case 120: break; + case 62: { return JavaTokenType.INT_KEYWORD; } - case 119: break; - case 78: + case 121: break; + case 81: { return JavaTokenType.SHORT_KEYWORD; } - case 120: break; - case 43: + case 122: break; + case 44: { return JavaTokenType.EQEQ; } - case 121: break; - case 99: - { return JavaTokenType.ABSTRACT_KEYWORD; - } - case 122: break; - case 67: - { return JavaTokenType.NULL_KEYWORD; - } case 123: break; - case 93: - { return JavaTokenType.EXTENDS_KEYWORD; + case 67: + { return myEnumKeyword ? JavaTokenType.ENUM_KEYWORD : JavaTokenType.IDENTIFIER; } case 124: break; - case 50: - { return JavaTokenType.LTLT; + case 102: + { return JavaTokenType.ABSTRACT_KEYWORD; } case 125: break; + case 69: + { return JavaTokenType.NULL_KEYWORD; + } + case 126: break; + case 96: + { return JavaTokenType.EXTENDS_KEYWORD; + } + case 127: break; + case 51: + { return JavaTokenType.LTLT; + } + case 128: break; case 20: { return JavaTokenType.LPARENTH; } - case 126: break; + case 129: break; case 12: { return JavaTokenType.EXCL; } - case 127: break; - case 100: + case 130: break; + case 103: { return JavaTokenType.STRICTFP_KEYWORD; } - case 128: break; + case 131: break; case 34: { return JavaTokenType.DIVEQ; } - case 129: break; - case 87: + case 132: break; + case 90: { return JavaTokenType.STATIC_KEYWORD; } - case 130: break; + case 133: break; case 39: { return JavaTokenType.MINUSMINUS; } - case 131: break; - case 74: + case 134: break; + case 77: { return JavaTokenType.FALSE_KEYWORD; } - case 132: break; + case 135: break; case 1: { return JavaTokenType.BAD_CHARACTER; } - case 133: break; - case 88: + case 136: break; + case 91: { return JavaTokenType.SWITCH_KEYWORD; } - case 134: break; + case 137: break; case 26: { return JavaTokenType.SEMICOLON; } - case 135: break; + case 138: break; case 18: { return JavaTokenType.XOR; } - case 136: break; + case 139: break; case 38: { return JavaTokenType.DOUBLE_LITERAL; } - case 137: break; - case 45: + case 140: break; + case 46: { return JavaTokenType.OREQ; } - case 138: break; + case 141: break; case 11: { return JavaTokenType.EQ; } - case 139: break; + case 142: break; case 4: { return JavaTokenType.DIV; } - case 140: break; - case 64: + case 143: break; + case 66: { return JavaTokenType.ELSE_KEYWORD; } - case 141: break; - case 59: + case 144: break; + case 61: { return JavaTokenType.NEW_KEYWORD; } - case 142: break; - case 56: + case 145: break; + case 58: { return JavaTokenType.ELLIPSIS; } - case 143: break; - case 52: + case 146: break; + case 53: { return JavaTokenType.ANDAND; } - case 144: break; - case 79: + case 147: break; + case 82: { return JavaTokenType.BREAK_KEYWORD; } - case 145: break; + case 148: break; case 9: { return JavaTokenType.CHARACTER_LITERAL; } - case 146: break; - case 51: + case 149: break; + case 52: { return JavaTokenType.ANDEQ; } - case 147: break; + case 150: break; case 6: { return JavaTokenType.INTEGER_LITERAL; } - case 148: break; - case 75: + case 151: break; + case 78: { return JavaTokenType.FLOAT_KEYWORD; } - case 149: break; + case 152: break; case 10: { return JavaTokenType.STRING_LITERAL; } - case 150: break; - case 70: + case 153: break; + case 73: { return JavaTokenType.CHAR_KEYWORD; } - case 151: break; - case 89: + case 154: break; + case 92: { return JavaTokenType.NATIVE_KEYWORD; } - case 152: break; - case 42: + case 155: break; + case 43: { return JavaTokenType.DO_KEYWORD; } - case 153: break; + case 156: break; case 7: { return JavaTokenType.DOT; } - case 154: break; + case 157: break; case 28: { return JavaTokenType.TILDE; } - case 155: break; - case 108: + case 158: break; + case 111: { return JavaTokenType.SYNCHRONIZED_KEYWORD; } - case 156: break; + case 159: break; case 32: { return JavaTokenType.END_OF_LINE_COMMENT; } - case 157: break; + case 160: break; case 35: { return JavaTokenType.ASTERISKEQ; } - case 158: break; - case 77: + case 161: break; + case 80: { return JavaTokenType.SUPER_KEYWORD; } - case 159: break; + case 162: break; case 40: { return JavaTokenType.MINUSEQ; } - case 160: break; - case 61: + case 163: break; + case 63: { return JavaTokenType.LTLTEQ; } - case 161: break; - case 71: + case 164: break; + case 74: { return JavaTokenType.GOTO_KEYWORD; } - case 162: break; + case 165: break; case 25: { return JavaTokenType.RBRACKET; } - case 163: break; - case 86: - { return myAssertKeywordEnabled ? JavaTokenType.ASSERT_KEYWORD : JavaTokenType.IDENTIFIER; - } - case 164: break; + case 166: break; case 33: { return JavaTokenType.C_STYLE_COMMENT; } - case 165: break; + case 167: break; case 15: { return JavaTokenType.LT; } - case 166: break; - case 41: + case 168: break; + case 42: { return JavaTokenType.IF_KEYWORD; } - case 167: break; + case 169: break; case 8: { return JavaTokenType.MINUS; } - case 168: break; - case 83: + case 170: break; + case 86: { return JavaTokenType.WHILE_KEYWORD; } - case 169: break; - case 68: + case 171: break; + case 71: { return JavaTokenType.BYTE_KEYWORD; } - case 170: break; - case 94: + case 172: break; + case 97: { return JavaTokenType.FINALLY_KEYWORD; } - case 171: break; - case 72: + case 173: break; + case 75: { return JavaTokenType.VOID_KEYWORD; } - case 172: break; + case 174: break; case 29: { return JavaTokenType.QUEST; } - case 173: break; + case 175: break; case 19: { return JavaTokenType.PERC; } - case 174: break; - case 107: + case 176: break; + case 110: { return JavaTokenType.IMPLEMENTS_KEYWORD; } - case 175: break; - case 84: + case 177: break; + case 87: { return JavaTokenType.THROWS_KEYWORD; } - case 176: break; - case 76: - { return JavaTokenType.FINAL_KEYWORD; - } - case 177: break; - case 91: - { return JavaTokenType.DOUBLE_KEYWORD; - } case 178: break; - case 105: - { return JavaTokenType.PROTECTED_KEYWORD; + case 41: + { return JavaTokenType.ARROW; } case 179: break; - case 101: - { return JavaTokenType.CONTINUE_KEYWORD; + case 79: + { return JavaTokenType.FINAL_KEYWORD; } case 180: break; - case 98: - { return JavaTokenType.PACKAGE_KEYWORD; + case 94: + { return JavaTokenType.DOUBLE_KEYWORD; } case 181: break; + case 89: + { return myAssertKeyword ? JavaTokenType.ASSERT_KEYWORD : JavaTokenType.IDENTIFIER; + } + case 182: break; + case 108: + { return JavaTokenType.PROTECTED_KEYWORD; + } + case 183: break; + case 104: + { return JavaTokenType.CONTINUE_KEYWORD; + } + case 184: break; + case 101: + { return JavaTokenType.PACKAGE_KEYWORD; + } + case 185: break; + case 70: + { return myNoneKeyword ? JavaTokenType.NONE_KEYWORD : JavaTokenType.IDENTIFIER; + } + case 186: break; case 16: { return JavaTokenType.GT; } - case 182: break; + case 187: break; case 24: { return JavaTokenType.LBRACKET; } - case 183: break; + case 188: break; case 36: { return JavaTokenType.LONG_LITERAL; } - case 184: break; - case 58: + case 189: break; + case 60: { return JavaTokenType.FOR_KEYWORD; } - case 185: break; - case 96: + case 190: break; + case 99: { return JavaTokenType.DEFAULT_KEYWORD; } - case 186: break; - case 47: + case 191: break; + case 48: { return JavaTokenType.PLUSEQ; } - case 187: break; - case 85: + case 192: break; + case 88: { return JavaTokenType.RETURN_KEYWORD; } - case 188: break; - case 62: + case 193: break; + case 64: { return JavaTokenType.TRUE_KEYWORD; } - case 189: break; - case 48: + case 194: break; + case 49: { return JavaTokenType.PLUSPLUS; } - case 190: break; - case 46: + case 195: break; + case 47: { return JavaTokenType.OROR; } - case 191: break; + case 196: break; case 13: { return JavaTokenType.OR; } - case 192: break; + case 197: break; case 3: { return JavaTokenType.IDENTIFIER; } - case 193: break; - case 54: + case 198: break; + case 55: { return JavaTokenType.PERCEQ; } - case 194: break; + case 199: break; case 30: { return JavaTokenType.COLON; } - case 195: break; - case 102: + case 200: break; + case 105: { return JavaTokenType.VOLATILE_KEYWORD; } - case 196: break; - case 104: + case 201: break; + case 107: { return JavaTokenType.INTERFACE_KEYWORD; } - case 197: break; - case 106: + case 202: break; + case 109: { return JavaTokenType.INSTANCEOF_KEYWORD; } - case 198: break; - case 103: + case 203: break; + case 106: { return JavaTokenType.TRANSIENT_KEYWORD; } - case 199: break; - case 95: + case 204: break; + case 98: { return JavaTokenType.BOOLEAN_KEYWORD; } - case 200: break; - case 69: + case 205: break; + case 72: { return JavaTokenType.CASE_KEYWORD; } - case 201: break; + case 206: break; case 5: { return JavaTokenType.ASTERISK; } - case 202: break; - case 90: + case 207: break; + case 93: { return JavaTokenType.IMPORT_KEYWORD; } - case 203: break; + case 208: break; case 31: { return JavaTokenType.AT; } - case 204: break; - case 44: + case 209: break; + case 45: { return JavaTokenType.NE; } - case 205: break; - case 57: + case 210: break; + case 59: { return JavaTokenType.TRY_KEYWORD; } - case 206: break; - case 80: + case 211: break; + case 83: { return JavaTokenType.CATCH_KEYWORD; } - case 207: break; + case 212: break; case 37: { return JavaTokenType.FLOAT_LITERAL; } - case 208: break; + case 213: break; case 17: { return JavaTokenType.AND; } - case 209: break; - case 73: + case 214: break; + case 76: { return JavaTokenType.THROW_KEYWORD; } - case 210: break; - case 55: + case 215: break; + case 57: { return JavaDocElementType.DOC_COMMENT; } - case 211: break; + case 216: break; + case 56: + { return JavaTokenType.DOUBLE_COLON; + } + case 217: break; case 21: { return JavaTokenType.RPARENTH; } - case 212: break; + case 218: break; case 2: { return JavaTokenType.WHITE_SPACE; } - case 213: break; - case 92: + case 219: break; + case 95: { return JavaTokenType.PUBLIC_KEYWORD; } - case 214: break; - case 49: + case 220: break; + case 50: { return JavaTokenType.LE; } - case 215: break; - case 82: + case 221: break; + case 85: { return JavaTokenType.CONST_KEYWORD; } - case 216: break; + case 222: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; 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 b4e835b2a079..0f5080857a4f 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 @@ -134,6 +134,11 @@ public class JavaLexerTest extends LexerTestCase { "WHITE_SPACE (' ')\nINTEGER_LITERAL ('0')\nRPARENTH (')')\n"); } + public void testJava8Tokens() { + doTest("none :: ->", + "NONE_KEYWORD ('none')\nWHITE_SPACE (' ')\nDOUBLE_COLON ('::')\nWHITE_SPACE (' ')\nARROW ('->')"); + } + @Override protected Lexer createLexer() { return new JavaLexer(LanguageLevel.HIGHEST);