source: other-projects/rsyntax-textarea/src/java/org/fife/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.java@ 25584

Last change on this file since 25584 was 25584, checked in by davidb, 12 years ago

Initial cut an a text edit area for GLI that supports color syntax highlighting

File size: 52.6 KB
Line 
1/* The following code was generated by JFlex 1.4.1 on 3/1/12 7:38 PM */
2
3/*
4 * 02/05/2012
5 *
6 * JavaScriptTokenMaker.java - Parses a document into JavaScript tokens.
7 *
8 * This library is distributed under a modified BSD license. See the included
9 * RSyntaxTextArea.License.txt file for details.
10 */
11package org.fife.ui.rsyntaxtextarea.modes;
12
13import java.io.*;
14import javax.swing.text.Segment;
15
16import org.fife.ui.rsyntaxtextarea.*;
17
18
19/**
20 * Scanner for JavaScript files. Its states could be simplified, but are
21 * kept the way they are to keep a degree of similarity (i.e. copy/paste)
22 * between it and HTML/JSP/PHPTokenMaker. This should cause no difference in
23 * performance.<p>
24 *
25 * This implementation was created using
26 * <a href="http://www.jflex.de/">JFlex</a> 1.4.1; however, the generated file
27 * was modified for performance. Memory allocation needs to be almost
28 * completely removed to be competitive with the handwritten lexers (subclasses
29 * of <code>AbstractTokenMaker</code>, so this class has been modified so that
30 * Strings are never allocated (via yytext()), and the scanner never has to
31 * worry about refilling its buffer (needlessly copying chars around).
32 * We can achieve this because RText always scans exactly 1 line of tokens at a
33 * time, and hands the scanner this line as an array of characters (a Segment
34 * really). Since tokens contain pointers to char arrays instead of Strings
35 * holding their contents, there is no need for allocating new memory for
36 * Strings.<p>
37 *
38 * The actual algorithm generated for scanning has, of course, not been
39 * modified.<p>
40 *
41 * If you wish to regenerate this file yourself, keep in mind the following:
42 * <ul>
43 * <li>The generated JavaScriptTokenMaker.java</code> file will contain two
44 * definitions of both <code>zzRefill</code> and <code>yyreset</code>.
45 * You should hand-delete the second of each definition (the ones
46 * generated by the lexer), as these generated methods modify the input
47 * buffer, which we'll never have to do.</li>
48 * <li>You should also change the declaration/definition of zzBuffer to NOT
49 * be initialized. This is a needless memory allocation for us since we
50 * will be pointing the array somewhere else anyway.</li>
51 * <li>You should NOT call <code>yylex()</code> on the generated scanner
52 * directly; rather, you should use <code>getTokenList</code> as you would
53 * with any other <code>TokenMaker</code> instance.</li>
54 * </ul>
55 *
56 * @author Robert Futrell
57 * @version 0.8
58 *
59 */
60
61public class JavaScriptTokenMaker extends AbstractJFlexCTokenMaker {
62
63 /** This character denotes the end of file */
64 public static final int YYEOF = -1;
65
66 /** lexical states */
67 public static final int JS_STRING = 1;
68 public static final int JS_CHAR = 2;
69 public static final int JS_EOL_COMMENT = 4;
70 public static final int YYINITIAL = 0;
71 public static final int JS_MLC = 3;
72
73 /**
74 * Translates characters to character classes
75 */
76 private static final String ZZ_CMAP_PACKED =
77 "\11\0\1\1\1\2\1\0\1\1\1\11\22\0\1\1\1\34\1\74"+
78 "\1\12\1\3\1\34\1\36\1\42\2\41\1\16\1\27\1\26\1\23"+
79 "\1\24\1\15\1\5\7\7\2\4\1\37\1\26\1\30\1\31\1\33"+
80 "\1\35\1\12\3\6\1\21\1\22\1\73\2\3\1\72\2\3\1\20"+
81 "\1\3\1\71\11\3\1\17\2\3\1\41\1\13\1\41\1\32\1\14"+
82 "\1\0\1\56\1\54\1\60\1\63\1\52\1\47\1\66\1\43\1\50"+
83 "\1\3\1\57\1\51\1\40\1\62\1\61\1\45\1\3\1\55\1\46"+
84 "\1\44\1\10\1\65\1\53\1\67\1\64\1\70\1\25\1\32\1\25"+
85 "\1\35\uff81\0";
86
87 /**
88 * Translates characters to character classes
89 */
90 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
91
92 /**
93 * Translates DFA states to action switch labels.
94 */
95 private static final int [] ZZ_ACTION = zzUnpackAction();
96
97 private static final String ZZ_ACTION_PACKED_0 =
98 "\5\0\1\1\1\2\1\3\1\4\2\5\1\4\1\1"+
99 "\3\6\1\4\1\7\1\4\5\6\1\10\22\4\1\11"+
100 "\1\12\1\13\1\14\1\15\1\12\1\16\1\17\1\20"+
101 "\1\12\1\21\5\12\1\22\1\1\1\23\1\5\1\24"+
102 "\1\23\1\24\1\23\1\25\1\23\1\4\2\0\1\26"+
103 "\1\27\1\6\1\0\1\6\22\4\2\30\25\4\1\30"+
104 "\4\4\1\31\1\32\1\33\1\34\4\0\1\1\1\24"+
105 "\1\0\2\25\1\4\1\35\1\0\26\4\1\36\35\4"+
106 "\6\0\1\1\1\37\1\4\1\40\21\4\1\36\1\4"+
107 "\1\41\16\4\1\0\1\12\2\0\1\42\1\1\1\30"+
108 "\10\4\1\30\15\4\2\0\1\1\14\4\1\43\17\4";
109
110 private static int [] zzUnpackAction() {
111 int [] result = new int[295];
112 int offset = 0;
113 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
114 return result;
115 }
116
117 private static int zzUnpackAction(String packed, int offset, int [] result) {
118 int i = 0; /* index in packed string */
119 int j = offset; /* index in unpacked array */
120 int l = packed.length();
121 while (i < l) {
122 int count = packed.charAt(i++);
123 int value = packed.charAt(i++);
124 do result[j++] = value; while (--count > 0);
125 }
126 return j;
127 }
128
129
130 /**
131 * Translates a state to a row index in the transition table
132 */
133 private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
134
135 private static final String ZZ_ROWMAP_PACKED_0 =
136 "\0\0\0\75\0\172\0\267\0\364\0\u0131\0\u016e\0\u01ab"+
137 "\0\u01e8\0\u0225\0\u0262\0\u029f\0\u01ab\0\u02dc\0\u0319\0\u0356"+
138 "\0\u0393\0\u01ab\0\u01ab\0\u03d0\0\u040d\0\u044a\0\u01ab\0\u0487"+
139 "\0\u01ab\0\u04c4\0\u0501\0\u053e\0\u057b\0\u05b8\0\u05f5\0\u0632"+
140 "\0\u066f\0\u06ac\0\u06e9\0\u0726\0\u0763\0\u07a0\0\u07dd\0\u081a"+
141 "\0\u0857\0\u0894\0\u08d1\0\u01ab\0\u090e\0\u01ab\0\u094b\0\u01ab"+
142 "\0\u0988\0\u01ab\0\u094b\0\u01ab\0\u09c5\0\u01ab\0\u0a02\0\u0a3f"+
143 "\0\u0a7c\0\u0ab9\0\u0af6\0\u01ab\0\u0b33\0\u0b70\0\u0b70\0\u0b70"+
144 "\0\u0bad\0\u0bea\0\u0c27\0\u0c64\0\u0ca1\0\u0cde\0\u0d1b\0\u0d58"+
145 "\0\u01ab\0\u0d95\0\u0d1b\0\u0319\0\u0dd2\0\u0e0f\0\u0e4c\0\u0e89"+
146 "\0\u0ec6\0\u0f03\0\u0f40\0\u0f7d\0\u0fba\0\u0ff7\0\u1034\0\u1071"+
147 "\0\u10ae\0\u10eb\0\u1128\0\u1165\0\u11a2\0\u11df\0\u121c\0\u01e8"+
148 "\0\u1259\0\u1296\0\u12d3\0\u1310\0\u134d\0\u138a\0\u13c7\0\u1404"+
149 "\0\u1441\0\u147e\0\u14bb\0\u14f8\0\u1535\0\u1572\0\u15af\0\u15ec"+
150 "\0\u1629\0\u1666\0\u16a3\0\u16e0\0\u171d\0\u175a\0\u1797\0\u17d4"+
151 "\0\u1811\0\u184e\0\u188b\0\u01ab\0\u18c8\0\u1905\0\u01ab\0\u1942"+
152 "\0\u197f\0\u19bc\0\u19f9\0\u1a36\0\u1a73\0\u1ab0\0\u0b70\0\u1aed"+
153 "\0\u1b2a\0\u1b67\0\u1ba4\0\u1be1\0\u1c1e\0\u1c5b\0\u1c98\0\u1cd5"+
154 "\0\u1d12\0\u1d4f\0\u1d8c\0\u1dc9\0\u1e06\0\u1e43\0\u1e80\0\u1ebd"+
155 "\0\u1efa\0\u1f37\0\u1f74\0\u1fb1\0\u1fee\0\u202b\0\u2068\0\u20a5"+
156 "\0\u20e2\0\u211f\0\u215c\0\u2199\0\u21d6\0\u2213\0\u2250\0\u228d"+
157 "\0\u22ca\0\u2307\0\u2344\0\u2381\0\u23be\0\u23fb\0\u2438\0\u2475"+
158 "\0\u24b2\0\u24ef\0\u252c\0\u2569\0\u25a6\0\u25e3\0\u2620\0\u265d"+
159 "\0\u269a\0\u26d7\0\u2714\0\u2751\0\u278e\0\u27cb\0\u2808\0\u2845"+
160 "\0\u2882\0\u28bf\0\u28fc\0\u2939\0\u2976\0\u29b3\0\u01ab\0\u29f0"+
161 "\0\u01e8\0\u2a2d\0\u2a6a\0\u2aa7\0\u2ae4\0\u2b21\0\u2b5e\0\u2b9b"+
162 "\0\u2bd8\0\u2c15\0\u2c52\0\u2c8f\0\u2ccc\0\u2d09\0\u2d46\0\u2d83"+
163 "\0\u2dc0\0\u2dfd\0\u01e8\0\u2e3a\0\u01e8\0\u2e77\0\u2eb4\0\u2ef1"+
164 "\0\u2f2e\0\u2f6b\0\u2fa8\0\u2fe5\0\u3022\0\u305f\0\u309c\0\u30d9"+
165 "\0\u3116\0\u3153\0\u3190\0\u1905\0\u01ab\0\u31cd\0\u320a\0\u3247"+
166 "\0\u3284\0\u1be1\0\u32c1\0\u32fe\0\u333b\0\u3378\0\u33b5\0\u33f2"+
167 "\0\u342f\0\u346c\0\u34a9\0\u34e6\0\u3523\0\u3560\0\u359d\0\u35da"+
168 "\0\u3617\0\u3654\0\u3691\0\u36ce\0\u370b\0\u3748\0\u3785\0\u37c2"+
169 "\0\u37ff\0\u3247\0\u383c\0\u3879\0\u38b6\0\u38f3\0\u3930\0\u396d"+
170 "\0\u39aa\0\u39e7\0\u3a24\0\u3a61\0\u3a9e\0\u3adb\0\u3b18\0\u01e8"+
171 "\0\u3b55\0\u3b92\0\u3bcf\0\u3c0c\0\u3c49\0\u3c86\0\u3cc3\0\u3d00"+
172 "\0\u3d3d\0\u3d7a\0\u3db7\0\u3df4\0\u3e31\0\u3e6e\0\u3eab";
173
174 private static int [] zzUnpackRowMap() {
175 int [] result = new int[295];
176 int offset = 0;
177 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
178 return result;
179 }
180
181 private static int zzUnpackRowMap(String packed, int offset, int [] result) {
182 int i = 0; /* index in packed string */
183 int j = offset; /* index in unpacked array */
184 int l = packed.length();
185 while (i < l) {
186 int high = packed.charAt(i++) << 16;
187 result[j++] = high | packed.charAt(i++);
188 }
189 return j;
190 }
191
192 /**
193 * The transition table of the DFA
194 */
195 private static final int [] ZZ_TRANS = zzUnpackTrans();
196
197 private static final String ZZ_TRANS_PACKED_0 =
198 "\1\6\1\7\1\10\1\11\1\12\1\13\1\11\1\12"+
199 "\1\14\1\15\2\6\1\11\1\16\1\17\4\11\1\20"+
200 "\1\21\1\22\1\23\1\24\1\25\2\17\1\26\1\17"+
201 "\1\27\1\30\1\27\1\11\1\22\1\31\1\11\1\32"+
202 "\1\33\1\34\1\35\1\36\1\37\1\40\1\41\1\42"+
203 "\1\43\1\44\1\11\1\45\1\11\1\46\1\47\1\11"+
204 "\1\50\1\51\2\11\1\52\1\53\1\11\1\54\2\55"+
205 "\1\56\10\55\1\57\60\55\1\60\2\61\1\62\10\61"+
206 "\1\63\26\61\1\64\32\61\2\65\1\66\13\65\1\67"+
207 "\24\65\1\70\3\65\1\71\3\65\1\72\21\65\2\73"+
208 "\1\74\40\73\1\70\3\73\1\71\3\73\1\72\21\73"+
209 "\1\6\2\0\6\6\1\0\3\6\2\0\4\6\15\0"+
210 "\1\6\2\0\31\6\2\0\1\7\170\0\1\6\2\0"+
211 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
212 "\1\11\2\0\31\11\1\0\1\76\2\0\1\76\2\12"+
213 "\1\76\1\12\1\76\1\0\3\76\2\0\1\76\1\77"+
214 "\1\100\1\101\1\0\1\102\13\0\1\76\2\0\4\76"+
215 "\1\100\1\76\1\77\1\101\10\76\1\100\7\76\1\100"+
216 "\1\0\1\76\2\0\1\76\1\103\1\104\1\76\1\104"+
217 "\1\76\1\0\3\76\2\0\1\105\1\77\1\100\1\101"+
218 "\1\0\1\102\13\0\1\76\2\0\4\76\1\100\1\76"+
219 "\1\77\1\101\10\76\1\100\3\76\1\105\3\76\1\100"+
220 "\1\0\1\6\2\0\6\11\1\0\1\6\1\75\1\11"+
221 "\2\0\4\11\15\0\1\11\2\0\17\11\1\106\11\11"+
222 "\1\0\13\107\1\110\1\107\1\111\1\112\12\107\1\113"+
223 "\43\107\31\0\1\27\66\0\1\27\5\0\1\27\47\0"+
224 "\2\102\1\0\1\102\114\0\1\27\1\0\1\27\73\0"+
225 "\1\114\1\27\74\0\1\27\1\0\1\115\72\0\1\27"+
226 "\4\0\1\27\36\0\1\6\2\0\6\11\1\0\1\6"+
227 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\1\116"+
228 "\11\11\1\117\6\11\1\120\7\11\1\0\1\6\2\0"+
229 "\5\11\1\121\1\0\1\6\1\75\1\11\2\0\4\11"+
230 "\15\0\1\11\2\0\12\11\1\122\1\123\15\11\1\0"+
231 "\1\6\2\0\5\11\1\124\1\0\1\6\1\75\1\11"+
232 "\2\0\4\11\15\0\1\11\2\0\1\125\1\126\6\11"+
233 "\1\127\10\11\1\130\7\11\1\0\1\6\2\0\5\11"+
234 "\1\131\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
235 "\1\11\2\0\5\11\1\132\1\133\4\11\1\134\2\11"+
236 "\1\135\12\11\1\0\1\6\2\0\6\11\1\0\1\6"+
237 "\1\75\1\11\2\0\4\11\15\0\1\136\2\0\3\11"+
238 "\1\137\1\140\12\11\1\141\11\11\1\0\1\6\2\0"+
239 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
240 "\1\11\2\0\16\11\1\142\12\11\1\0\1\6\2\0"+
241 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
242 "\1\11\2\0\3\11\1\143\2\11\1\144\10\11\1\145"+
243 "\2\11\1\146\1\11\1\147\4\11\1\0\1\6\2\0"+
244 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
245 "\1\11\2\0\1\150\4\11\1\151\23\11\1\0\1\6"+
246 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
247 "\15\0\1\11\2\0\12\11\1\152\3\11\1\153\2\11"+
248 "\1\154\7\11\1\0\1\6\2\0\6\11\1\0\1\6"+
249 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\7\11"+
250 "\1\155\21\11\1\0\1\6\2\0\6\11\1\0\1\6"+
251 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\11\11"+
252 "\1\156\17\11\1\0\1\6\2\0\6\11\1\0\1\6"+
253 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\1\157"+
254 "\5\11\1\160\4\11\1\161\2\11\1\162\12\11\1\0"+
255 "\1\6\2\0\5\11\1\163\1\0\1\6\1\75\1\11"+
256 "\2\0\4\11\15\0\1\11\2\0\7\11\1\164\3\11"+
257 "\1\165\15\11\1\0\1\6\2\0\6\11\1\0\1\6"+
258 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\7\11"+
259 "\1\166\6\11\1\167\12\11\1\0\1\6\2\0\6\11"+
260 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
261 "\2\0\13\11\1\135\2\11\1\170\12\11\1\0\1\6"+
262 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
263 "\15\0\1\11\2\0\16\11\1\171\12\11\1\0\1\6"+
264 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
265 "\15\0\1\11\2\0\13\11\1\172\15\11\1\0\1\6"+
266 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
267 "\15\0\1\11\2\0\17\11\1\173\11\11\1\0\2\55"+
268 "\1\0\10\55\1\0\60\55\1\0\2\174\1\0\5\174"+
269 "\1\175\56\174\1\176\5\174\2\61\1\0\10\61\1\0"+
270 "\26\61\1\0\32\61\2\65\1\0\13\65\1\0\24\65"+
271 "\1\0\3\65\1\0\3\65\1\0\21\65\15\0\1\177"+
272 "\123\0\1\200\74\0\1\201\3\0\1\202\77\0\1\203"+
273 "\21\0\2\73\1\0\40\73\1\0\3\73\1\0\3\73"+
274 "\1\0\21\73\1\6\2\0\5\6\1\204\1\0\3\6"+
275 "\2\0\4\6\15\0\1\6\2\0\31\6\1\0\1\76"+
276 "\2\0\6\76\1\0\3\76\2\0\4\76\15\0\1\76"+
277 "\2\0\31\76\1\0\1\76\2\0\1\76\2\205\1\76"+
278 "\1\205\1\76\1\0\3\76\2\0\4\76\1\206\3\0"+
279 "\1\206\10\0\1\76\2\0\31\76\1\0\1\76\2\0"+
280 "\1\76\2\102\1\76\1\102\1\76\1\0\3\76\2\0"+
281 "\2\76\1\100\1\101\15\0\1\76\2\0\4\76\1\100"+
282 "\2\76\1\101\10\76\1\100\7\76\1\100\1\0\1\76"+
283 "\2\0\1\76\2\103\1\76\1\103\1\76\1\0\3\76"+
284 "\2\0\2\76\1\100\1\101\1\0\1\102\13\0\1\76"+
285 "\2\0\4\76\1\100\2\76\1\101\10\76\1\100\7\76"+
286 "\1\100\1\0\1\76\2\0\1\76\1\103\1\104\1\76"+
287 "\1\104\1\76\1\0\3\76\2\0\1\76\1\207\1\100"+
288 "\1\101\1\0\1\102\13\0\1\76\2\0\4\76\1\100"+
289 "\1\76\1\207\1\101\10\76\1\100\7\76\1\100\1\0"+
290 "\1\76\2\0\1\76\4\210\1\76\1\0\3\76\2\0"+
291 "\2\76\2\210\15\0\1\76\2\0\4\76\1\210\2\76"+
292 "\1\210\1\76\1\210\1\76\1\210\1\76\1\210\2\76"+
293 "\1\210\7\76\1\210\1\0\1\6\2\0\6\11\1\0"+
294 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
295 "\7\11\1\211\21\11\1\0\13\107\1\110\1\107\1\212"+
296 "\61\107\1\0\72\107\16\0\1\213\107\0\1\27\1\0"+
297 "\1\17\41\0\1\6\2\0\6\11\1\0\1\6\1\75"+
298 "\1\11\2\0\4\11\15\0\1\11\2\0\5\11\1\214"+
299 "\4\11\1\215\16\11\1\0\1\6\2\0\5\11\1\216"+
300 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
301 "\2\0\13\11\1\217\5\11\1\140\7\11\1\0\1\6"+
302 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
303 "\15\0\1\11\2\0\2\11\1\220\26\11\1\0\1\6"+
304 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
305 "\15\0\1\11\2\0\11\11\1\221\17\11\1\0\1\6"+
306 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
307 "\15\0\1\11\2\0\5\11\1\222\10\11\1\223\12\11"+
308 "\1\0\1\6\2\0\6\11\1\0\1\6\1\75\1\11"+
309 "\2\0\4\11\15\0\1\11\2\0\12\11\1\224\2\11"+
310 "\1\225\13\11\1\0\1\6\2\0\6\11\1\0\1\6"+
311 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\2\11"+
312 "\1\226\26\11\1\0\1\6\2\0\6\11\1\0\1\6"+
313 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\16\11"+
314 "\1\227\12\11\1\0\1\6\2\0\6\11\1\0\1\6"+
315 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\13\11"+
316 "\1\230\15\11\1\0\1\6\2\0\6\11\1\0\1\6"+
317 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\5\11"+
318 "\1\231\23\11\1\0\1\6\2\0\6\11\1\0\1\6"+
319 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\17\11"+
320 "\1\232\11\11\1\0\1\6\2\0\6\11\1\0\1\6"+
321 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\17\11"+
322 "\1\233\11\11\1\0\1\6\2\0\6\11\1\0\1\6"+
323 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\17\11"+
324 "\1\234\11\11\1\0\1\6\2\0\6\11\1\0\1\6"+
325 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\16\11"+
326 "\1\235\12\11\1\0\1\6\2\0\6\11\1\0\1\6"+
327 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\6\11"+
328 "\1\236\22\11\1\0\1\6\2\0\6\11\1\0\1\6"+
329 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\12\11"+
330 "\1\140\16\11\1\0\1\6\2\0\6\11\1\0\1\6"+
331 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\2\11"+
332 "\1\237\26\11\1\0\1\6\2\0\6\11\1\0\1\6"+
333 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\26\11"+
334 "\1\240\1\11\1\241\1\0\1\6\2\0\6\11\1\0"+
335 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
336 "\1\11\1\242\1\11\1\243\25\11\1\0\1\6\2\0"+
337 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
338 "\1\11\2\0\17\11\1\244\11\11\1\0\1\6\2\0"+
339 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
340 "\1\11\2\0\15\11\1\245\13\11\1\0\1\6\2\0"+
341 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
342 "\1\11\2\0\3\11\1\246\25\11\1\0\1\6\2\0"+
343 "\5\11\1\247\1\0\1\6\1\75\1\11\2\0\4\11"+
344 "\15\0\1\11\2\0\31\11\1\0\1\6\2\0\6\11"+
345 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
346 "\2\0\13\11\1\250\15\11\1\0\1\6\2\0\6\11"+
347 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
348 "\2\0\1\11\1\251\1\252\26\11\1\0\1\6\2\0"+
349 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
350 "\1\11\2\0\5\11\1\253\23\11\1\0\1\6\2\0"+
351 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
352 "\1\11\2\0\1\11\1\254\27\11\1\0\1\6\2\0"+
353 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
354 "\1\11\2\0\7\11\1\255\21\11\1\0\1\6\2\0"+
355 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
356 "\1\11\2\0\16\11\1\256\12\11\1\0\1\6\2\0"+
357 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
358 "\1\11\2\0\1\11\1\257\27\11\1\0\1\6\2\0"+
359 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
360 "\1\11\2\0\1\11\1\260\27\11\1\0\1\6\2\0"+
361 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
362 "\1\11\2\0\3\11\1\261\25\11\1\0\1\6\2\0"+
363 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
364 "\1\11\2\0\13\11\1\262\15\11\1\0\1\6\2\0"+
365 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
366 "\1\11\2\0\13\11\1\263\15\11\1\0\1\6\2\0"+
367 "\6\11\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
368 "\1\11\2\0\1\11\1\264\1\11\1\246\25\11\1\0"+
369 "\1\6\2\0\6\11\1\0\1\6\1\75\1\11\2\0"+
370 "\4\11\15\0\1\11\2\0\17\11\1\265\11\11\1\0"+
371 "\1\6\2\0\6\11\1\0\1\6\1\75\1\11\2\0"+
372 "\4\11\15\0\1\11\2\0\6\11\1\266\22\11\1\0"+
373 "\1\6\2\0\6\11\1\0\1\6\1\75\1\11\2\0"+
374 "\4\11\15\0\1\11\2\0\10\11\1\140\20\11\1\0"+
375 "\1\6\2\0\6\11\1\0\1\6\1\75\1\11\2\0"+
376 "\4\11\15\0\1\11\2\0\1\11\1\267\27\11\1\0"+
377 "\1\6\2\0\6\11\1\0\1\6\1\75\1\11\2\0"+
378 "\4\11\15\0\1\11\2\0\4\11\1\270\1\11\1\271"+
379 "\2\11\1\272\17\11\1\0\1\6\2\0\5\11\1\273"+
380 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
381 "\2\0\31\11\1\0\1\6\2\0\6\11\1\0\1\6"+
382 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\5\11"+
383 "\1\274\1\275\22\11\1\0\1\6\2\0\6\11\1\0"+
384 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
385 "\1\11\1\276\27\11\1\0\1\6\2\0\6\11\1\0"+
386 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
387 "\26\11\1\140\2\11\1\0\1\6\2\0\6\11\1\0"+
388 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
389 "\4\11\1\277\24\11\5\0\4\300\11\0\2\300\24\0"+
390 "\1\300\2\0\1\300\1\0\1\300\1\0\1\300\1\0"+
391 "\1\300\2\0\1\300\7\0\1\300\5\0\4\301\11\0"+
392 "\2\301\24\0\1\301\2\0\1\301\1\0\1\301\1\0"+
393 "\1\301\1\0\1\301\2\0\1\301\7\0\1\301\45\0"+
394 "\1\302\75\0\1\303\100\0\1\304\76\0\1\305\21\0"+
395 "\1\6\2\0\1\6\4\306\1\6\1\0\3\6\2\0"+
396 "\2\6\2\306\15\0\1\6\2\0\4\6\1\306\2\6"+
397 "\1\306\1\6\1\306\1\6\1\306\1\6\1\306\2\6"+
398 "\1\306\7\6\1\306\1\0\1\76\2\0\1\76\2\205"+
399 "\1\76\1\205\1\76\1\0\3\76\2\0\2\76\1\100"+
400 "\1\76\15\0\1\76\2\0\4\76\1\100\13\76\1\100"+
401 "\7\76\1\100\5\0\2\205\1\0\1\205\65\0\1\76"+
402 "\2\0\1\76\4\210\1\76\1\0\3\76\2\0\1\76"+
403 "\1\207\2\210\15\0\1\76\2\0\4\76\1\210\1\76"+
404 "\1\207\1\210\1\76\1\210\1\76\1\210\1\76\1\210"+
405 "\2\76\1\210\7\76\1\210\1\0\1\6\2\0\6\11"+
406 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
407 "\2\0\3\11\1\143\25\11\41\0\1\212\7\0\1\212"+
408 "\15\0\1\212\23\0\1\307\57\0\1\6\2\0\6\11"+
409 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
410 "\2\0\3\11\1\140\25\11\1\0\1\6\2\0\6\11"+
411 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
412 "\2\0\16\11\1\310\12\11\1\0\1\6\2\0\6\11"+
413 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
414 "\2\0\7\11\1\311\21\11\1\0\1\6\2\0\6\11"+
415 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
416 "\2\0\17\11\1\312\11\11\1\0\1\6\2\0\6\11"+
417 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
418 "\2\0\7\11\1\313\21\11\1\0\1\6\2\0\6\11"+
419 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
420 "\2\0\6\11\1\314\22\11\1\0\1\6\2\0\6\11"+
421 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
422 "\2\0\22\11\1\315\6\11\1\0\1\6\2\0\6\11"+
423 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
424 "\2\0\1\11\1\316\27\11\1\0\1\6\2\0\6\11"+
425 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
426 "\2\0\3\11\1\317\25\11\1\0\1\6\2\0\6\11"+
427 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
428 "\2\0\14\11\1\320\14\11\1\0\1\6\2\0\6\11"+
429 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
430 "\2\0\7\11\1\135\21\11\1\0\1\6\2\0\6\11"+
431 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
432 "\2\0\12\11\1\321\16\11\1\0\1\6\2\0\6\11"+
433 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
434 "\2\0\1\11\1\314\27\11\1\0\1\6\2\0\6\11"+
435 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
436 "\2\0\1\11\1\264\27\11\1\0\1\6\2\0\6\11"+
437 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
438 "\2\0\15\11\1\322\13\11\1\0\1\6\2\0\6\11"+
439 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
440 "\2\0\15\11\1\323\13\11\1\0\1\6\2\0\6\11"+
441 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
442 "\2\0\13\11\1\324\15\11\1\0\1\6\2\0\6\11"+
443 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
444 "\2\0\13\11\1\321\15\11\1\0\1\6\2\0\6\11"+
445 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
446 "\2\0\3\11\1\216\25\11\1\0\1\6\2\0\6\11"+
447 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
448 "\2\0\6\11\1\325\7\11\1\326\12\11\1\0\1\6"+
449 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
450 "\15\0\1\11\2\0\13\11\1\327\15\11\1\0\1\6"+
451 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
452 "\15\0\1\11\2\0\5\11\1\330\23\11\1\0\1\6"+
453 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
454 "\15\0\1\11\2\0\7\11\1\331\21\11\1\0\1\6"+
455 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
456 "\15\0\1\11\2\0\1\11\1\332\27\11\1\0\1\6"+
457 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
458 "\15\0\1\11\2\0\23\11\1\333\5\11\1\0\1\6"+
459 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
460 "\15\0\1\11\2\0\13\11\1\334\15\11\1\0\1\6"+
461 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
462 "\15\0\1\11\2\0\7\11\1\140\21\11\1\0\1\6"+
463 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
464 "\15\0\1\140\2\0\31\11\1\0\1\6\2\0\6\11"+
465 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
466 "\2\0\6\11\1\335\22\11\1\0\1\6\2\0\6\11"+
467 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
468 "\2\0\7\11\1\336\21\11\1\0\1\6\2\0\6\11"+
469 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
470 "\2\0\16\11\1\326\12\11\1\0\1\6\2\0\6\11"+
471 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
472 "\2\0\6\11\1\246\22\11\1\0\1\6\2\0\6\11"+
473 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
474 "\2\0\1\140\30\11\1\0\1\6\2\0\6\11\1\0"+
475 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
476 "\13\11\1\337\15\11\1\0\1\6\2\0\6\11\1\0"+
477 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
478 "\6\11\1\340\22\11\1\0\1\6\2\0\6\11\1\0"+
479 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
480 "\7\11\1\333\21\11\1\0\1\6\2\0\5\11\1\341"+
481 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
482 "\2\0\31\11\1\0\1\6\2\0\6\11\1\0\1\6"+
483 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\1\11"+
484 "\1\342\27\11\1\0\1\6\2\0\6\11\1\0\1\6"+
485 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\12\11"+
486 "\1\333\16\11\1\0\1\6\2\0\6\11\1\0\1\6"+
487 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\3\11"+
488 "\1\214\25\11\1\0\1\6\2\0\6\11\1\0\1\6"+
489 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\15\11"+
490 "\1\254\13\11\1\0\1\6\2\0\6\11\1\0\1\6"+
491 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\1\11"+
492 "\1\343\1\11\1\344\25\11\1\0\1\6\2\0\6\11"+
493 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
494 "\2\0\6\11\1\140\22\11\1\0\1\6\2\0\6\11"+
495 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
496 "\2\0\5\11\1\345\23\11\1\0\1\6\2\0\6\11"+
497 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
498 "\2\0\13\11\1\346\15\11\1\0\1\6\2\0\6\11"+
499 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
500 "\2\0\7\11\1\347\21\11\1\0\1\6\2\0\5\11"+
501 "\1\350\1\0\1\6\1\75\1\11\2\0\4\11\15\0"+
502 "\1\11\2\0\31\11\1\0\1\6\2\0\6\11\1\0"+
503 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
504 "\11\11\1\351\17\11\1\0\1\6\2\0\6\11\1\0"+
505 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
506 "\20\11\1\140\10\11\1\0\1\6\2\0\6\11\1\0"+
507 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
508 "\13\11\1\352\15\11\1\0\1\6\2\0\6\11\1\0"+
509 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
510 "\16\11\1\140\12\11\1\0\1\6\2\0\6\11\1\0"+
511 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
512 "\5\11\1\353\23\11\5\0\4\354\11\0\2\354\24\0"+
513 "\1\354\2\0\1\354\1\0\1\354\1\0\1\354\1\0"+
514 "\1\354\2\0\1\354\7\0\1\354\5\0\4\355\11\0"+
515 "\2\355\24\0\1\355\2\0\1\355\1\0\1\355\1\0"+
516 "\1\355\1\0\1\355\2\0\1\355\7\0\1\355\46\0"+
517 "\1\356\66\0\1\357\107\0\1\303\46\0\1\360\50\0"+
518 "\1\6\2\0\1\6\4\361\1\6\1\0\3\6\2\0"+
519 "\2\6\2\361\15\0\1\6\2\0\4\6\1\361\2\6"+
520 "\1\361\1\6\1\361\1\6\1\361\1\6\1\361\2\6"+
521 "\1\361\7\6\1\361\1\0\1\6\2\0\6\11\1\0"+
522 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
523 "\10\11\1\362\20\11\1\0\1\6\2\0\6\11\1\0"+
524 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
525 "\3\11\1\363\25\11\1\0\1\6\2\0\6\11\1\0"+
526 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
527 "\16\11\1\364\12\11\1\0\1\6\2\0\6\11\1\0"+
528 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
529 "\5\11\1\365\23\11\1\0\1\6\2\0\6\11\1\0"+
530 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
531 "\13\11\1\347\15\11\1\0\1\6\2\0\6\11\1\0"+
532 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
533 "\7\11\1\366\21\11\1\0\1\6\2\0\6\11\1\0"+
534 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
535 "\7\11\1\367\21\11\1\0\1\6\2\0\6\11\1\0"+
536 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
537 "\13\11\1\370\15\11\1\0\1\6\2\0\6\11\1\0"+
538 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
539 "\1\11\1\333\27\11\1\0\1\6\2\0\6\11\1\0"+
540 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
541 "\1\371\30\11\1\0\1\6\2\0\6\11\1\0\1\6"+
542 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\1\11"+
543 "\1\372\27\11\1\0\1\6\2\0\6\11\1\0\1\6"+
544 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\6\11"+
545 "\1\373\22\11\1\0\1\6\2\0\6\11\1\0\1\6"+
546 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\7\11"+
547 "\1\374\21\11\1\0\1\6\2\0\6\11\1\0\1\6"+
548 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\12\11"+
549 "\1\344\16\11\1\0\1\6\2\0\6\11\1\0\1\6"+
550 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\26\11"+
551 "\1\335\2\11\1\0\1\6\2\0\6\11\1\0\1\6"+
552 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\17\11"+
553 "\1\375\11\11\1\0\1\6\2\0\6\11\1\0\1\6"+
554 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\12\11"+
555 "\1\376\16\11\1\0\1\6\2\0\6\11\1\0\1\6"+
556 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\13\11"+
557 "\1\377\15\11\1\0\1\6\2\0\6\11\1\0\1\6"+
558 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\2\11"+
559 "\1\u0100\26\11\1\0\1\6\2\0\6\11\1\0\1\6"+
560 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\17\11"+
561 "\1\u0101\11\11\1\0\1\6\2\0\6\11\1\0\1\6"+
562 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\14\11"+
563 "\1\140\14\11\1\0\1\6\2\0\6\11\1\0\1\6"+
564 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\7\11"+
565 "\1\u0102\21\11\1\0\1\6\2\0\6\11\1\0\1\6"+
566 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\12\11"+
567 "\1\u0103\16\11\1\0\1\6\2\0\6\11\1\0\1\6"+
568 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\12\11"+
569 "\1\u0104\16\11\1\0\1\6\2\0\6\11\1\0\1\6"+
570 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\5\11"+
571 "\1\u0105\23\11\1\0\1\6\2\0\6\11\1\0\1\6"+
572 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\1\11"+
573 "\1\140\27\11\1\0\1\6\2\0\6\11\1\0\1\6"+
574 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\22\11"+
575 "\1\246\6\11\1\0\1\6\2\0\5\11\1\u0106\1\0"+
576 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
577 "\31\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
578 "\1\11\2\0\4\11\15\0\1\11\2\0\1\11\1\246"+
579 "\27\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
580 "\1\11\2\0\4\11\15\0\1\11\2\0\23\11\1\u0107"+
581 "\5\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
582 "\1\11\2\0\4\11\15\0\1\11\2\0\6\11\1\257"+
583 "\22\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
584 "\1\11\2\0\4\11\15\0\1\11\2\0\1\11\1\150"+
585 "\27\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
586 "\1\11\2\0\4\11\15\0\1\11\2\0\17\11\1\u0108"+
587 "\11\11\40\0\1\357\6\0\1\303\43\0\1\u0109\62\0"+
588 "\6\360\1\0\1\u010a\1\0\1\u010a\1\360\1\u010a\4\360"+
589 "\2\u010a\1\0\2\u010a\1\0\1\u010a\2\0\4\u010a\1\360"+
590 "\2\u010a\31\360\1\0\1\6\2\0\1\6\4\u010b\1\6"+
591 "\1\0\3\6\2\0\2\6\2\u010b\15\0\1\6\2\0"+
592 "\4\6\1\u010b\2\6\1\u010b\1\6\1\u010b\1\6\1\u010b"+
593 "\1\6\1\u010b\2\6\1\u010b\7\6\1\u010b\1\0\1\6"+
594 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
595 "\15\0\1\11\2\0\5\11\1\u010c\23\11\1\0\1\6"+
596 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
597 "\15\0\1\11\2\0\4\11\1\140\24\11\1\0\1\6"+
598 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
599 "\15\0\1\11\2\0\15\11\1\140\13\11\1\0\1\6"+
600 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
601 "\15\0\1\11\2\0\15\11\1\u010d\13\11\1\0\1\6"+
602 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
603 "\15\0\1\11\2\0\27\11\1\u010e\1\u010f\1\0\1\6"+
604 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
605 "\15\0\1\11\2\0\23\11\1\246\5\11\1\0\1\6"+
606 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
607 "\15\0\1\11\2\0\12\11\1\u0110\16\11\1\0\1\6"+
608 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
609 "\15\0\1\11\2\0\5\11\1\u0111\23\11\1\0\1\6"+
610 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
611 "\15\0\1\11\2\0\6\11\1\u0112\22\11\1\0\1\6"+
612 "\2\0\6\11\1\0\1\6\1\75\1\11\2\0\4\11"+
613 "\15\0\1\u0113\2\0\31\11\1\0\1\6\2\0\6\11"+
614 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
615 "\2\0\5\11\1\u0114\23\11\1\0\1\6\2\0\6\11"+
616 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
617 "\2\0\4\11\1\u0115\24\11\1\0\1\6\2\0\6\11"+
618 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
619 "\2\0\17\11\1\u0116\11\11\1\0\1\6\2\0\6\11"+
620 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
621 "\2\0\7\11\1\335\21\11\1\0\1\6\2\0\6\11"+
622 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
623 "\2\0\20\11\1\214\10\11\1\0\1\6\2\0\6\11"+
624 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
625 "\2\0\13\11\1\u0117\15\11\1\0\1\6\2\0\6\11"+
626 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
627 "\2\0\17\11\1\u0118\11\11\1\0\1\6\2\0\6\11"+
628 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
629 "\2\0\13\11\1\u0119\15\11\1\0\1\6\2\0\6\11"+
630 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
631 "\2\0\17\11\1\u011a\11\11\1\0\1\6\2\0\6\11"+
632 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
633 "\2\0\6\11\1\344\22\11\1\0\1\6\2\0\6\11"+
634 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
635 "\2\0\23\11\1\226\5\11\1\0\1\6\2\0\6\11"+
636 "\1\0\1\6\1\75\1\11\2\0\4\11\15\0\1\11"+
637 "\2\0\5\11\1\u011b\23\11\16\0\1\360\57\0\1\6"+
638 "\2\0\1\6\4\11\1\6\1\0\3\6\2\0\2\6"+
639 "\2\11\15\0\1\6\2\0\4\6\1\11\2\6\1\11"+
640 "\1\6\1\11\1\6\1\11\1\6\1\11\2\6\1\11"+
641 "\7\6\1\11\1\0\1\6\2\0\6\11\1\0\1\6"+
642 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\7\11"+
643 "\1\u011c\21\11\1\0\1\6\2\0\6\11\1\0\1\6"+
644 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\1\11"+
645 "\1\u011d\27\11\1\0\1\6\2\0\6\11\1\0\1\6"+
646 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\17\11"+
647 "\1\u011e\11\11\1\0\1\6\2\0\6\11\1\0\1\6"+
648 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\6\11"+
649 "\1\u011f\22\11\1\0\1\6\2\0\6\11\1\0\1\6"+
650 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\16\11"+
651 "\1\u0120\12\11\1\0\1\6\2\0\6\11\1\0\1\6"+
652 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\16\11"+
653 "\1\u0121\12\11\1\0\1\6\2\0\6\11\1\0\1\6"+
654 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\21\11"+
655 "\1\140\7\11\1\0\1\6\2\0\6\11\1\0\1\6"+
656 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\7\11"+
657 "\1\u0122\21\11\1\0\1\6\2\0\6\11\1\0\1\6"+
658 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\1\11"+
659 "\1\u0100\27\11\1\0\1\6\2\0\6\11\1\0\1\6"+
660 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\13\11"+
661 "\1\u0123\15\11\1\0\1\6\2\0\6\11\1\0\1\6"+
662 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\15\11"+
663 "\1\220\13\11\1\0\1\6\2\0\6\11\1\0\1\6"+
664 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\17\11"+
665 "\1\333\11\11\1\0\1\6\2\0\6\11\1\0\1\6"+
666 "\1\75\1\11\2\0\4\11\15\0\1\11\2\0\15\11"+
667 "\1\344\13\11\1\0\1\6\2\0\5\11\1\246\1\0"+
668 "\1\6\1\75\1\11\2\0\4\11\15\0\1\11\2\0"+
669 "\31\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
670 "\1\11\2\0\4\11\15\0\1\11\2\0\1\11\1\u0112"+
671 "\27\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
672 "\1\11\2\0\4\11\15\0\1\11\2\0\17\11\1\344"+
673 "\11\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
674 "\1\11\2\0\4\11\15\0\1\11\2\0\7\11\1\274"+
675 "\21\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
676 "\1\11\2\0\4\11\15\0\1\11\2\0\1\11\1\335"+
677 "\27\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
678 "\1\11\2\0\4\11\15\0\1\11\2\0\16\11\1\u0124"+
679 "\12\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
680 "\1\11\2\0\4\11\15\0\1\11\2\0\17\11\1\u0125"+
681 "\11\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
682 "\1\11\2\0\4\11\15\0\1\11\2\0\17\11\1\140"+
683 "\11\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
684 "\1\11\2\0\4\11\15\0\1\11\2\0\17\11\1\u0126"+
685 "\11\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
686 "\1\11\2\0\4\11\15\0\1\11\2\0\15\11\1\246"+
687 "\13\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
688 "\1\11\2\0\4\11\15\0\1\11\2\0\13\11\1\u011e"+
689 "\15\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
690 "\1\11\2\0\4\11\15\0\1\11\2\0\5\11\1\u0127"+
691 "\23\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
692 "\1\11\2\0\4\11\15\0\1\11\2\0\1\11\1\214"+
693 "\27\11\1\0\1\6\2\0\6\11\1\0\1\6\1\75"+
694 "\1\11\2\0\4\11\15\0\1\11\2\0\25\11\1\u011d"+
695 "\3\11\1\0";
696
697 private static int [] zzUnpackTrans() {
698 int [] result = new int[16104];
699 int offset = 0;
700 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
701 return result;
702 }
703
704 private static int zzUnpackTrans(String packed, int offset, int [] result) {
705 int i = 0; /* index in packed string */
706 int j = offset; /* index in unpacked array */
707 int l = packed.length();
708 while (i < l) {
709 int count = packed.charAt(i++);
710 int value = packed.charAt(i++);
711 value--;
712 do result[j++] = value; while (--count > 0);
713 }
714 return j;
715 }
716
717
718 /* error codes */
719 private static final int ZZ_UNKNOWN_ERROR = 0;
720 private static final int ZZ_NO_MATCH = 1;
721 private static final int ZZ_PUSHBACK_2BIG = 2;
722
723 /* error messages for the codes above */
724 private static final String ZZ_ERROR_MSG[] = {
725 "Unkown internal scanner error",
726 "Error: could not match input",
727 "Error: pushback value was too large"
728 };
729
730 /**
731 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
732 */
733 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
734
735 private static final String ZZ_ATTRIBUTE_PACKED_0 =
736 "\5\0\2\1\1\11\4\1\1\11\4\1\2\11\3\1"+
737 "\1\11\1\1\1\11\22\1\1\11\1\1\1\11\1\1"+
738 "\1\11\1\1\1\11\1\1\1\11\1\1\1\11\5\1"+
739 "\1\11\12\1\2\0\1\11\2\1\1\0\57\1\1\11"+
740 "\2\1\1\11\4\0\2\1\1\0\4\1\1\0\64\1"+
741 "\6\0\1\1\1\11\44\1\1\0\1\11\2\0\31\1"+
742 "\2\0\35\1";
743
744 private static int [] zzUnpackAttribute() {
745 int [] result = new int[295];
746 int offset = 0;
747 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
748 return result;
749 }
750
751 private static int zzUnpackAttribute(String packed, int offset, int [] result) {
752 int i = 0; /* index in packed string */
753 int j = offset; /* index in unpacked array */
754 int l = packed.length();
755 while (i < l) {
756 int count = packed.charAt(i++);
757 int value = packed.charAt(i++);
758 do result[j++] = value; while (--count > 0);
759 }
760 return j;
761 }
762
763 /** the input device */
764 private java.io.Reader zzReader;
765
766 /** the current state of the DFA */
767 private int zzState;
768
769 /** the current lexical state */
770 private int zzLexicalState = YYINITIAL;
771
772 /** this buffer contains the current text to be matched and is
773 the source of the yytext() string */
774 private char zzBuffer[];
775
776 /** the textposition at the last accepting state */
777 private int zzMarkedPos;
778
779 /** the current text position in the buffer */
780 private int zzCurrentPos;
781
782 /** startRead marks the beginning of the yytext() string in the buffer */
783 private int zzStartRead;
784
785 /** endRead marks the last character in the buffer, that has been read
786 from input */
787 private int zzEndRead;
788
789 /** zzAtEOF == true <=> the scanner is at the EOF */
790 private boolean zzAtEOF;
791
792 /* user code: */
793
794 /**
795 * Token type specifying we're in a JavaScript multiline comment.
796 */
797 public static final int INTERNAL_IN_JS_MLC = -8;
798
799 /**
800 * Token type specifying we're in an invalid multi-line JS string.
801 */
802 public static final int INTERNAL_IN_JS_STRING_INVALID = -9;
803
804 /**
805 * Token type specifying we're in a valid multi-line JS string.
806 */
807 public static final int INTERNAL_IN_JS_STRING_VALID = -10;
808
809 /**
810 * Token type specifying we're in an invalid multi-line JS single-quoted string.
811 */
812 public static final int INTERNAL_IN_JS_CHAR_INVALID = -11;
813
814 /**
815 * Token type specifying we're in a valid multi-line JS single-quoted string.
816 */
817 public static final int INTERNAL_IN_JS_CHAR_VALID = -12;
818
819 /**
820 * When in the JS_STRING state, whether the current string is valid.
821 */
822 private boolean validJSString;
823
824
825 /**
826 * Constructor. This must be here because JFlex does not generate a
827 * no-parameter constructor.
828 */
829 public JavaScriptTokenMaker() {
830 super();
831 }
832
833
834 /**
835 * Adds the token specified to the current linked list of tokens as an
836 * "end token;" that is, at <code>zzMarkedPos</code>.
837 *
838 * @param tokenType The token's type.
839 */
840 private void addEndToken(int tokenType) {
841 addToken(zzMarkedPos,zzMarkedPos, tokenType);
842 }
843
844
845 /**
846 * Adds the token specified to the current linked list of tokens.
847 *
848 * @param tokenType The token's type.
849 * @see #addToken(int, int, int)
850 */
851 private void addHyperlinkToken(int start, int end, int tokenType) {
852 int so = start + offsetShift;
853 addToken(zzBuffer, start,end, tokenType, so, true);
854 }
855
856
857 /**
858 * Adds the token specified to the current linked list of tokens.
859 *
860 * @param tokenType The token's type.
861 */
862 private void addToken(int tokenType) {
863 addToken(zzStartRead, zzMarkedPos-1, tokenType);
864 }
865
866
867 /**
868 * Adds the token specified to the current linked list of tokens.
869 *
870 * @param tokenType The token's type.
871 */
872 private void addToken(int start, int end, int tokenType) {
873 int so = start + offsetShift;
874 addToken(zzBuffer, start,end, tokenType, so);
875 }
876
877
878 /**
879 * Adds the token specified to the current linked list of tokens.
880 *
881 * @param array The character array.
882 * @param start The starting offset in the array.
883 * @param end The ending offset in the array.
884 * @param tokenType The token's type.
885 * @param startOffset The offset in the document at which this token
886 * occurs.
887 */
888 public void addToken(char[] array, int start, int end, int tokenType, int startOffset) {
889 super.addToken(array, start,end, tokenType, startOffset);
890 zzStartRead = zzMarkedPos;
891 }
892
893
894 /**
895 * {@inheritDoc}
896 */
897 public String[] getLineCommentStartAndEnd() {
898 return new String[] { "//", null };
899 }
900
901
902 /**
903 * Returns the first token in the linked list of tokens generated
904 * from <code>text</code>. This method must be implemented by
905 * subclasses so they can correctly implement syntax highlighting.
906 *
907 * @param text The text from which to get tokens.
908 * @param initialTokenType The token type we should start with.
909 * @param startOffset The offset into the document at which
910 * <code>text</code> starts.
911 * @return The first <code>Token</code> in a linked list representing
912 * the syntax highlighted text.
913 */
914 public Token getTokenList(Segment text, int initialTokenType, int startOffset) {
915
916 resetTokenList();
917 this.offsetShift = -text.offset + startOffset;
918
919 // Start off in the proper state.
920 int state = Token.NULL;
921 switch (initialTokenType) {
922 case INTERNAL_IN_JS_MLC:
923 state = JS_MLC;
924 start = text.offset;
925 break;
926 case INTERNAL_IN_JS_STRING_INVALID:
927 state = JS_STRING;
928 validJSString = false;
929 start = text.offset;
930 break;
931 case INTERNAL_IN_JS_STRING_VALID:
932 state = JS_STRING;
933 validJSString = true;
934 start = text.offset;
935 break;
936 case INTERNAL_IN_JS_CHAR_INVALID:
937 state = JS_CHAR;
938 validJSString = false;
939 start = text.offset;
940 break;
941 case INTERNAL_IN_JS_CHAR_VALID:
942 state = JS_CHAR;
943 validJSString = true;
944 start = text.offset;
945 break;
946 default:
947 state = Token.NULL;
948 }
949
950 s = text;
951 try {
952 yyreset(zzReader);
953 yybegin(state);
954 return yylex();
955 } catch (IOException ioe) {
956 ioe.printStackTrace();
957 return new DefaultToken();
958 }
959
960 }
961
962
963 /**
964 * Refills the input buffer.
965 *
966 * @return <code>true</code> if EOF was reached, otherwise
967 * <code>false</code>.
968 */
969 private boolean zzRefill() {
970 return zzCurrentPos>=s.offset+s.count;
971 }
972
973
974 /**
975 * Resets the scanner to read from a new input stream.
976 * Does not close the old reader.
977 *
978 * All internal variables are reset, the old input stream
979 * <b>cannot</b> be reused (internal buffer is discarded and lost).
980 * Lexical state is set to <tt>YY_INITIAL</tt>.
981 *
982 * @param reader the new input stream
983 */
984 public final void yyreset(java.io.Reader reader) {
985 // 's' has been updated.
986 zzBuffer = s.array;
987 /*
988 * We replaced the line below with the two below it because zzRefill
989 * no longer "refills" the buffer (since the way we do it, it's always
990 * "full" the first time through, since it points to the segment's
991 * array). So, we assign zzEndRead here.
992 */
993 //zzStartRead = zzEndRead = s.offset;
994 zzStartRead = s.offset;
995 zzEndRead = zzStartRead + s.count - 1;
996 zzCurrentPos = zzMarkedPos = s.offset;
997 zzLexicalState = YYINITIAL;
998 zzReader = reader;
999 zzAtEOF = false;
1000 }
1001
1002
1003
1004
1005 /**
1006 * Creates a new scanner
1007 * There is also a java.io.InputStream version of this constructor.
1008 *
1009 * @param in the java.io.Reader to read input from.
1010 */
1011 public JavaScriptTokenMaker(java.io.Reader in) {
1012 this.zzReader = in;
1013 }
1014
1015 /**
1016 * Creates a new scanner.
1017 * There is also java.io.Reader version of this constructor.
1018 *
1019 * @param in the java.io.Inputstream to read input from.
1020 */
1021 public JavaScriptTokenMaker(java.io.InputStream in) {
1022 this(new java.io.InputStreamReader(in));
1023 }
1024
1025 /**
1026 * Unpacks the compressed character translation table.
1027 *
1028 * @param packed the packed character translation table
1029 * @return the unpacked character translation table
1030 */
1031 private static char [] zzUnpackCMap(String packed) {
1032 char [] map = new char[0x10000];
1033 int i = 0; /* index in packed string */
1034 int j = 0; /* index in unpacked array */
1035 while (i < 164) {
1036 int count = packed.charAt(i++);
1037 char value = packed.charAt(i++);
1038 do map[j++] = value; while (--count > 0);
1039 }
1040 return map;
1041 }
1042
1043
1044 /**
1045 * Closes the input stream.
1046 */
1047 public final void yyclose() throws java.io.IOException {
1048 zzAtEOF = true; /* indicate end of file */
1049 zzEndRead = zzStartRead; /* invalidate buffer */
1050
1051 if (zzReader != null)
1052 zzReader.close();
1053 }
1054
1055
1056 /**
1057 * Returns the current lexical state.
1058 */
1059 public final int yystate() {
1060 return zzLexicalState;
1061 }
1062
1063
1064 /**
1065 * Enters a new lexical state
1066 *
1067 * @param newState the new lexical state
1068 */
1069 public final void yybegin(int newState) {
1070 zzLexicalState = newState;
1071 }
1072
1073
1074 /**
1075 * Returns the text matched by the current regular expression.
1076 */
1077 public final String yytext() {
1078 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
1079 }
1080
1081
1082 /**
1083 * Returns the character at position <tt>pos</tt> from the
1084 * matched text.
1085 *
1086 * It is equivalent to yytext().charAt(pos), but faster
1087 *
1088 * @param pos the position of the character to fetch.
1089 * A value from 0 to yylength()-1.
1090 *
1091 * @return the character at position pos
1092 */
1093 public final char yycharat(int pos) {
1094 return zzBuffer[zzStartRead+pos];
1095 }
1096
1097
1098 /**
1099 * Returns the length of the matched text region.
1100 */
1101 public final int yylength() {
1102 return zzMarkedPos-zzStartRead;
1103 }
1104
1105
1106 /**
1107 * Reports an error that occured while scanning.
1108 *
1109 * In a wellformed scanner (no or only correct usage of
1110 * yypushback(int) and a match-all fallback rule) this method
1111 * will only be called with things that "Can't Possibly Happen".
1112 * If this method is called, something is seriously wrong
1113 * (e.g. a JFlex bug producing a faulty scanner etc.).
1114 *
1115 * Usual syntax/scanner level error handling should be done
1116 * in error fallback rules.
1117 *
1118 * @param errorCode the code of the errormessage to display
1119 */
1120 private void zzScanError(int errorCode) {
1121 String message;
1122 try {
1123 message = ZZ_ERROR_MSG[errorCode];
1124 }
1125 catch (ArrayIndexOutOfBoundsException e) {
1126 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
1127 }
1128
1129 throw new Error(message);
1130 }
1131
1132
1133 /**
1134 * Pushes the specified amount of characters back into the input stream.
1135 *
1136 * They will be read again by then next call of the scanning method
1137 *
1138 * @param number the number of characters to be read again.
1139 * This number must not be greater than yylength()!
1140 */
1141 public void yypushback(int number) {
1142 if ( number > yylength() )
1143 zzScanError(ZZ_PUSHBACK_2BIG);
1144
1145 zzMarkedPos -= number;
1146 }
1147
1148
1149 /**
1150 * Resumes scanning until the next regular expression is matched,
1151 * the end of input is encountered or an I/O-Error occurs.
1152 *
1153 * @return the next token
1154 * @exception java.io.IOException if any I/O-Error occurs
1155 */
1156 public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException {
1157 int zzInput;
1158 int zzAction;
1159
1160 // cached fields:
1161 int zzCurrentPosL;
1162 int zzMarkedPosL;
1163 int zzEndReadL = zzEndRead;
1164 char [] zzBufferL = zzBuffer;
1165 char [] zzCMapL = ZZ_CMAP;
1166
1167 int [] zzTransL = ZZ_TRANS;
1168 int [] zzRowMapL = ZZ_ROWMAP;
1169 int [] zzAttrL = ZZ_ATTRIBUTE;
1170
1171 while (true) {
1172 zzMarkedPosL = zzMarkedPos;
1173
1174 zzAction = -1;
1175
1176 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
1177
1178 zzState = zzLexicalState;
1179
1180
1181 zzForAction: {
1182 while (true) {
1183
1184 if (zzCurrentPosL < zzEndReadL)
1185 zzInput = zzBufferL[zzCurrentPosL++];
1186 else if (zzAtEOF) {
1187 zzInput = YYEOF;
1188 break zzForAction;
1189 }
1190 else {
1191 // store back cached positions
1192 zzCurrentPos = zzCurrentPosL;
1193 zzMarkedPos = zzMarkedPosL;
1194 boolean eof = zzRefill();
1195 // get translated positions and possibly new buffer
1196 zzCurrentPosL = zzCurrentPos;
1197 zzMarkedPosL = zzMarkedPos;
1198 zzBufferL = zzBuffer;
1199 zzEndReadL = zzEndRead;
1200 if (eof) {
1201 zzInput = YYEOF;
1202 break zzForAction;
1203 }
1204 else {
1205 zzInput = zzBufferL[zzCurrentPosL++];
1206 }
1207 }
1208 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
1209 if (zzNext == -1) break zzForAction;
1210 zzState = zzNext;
1211
1212 int zzAttributes = zzAttrL[zzState];
1213 if ( (zzAttributes & 1) == 1 ) {
1214 zzAction = zzState;
1215 zzMarkedPosL = zzCurrentPosL;
1216 if ( (zzAttributes & 8) == 8 ) break zzForAction;
1217 }
1218
1219 }
1220 }
1221
1222 // store back cached position
1223 zzMarkedPos = zzMarkedPosL;
1224
1225 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
1226 case 27:
1227 { /* Invalid latin-1 character \xXX */ validJSString = false;
1228 }
1229 case 36: break;
1230 case 3:
1231 { addNullToken(); return firstToken;
1232 }
1233 case 37: break;
1234 case 8:
1235 { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR);
1236 }
1237 case 38: break;
1238 case 28:
1239 { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE);
1240 }
1241 case 39: break;
1242 case 14:
1243 { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addNullToken(); return firstToken;
1244 }
1245 case 40: break;
1246 case 23:
1247 { start = zzMarkedPos-2; yybegin(JS_MLC);
1248 }
1249 case 41: break;
1250 case 31:
1251 { addToken(Token.COMMENT_MULTILINE);
1252 }
1253 case 42: break;
1254 case 26:
1255 { /* Invalid Unicode character \\uXXXX */ validJSString = false;
1256 }
1257 case 43: break;
1258 case 2:
1259 { addToken(Token.WHITESPACE);
1260 }
1261 case 44: break;
1262 case 21:
1263 { addToken(Token.LITERAL_NUMBER_HEXADECIMAL);
1264 }
1265 case 45: break;
1266 case 12:
1267 { /* Line ending in '\' => continue to next line. */
1268 if (validJSString) {
1269 addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE);
1270 addEndToken(INTERNAL_IN_JS_STRING_VALID);
1271 }
1272 else {
1273 addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE);
1274 addEndToken(INTERNAL_IN_JS_STRING_INVALID);
1275 }
1276 return firstToken;
1277 }
1278 case 46: break;
1279 case 9:
1280 { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING);
1281 }
1282 case 47: break;
1283 case 20:
1284 { addToken(Token.LITERAL_NUMBER_FLOAT);
1285 }
1286 case 48: break;
1287 case 24:
1288 { addToken(Token.RESERVED_WORD);
1289 }
1290 case 49: break;
1291 case 7:
1292 { addToken(Token.SEPARATOR);
1293 }
1294 case 50: break;
1295 case 4:
1296 { addToken(Token.IDENTIFIER);
1297 }
1298 case 51: break;
1299 case 18:
1300 { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken;
1301 }
1302 case 52: break;
1303 case 16:
1304 { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(YYINITIAL);
1305 }
1306 case 53: break;
1307 case 33:
1308 { addToken(Token.FUNCTION);
1309 }
1310 case 54: break;
1311 case 30:
1312 { addToken(Token.DATA_TYPE);
1313 }
1314 case 55: break;
1315 case 1:
1316 { addToken(Token.ERROR_IDENTIFIER);
1317 }
1318 case 56: break;
1319 case 13:
1320 { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(YYINITIAL);
1321 }
1322 case 57: break;
1323 case 32:
1324 { addToken(Token.LITERAL_BOOLEAN);
1325 }
1326 case 58: break;
1327 case 15:
1328 { /* Line ending in '\' => continue to next line. */
1329 if (validJSString) {
1330 addToken(start,zzStartRead, Token.LITERAL_CHAR);
1331 addEndToken(INTERNAL_IN_JS_CHAR_VALID);
1332 }
1333 else {
1334 addToken(start,zzStartRead, Token.ERROR_CHAR);
1335 addEndToken(INTERNAL_IN_JS_CHAR_INVALID);
1336 }
1337 return firstToken;
1338 }
1339 case 59: break;
1340 case 25:
1341 { /* Skip all escaped chars. */
1342 }
1343 case 60: break;
1344 case 29:
1345 { boolean highlightedAsRegex = false;
1346 if (firstToken==null) {
1347 addToken(Token.REGEX);
1348 highlightedAsRegex = true;
1349 }
1350 else {
1351 // If this is *likely* to be a regex, based on
1352 // the previous token, highlight it as such.
1353 Token t = firstToken.getLastNonCommentNonWhitespaceToken();
1354 if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) {
1355 addToken(Token.REGEX);
1356 highlightedAsRegex = true;
1357 }
1358 }
1359 // If it doesn't *appear* to be a regex, highlight it as
1360 // individual tokens.
1361 if (!highlightedAsRegex) {
1362 int temp = zzStartRead + 1;
1363 addToken(zzStartRead, zzStartRead, Token.OPERATOR);
1364 zzStartRead = zzCurrentPos = zzMarkedPos = temp;
1365 }
1366 }
1367 case 61: break;
1368 case 34:
1369 { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos;
1370 }
1371 case 62: break;
1372 case 35:
1373 { addToken(Token.RESERVED_WORD_2);
1374 }
1375 case 63: break;
1376 case 19:
1377 { addToken(Token.ERROR_NUMBER_FORMAT);
1378 }
1379 case 64: break;
1380 case 5:
1381 { addToken(Token.LITERAL_NUMBER_DECIMAL_INT);
1382 }
1383 case 65: break;
1384 case 6:
1385 { addToken(Token.OPERATOR);
1386 }
1387 case 66: break;
1388 case 22:
1389 { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT);
1390 }
1391 case 67: break;
1392 case 17:
1393 { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken;
1394 }
1395 case 68: break;
1396 case 10:
1397 {
1398 }
1399 case 69: break;
1400 case 11:
1401 { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken;
1402 }
1403 case 70: break;
1404 default:
1405 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
1406 zzAtEOF = true;
1407 switch (zzLexicalState) {
1408 case JS_STRING: {
1409 addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken;
1410 }
1411 case 296: break;
1412 case JS_CHAR: {
1413 addToken(start,zzStartRead-1, Token.ERROR_CHAR); addNullToken(); return firstToken;
1414 }
1415 case 297: break;
1416 case JS_EOL_COMMENT: {
1417 addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken;
1418 }
1419 case 298: break;
1420 case YYINITIAL: {
1421 addNullToken(); return firstToken;
1422 }
1423 case 299: break;
1424 case JS_MLC: {
1425 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken;
1426 }
1427 case 300: break;
1428 default:
1429 return null;
1430 }
1431 }
1432 else {
1433 zzScanError(ZZ_NO_MATCH);
1434 }
1435 }
1436 }
1437 }
1438
1439
1440}
Note: See TracBrowser for help on using the repository browser.