001: /* The following code was generated by JFlex 1.3 on 4/12/01 12:35 PM */
002:
003: /*
004: * Copyright (c) 2001, Jacob Smullyan.
005: *
006: * This is part of SkunkDAV, a WebDAV client. See http://skunkdav.sourceforge.net/
007: * for the latest version.
008: *
009: * SkunkDAV is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU General Public License as published
011: * by the Free Software Foundation; either version 2, or (at your option)
012: * any later version.
013: *
014: * SkunkDAV is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * General Public License for more details.
018: *
019: * You should have received a copy of the GNU General Public License
020: * along with SkunkDAV; see the file COPYING. If not, write to the Free
021: * Software Foundation, 59 Temple Place - Suite 330, Boston, MA
022: * 02111-1307, USA.
023: */
024:
025: package org.skunk.swing.text.syntax;
026:
027: import java.io.IOException;
028: import java.io.StringReader;
029: import org.skunk.trace.Debug;
030:
031: /**
032: * This class is a scanner generated by
033: * <a href="http://www.jflex.de/">JFlex</a> 1.3
034: * on 4/12/01 12:35 PM from the specification file
035: * <tt>file:/home/smulloni/workdir/skunkdav/org/skunk/swing/text/syntax/stml.flex</tt>
036: */
037: public class STMLFlexScanner extends FlexScanner {
038:
039: /** This character denotes the end of file */
040: final public static int YYEOF = -1;
041:
042: /** initial size of the lookahead buffer */
043: final private static int YY_BUFFERSIZE = 16384;
044:
045: /** lexical states */
046: final public static int TAG_STATE = 1;
047: final public static int SCRIPT_STATE = 5;
048: final public static int AED_TAG_STATE = 6;
049: final public static int TAG_ATTRIBUTE_STATE = 2;
050: final public static int AED_EXTREME_COMMENT_STATE = 8;
051: final public static int COMMENT_STATE = 4;
052: final public static int AED_TAG_ATTRIBUTE_STATE = 7;
053: final public static int TAG_VALUE_STATE = 3;
054: final public static int YYINITIAL = 0;
055: final public static int AED_COMMENT_STATE = 9;
056:
057: /**
058: * Translates characters to character classes
059: */
060: final private static String yycmap_packed = "\11\22\1\35\1\64\1\0\1\35\1\10\16\22\4\0\1\35\1\2"
061: + "\1\24\1\17\1\36\1\0\1\21\1\25\2\0\1\20\2\0\1\3"
062: + "\1\0\1\5\12\22\1\6\1\23\1\1\1\63\1\4\2\0\2\36"
063: + "\1\30\1\26\1\34\3\36\1\41\5\36\1\27\1\33\1\36\1\40"
064: + "\1\37\1\31\4\36\1\32\1\36\4\0\1\36\1\7\1\43\1\57"
065: + "\1\11\1\51\1\14\1\52\1\50\1\56\1\54\1\36\1\60\1\44"
066: + "\1\13\1\15\1\12\1\46\1\36\1\47\1\45\1\16\1\53\1\42"
067: + "\1\55\1\62\1\61\1\36\4\0\41\22\2\0\4\36\4\0\1\36"
068: + "\12\0\1\36\4\0\1\36\5\0\27\36\1\0\37\36\1\0\376\36"
069: + "\4\0\36\36\70\0\131\36\7\0\11\36\2\0\7\36\16\0\2\36"
070: + "\16\0\5\36\33\0\106\22\32\0\2\22\30\0\1\36\13\0\1\36"
071: + "\1\0\3\36\1\0\1\36\1\0\24\36\1\0\54\36\1\0\7\36"
072: + "\3\0\1\36\1\0\1\36\1\0\1\36\1\0\1\36\1\0\22\36"
073: + "\15\0\14\36\1\0\102\36\1\0\14\36\1\0\44\36\1\0\4\22"
074: + "\11\0\65\36\2\0\2\36\2\0\2\36\3\0\34\36\2\0\10\36"
075: + "\2\0\2\36\67\0\46\36\2\0\1\36\7\0\47\36\11\0\21\22"
076: + "\1\0\27\22\1\0\3\22\1\0\1\22\1\0\2\22\1\0\1\22"
077: + "\13\0\33\36\5\0\3\36\56\0\32\36\5\0\13\36\10\22\15\0"
078: + "\12\22\6\0\1\22\107\36\2\0\5\36\1\0\17\36\1\0\4\36"
079: + "\1\0\1\36\7\22\2\0\6\22\2\36\2\22\1\0\4\22\2\0"
080: + "\12\22\u0207\0\3\22\1\0\65\36\2\0\1\22\1\36\20\22\3\0"
081: + "\4\22\3\0\12\36\2\22\2\0\12\22\21\0\3\22\1\0\10\36"
082: + "\2\0\2\36\2\0\26\36\1\0\7\36\1\0\1\36\3\0\4\36"
083: + "\2\0\1\22\1\0\7\22\2\0\2\22\2\0\3\22\11\0\1\22"
084: + "\4\0\2\36\1\0\3\36\2\22\2\0\12\22\4\36\16\0\1\22"
085: + "\2\0\6\36\4\0\2\36\2\0\26\36\1\0\7\36\1\0\2\36"
086: + "\1\0\2\36\1\0\2\36\2\0\1\22\1\0\5\22\4\0\2\22"
087: + "\2\0\3\22\13\0\4\36\1\0\1\36\7\0\14\22\3\36\14\0"
088: + "\3\22\1\0\7\36\1\0\1\36\1\0\3\36\1\0\26\36\1\0"
089: + "\7\36\1\0\2\36\1\0\5\36\2\0\1\22\1\36\10\22\1\0"
090: + "\3\22\1\0\3\22\22\0\1\36\5\0\12\22\21\0\3\22\1\0"
091: + "\10\36\2\0\2\36\2\0\26\36\1\0\7\36\1\0\2\36\2\0"
092: + "\4\36\2\0\1\22\1\36\6\22\3\0\2\22\2\0\3\22\10\0"
093: + "\2\22\4\0\2\36\1\0\3\36\4\0\12\22\22\0\2\22\1\0"
094: + "\6\36\3\0\3\36\1\0\4\36\3\0\2\36\1\0\1\36\1\0"
095: + "\2\36\3\0\2\36\3\0\3\36\3\0\10\36\1\0\3\36\4\0"
096: + "\5\22\3\0\3\22\1\0\4\22\11\0\1\22\17\0\11\22\21\0"
097: + "\3\22\1\0\10\36\1\0\3\36\1\0\27\36\1\0\12\36\1\0"
098: + "\5\36\4\0\7\22\1\0\3\22\1\0\4\22\7\0\2\22\11\0"
099: + "\2\36\4\0\12\22\22\0\2\22\1\0\10\36\1\0\3\36\1\0"
100: + "\27\36\1\0\12\36\1\0\5\36\4\0\7\22\1\0\3\22\1\0"
101: + "\4\22\7\0\2\22\7\0\1\36\1\0\2\36\4\0\12\22\22\0"
102: + "\2\22\1\0\10\36\1\0\3\36\1\0\27\36\1\0\20\36\4\0"
103: + "\6\22\2\0\3\22\1\0\4\22\11\0\1\22\10\0\2\36\4\0"
104: + "\12\22\221\0\56\36\1\0\1\36\1\22\2\36\7\22\4\0\10\36"
105: + "\10\22\1\0\12\22\47\0\2\36\1\0\1\36\2\0\2\36\1\0"
106: + "\1\36\2\0\1\36\6\0\4\36\1\0\7\36\1\0\3\36\1\0"
107: + "\1\36\1\0\1\36\2\0\2\36\1\0\2\36\1\0\1\36\1\22"
108: + "\2\36\6\22\1\0\2\22\1\36\2\0\5\36\1\0\1\36\1\0"
109: + "\6\22\2\0\12\22\2\0\2\36\72\0\2\22\6\0\12\22\13\0"
110: + "\1\22\1\0\1\22\1\0\1\22\4\0\2\22\10\36\1\0\41\36"
111: + "\7\0\24\22\1\0\6\22\4\0\6\22\1\0\1\22\1\0\25\22"
112: + "\3\0\7\22\1\0\1\22\346\0\46\36\12\0\47\36\11\0\132\36"
113: + "\5\0\104\36\5\0\122\36\u0c06\0\234\36\4\0\132\36\6\0\26\36"
114: + "\2\0\6\36\2\0\46\36\2\0\6\36\2\0\10\36\1\0\1\36"
115: + "\1\0\1\36\1\0\1\36\1\0\37\36\2\0\65\36\1\0\7\36"
116: + "\1\0\1\36\3\0\3\36\1\0\7\36\3\0\4\36\2\0\6\36"
117: + "\4\0\15\36\5\0\3\36\1\0\7\36\17\0\4\22\32\0\5\22"
118: + "\20\0\2\36\51\0\6\22\17\0\1\36\40\0\15\36\43\0\15\22"
119: + "\4\0\1\22\40\0\1\36\4\0\1\36\2\0\12\36\1\0\1\36"
120: + "\2\0\6\36\6\0\1\36\1\0\1\36\1\0\1\36\1\0\10\36"
121: + "\1\0\6\36\47\0\43\36\u0e82\0\1\36\1\0\1\36\31\0\11\36"
122: + "\6\22\1\0\5\36\13\0\124\36\4\0\2\22\4\36\2\0\132\36"
123: + "\1\0\3\36\6\0\50\36\4\0\136\36\u1c71\0\u51a6\36\u0c5a\0\u2ba4\36"
124: + "\u215c\0\u012e\36\322\0\7\36\14\0\5\36\6\0\1\22\12\36\1\0"
125: + "\15\36\1\0\5\36\1\0\1\36\1\0\2\36\1\0\2\36\1\0"
126: + "\154\36\41\0\u016b\36\22\0\100\36\2\0\66\36\50\0\14\36\44\0"
127: + "\4\22\17\0\2\36\30\0\3\36\31\0\1\36\6\0\3\36\1\0"
128: + "\1\36\1\0\207\36\2\0\1\22\4\0\1\36\13\0\12\22\7\0"
129: + "\32\36\4\0\1\36\1\0\32\36\13\0\131\36\3\0\6\36\2\0"
130: + "\6\36\2\0\6\36\2\0\3\36\3\0\2\36\3\0\2\36\31\0";
131:
132: /**
133: * Translates characters to character classes
134: */
135: final private static char[] yycmap = yy_unpack_cmap(yycmap_packed);
136:
137: /**
138: * Translates a state to a row index in the transition table
139: */
140: final private static int yy_rowMap[] = { 0, 53, 106, 159, 212, 265,
141: 318, 371, 424, 477, 530, 583, 530, 636, 689, 742, 530, 795,
142: 530, 530, 848, 901, 954, 1007, 530, 1060, 530, 1113, 1166,
143: 1219, 1272, 1325, 1378, 1431, 1484, 1537, 1590, 1643, 1696,
144: 1749, 1802, 1855, 1908, 1961, 2014, 2067, 2120, 530, 2173,
145: 2226, 530, 2279, 530, 2332, 530, 2385, 2438, 2491, 2544,
146: 2597, 2650, 2703, 1749, 2756, 2809, 2862, 2915, 2968, 3021,
147: 3074, 3127, 3180, 3233, 3286, 3339, 3392, 3445, 3498, 3551,
148: 3604, 3657, 3710, 3763, 3816, 530, 3869, 3922, 3975, 4028,
149: 4081, 2067, 2067, 4134, 4187, 4240, 4293, 530, 530, 4346,
150: 4399, 530, 530, 530, 530, 4452, 4505, 4558, 4611, 4664,
151: 4717, 4770, 4823, 4876, 4929, 4982, 5035, 5088, 5141, 5194,
152: 5247, 5300, 5353, 5406, 5459, 5512, 5565, 5618, 5671, 5724,
153: 5777, 5830, 5883, 5936, 5989, 530, 6042, 530, 6095, 6148,
154: 6201, 6254, 6307, 6360, 6413, 6466, 6519, 6572, 6625, 6678,
155: 6731, 6784, 6837, 6890, 6943, 6996, 7049, 7102, 7155, 7208,
156: 7261, 7314, 7367, 530, 7420, 7473, 1431, 7526, 7579, 7632,
157: 7685, 7738, 7791, 7844, 7897, 7950, 8003, 8056, 8109, 8162,
158: 8215, 8268, 8321, 8374, 8427, 8480, 8533, 8586, 8639, 8692,
159: 8745, 530, 8798, 8851, 8904, 8957, 9010, 9063, 9116, 9169,
160: 9222, 9275, 530, 9328, 9381, 9434, 9487, 4399, 9540, 9593,
161: 9646, 530, 9699, 9752 };
162:
163: /**
164: * The packed transition table of the DFA (part 0)
165: */
166: final private static String yy_packed0 = "\1\13\1\14\2\13\1\15\1\13\1\16\12\13\1\17"
167: + "\43\13\1\20\1\13\2\20\1\21\3\20\1\13\24\20"
168: + "\1\13\25\20\2\13\1\22\1\13\2\22\1\23\3\22"
169: + "\1\13\24\22\1\13\25\22\1\24\1\13\1\25\1\13"
170: + "\2\25\1\21\3\25\1\13\13\25\1\26\1\27\7\25"
171: + "\1\13\25\25\5\13\1\30\61\13\1\31\1\32\62\31"
172: + "\1\33\6\13\1\34\2\13\1\35\1\13\1\36\1\37"
173: + "\1\13\1\40\23\13\1\41\1\42\1\43\1\44\1\13"
174: + "\1\45\1\13\1\46\1\47\1\50\1\51\1\52\1\53"
175: + "\1\54\13\13\1\55\1\56\1\13\6\57\7\13\7\57"
176: + "\1\13\25\57\1\60\21\13\1\61\45\13\1\62\63\13"
177: + "\65\0\2\63\1\64\2\63\1\65\1\66\56\63\4\0"
178: + "\1\67\71\0\6\70\3\0\1\70\3\0\7\70\1\0"
179: + "\25\70\2\0\1\20\1\0\2\20\1\0\3\20\1\0"
180: + "\24\20\1\0\25\20\2\0\1\22\1\0\2\22\1\0"
181: + "\3\22\1\0\24\22\1\0\25\22\2\0\1\25\1\0"
182: + "\2\25\1\0\3\25\1\0\24\25\1\0\25\25\2\0"
183: + "\1\26\1\71\2\26\1\71\3\26\1\71\13\26\1\25"
184: + "\10\26\1\71\25\26\2\71\1\27\1\72\2\27\1\72"
185: + "\3\27\1\72\14\27\1\25\7\27\1\72\25\27\2\72"
186: + "\3\0\1\73\66\0\1\74\63\0\1\21\72\0\1\75"
187: + "\30\0\1\76\7\0\1\77\56\0\1\100\5\0\1\101"
188: + "\55\0\1\102\2\0\1\103\12\0\1\104\51\0\1\105"
189: + "\11\0\1\106\46\0\1\107\70\0\1\110\27\0\1\111"
190: + "\66\0\1\112\31\0\1\113\32\0\1\114\26\0\1\115"
191: + "\33\0\1\116\1\0\1\117\26\0\1\120\33\0\1\121"
192: + "\41\0\1\122\57\0\1\107\30\0\1\123\1\0\1\124"
193: + "\34\0\1\125\55\0\1\126\12\0\1\127\51\0\1\130"
194: + "\10\0\1\131\57\0\1\132\21\0\1\23\60\0\7\133"
195: + "\1\134\1\0\53\133\12\0\6\57\3\0\1\57\3\0"
196: + "\7\57\1\0\25\57\10\0\1\135\64\0\1\136\61\0"
197: + "\1\137\22\0\1\140\22\0\1\140\13\0\5\141\1\142"
198: + "\3\141\1\143\5\141\1\144\1\145\44\141\11\0\6\70"
199: + "\3\0\1\70\1\146\2\0\7\70\1\0\25\70\2\0"
200: + "\24\71\1\147\40\71\25\72\1\147\37\72\4\0\1\150"
201: + "\117\0\1\151\5\0\1\151\32\0\1\152\1\0\1\153"
202: + "\60\0\1\154\4\0\1\155\25\0\1\107\70\0\1\125"
203: + "\60\0\1\156\65\0\1\157\6\0\1\160\57\0\1\161"
204: + "\26\0\1\162\134\0\1\125\51\0\1\157\62\0\1\125"
205: + "\70\0\1\163\26\0\1\164\35\0\1\125\31\0\1\165"
206: + "\1\125\60\0\1\166\70\0\1\167\32\0\1\170\67\0"
207: + "\1\171\21\0\1\125\117\0\1\125\5\0\1\172\4\0"
208: + "\1\173\23\0\1\174\115\0\1\175\32\0\1\176\115\0"
209: + "\1\177\1\0\1\125\25\0\1\200\122\0\1\201\71\0"
210: + "\1\202\54\0\1\203\71\0\1\204\27\0\1\205\26\0"
211: + "\1\206\25\0\1\207\65\0\1\210\62\0\1\211\73\0"
212: + "\1\212\14\0\1\212\47\0\1\213\60\0\1\214\67\0"
213: + "\1\215\16\0\1\215\102\0\1\216\34\0\1\217\124\0"
214: + "\1\157\51\0\1\220\37\0\1\221\62\0\1\125\122\0"
215: + "\1\125\24\0\1\222\66\0\1\223\115\0\1\125\65\0"
216: + "\1\125\67\0\1\224\25\0\1\107\115\0\1\225\7\0"
217: + "\1\126\65\0\1\226\55\0\1\157\62\0\1\227\74\0"
218: + "\1\100\25\0\1\125\26\0\1\230\34\0\1\125\114\0"
219: + "\1\231\33\0\1\232\116\0\1\233\35\0\1\125\113\0"
220: + "\1\157\36\0\1\125\117\0\1\234\56\0\1\235\36\0"
221: + "\1\236\60\0\1\237\5\0\1\240\56\0\1\241\16\0"
222: + "\1\241\47\0\1\242\55\0\1\243\120\0\1\244\6\0"
223: + "\1\244\27\0\1\245\30\0\1\246\75\0\1\247\54\0"
224: + "\1\250\74\0\1\251\57\0\1\125\63\0\1\203\31\0"
225: + "\1\252\125\0\1\201\57\0\1\253\70\0\1\130\22\0"
226: + "\1\254\117\0\1\255\67\0\1\203\70\0\1\256\25\0"
227: + "\1\201\130\0\1\125\55\0\1\257\25\0\1\260\60\0"
228: + "\1\261\74\0\1\262\12\0\1\262\46\0\1\263\112\0"
229: + "\1\264\12\0\1\264\25\0\1\265\64\0\1\266\61\0"
230: + "\1\100\63\0\1\267\116\0\1\270\35\0\1\271\62\0"
231: + "\1\272\116\0\1\105\71\0\1\157\24\0\1\273\37\0"
232: + "\1\274\2\0\1\275\23\0\1\276\55\0\1\277\112\0"
233: + "\1\300\26\0\1\300\17\0\1\301\103\0\1\302\12\0"
234: + "\1\302\32\0\1\303\123\0\1\157\54\0\1\304\75\0"
235: + "\1\107\21\0\1\203\66\0\1\164\63\0\1\305\115\0"
236: + "\1\306\36\0\1\124\62\0\1\307\104\0\1\310\12\0"
237: + "\1\310\33\0\1\311\65\0\1\312\12\0\1\312\50\0"
238: + "\1\203\65\0\1\155\61\0\1\313\67\0\1\314\62\0"
239: + "\1\315\64\0\1\316\17\0\1\316\46\0\1\317\114\0"
240: + "\1\320\61\0\1\321\36\0\1\322\47\0\4\316\1\323"
241: + "\17\316\1\324\1\325\37\316\12\0\1\245\63\0\1\273"
242: + "\71\0\1\240\46\0\24\324\1\316\40\324\25\325\1\316"
243: + "\37\325";
244:
245: /**
246: * The transition table of the DFA
247: */
248: final private static int yytrans[] = yy_unpack();
249:
250: /* error codes */
251: final private static int YY_UNKNOWN_ERROR = 0;
252: final private static int YY_ILLEGAL_STATE = 1;
253: final private static int YY_NO_MATCH = 2;
254: final private static int YY_PUSHBACK_2BIG = 3;
255:
256: /* error messages for the codes above */
257: final private static String YY_ERROR_MSG[] = {
258: "Unkown internal scanner error",
259: "Internal error: unknown state",
260: "Error: could not match input",
261: "Error: pushback value was too large" };
262:
263: /**
264: * YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
265: */
266: private final static byte YY_ATTRIBUTE[] = { 0, 1, 1, 1, 0, 0, 0,
267: 0, 0, 0, 9, 3, 9, 1, 1, 1, 9, 1, 9, 9, 1, 1, 1, 1, 9, 1, 9,
268: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
269: 9, 1, 1, 13, 5, 9, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
270: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
271: 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 13, 9, 5, 5, 9, 9, 9, 9, 0,
272: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
273: 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
274: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
275: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
276: 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
277: 0, 0, 0, 0, 0, 9, 0, 0 };
278:
279: /** the input device */
280: private java.io.Reader yy_reader;
281:
282: /** the current state of the DFA */
283: private int yy_state;
284:
285: /** the current lexical state */
286: private int yy_lexical_state = YYINITIAL;
287:
288: /** this buffer contains the current text to be matched and is
289: the source of the yytext() string */
290: private char yy_buffer[] = new char[YY_BUFFERSIZE];
291:
292: /** the textposition at the last accepting state */
293: private int yy_markedPos;
294:
295: /** the textposition at the last state to be included in yytext */
296: private int yy_pushbackPos;
297:
298: /** the current text position in the buffer */
299: private int yy_currentPos;
300:
301: /** startRead marks the beginning of the yytext() string in the buffer */
302: private int yy_startRead;
303:
304: /** endRead marks the last character in the buffer, that has been read
305: from input */
306: private int yy_endRead;
307:
308: /** number of newlines encountered up to the start of the matched text */
309: private int yyline;
310:
311: /** the number of characters up to the start of the matched text */
312: private int yychar;
313:
314: /**
315: * the number of characters from the last newline up to the start of the
316: * matched text
317: */
318: private int yycolumn;
319:
320: /**
321: * yy_atBOL == true <=> the scanner is currently at the beginning of a line
322: */
323: private boolean yy_atBOL = true;
324:
325: /** yy_atEOF == true <=> the scanner is at the EOF */
326: private boolean yy_atEOF;
327:
328: /* user code: */
329: private boolean inScript = false;
330: private boolean open = false;
331: private boolean inComment = false;
332: private StringBuffer scriptBuffer = new StringBuffer();
333: private boolean inLanguage = false;
334: private String scriptLanguage = "javascript";
335:
336: public void scan() throws IOException {
337: while (!yy_atEOF) {
338: yylex();
339: }
340: }
341:
342: private int applyStyle(int type) {
343: return applyStyle(type, yychar, yylength());
344: }
345:
346: /**
347: * Creates a new scanner
348: * There is also a java.io.InputStream version of this constructor.
349: *
350: * @param in the java.io.Reader to read input from.
351: */
352: public STMLFlexScanner(java.io.Reader in) {
353: this .yy_reader = in;
354: }
355:
356: /**
357: * Creates a new scanner.
358: * There is also java.io.Reader version of this constructor.
359: *
360: * @param in the java.io.Inputstream to read input from.
361: */
362: public STMLFlexScanner(java.io.InputStream in) {
363: this (new java.io.InputStreamReader(in));
364: }
365:
366: /**
367: * Unpacks the split, compressed DFA transition table.
368: *
369: * @return the unpacked transition table
370: */
371: private static int[] yy_unpack() {
372: int[] trans = new int[9805];
373: int offset = 0;
374: offset = yy_unpack(yy_packed0, offset, trans);
375: return trans;
376: }
377:
378: /**
379: * Unpacks the compressed DFA transition table.
380: *
381: * @param packed the packed transition table
382: * @return the index of the last entry
383: */
384: private static int yy_unpack(String packed, int offset, int[] trans) {
385: int i = 0; /* index in packed string */
386: int j = offset; /* index in unpacked array */
387: int l = packed.length();
388: while (i < l) {
389: int count = packed.charAt(i++);
390: int value = packed.charAt(i++);
391: value--;
392: do
393: trans[j++] = value;
394: while (--count > 0);
395: }
396: return j;
397: }
398:
399: /**
400: * Unpacks the compressed character translation table.
401: *
402: * @param packed the packed character translation table
403: * @return the unpacked character translation table
404: */
405: private static char[] yy_unpack_cmap(String packed) {
406: char[] map = new char[0x10000];
407: int i = 0; /* index in packed string */
408: int j = 0; /* index in unpacked array */
409: while (i < 1420) {
410: int count = packed.charAt(i++);
411: char value = packed.charAt(i++);
412: do
413: map[j++] = value;
414: while (--count > 0);
415: }
416: return map;
417: }
418:
419: /**
420: * Gets the next input character.
421: *
422: * @return the next character of the input stream, EOF if the
423: * end of the stream is reached.
424: * @exception IOException if any I/O-Error occurs
425: */
426: private int yy_advance() throws java.io.IOException {
427:
428: /* standard case */
429: if (yy_currentPos < yy_endRead)
430: return yy_buffer[yy_currentPos++];
431:
432: /* if the eof is reached, we don't need to work hard */
433: if (yy_atEOF)
434: return YYEOF;
435:
436: /* otherwise: need to refill the buffer */
437:
438: /* first: make room (if you can) */
439: if (yy_startRead > 0) {
440: System.arraycopy(yy_buffer, yy_startRead, yy_buffer, 0,
441: yy_endRead - yy_startRead);
442:
443: /* translate stored positions */
444: yy_endRead -= yy_startRead;
445: yy_currentPos -= yy_startRead;
446: yy_markedPos -= yy_startRead;
447: yy_pushbackPos -= yy_startRead;
448: yy_startRead = 0;
449: }
450:
451: /* is the buffer big enough? */
452: if (yy_currentPos >= yy_buffer.length) {
453: /* if not: blow it up */
454: char newBuffer[] = new char[yy_currentPos * 2];
455: System.arraycopy(yy_buffer, 0, newBuffer, 0,
456: yy_buffer.length);
457: yy_buffer = newBuffer;
458: }
459:
460: /* finally: fill the buffer with new input */
461: int numRead = yy_reader.read(yy_buffer, yy_endRead,
462: yy_buffer.length - yy_endRead);
463:
464: if (numRead == -1)
465: return YYEOF;
466:
467: yy_endRead += numRead;
468:
469: return yy_buffer[yy_currentPos++];
470: }
471:
472: /**
473: * Closes the input stream.
474: */
475: final public void yyclose() throws java.io.IOException {
476: yy_atEOF = true; /* indicate end of file */
477: yy_endRead = yy_startRead; /* invalidate buffer */
478:
479: if (yy_reader != null)
480: yy_reader.close();
481: }
482:
483: /**
484: * Closes the current stream, and resets the
485: * scanner to read from a new input stream.
486: *
487: * All internal variables are reset, the old input stream
488: * <b>cannot</b> be reused (internal buffer is discarded and lost).
489: * Lexical state is set to <tt>YY_INITIAL</tt>.
490: *
491: * @param reader the new input stream
492: */
493: final public void yyreset(java.io.Reader reader)
494: throws java.io.IOException {
495: yyclose();
496: yy_reader = reader;
497: yy_atBOL = true;
498: yy_atEOF = false;
499: yy_endRead = yy_startRead = 0;
500: yy_currentPos = yy_markedPos = yy_pushbackPos = 0;
501: yyline = yychar = yycolumn = 0;
502: yy_lexical_state = YYINITIAL;
503: }
504:
505: /**
506: * Returns the current lexical state.
507: */
508: final public int yystate() {
509: return yy_lexical_state;
510: }
511:
512: /**
513: * Enters a new lexical state
514: *
515: * @param newState the new lexical state
516: */
517: final public void yybegin(int newState) {
518: yy_lexical_state = newState;
519: }
520:
521: /**
522: * Returns the text matched by the current regular expression.
523: */
524: final public String yytext() {
525: return new String(yy_buffer, yy_startRead, yy_markedPos
526: - yy_startRead);
527: }
528:
529: /**
530: * Returns the character at position <tt>pos</tt> from the
531: * matched text.
532: *
533: * It is equivalent to yytext().charAt(pos), but faster
534: *
535: * @param pos the position of the character to fetch.
536: * A value from 0 to yylength()-1.
537: *
538: * @return the character at position pos
539: */
540: final public char yycharat(int pos) {
541: return yy_buffer[yy_startRead + pos];
542: }
543:
544: /**
545: * Returns the length of the matched text region.
546: */
547: final public int yylength() {
548: return yy_markedPos - yy_startRead;
549: }
550:
551: /**
552: * Reports an error that occured while scanning.
553: *
554: * In a wellformed scanner (no or only correct usage of
555: * yypushback(int) and a match-all fallback rule) this method
556: * will only be called with things that "Can't Possibly Happen".
557: * If this method is called, something is seriously wrong
558: * (e.g. a JFlex bug producing a faulty scanner etc.).
559: *
560: * Usual syntax/scanner level error handling should be done
561: * in error fallback rules.
562: *
563: * @param errorCode the code of the errormessage to display
564: */
565: private void yy_ScanError(int errorCode) {
566: String message;
567: try {
568: message = YY_ERROR_MSG[errorCode];
569: } catch (ArrayIndexOutOfBoundsException e) {
570: message = YY_ERROR_MSG[YY_UNKNOWN_ERROR];
571: }
572:
573: throw new Error(message);
574: }
575:
576: /**
577: * Pushes the specified amount of characters back into the input stream.
578: *
579: * They will be read again by then next call of the scanning method
580: *
581: * @param number the number of characters to be read again.
582: * This number must not be greater than yylength()!
583: */
584: private void yypushback(int number) {
585: if (number > yylength())
586: yy_ScanError(YY_PUSHBACK_2BIG);
587:
588: yy_markedPos -= number;
589: }
590:
591: /**
592: * Resumes scanning until the next regular expression is matched,
593: * the end of input is encountered or an I/O-Error occurs.
594: *
595: * @return the next token
596: * @exception IOException if any I/O-Error occurs
597: */
598: public int yylex() throws java.io.IOException {
599: int yy_input;
600: int yy_action;
601:
602: yy_pushbackPos = -1;
603: boolean yy_was_pushback;
604:
605: while (true) {
606:
607: yychar += yylength();
608:
609: yy_action = -1;
610:
611: yy_currentPos = yy_startRead = yy_markedPos;
612:
613: yy_state = yy_lexical_state;
614:
615: yy_was_pushback = false;
616:
617: yy_forAction: {
618: while (true) {
619:
620: yy_input = yy_advance();
621:
622: if (yy_input == YYEOF)
623: break yy_forAction;
624:
625: int yy_next = yytrans[yy_rowMap[yy_state]
626: + yycmap[yy_input]];
627: if (yy_next == -1)
628: break yy_forAction;
629: yy_state = yy_next;
630:
631: int yy_attributes = YY_ATTRIBUTE[yy_state];
632: if ((yy_attributes & 2) > 0)
633: yy_pushbackPos = yy_currentPos;
634:
635: if ((yy_attributes & 1) > 0) {
636: yy_was_pushback = (yy_attributes & 4) > 0;
637: yy_action = yy_state;
638: yy_markedPos = yy_currentPos;
639: if ((yy_attributes & 8) > 0)
640: break yy_forAction;
641: }
642:
643: }
644: }
645:
646: if (yy_was_pushback)
647: yy_markedPos = yy_pushbackPos;
648:
649: switch (yy_action) {
650:
651: case 101: {
652: return applyStyle(SyntaxStyle.TAG3);
653: }
654: case 214:
655: break;
656: case 100: {
657: yybegin(AED_EXTREME_COMMENT_STATE);
658: spanStart = yychar;
659: }
660: case 215:
661: break;
662: case 19: {
663: yybegin(TAG_VALUE_STATE);
664: return applyStyle(SyntaxStyle.OPERATOR);
665: }
666: case 216:
667: break;
668: case 47: {
669: return applyStyle(SyntaxStyle.OPERATOR);
670: }
671: case 217:
672: break;
673: case 50:
674: case 51: {
675: yybegin(TAG_STATE);
676: spanStart = yychar;
677: open = true;
678: return applyStyle(SyntaxStyle.SEPARATOR2);
679: }
680: case 218:
681: break;
682: case 52: {
683: yybegin(TAG_STATE);
684: spanStart = yychar;
685: open = false;
686: return applyStyle(SyntaxStyle.SEPARATOR2);
687: }
688: case 219:
689: break;
690: case 210: {
691: return applyStyle(SyntaxStyle.LITERAL2);
692: }
693: case 220:
694: break;
695: case 201: {
696: inScript = false;
697: String s = scriptBuffer.toString();
698: FlexScanner scanner = Flexicizer.getScanner(FileMode
699: .getMode(scriptLanguage), new StringReader(s));
700: if (scanner != null) {
701: scanner.setStyleBuffer(this .styleBuffer);
702: scanner.setOffset(offset + spanStart);
703: scanner.scan();
704: }
705:
706: yybegin(YYINITIAL);
707: yypushback(yylength());
708:
709: }
710: case 221:
711: break;
712: case 190: {
713: yybegin(YYINITIAL);
714: return applyStyle(SyntaxStyle.COMMENT1, spanStart,
715: yylength() + yychar - spanStart);
716: }
717: case 222:
718: break;
719: case 162: {
720: yybegin(AED_COMMENT_STATE);
721: spanStart = yychar;
722: }
723: case 223:
724: break;
725: case 136: {
726: yybegin(COMMENT_STATE);
727: spanStart = yychar;
728: return applyStyle(SyntaxStyle.COMMENT2);
729: }
730: case 224:
731: break;
732: case 134: {
733: yybegin(YYINITIAL);
734: return applyStyle(SyntaxStyle.COMMENT4, spanStart,
735: yylength() + yychar - spanStart);
736: }
737: case 225:
738: break;
739: case 103: {
740: yybegin(YYINITIAL);
741: return applyStyle(SyntaxStyle.COMMENT3, spanStart,
742: yylength() + yychar - spanStart);
743: }
744: case 226:
745: break;
746: case 97: {
747: yybegin(AED_TAG_STATE);
748: spanStart = yychar;
749: open = false;
750: return applyStyle(SyntaxStyle.SEPARATOR1);
751: }
752: case 227:
753: break;
754: case 96:
755: case 98:
756: case 99: {
757: yybegin(AED_TAG_STATE);
758: spanStart = yychar;
759: open = true;
760: return applyStyle(SyntaxStyle.SEPARATOR1);
761: }
762: case 228:
763: break;
764: case 18: {
765: open = false;
766: yypushback(yylength());
767: yybegin(YYINITIAL);
768: }
769: case 229:
770: break;
771: case 16: {
772: yybegin(YYINITIAL);
773: open = false;
774: return applyStyle(SyntaxStyle.ERROR);
775: }
776: case 230:
777: break;
778: case 12: {
779: if (inScript) {
780: scriptBuffer.setLength(0);
781: spanStart = yychar + yylength();
782: yybegin(SCRIPT_STATE);
783:
784: }
785: return applyStyle(SyntaxStyle.SEPARATOR2);
786: }
787: case 231:
788: break;
789: case 3:
790: case 20:
791: case 21:
792: case 22:
793: case 102: {
794: if (inLanguage) {
795: scriptLanguage = yytext().toLowerCase();
796: if (scriptLanguage.startsWith("\"")
797: || scriptLanguage.startsWith("'"))
798: scriptLanguage = scriptLanguage
799: .substring(1, Math.max(1,
800: scriptLanguage.length() - 1));
801:
802: if (scriptLanguage.startsWith("javascript")
803: || scriptLanguage.equals("jscript")
804: || scriptLanguage.equals("ecmascript"))
805: scriptLanguage = "javascript";
806: } else
807: scriptLanguage = "javascript";
808: yybegin(TAG_ATTRIBUTE_STATE);
809: return applyStyle(SyntaxStyle.LITERAL1);
810: }
811: case 232:
812: break;
813: case 54: {
814: return applyStyle(SyntaxStyle.SEPARATOR1);
815: }
816: case 233:
817: break;
818: case 91: {
819: String s = yytext();
820: boolean complete = s.endsWith("`");
821: //remove backticks
822: s = s.substring(1, (complete) ? s.length() - 1 : s
823: .length());
824: applyStyle(SyntaxStyle.INCLUDE, yychar, 1);
825:
826: FlexScanner scanner = Flexicizer.getScanner(FileMode
827: .getMode("python"), new StringReader(s));
828: scanner.setStyleBuffer(this .styleBuffer);
829: scanner.setOffset(offset + yychar + 1);
830: scanner.scan();
831: if (complete)
832: return applyStyle(SyntaxStyle.INCLUDE, yychar
833: + s.length() + 1, 1);
834: }
835: case 234:
836: break;
837: case 1:
838: case 15: {
839: yybegin(TAG_ATTRIBUTE_STATE);
840: inScript = open
841: && yytext().trim().equalsIgnoreCase("script");
842: return applyStyle(SyntaxStyle.TAG1);
843: }
844: case 235:
845: break;
846: case 84:
847: case 124: {
848: yybegin(AED_TAG_ATTRIBUTE_STATE);
849: return applyStyle(SyntaxStyle.TAG3);
850: }
851: case 236:
852: break;
853: case 10:
854: case 11:
855: case 13:
856: case 14:
857: case 23:
858: case 27:
859: case 28:
860: case 29:
861: case 30:
862: case 31:
863: case 32:
864: case 33:
865: case 34:
866: case 35:
867: case 36:
868: case 37:
869: case 38:
870: case 39:
871: case 40:
872: case 41:
873: case 42:
874: case 43:
875: case 44:
876: case 45:
877: case 48:
878: case 49: {
879: return applyStyle(SyntaxStyle.DEFAULT);
880: }
881: case 237:
882: break;
883: case 2:
884: case 17: {
885: inLanguage = inScript
886: && yytext().equalsIgnoreCase("language");
887: return applyStyle(SyntaxStyle.TAG2);
888: }
889: case 238:
890: break;
891: case 24:
892: case 25: {
893: scriptBuffer.append(yytext());
894: }
895: case 239:
896: break;
897: case 26: {
898: scriptBuffer.append("\n");
899: }
900: case 240:
901: break;
902: case 46: {
903: return applyStyle(SyntaxStyle.TAG4);
904: }
905: case 241:
906: break;
907: default:
908: if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
909: yy_atEOF = true;
910: {
911: return -1;
912: }
913: } else {
914: yy_ScanError(YY_NO_MATCH);
915: }
916: }
917: }
918: }
919:
920: }
|