groovy string select word2
[fedora-idea.git] / plugins / groovy / src / org / jetbrains / plugins / groovy / lang / lexer / _GroovyLexer.java
blob5cf550ac1c35f2f4a586fda9f9f8204e45850661
1 /* The following code was generated by JFlex 1.4.1 on 15.10.09 16:49 */
3 /*
4 * Copyright 2000-2007 JetBrains s.r.o.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 package org.jetbrains.plugins.groovy.lang.lexer;
20 import com.intellij.lexer.FlexLexer;
21 import com.intellij.psi.tree.IElementType;
22 import java.util.*;
23 import java.lang.reflect.Field;
24 import org.jetbrains.annotations.NotNull;
27 /**
28 * This class is a scanner generated by
29 * <a href="http://www.jflex.de/">JFlex</a> 1.4.1
30 * on 15.10.09 16:49 from the specification file
31 * <tt>groovy.flex</tt>
33 public class _GroovyLexer implements FlexLexer, GroovyTokenTypes {
34 /** initial size of the lookahead buffer */
35 private static final int ZZ_BUFFERSIZE = 16384;
37 /** lexical states */
38 public static final int KING_STATE = 10;
39 public static final int IN_TRIPLE_DOT = 8;
40 public static final int KING_STATE_INNER = 11;
41 public static final int IN_TRIPLE_GSTRING = 4;
42 public static final int IN_SINGLE_GSTRING = 3;
43 public static final int IN_REGEX_DOLLAR = 16;
44 public static final int NLS_AFTER_COMMENT = 20;
45 public static final int KING_STATE_INNER_CONTENT = 13;
46 public static final int IN_TRIPLE_IDENT = 7;
47 public static final int IN_TRIPLE_GSTRING_DOLLAR = 2;
48 public static final int IN_SINGLE_DOT = 6;
49 public static final int IN_REGEX_DOT = 19;
50 public static final int NLS_AFTER_LBRACE = 21;
51 public static final int IN_TRIPLE_NLS = 9;
52 public static final int NLS_AFTER_NLS = 22;
53 public static final int IN_REGEX_IDENT = 18;
54 public static final int IN_SINGLE_IDENT = 5;
55 public static final int KING_STATE_CONTENT = 12;
56 public static final int IN_REGEX = 17;
57 public static final int WAIT_FOR_REGEX = 15;
58 public static final int IN_INNER_BLOCK = 14;
59 public static final int IN_SINGLE_GSTRING_DOLLAR = 1;
60 public static final int BRACE_COUNT = 23;
61 public static final int YYINITIAL = 0;
63 /**
64 * Translates characters to character classes
66 private static final String ZZ_CMAP_PACKED =
67 "\11\0\1\3\1\2\1\0\1\3\1\1\22\0\1\3\1\10\1\43"+
68 "\1\7\1\36\1\64\1\67\1\44\1\53\1\54\1\6\1\27\1\60"+
69 "\1\30\1\34\1\5\1\31\2\12\1\12\1\12\2\12\1\12\2\12"+
70 "\1\57\1\70\1\61\1\52\1\62\1\51\1\71\3\11\1\24\1\26"+
71 "\1\16\1\14\1\35\1\22\2\35\1\20\13\35\1\33\2\35\1\55"+
72 "\1\4\1\56\1\65\1\35\1\0\1\73\1\42\1\74\1\23\1\25"+
73 "\1\15\1\13\1\103\1\21\1\35\1\75\1\17\1\77\1\37\1\100"+
74 "\1\72\1\35\1\40\1\76\1\41\1\45\1\101\1\105\1\32\1\102"+
75 "\1\104\1\46\1\66\1\47\1\63\43\0\4\50\4\0\1\35\12\0"+
76 "\1\35\4\0\1\35\5\0\27\35\1\0\37\35\1\0\u013f\35\31\0"+
77 "\162\35\4\0\14\35\16\0\5\35\11\0\1\35\213\0\1\35\13\0"+
78 "\1\35\1\0\3\35\1\0\1\35\1\0\24\35\1\0\54\35\1\0"+
79 "\46\35\1\0\5\35\4\0\202\35\10\0\105\35\1\0\46\35\2\0"+
80 "\2\35\6\0\20\35\41\0\46\35\2\0\1\35\7\0\47\35\110\0"+
81 "\33\35\5\0\3\35\56\0\32\35\5\0\13\35\43\0\2\35\1\0"+
82 "\143\35\1\0\1\35\17\0\2\35\7\0\2\35\12\0\3\35\2\0"+
83 "\1\35\20\0\1\35\1\0\36\35\35\0\3\35\60\0\46\35\13\0"+
84 "\1\35\u0152\0\66\35\3\0\1\35\22\0\1\35\7\0\12\35\43\0"+
85 "\10\35\2\0\2\35\2\0\26\35\1\0\7\35\1\0\1\35\3\0"+
86 "\4\35\3\0\1\35\36\0\2\35\1\0\3\35\16\0\2\35\2\50"+
87 "\21\0\6\35\4\0\2\35\2\0\26\35\1\0\7\35\1\0\2\35"+
88 "\1\0\2\35\1\0\2\35\37\0\4\35\1\0\1\35\23\0\3\35"+
89 "\20\0\11\35\1\0\3\35\1\0\26\35\1\0\7\35\1\0\2\35"+
90 "\1\0\5\35\3\0\1\35\22\0\1\35\17\0\2\35\17\0\1\50"+
91 "\23\0\10\35\2\0\2\35\2\0\26\35\1\0\7\35\1\0\2\35"+
92 "\1\0\5\35\3\0\1\35\36\0\2\35\1\0\3\35\17\0\1\35"+
93 "\21\0\1\35\1\0\6\35\3\0\3\35\1\0\4\35\3\0\2\35"+
94 "\1\0\1\35\1\0\2\35\3\0\2\35\3\0\3\35\3\0\10\35"+
95 "\1\0\3\35\77\0\1\50\13\0\10\35\1\0\3\35\1\0\27\35"+
96 "\1\0\12\35\1\0\5\35\46\0\2\35\43\0\10\35\1\0\3\35"+
97 "\1\0\27\35\1\0\12\35\1\0\5\35\3\0\1\35\40\0\1\35"+
98 "\1\0\2\35\43\0\10\35\1\0\3\35\1\0\27\35\1\0\20\35"+
99 "\46\0\2\35\43\0\22\35\3\0\30\35\1\0\11\35\1\0\1\35"+
100 "\2\0\7\35\72\0\60\35\1\0\2\35\13\0\1\50\7\35\72\0"+
101 "\2\35\1\0\1\35\2\0\2\35\1\0\1\35\2\0\1\35\6\0"+
102 "\4\35\1\0\7\35\1\0\3\35\1\0\1\35\1\0\1\35\2\0"+
103 "\2\35\1\0\4\35\1\0\2\35\11\0\1\35\2\0\5\35\1\0"+
104 "\1\35\25\0\2\35\42\0\1\35\77\0\10\35\1\0\42\35\35\0"+
105 "\4\35\164\0\42\35\1\0\5\35\1\0\2\35\45\0\6\35\112\0"+
106 "\46\35\12\0\51\35\7\0\132\35\5\0\104\35\5\0\122\35\6\0"+
107 "\7\35\1\0\77\35\1\0\1\35\1\0\4\35\2\0\7\35\1\0"+
108 "\1\35\1\0\4\35\2\0\47\35\1\0\1\35\1\0\4\35\2\0"+
109 "\37\35\1\0\1\35\1\0\4\35\2\0\7\35\1\0\1\35\1\0"+
110 "\4\35\2\0\7\35\1\0\7\35\1\0\27\35\1\0\37\35\1\0"+
111 "\1\35\1\0\4\35\2\0\7\35\1\0\47\35\1\0\23\35\105\0"+
112 "\125\35\14\0\u026c\35\2\0\10\35\12\0\32\35\5\0\113\35\3\0"+
113 "\3\50\17\0\15\35\1\0\4\35\16\0\22\35\16\0\22\35\16\0"+
114 "\15\35\1\0\3\35\17\0\64\35\43\0\1\35\3\0\1\50\1\35"+
115 "\103\0\130\35\10\0\51\35\127\0\35\35\63\0\36\35\2\0\5\35"+
116 "\u038b\0\154\35\224\0\234\35\4\0\132\35\6\0\26\35\2\0\6\35"+
117 "\2\0\46\35\2\0\6\35\2\0\10\35\1\0\1\35\1\0\1\35"+
118 "\1\0\1\35\1\0\37\35\2\0\65\35\1\0\7\35\1\0\1\35"+
119 "\3\0\3\35\1\0\7\35\3\0\4\35\2\0\6\35\4\0\15\35"+
120 "\5\0\3\35\1\0\7\35\102\0\2\50\23\0\1\50\34\0\1\35"+
121 "\15\0\1\35\40\0\22\50\120\0\1\35\4\0\1\35\2\0\12\35"+
122 "\1\0\1\35\3\0\5\35\6\0\1\35\1\0\1\35\1\0\1\35"+
123 "\1\0\4\35\1\0\3\35\1\0\7\35\3\0\3\35\5\0\5\35"+
124 "\26\0\44\50\u0e81\0\2\35\1\50\31\0\11\50\7\0\5\35\2\0"+
125 "\3\50\2\35\4\0\126\35\6\0\3\35\1\0\132\35\1\50\4\35"+
126 "\5\0\50\35\4\0\136\35\21\0\30\35\70\0\20\35\u0200\0\u19b6\35"+
127 "\112\0\u51a6\35\132\0\u048d\35\u0773\0\u2ba4\35\u215c\0\u012e\35\2\0\73\35"+
128 "\225\0\7\35\14\0\5\35\5\0\1\35\1\0\12\35\1\0\15\35"+
129 "\1\0\5\35\1\0\1\35\1\0\2\35\1\0\2\35\1\0\154\35"+
130 "\41\0\u016b\35\22\0\100\35\2\0\66\35\50\0\14\35\1\50\66\0"+
131 "\2\50\30\0\3\50\31\0\1\50\6\0\5\35\1\0\207\35\7\0"+
132 "\1\50\34\0\32\35\4\0\1\50\1\0\32\35\12\0\1\50\131\35"+
133 "\3\0\6\35\2\0\6\35\2\0\6\35\2\0\3\35\3\0\2\50"+
134 "\3\0\2\50\31\0";
136 /**
137 * Translates characters to character classes
139 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
141 /**
142 * Translates DFA states to action switch labels.
144 private static final int [] ZZ_ACTION = zzUnpackAction();
146 private static final String ZZ_ACTION_PACKED_0 =
147 "\21\0\1\1\6\0\1\2\1\3\1\4\1\2\1\5"+
148 "\1\6\1\2\1\7\1\10\1\11\5\10\1\12\1\13"+
149 "\1\11\1\14\1\15\4\10\1\16\1\17\1\20\1\21"+
150 "\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31"+
151 "\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+
152 "\1\42\6\10\1\43\1\44\1\45\1\46\1\47\1\50"+
153 "\1\51\1\52\1\0\1\53\1\54\2\51\1\55\1\51"+
154 "\1\43\1\46\1\56\1\57\2\60\2\61\3\62\1\63"+
155 "\1\64\2\65\3\66\1\67\1\70\1\71\1\72\1\73"+
156 "\1\72\1\74\1\1\1\75\1\76\1\77\2\1\1\100"+
157 "\1\67\2\101\1\102\1\4\2\102\2\103\2\104\1\0"+
158 "\1\4\1\105\1\106\1\107\1\110\1\111\1\112\1\113"+
159 "\1\114\1\115\1\116\1\117\1\11\1\120\2\0\5\10"+
160 "\1\121\1\122\6\10\1\123\1\124\1\125\1\126\1\127"+
161 "\1\0\1\130\1\131\11\10\2\0\1\132\1\17\1\0"+
162 "\1\17\1\133\1\134\1\135\1\136\1\137\1\0\1\140"+
163 "\1\0\1\141\1\142\1\143\1\144\1\145\1\146\4\10"+
164 "\1\147\13\10\1\51\1\0\2\51\1\150\1\151\3\0"+
165 "\1\73\1\74\1\0\1\74\1\106\1\64\2\0\1\1"+
166 "\1\100\1\67\1\152\1\0\1\106\1\153\1\154\1\155"+
167 "\1\0\1\155\3\10\1\156\1\10\1\157\2\10\1\160"+
168 "\4\10\1\11\1\161\1\162\1\163\5\10\1\164\5\10"+
169 "\1\132\1\165\2\17\1\166\1\167\1\170\1\171\1\0"+
170 "\24\10\1\51\1\172\1\173\1\0\1\74\1\173\1\64"+
171 "\2\106\1\153\1\106\2\153\1\155\3\10\1\174\6\10"+
172 "\1\175\1\10\1\176\1\11\1\177\2\10\1\200\1\10"+
173 "\1\201\3\10\1\202\3\0\1\17\1\0\1\203\10\10"+
174 "\1\204\1\10\1\205\7\10\1\206\1\10\1\51\1\0"+
175 "\1\64\2\106\2\153\1\106\1\0\1\153\1\207\1\210"+
176 "\1\211\12\10\1\212\1\213\1\10\2\0\1\17\1\0"+
177 "\6\10\1\214\1\215\3\10\1\216\1\10\1\217\2\10"+
178 "\1\220\1\74\2\153\1\0\4\10\1\221\1\10\1\222"+
179 "\1\10\1\223\1\224\1\10\1\225\1\10\2\0\2\10"+
180 "\1\226\2\10\1\227\2\10\1\230\1\10\1\231\1\10"+
181 "\1\74\1\232\3\10\1\233\1\234\1\10\1\235\1\17"+
182 "\1\236\1\10\1\237\12\10\1\240\1\241\1\242\1\10"+
183 "\1\243\1\244\2\10\1\245\1\246\1\10\1\247\1\250"+
184 "\2\10\1\251";
186 private static int [] zzUnpackAction() {
187 int [] result = new int[482];
188 int offset = 0;
189 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
190 return result;
193 private static int zzUnpackAction(String packed, int offset, int [] result) {
194 int i = 0; /* index in packed string */
195 int j = offset; /* index in unpacked array */
196 int l = packed.length();
197 while (i < l) {
198 int count = packed.charAt(i++);
199 int value = packed.charAt(i++);
200 do result[j++] = value; while (--count > 0);
202 return j;
206 /**
207 * Translates a state to a row index in the transition table
209 private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
211 private static final String ZZ_ROWMAP_PACKED_0 =
212 "\0\0\0\106\0\214\0\322\0\u0118\0\u015e\0\u01a4\0\u01ea"+
213 "\0\u0230\0\u0276\0\u02bc\0\u0302\0\u0348\0\u038e\0\u03d4\0\u041a"+
214 "\0\u0460\0\u04a6\0\u04ec\0\u0532\0\u0578\0\u05be\0\u0604\0\u064a"+
215 "\0\u0690\0\u06d6\0\u0690\0\u071c\0\u0762\0\u07a8\0\u07ee\0\u0834"+
216 "\0\u087a\0\u08c0\0\u0906\0\u094c\0\u0992\0\u09d8\0\u0a1e\0\u0a64"+
217 "\0\u0aaa\0\u0af0\0\u0b36\0\u087a\0\u0b7c\0\u0bc2\0\u0c08\0\u0c4e"+
218 "\0\u0c94\0\u0cda\0\u0690\0\u0690\0\u0d20\0\u0d66\0\u0690\0\u0690"+
219 "\0\u0690\0\u0690\0\u0690\0\u0690\0\u0dac\0\u0df2\0\u0690\0\u0e38"+
220 "\0\u0e7e\0\u0ec4\0\u0f0a\0\u0690\0\u0690\0\u0f50\0\u0f96\0\u0fdc"+
221 "\0\u1022\0\u1068\0\u10ae\0\u0690\0\u10f4\0\u0690\0\u0690\0\u113a"+
222 "\0\u0690\0\u1180\0\u11c6\0\u120c\0\u0690\0\u0690\0\u1252\0\u1298"+
223 "\0\u0690\0\u12de\0\u1324\0\u136a\0\u0690\0\u13b0\0\u0690\0\u13f6"+
224 "\0\u143c\0\u0690\0\u0690\0\u11c6\0\u1482\0\u0690\0\u0690\0\u0690"+
225 "\0\u14c8\0\u0690\0\u11c6\0\u150e\0\u0690\0\u0690\0\u0690\0\u0690"+
226 "\0\u0690\0\u1554\0\u159a\0\u15e0\0\u1626\0\u166c\0\u0690\0\u16b2"+
227 "\0\u16f8\0\u0690\0\u173e\0\u0690\0\u1784\0\u0690\0\u17ca\0\u1810"+
228 "\0\u1856\0\u0690\0\u1810\0\u0690\0\u1810\0\u189c\0\u18e2\0\u1928"+
229 "\0\u196e\0\u0690\0\u19b4\0\u0690\0\u0690\0\u19fa\0\u0690\0\u0690"+
230 "\0\u0690\0\u0690\0\u0690\0\u0690\0\u1a40\0\u1a86\0\u1acc\0\u1b12"+
231 "\0\u1b58\0\u1b9e\0\u1be4\0\u087a\0\u1c2a\0\u1c70\0\u1cb6\0\u1cfc"+
232 "\0\u1d42\0\u1d88\0\u1dce\0\u0690\0\u0690\0\u0690\0\u0690\0\u0690"+
233 "\0\u1e14\0\u1e5a\0\u0690\0\u1ea0\0\u1ee6\0\u1f2c\0\u1f72\0\u1fb8"+
234 "\0\u1ffe\0\u2044\0\u208a\0\u20d0\0\u2116\0\u215c\0\u21a2\0\u21e8"+
235 "\0\u222e\0\u2274\0\u0690\0\u0690\0\u22ba\0\u0690\0\u2300\0\u2346"+
236 "\0\u0690\0\u238c\0\u0690\0\u0690\0\u0690\0\u0690\0\u0690\0\u0690"+
237 "\0\u23d2\0\u2418\0\u245e\0\u24a4\0\u24ea\0\u2530\0\u2576\0\u25bc"+
238 "\0\u2602\0\u2648\0\u268e\0\u26d4\0\u271a\0\u2760\0\u27a6\0\u27ec"+
239 "\0\u120c\0\u2832\0\u2878\0\u28be\0\u2904\0\u294a\0\u2990\0\u29d6"+
240 "\0\u2a1c\0\u2a62\0\u2aa8\0\u2aee\0\u2b34\0\u2b7a\0\u2bc0\0\u2c06"+
241 "\0\u2c4c\0\u2c92\0\u16b2\0\u16b2\0\u2cd8\0\u1810\0\u2d1e\0\u2d64"+
242 "\0\u0690\0\u2daa\0\u2df0\0\u2e36\0\u2e7c\0\u2ec2\0\u2f08\0\u087a"+
243 "\0\u2f4e\0\u2f94\0\u2fda\0\u3020\0\u3066\0\u30ac\0\u30f2\0\u3138"+
244 "\0\u317e\0\u31c4\0\u0690\0\u0690\0\u087a\0\u320a\0\u3250\0\u3296"+
245 "\0\u32dc\0\u3322\0\u087a\0\u3368\0\u33ae\0\u33f4\0\u343a\0\u3480"+
246 "\0\u0690\0\u34c6\0\u0690\0\u350c\0\u0690\0\u0690\0\u0690\0\u0690"+
247 "\0\u3552\0\u3598\0\u35de\0\u3624\0\u366a\0\u36b0\0\u36f6\0\u373c"+
248 "\0\u3782\0\u37c8\0\u380e\0\u3854\0\u389a\0\u38e0\0\u3926\0\u396c"+
249 "\0\u39b2\0\u39f8\0\u3a3e\0\u3a84\0\u3aca\0\u3b10\0\u0690\0\u0690"+
250 "\0\u3b56\0\u3b9c\0\u2aa8\0\u2aa8\0\u3be2\0\u3c28\0\u3c6e\0\u3cb4"+
251 "\0\u3cfa\0\u0690\0\u0690\0\u3d40\0\u3d86\0\u3dcc\0\u087a\0\u3e12"+
252 "\0\u3e58\0\u3e9e\0\u3ee4\0\u3f2a\0\u3f70\0\u087a\0\u3fb6\0\u087a"+
253 "\0\u3ffc\0\u087a\0\u4042\0\u4088\0\u087a\0\u40ce\0\u087a\0\u4114"+
254 "\0\u415a\0\u41a0\0\u087a\0\u41e6\0\u422c\0\u4272\0\u42b8\0\u42fe"+
255 "\0\u0690\0\u4344\0\u438a\0\u43d0\0\u4416\0\u445c\0\u44a2\0\u44e8"+
256 "\0\u452e\0\u087a\0\u4574\0\u087a\0\u45ba\0\u4600\0\u4646\0\u468c"+
257 "\0\u46d2\0\u4718\0\u475e\0\u087a\0\u47a4\0\u0690\0\u47ea\0\u2aee"+
258 "\0\u4830\0\u4876\0\u48bc\0\u4902\0\u0690\0\u3cb4\0\u4948\0\u087a"+
259 "\0\u498e\0\u087a\0\u49d4\0\u4a1a\0\u4a60\0\u4aa6\0\u4aec\0\u4b32"+
260 "\0\u4b78\0\u4bbe\0\u4c04\0\u4c4a\0\u4c90\0\u087a\0\u4cd6\0\u4d1c"+
261 "\0\u4d62\0\u4da8\0\u4dee\0\u4e34\0\u4e7a\0\u4ec0\0\u4f06\0\u4f4c"+
262 "\0\u4f92\0\u087a\0\u087a\0\u4fd8\0\u501e\0\u5064\0\u087a\0\u50aa"+
263 "\0\u087a\0\u50f0\0\u5136\0\u087a\0\u4830\0\u517c\0\u51c2\0\u4948"+
264 "\0\u5208\0\u524e\0\u5294\0\u52da\0\u087a\0\u5320\0\u087a\0\u5366"+
265 "\0\u087a\0\u087a\0\u53ac\0\u087a\0\u53f2\0\u5438\0\u547e\0\u54c4"+
266 "\0\u550a\0\u087a\0\u5550\0\u5596\0\u087a\0\u55dc\0\u5622\0\u087a"+
267 "\0\u5668\0\u087a\0\u56ae\0\u517c\0\u087a\0\u56f4\0\u573a\0\u5780"+
268 "\0\u087a\0\u087a\0\u57c6\0\u087a\0\u4dee\0\u087a\0\u580c\0\u087a"+
269 "\0\u5852\0\u5898\0\u58de\0\u5924\0\u596a\0\u59b0\0\u59f6\0\u5a3c"+
270 "\0\u5a82\0\u5ac8\0\u087a\0\u087a\0\u087a\0\u5b0e\0\u087a\0\u087a"+
271 "\0\u5b54\0\u5b9a\0\u087a\0\u087a\0\u5be0\0\u087a\0\u087a\0\u5c26"+
272 "\0\u5c6c\0\u087a";
274 private static int [] zzUnpackRowMap() {
275 int [] result = new int[482];
276 int offset = 0;
277 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
278 return result;
281 private static int zzUnpackRowMap(String packed, int offset, int [] result) {
282 int i = 0; /* index in packed string */
283 int j = offset; /* index in unpacked array */
284 int l = packed.length();
285 while (i < l) {
286 int high = packed.charAt(i++) << 16;
287 result[j++] = high | packed.charAt(i++);
289 return j;
292 /**
293 * The transition table of the DFA
295 private static final int [] ZZ_TRANS = zzUnpackTrans();
297 private static final String ZZ_TRANS_PACKED_0 =
298 "\1\31\2\32\1\33\1\34\1\35\1\36\1\37\1\40"+
299 "\1\41\1\42\2\41\1\43\1\41\1\44\1\41\1\45"+
300 "\1\41\1\46\1\41\1\47\1\41\1\50\1\51\1\52"+
301 "\2\41\1\53\1\41\1\54\1\55\1\56\1\57\1\60"+
302 "\1\61\1\62\1\41\1\63\1\64\1\31\1\65\1\66"+
303 "\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\76"+
304 "\1\77\1\100\1\101\1\102\1\103\1\104\1\105\1\106"+
305 "\1\107\1\110\1\41\1\111\2\41\1\112\3\41\1\113"+
306 "\11\114\1\115\1\114\14\115\3\114\2\115\1\114\1\115"+
307 "\1\114\4\115\2\114\1\115\1\116\23\114\14\115\11\117"+
308 "\1\120\1\117\14\120\3\117\2\120\1\117\1\120\1\117"+
309 "\4\120\2\117\1\120\1\121\23\117\14\120\1\122\2\123"+
310 "\1\122\1\124\31\122\1\125\4\122\1\126\42\122\4\127"+
311 "\1\130\31\127\1\131\4\127\1\132\42\127\11\114\1\115"+
312 "\1\114\14\115\3\114\2\115\1\114\1\115\1\114\4\115"+
313 "\2\114\1\115\24\114\14\115\34\114\1\133\51\114\11\117"+
314 "\1\120\1\117\14\120\3\117\2\120\1\117\1\120\1\117"+
315 "\4\120\2\117\1\120\24\117\14\120\34\117\1\134\51\117"+
316 "\1\135\2\136\103\135\1\137\2\140\6\137\1\141\1\137"+
317 "\14\141\3\137\2\141\1\137\1\141\1\137\4\141\2\137"+
318 "\1\141\1\142\23\137\14\141\1\143\1\144\1\123\1\143"+
319 "\1\145\1\146\30\143\1\147\47\143\1\150\2\151\6\150"+
320 "\1\141\1\150\14\141\3\150\2\141\1\150\1\141\1\150"+
321 "\4\141\2\150\1\141\1\142\23\150\14\141\1\152\1\153"+
322 "\1\123\1\152\1\154\1\146\30\152\1\155\47\152\1\31"+
323 "\2\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+
324 "\1\42\2\41\1\43\1\41\1\44\1\41\1\45\1\41"+
325 "\1\46\1\41\1\47\1\41\1\50\1\51\1\52\2\41"+
326 "\1\53\1\41\1\54\1\55\1\56\1\57\1\60\1\61"+
327 "\1\62\1\41\1\156\1\157\1\31\1\65\1\66\1\67"+
328 "\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77"+
329 "\1\100\1\101\1\102\1\103\1\104\1\105\1\106\1\107"+
330 "\1\110\1\41\1\111\2\41\1\112\3\41\1\113\3\160"+
331 "\1\161\1\162\1\163\100\160\1\164\2\165\6\164\1\166"+
332 "\1\164\14\166\3\164\2\166\1\164\1\166\1\164\4\166"+
333 "\2\164\1\166\1\167\1\164\1\0\21\164\14\166\1\170"+
334 "\2\123\1\170\1\171\1\172\30\170\1\173\47\170\11\174"+
335 "\1\166\1\174\14\166\3\174\2\166\1\174\1\166\1\174"+
336 "\4\166\2\174\1\166\24\174\14\166\34\174\1\175\51\174"+
337 "\1\176\3\177\1\200\1\201\100\176\1\202\3\177\1\203"+
338 "\101\202\1\204\3\177\1\205\101\204\1\31\2\32\1\33"+
339 "\1\34\1\35\1\36\1\37\1\40\1\41\1\42\2\41"+
340 "\1\43\1\41\1\44\1\41\1\45\1\41\1\46\1\41"+
341 "\1\47\1\41\1\50\1\51\1\52\2\41\1\53\1\41"+
342 "\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\41"+
343 "\1\63\2\31\1\65\1\66\1\67\1\70\1\71\1\72"+
344 "\1\73\1\74\1\75\1\76\1\77\1\100\1\101\1\102"+
345 "\1\103\1\104\1\105\1\106\1\107\1\110\1\41\1\111"+
346 "\2\41\1\112\3\41\1\113\107\0\3\32\1\206\102\0"+
347 "\1\207\1\33\110\0\1\210\1\211\43\0\1\212\41\0"+
348 "\1\213\25\0\1\214\15\0\1\215\43\0\1\216\147\0"+
349 "\1\217\44\0\16\41\2\0\3\41\1\0\6\41\2\0"+
350 "\1\41\24\0\14\41\12\0\1\42\2\220\2\221\2\222"+
351 "\2\223\2\224\2\225\2\0\1\42\2\0\1\226\62\0"+
352 "\6\41\1\227\1\41\1\230\5\41\2\0\3\41\1\0"+
353 "\6\41\2\0\1\41\24\0\1\41\1\231\4\41\1\232"+
354 "\5\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
355 "\1\41\24\0\6\41\1\233\5\41\11\0\4\41\1\234"+
356 "\11\41\2\0\3\41\1\0\2\41\1\235\3\41\2\0"+
357 "\1\41\24\0\5\41\1\236\6\41\11\0\14\41\1\237"+
358 "\1\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
359 "\6\41\1\240\5\41\11\0\6\41\1\241\7\41\2\0"+
360 "\1\41\1\242\1\41\1\0\2\41\1\243\3\41\2\0"+
361 "\1\41\24\0\14\41\27\0\1\244\22\0\1\245\63\0"+
362 "\1\246\21\0\1\247\7\0\1\250\35\0\1\42\2\220"+
363 "\2\221\2\222\2\223\2\224\2\225\2\0\1\42\2\251"+
364 "\1\226\105\0\1\252\32\0\1\253\27\0\14\41\1\254"+
365 "\1\41\2\0\3\41\1\0\6\41\2\0\1\255\24\0"+
366 "\1\41\1\256\12\41\11\0\14\41\1\257\1\41\2\0"+
367 "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
368 "\16\41\2\0\3\41\1\0\3\41\1\260\2\41\2\0"+
369 "\1\41\24\0\11\41\1\261\2\41\11\0\16\41\2\0"+
370 "\3\41\1\0\3\41\1\262\2\41\2\0\1\41\24\0"+
371 "\6\41\1\263\1\41\1\264\3\41\1\265\2\0\1\265"+
372 "\1\266\31\265\1\0\4\265\1\267\42\265\1\270\2\0"+
373 "\1\270\1\271\37\270\1\272\41\270\34\0\1\273\22\0"+
374 "\1\274\100\0\1\275\10\0\1\276\74\0\1\277\6\0"+
375 "\1\300\76\0\1\301\7\0\1\302\75\0\1\303\105\0"+
376 "\1\304\105\0\1\305\13\0\1\306\71\0\1\307\14\0"+
377 "\1\310\27\0\16\41\2\0\3\41\1\0\3\41\1\311"+
378 "\2\41\2\0\1\312\24\0\1\41\1\313\12\41\11\0"+
379 "\16\41\2\0\3\41\1\0\5\41\1\314\2\0\1\41"+
380 "\24\0\4\41\1\315\7\41\11\0\6\41\1\316\7\41"+
381 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\1\41"+
382 "\1\317\4\41\1\320\2\41\1\321\2\41\11\0\16\41"+
383 "\2\0\3\41\1\0\4\41\1\322\1\41\2\0\1\323"+
384 "\24\0\10\41\1\324\1\325\1\41\1\326\11\0\16\41"+
385 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\6\41"+
386 "\1\327\5\41\11\0\16\41\2\0\3\41\1\0\6\41"+
387 "\2\0\1\41\24\0\11\41\1\330\2\41\11\0\16\115"+
388 "\2\0\3\115\1\0\1\115\1\0\4\115\2\0\1\115"+
389 "\24\0\14\115\11\0\16\120\2\0\3\120\1\0\1\120"+
390 "\1\0\4\120\2\0\1\120\24\0\14\120\1\122\2\0"+
391 "\1\122\1\331\31\122\1\0\4\122\1\0\42\122\1\0"+
392 "\3\123\1\332\101\0\1\122\2\0\103\122\4\127\1\130"+
393 "\31\127\1\0\4\127\1\333\43\127\2\0\141\127\1\0"+
394 "\4\127\1\334\42\127\11\0\1\335\1\0\14\335\3\0"+
395 "\2\335\1\0\1\335\1\0\4\335\2\0\1\335\24\0"+
396 "\14\335\11\0\1\336\1\0\14\336\3\0\2\336\1\0"+
397 "\1\336\1\0\4\336\2\0\1\336\24\0\14\336\1\0"+
398 "\3\136\1\337\102\0\3\140\1\340\112\0\16\141\2\0"+
399 "\3\141\1\0\1\141\1\0\4\141\2\0\1\141\24\0"+
400 "\14\141\5\0\1\143\101\0\3\151\1\341\106\0\1\152"+
401 "\101\0\1\342\1\161\103\0\1\343\2\344\1\343\1\345"+
402 "\1\210\1\346\27\343\1\347\47\343\4\0\1\350\102\0"+
403 "\3\165\1\351\112\0\16\166\2\0\3\166\1\0\1\166"+
404 "\1\0\4\166\2\0\1\166\24\0\14\166\1\170\2\0"+
405 "\1\170\1\171\1\172\30\170\1\173\50\170\1\352\2\170"+
406 "\1\171\1\353\30\170\1\354\47\170\5\0\1\172\111\0"+
407 "\1\355\1\0\14\355\3\0\2\355\1\0\1\355\1\0"+
408 "\4\355\2\0\1\355\24\0\14\355\1\0\3\177\1\356"+
409 "\102\0\2\177\110\0\1\210\1\211\100\0\2\32\105\0"+
410 "\1\33\103\0\1\210\2\0\103\210\6\357\1\360\77\357"+
411 "\52\0\1\361\33\0\1\216\2\0\103\216\12\0\1\362"+
412 "\14\0\2\363\1\362\66\0\1\364\16\0\1\364\65\0"+
413 "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
414 "\6\41\1\365\5\41\11\0\16\41\2\0\3\41\1\0"+
415 "\2\41\1\366\3\41\2\0\1\41\24\0\14\41\11\0"+
416 "\6\41\1\367\7\41\2\0\3\41\1\0\6\41\2\0"+
417 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
418 "\3\41\1\370\2\41\2\0\1\41\24\0\14\41\11\0"+
419 "\16\41\2\0\3\41\1\0\2\41\1\371\3\41\2\0"+
420 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
421 "\4\41\1\372\1\41\2\0\1\41\24\0\4\41\1\373"+
422 "\7\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
423 "\1\41\24\0\1\374\13\41\11\0\4\41\1\375\11\41"+
424 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
425 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\376"+
426 "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
427 "\2\0\1\41\24\0\4\41\1\377\7\41\11\0\16\41"+
428 "\2\0\3\41\1\0\4\41\1\u0100\1\41\2\0\1\41"+
429 "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
430 "\2\0\1\u0101\24\0\14\41\11\0\2\u0102\2\0\2\u0102"+
431 "\4\0\4\u0102\2\0\1\u0102\10\0\1\u0102\30\0\2\u0102"+
432 "\45\0\1\u0103\24\0\1\u0104\35\0\16\41\2\0\3\41"+
433 "\1\0\6\41\2\0\1\41\24\0\13\41\1\u0105\11\0"+
434 "\6\41\1\u0106\7\41\2\0\3\41\1\0\6\41\2\0"+
435 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
436 "\4\41\1\u0107\1\41\2\0\1\41\24\0\14\41\11\0"+
437 "\16\41\2\0\3\41\1\0\4\41\1\u0108\1\41\2\0"+
438 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
439 "\6\41\2\0\1\u0109\24\0\1\41\1\u010a\6\41\1\u010b"+
440 "\3\41\11\0\10\41\1\u010c\5\41\2\0\3\41\1\0"+
441 "\3\41\1\u010d\2\41\2\0\1\41\24\0\14\41\11\0"+
442 "\14\41\1\u010e\1\41\2\0\3\41\1\0\6\41\2\0"+
443 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
444 "\6\41\2\0\1\41\24\0\6\41\1\u010f\5\41\11\0"+
445 "\16\41\2\0\3\41\1\0\4\41\1\u0110\1\41\2\0"+
446 "\1\41\24\0\14\41\1\265\2\0\1\265\1\266\31\265"+
447 "\1\0\4\265\1\u0111\43\265\2\0\103\265\43\0\1\u0112"+
448 "\42\0\1\270\2\0\1\270\1\271\37\270\1\u0113\42\270"+
449 "\2\0\103\270\44\0\1\u0114\124\0\1\u0115\104\0\1\u0116"+
450 "\75\0\1\u0117\105\0\1\u0118\7\0\1\u0119\34\0\10\41"+
451 "\1\u011a\5\41\2\0\3\41\1\0\6\41\2\0\1\41"+
452 "\24\0\6\41\1\u011b\5\41\11\0\16\41\2\0\3\41"+
453 "\1\0\5\41\1\u011c\2\0\1\41\24\0\14\41\11\0"+
454 "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
455 "\2\41\1\u011d\11\41\11\0\16\41\2\0\3\41\1\0"+
456 "\6\41\2\0\1\41\24\0\4\41\1\u011e\7\41\11\0"+
457 "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
458 "\4\41\1\u011f\7\41\11\0\16\41\2\0\3\41\1\0"+
459 "\6\41\2\0\1\41\24\0\1\41\1\u0120\12\41\11\0"+
460 "\16\41\2\0\3\41\1\0\4\41\1\u0121\1\41\2\0"+
461 "\1\41\24\0\4\41\1\u0122\7\41\11\0\16\41\2\0"+
462 "\3\41\1\0\2\41\1\u0123\3\41\2\0\1\41\24\0"+
463 "\14\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
464 "\1\41\24\0\1\41\1\u0124\12\41\11\0\16\41\2\0"+
465 "\3\41\1\0\3\41\1\u0125\2\41\2\0\1\41\24\0"+
466 "\1\41\1\u0126\12\41\11\0\16\41\2\0\3\41\1\0"+
467 "\6\41\2\0\1\41\24\0\1\u0127\13\41\11\0\16\41"+
468 "\2\0\3\41\1\0\2\41\1\u0128\3\41\2\0\1\41"+
469 "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
470 "\2\0\1\41\24\0\6\41\1\u0129\5\41\11\0\10\41"+
471 "\1\u012a\5\41\2\0\3\41\1\0\6\41\2\0\1\41"+
472 "\24\0\14\41\11\0\6\41\1\u012b\1\41\1\u012c\5\41"+
473 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
474 "\11\0\10\41\1\u012d\5\41\2\0\3\41\1\0\6\41"+
475 "\2\0\1\41\24\0\14\41\1\0\2\123\103\0\36\127"+
476 "\1\0\4\127\1\u012e\100\127\1\0\4\127\1\u012f\42\127"+
477 "\11\0\16\335\2\0\3\335\1\0\1\335\1\0\4\335"+
478 "\2\0\1\335\24\0\14\335\11\0\16\336\2\0\3\336"+
479 "\1\0\1\336\1\0\4\336\2\0\1\336\24\0\14\336"+
480 "\1\0\2\136\104\0\2\140\104\0\2\151\105\0\1\161"+
481 "\103\0\1\343\2\0\1\343\1\345\1\u0130\30\343\1\347"+
482 "\47\343\1\344\2\0\1\344\1\u0131\1\0\30\344\1\147"+
483 "\47\344\1\343\1\u0132\2\343\1\345\1\u0133\30\343\1\u0134"+
484 "\47\343\1\u0135\2\357\1\u0135\1\u0136\1\357\1\u0137\27\u0135"+
485 "\1\357\47\u0135\5\0\1\u0130\100\0\1\164\2\0\103\164"+
486 "\1\0\2\165\103\0\1\170\1\0\2\170\1\171\1\172"+
487 "\30\170\1\173\47\170\11\0\16\355\2\0\3\355\1\0"+
488 "\1\355\1\0\4\355\2\0\1\355\24\0\14\355\6\357"+
489 "\1\u0138\77\357\5\u0139\1\u013a\1\360\77\u0139\12\0\1\362"+
490 "\2\u013b\2\221\4\0\2\224\4\0\1\362\66\0\1\362"+
491 "\16\0\1\362\66\0\1\364\2\u013b\2\221\4\0\2\224"+
492 "\2\225\2\0\1\364\65\0\16\41\2\0\3\41\1\0"+
493 "\6\41\2\0\1\41\24\0\1\41\1\u013c\12\41\11\0"+
494 "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
495 "\1\41\1\u013d\12\41\11\0\16\41\2\0\3\41\1\0"+
496 "\6\41\2\0\1\41\24\0\4\41\1\u013e\7\41\11\0"+
497 "\2\41\1\u013f\13\41\2\0\3\41\1\0\6\41\2\0"+
498 "\1\41\24\0\14\41\11\0\14\41\1\u0140\1\41\2\0"+
499 "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
500 "\16\41\2\0\3\41\1\0\4\41\1\u0141\1\41\2\0"+
501 "\1\41\24\0\14\41\11\0\6\41\1\u0142\7\41\2\0"+
502 "\3\41\1\0\6\41\2\0\1\41\24\0\6\41\1\u0143"+
503 "\5\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
504 "\1\41\24\0\1\41\1\u0144\12\41\11\0\16\41\2\0"+
505 "\3\41\1\0\5\41\1\u0145\2\0\1\41\24\0\14\41"+
506 "\11\0\14\41\1\u0146\1\41\2\0\3\41\1\0\6\41"+
507 "\2\0\1\41\24\0\14\41\11\0\14\41\1\u0147\1\41"+
508 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
509 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
510 "\24\0\5\41\1\u0148\6\41\11\0\2\u0102\2\220\2\u0102"+
511 "\2\222\2\223\2\u0102\2\u0149\2\0\1\u0102\2\0\1\226"+
512 "\5\0\1\u0102\30\0\2\u0102\22\0\6\41\1\u014a\7\41"+
513 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
514 "\11\0\10\41\1\u014b\5\41\2\0\3\41\1\0\6\41"+
515 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
516 "\1\0\6\41\2\0\1\u014c\24\0\14\41\11\0\14\41"+
517 "\1\u014d\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
518 "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\2\41"+
519 "\1\u014e\3\41\2\0\1\41\24\0\14\41\11\0\16\41"+
520 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\4\41"+
521 "\1\u014f\7\41\11\0\16\41\2\0\3\41\1\0\6\41"+
522 "\2\0\1\41\24\0\6\41\1\u0150\5\41\11\0\16\41"+
523 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\1\41"+
524 "\1\u0151\12\41\11\0\6\41\1\u0152\7\41\2\0\3\41"+
525 "\1\0\6\41\2\0\1\41\24\0\14\41\11\0\14\41"+
526 "\1\u0153\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
527 "\24\0\14\41\4\u0154\1\u0155\31\u0154\1\0\4\u0154\1\u0156"+
528 "\42\u0154\4\u0114\1\u0157\37\u0114\1\u0158\41\u0114\52\0\1\u0159"+
529 "\44\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
530 "\24\0\7\41\1\u015a\4\41\11\0\16\41\2\0\3\41"+
531 "\1\0\4\41\1\u015b\1\41\2\0\1\41\24\0\14\41"+
532 "\11\0\6\41\1\u015c\7\41\2\0\3\41\1\0\6\41"+
533 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
534 "\1\0\6\41\2\0\1\41\24\0\3\41\1\u015d\10\41"+
535 "\11\0\16\41\2\0\3\41\1\0\4\41\1\u015e\1\41"+
536 "\2\0\1\41\24\0\14\41\11\0\14\41\1\u015f\1\41"+
537 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
538 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
539 "\24\0\4\41\1\u0160\7\41\11\0\16\41\2\0\3\41"+
540 "\1\0\6\41\2\0\1\41\24\0\2\41\1\u0161\11\41"+
541 "\11\0\14\41\1\u0162\1\41\2\0\3\41\1\0\6\41"+
542 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
543 "\1\0\4\41\1\u0163\1\41\2\0\1\41\24\0\14\41"+
544 "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0164\2\41"+
545 "\2\0\1\41\24\0\14\41\11\0\10\41\1\u0165\5\41"+
546 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
547 "\11\0\16\41\2\0\3\41\1\0\4\41\1\u0166\1\41"+
548 "\2\0\1\41\24\0\14\41\11\0\14\41\1\u0167\1\41"+
549 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
550 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
551 "\24\0\2\41\1\u0168\11\41\11\0\16\41\2\0\3\41"+
552 "\1\0\3\41\1\u0169\2\41\2\0\1\41\24\0\14\41"+
553 "\11\0\16\41\2\0\3\41\1\0\4\41\1\u016a\1\41"+
554 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
555 "\1\0\6\41\2\0\1\41\24\0\1\41\1\u016b\12\41"+
556 "\11\0\12\41\1\u016c\3\41\2\0\3\41\1\0\6\41"+
557 "\2\0\1\41\24\0\14\41\11\0\6\41\1\u016d\7\41"+
558 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
559 "\36\127\1\0\4\127\1\u016e\42\127\1\344\1\u016f\2\344"+
560 "\1\u0131\31\344\1\u0170\47\344\1\343\1\0\2\343\1\345"+
561 "\1\u0130\30\343\1\347\47\343\1\u0135\2\357\1\u0135\1\u0136"+
562 "\1\357\1\u0171\27\u0135\1\357\50\u0135\1\u0172\2\u0135\1\u0136"+
563 "\1\u0135\1\u0171\77\u0135\1\u0173\2\u0139\1\u0173\1\u0174\1\u013a"+
564 "\1\u0137\27\u0173\1\u0139\47\u0173\5\357\1\u0175\1\u0176\77\357"+
565 "\6\u0139\1\u0177\77\u0139\11\0\16\41\2\0\3\41\1\0"+
566 "\4\41\1\u0178\1\41\2\0\1\41\24\0\14\41\11\0"+
567 "\6\41\1\u0179\7\41\2\0\3\41\1\0\6\41\2\0"+
568 "\1\41\24\0\14\41\11\0\14\41\1\u017a\1\41\2\0"+
569 "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
570 "\16\41\2\0\3\41\1\0\3\41\1\u017b\2\41\2\0"+
571 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
572 "\6\41\2\0\1\41\24\0\1\41\1\u017c\12\41\11\0"+
573 "\14\41\1\u017d\1\41\2\0\3\41\1\0\6\41\2\0"+
574 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
575 "\3\41\1\u017e\2\41\2\0\1\41\24\0\14\41\11\0"+
576 "\16\41\2\0\3\41\1\0\6\41\2\0\1\u017f\24\0"+
577 "\14\41\11\0\6\41\1\u0180\7\41\2\0\3\41\1\0"+
578 "\6\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
579 "\3\41\1\0\2\41\1\u0181\3\41\2\0\1\41\24\0"+
580 "\14\41\11\0\2\u0102\2\220\2\u0102\2\222\2\223\2\u0102"+
581 "\2\u0149\2\363\1\u0102\2\0\1\226\5\0\1\u0102\30\0"+
582 "\2\u0102\22\0\16\41\2\0\3\41\1\0\6\41\2\0"+
583 "\1\41\24\0\7\41\1\u0182\4\41\11\0\16\41\2\0"+
584 "\3\41\1\0\3\41\1\u0183\2\41\2\0\1\41\24\0"+
585 "\14\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
586 "\1\41\24\0\4\41\1\u0184\7\41\11\0\16\41\2\0"+
587 "\3\41\1\0\6\41\2\0\1\41\24\0\13\41\1\u0185"+
588 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
589 "\24\0\3\41\1\u0186\10\41\11\0\14\41\1\u0187\1\41"+
590 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
591 "\4\u0154\1\u0155\31\u0154\1\0\4\u0154\1\u0188\43\u0154\2\0"+
592 "\141\u0154\1\0\4\u0154\1\u0189\42\u0154\4\u0114\1\u0157\37\u0114"+
593 "\1\u018a\105\u0114\1\u018b\41\u0114\11\0\16\41\2\0\3\41"+
594 "\1\0\6\41\2\0\1\41\24\0\1\41\1\u018c\12\41"+
595 "\11\0\14\41\1\u018d\1\41\2\0\3\41\1\0\6\41"+
596 "\2\0\1\41\24\0\14\41\11\0\10\41\1\u018e\5\41"+
597 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
598 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
599 "\24\0\1\41\1\u018f\12\41\11\0\16\41\2\0\3\41"+
600 "\1\0\3\41\1\u0190\2\41\2\0\1\41\24\0\14\41"+
601 "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0191\2\41"+
602 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
603 "\1\0\6\41\2\0\1\41\24\0\4\41\1\u0192\7\41"+
604 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
605 "\24\0\11\41\1\u0193\2\41\11\0\10\41\1\u0194\5\41"+
606 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
607 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
608 "\24\0\2\41\1\u0195\11\41\11\0\10\41\1\u0196\5\41"+
609 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
610 "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0197\2\41"+
611 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
612 "\1\0\6\41\2\0\1\41\24\0\11\41\1\u0198\2\41"+
613 "\11\0\16\41\2\0\3\41\1\0\4\41\1\u0199\1\41"+
614 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
615 "\1\0\6\41\2\0\1\41\24\0\2\41\1\u019a\11\41"+
616 "\11\0\16\41\2\0\3\41\1\0\4\41\1\u019b\1\41"+
617 "\2\0\1\41\24\0\14\41\11\0\14\41\1\u019c\1\41"+
618 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
619 "\1\344\1\0\2\344\1\u0131\1\0\30\344\1\147\47\344"+
620 "\1\u0135\2\357\1\u0135\1\u0136\1\u0175\1\u019d\27\u0135\1\357"+
621 "\50\u0135\1\357\2\u0135\1\u0136\1\357\1\u0171\27\u0135\1\357"+
622 "\47\u0135\1\u0173\2\u0139\1\u0173\1\u0174\1\u0139\1\u019e\27\u0173"+
623 "\1\u0139\50\u0173\1\u019f\2\u0173\1\u0174\1\u0173\1\u019e\77\u0173"+
624 "\5\u0139\1\u013a\1\u01a0\77\u0139\11\0\6\41\1\u01a1\7\41"+
625 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
626 "\11\0\4\41\1\u01a2\11\41\2\0\3\41\1\0\6\41"+
627 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
628 "\1\0\2\41\1\u01a3\3\41\2\0\1\41\24\0\14\41"+
629 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
630 "\24\0\5\41\1\u01a4\6\41\11\0\16\41\2\0\3\41"+
631 "\1\0\4\41\1\u01a5\1\41\2\0\1\41\24\0\14\41"+
632 "\11\0\6\41\1\u01a6\7\41\2\0\3\41\1\0\6\41"+
633 "\2\0\1\41\24\0\14\41\11\0\14\41\1\u01a7\1\41"+
634 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
635 "\11\0\12\41\1\u01a8\3\41\2\0\3\41\1\0\6\41"+
636 "\2\0\1\41\24\0\14\41\11\0\14\41\1\u01a9\1\41"+
637 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
638 "\11\0\16\41\2\0\3\41\1\0\2\41\1\u01aa\3\41"+
639 "\2\0\1\41\24\0\14\41\11\0\10\41\1\u01ab\5\41"+
640 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
641 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
642 "\24\0\4\41\1\u01ac\7\41\11\0\16\41\2\0\3\41"+
643 "\1\0\6\41\2\0\1\41\24\0\1\41\1\u01ad\12\41"+
644 "\36\u0154\1\0\4\u0154\1\u01ae\100\u0154\1\0\4\u0154\1\0"+
645 "\42\u0154\4\u0114\1\u0157\37\u0114\1\u01af\105\u0114\1\u0113\41\u0114"+
646 "\11\0\16\41\2\0\3\41\1\0\4\41\1\u01b0\1\41"+
647 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
648 "\1\0\6\41\2\0\1\41\24\0\2\41\1\u01b1\11\41"+
649 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
650 "\24\0\2\41\1\u01b2\11\41\11\0\2\41\1\u01b3\13\41"+
651 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
652 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
653 "\24\0\1\41\1\u01b4\12\41\11\0\16\41\2\0\3\41"+
654 "\1\0\4\41\1\u01b5\1\41\2\0\1\41\24\0\14\41"+
655 "\11\0\16\41\2\0\3\41\1\0\2\41\1\u01b6\3\41"+
656 "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
657 "\1\0\4\41\1\u01b7\1\41\2\0\1\41\24\0\14\41"+
658 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
659 "\24\0\2\41\1\u01b8\11\41\11\0\16\41\2\0\3\41"+
660 "\1\0\3\41\1\u01b9\2\41\2\0\1\41\24\0\14\41"+
661 "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
662 "\24\0\11\41\1\u01ba\2\41\11\0\10\41\1\u01bb\5\41"+
663 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
664 "\1\u0173\2\u0139\1\u0173\1\u0174\1\u013a\1\u01bc\27\u0173\1\u0139"+
665 "\50\u0173\1\u0139\2\u0173\1\u0174\1\u0139\1\u019e\27\u0173\1\u0139"+
666 "\47\u0173\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
667 "\1\41\24\0\10\41\1\u01bd\3\41\11\0\16\41\2\0"+
668 "\3\41\1\0\6\41\2\0\1\41\24\0\1\41\1\u01be"+
669 "\12\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
670 "\1\41\24\0\2\41\1\u01bf\11\41\11\0\14\41\1\u01c0"+
671 "\1\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
672 "\14\41\11\0\16\41\2\0\3\41\1\0\4\41\1\u01c1"+
673 "\1\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
674 "\3\41\1\0\6\41\2\0\1\41\24\0\4\41\1\u01c2"+
675 "\7\41\11\0\14\41\1\u01c3\1\41\2\0\3\41\1\0"+
676 "\6\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
677 "\3\41\1\0\2\41\1\u01c4\3\41\2\0\1\41\24\0"+
678 "\14\41\36\u0154\1\0\4\u0154\1\u0111\42\u0154\44\u0114\1\u01c5"+
679 "\41\u0114\11\0\14\41\1\u01c6\1\41\2\0\3\41\1\0"+
680 "\6\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
681 "\3\41\1\0\4\41\1\u01c7\1\41\2\0\1\41\24\0"+
682 "\14\41\11\0\14\41\1\u01c8\1\41\2\0\3\41\1\0"+
683 "\6\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
684 "\3\41\1\0\6\41\2\0\1\41\24\0\2\41\1\u01c9"+
685 "\11\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
686 "\1\u01ca\24\0\14\41\11\0\4\41\1\u01cb\11\41\2\0"+
687 "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
688 "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
689 "\6\41\1\u01cc\5\41\11\0\6\41\1\u01cd\7\41\2\0"+
690 "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
691 "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
692 "\2\41\1\u01ce\11\41\11\0\14\41\1\u01cf\1\41\2\0"+
693 "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
694 "\16\41\2\0\3\41\1\0\2\41\1\u01d0\3\41\2\0"+
695 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
696 "\2\41\1\u01d1\3\41\2\0\1\41\24\0\14\41\11\0"+
697 "\14\41\1\u01d2\1\41\2\0\3\41\1\0\6\41\2\0"+
698 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
699 "\4\41\1\u01d3\1\41\2\0\1\41\24\0\14\41\11\0"+
700 "\14\41\1\u01d4\1\41\2\0\3\41\1\0\6\41\2\0"+
701 "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
702 "\6\41\2\0\1\41\24\0\1\u01d5\13\41\11\0\16\41"+
703 "\2\0\3\41\1\0\2\41\1\u01d6\3\41\2\0\1\41"+
704 "\24\0\14\41\11\0\14\41\1\u01d7\1\41\2\0\3\41"+
705 "\1\0\6\41\2\0\1\41\24\0\14\41\11\0\14\41"+
706 "\1\u01d8\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
707 "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
708 "\2\0\1\41\24\0\6\41\1\u01d9\5\41\11\0\16\41"+
709 "\2\0\3\41\1\0\4\41\1\u01da\1\41\2\0\1\41"+
710 "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\4\41"+
711 "\1\u01db\1\41\2\0\1\41\24\0\14\41\11\0\12\41"+
712 "\1\u01dc\3\41\2\0\3\41\1\0\6\41\2\0\1\41"+
713 "\24\0\14\41\11\0\10\41\1\u01dd\5\41\2\0\3\41"+
714 "\1\0\6\41\2\0\1\41\24\0\14\41\11\0\4\41"+
715 "\1\u01de\11\41\2\0\3\41\1\0\6\41\2\0\1\41"+
716 "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
717 "\2\0\1\41\24\0\4\41\1\u01df\7\41\11\0\16\41"+
718 "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\12\41"+
719 "\1\u01e0\1\41\11\0\14\41\1\u01e1\1\41\2\0\3\41"+
720 "\1\0\6\41\2\0\1\41\24\0\14\41\11\0\12\41"+
721 "\1\u01e2\3\41\2\0\3\41\1\0\6\41\2\0\1\41"+
722 "\24\0\14\41";
724 private static int [] zzUnpackTrans() {
725 int [] result = new int[23730];
726 int offset = 0;
727 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
728 return result;
731 private static int zzUnpackTrans(String packed, int offset, int [] result) {
732 int i = 0; /* index in packed string */
733 int j = offset; /* index in unpacked array */
734 int l = packed.length();
735 while (i < l) {
736 int count = packed.charAt(i++);
737 int value = packed.charAt(i++);
738 value--;
739 do result[j++] = value; while (--count > 0);
741 return j;
745 /* error codes */
746 private static final int ZZ_UNKNOWN_ERROR = 0;
747 private static final int ZZ_NO_MATCH = 1;
748 private static final int ZZ_PUSHBACK_2BIG = 2;
749 private static final char[] EMPTY_BUFFER = new char[0];
750 private static final int YYEOF = -1;
751 private static java.io.Reader zzReader = null; // Fake
753 /* error messages for the codes above */
754 private static final String ZZ_ERROR_MSG[] = {
755 "Unkown internal scanner error",
756 "Error: could not match input",
757 "Error: pushback value was too large"
761 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
763 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
765 private static final String ZZ_ATTRIBUTE_PACKED_0 =
766 "\21\0\1\1\6\0\1\11\1\1\1\11\27\1\2\11"+
767 "\2\1\6\11\2\1\1\11\4\1\2\11\6\1\1\11"+
768 "\1\1\2\11\1\1\1\11\2\1\1\0\2\11\1\7"+
769 "\1\1\1\11\1\1\2\3\1\11\1\1\1\11\2\1"+
770 "\2\11\2\1\3\11\1\1\1\11\2\1\5\11\5\1"+
771 "\1\11\2\1\1\11\1\1\1\11\1\3\1\11\3\1"+
772 "\1\11\1\1\1\11\1\1\1\0\3\1\1\11\1\1"+
773 "\2\11\1\1\6\11\2\0\15\1\5\11\1\0\1\1"+
774 "\1\11\11\1\2\0\2\1\1\0\1\1\2\11\1\1"+
775 "\1\11\1\1\1\0\1\11\1\0\6\11\21\1\1\0"+
776 "\2\1\2\5\3\0\2\1\1\0\3\1\2\0\3\1"+
777 "\1\5\1\0\2\1\1\11\1\1\1\0\17\1\2\11"+
778 "\14\1\1\11\1\1\1\11\1\1\4\11\1\0\25\1"+
779 "\2\11\1\0\10\1\2\11\30\1\3\0\1\1\1\0"+
780 "\1\11\24\1\1\15\1\0\5\1\1\11\1\0\21\1"+
781 "\2\0\1\1\1\0\24\1\1\0\15\1\2\0\63\1";
783 private static int [] zzUnpackAttribute() {
784 int [] result = new int[482];
785 int offset = 0;
786 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
787 return result;
790 private static int zzUnpackAttribute(String packed, int offset, int [] result) {
791 int i = 0; /* index in packed string */
792 int j = offset; /* index in unpacked array */
793 int l = packed.length();
794 while (i < l) {
795 int count = packed.charAt(i++);
796 int value = packed.charAt(i++);
797 do result[j++] = value; while (--count > 0);
799 return j;
802 /** the current state of the DFA */
803 private int zzState;
805 /** the current lexical state */
806 private int zzLexicalState = YYINITIAL;
808 /** this buffer contains the current text to be matched and is
809 the source of the yytext() string */
810 private CharSequence zzBuffer = "";
812 /** this buffer may contains the current text array to be matched when it is cheap to acquire it */
813 private char[] zzBufferArray;
815 /** the textposition at the last accepting state */
816 private int zzMarkedPos;
818 /** the textposition at the last state to be included in yytext */
819 private int zzPushbackPos;
821 /** the current text position in the buffer */
822 private int zzCurrentPos;
824 /** startRead marks the beginning of the yytext() string in the buffer */
825 private int zzStartRead;
827 /** endRead marks the last character in the buffer, that has been read
828 from input */
829 private int zzEndRead;
832 * zzAtBOL == true <=> the scanner is currently at the beginning of a line
834 private boolean zzAtBOL = true;
836 /** zzAtEOF == true <=> the scanner is at the EOF */
837 private boolean zzAtEOF;
839 /** denotes if the user-EOF-code has already been executed */
840 private boolean zzEOFDone;
842 /* user code: */
844 private Stack <IElementType> gStringStack = new Stack<IElementType>();
845 private Stack <IElementType> blockStack = new Stack<IElementType>();
847 private int afterComment = YYINITIAL;
848 private int afterNls = YYINITIAL;
849 private int afterBrace = YYINITIAL;
851 private void clearStacks(){
852 gStringStack.clear();
853 blockStack.clear();
856 private Stack<IElementType> braceCount = new Stack <IElementType>();
860 public _GroovyLexer(java.io.Reader in) {
861 this.zzReader = in;
865 * Creates a new scanner.
866 * There is also java.io.Reader version of this constructor.
868 * @param in the java.io.Inputstream to read input from.
870 public _GroovyLexer(java.io.InputStream in) {
871 this(new java.io.InputStreamReader(in));
874 /**
875 * Unpacks the compressed character translation table.
877 * @param packed the packed character translation table
878 * @return the unpacked character translation table
880 private static char [] zzUnpackCMap(String packed) {
881 char [] map = new char[0x10000];
882 int i = 0; /* index in packed string */
883 int j = 0; /* index in unpacked array */
884 while (i < 1346) {
885 int count = packed.charAt(i++);
886 char value = packed.charAt(i++);
887 do map[j++] = value; while (--count > 0);
889 return map;
892 public final int getTokenStart(){
893 return zzStartRead;
896 public final int getTokenEnd(){
897 return getTokenStart() + yylength();
900 public void reset(CharSequence buffer, int start, int end,int initialState){
901 zzBuffer = buffer;
902 zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer);
903 zzCurrentPos = zzMarkedPos = zzStartRead = start;
904 zzPushbackPos = 0;
905 zzAtEOF = false;
906 zzAtBOL = true;
907 zzEndRead = end;
908 yybegin(initialState);
911 public void reset(CharSequence buffer, int initialState){
912 reset(buffer, 0, buffer.length(), initialState);
916 * Refills the input buffer.
918 * @return <code>false</code>, iff there was new input.
920 * @exception java.io.IOException if any I/O-Error occurs
922 private boolean zzRefill() throws java.io.IOException {
923 return true;
928 * Returns the current lexical state.
930 public final int yystate() {
931 return zzLexicalState;
936 * Enters a new lexical state
938 * @param newState the new lexical state
940 public final void yybegin(int newState) {
941 zzLexicalState = newState;
946 * Returns the text matched by the current regular expression.
948 public final CharSequence yytext() {
949 return zzBuffer.subSequence(zzStartRead, zzMarkedPos);
954 * Returns the character at position <tt>pos</tt> from the
955 * matched text.
957 * It is equivalent to yytext().charAt(pos), but faster
959 * @param pos the position of the character to fetch.
960 * A value from 0 to yylength()-1.
962 * @return the character at position pos
964 public final char yycharat(int pos) {
965 return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos);
970 * Returns the length of the matched text region.
972 public final int yylength() {
973 return zzMarkedPos-zzStartRead;
978 * Reports an error that occured while scanning.
980 * In a wellformed scanner (no or only correct usage of
981 * yypushback(int) and a match-all fallback rule) this method
982 * will only be called with things that "Can't Possibly Happen".
983 * If this method is called, something is seriously wrong
984 * (e.g. a JFlex bug producing a faulty scanner etc.).
986 * Usual syntax/scanner level error handling should be done
987 * in error fallback rules.
989 * @param errorCode the code of the errormessage to display
991 private void zzScanError(int errorCode) {
992 String message;
993 try {
994 message = ZZ_ERROR_MSG[errorCode];
996 catch (ArrayIndexOutOfBoundsException e) {
997 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
1000 throw new Error(message);
1005 * Pushes the specified amount of characters back into the input stream.
1007 * They will be read again by then next call of the scanning method
1009 * @param number the number of characters to be read again.
1010 * This number must not be greater than yylength()!
1012 public void yypushback(int number) {
1013 if ( number > yylength() )
1014 zzScanError(ZZ_PUSHBACK_2BIG);
1016 zzMarkedPos -= number;
1021 * Contains user EOF-code, which will be executed exactly once,
1022 * when the end of file is reached
1024 private void zzDoEOF() {
1025 if (!zzEOFDone) {
1026 zzEOFDone = true;
1033 * Resumes scanning until the next regular expression is matched,
1034 * the end of input is encountered or an I/O-Error occurs.
1036 * @return the next token
1037 * @exception java.io.IOException if any I/O-Error occurs
1039 public IElementType advance() throws java.io.IOException {
1040 int zzInput;
1041 int zzAction;
1043 // cached fields:
1044 int zzCurrentPosL;
1045 int zzMarkedPosL;
1046 int zzEndReadL = zzEndRead;
1047 CharSequence zzBufferL = zzBuffer;
1048 char[] zzBufferArrayL = zzBufferArray;
1049 char [] zzCMapL = ZZ_CMAP;
1051 int [] zzTransL = ZZ_TRANS;
1052 int [] zzRowMapL = ZZ_ROWMAP;
1053 int [] zzAttrL = ZZ_ATTRIBUTE;
1054 int zzPushbackPosL = zzPushbackPos = -1;
1055 boolean zzWasPushback;
1057 while (true) {
1058 zzMarkedPosL = zzMarkedPos;
1060 zzAction = -1;
1062 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
1064 zzState = zzLexicalState;
1066 zzWasPushback = false;
1068 zzForAction: {
1069 while (true) {
1071 if (zzCurrentPosL < zzEndReadL)
1072 zzInput = zzBufferL.charAt(zzCurrentPosL++);
1073 else if (zzAtEOF) {
1074 zzInput = YYEOF;
1075 break zzForAction;
1077 else {
1078 // store back cached positions
1079 zzCurrentPos = zzCurrentPosL;
1080 zzMarkedPos = zzMarkedPosL;
1081 zzPushbackPos = zzPushbackPosL;
1082 boolean eof = zzRefill();
1083 // get translated positions and possibly new buffer
1084 zzCurrentPosL = zzCurrentPos;
1085 zzMarkedPosL = zzMarkedPos;
1086 zzBufferL = zzBuffer;
1087 zzEndReadL = zzEndRead;
1088 zzPushbackPosL = zzPushbackPos;
1089 if (eof) {
1090 zzInput = YYEOF;
1091 break zzForAction;
1093 else {
1094 zzInput = zzBufferL.charAt(zzCurrentPosL++);
1097 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
1098 if (zzNext == -1) break zzForAction;
1099 zzState = zzNext;
1101 int zzAttributes = zzAttrL[zzState];
1102 if ( (zzAttributes & 2) == 2 )
1103 zzPushbackPosL = zzCurrentPosL;
1105 if ( (zzAttributes & 1) == 1 ) {
1106 zzWasPushback = (zzAttributes & 4) == 4;
1107 zzAction = zzState;
1108 zzMarkedPosL = zzCurrentPosL;
1109 if ( (zzAttributes & 8) == 8 ) break zzForAction;
1115 // store back cached position
1116 zzMarkedPos = zzMarkedPosL;
1117 if (zzWasPushback)
1118 zzMarkedPos = zzPushbackPosL;
1120 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
1121 case 6:
1122 { yybegin(WAIT_FOR_REGEX);
1123 return(mSTAR);
1125 case 170: break;
1126 case 76:
1127 { yybegin(WAIT_FOR_REGEX);
1128 return(mNOT_EQUAL);
1130 case 171: break;
1131 case 56:
1132 { blockStack.push(mLCURLY);
1133 braceCount.push(mLCURLY);
1134 yybegin(NLS_AFTER_LBRACE);
1135 return(mLCURLY);
1137 case 172: break;
1138 case 4:
1139 { return mWS;
1141 case 173: break;
1142 case 128:
1143 { return( kTRUE );
1145 case 174: break;
1146 case 127:
1147 { return( kNULL );
1149 case 175: break;
1150 case 25:
1151 { yybegin(WAIT_FOR_REGEX);
1152 return(mCOMMA);
1154 case 176: break;
1155 case 126:
1156 { return( kENUM );
1158 case 177: break;
1159 case 85:
1160 { yybegin(WAIT_FOR_REGEX);
1161 return(mDEC);
1163 case 178: break;
1164 case 88:
1165 { yybegin(WAIT_FOR_REGEX);
1166 return(mRANGE_INCLUSIVE);
1168 case 179: break;
1169 case 75:
1170 { return mSH_COMMENT;
1172 case 180: break;
1173 case 60:
1174 { return mWRONG_REGEX_LITERAL;
1176 case 181: break;
1177 case 121:
1178 { yybegin(WAIT_FOR_REGEX);
1179 return(mSR_ASSIGN);
1181 case 182: break;
1182 case 62:
1183 { yybegin(IN_REGEX_DOT);
1184 return mIDENT;
1186 case 183: break;
1187 case 58:
1188 { yypushback(1);
1189 if (blockStack.isEmpty()){
1190 yybegin(YYINITIAL);
1191 } else {
1192 yybegin(IN_INNER_BLOCK);
1195 case 184: break;
1196 case 8:
1197 { return mIDENT;
1199 case 185: break;
1200 case 27:
1201 { yybegin(WAIT_FOR_REGEX);
1202 return(mGT);
1204 case 186: break;
1205 case 142:
1206 { return( kSUPER );
1208 case 187: break;
1209 case 117:
1210 { yybegin(IN_TRIPLE_GSTRING);
1211 gStringStack.push(mLBRACK);
1212 return mGSTRING_BEGIN;
1214 case 188: break;
1215 case 71:
1216 { yybegin(WAIT_FOR_REGEX);
1217 return(mDIV_ASSIGN);
1219 case 189: break;
1220 case 167:
1221 { return( kINSTANCEOF );
1223 case 190: break;
1224 case 93:
1225 { yybegin(WAIT_FOR_REGEX);
1226 return(mEQUAL);
1228 case 191: break;
1229 case 20:
1230 { yybegin(WAIT_FOR_REGEX);
1231 braceCount.push(mLPAREN);
1232 return(mLPAREN);
1234 case 192: break;
1235 case 24:
1236 { yybegin(WAIT_FOR_REGEX);
1237 return(mCOLON);
1239 case 193: break;
1240 case 152:
1241 { return( kSTATIC );
1243 case 194: break;
1244 case 51:
1245 { if (blockStack.isEmpty()){
1246 yybegin(YYINITIAL);
1247 } else {
1248 yybegin(IN_INNER_BLOCK);
1250 return mREGEX_END;
1252 case 195: break;
1253 case 141:
1254 { return( kCATCH );
1256 case 196: break;
1257 case 31:
1258 { yybegin(WAIT_FOR_REGEX);
1259 return(mBOR);
1261 case 197: break;
1262 case 54:
1263 { return mREGEX_CONTENT;
1265 case 198: break;
1266 case 29:
1267 { yybegin(WAIT_FOR_REGEX);
1268 return(mMOD);
1270 case 199: break;
1271 case 26:
1272 { yybegin(WAIT_FOR_REGEX);
1273 return(mLT);
1275 case 200: break;
1276 case 166:
1277 { return( kPROTECTED );
1279 case 201: break;
1280 case 109:
1281 { return mNUM_BIG_DECIMAL;
1283 case 202: break;
1284 case 73:
1285 { yybegin(WAIT_FOR_REGEX);
1286 return(mSPREAD_DOT);
1288 case 203: break;
1289 case 146:
1290 { return( kDOUBLE );
1292 case 204: break;
1293 case 39:
1294 { yybegin(IN_TRIPLE_DOT);
1295 return mIDENT;
1297 case 205: break;
1298 case 37:
1299 { blockStack.push(mLPAREN);
1300 braceCount.push(mLCURLY);
1301 yybegin(NLS_AFTER_LBRACE);
1302 return mLCURLY;
1304 case 206: break;
1305 case 53:
1306 { yypushback(yytext().length());
1307 yybegin(KING_STATE_INNER_CONTENT);
1309 case 207: break;
1310 case 122:
1311 { if (!gStringStack.isEmpty()){
1312 gStringStack.pop();
1314 if (blockStack.isEmpty()){
1315 yybegin(YYINITIAL);
1316 } else {
1317 yybegin(IN_INNER_BLOCK);
1319 return mGSTRING_END;
1321 case 208: break;
1322 case 115:
1323 { return( kNEW );
1325 case 209: break;
1326 case 48:
1327 { yypushback(yytext().length());
1328 yybegin(KING_STATE_INNER);
1330 case 210: break;
1331 case 147:
1332 { return( kNATIVE );
1334 case 211: break;
1335 case 89:
1336 { yybegin(WAIT_FOR_REGEX);
1337 return(mMEMBER_POINTER);
1339 case 212: break;
1340 case 21:
1341 { if (!braceCount.isEmpty() && mLPAREN == braceCount.peek()) {
1342 braceCount.pop();
1344 return(mRPAREN);
1346 case 213: break;
1347 case 67:
1348 { yypushback(1);
1349 yybegin(WAIT_FOR_REGEX);
1351 case 214: break;
1352 case 110:
1353 { return( kFOR );
1355 case 215: break;
1356 case 133:
1357 { return( kCHAR );
1359 case 216: break;
1360 case 145:
1361 { return( kIMPORT );
1363 case 217: break;
1364 case 91:
1365 { yybegin(WAIT_FOR_REGEX);
1366 return(mOPTIONAL_DOT);
1368 case 218: break;
1369 case 101:
1370 { yybegin(WAIT_FOR_REGEX);
1371 return(mBAND_ASSIGN);
1373 case 219: break;
1374 case 156:
1375 { return( kEXTENDS );
1377 case 220: break;
1378 case 10:
1379 { yybegin(WAIT_FOR_REGEX);
1380 return(mPLUS);
1382 case 221: break;
1383 case 3:
1384 { yybegin(NLS_AFTER_NLS);
1385 afterComment = WAIT_FOR_REGEX;
1386 return !braceCount.isEmpty() &&
1387 mLPAREN == braceCount.peek() ? mWS : mNLS;
1389 case 222: break;
1390 case 94:
1391 { yybegin(WAIT_FOR_REGEX);
1392 return(mREGEX_FIND);
1394 case 223: break;
1395 case 28:
1396 { yybegin(WAIT_FOR_REGEX);
1397 return(mBNOT);
1399 case 224: break;
1400 case 99:
1401 { yybegin(WAIT_FOR_REGEX);
1402 return(mBOR_ASSIGN);
1404 case 225: break;
1405 case 154:
1406 { return( kFINALLY );
1408 case 226: break;
1409 case 100:
1410 { yybegin(WAIT_FOR_REGEX);
1411 return(mLOR);
1413 case 227: break;
1414 case 74:
1415 { yybegin(WAIT_FOR_REGEX);
1416 return(mSTAR_ASSIGN);
1418 case 228: break;
1419 case 134:
1420 { return( kVOID );
1422 case 229: break;
1423 case 150:
1424 { return( kPUBLIC );
1426 case 230: break;
1427 case 125:
1428 { return( kELSE );
1430 case 231: break;
1431 case 40:
1432 { blockStack.push(mLBRACK);
1433 braceCount.push(mLCURLY);
1434 yybegin(NLS_AFTER_LBRACE);
1435 return mLCURLY;
1437 case 232: break;
1438 case 15:
1439 { return mSTRING_LITERAL;
1441 case 233: break;
1442 case 86:
1443 { yybegin(WAIT_FOR_REGEX);
1444 return(mMINUS_ASSIGN);
1446 case 234: break;
1447 case 87:
1448 { yybegin(WAIT_FOR_REGEX);
1449 return(mCLOSABLE_BLOCK_OP);
1451 case 235: break;
1452 case 168:
1453 { return( kIMPLEMENTS );
1455 case 236: break;
1456 case 44:
1457 { if (!gStringStack.isEmpty()) {
1458 gStringStack.pop();
1460 if (blockStack.isEmpty()){
1461 yybegin(YYINITIAL);
1462 } else {
1463 yybegin(IN_INNER_BLOCK);
1465 return mGSTRING_END;
1467 case 237: break;
1468 case 97:
1469 { yybegin(WAIT_FOR_REGEX);
1470 return(mMOD_ASSIGN);
1472 case 238: break;
1473 case 18:
1474 { yybegin(WAIT_FOR_REGEX);
1475 return(mQUESTION);
1477 case 239: break;
1478 case 9:
1479 { return mNUM_INT;
1481 case 240: break;
1482 case 164:
1483 { return( kINTERFACE );
1485 case 241: break;
1486 case 33:
1487 { yybegin(WAIT_FOR_REGEX);
1488 return(mSEMI);
1490 case 242: break;
1491 case 159:
1492 { return( kPACKAGE );
1494 case 243: break;
1495 case 138:
1496 { return( kTHROW );
1498 case 244: break;
1499 case 19:
1500 { yybegin(WAIT_FOR_REGEX);
1501 return(mASSIGN);
1503 case 245: break;
1504 case 82:
1505 { return( kIN );
1507 case 246: break;
1508 case 69:
1509 { return mSL_COMMENT;
1511 case 247: break;
1512 case 14:
1513 { yybegin(IN_SINGLE_GSTRING);
1514 gStringStack.push(mLPAREN);
1515 return mGSTRING_BEGIN;
1517 case 248: break;
1518 case 130:
1519 { return( kBYTE );
1521 case 249: break;
1522 case 102:
1523 { yybegin(WAIT_FOR_REGEX);
1524 return(mLAND);
1526 case 250: break;
1527 case 123:
1528 { if (blockStack.isEmpty()){
1529 yybegin(YYINITIAL);
1530 } else {
1531 yybegin(IN_INNER_BLOCK);
1533 return(mREGEX_LITERAL);
1535 case 251: break;
1536 case 13:
1537 { yybegin(WAIT_FOR_REGEX);
1538 return(mDOLLAR);
1540 case 252: break;
1541 case 35:
1542 { yypushback(1);
1543 yybegin(IN_SINGLE_GSTRING);
1545 case 253: break;
1546 case 30:
1547 { yybegin(WAIT_FOR_REGEX);
1548 return(mBXOR);
1550 case 254: break;
1551 case 65:
1552 { yypushback(1);
1553 yybegin(IN_REGEX);
1555 case 255: break;
1556 case 66:
1557 { yypushback(1);
1558 yybegin(afterComment);
1560 case 256: break;
1561 case 5:
1562 { if (zzStartRead == 0 ||
1563 zzBuffer.subSequence(0, zzStartRead).toString().trim().length() == 0) {
1564 yypushback(1);
1565 yybegin(WAIT_FOR_REGEX);
1566 } else {
1567 return(mDIV);
1570 case 257: break;
1571 case 169:
1572 { return( kSYNCHRONIZED );
1574 case 258: break;
1575 case 120:
1576 { yybegin(WAIT_FOR_REGEX);
1577 return(mSL_ASSIGN);
1579 case 259: break;
1580 case 52:
1581 { yybegin(KING_STATE);
1582 return mREGEX_BEGIN;
1584 case 260: break;
1585 case 38:
1586 { yypushback(1);
1587 yybegin(IN_TRIPLE_GSTRING);
1589 case 261: break;
1590 case 116:
1591 { return( kTRY );
1593 case 262: break;
1594 case 11:
1595 { yybegin(WAIT_FOR_REGEX);
1596 return(mMINUS);
1598 case 263: break;
1599 case 12:
1600 { yybegin(WAIT_FOR_REGEX);
1601 return(mDOT);
1603 case 264: break;
1604 case 132:
1605 { return( kCASE );
1607 case 265: break;
1608 case 104:
1609 { yybegin(IN_SINGLE_IDENT);
1610 return mDOT;
1612 case 266: break;
1613 case 80:
1614 { return mNUM_DOUBLE;
1616 case 267: break;
1617 case 155:
1618 { return( kDEFAULT );
1620 case 268: break;
1621 case 118:
1622 { yybegin(WAIT_FOR_REGEX);
1623 return(mREGEX_MATCH);
1625 case 269: break;
1626 case 1:
1627 { gStringStack.clear();
1628 yybegin(YYINITIAL);
1629 return mWRONG_REGEX_LITERAL;
1631 case 270: break;
1632 case 165:
1633 { return( kTRANSIENT );
1635 case 271: break;
1636 case 55:
1637 { yybegin(KING_STATE_CONTENT);
1638 return mREGEX_CONTENT;
1640 case 272: break;
1641 case 83:
1642 { yybegin(WAIT_FOR_REGEX);
1643 return(mINC);
1645 case 273: break;
1646 case 107:
1647 { return GROOVY_DOC_COMMENT;
1649 case 274: break;
1650 case 61:
1651 { yybegin(NLS_AFTER_NLS);
1652 afterComment = YYINITIAL;
1653 clearStacks();
1654 return mNLS;
1656 case 275: break;
1657 case 153:
1658 { return( kSWITCH );
1660 case 276: break;
1661 case 17:
1662 { if (!braceCount.isEmpty() && mLCURLY == braceCount.peek()) {
1663 braceCount.pop();
1665 return(mRCURLY);
1667 case 277: break;
1668 case 90:
1669 { return mGSTRING_LITERAL;
1671 case 278: break;
1672 case 22:
1673 { yybegin(WAIT_FOR_REGEX);
1674 braceCount.push(mLPAREN);
1675 return(mLBRACK);
1677 case 279: break;
1678 case 46:
1679 { yypushback(1);
1680 yybegin(IN_TRIPLE_IDENT);
1682 case 280: break;
1683 case 135:
1684 { return( kFLOAT );
1686 case 281: break;
1687 case 131:
1688 { yybegin(WAIT_FOR_REGEX);
1689 return(mBSR_ASSIGN);
1691 case 282: break;
1692 case 81:
1693 { return( kIF );
1695 case 283: break;
1696 case 92:
1697 { yybegin(WAIT_FOR_REGEX);
1698 return(mELVIS);
1700 case 284: break;
1701 case 136:
1702 { return( kFINAL );
1704 case 285: break;
1705 case 36:
1706 { yybegin(IN_SINGLE_DOT);
1707 return mIDENT;
1709 case 286: break;
1710 case 96:
1711 { yybegin(WAIT_FOR_REGEX);
1712 return(mGE);
1714 case 287: break;
1715 case 149:
1716 { return( kTHROWS );
1718 case 288: break;
1719 case 78:
1720 { return mNUM_FLOAT;
1722 case 289: break;
1723 case 113:
1724 { yybegin(WAIT_FOR_REGEX);
1725 return(mTRIPLE_DOT);
1727 case 290: break;
1728 case 49:
1729 { yypushback(yytext().length());
1730 gStringStack.push(mDIV); // For regexes
1731 yybegin(IN_REGEX_DOLLAR);
1733 case 291: break;
1734 case 111:
1735 { return( kINT );
1737 case 292: break;
1738 case 162:
1739 { return( kSTRICTFP );
1741 case 293: break;
1742 case 68:
1743 { yypushback(1);
1744 yybegin(NLS_AFTER_COMMENT);
1746 case 294: break;
1747 case 160:
1748 { return( kABSTRACT );
1750 case 295: break;
1751 case 137:
1752 { return( kFALSE );
1754 case 296: break;
1755 case 103:
1756 { return( kAS );
1758 case 297: break;
1759 case 47:
1760 { yybegin(NLS_AFTER_NLS);
1761 afterComment = IN_TRIPLE_IDENT;
1762 return mNLS;
1764 case 298: break;
1765 case 114:
1766 { yybegin(WAIT_FOR_REGEX);
1767 return(mRANGE_EXCLUSIVE);
1769 case 299: break;
1770 case 161:
1771 { return( kCONTINUE );
1773 case 300: break;
1774 case 34:
1775 { yybegin(WAIT_FOR_REGEX);
1776 return(mAT);
1778 case 301: break;
1779 case 124:
1780 { return( kLONG );
1782 case 302: break;
1783 case 79:
1784 { return mNUM_LONG;
1786 case 303: break;
1787 case 139:
1788 { return( kBREAK );
1790 case 304: break;
1791 case 95:
1792 { yybegin(WAIT_FOR_REGEX);
1793 return(mLE);
1795 case 305: break;
1796 case 157:
1797 { return( kBOOLEAN );
1799 case 306: break;
1800 case 151:
1801 { return( kASSERT );
1803 case 307: break;
1804 case 106:
1805 { yybegin(IN_REGEX_IDENT);
1806 return mDOT;
1808 case 308: break;
1809 case 57:
1810 { if (!blockStack.isEmpty()) {
1811 IElementType br = blockStack.pop();
1812 if (br.equals(mLPAREN)) yybegin(IN_SINGLE_GSTRING);
1813 if (br.equals(mLBRACK)) yybegin(IN_TRIPLE_GSTRING);
1814 if (br.equals(mDIV)) yybegin(IN_REGEX);
1816 if (!braceCount.isEmpty() && mLCURLY == braceCount.peek()) {
1817 braceCount.pop();
1819 return mRCURLY;
1821 case 309: break;
1822 case 129:
1823 { return( kTHIS );
1825 case 310: break;
1826 case 158:
1827 { return( kPRIVATE );
1829 case 311: break;
1830 case 45:
1831 { yybegin(IN_TRIPLE_GSTRING_DOLLAR);
1832 return mDOLLAR;
1834 case 312: break;
1835 case 143:
1836 { return( kSHORT );
1838 case 313: break;
1839 case 23:
1840 { if (!braceCount.isEmpty() && mLPAREN == braceCount.peek()) {
1841 braceCount.pop();
1843 return(mRBRACK);
1845 case 314: break;
1846 case 16:
1847 { yybegin(NLS_AFTER_LBRACE);
1848 braceCount.push(mLCURLY);
1849 return(mLCURLY);
1851 case 315: break;
1852 case 163:
1853 { return( kVOLATILE );
1855 case 316: break;
1856 case 105:
1857 { yybegin(IN_TRIPLE_NLS);
1858 return mDOT;
1860 case 317: break;
1861 case 7:
1862 { yybegin(WAIT_FOR_REGEX);
1863 return(mLNOT);
1865 case 318: break;
1866 case 72:
1867 { yybegin(WAIT_FOR_REGEX);
1868 return(mSTAR_STAR);
1870 case 319: break;
1871 case 77:
1872 { return mNUM_BIG_INT;
1874 case 320: break;
1875 case 64:
1876 { if (!gStringStack.isEmpty()) {
1877 gStringStack.pop();
1879 if (blockStack.isEmpty()){
1880 yybegin(YYINITIAL);
1881 } else {
1882 yybegin(IN_INNER_BLOCK);
1884 return mREGEX_END;
1886 case 321: break;
1887 case 140:
1888 { return( kCLASS );
1890 case 322: break;
1891 case 84:
1892 { yybegin(WAIT_FOR_REGEX);
1893 return(mPLUS_ASSIGN);
1895 case 323: break;
1896 case 32:
1897 { yybegin(WAIT_FOR_REGEX);
1898 return(mBAND);
1900 case 324: break;
1901 case 119:
1902 { yybegin(WAIT_FOR_REGEX);
1903 return(mCOMPARE_TO);
1905 case 325: break;
1906 case 98:
1907 { yybegin(WAIT_FOR_REGEX);
1908 return(mBXOR_ASSIGN);
1910 case 326: break;
1911 case 59:
1912 { afterComment = YYINITIAL;
1913 return(mWS);
1915 case 327: break;
1916 case 148:
1917 { return( kRETURN );
1919 case 328: break;
1920 case 50:
1921 { return mREGEX_BEGIN;
1923 case 329: break;
1924 case 41:
1925 { return mGSTRING_CONTENT;
1927 case 330: break;
1928 case 108:
1929 { yybegin(WAIT_FOR_REGEX);
1930 return(mSTAR_STAR_ASSIGN);
1932 case 331: break;
1933 case 112:
1934 { return( kDEF );
1936 case 332: break;
1937 case 43:
1938 { yybegin(IN_SINGLE_GSTRING_DOLLAR);
1939 return mDOLLAR;
1941 case 333: break;
1942 case 42:
1943 { clearStacks();
1944 yybegin(NLS_AFTER_NLS);
1945 afterComment = YYINITIAL;
1946 return mNLS;
1948 case 334: break;
1949 case 63:
1950 { blockStack.push(mDIV);
1951 braceCount.push(mLCURLY);
1952 yybegin(NLS_AFTER_LBRACE);
1953 return mLCURLY;
1955 case 335: break;
1956 case 144:
1957 { return( kWHILE );
1959 case 336: break;
1960 case 2:
1961 { return mWRONG;
1963 case 337: break;
1964 case 70:
1965 { return mML_COMMENT;
1967 case 338: break;
1968 default:
1969 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
1970 zzAtEOF = true;
1971 zzDoEOF();
1972 return null;
1974 else {
1975 zzScanError(ZZ_NO_MATCH);