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