* Bug 14567 fixed [Scinotes]: Restore the TODO feature
[scilab.git] / scilab / modules / scinotes / src / java / org / scilab / modules / scinotes / ScilabLexer.java
1 // DO NOT EDIT\r
2 // Generated by JFlex 1.8.2 http://jflex.de/\r
3 // source: jflex/scilab.jflex\r
4 \r
5 //CHECKSTYLE:OFF
6
7 package org.scilab.modules.scinotes;
8
9 import java.io.IOException;
10 import java.util.ArrayList;
11 import java.util.Arrays;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Set;
15 import javax.swing.text.BadLocationException;
16 import javax.swing.text.Element;
17 import org.scilab.modules.commons.ScilabCommonsUtils;
18
19 @javax.annotation.Generated("JFlex")
20
21 \r
22 // See https://github.com/jflex-de/jflex/issues/222\r
23 @SuppressWarnings("FallThrough")\r
24 public final class ScilabLexer extends ScilabLexerConstants {\r
25 \r
26   /** This character denotes the end of file. */\r
27   public static final int YYEOF = -1;\r
28 \r
29   /** Initial size of the lookahead buffer. */\r
30   private static final int ZZ_BUFFERSIZE = 16384;\r
31 \r
32   // Lexical states.\r
33   public static final int YYINITIAL = 0;\r
34   public static final int QSTRING = 2;\r
35   public static final int COMMENT = 4;\r
36   public static final int BLOCKCOMMENT = 6;\r
37   public static final int FIELD = 8;\r
38   public static final int COMMANDS = 10;\r
39   public static final int COMMANDSWHITE = 12;\r
40   public static final int BREAKSTRING = 14;\r
41 \r
42   /**\r
43    * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l\r
44    * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l\r
45    *                  at the beginning of a line\r
46    * l is of the form l = 2*k, k a non negative integer\r
47    */\r
48   private static final int ZZ_LEXSTATE[] = {\r
49      0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7, 7\r
50   };\r
51 \r
52   /**\r
53    * Top-level table for translating characters to character classes\r
54    */\r
55   private static final int [] ZZ_CMAP_TOP = zzUnpackcmap_top();\r
56 \r
57   private static final String ZZ_CMAP_TOP_PACKED_0 =\r
58     "\1\0\37\u0100\1\u0200\267\u0100\10\u0300\u1020\u0100";\r
59 \r
60   private static int [] zzUnpackcmap_top() {\r
61     int [] result = new int[4352];\r
62     int offset = 0;\r
63     offset = zzUnpackcmap_top(ZZ_CMAP_TOP_PACKED_0, offset, result);\r
64     return result;\r
65   }\r
66 \r
67   private static int zzUnpackcmap_top(String packed, int offset, int [] result) {\r
68     int i = 0;       /* index in packed string  */\r
69     int j = offset;  /* index in unpacked array */\r
70     int l = packed.length();\r
71     while (i < l) {\r
72       int count = packed.charAt(i++);\r
73       int value = packed.charAt(i++);\r
74       do result[j++] = value; while (--count > 0);\r
75     }\r
76     return j;\r
77   }\r
78 \r
79 \r
80   /**\r
81    * Second-level tables for translating characters to character classes\r
82    */\r
83   private static final int [] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks();\r
84 \r
85   private static final String ZZ_CMAP_BLOCKS_PACKED_0 =\r
86     "\11\0\1\1\1\2\1\3\1\4\1\5\22\0\1\6"+\r
87     "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+\r
88     "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\12\26"+\r
89     "\1\27\1\30\1\31\1\32\1\33\1\11\1\34\1\35"+\r
90     "\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45"+\r
91     "\1\46\1\47\1\50\1\51\1\52\1\53\1\54\1\55"+\r
92     "\1\56\1\57\1\60\1\61\1\62\1\63\1\55\1\64"+\r
93     "\1\65\1\66\1\67\1\17\1\70\1\71\1\0\1\72"+\r
94     "\1\73\1\74\1\75\1\76\1\77\1\100\1\101\1\102"+\r
95     "\1\103\1\104\1\105\1\106\1\107\1\110\1\111\1\112"+\r
96     "\1\113\1\114\1\115\1\116\1\117\1\120\1\121\1\122"+\r
97     "\1\123\1\66\1\124\1\17\1\125\6\0\1\3\u01a2\0"+\r
98     "\2\3\326\0\u0100\3";\r
99 \r
100   private static int [] zzUnpackcmap_blocks() {\r
101     int [] result = new int[1024];\r
102     int offset = 0;\r
103     offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result);\r
104     return result;\r
105   }\r
106 \r
107   private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) {\r
108     int i = 0;       /* index in packed string  */\r
109     int j = offset;  /* index in unpacked array */\r
110     int l = packed.length();\r
111     while (i < l) {\r
112       int count = packed.charAt(i++);\r
113       int value = packed.charAt(i++);\r
114       do result[j++] = value; while (--count > 0);\r
115     }\r
116     return j;\r
117   }\r
118 \r
119   /**\r
120    * Translates DFA states to action switch labels.\r
121    */\r
122   private static final int [] ZZ_ACTION = zzUnpackAction();\r
123 \r
124   private static final String ZZ_ACTION_PACKED_0 =\r
125     "\1\0\1\1\4\0\1\1\1\0\1\2\1\3\1\4"+\r
126     "\1\5\1\6\1\7\1\5\1\10\1\11\1\12\1\13"+\r
127     "\2\10\1\2\1\10\1\14\1\10\1\15\1\7\2\10"+\r
128     "\3\5\1\10\16\5\1\10\1\1\1\16\1\17\1\20"+\r
129     "\1\21\1\1\1\22\1\23\1\24\25\22\1\25\1\26"+\r
130     "\1\27\1\25\1\30\1\31\1\32\1\1\1\3\1\4"+\r
131     "\1\1\2\17\1\0\1\33\3\0\3\34\2\5\2\10"+\r
132     "\1\33\1\0\1\10\1\7\1\10\1\15\1\35\1\36"+\r
133     "\1\33\1\15\7\5\1\37\5\5\1\40\10\5\1\10"+\r
134     "\1\0\1\41\1\0\1\42\46\0\1\43\1\0\1\1"+\r
135     "\1\44\3\0\3\5\1\33\3\15\1\34\10\5\1\45"+\r
136     "\12\5\1\33\1\41\1\0\1\42\44\0\5\5\1\46"+\r
137     "\1\5\1\47\10\5\1\41\14\0\1\50\24\0\1\42"+\r
138     "\11\5\27\0\1\51\4\0\2\5\1\46\2\5\33\0"+\r
139     "\2\5\33\0\1\52\1\53\1\0\1\54\343\0";\r
140 \r
141   private static int [] zzUnpackAction() {\r
142     int [] result = new int[632];\r
143     int offset = 0;\r
144     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);\r
145     return result;\r
146   }\r
147 \r
148   private static int zzUnpackAction(String packed, int offset, int [] result) {\r
149     int i = 0;       /* index in packed string  */\r
150     int j = offset;  /* index in unpacked array */\r
151     int l = packed.length();\r
152     while (i < l) {\r
153       int count = packed.charAt(i++);\r
154       int value = packed.charAt(i++);\r
155       do result[j++] = value; while (--count > 0);\r
156     }\r
157     return j;\r
158   }\r
159 \r
160 \r
161   /**\r
162    * Translates a state to a row index in the transition table\r
163    */\r
164   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();\r
165 \r
166   private static final String ZZ_ROWMAP_PACKED_0 =\r
167     "\0\0\0\126\0\254\0\u0102\0\u0158\0\u01ae\0\u0204\0\u025a"+\r
168     "\0\u02b0\0\u0306\0\u035c\0\u03b2\0\u0408\0\u03b2\0\u045e\0\u04b4"+\r
169     "\0\u0408\0\u02b0\0\u02b0\0\u050a\0\u0560\0\u05b6\0\u060c\0\u0662"+\r
170     "\0\u06b8\0\u070e\0\u05b6\0\u0764\0\u07ba\0\u0810\0\u0866\0\u08bc"+\r
171     "\0\u05b6\0\u0912\0\u0968\0\u09be\0\u0a14\0\u0a6a\0\u0ac0\0\u0b16"+\r
172     "\0\u0b6c\0\u0bc2\0\u0c18\0\u0c6e\0\u0cc4\0\u0d1a\0\u0d70\0\u0dc6"+\r
173     "\0\u0e1c\0\u02b0\0\u02b0\0\u02b0\0\u0e72\0\u0ec8\0\u02b0\0\u02b0"+\r
174     "\0\u02b0\0\u0f1e\0\u0f74\0\u0fca\0\u1020\0\u1076\0\u10cc\0\u1122"+\r
175     "\0\u1178\0\u11ce\0\u1224\0\u127a\0\u12d0\0\u1326\0\u137c\0\u13d2"+\r
176     "\0\u1428\0\u147e\0\u14d4\0\u152a\0\u1580\0\u15d6\0\u02b0\0\u02b0"+\r
177     "\0\u162c\0\u162c\0\u1682\0\u1682\0\u02b0\0\u16d8\0\u02b0\0\u02b0"+\r
178     "\0\u172e\0\u1784\0\u17da\0\u0306\0\u1830\0\u1886\0\u05b6\0\u18dc"+\r
179     "\0\u03b2\0\u1932\0\u1988\0\u19de\0\u1a34\0\u1a8a\0\u02b0\0\u02b0"+\r
180     "\0\u1ae0\0\u1b36\0\u1b8c\0\u1be2\0\u1c38\0\u1c8e\0\u02b0\0\u1ce4"+\r
181     "\0\u1d3a\0\u1d90\0\u1de6\0\u1e3c\0\u1e92\0\u1ee8\0\u1f3e\0\u1f94"+\r
182     "\0\u03b2\0\u1fea\0\u2040\0\u2096\0\u20ec\0\u2142\0\u03b2\0\u2198"+\r
183     "\0\u21ee\0\u2244\0\u229a\0\u22f0\0\u2346\0\u239c\0\u23f2\0\u2448"+\r
184     "\0\u0e72\0\u249e\0\u0f1e\0\u02b0\0\u24f4\0\u0f74\0\u254a\0\u25a0"+\r
185     "\0\u25f6\0\u264c\0\u26a2\0\u26f8\0\u274e\0\u27a4\0\u27fa\0\u2850"+\r
186     "\0\u28a6\0\u28fc\0\u2952\0\u29a8\0\u29fe\0\u2a54\0\u2aaa\0\u2b00"+\r
187     "\0\u2b56\0\u2bac\0\u2c02\0\u2c58\0\u2cae\0\u2d04\0\u2d5a\0\u2db0"+\r
188     "\0\u2e06\0\u2e5c\0\u2eb2\0\u2f08\0\u2f5e\0\u2fb4\0\u300a\0\u3060"+\r
189     "\0\u30b6\0\u15d6\0\u02b0\0\u1682\0\u310c\0\u1784\0\u3162\0\u31b8"+\r
190     "\0\u320e\0\u3264\0\u32ba\0\u3310\0\u1a8a\0\u3366\0\u33bc\0\u3412"+\r
191     "\0\u3468\0\u34be\0\u3514\0\u356a\0\u35c0\0\u3616\0\u366c\0\u36c2"+\r
192     "\0\u3718\0\u376e\0\u37c4\0\u381a\0\u3870\0\u38c6\0\u391c\0\u3972"+\r
193     "\0\u39c8\0\u3a1e\0\u3a74\0\u3aca\0\u2448\0\u3b20\0\u3b76\0\u0f1e"+\r
194     "\0\u3bcc\0\u3c22\0\u3c78\0\u3cce\0\u3d24\0\u3d7a\0\u3dd0\0\u3e26"+\r
195     "\0\u3e7c\0\u3ed2\0\u3f28\0\u3f7e\0\u3fd4\0\u402a\0\u4080\0\u40d6"+\r
196     "\0\u412c\0\u4182\0\u41d8\0\u422e\0\u4284\0\u42da\0\u4330\0\u4386"+\r
197     "\0\u43dc\0\u4432\0\u4488\0\u44de\0\u4534\0\u458a\0\u45e0\0\u4636"+\r
198     "\0\u468c\0\u46e2\0\u4738\0\u478e\0\u47e4\0\u483a\0\u4890\0\u48e6"+\r
199     "\0\u493c\0\u4992\0\u49e8\0\u03b2\0\u4a3e\0\u4a94\0\u4aea\0\u4b40"+\r
200     "\0\u4b96\0\u4bec\0\u4c42\0\u4c98\0\u02b0\0\u4cee\0\u4d44\0\u4d9a"+\r
201     "\0\u4df0\0\u4e46\0\u4e9c\0\u4ef2\0\u4f48\0\u4f9e\0\u4ff4\0\u504a"+\r
202     "\0\u50a0\0\u02b0\0\u50f6\0\u514c\0\u51a2\0\u51f8\0\u524e\0\u52a4"+\r
203     "\0\u52fa\0\u5350\0\u53a6\0\u53fc\0\u5452\0\u54a8\0\u54fe\0\u5554"+\r
204     "\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u5702\0\u5758\0\u3162\0\u57ae"+\r
205     "\0\u5804\0\u585a\0\u58b0\0\u5906\0\u595c\0\u59b2\0\u5a08\0\u5a5e"+\r
206     "\0\u5ab4\0\u5b0a\0\u5b60\0\u5bb6\0\u5c0c\0\u5c62\0\u5cb8\0\u5d0e"+\r
207     "\0\u5d64\0\u5dba\0\u5e10\0\u5e66\0\u5ebc\0\u5f12\0\u5f68\0\u5fbe"+\r
208     "\0\u6014\0\u606a\0\u60c0\0\u6116\0\u616c\0\u61c2\0\u6218\0\u626e"+\r
209     "\0\u62c4\0\u631a\0\u6370\0\u63c6\0\u641c\0\u6472\0\u03b2\0\u64c8"+\r
210     "\0\u651e\0\u6574\0\u65ca\0\u6620\0\u6676\0\u66cc\0\u6722\0\u6778"+\r
211     "\0\u67ce\0\u6824\0\u687a\0\u68d0\0\u6926\0\u697c\0\u69d2\0\u6a28"+\r
212     "\0\u6a7e\0\u6ad4\0\u6b2a\0\u6b80\0\u6bd6\0\u6c2c\0\u6c82\0\u6cd8"+\r
213     "\0\u6d2e\0\u6d84\0\u6dda\0\u6e30\0\u6e86\0\u6edc\0\u6f32\0\u6f88"+\r
214     "\0\u6fde\0\u7034\0\u708a\0\u70e0\0\u7136\0\u718c\0\u71e2\0\u7238"+\r
215     "\0\u728e\0\u72e4\0\u733a\0\u7390\0\u73e6\0\u743c\0\u7492\0\u74e8"+\r
216     "\0\u753e\0\u7594\0\u75ea\0\u7640\0\u7696\0\u76ec\0\u7742\0\u7798"+\r
217     "\0\u77ee\0\u6e30\0\u03b2\0\u7844\0\u02b0\0\u789a\0\u78f0\0\u7946"+\r
218     "\0\u799c\0\u79f2\0\u7a48\0\u7a9e\0\u7af4\0\u7b4a\0\u7ba0\0\u7bf6"+\r
219     "\0\u7c4c\0\u7ca2\0\u7cf8\0\u7d4e\0\u7da4\0\u7dfa\0\u7e50\0\u7ea6"+\r
220     "\0\u7efc\0\u7f52\0\u7fa8\0\u7ffe\0\u8054\0\u80aa\0\u8100\0\u8156"+\r
221     "\0\u81ac\0\u8202\0\u8258\0\u82ae\0\u8304\0\u835a\0\u83b0\0\u8406"+\r
222     "\0\u845c\0\u84b2\0\u8508\0\u855e\0\u85b4\0\u860a\0\u8660\0\u86b6"+\r
223     "\0\u870c\0\u8762\0\u87b8\0\u880e\0\u8864\0\u88ba\0\u8910\0\u8966"+\r
224     "\0\u89bc\0\u8a12\0\u8a68\0\u8abe\0\u8b14\0\u8b6a\0\u8bc0\0\u8c16"+\r
225     "\0\u8c6c\0\u8cc2\0\u8d18\0\u8d6e\0\u8dc4\0\u8e1a\0\u8e70\0\u8ec6"+\r
226     "\0\u8f1c\0\u8f72\0\u8fc8\0\u901e\0\u9074\0\u90ca\0\u9120\0\u9176"+\r
227     "\0\u91cc\0\u9222\0\u9278\0\u92ce\0\u9324\0\u937a\0\u93d0\0\u9426"+\r
228     "\0\u947c\0\u94d2\0\u9528\0\u957e\0\u95d4\0\u962a\0\u9680\0\u96d6"+\r
229     "\0\u972c\0\u9782\0\u97d8\0\u982e\0\u9884\0\u98da\0\u9930\0\u9986"+\r
230     "\0\u99dc\0\u9a32\0\u9a88\0\u9ade\0\u9b34\0\u9b8a\0\u9be0\0\u9c36"+\r
231     "\0\u9c8c\0\u9ce2\0\u9d38\0\u9d8e\0\u9de4\0\u9e3a\0\u9e90\0\u9ee6"+\r
232     "\0\u9f3c\0\u9f92\0\u9fe8\0\ua03e\0\ua094\0\ua0ea\0\ua140\0\ua196"+\r
233     "\0\ua1ec\0\ua242\0\ua298\0\ua2ee\0\ua344\0\ua39a\0\ua3f0\0\ua446"+\r
234     "\0\ua49c\0\ua4f2\0\ua548\0\ua59e\0\ua5f4\0\ua64a\0\ua6a0\0\ua6f6"+\r
235     "\0\ua74c\0\ua7a2\0\ua7f8\0\ua84e\0\ua8a4\0\ua8fa\0\ua950\0\ua9a6"+\r
236     "\0\ua9fc\0\uaa52\0\uaaa8\0\uaafe\0\uab54\0\uabaa\0\uac00\0\uac56"+\r
237     "\0\uacac\0\uad02\0\uad58\0\uadae\0\uae04\0\uae5a\0\uaeb0\0\uaf06"+\r
238     "\0\uaf5c\0\uafb2\0\ub008\0\ub05e\0\ub0b4\0\ub10a\0\ub160\0\ub1b6"+\r
239     "\0\ub20c\0\ub262\0\ub2b8\0\ub30e\0\ub364\0\ub3ba\0\ub410\0\ub466"+\r
240     "\0\ub4bc\0\ub512\0\ub568\0\ub5be\0\ub614\0\ub66a\0\ub6c0\0\ub716"+\r
241     "\0\ub76c\0\ub7c2\0\ub818\0\ub86e\0\ub8c4\0\ub91a\0\ub970\0\ub9c6"+\r
242     "\0\uba1c\0\uba72\0\ubac8\0\ubb1e\0\ubb74\0\ubbca\0\ubc20\0\ubc76"+\r
243     "\0\ubccc\0\ubd22\0\ubd78\0\ubdce\0\ube24\0\ube7a\0\ubed0\0\ubf26"+\r
244     "\0\ubf7c\0\ubfd2\0\uc028\0\uc07e\0\uc0d4\0\uc12a\0\uc180\0\uc1d6"+\r
245     "\0\uc22c\0\uc282\0\uc2d8\0\uc32e\0\uc384\0\uc3da\0\uc430\0\uc486";\r
246 \r
247   private static int [] zzUnpackRowMap() {\r
248     int [] result = new int[632];\r
249     int offset = 0;\r
250     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);\r
251     return result;\r
252   }\r
253 \r
254   private static int zzUnpackRowMap(String packed, int offset, int [] result) {\r
255     int i = 0;  /* index in packed string  */\r
256     int j = offset;  /* index in unpacked array */\r
257     int l = packed.length();\r
258     while (i < l) {\r
259       int high = packed.charAt(i++) << 16;\r
260       result[j++] = high | packed.charAt(i++);\r
261     }\r
262     return j;\r
263   }\r
264 \r
265   /**\r
266    * The transition table of the DFA\r
267    */\r
268   private static final int [] ZZ_TRANS = zzUnpackTrans();\r
269 \r
270   private static final String ZZ_TRANS_PACKED_0 =\r
271     "\1\11\1\12\1\11\3\0\1\13\1\14\1\15\1\14"+\r
272     "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+\r
273     "\1\26\1\27\1\30\1\31\1\32\1\33\1\11\1\34"+\r
274     "\3\35\22\14\1\36\1\37\2\14\1\40\2\14\1\22"+\r
275     "\2\41\1\14\1\42\1\43\1\44\1\45\1\46\1\47"+\r
276     "\2\14\1\50\5\14\1\51\1\52\1\53\1\54\1\55"+\r
277     "\1\56\2\14\1\57\3\14\1\60\1\35\1\61\1\62"+\r
278     "\1\63\2\61\1\0\1\64\1\61\1\65\4\61\1\65"+\r
279     "\6\61\1\66\101\61\1\67\1\70\1\67\3\0\1\71"+\r
280     "\3\67\1\72\16\67\1\73\3\67\1\74\1\75\1\76"+\r
281     "\1\77\1\100\3\67\1\101\1\102\2\67\1\103\2\67"+\r
282     "\1\104\2\67\1\105\1\106\1\67\1\107\1\67\1\110"+\r
283     "\1\111\11\67\1\112\1\67\1\113\12\67\1\114\1\115"+\r
284     "\11\67\1\70\1\67\3\0\1\71\3\67\1\72\5\67"+\r
285     "\1\116\10\67\1\73\3\67\1\74\1\75\1\76\1\77"+\r
286     "\1\100\3\67\1\101\1\102\2\67\1\103\2\67\1\104"+\r
287     "\2\67\1\105\1\106\1\67\1\107\1\67\1\110\1\111"+\r
288     "\11\67\1\112\1\67\1\113\12\67\1\114\1\115\10\67"+\r
289     "\2\117\1\120\3\0\1\117\1\121\1\117\1\121\1\122"+\r
290     "\1\121\21\117\31\121\3\117\33\121\3\117\1\123\1\120"+\r
291     "\3\0\1\124\7\117\1\125\107\117\1\126\1\127\4\126"+\r
292     "\1\130\13\126\1\117\2\126\1\131\2\126\1\117\75\126"+\r
293     "\1\63\1\127\1\63\3\0\1\130\15\63\1\132\1\133"+\r
294     "\100\63\127\0\1\134\4\0\1\135\120\0\1\135\4\0"+\r
295     "\1\136\1\137\125\0\1\14\1\0\2\14\13\0\1\14"+\r
296     "\6\0\31\14\3\0\33\14\14\0\1\140\122\0\1\14"+\r
297     "\1\0\2\14\13\0\1\14\6\0\5\14\1\141\15\14"+\r
298     "\1\141\5\14\3\0\5\14\1\142\1\141\2\14\1\143"+\r
299     "\4\14\1\144\1\14\1\145\2\14\2\141\5\14\1\141"+\r
300     "\16\0\1\146\131\0\1\147\11\0\1\150\113\0\1\150"+\r
301     "\3\0\1\151\1\150\4\0\1\150\34\0\2\150\67\0"+\r
302     "\1\150\113\0\1\150\3\0\1\151\1\150\4\0\2\150"+\r
303     "\33\0\2\150\52\0\1\147\2\0\1\152\3\0\1\153"+\r
304     "\1\154\1\155\3\0\1\150\34\0\1\154\1\147\55\0"+\r
305     "\1\156\3\0\1\147\1\157\4\0\1\150\102\0\1\160"+\r
306     "\1\0\2\160\11\0\1\155\1\0\1\32\6\0\3\160"+\r
307     "\2\161\24\160\3\0\4\160\2\161\25\160\34\0\2\147"+\r
308     "\124\0\1\147\102\0\1\14\1\0\2\14\13\0\1\14"+\r
309     "\6\0\2\14\1\162\26\14\3\0\33\14\11\0\1\14"+\r
310     "\1\0\2\14\13\0\1\14\6\0\14\14\1\163\14\14"+\r
311     "\3\0\33\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
312     "\6\0\22\14\1\164\6\14\3\0\33\14\11\0\1\14"+\r
313     "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\2\14"+\r
314     "\1\165\30\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
315     "\6\0\31\14\3\0\22\14\1\166\10\14\11\0\1\14"+\r
316     "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\1\14"+\r
317     "\1\167\15\14\1\170\13\14\11\0\1\14\1\0\2\14"+\r
318     "\13\0\1\14\6\0\31\14\3\0\17\14\1\171\13\14"+\r
319     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
320     "\3\0\14\14\1\172\1\14\1\173\11\14\1\174\2\14"+\r
321     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
322     "\3\0\17\14\1\175\5\14\1\176\5\14\11\0\1\14"+\r
323     "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\6\14"+\r
324     "\1\177\24\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
325     "\6\0\31\14\3\0\24\14\1\200\6\14\11\0\1\14"+\r
326     "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\1\14"+\r
327     "\1\201\31\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
328     "\6\0\31\14\3\0\25\14\1\174\5\14\11\0\1\14"+\r
329     "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\5\14"+\r
330     "\1\202\25\14\11\0\1\14\1\0\2\14\13\0\1\14"+\r
331     "\6\0\31\14\3\0\5\14\1\203\21\14\1\204\3\14"+\r
332     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
333     "\3\0\10\14\1\205\11\14\1\206\10\14\11\0\1\14"+\r
334     "\1\0\2\14\13\0\1\14\6\0\31\14\3\0\10\14"+\r
335     "\1\207\22\14\126\0\1\210\1\0\1\61\2\0\2\61"+\r
336     "\2\0\1\61\1\211\4\61\1\211\6\61\1\0\101\61"+\r
337     "\10\0\1\61\4\0\1\61\134\0\1\212\101\0\12\213"+\r
338     "\1\214\54\213\1\215\36\213\1\0\1\216\4\0\1\216"+\r
339     "\14\0\2\217\1\0\1\217\6\0\31\217\3\0\33\217"+\r
340     "\77\0\1\220\7\0\1\221\1\0\1\222\114\0\1\223"+\r
341     "\14\0\1\224\104\0\1\225\3\0\1\226\6\0\1\227"+\r
342     "\65\0\1\230\34\0\1\231\75\0\1\232\4\0\1\233"+\r
343     "\120\0\1\234\34\0\1\235\114\0\1\236\121\0\1\237"+\r
344     "\7\0\1\240\115\0\1\241\7\0\1\242\115\0\1\243"+\r
345     "\3\0\1\244\3\0\1\245\12\0\1\246\4\0\1\247"+\r
346     "\56\0\1\250\34\0\1\251\117\0\1\252\115\0\1\253"+\r
347     "\134\0\1\254\126\0\1\255\12\0\1\256\125\0\1\257"+\r
348     "\107\0\1\260\6\0\1\261\127\0\1\251\35\0\1\262"+\r
349     "\4\0\1\263\107\0\1\121\1\0\2\121\13\0\1\121"+\r
350     "\6\0\31\121\3\0\33\121\3\0\1\264\4\0\1\264"+\r
351     "\7\0\1\125\107\0\1\126\1\0\4\126\1\0\13\126"+\r
352     "\1\0\2\126\1\0\2\126\1\0\75\126\6\265\1\0"+\r
353     "\16\265\1\157\100\265\24\0\1\266\126\0\1\157\101\0"+\r
354     "\1\135\4\0\1\135\120\0\1\135\4\0\1\136\117\0"+\r
355     "\10\140\1\267\1\140\1\270\2\140\1\267\51\140\1\271"+\r
356     "\36\140\7\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
357     "\31\14\3\0\20\14\1\272\12\14\11\0\1\14\1\0"+\r
358     "\2\14\13\0\1\14\6\0\31\14\3\0\16\14\1\273"+\r
359     "\14\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
360     "\31\14\3\0\1\14\1\274\31\14\11\0\1\14\1\0"+\r
361     "\2\14\13\0\1\14\6\0\31\14\3\0\11\14\1\141"+\r
362     "\21\14\16\0\1\275\131\0\2\150\1\0\1\150\1\0"+\r
363     "\1\150\41\0\2\150\55\0\1\147\3\0\1\147\125\0"+\r
364     "\1\153\125\0\1\147\127\0\1\155\11\0\2\276\33\0"+\r
365     "\2\276\47\0\1\156\114\0\1\160\1\0\2\160\13\0"+\r
366     "\1\160\6\0\31\160\3\0\33\160\11\0\1\160\1\0"+\r
367     "\2\160\6\0\1\277\1\0\1\277\2\0\1\300\6\0"+\r
368     "\31\160\3\0\33\160\11\0\1\14\1\0\2\14\13\0"+\r
369     "\1\14\6\0\10\14\1\301\20\14\3\0\33\14\11\0"+\r
370     "\1\14\1\0\2\14\13\0\1\14\6\0\17\14\1\302"+\r
371     "\11\14\3\0\33\14\11\0\1\14\1\0\2\14\13\0"+\r
372     "\1\14\6\0\2\14\1\303\26\14\3\0\33\14\11\0"+\r
373     "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
374     "\17\14\1\304\13\14\11\0\1\14\1\0\2\14\13\0"+\r
375     "\1\14\6\0\31\14\3\0\5\14\1\305\25\14\11\0"+\r
376     "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
377     "\23\14\1\306\1\307\6\14\11\0\1\14\1\0\2\14"+\r
378     "\13\0\1\14\6\0\31\14\3\0\16\14\1\310\14\14"+\r
379     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
380     "\3\0\23\14\1\311\7\14\11\0\1\14\1\0\2\14"+\r
381     "\13\0\1\14\6\0\31\14\3\0\4\14\1\312\26\14"+\r
382     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
383     "\3\0\11\14\1\313\21\14\11\0\1\14\1\0\2\14"+\r
384     "\13\0\1\14\6\0\31\14\3\0\22\14\1\177\10\14"+\r
385     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
386     "\3\0\16\14\1\314\14\14\11\0\1\14\1\0\2\14"+\r
387     "\13\0\1\14\6\0\31\14\3\0\10\14\1\315\22\14"+\r
388     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
389     "\3\0\25\14\1\316\5\14\11\0\1\14\1\0\2\14"+\r
390     "\13\0\1\14\6\0\31\14\3\0\23\14\1\317\1\320"+\r
391     "\6\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
392     "\31\14\3\0\14\14\1\321\16\14\11\0\1\14\1\0"+\r
393     "\2\14\13\0\1\14\6\0\31\14\3\0\11\14\1\322"+\r
394     "\21\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
395     "\31\14\3\0\5\14\1\323\25\14\11\0\1\14\1\0"+\r
396     "\2\14\13\0\1\14\6\0\31\14\3\0\31\14\1\177"+\r
397     "\1\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
398     "\31\14\3\0\11\14\1\324\21\14\126\0\1\325\2\0"+\r
399     "\1\326\4\0\1\326\15\0\1\212\1\327\100\0\12\213"+\r
400     "\1\330\54\213\1\215\36\213\23\0\2\217\1\0\1\217"+\r
401     "\5\0\1\331\31\217\3\0\33\217\100\0\1\332\134\0"+\r
402     "\1\333\135\0\1\334\123\0\1\335\130\0\1\336\114\0"+\r
403     "\1\337\115\0\1\340\122\0\1\341\3\0\1\342\72\0"+\r
404     "\1\343\162\0\1\344\101\0\1\345\116\0\1\346\136\0"+\r
405     "\1\347\162\0\1\350\125\0\1\351\121\0\1\352\112\0"+\r
406     "\1\353\147\0\1\354\105\0\1\355\135\0\1\356\132\0"+\r
407     "\1\357\120\0\1\360\115\0\1\361\134\0\1\362\60\0"+\r
408     "\1\363\162\0\1\364\137\0\1\365\125\0\1\366\126\0"+\r
409     "\1\367\122\0\1\370\131\0\1\371\131\0\1\256\125\0"+\r
410     "\1\372\103\0\1\373\32\0\6\265\1\0\16\265\1\0"+\r
411     "\100\265\10\0\1\140\4\0\1\140\120\0\1\214\4\0"+\r
412     "\1\214\110\0\10\140\1\267\1\140\1\374\2\140\1\267"+\r
413     "\51\140\1\271\36\140\7\0\1\14\1\0\2\14\13\0"+\r
414     "\1\14\6\0\31\14\3\0\23\14\1\141\7\14\11\0"+\r
415     "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
416     "\6\14\1\141\24\14\11\0\1\14\1\0\2\14\13\0"+\r
417     "\1\14\6\0\31\14\3\0\16\14\1\141\14\14\23\0"+\r
418     "\1\277\1\0\1\277\2\0\1\277\125\0\1\277\106\0"+\r
419     "\1\160\1\0\2\160\13\0\1\300\6\0\31\160\3\0"+\r
420     "\33\160\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
421     "\7\14\1\375\21\14\3\0\33\14\11\0\1\14\1\0"+\r
422     "\2\14\13\0\1\14\6\0\3\14\1\376\25\14\3\0"+\r
423     "\33\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
424     "\10\14\1\141\20\14\3\0\33\14\11\0\1\14\1\0"+\r
425     "\2\14\13\0\1\14\6\0\31\14\3\0\22\14\1\313"+\r
426     "\10\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
427     "\31\14\3\0\1\14\1\377\31\14\11\0\1\14\1\0"+\r
428     "\2\14\13\0\1\14\6\0\31\14\3\0\5\14\1\171"+\r
429     "\25\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
430     "\31\14\3\0\3\14\1\u0100\27\14\11\0\1\14\1\0"+\r
431     "\2\14\13\0\1\14\6\0\31\14\3\0\24\14\1\u0101"+\r
432     "\6\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
433     "\31\14\3\0\5\14\1\u0102\25\14\11\0\1\14\1\0"+\r
434     "\2\14\13\0\1\14\6\0\31\14\3\0\6\14\1\u0103"+\r
435     "\24\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
436     "\31\14\3\0\24\14\1\u0104\6\14\11\0\1\14\1\0"+\r
437     "\2\14\13\0\1\14\6\0\31\14\3\0\3\14\1\u0105"+\r
438     "\27\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
439     "\31\14\3\0\5\14\1\u0106\25\14\11\0\1\14\1\0"+\r
440     "\2\14\13\0\1\14\6\0\31\14\3\0\23\14\1\u0107"+\r
441     "\7\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
442     "\31\14\3\0\25\14\1\u0108\5\14\11\0\1\14\1\0"+\r
443     "\2\14\13\0\1\14\6\0\31\14\3\0\25\14\1\u0109"+\r
444     "\5\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
445     "\31\14\3\0\5\14\1\u010a\25\14\11\0\1\14\1\0"+\r
446     "\2\14\13\0\1\14\6\0\31\14\3\0\24\14\1\u010b"+\r
447     "\6\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
448     "\31\14\3\0\16\14\1\171\14\14\11\0\1\14\1\0"+\r
449     "\2\14\13\0\1\14\6\0\31\14\3\0\14\14\1\u010c"+\r
450     "\16\14\3\0\1\326\4\0\1\326\16\0\1\327\125\0"+\r
451     "\1\u010d\123\0\1\u010e\2\0\1\u010e\6\0\31\u010e\4\0"+\r
452     "\32\u010e\107\0\1\u010f\112\0\1\u0110\143\0\1\u0111\124\0"+\r
453     "\1\u0112\125\0\1\u0113\120\0\1\u0114\136\0\1\u0115\130\0"+\r
454     "\1\u0116\115\0\1\u0117\64\0\1\u0118\162\0\1\u0119\62\0"+\r
455     "\1\u011a\74\0\1\u011b\164\0\1\u011c\162\0\1\u011d\133\0"+\r
456     "\1\u011e\133\0\1\u011f\110\0\1\u0120\131\0\1\u0121\133\0"+\r
457     "\1\u0122\130\0\1\u0123\107\0\1\u0124\135\0\1\u0125\126\0"+\r
458     "\1\u0126\133\0\1\u0127\61\0\1\u0128\162\0\1\u0128\111\0"+\r
459     "\1\u0129\140\0\1\u012a\134\0\1\u012b\105\0\1\u012c\56\0"+\r
460     "\1\u012d\64\0\1\u012c\122\0\1\u012c\43\0\1\u012e\76\0"+\r
461     "\10\140\1\u012f\1\140\1\270\2\140\1\u012f\51\140\1\271"+\r
462     "\36\140\7\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
463     "\16\14\1\u0130\12\14\3\0\33\14\11\0\1\14\1\0"+\r
464     "\2\14\13\0\1\14\6\0\10\14\1\u0131\20\14\3\0"+\r
465     "\33\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
466     "\31\14\3\0\13\14\1\u0104\17\14\11\0\1\14\1\0"+\r
467     "\2\14\13\0\1\14\6\0\31\14\3\0\10\14\1\171"+\r
468     "\22\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
469     "\31\14\3\0\11\14\1\u0132\21\14\11\0\1\14\1\0"+\r
470     "\2\14\13\0\1\14\6\0\31\14\3\0\11\14\1\u0133"+\r
471     "\21\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
472     "\31\14\3\0\25\14\1\176\5\14\11\0\1\14\1\0"+\r
473     "\2\14\13\0\1\14\6\0\31\14\3\0\24\14\1\u0134"+\r
474     "\6\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
475     "\31\14\3\0\22\14\1\u0135\10\14\11\0\1\14\1\0"+\r
476     "\2\14\13\0\1\14\6\0\31\14\3\0\5\14\1\u0104"+\r
477     "\25\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
478     "\31\14\3\0\15\14\1\u0107\15\14\11\0\1\14\1\0"+\r
479     "\2\14\13\0\1\14\6\0\31\14\3\0\22\14\1\u0136"+\r
480     "\10\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
481     "\31\14\3\0\3\14\1\u0137\27\14\11\0\1\14\1\0"+\r
482     "\2\14\13\0\1\14\6\0\31\14\3\0\3\14\1\u0138"+\r
483     "\27\14\11\0\1\14\1\0\2\14\13\0\1\14\6\0"+\r
484     "\31\14\3\0\5\14\1\177\25\14\25\0\1\u010e\1\u0139"+\r
485     "\1\0\1\u010e\6\0\31\u010e\4\0\32\u010e\104\0\1\u013a"+\r
486     "\132\0\1\u013b\120\0\1\u013c\115\0\1\u013d\143\0\1\u013e"+\r
487     "\136\0\1\u013f\106\0\1\u0140\120\0\1\u0141\126\0\1\u0142"+\r
488     "\107\0\1\u0143\162\0\1\u0144\53\0\1\u0145\117\0\1\u011a"+\r
489     "\162\0\1\u011a\141\0\1\u0146\115\0\1\u0147\121\0\1\u0148"+\r
490     "\41\0\1\u0149\232\0\1\u014a\110\0\1\u014b\125\0\1\u014c"+\r
491     "\136\0\1\u014d\117\0\1\u014e\122\0\1\u014f\30\0\1\u0150"+\r
492     "\4\0\1\u0150\20\0\1\u0150\174\0\1\u0151\35\0\1\u0152"+\r
493     "\232\0\1\u0153\41\0\1\u012d\123\0\1\u0154\125\0\1\u012d"+\r
494     "\107\0\1\14\1\0\2\14\13\0\1\14\6\0\14\14"+\r
495     "\1\u0155\14\14\3\0\33\14\11\0\1\14\1\0\2\14"+\r
496     "\13\0\1\14\6\0\21\14\1\141\7\14\3\0\33\14"+\r
497     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
498     "\3\0\16\14\1\u0156\14\14\11\0\1\14\1\0\2\14"+\r
499     "\13\0\1\14\6\0\31\14\3\0\6\14\1\u0157\24\14"+\r
500     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
501     "\3\0\11\14\1\u0158\21\14\11\0\1\14\1\0\2\14"+\r
502     "\13\0\1\14\6\0\31\14\3\0\27\14\1\u0159\3\14"+\r
503     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
504     "\3\0\16\14\1\u0104\14\14\11\0\1\14\1\0\2\14"+\r
505     "\13\0\1\14\6\0\31\14\3\0\24\14\1\177\6\14"+\r
506     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
507     "\3\0\10\14\1\177\22\14\25\0\1\u010e\2\0\1\u010e"+\r
508     "\6\0\31\u015a\4\0\32\u015a\111\0\1\u015b\24\0\1\u015c"+\r
509     "\226\0\1\u015d\131\0\1\u015e\20\0\1\u015f\234\0\1\u0160"+\r
510     "\104\0\1\u0161\127\0\1\u0162\136\0\1\u0163\57\0\1\u0164"+\r
511     "\162\0\1\u0165\142\0\1\u0166\110\0\1\u0167\134\0\1\u0168"+\r
512     "\116\0\1\u0169\65\0\1\u016a\165\0\1\u016b\134\0\1\u016c"+\r
513     "\26\0\1\u016d\125\0\1\u016e\211\0\1\u016f\147\0\1\u0170"+\r
514     "\11\0\2\u0150\1\0\123\u0150\107\0\1\u0171\55\0\1\u0172"+\r
515     "\74\0\1\u0173\144\0\1\u0174\107\0\1\14\1\0\2\14"+\r
516     "\13\0\1\14\6\0\4\14\1\141\24\14\3\0\33\14"+\r
517     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
518     "\3\0\25\14\1\u0107\5\14\11\0\1\14\1\0\2\14"+\r
519     "\13\0\1\14\6\0\31\14\3\0\17\14\1\u0175\13\14"+\r
520     "\11\0\1\14\1\0\2\14\13\0\1\14\6\0\31\14"+\r
521     "\3\0\11\14\1\u0176\21\14\25\0\1\u010e\1\u0139\1\0"+\r
522     "\1\u010e\6\0\31\u0177\4\0\32\u0177\100\0\1\u0178\66\0"+\r
523     "\1\u0179\17\0\1\u017a\144\0\1\u017b\124\0\1\u017c\76\0"+\r
524     "\1\u017d\155\0\1\u017e\35\0\1\u017f\125\0\1\u0180\234\0"+\r
525     "\1\u0181\63\0\1\u011a\162\0\1\u011a\125\0\1\u0182\23\0"+\r
526     "\1\u0183\125\0\1\u0184\224\0\1\u0185\65\0\1\u0186\34\0"+\r
527     "\1\u0187\31\0\1\u0188\125\0\1\u0189\176\0\1\u018a\111\0"+\r
528     "\1\u018b\171\0\1\u018c\133\0\1\u018d\125\0\1\u018e\63\0"+\r
529     "\1\u018f\34\0\1\u0190\66\0\1\u0191\54\0\1\u0192\2\0"+\r
530     "\1\u0192\3\0\1\u0192\1\0\4\u0192\1\0\110\u0192\7\0"+\r
531     "\1\14\1\0\2\14\13\0\1\14\6\0\31\14\3\0"+\r
532     "\16\14\1\u0193\14\14\11\0\1\14\1\0\2\14\13\0"+\r
533     "\1\14\6\0\31\14\3\0\23\14\1\306\7\14\3\0"+\r
534     "\1\u0194\4\0\1\u0194\14\0\1\u010e\1\u0139\1\0\1\u010e"+\r
535     "\4\0\1\u0195\1\0\31\u0196\4\0\32\u0196\10\0\1\u0197"+\r
536     "\172\0\1\u0198\34\0\1\u0199\62\0\1\u019a\34\0\1\u019b"+\r
537     "\31\0\1\u019c\125\0\1\u019d\172\0\1\u019e\34\0\1\u019f"+\r
538     "\23\0\1\u01a0\157\0\1\u01a1\130\0\1\u01a2\70\0\1\u01a3"+\r
539     "\235\0\1\u01a4\63\0\1\u01a5\117\0\1\u01a6\65\0\1\u01a7"+\r
540     "\162\0\1\u01a8\162\0\1\u01a9\75\0\1\u01aa\1\u01ab\117\0"+\r
541     "\1\u01ac\142\0\1\u01ad\34\0\1\u01ae\45\0\1\u01af\34\0"+\r
542     "\1\u01b0\131\0\1\u01b1\142\0\1\u01b2\20\0\1\u01b3\167\0"+\r
543     "\1\u01b4\162\0\1\u01b5\55\0\1\u01b6\34\0\1\u01b7\34\0"+\r
544     "\1\u0194\4\0\1\u0194\24\0\1\u0195\73\0\1\u0194\4\0"+\r
545     "\1\u0194\14\0\1\u010e\1\u0139\1\0\1\u010e\4\0\1\u0195"+\r
546     "\1\0\31\u01b8\4\0\32\u01b8\41\0\1\u01b9\144\0\1\u01ba"+\r
547     "\162\0\1\u01bb\63\0\1\u01bc\162\0\1\u01bd\60\0\1\u01be"+\r
548     "\130\0\1\u01bf\123\0\1\u01c0\162\0\1\u01c1\66\0\1\u01c2"+\r
549     "\126\0\1\u01c3\34\0\1\u01c4\102\0\1\u01c5\34\0\1\u01c6"+\r
550     "\55\0\1\u01c7\176\0\1\u011a\61\0\1\u01c8\34\0\1\u01c9"+\r
551     "\104\0\1\u01ca\34\0\1\u01cb\45\0\1\u01cc\141\0\1\u01cd"+\r
552     "\162\0\1\u01ce\53\0\1\u01cf\34\0\1\u01d0\70\0\1\u01d1"+\r
553     "\34\0\1\u01d2\106\0\1\u01d3\34\0\1\u01d4\56\0\1\u01d5"+\r
554     "\162\0\1\u01d6\105\0\1\u01d7\162\0\1\u01d8\20\0\1\u01d9"+\r
555     "\215\0\1\u01da\66\0\1\u01db\10\0\1\u01dc\125\0\1\u01dd"+\r
556     "\162\0\1\u01de\60\0\1\u01df\162\0\1\u01e0\31\0\1\u0194"+\r
557     "\4\0\1\u0194\14\0\1\u010e\1\u0139\1\0\1\u010e\4\0"+\r
558     "\1\u0195\1\0\31\u01e1\4\0\32\u01e1\37\0\1\u01e2\142\0"+\r
559     "\1\u01e3\162\0\1\u01e4\71\0\1\u01e5\162\0\1\u01e6\65\0"+\r
560     "\1\u01e7\34\0\1\u01e8\101\0\1\u01e9\34\0\1\u01ea\65\0"+\r
561     "\1\u01e3\162\0\1\u01e4\53\0\1\u01eb\34\0\1\u01ec\77\0"+\r
562     "\1\u01ed\162\0\1\u01ee\71\0\1\u01ef\162\0\1\u01f0\54\0"+\r
563     "\1\u01f1\34\0\1\u01f2\72\0\1\u01f3\162\0\1\u01f4\101\0"+\r
564     "\1\u01f5\162\0\1\u01f6\55\0\1\u01f7\34\0\1\u01f8\100\0"+\r
565     "\1\u01d5\162\0\1\u01d6\75\0\1\u01f9\162\0\1\u01fa\74\0"+\r
566     "\1\u01fb\162\0\1\u01fc\73\0\1\u01fd\162\0\1\u01fe\50\0"+\r
567     "\1\u01ff\162\0\1\u0200\70\0\1\u0201\162\0\1\u0202\100\0"+\r
568     "\1\u0203\62\0\1\u0204\172\0\1\u0205\34\0\1\u0206\56\0"+\r
569     "\1\u0207\3\0\1\u01f3\30\0\1\u0208\3\0\1\u01f4\64\0"+\r
570     "\1\u0209\162\0\1\u020a\74\0\1\u020b\162\0\1\u020c\24\0"+\r
571     "\1\u0194\4\0\1\u0194\14\0\1\u010e\1\u0139\1\0\1\u010e"+\r
572     "\4\0\1\u0195\1\0\31\u010e\4\0\32\u010e\60\0\1\u020d"+\r
573     "\110\0\1\u020e\162\0\1\u020f\101\0\1\u011a\162\0\1\u011a"+\r
574     "\63\0\1\u0210\162\0\1\u0211\66\0\1\u0212\162\0\1\u0213"+\r
575     "\77\0\1\u0214\162\0\1\u0215\53\0\1\u0216\162\0\1\u0217"+\r
576     "\74\0\1\u0218\162\0\1\u0219\111\0\1\u021a\162\0\1\u021b"+\r
577     "\43\0\1\u021c\162\0\1\u021d\100\0\1\u021e\162\0\1\u021f"+\r
578     "\104\0\1\u0220\162\0\1\u0221\47\0\1\u0164\162\0\1\u0165"+\r
579     "\71\0\1\u0222\162\0\1\u0223\72\0\1\u0224\162\0\1\u0225"+\r
580     "\103\0\1\u011a\162\0\1\u011a\71\0\1\u0226\162\0\1\u0227"+\r
581     "\64\0\1\u0228\34\0\1\u0229\64\0\1\u022a\1\u022b\136\0"+\r
582     "\1\u022c\162\0\1\u022d\55\0\1\u022e\162\0\1\u022f\102\0"+\r
583     "\1\u0226\162\0\1\u0227\62\0\1\u0230\162\0\1\u0231\70\0"+\r
584     "\1\u0232\133\0\1\u011a\162\0\1\u011a\45\0\1\u0233\162\0"+\r
585     "\1\u0234\114\0\1\u0235\162\0\1\u0236\54\0\1\u0237\162\0"+\r
586     "\1\u0238\74\0\1\u0239\162\0\1\u023a\104\0\1\u011a\163\0"+\r
587     "\1\u011a\47\0\1\u023b\162\0\1\u023c\101\0\1\u023b\162\0"+\r
588     "\1\u023c\47\0\1\u023d\162\0\1\u023e\73\0\1\u023f\162\0"+\r
589     "\1\u0240\67\0\1\u0241\162\0\1\u0242\72\0\1\u01bc\162\0"+\r
590     "\1\u01bd\107\0\1\u0243\162\0\1\u0244\70\0\1\u0245\162\0"+\r
591     "\1\u0246\63\0\1\u0247\34\0\1\u0248\56\0\1\u0249\34\0"+\r
592     "\1\u024a\111\0\1\u024b\162\0\1\u024c\47\0\1\u024d\162\0"+\r
593     "\1\u024e\74\0\1\u024f\162\0\1\u0250\70\0\1\u0233\137\0"+\r
594     "\1\u011a\162\0\1\u011a\52\0\1\u0251\162\0\1\u0252\114\0"+\r
595     "\1\u01e3\163\0\1\u01e4\37\0\1\u0253\162\0\1\u0254\73\0"+\r
596     "\1\u011a\162\0\1\u011a\67\0\1\u0255\162\0\1\u0256\76\0"+\r
597     "\1\u01e5\162\0\1\u01e6\67\0\1\u0257\162\0\1\u0258\65\0"+\r
598     "\1\u011a\162\0\1\u011a\107\0\1\u0259\162\0\1\u025a\71\0"+\r
599     "\1\u025b\162\0\1\u025c\47\0\1\u025d\162\0\1\u025e\71\0"+\r
600     "\1\u025f\162\0\1\u0260\110\0\1\u0261\162\0\1\u0262\32\0"+\r
601     "\1\u0263\125\0\1\u0264\154\0\1\u0265\162\0\1\u0266\74\0"+\r
602     "\1\u0267\162\0\1\u0268\56\0\1\u0233\162\0\1\u0234\61\0"+\r
603     "\1\u0269\162\0\1\u026a\74\0\1\u026b\162\0\1\u026c\100\0"+\r
604     "\1\u026d\162\0\1\u026e\75\0\1\u026f\162\0\1\u0270\70\0"+\r
605     "\1\u020e\162\0\1\u020f\64\0\1\u0243\162\0\1\u0244\103\0"+\r
606     "\1\u0271\125\0\1\u0272\101\0\1\u0273\162\0\1\u0274\105\0"+\r
607     "\1\u0243\162\0\1\u0244\62\0\1\u011a\162\0\1\u011a\70\0"+\r
608     "\1\u01e3\162\0\1\u01e4\55\0\1\u01ff\162\0\1\u0200\114\0"+\r
609     "\1\u011a\162\0\1\u011a\62\0\1\u0275\162\0\1\u0276\101\0"+\r
610     "\1\u011a\163\0\1\u011a\64\0\1\u0277\162\0\1\u0278\54\0"+\r
611     "\1\u0261\162\0\1\u0262\23\0";\r
612 \r
613   private static int [] zzUnpackTrans() {\r
614     int [] result = new int[50396];\r
615     int offset = 0;\r
616     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);\r
617     return result;\r
618   }\r
619 \r
620   private static int zzUnpackTrans(String packed, int offset, int [] result) {\r
621     int i = 0;       /* index in packed string  */\r
622     int j = offset;  /* index in unpacked array */\r
623     int l = packed.length();\r
624     while (i < l) {\r
625       int count = packed.charAt(i++);\r
626       int value = packed.charAt(i++);\r
627       value--;\r
628       do result[j++] = value; while (--count > 0);\r
629     }\r
630     return j;\r
631   }\r
632 \r
633 \r
634   /** Error code for "Unknown internal scanner error". */\r
635   private static final int ZZ_UNKNOWN_ERROR = 0;\r
636   /** Error code for "could not match input". */\r
637   private static final int ZZ_NO_MATCH = 1;\r
638   /** Error code for "pushback value was too large". */\r
639   private static final int ZZ_PUSHBACK_2BIG = 2;\r
640 \r
641   /**\r
642    * Error messages for {@link #ZZ_UNKNOWN_ERROR}, {@link #ZZ_NO_MATCH}, and\r
643    * {@link #ZZ_PUSHBACK_2BIG} respectively.\r
644    */\r
645   private static final String ZZ_ERROR_MSG[] = {\r
646     "Unknown internal scanner error",\r
647     "Error: could not match input",\r
648     "Error: pushback value was too large"\r
649   };\r
650 \r
651   /**\r
652    * ZZ_ATTRIBUTE[aState] contains the attributes of state {@code aState}\r
653    */\r
654   private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();\r
655 \r
656   private static final String ZZ_ATTRIBUTE_PACKED_0 =\r
657     "\1\0\1\1\4\0\1\1\1\0\1\11\10\1\2\11"+\r
658     "\36\1\3\11\2\1\3\11\25\1\2\11\4\1\1\11"+\r
659     "\1\1\2\11\3\1\1\0\1\1\3\0\6\1\2\11"+\r
660     "\1\0\5\1\1\11\31\1\1\0\1\1\1\0\1\11"+\r
661     "\46\0\1\11\1\0\2\1\3\0\35\1\1\0\1\1"+\r
662     "\44\0\20\1\1\11\14\0\1\11\24\0\12\1\27\0"+\r
663     "\1\1\4\0\5\1\33\0\2\1\33\0\2\1\1\0"+\r
664     "\1\11\343\0";\r
665 \r
666   private static int [] zzUnpackAttribute() {\r
667     int [] result = new int[632];\r
668     int offset = 0;\r
669     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);\r
670     return result;\r
671   }\r
672 \r
673   private static int zzUnpackAttribute(String packed, int offset, int [] result) {\r
674     int i = 0;       /* index in packed string  */\r
675     int j = offset;  /* index in unpacked array */\r
676     int l = packed.length();\r
677     while (i < l) {\r
678       int count = packed.charAt(i++);\r
679       int value = packed.charAt(i++);\r
680       do result[j++] = value; while (--count > 0);\r
681     }\r
682     return j;\r
683   }\r
684 \r
685   /** Input device. */\r
686   private java.io.Reader zzReader;\r
687 \r
688   /** Current state of the DFA. */\r
689   private int zzState;\r
690 \r
691   /** Current lexical state. */\r
692   private int zzLexicalState = YYINITIAL;\r
693 \r
694   /**\r
695    * This buffer contains the current text to be matched and is the source of the {@link #yytext()}\r
696    * string.\r
697    */\r
698   private char zzBuffer[] = new char[ZZ_BUFFERSIZE];\r
699 \r
700   /** Text position at the last accepting state. */\r
701   private int zzMarkedPos;\r
702 \r
703   /** Current text position in the buffer. */\r
704   private int zzCurrentPos;\r
705 \r
706   /** Marks the beginning of the {@link #yytext()} string in the buffer. */\r
707   private int zzStartRead;\r
708 \r
709   /** Marks the last character in the buffer, that has been read from input. */\r
710   private int zzEndRead;\r
711 \r
712   /**\r
713    * Whether the scanner is at the end of file.\r
714    * @see #yyatEOF\r
715    */\r
716   private boolean zzAtEOF;\r
717 \r
718   /**\r
719    * The number of occupied positions in {@link #zzBuffer} beyond {@link #zzEndRead}.\r
720    *\r
721    * <p>When a lead/high surrogate has been read from the input stream into the final\r
722    * {@link #zzBuffer} position, this will have a value of 1; otherwise, it will have a value of 0.\r
723    */\r
724   private int zzFinalHighSurrogate = 0;\r
725 \r
726   /** Number of newlines encountered up to the start of the matched text. */\r
727   @SuppressWarnings("unused")\r
728   private int yyline;\r
729 \r
730   /** Number of characters from the last newline up to the start of the matched text. */\r
731   @SuppressWarnings("unused")\r
732   private int yycolumn;\r
733 \r
734   /** Number of characters up to the start of the matched text. */\r
735   private long yychar;\r
736 \r
737   /** Whether the scanner is currently at the beginning of a line. */\r
738   @SuppressWarnings("unused")\r
739   private boolean zzAtBOL = true;\r
740 \r
741   /** Whether the user-EOF-code has already been executed. */\r
742   @SuppressWarnings("unused")\r
743   private boolean zzEOFDone;\r
744 \r
745   /* user code: */\r
746     public int start;
747     public int end;
748     public int beginString;
749     public static Set<String> commands = new HashSet<String>();
750     public static Set<String> macros = new HashSet<String>();
751     public static Set<String> variables = new HashSet<String>();
752     public Set<String> infile;
753
754     private ScilabDocument doc;
755     private boolean transposable;
756     private Element elem;
757     private boolean breakstring;
758     private boolean breakcomment;
759     private MatchingBlockScanner matchBlock;
760
761     static {
762         // For SciNotes colors in preferences
763         commands.add("cos");
764         macros.add("sind");
765     }
766
767     public ScilabLexer(ScilabDocument doc) {
768         this(doc, new MatchingBlockScanner(doc), true);
769     }
770
771     public ScilabLexer(ScilabDocument doc, boolean update) {
772         this(doc, new MatchingBlockScanner(doc), update);
773     }
774
775     public ScilabLexer(ScilabDocument doc, MatchingBlockScanner matchBlock, boolean update) {
776         this.doc = doc;
777         this.elem = doc.getDefaultRootElement();
778         this.infile = doc.getFunctionsInDoc();
779         this.matchBlock = matchBlock;
780         if (update) {
781                 update();
782         }
783     }
784
785     public static void update() {
786        if (ScilabCommonsUtils.isScilabThread()) {
787            String[] vars = ScilabKeywords.GetVariablesName();
788            String[] funs = ScilabKeywords.GetFunctionsName();
789            String[] macs = ScilabKeywords.GetMacrosName();
790            variables.clear();
791            commands.clear();
792            macros.clear();
793            if (vars != null) {
794                variables.addAll(Arrays.asList(vars));
795            }
796            if (funs != null) {
797                commands.addAll(Arrays.asList(funs));
798            }
799            if (macs != null) {
800                macros.addAll(Arrays.asList(macs));
801            }
802         }
803     }
804
805     public void setRange(int p0, int p1) {
806         start = p0;
807         end = p1;
808         transposable = false;
809         breakstring = false;
810         yyreset(new ScilabDocumentReader(doc, p0, p1));
811         int currentLine = elem.getElementIndex(start);
812         if (currentLine != 0) {
813            ScilabDocument.ScilabLeafElement e = (ScilabDocument.ScilabLeafElement) elem.getElement(currentLine - 1);
814            if (e.isBrokenString()) {
815               yybegin(QSTRING);
816            } else if (e.isBlockComment()) {
817               yybegin(BLOCKCOMMENT);
818            }
819         }
820     }
821
822     public int yychar() {
823         return (int) yychar;
824     }
825
826     public int scan() throws IOException {
827         int ret = yylex();
828         int lastPos = start + yychar() + yylength();
829         if (lastPos == end - 1) {
830            ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBrokenString(breakstring);
831            breakstring = false;
832         } else if (lastPos == end) {
833            ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBlockComment(yystate() == BLOCKCOMMENT);
834         }
835         return ret;
836     }
837
838     public boolean isLineFinishedByBlockComment(int start, int end) {
839         this.start = start;
840         this.end = end;
841         try {           
842            yyreset(new ScilabDocumentReader(doc, start, end));
843            int tok = 0;
844            while (tok != ScilabLexerConstants.EOF) {
845               tok = yylex();
846            }
847         } catch (Exception e) { }
848         
849         return yystate() == BLOCKCOMMENT;
850     }
851
852     public int getKeyword(int pos, boolean strict) {
853         // Pre condition
854         if (elem == null) {
855             return ScilabLexerConstants.DEFAULT;
856         }
857
858         Element line = elem.getElement(elem.getElementIndex(pos));
859         int end = line.getEndOffset();
860         int tok = -1;
861         start = line.getStartOffset();
862         int startL = start;
863         int s = -1;
864
865         try {
866            yyreset(new ScilabDocumentReader(doc, start, end));
867            if (!strict) {
868               pos++;
869            }
870
871            while (startL < pos && (s != startL || yystate() == BREAKSTRING)) {
872                s = startL;
873                tok = yylex();
874                startL = start + yychar() + yylength();
875            }
876
877            return tok;
878         } catch (IOException e) {
879            return ScilabLexerConstants.DEFAULT;
880         }
881      }
882
883      public static ScilabTokens getScilabTokens(String str) {
884          ScilabDocument doc = new ScilabDocument(false);
885          try {
886              doc.insertString(0, str, null);
887          } catch (BadLocationException e) { }
888          return getScilabTokens(doc);
889      }
890
891      public static ScilabTokens getScilabTokens(ScilabDocument doc) {
892          ScilabLexer lexer = new ScilabLexer(doc);
893          lexer.yyreset(new ScilabDocumentReader(doc, 0, doc.getLength()));
894          ScilabTokens tokens = new ScilabTokens();
895          int tok = -1;
896          try {
897             while (tok != ScilabLexerConstants.EOF) {
898                tok = lexer.yylex();
899                tokens.add(tok, lexer.yychar() + lexer.yylength());
900             }
901          } catch (IOException e) { }
902  
903          return tokens;
904      }
905
906      public static class ScilabTokens {
907         private List<Integer> tokenType = new ArrayList<Integer>();
908         private List<Integer> tokenPos = new ArrayList<Integer>();
909
910         ScilabTokens() { }
911
912         void add(final int type, final int pos) {
913            tokenType.add(type);
914            tokenPos.add(pos);
915         }
916
917         public final List<Integer> getTokenType() {
918            return tokenType;
919         }
920
921         public final List<Integer> getTokenPos() {
922            return tokenPos;
923         }
924      }
925 \r
926 \r
927   /**\r
928    * Creates a new scanner\r
929    *\r
930    * @param   in  the java.io.Reader to read input from.\r
931    */\r
932   public ScilabLexer(java.io.Reader in) {\r
933     this.zzReader = in;\r
934   }\r
935 \r
936   /**\r
937    * Translates raw input code points to DFA table row\r
938    */\r
939   private static int zzCMap(int input) {\r
940     int offset = input & 255;\r
941     return offset == input ? ZZ_CMAP_BLOCKS[offset] : ZZ_CMAP_BLOCKS[ZZ_CMAP_TOP[input >> 8] | offset];\r
942   }\r
943 \r
944   /**\r
945    * Refills the input buffer.\r
946    *\r
947    * @return {@code false} iff there was new input.\r
948    * @exception java.io.IOException  if any I/O-Error occurs\r
949    */\r
950   private boolean zzRefill() throws java.io.IOException {\r
951 \r
952     /* first: make room (if you can) */\r
953     if (zzStartRead > 0) {\r
954       zzEndRead += zzFinalHighSurrogate;\r
955       zzFinalHighSurrogate = 0;\r
956       System.arraycopy(zzBuffer, zzStartRead,\r
957                        zzBuffer, 0,\r
958                        zzEndRead - zzStartRead);\r
959 \r
960       /* translate stored positions */\r
961       zzEndRead -= zzStartRead;\r
962       zzCurrentPos -= zzStartRead;\r
963       zzMarkedPos -= zzStartRead;\r
964       zzStartRead = 0;\r
965     }\r
966 \r
967     /* is the buffer big enough? */\r
968     if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) {\r
969       /* if not: blow it up */\r
970       char newBuffer[] = new char[zzBuffer.length * 2];\r
971       System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);\r
972       zzBuffer = newBuffer;\r
973       zzEndRead += zzFinalHighSurrogate;\r
974       zzFinalHighSurrogate = 0;\r
975     }\r
976 \r
977     /* fill the buffer with new input */\r
978     int requested = zzBuffer.length - zzEndRead;\r
979     int numRead = zzReader.read(zzBuffer, zzEndRead, requested);\r
980 \r
981     /* not supposed to occur according to specification of java.io.Reader */\r
982     if (numRead == 0) {\r
983       throw new java.io.IOException(\r
984           "Reader returned 0 characters. See JFlex examples/zero-reader for a workaround.");\r
985     }\r
986     if (numRead > 0) {\r
987       zzEndRead += numRead;\r
988       if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {\r
989         if (numRead == requested) { // We requested too few chars to encode a full Unicode character\r
990           --zzEndRead;\r
991           zzFinalHighSurrogate = 1;\r
992         } else {                    // There is room in the buffer for at least one more char\r
993           int c = zzReader.read();  // Expecting to read a paired low surrogate char\r
994           if (c == -1) {\r
995             return true;\r
996           } else {\r
997             zzBuffer[zzEndRead++] = (char)c;\r
998           }\r
999         }\r
1000       }\r
1001       /* potentially more input available */\r
1002       return false;\r
1003     }\r
1004 \r
1005     /* numRead < 0 ==> end of stream */\r
1006     return true;\r
1007   }\r
1008 \r
1009 \r
1010   /**\r
1011    * Closes the input reader.\r
1012    *\r
1013    * @throws java.io.IOException if the reader could not be closed.\r
1014    */\r
1015   public final void yyclose() throws java.io.IOException {\r
1016     zzAtEOF = true; // indicate end of file\r
1017     zzEndRead = zzStartRead; // invalidate buffer\r
1018 \r
1019     if (zzReader != null) {\r
1020       zzReader.close();\r
1021     }\r
1022   }\r
1023 \r
1024 \r
1025   /**\r
1026    * Resets the scanner to read from a new input stream.\r
1027    *\r
1028    * <p>Does not close the old reader.\r
1029    *\r
1030    * <p>All internal variables are reset, the old input stream <b>cannot</b> be reused (internal\r
1031    * buffer is discarded and lost). Lexical state is set to {@code ZZ_INITIAL}.\r
1032    *\r
1033    * <p>Internal scan buffer is resized down to its initial length, if it has grown.\r
1034    *\r
1035    * @param reader The new input stream.\r
1036    */\r
1037   public final void yyreset(java.io.Reader reader) {\r
1038     zzReader = reader;\r
1039     zzEOFDone = false;\r
1040     yyResetPosition();\r
1041     zzLexicalState = YYINITIAL;\r
1042     if (zzBuffer.length > ZZ_BUFFERSIZE) {\r
1043       zzBuffer = new char[ZZ_BUFFERSIZE];\r
1044     }\r
1045   }\r
1046 \r
1047   /**\r
1048    * Resets the input position.\r
1049    */\r
1050   private final void yyResetPosition() {\r
1051       zzAtBOL  = true;\r
1052       zzAtEOF  = false;\r
1053       zzCurrentPos = 0;\r
1054       zzMarkedPos = 0;\r
1055       zzStartRead = 0;\r
1056       zzEndRead = 0;\r
1057       zzFinalHighSurrogate = 0;\r
1058       yyline = 0;\r
1059       yycolumn = 0;\r
1060       yychar = 0L;\r
1061   }\r
1062 \r
1063 \r
1064   /**\r
1065    * Returns whether the scanner has reached the end of the reader it reads from.\r
1066    *\r
1067    * @return whether the scanner has reached EOF.\r
1068    */\r
1069   public final boolean yyatEOF() {\r
1070     return zzAtEOF;\r
1071   }\r
1072 \r
1073 \r
1074   /**\r
1075    * Returns the current lexical state.\r
1076    *\r
1077    * @return the current lexical state.\r
1078    */\r
1079   public final int yystate() {\r
1080     return zzLexicalState;\r
1081   }\r
1082 \r
1083 \r
1084   /**\r
1085    * Enters a new lexical state.\r
1086    *\r
1087    * @param newState the new lexical state\r
1088    */\r
1089   public final void yybegin(int newState) {\r
1090     zzLexicalState = newState;\r
1091   }\r
1092 \r
1093 \r
1094   /**\r
1095    * Returns the text matched by the current regular expression.\r
1096    *\r
1097    * @return the matched text.\r
1098    */\r
1099   public final String yytext() {\r
1100     return new String(zzBuffer, zzStartRead, zzMarkedPos-zzStartRead);\r
1101   }\r
1102 \r
1103 \r
1104   /**\r
1105    * Returns the character at the given position from the matched text.\r
1106    *\r
1107    * <p>It is equivalent to {@code yytext().charAt(pos)}, but faster.\r
1108    *\r
1109    * @param position the position of the character to fetch. A value from 0 to {@code yylength()-1}.\r
1110    *\r
1111    * @return the character at {@code position}.\r
1112    */\r
1113   public final char yycharat(int position) {\r
1114     return zzBuffer[zzStartRead + position];\r
1115   }\r
1116 \r
1117 \r
1118   /**\r
1119    * How many characters were matched.\r
1120    *\r
1121    * @return the length of the matched text region.\r
1122    */\r
1123   public final int yylength() {\r
1124     return zzMarkedPos-zzStartRead;\r
1125   }\r
1126 \r
1127 \r
1128   /**\r
1129    * Reports an error that occurred while scanning.\r
1130    *\r
1131    * <p>In a well-formed scanner (no or only correct usage of {@code yypushback(int)} and a\r
1132    * match-all fallback rule) this method will only be called with things that\r
1133    * "Can't Possibly Happen".\r
1134    *\r
1135    * <p>If this method is called, something is seriously wrong (e.g. a JFlex bug producing a faulty\r
1136    * scanner etc.).\r
1137    *\r
1138    * <p>Usual syntax/scanner level error handling should be done in error fallback rules.\r
1139    *\r
1140    * @param errorCode the code of the error message to display.\r
1141    */\r
1142   private static void zzScanError(int errorCode) {\r
1143     String message;\r
1144     try {\r
1145       message = ZZ_ERROR_MSG[errorCode];\r
1146     } catch (ArrayIndexOutOfBoundsException e) {\r
1147       message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];\r
1148     }\r
1149 \r
1150     throw new Error(message);\r
1151   }\r
1152 \r
1153 \r
1154   /**\r
1155    * Pushes the specified amount of characters back into the input stream.\r
1156    *\r
1157    * <p>They will be read again by then next call of the scanning method.\r
1158    *\r
1159    * @param number the number of characters to be read again. This number must not be greater than\r
1160    *     {@link #yylength()}.\r
1161    */\r
1162   public void yypushback(int number)  {\r
1163     if ( number > yylength() )\r
1164       zzScanError(ZZ_PUSHBACK_2BIG);\r
1165 \r
1166     zzMarkedPos -= number;\r
1167   }\r
1168 \r
1169 \r
1170 \r
1171 \r
1172   /**\r
1173    * Resumes scanning until the next regular expression is matched, the end of input is encountered\r
1174    * or an I/O-Error occurs.\r
1175    *\r
1176    * @return the next token.\r
1177    * @exception java.io.IOException if any I/O-Error occurs.\r
1178    */\r
1179   public int yylex() throws java.io.IOException {\r
1180     int zzInput;\r
1181     int zzAction;\r
1182 \r
1183     // cached fields:\r
1184     int zzCurrentPosL;\r
1185     int zzMarkedPosL;\r
1186     int zzEndReadL = zzEndRead;\r
1187     char[] zzBufferL = zzBuffer;\r
1188 \r
1189     int [] zzTransL = ZZ_TRANS;\r
1190     int [] zzRowMapL = ZZ_ROWMAP;\r
1191     int [] zzAttrL = ZZ_ATTRIBUTE;\r
1192 \r
1193     while (true) {\r
1194       zzMarkedPosL = zzMarkedPos;\r
1195 \r
1196       yychar+= zzMarkedPosL-zzStartRead;\r
1197 \r
1198       zzAction = -1;\r
1199 \r
1200       zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;\r
1201 \r
1202       zzState = ZZ_LEXSTATE[zzLexicalState];\r
1203 \r
1204       // set up zzAction for empty match case:\r
1205       int zzAttributes = zzAttrL[zzState];\r
1206       if ( (zzAttributes & 1) == 1 ) {\r
1207         zzAction = zzState;\r
1208       }\r
1209 \r
1210 \r
1211       zzForAction: {\r
1212         while (true) {\r
1213 \r
1214           if (zzCurrentPosL < zzEndReadL) {\r
1215             zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);\r
1216             zzCurrentPosL += Character.charCount(zzInput);\r
1217           }\r
1218           else if (zzAtEOF) {\r
1219             zzInput = YYEOF;\r
1220             break zzForAction;\r
1221           }\r
1222           else {\r
1223             // store back cached positions\r
1224             zzCurrentPos  = zzCurrentPosL;\r
1225             zzMarkedPos   = zzMarkedPosL;\r
1226             boolean eof = zzRefill();\r
1227             // get translated positions and possibly new buffer\r
1228             zzCurrentPosL  = zzCurrentPos;\r
1229             zzMarkedPosL   = zzMarkedPos;\r
1230             zzBufferL      = zzBuffer;\r
1231             zzEndReadL     = zzEndRead;\r
1232             if (eof) {\r
1233               zzInput = YYEOF;\r
1234               break zzForAction;\r
1235             }\r
1236             else {\r
1237               zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);\r
1238               zzCurrentPosL += Character.charCount(zzInput);\r
1239             }\r
1240           }\r
1241           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMap(zzInput) ];\r
1242           if (zzNext == -1) break zzForAction;\r
1243           zzState = zzNext;\r
1244 \r
1245           zzAttributes = zzAttrL[zzState];\r
1246           if ( (zzAttributes & 1) == 1 ) {\r
1247             zzAction = zzState;\r
1248             zzMarkedPosL = zzCurrentPosL;\r
1249             if ( (zzAttributes & 8) == 8 ) break zzForAction;\r
1250           }\r
1251 \r
1252         }\r
1253       }\r
1254 \r
1255       // store back cached position\r
1256       zzMarkedPos = zzMarkedPosL;\r
1257 \r
1258       if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {\r
1259         zzAtEOF = true;\r
1260               {\r
1261                 return ScilabLexerConstants.EOF;\r
1262               }\r
1263       }\r
1264       else {\r
1265         switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {\r
1266           case 1:\r
1267             { return ScilabLexerConstants.STRING;\r
1268             }\r
1269             // fall through\r
1270           case 45: break;\r
1271           case 2:\r
1272             { transposable = false;
1273                                    return ScilabLexerConstants.DEFAULT;\r
1274             }\r
1275             // fall through\r
1276           case 46: break;\r
1277           case 3:\r
1278             { return ScilabLexerConstants.TAB;\r
1279             }\r
1280             // fall through\r
1281           case 47: break;\r
1282           case 4:\r
1283             { return ScilabLexerConstants.WHITE;\r
1284             }\r
1285             // fall through\r
1286           case 48: break;\r
1287           case 5:\r
1288             { transposable = true;
1289                                    String str = yytext();
1290                                    if (commands.contains(str)) {
1291                                        yybegin(COMMANDS);
1292                                        return ScilabLexerConstants.COMMANDS;
1293                                    } else if (macros.contains(str)) {
1294                                        yybegin(COMMANDS);
1295                                        return ScilabLexerConstants.MACROS;
1296                                    } else if (infile.contains(str)) {
1297                                        yybegin(COMMANDS);
1298                                        return ScilabLexerConstants.MACROINFILE;
1299                                    } else {
1300                                        List<String>[] arr = doc.getInOutArgs(start + yychar());
1301                                        if (arr != null && (arr[0].contains(str) || arr[1].contains(str))) {
1302                                            return ScilabLexerConstants.INPUTOUTPUTARGS;
1303                                        } else if (variables.contains(str)) {
1304                                            return ScilabLexerConstants.VARIABLES;
1305                                        }
1306                                    }
1307                                    return ScilabLexerConstants.ID;\r
1308             }\r
1309             // fall through\r
1310           case 49: break;\r
1311           case 6:\r
1312             { transposable = false;
1313                                    beginString = zzStartRead;
1314                                    yybegin(QSTRING);
1315                                    return ScilabLexerConstants.STRING;\r
1316             }\r
1317             // fall through\r
1318           case 50: break;\r
1319           case 7:\r
1320             { transposable = false;
1321                                    return ScilabLexerConstants.SPECIAL;\r
1322             }\r
1323             // fall through\r
1324           case 51: break;\r
1325           case 8:\r
1326             { transposable = false;
1327                                    return ScilabLexerConstants.OPERATOR;\r
1328             }\r
1329             // fall through\r
1330           case 52: break;\r
1331           case 9:\r
1332             { if (transposable) {
1333                                        return ScilabLexerConstants.TRANSP;
1334                                     } else {
1335                                        beginString = zzStartRead;
1336                                        yybegin(QSTRING);
1337                                        return ScilabLexerConstants.STRING;
1338                                     }\r
1339             }\r
1340             // fall through\r
1341           case 53: break;\r
1342           case 10:\r
1343             { transposable = false;
1344                                    return ScilabLexerConstants.OPENCLOSE;\r
1345             }\r
1346             // fall through\r
1347           case 54: break;\r
1348           case 11:\r
1349             { transposable = true;
1350                                    return ScilabLexerConstants.OPENCLOSE;\r
1351             }\r
1352             // fall through\r
1353           case 55: break;\r
1354           case 12:\r
1355             { transposable = false;
1356                                    yybegin(FIELD);
1357                                    return ScilabLexerConstants.OPERATOR;\r
1358             }\r
1359             // fall through\r
1360           case 56: break;\r
1361           case 13:\r
1362             { transposable = true;
1363                                    return ScilabLexerConstants.NUMBER;\r
1364             }\r
1365             // fall through\r
1366           case 57: break;\r
1367           case 14:\r
1368             { return ScilabLexerConstants.TAB_STRING;\r
1369             }\r
1370             // fall through\r
1371           case 58: break;\r
1372           case 15:\r
1373             { return ScilabLexerConstants.DEFAULT;\r
1374             }\r
1375             // fall through\r
1376           case 59: break;\r
1377           case 16:\r
1378             { return ScilabLexerConstants.WHITE_STRING;\r
1379             }\r
1380             // fall through\r
1381           case 60: break;\r
1382           case 17:\r
1383             { transposable = false;
1384                                    yybegin(YYINITIAL);
1385                                    return ScilabLexerConstants.STRING;\r
1386             }\r
1387             // fall through\r
1388           case 61: break;\r
1389           case 18:\r
1390             { return ScilabLexerConstants.COMMENT;\r
1391             }\r
1392             // fall through\r
1393           case 62: break;\r
1394           case 19:\r
1395             { return ScilabLexerConstants.TAB_COMMENT;\r
1396             }\r
1397             // fall through\r
1398           case 63: break;\r
1399           case 20:\r
1400             { return ScilabLexerConstants.WHITE_COMMENT;\r
1401             }\r
1402             // fall through\r
1403           case 64: break;\r
1404           case 21:\r
1405             { yypushback(1);
1406                                    yybegin(YYINITIAL);\r
1407             }\r
1408             // fall through\r
1409           case 65: break;\r
1410           case 22:\r
1411             { \r
1412             }\r
1413             // fall through\r
1414           case 66: break;\r
1415           case 23:\r
1416             { transposable = true;
1417                                    return ScilabLexerConstants.FIELD;\r
1418             }\r
1419             // fall through\r
1420           case 67: break;\r
1421           case 24:\r
1422             { yybegin(COMMANDSWHITE);
1423                                    return ScilabLexerConstants.TAB;\r
1424             }\r
1425             // fall through\r
1426           case 68: break;\r
1427           case 25:\r
1428             { yybegin(COMMANDSWHITE);
1429                                    return ScilabLexerConstants.WHITE;\r
1430             }\r
1431             // fall through\r
1432           case 69: break;\r
1433           case 26:\r
1434             { yypushback(yylength());
1435                                    yybegin(YYINITIAL);\r
1436             }\r
1437             // fall through\r
1438           case 70: break;\r
1439           case 27:\r
1440             { return ScilabLexerConstants.ERROR;\r
1441             }\r
1442             // fall through\r
1443           case 71: break;\r
1444           case 28:\r
1445             { transposable = true;
1446                                    return ScilabLexerConstants.CONSTANTES;\r
1447             }\r
1448             // fall through\r
1449           case 72: break;\r
1450           case 29:\r
1451             { transposable = false;
1452                                    yypushback(2);
1453                                    yybegin(BLOCKCOMMENT);\r
1454             }\r
1455             // fall through\r
1456           case 73: break;\r
1457           case 30:\r
1458             { transposable = false;
1459                                    yypushback(2);
1460                                    yybegin(COMMENT);\r
1461             }\r
1462             // fall through\r
1463           case 74: break;\r
1464           case 31:\r
1465             { transposable = false;
1466                                    return ScilabLexerConstants.SKEYWORD;\r
1467             }\r
1468             // fall through\r
1469           case 75: break;\r
1470           case 32:\r
1471             { transposable = false;
1472                                    return ScilabLexerConstants.OSKEYWORD;\r
1473             }\r
1474             // fall through\r
1475           case 76: break;\r
1476           case 33:\r
1477             { yypushback(yylength());
1478                                    yybegin(BREAKSTRING);
1479                                    transposable = false;
1480                                    return ScilabLexerConstants.STRING;\r
1481             }\r
1482             // fall through\r
1483           case 77: break;\r
1484           case 34:\r
1485             { return ScilabLexerConstants.LATEX;\r
1486             }\r
1487             // fall through\r
1488           case 78: break;\r
1489           case 35:\r
1490             { yybegin(YYINITIAL);
1491                                    return ScilabLexerConstants.COMMENT;\r
1492             }\r
1493             // fall through\r
1494           case 79: break;\r
1495           case 36:\r
1496             { breakstring = true;
1497                                    return ScilabLexerConstants.SPECIAL;\r
1498             }\r
1499             // fall through\r
1500           case 80: break;\r
1501           case 37:\r
1502             { transposable = false;
1503                                    if (matchBlock != null) {
1504                                       MatchingBlockScanner.MatchingPositions pos = matchBlock.getMatchingBlock(start + yychar() + yylength(), false);
1505                                       if (pos != null) {
1506                                          try {
1507                                              String match = doc.getText(pos.secondB, pos.secondE - pos.secondB);
1508                                              if (match.equals("function")) {
1509                                                 return ScilabLexerConstants.FKEYWORD;
1510                                              }
1511                                          } catch (BadLocationException e) { }
1512                                       }
1513                                    }
1514                                    return ScilabLexerConstants.OSKEYWORD;\r
1515             }\r
1516             // fall through\r
1517           case 81: break;\r
1518           case 38:\r
1519             { transposable = false;
1520                                    return ScilabLexerConstants.ELSEIF;\r
1521             }\r
1522             // fall through\r
1523           case 82: break;\r
1524           case 39:\r
1525             { transposable = false;
1526                                    return ScilabLexerConstants.CKEYWORD;\r
1527             }\r
1528             // fall through\r
1529           case 83: break;\r
1530           case 40:\r
1531             { return ScilabLexerConstants.AUTHORS;\r
1532             }\r
1533             // fall through\r
1534           case 84: break;\r
1535           case 41:\r
1536             { return ScilabLexerConstants.TODO;\r
1537             }\r
1538             // fall through\r
1539           case 85: break;\r
1540           case 42:\r
1541             { return ScilabLexerConstants.URL;\r
1542             }\r
1543             // fall through\r
1544           case 86: break;\r
1545           case 43:\r
1546             { transposable = false;
1547                                    return ScilabLexerConstants.FKEYWORD;\r
1548             }\r
1549             // fall through\r
1550           case 87: break;\r
1551           case 44:\r
1552             { return ScilabLexerConstants.MAIL;\r
1553             }\r
1554             // fall through\r
1555           case 88: break;\r
1556           default:\r
1557             zzScanError(ZZ_NO_MATCH);\r
1558         }\r
1559       }\r
1560     }\r
1561   }\r
1562 \r
1563 \r
1564 }\r