blob: f12f5ab9f1c2fab5db9004f16a6215dfb1845da2 [file] [log] [blame]
/* The following code was generated by JFlex 1.2.2 on 8/20/09 11:25 AM */
/*******************************************************************************
* Copyright (c) 2004, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Frits Jalvingh - contributions for bug 150794
*******************************************************************************/
package org.eclipse.jst.jsp.core.internal.parser.internal;
import java.io.CharArrayReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jst.jsp.core.internal.Logger;
import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
import org.eclipse.wst.sse.core.internal.ltk.parser.BlockTokenizer;
import org.eclipse.wst.sse.core.internal.ltk.parser.TagMarker;
import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
import org.eclipse.wst.sse.core.internal.util.Debug;
import org.eclipse.wst.sse.core.utils.StringUtils;
import org.eclipse.wst.xml.core.internal.parser.ContextRegionContainer;
import org.eclipse.wst.xml.core.internal.parser.IntStack;
/**
* This class is a scanner generated by
* <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
* on 8/20/09 11:25 AM from the specification file
* <tt>file:/D:/dev/workspaces/wtp3.2_review/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex</tt>
*/
public class JSPTokenizer implements BlockTokenizer, DOMJSPRegionContexts {
/** this character denotes the end of file */
final public static int YYEOF = -1;
/** lexical states */
final public static int ST_JSP_VBL_DQUOTES = 52;
final public static int ST_JSP_VBL_SQUOTES = 51;
final public static int ST_JSP_VBL_SQUOTES_END = 53;
final public static int ST_XML_COMMENT_END = 4;
final public static int ST_JSP_DIRECTIVE_ATTRIBUTE_VALUE = 21;
final public static int ST_JSP_EL_SQUOTES_END = 46;
final public static int ST_JSP_EL_DQUOTES = 45;
final public static int ST_JSP_EL = 43;
final public static int ST_BLOCK_TAG_SCAN = 36;
final public static int ST_JSP_EL_SQUOTES = 44;
final public static int ST_DHTML_ATTRIBUTE_VALUE = 14;
final public static int ST_XML_PI_ATTRIBUTE_NAME = 8;
final public static int ST_DHTML_TAG_CLOSE = 15;
final public static int ST_XML_ATTRIBUTE_VALUE_DQUOTED = 42;
final public static int ST_DHTML_EQUALS = 13;
final public static int ST_XML_PI_ATTRIBUTE_VALUE = 10;
final public static int ST_XML_ATTRIBUTE_VALUE = 25;
final public static int ST_JSP_VBL = 50;
final public static int ST_JSP_SQUOTED_VBL = 56;
final public static int ST_XML_ATTRIBUTE_VALUE_SQUOTED = 41;
final public static int ST_XML_ATTRIBUTE_NAME = 23;
final public static int ST_XML_EQUALS = 24;
final public static int YYINITIAL = 0;
final public static int ST_JSP_DIRECTIVE_ATTRIBUTE_NAME = 19;
final public static int ST_JSP_CONTENT = 16;
final public static int ST_XML_DOCTYPE_ID_SYSTEM = 31;
final public static int ST_XML_ELEMENT_DECLARATION = 32;
final public static int ST_XML_DECLARATION_CLOSE = 27;
final public static int ST_JSP_DIRECTIVE_EQUALS = 20;
final public static int ST_JSP_VBL_DQUOTES_END = 54;
final public static int ST_JSP_DQUOTED_EL = 48;
final public static int ST_XML_DOCTYPE_DECLARATION = 28;
final public static int ST_CDATA_END = 2;
final public static int ST_PI_WS = 6;
final public static int ST_CDATA_TEXT = 1;
final public static int ST_JSP_DIRECTIVE_NAME_WHITESPACE = 18;
final public static int ST_XML_ELEMENT_DECLARATION_CONTENT = 33;
final public static int ST_XML_ATTLIST_DECLARATION = 34;
final public static int ST_JSP_EL_DQUOTES_END = 47;
final public static int ST_JSP_SQUOTED_EL = 49;
final public static int ST_JSP_COMMENT_END = 39;
final public static int ST_XML_PI_EQUALS = 9;
final public static int ST_XML_ATTLIST_DECLARATION_CONTENT = 35;
final public static int ST_XML_DOCTYPE_ID_PUBLIC = 30;
final public static int ST_JSP_DQUOTED_VBL = 55;
final public static int ST_DHTML_ATTRIBUTE_NAME = 12;
final public static int ST_ABORT_EMBEDDED = 37;
final public static int ST_XML_DOCTYPE_EXTERNAL_ID = 29;
final public static int ST_JSP_COMMENT = 38;
final public static int ST_PI_CONTENT = 7;
final public static int ST_BLOCK_TAG_INTERNAL_SCAN = 37;
final public static int ST_PI = 5;
final public static int ST_XML_DECLARATION = 26;
final public static int ST_JSP_DIRECTIVE_NAME = 17;
final public static int ST_XML_TAG_NAME = 22;
final public static int ST_XML_PI_TAG_CLOSE = 11;
final public static int ST_XML_COMMENT = 3;
final public static int ST_JSP_ATTRIBUTE_VALUE = 40;
/**
* Translates characters to character classes
*/
final private static String yycmap_packed =
"\11\0\1\5\1\27\2\0\1\20\22\0\1\20\1\26\1\12\1\66"+
"\1\15\1\23\1\13\1\14\1\25\1\25\1\25\1\25\1\25\1\7"+
"\1\6\1\3\12\21\1\11\1\73\1\1\1\52\1\2\1\4\1\22"+
"\1\41\1\74\1\37\1\40\1\56\1\71\1\63\1\63\1\64\1\63"+
"\1\63\1\34\1\32\1\65\1\53\1\55\1\63\1\70\1\67\1\42"+
"\1\72\2\63\1\30\1\54\1\63\1\36\1\17\1\24\1\0\1\10"+
"\1\0\1\60\1\104\1\75\1\61\1\44\1\71\1\76\1\106\1\47"+
"\1\101\1\63\1\35\1\33\1\51\1\50\1\102\1\63\1\45\1\46"+
"\1\57\1\103\1\43\1\63\1\31\1\62\1\63\1\16\1\0\1\105"+
"\71\0\1\100\10\0\27\77\1\0\37\77\1\0\72\77\2\0\13\77"+
"\2\0\10\77\1\0\65\77\1\0\104\77\11\0\44\77\3\0\2\77"+
"\4\0\36\77\70\0\131\77\22\0\7\77\16\0\2\100\56\0\106\100"+
"\32\0\2\100\44\0\1\77\1\100\3\77\1\0\1\77\1\0\24\77"+
"\1\0\54\77\1\0\7\77\3\0\1\77\1\0\1\77\1\0\1\77"+
"\1\0\1\77\1\0\22\77\15\0\14\77\1\0\102\77\1\0\14\77"+
"\1\0\44\77\1\0\4\100\11\0\65\77\2\0\2\77\2\0\2\77"+
"\3\0\34\77\2\0\10\77\2\0\2\77\67\0\46\77\2\0\1\77"+
"\7\0\46\77\12\0\21\100\1\0\27\100\1\0\3\100\1\0\1\100"+
"\1\0\2\100\1\0\1\100\13\0\33\77\5\0\3\77\56\0\32\77"+
"\5\0\1\100\12\77\10\100\15\0\12\100\6\0\1\100\107\77\2\0"+
"\5\77\1\0\17\77\1\0\4\77\1\0\1\77\17\100\2\77\2\100"+
"\1\0\4\100\2\0\12\100\u0207\0\3\100\1\0\65\77\2\0\1\100"+
"\1\77\20\100\3\0\4\100\3\0\12\77\2\100\2\0\12\100\21\0"+
"\3\100\1\0\10\77\2\0\2\77\2\0\26\77\1\0\7\77\1\0"+
"\1\77\3\0\4\77\2\0\1\100\1\0\7\100\2\0\2\100\2\0"+
"\3\100\11\0\1\100\4\0\2\77\1\0\3\77\2\100\2\0\12\100"+
"\2\77\20\0\1\100\2\0\6\77\4\0\2\77\2\0\26\77\1\0"+
"\7\77\1\0\2\77\1\0\2\77\1\0\2\77\2\0\1\100\1\0"+
"\5\100\4\0\2\100\2\0\3\100\13\0\4\77\1\0\1\77\7\0"+
"\12\100\2\100\3\77\14\0\3\100\1\0\7\77\1\0\1\77\1\0"+
"\3\77\1\0\26\77\1\0\7\77\1\0\2\77\1\0\5\77\2\0"+
"\1\100\1\77\10\100\1\0\3\100\1\0\3\100\22\0\1\77\5\0"+
"\12\100\21\0\3\100\1\0\10\77\2\0\2\77\2\0\26\77\1\0"+
"\7\77\1\0\2\77\2\0\4\77\2\0\1\100\1\77\6\100\3\0"+
"\2\100\2\0\3\100\10\0\2\100\4\0\2\77\1\0\3\77\4\0"+
"\12\100\22\0\2\100\1\0\6\77\3\0\3\77\1\0\4\77\3\0"+
"\2\77\1\0\1\77\1\0\2\77\3\0\2\77\3\0\3\77\3\0"+
"\10\77\1\0\3\77\4\0\5\100\3\0\3\100\1\0\4\100\11\0"+
"\1\100\17\0\11\100\21\0\3\100\1\0\10\77\1\0\3\77\1\0"+
"\27\77\1\0\12\77\1\0\5\77\4\0\7\100\1\0\3\100\1\0"+
"\4\100\7\0\2\100\11\0\2\77\4\0\12\100\22\0\2\100\1\0"+
"\10\77\1\0\3\77\1\0\27\77\1\0\12\77\1\0\5\77\4\0"+
"\7\100\1\0\3\100\1\0\4\100\7\0\2\100\7\0\1\77\1\0"+
"\2\77\4\0\12\100\22\0\2\100\1\0\10\77\1\0\3\77\1\0"+
"\27\77\1\0\20\77\4\0\6\100\2\0\3\100\1\0\4\100\11\0"+
"\1\100\10\0\2\77\4\0\12\100\221\0\56\77\1\0\1\77\1\100"+
"\2\77\7\100\5\0\6\77\1\100\10\100\1\0\12\100\47\0\2\77"+
"\1\0\1\77\2\0\2\77\1\0\1\77\2\0\1\77\6\0\4\77"+
"\1\0\7\77\1\0\3\77\1\0\1\77\1\0\1\77\2\0\2\77"+
"\1\0\2\77\1\0\1\77\1\100\2\77\6\100\1\0\2\100\1\77"+
"\2\0\5\77\1\0\1\100\1\0\6\100\2\0\12\100\76\0\2\100"+
"\6\0\12\100\13\0\1\100\1\0\1\100\1\0\1\100\4\0\2\100"+
"\10\77\1\0\41\77\7\0\24\100\1\0\6\100\4\0\6\100\1\0"+
"\1\100\1\0\25\100\3\0\7\100\1\0\1\100\346\0\46\77\12\0"+
"\47\77\11\0\1\77\1\0\2\77\1\0\3\77\1\0\1\77\1\0"+
"\2\77\1\0\5\77\51\0\1\77\1\0\1\77\1\0\1\77\13\0"+
"\1\77\1\0\1\77\1\0\1\77\3\0\2\77\3\0\1\77\5\0"+
"\3\77\1\0\1\77\1\0\1\77\1\0\1\77\1\0\1\77\3\0"+
"\2\77\3\0\2\77\1\0\1\77\50\0\1\77\11\0\1\77\2\0"+
"\1\77\2\0\2\77\7\0\2\77\1\0\1\77\1\0\7\77\50\0"+
"\1\77\4\0\1\77\10\0\1\77\u0c06\0\234\77\4\0\132\77\6\0"+
"\26\77\2\0\6\77\2\0\46\77\2\0\6\77\2\0\10\77\1\0"+
"\1\77\1\0\1\77\1\0\1\77\1\0\37\77\2\0\65\77\1\0"+
"\7\77\1\0\1\77\3\0\3\77\1\0\7\77\3\0\4\77\2\0"+
"\6\77\4\0\15\77\5\0\3\77\1\0\7\77\323\0\15\100\4\0"+
"\1\100\104\0\1\77\3\0\2\77\2\0\1\77\121\0\3\77\u0e82\0"+
"\1\100\1\0\1\77\31\0\11\77\6\100\1\0\5\100\13\0\124\77"+
"\4\0\2\100\2\0\2\100\2\0\132\77\1\0\3\100\6\0\50\77"+
"\u1cd3\0\u51a6\77\u0c5a\0\u2ba4\77\134\0\u0800\0\u1ffe\0\2\0";
/**
* Translates characters to character classes
*/
final private static char [] yycmap = yy_unpack_cmap(yycmap_packed);
/**
* Translates a state to a row index in the transition table
*/
final private static int yy_rowMap [] = {
0, 71, 142, 213, 284, 355, 426, 497, 568, 639,
710, 781, 852, 923, 994, 1065, 1136, 1207, 1278, 1349,
1420, 1491, 1562, 1633, 1704, 1775, 1846, 1917, 1988, 2059,
2130, 2201, 2272, 2343, 2414, 2485, 2556, 2627, 2698, 2769,
2840, 2911, 2982, 3053, 3124, 3195, 3266, 3337, 3408, 3479,
3550, 3621, 3692, 3763, 3834, 3905, 3976, 4047, 4118, 4189,
4260, 4331, 4402, 4473, 4544, 4615, 4544, 4615, 4686, 4544,
4544, 4615, 4757, 4828, 4899, 4970, 5041, 5112, 5183, 5254,
4544, 4615, 5325, 5396, 5467, 4544, 5538, 5538, 5609, 5680,
5751, 5325, 4544, 5822, 5893, 4544, 5964, 6035, 6106, 6177,
4544, 4615, 6248, 6319, 6390, 6461, 6532, 6603, 4544, 6674,
6674, 6745, 6816, 6887, 6958, 7029, 4544, 7100, 7171, 7242,
7313, 7384, 7455, 4544, 7526, 7597, 7668, 7739, 7810, 7881,
7952, 8023, 4544, 8094, 8165, 8236, 8307, 8378, 8449, 8520,
8591, 8591, 8662, 8733, 8804, 8875, 8875, 8946, 9017, 9088,
9159, 9159, 9230, 9301, 9372, 9443, 4544, 9514, 9514, 9585,
9656, 9727, 9798, 4544, 4544, 4615, 4544, 4615, 9869, 9940,
7597, 10011, 10082, 10153, 10224, 10295, 10366, 10437, 10508, 4544,
10579, 10650, 10721, 10792, 4544, 10863, 10934, 11005, 11076, 4544,
4544, 11147, 4544, 11218, 11289, 11218, 11360, 11431, 11360, 4544,
4544, 11502, 11573, 4544, 11644, 4544, 11715, 11786, 11857, 11928,
11999, 4544, 4544, 12070, 4544, 12141, 12212, 12141, 12283, 12354,
12283, 4544, 4544, 12425, 12496, 12567, 4544, 12638, 12709, 12780,
4544, 4544, 12851, 12922, 12993, 13064, 13135, 4544, 13206, 13277,
13348, 13419, 13490, 13561, 13632, 13703, 13774, 4544, 13845, 13916,
13987, 4544, 4544, 5538, 5680, 4544, 14058, 14129, 5751, 14200,
14271, 5822, 5964, 6035, 14342, 6106, 4544, 14413, 14484, 14555,
6177, 14626, 14697, 4544, 12922, 4544, 6674, 6745, 4544, 14768,
14839, 6816, 14910, 14981, 4544, 15052, 15123, 7526, 15194, 7739,
4544, 15265, 15336, 7810, 15407, 15478, 15549, 15620, 15691, 15762,
15833, 8307, 4544, 15904, 15975, 8591, 8662, 4544, 16046, 16117,
16188, 16259, 16330, 16401, 16472, 8804, 8591, 8875, 8946, 4544,
9017, 9088, 8875, 9159, 9230, 4544, 16543, 16614, 16685, 16756,
16827, 16898, 16969, 17040, 17111, 9514, 9585, 4544, 17182, 17253,
17324, 17395, 17466, 17537, 17608, 17679, 17750, 17821, 9940, 10082,
4544, 17892, 17963, 10153, 18034, 18105, 18176, 18247, 4544, 18318,
4544, 4544, 4544, 4544, 18389, 18460, 18531, 18602, 11218, 4544,
18673, 18744, 11360, 4544, 18815, 18886, 18957, 19028, 19099, 19170,
19241, 19312, 19383, 11928, 12141, 4544, 19454, 19525, 12283, 4544,
19596, 19667, 19738, 19809, 19880, 19951, 20022, 20093, 20164, 4544,
4544, 4544, 20235, 20306, 20377, 20448, 20519, 4544, 20590, 20661,
4544, 4544, 4544, 4544, 4544, 4970, 20732, 20803, 20874, 20945,
21016, 21087, 21158, 21229, 21300, 21371, 21442, 21513, 21584, 21655,
21726, 21797, 21868, 21797, 21939, 22010, 21939, 22081, 22152, 22223,
22294, 22365, 22436, 22507, 22578, 22578, 22649, 22720, 22791, 22862,
22862, 22933, 23004, 9372, 9372, 9372, 23075, 23146, 23217, 23288,
23288, 23359, 23430, 9727, 9727, 9727, 23501, 23572, 10082, 23643,
10153, 23714, 23785, 23785, 23856, 23856, 18531, 23927, 11005, 11005,
11005, 23998, 24069, 11218, 11218, 11218, 24140, 24211, 11360, 11360,
11360, 24282, 24353, 11502, 11502, 11502, 19099, 24424, 24495, 11715,
11715, 11715, 19312, 24566, 24637, 11928, 11928, 11928, 24708, 12141,
12141, 12141, 24779, 24850, 12283, 12283, 12283, 24921, 24992, 12425,
12425, 12425, 19880, 25063, 25134, 12638, 12638, 12638, 20093, 25205,
4544, 4544, 25276, 25347, 4544, 25418, 25489, 25560, 25631, 25702,
25773, 7526, 4544, 4544, 25844, 25915, 25986, 26057, 26128, 16330,
16827, 9372, 26199, 17466, 9727, 26270, 4544, 9940, 11005, 11218,
26341, 11360, 26412, 11502, 26483, 4544, 11715, 26554, 11928, 12141,
26625, 12283, 26696, 12425, 26767, 4544, 12638, 26838, 26909, 26980,
27051, 27122, 27193, 27264, 27335, 27406, 27477, 27548, 27619, 27690,
27761, 27832, 27903, 27974, 28045, 28116, 28187, 28258, 28329, 28400,
4970, 28471, 28542, 28613, 28684, 28755, 4544, 4544, 28826, 28897,
28968, 29039, 19099, 19312, 29110, 29181, 19880, 20093, 29252, 29323,
29394, 29465, 4544, 4544, 4544, 29536, 29607, 29678, 29749, 29820,
29891, 29962, 30033, 7242, 30104, 30175, 30246, 30317, 30388, 30459,
30530, 4544, 30601, 30672, 9372, 9727, 11218, 11360, 12141, 12283,
30743, 30814, 30885, 30956, 31027, 31098, 31169, 31240, 4970, 31311,
31382, 31453, 31524, 31595, 31666, 31737, 31808, 31879, 31950, 32021,
32092, 32163, 32234, 32305, 32376, 32447, 32518, 32589, 32660, 32731,
32802, 32873, 32944, 33015, 33086, 33157, 33228, 33299, 33370, 33441,
33512, 33583, 33654, 33725, 33796, 4544, 33867, 33938, 34009, 34080,
7242, 34151, 34222, 34293, 34364, 34435, 34506, 34577, 34648, 34719,
34790, 34861, 34932, 35003, 35074
};
/**
* The packed transition table of the DFA
*/
final private static String yy_packed =
"\1\72\1\73\11\72\1\74\1\72\1\75\1\72\1\76"+
"\3\72\1\77\42\72\1\100\20\72\1\101\1\102\105\101"+
"\1\103\1\104\22\103\1\105\2\103\1\106\57\103\1\107"+
"\1\110\105\107\1\103\1\104\5\103\1\111\17\103\1\106"+
"\60\103\1\104\2\103\1\112\1\113\2\103\2\114\6\103"+
"\1\113\6\103\1\113\1\115\1\116\4\114\1\103\10\114"+
"\1\117\2\114\1\103\11\114\1\117\1\114\1\103\4\114"+
"\1\103\4\114\1\103\4\114\1\103\1\114\1\103\1\104"+
"\2\103\1\112\1\120\12\103\1\120\6\103\1\120\57\103"+
"\1\121\1\122\2\121\1\123\22\121\1\106\57\121\1\103"+
"\1\104\2\103\1\124\1\113\2\103\2\125\6\103\1\113"+
"\6\103\1\113\6\125\1\103\13\125\1\103\13\125\1\103"+
"\4\125\1\103\4\125\1\103\4\125\1\103\1\125\1\103"+
"\1\104\2\103\1\124\1\113\2\103\2\125\6\103\1\113"+
"\6\103\1\113\6\125\1\103\13\125\1\126\13\125\1\103"+
"\4\125\1\103\4\125\1\103\4\125\1\103\1\125\1\127"+
"\1\104\1\103\1\130\1\131\1\113\4\127\1\132\1\127"+
"\1\133\3\127\1\113\6\127\1\113\57\127\1\103\1\104"+
"\2\103\1\134\22\103\1\106\60\103\1\104\1\135\1\136"+
"\1\103\1\113\2\103\2\137\6\103\1\113\6\103\1\113"+
"\6\137\1\103\13\137\1\103\13\137\1\103\4\137\1\103"+
"\4\137\1\103\4\137\1\103\1\137\1\103\1\104\1\135"+
"\1\136\1\103\1\113\2\103\2\137\6\103\1\113\6\103"+
"\1\113\6\137\1\103\13\137\1\140\13\137\1\103\4\137"+
"\1\103\4\137\1\103\4\137\1\103\1\137\1\141\1\104"+
"\1\135\1\142\1\141\1\113\4\141\1\143\1\141\1\144"+
"\3\141\1\113\6\141\1\113\57\141\1\103\1\104\3\103"+
"\1\113\12\103\1\113\6\103\1\113\57\103\1\145\1\146"+
"\21\145\1\147\63\145\1\103\1\150\3\103\1\113\2\103"+
"\2\151\6\103\1\113\2\103\1\152\3\103\1\113\6\151"+
"\1\103\13\151\1\103\13\151\1\103\4\151\1\103\4\151"+
"\1\103\4\151\1\103\1\151\1\103\1\150\3\103\1\153"+
"\12\103\1\153\2\103\1\152\3\103\1\153\60\103\1\150"+
"\3\103\1\113\2\103\2\154\6\103\1\113\2\103\1\152"+
"\3\103\1\113\6\154\1\103\13\154\1\103\13\154\1\103"+
"\4\154\1\103\4\154\1\103\4\154\1\103\1\154\1\103"+
"\1\150\3\103\1\113\2\103\2\154\6\103\1\113\2\103"+
"\1\152\3\103\1\113\6\154\1\103\13\154\1\155\13\154"+
"\1\103\4\154\1\103\4\154\1\103\4\154\1\103\1\154"+
"\1\156\1\150\1\103\1\157\1\156\1\113\4\156\1\160"+
"\1\156\1\161\3\156\1\113\2\156\1\162\3\156\1\113"+
"\57\156\1\163\1\164\1\165\1\166\4\163\2\167\16\163"+
"\6\170\1\163\13\170\1\163\13\170\1\163\4\170\1\163"+
"\4\170\1\163\1\171\3\170\1\163\1\170\1\103\1\172"+
"\1\165\1\166\1\103\1\113\2\103\2\173\6\103\1\113"+
"\6\103\1\113\6\173\1\103\13\173\1\103\13\173\1\103"+
"\4\173\1\103\4\173\1\103\4\173\1\103\1\173\1\103"+
"\1\172\1\165\1\166\1\103\1\113\2\103\2\173\6\103"+
"\1\113\6\103\1\113\6\173\1\103\13\173\1\174\13\173"+
"\1\103\4\173\1\103\4\173\1\103\4\173\1\103\1\173"+
"\1\175\1\176\1\165\1\177\1\175\1\113\4\175\1\200"+
"\1\175\1\201\1\202\2\175\1\113\6\175\1\113\36\175"+
"\1\203\20\175\1\103\1\204\1\205\2\103\1\113\12\103"+
"\1\113\6\103\1\113\10\103\1\206\1\207\2\103\1\210"+
"\11\103\1\210\1\103\1\207\1\206\26\103\1\104\1\205"+
"\2\103\1\113\12\103\1\113\6\103\1\113\6\103\1\211"+
"\51\103\1\104\1\205\2\103\1\113\2\103\2\212\6\103"+
"\1\113\6\103\1\113\6\212\1\211\13\212\1\103\13\212"+
"\1\103\4\212\1\103\4\212\1\103\4\212\1\103\1\212"+
"\1\103\1\104\1\205\2\103\1\113\12\103\1\113\6\103"+
"\1\113\6\103\1\211\7\103\1\213\6\103\1\214\11\103"+
"\1\213\12\103\1\214\4\103\1\215\1\104\1\205\1\216"+
"\1\215\1\113\4\215\1\217\1\215\1\220\3\215\1\113"+
"\6\215\1\113\6\215\1\221\50\215\1\222\1\104\1\205"+
"\1\223\1\222\1\113\4\222\1\224\1\222\1\225\3\222"+
"\1\113\6\222\1\113\6\222\1\226\50\222\1\227\1\104"+
"\1\205\1\230\1\227\1\113\4\227\1\231\1\227\1\232"+
"\3\227\1\113\6\227\1\113\57\227\1\233\1\234\1\235"+
"\104\233\1\236\1\104\1\205\1\237\1\236\1\113\4\236"+
"\1\240\1\236\1\241\3\236\1\113\6\236\1\113\57\236"+
"\1\242\1\243\1\244\104\242\1\245\1\246\105\245\1\103"+
"\1\104\25\103\1\106\57\103\1\247\1\250\105\247\1\103"+
"\1\104\5\103\1\251\17\103\1\106\57\103\1\252\1\253"+
"\1\165\1\254\1\252\1\113\4\252\1\255\1\252\1\256"+
"\1\257\2\252\1\113\6\252\1\113\36\252\1\260\20\252"+
"\1\261\1\262\3\261\1\263\6\261\1\264\1\265\2\261"+
"\1\263\6\261\1\263\36\261\1\266\20\261\1\267\1\262"+
"\3\267\1\270\4\267\1\271\2\267\1\272\2\267\1\270"+
"\6\267\1\270\36\267\1\273\20\267\1\274\1\275\10\274"+
"\1\276\1\274\1\277\1\300\67\274\1\301\1\274\1\302"+
"\1\303\12\302\1\103\12\302\1\304\57\302\1\305\1\306"+
"\10\305\1\103\14\305\1\307\57\305\1\103\1\104\12\103"+
"\1\310\12\103\1\106\60\103\1\104\10\103\1\311\14\103"+
"\1\106\57\103\1\312\1\313\10\312\1\314\4\312\1\315"+
"\65\312\1\316\1\312\1\317\1\320\12\317\1\264\2\317"+
"\1\321\65\317\1\316\1\317\1\322\1\323\10\322\1\324"+
"\1\322\1\325\51\322\1\326\16\322\1\327\1\322\1\330"+
"\1\331\12\330\1\103\12\330\1\332\57\330\1\333\1\334"+
"\10\333\1\103\14\333\1\335\57\333\1\103\1\104\12\103"+
"\1\336\12\103\1\106\60\103\1\104\10\103\1\337\14\103"+
"\1\106\57\103\1\340\1\341\10\340\1\314\4\340\1\342"+
"\65\340\1\343\1\340\1\344\1\345\12\344\1\264\2\344"+
"\1\346\65\344\1\343\1\344\1\72\1\0\11\72\1\0"+
"\1\72\1\0\5\72\1\0\42\72\1\0\20\72\3\0"+
"\1\347\1\350\16\0\1\351\2\0\1\352\65\0\1\353"+
"\2\0\2\354\6\0\1\353\6\0\1\353\6\354\1\0"+
"\13\354\1\0\13\354\1\355\4\354\1\0\4\354\1\0"+
"\4\354\1\0\1\354\1\356\1\0\11\356\1\0\1\356"+
"\1\357\1\360\4\356\1\0\63\356\1\72\1\0\11\72"+
"\1\0\1\72\1\361\5\72\1\0\42\72\1\361\20\72"+
"\5\0\1\353\2\0\2\362\6\0\1\353\6\0\1\353"+
"\6\362\1\0\13\362\1\0\13\362\1\0\4\362\1\0"+
"\4\362\1\0\4\362\1\0\1\362\1\356\1\0\11\356"+
"\1\0\2\356\1\363\4\356\1\0\42\356\1\364\20\356"+
"\132\0\1\351\2\0\1\365\104\0\1\366\71\0\1\367"+
"\101\0\1\370\111\0\1\113\12\0\1\113\6\0\1\113"+
"\65\0\4\114\7\0\1\114\6\0\6\114\1\0\13\114"+
"\1\0\13\114\1\0\4\114\1\0\11\114\1\0\1\114"+
"\6\0\4\114\7\0\1\114\6\0\2\114\2\371\2\114"+
"\1\0\13\114\1\0\13\114\1\0\4\114\1\0\11\114"+
"\1\0\1\114\6\0\4\114\7\0\1\114\6\0\2\114"+
"\1\371\1\372\2\114\1\0\13\114\1\0\13\114\1\0"+
"\4\114\1\0\11\114\1\0\1\114\6\0\4\114\7\0"+
"\1\114\6\0\2\114\2\373\2\114\1\0\13\114\1\0"+
"\13\114\1\0\4\114\1\0\11\114\1\0\1\114\5\0"+
"\1\120\12\0\1\120\6\0\1\120\61\0\1\374\106\0"+
"\1\375\112\0\4\125\7\0\1\125\6\0\6\125\1\0"+
"\13\125\1\0\13\125\1\0\4\125\1\0\11\125\1\0"+
"\1\125\1\127\2\0\1\376\1\127\1\0\4\127\1\0"+
"\1\127\1\0\3\127\1\0\6\127\1\0\60\127\1\0"+
"\1\375\1\376\1\127\1\0\4\127\1\0\1\127\1\0"+
"\3\127\1\0\6\127\1\0\57\127\1\377\1\0\10\377"+
"\1\u0100\2\377\1\u0101\1\377\1\u0102\46\377\1\u0101\20\377"+
"\1\u0103\1\0\12\u0103\1\u0100\1\u0104\1\u0103\1\u0105\46\u0103"+
"\1\u0104\20\u0103\2\0\1\135\1\u0106\111\0\4\137\7\0"+
"\1\137\6\0\6\137\1\0\13\137\1\0\13\137\1\0"+
"\4\137\1\0\11\137\1\0\1\137\1\141\2\0\1\u0107"+
"\1\141\1\0\4\141\1\0\1\141\1\0\3\141\1\0"+
"\6\141\1\0\60\141\1\0\1\135\1\u0108\1\141\1\0"+
"\4\141\1\0\1\141\1\0\3\141\1\0\6\141\1\0"+
"\57\141\1\143\1\0\1\u0109\1\u010a\1\143\1\u0109\4\143"+
"\1\u010b\1\143\1\u0109\1\u010c\1\143\1\u010d\1\u0109\6\143"+
"\1\u0109\36\143\1\u010c\20\143\1\144\1\0\1\u010e\1\u010f"+
"\1\144\1\u010e\4\144\1\u010e\1\144\1\u010b\1\u0110\1\144"+
"\1\u0111\1\u010e\6\144\1\u010e\36\144\1\u0110\20\144\2\0"+
"\1\u0112\127\0\1\351\2\0\1\u0113\66\0\4\151\7\0"+
"\1\151\6\0\6\151\1\0\13\151\1\0\13\151\1\0"+
"\4\151\1\0\11\151\1\0\1\151\2\0\1\u0114\111\0"+
"\1\153\12\0\1\153\6\0\1\153\65\0\4\154\7\0"+
"\1\154\6\0\6\154\1\0\13\154\1\0\13\154\1\0"+
"\4\154\1\0\11\154\1\0\1\154\1\156\2\0\1\u0115"+
"\1\156\1\0\4\156\1\0\1\156\1\0\3\156\1\0"+
"\6\156\1\0\57\156\1\u0116\1\0\10\u0116\1\u0117\2\u0116"+
"\1\u0118\1\u0116\1\u0119\46\u0116\1\u0118\20\u0116\1\u011a\1\0"+
"\12\u011a\1\u0117\1\u011b\1\u011a\1\u011c\46\u011a\1\u011b\20\u011a"+
"\1\156\1\0\1\u0114\1\u0115\1\156\1\0\4\156\1\0"+
"\1\156\1\0\3\156\1\0\6\156\1\0\57\156\1\163"+
"\3\0\24\163\6\0\1\163\13\0\1\163\13\0\1\163"+
"\4\0\1\163\4\0\1\163\4\0\1\163\4\0\1\347"+
"\17\0\1\351\2\0\1\352\62\0\1\u011d\104\0\1\163"+
"\3\0\2\163\4\167\7\163\1\167\6\163\6\170\1\163"+
"\13\170\1\163\13\170\1\163\4\170\1\163\4\170\1\167"+
"\4\170\1\163\1\170\6\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\13\170\1\0\13\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170\6\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\7\170\1\u011e\3\170\1\0\13\170\1\0"+
"\4\170\1\0\11\170\1\0\1\170\3\0\1\347\4\0"+
"\2\u011f\11\0\1\351\2\0\1\352\1\0\6\u011f\1\0"+
"\13\u011f\1\0\13\u011f\1\0\4\u011f\1\0\4\u011f\1\0"+
"\4\u011f\1\0\1\u011f\6\0\4\173\7\0\1\173\6\0"+
"\6\173\1\0\13\173\1\0\13\173\1\0\4\173\1\0"+
"\11\173\1\0\1\173\1\175\2\0\1\u0120\1\175\1\0"+
"\4\175\1\0\1\175\1\0\3\175\1\0\6\175\1\0"+
"\57\175\3\0\1\347\4\0\2\u0121\11\0\1\351\2\0"+
"\1\352\1\0\6\u0121\1\0\13\u0121\1\0\13\u0121\1\0"+
"\4\u0121\1\0\4\u0121\1\0\4\u0121\1\0\1\u0121\1\175"+
"\1\0\1\u011d\1\u0120\1\175\1\0\4\175\1\0\1\175"+
"\1\0\3\175\1\0\6\175\1\0\57\175\1\u0122\1\0"+
"\10\u0122\1\u0123\2\u0122\1\u0124\1\u0122\1\u0125\46\u0122\1\u0124"+
"\20\u0122\1\u0126\1\0\12\u0126\1\u0123\1\u0127\1\u0126\1\u0128"+
"\46\u0126\1\u0127\20\u0126\1\175\2\0\1\u0120\1\175\1\0"+
"\4\175\1\0\1\175\1\0\1\175\1\u0129\1\175\1\0"+
"\6\175\1\0\60\175\2\0\1\u0120\1\175\1\0\4\175"+
"\1\0\1\175\1\0\1\175\1\u012a\1\175\1\0\6\175"+
"\1\0\57\175\3\0\1\347\17\0\1\351\2\0\1\u0113"+
"\130\0\1\u012b\2\0\1\u012b\75\0\1\u012c\14\0\1\u012c"+
"\63\0\2\u012d\51\0\24\u012e\1\u012f\62\u012e\6\0\4\212"+
"\7\0\1\212\6\0\6\212\1\0\13\212\1\0\13\212"+
"\1\0\4\212\1\0\11\212\1\0\1\212\54\0\1\u0130"+
"\5\0\1\u0130\116\0\1\u0131\10\0\1\u0131\3\0\1\215"+
"\2\0\1\u0132\1\215\1\0\4\215\1\0\1\215\1\0"+
"\3\215\1\0\6\215\1\0\57\215\1\u0133\1\0\10\u0133"+
"\1\u0134\2\u0133\1\u0135\1\u0133\1\u0136\46\u0133\1\u0135\20\u0133"+
"\1\u0137\1\0\1\u0137\2\u0138\1\u0137\4\u0138\2\u0137\1\u0139"+
"\1\u013a\1\u0137\1\u013b\4\u0138\1\u0137\11\u0138\1\u0137\27\u0138"+
"\1\u013a\10\u0138\2\u0137\4\u0138\1\u0137\1\u0138\1\221\2\u012e"+
"\1\u013c\1\221\1\u012e\4\221\1\u012e\1\221\1\u012e\3\221"+
"\1\u012e\3\221\1\u013d\2\221\1\u012e\57\221\1\222\2\0"+
"\1\u013e\1\222\1\0\4\222\1\0\1\222\1\0\3\222"+
"\1\0\6\222\1\0\57\222\12\u013f\1\u0140\74\u013f\14\u0141"+
"\1\u0140\72\u0141\1\226\2\u012e\1\u0142\1\226\1\u012e\4\226"+
"\1\u012e\1\226\1\u012e\3\226\1\u012e\3\226\1\u0143\2\226"+
"\1\u012e\57\226\1\227\2\0\1\u0144\1\227\1\0\4\227"+
"\1\0\1\227\1\0\3\227\1\0\6\227\1\0\57\227"+
"\1\u0145\1\0\10\u0145\1\u0146\2\u0145\1\u0147\1\u0145\1\u0148"+
"\46\u0145\1\u0147\20\u0145\1\u0149\1\0\1\u0149\2\u014a\1\u0149"+
"\4\u014a\2\u0149\1\u014b\1\u014c\1\u0149\1\u014d\4\u014a\1\u0149"+
"\11\u014a\1\u0149\27\u014a\1\u014c\10\u014a\2\u0149\4\u014a\1\u0149"+
"\1\u014a\2\233\1\0\106\233\1\0\20\233\1\u014e\2\233"+
"\1\u014f\60\233\1\236\2\0\1\u0150\1\236\1\0\4\236"+
"\1\0\1\236\1\0\3\236\1\0\6\236\1\0\57\236"+
"\1\u0151\1\0\10\u0151\1\u0152\2\u0151\1\u0153\1\u0151\1\u0154"+
"\46\u0151\1\u0153\20\u0151\1\u0155\1\0\1\u0155\2\u0156\1\u0155"+
"\4\u0156\2\u0155\1\u0157\1\u0158\1\u0155\1\u0159\4\u0156\1\u0155"+
"\11\u0156\1\u0155\27\u0156\1\u0158\10\u0156\2\u0155\4\u0156\1\u0155"+
"\1\u0156\2\242\1\0\106\242\1\0\20\242\1\u015a\2\242"+
"\1\u015b\60\242\7\0\1\u015c\77\0\1\252\2\0\1\u015d"+
"\1\252\1\0\4\252\1\0\1\252\1\0\3\252\1\0"+
"\6\252\1\0\60\252\1\0\1\u011d\1\u015d\1\252\1\0"+
"\4\252\1\0\1\252\1\0\3\252\1\0\6\252\1\0"+
"\57\252\1\u015e\1\0\10\u015e\1\u015f\2\u015e\1\u0160\1\u015e"+
"\1\u0161\46\u015e\1\u0160\20\u015e\1\u0162\1\0\12\u0162\1\u015f"+
"\1\u0163\1\u0162\1\u0164\46\u0162\1\u0163\20\u0162\1\252\2\0"+
"\1\u015d\1\252\1\0\4\252\1\0\1\252\1\0\1\252"+
"\1\u0165\1\252\1\0\6\252\1\0\60\252\2\0\1\u015d"+
"\1\252\1\0\4\252\1\0\1\252\1\0\1\252\1\u0166"+
"\1\252\1\0\6\252\1\0\57\252\1\261\1\0\12\261"+
"\2\0\50\261\1\0\20\261\3\0\1\u0167\17\0\1\351"+
"\2\0\1\365\60\0\1\261\1\0\3\261\1\263\6\261"+
"\2\0\2\261\1\263\6\261\1\263\36\261\1\0\20\261"+
"\5\0\1\u0168\10\0\1\u0169\1\0\1\u0168\6\0\1\u0168"+
"\64\0\1\u0168\10\0\1\u016a\1\0\1\u0168\6\0\1\u0168"+
"\57\0\1\267\1\0\10\267\1\0\2\267\1\0\50\267"+
"\1\0\21\267\1\0\3\267\1\270\4\267\1\0\2\267"+
"\1\0\2\267\1\270\6\267\1\270\36\267\1\0\20\267"+
"\5\0\1\u0168\10\0\1\u016b\1\0\1\u0168\6\0\1\u0168"+
"\64\0\1\u0168\10\0\1\u016c\1\0\1\u0168\6\0\1\u0168"+
"\57\0\12\274\1\0\1\274\1\0\1\u016d\67\274\1\0"+
"\13\274\1\0\1\274\1\0\1\u016d\5\274\1\u016e\61\274"+
"\1\0\13\274\1\0\1\274\1\0\1\274\1\u016f\66\274"+
"\1\u0170\1\274\14\u0171\1\u0172\106\u0171\1\u0172\6\u0171\1\u0173"+
"\2\u0171\1\u0174\60\u0171\12\u0175\1\u0176\106\u0175\1\u0176\10\u0175"+
"\1\u0177\2\u0175\1\u0178\60\u0175\12\312\1\0\4\312\1\u0179"+
"\65\312\1\0\13\312\1\0\4\312\1\u0179\3\312\1\u017a"+
"\61\312\1\0\13\312\1\u017b\74\312\14\317\1\0\2\317"+
"\1\u017c\65\317\1\0\15\317\1\0\2\317\1\u017c\3\317"+
"\1\u017d\61\317\1\0\15\317\1\u017e\72\317\12\322\1\0"+
"\1\322\1\0\70\322\1\0\13\322\1\0\1\322\1\0"+
"\6\322\1\u017f\61\322\1\0\13\322\1\0\1\322\1\0"+
"\1\322\1\u0180\66\322\1\0\1\322\14\u0181\1\u0182\106\u0181"+
"\1\u0182\6\u0181\1\u0183\2\u0181\1\u0184\60\u0181\12\u0185\1\u0186"+
"\106\u0185\1\u0186\10\u0185\1\u0187\2\u0185\1\u0188\60\u0185\12\340"+
"\1\0\4\340\1\u0189\65\340\1\0\13\340\1\0\4\340"+
"\1\u0189\3\340\1\u018a\61\340\1\0\13\340\1\u018b\74\340"+
"\14\344\1\0\2\344\1\u018c\65\344\1\0\15\344\1\0"+
"\2\344\1\u018c\3\344\1\u018d\61\344\1\0\15\344\1\u018e"+
"\72\344\7\0\1\u018f\12\0\1\u0190\3\0\1\u0191\23\0"+
"\1\u0192\43\0\1\u0193\26\0\1\u0194\55\0\1\353\2\0"+
"\2\u0195\6\0\1\353\6\0\1\353\6\u0195\1\0\13\u0195"+
"\1\0\13\u0195\1\0\4\u0195\1\0\4\u0195\1\0\4\u0195"+
"\1\0\1\u0195\1\u0196\1\0\3\u0196\1\u0197\4\354\1\u0196"+
"\1\0\4\u0196\1\u0197\1\354\1\u0196\1\0\3\u0196\1\u0197"+
"\6\354\1\u0196\13\354\1\u0196\13\354\1\u0196\4\354\1\u0198"+
"\11\354\1\u0196\1\354\21\0\1\u0199\7\0\1\u019a\72\0"+
"\1\357\71\0\105\360\1\u019b\1\360\16\0\1\356\70\0"+
"\1\u0196\1\0\3\u0196\1\u0197\4\362\1\u0196\1\0\4\u0196"+
"\1\u0197\1\362\1\u0196\1\0\3\u0196\1\u0197\6\362\1\u0196"+
"\13\362\1\u0196\13\362\1\u0196\4\362\1\u019c\11\362\1\u0196"+
"\1\362\105\363\1\u019d\1\363\66\0\1\364\56\0\1\u0194"+
"\52\0\1\u019e\106\0\1\u019f\112\0\4\114\7\0\1\114"+
"\6\0\4\114\2\u01a0\1\0\13\114\1\0\13\114\1\0"+
"\4\114\1\0\11\114\1\0\1\114\6\0\4\114\7\0"+
"\1\114\6\0\4\114\1\u01a0\1\u01a1\1\0\13\114\1\0"+
"\13\114\1\0\4\114\1\0\11\114\1\0\1\114\6\0"+
"\4\114\7\0\1\114\6\0\6\114\1\0\13\114\1\0"+
"\2\114\1\u01a2\10\114\1\0\4\114\1\0\6\114\1\u01a2"+
"\2\114\1\0\1\114\12\377\1\u0100\3\377\1\0\71\377"+
"\1\0\10\377\1\u0100\2\377\1\u01a3\1\377\1\u0102\46\377"+
"\1\u01a3\20\377\14\u0103\1\u0100\1\u0103\1\0\71\u0103\1\0"+
"\12\u0103\1\u0100\1\u01a4\1\u0103\1\u0105\46\u0103\1\u01a4\20\u0103"+
"\1\u0109\1\0\10\u0109\1\u010b\2\u0109\1\u01a5\1\u0109\1\u01a6"+
"\46\u0109\1\u01a5\20\u0109\1\143\2\u0109\1\u010a\1\143\1\u0109"+
"\4\143\1\u010b\1\143\1\u0109\1\143\1\141\1\143\1\u0109"+
"\6\143\1\u0109\60\143\1\0\1\u0109\1\u010a\1\143\1\u0109"+
"\4\143\1\u010b\1\143\1\u0109\1\u01a7\1\143\1\u010d\1\u0109"+
"\6\143\1\u0109\36\143\1\u01a7\20\143\1\u010e\1\0\12\u010e"+
"\1\u010b\1\u01a8\1\u010e\1\u01a9\46\u010e\1\u01a8\20\u010e\1\144"+
"\2\u010e\1\u010f\1\144\1\u010e\4\144\1\u010e\1\144\1\u010b"+
"\1\144\1\141\1\144\1\u010e\6\144\1\u010e\60\144\1\0"+
"\1\u010e\1\u010f\1\144\1\u010e\4\144\1\u010e\1\144\1\u010b"+
"\1\u01aa\1\144\1\u0111\1\u010e\6\144\1\u010e\36\144\1\u01aa"+
"\20\144\12\u0116\1\u0117\3\u0116\1\0\71\u0116\1\0\10\u0116"+
"\1\u0117\2\u0116\1\u01ab\1\u0116\1\u0119\46\u0116\1\u01ab\20\u0116"+
"\14\u011a\1\u0117\1\u011a\1\0\71\u011a\1\0\12\u011a\1\u0117"+
"\1\u01ac\1\u011a\1\u011c\46\u011a\1\u01ac\20\u011a\6\0\4\170"+
"\7\0\1\170\6\0\6\170\1\0\13\170\1\0\13\170"+
"\1\0\4\170\1\0\6\170\1\u01ad\2\170\1\0\1\170"+
"\6\0\4\u011f\7\0\1\u011f\6\0\6\u011f\1\0\13\u011f"+
"\1\0\13\u011f\1\0\4\u011f\1\0\11\u011f\1\0\1\u011f"+
"\6\0\4\u0121\7\0\1\u0121\6\0\6\u0121\1\0\13\u0121"+
"\1\0\13\u0121\1\0\4\u0121\1\0\11\u0121\1\0\1\u0121"+
"\12\u0122\1\u0123\3\u0122\1\0\71\u0122\1\0\10\u0122\1\u0123"+
"\2\u0122\1\u01ae\1\u0122\1\u0125\46\u0122\1\u01ae\20\u0122\14\u0126"+
"\1\u0123\1\u0126\1\0\71\u0126\1\0\12\u0126\1\u0123\1\u01af"+
"\1\u0126\1\u0128\46\u0126\1\u01af\20\u0126\1\u01b0\2\u01b1\1\u01b2"+
"\1\u01b0\1\u01b1\4\u01b0\1\u01b1\1\u01b0\1\u01b1\3\u01b0\1\u01b1"+
"\6\u01b0\1\u01b1\55\u01b0\1\175\1\u01b0\1\u01b3\2\u01b4\1\u01b5"+
"\1\u01b3\1\u01b4\4\u01b3\1\u01b4\1\u01b3\1\u01b4\3\u01b3\1\u01b4"+
"\6\u01b3\1\u01b4\55\u01b3\1\175\1\u01b3\37\0\1\u01b6\35\0"+
"\1\u01b6\53\0\1\u01b7\14\0\1\u01b7\73\0\1\u01b8\11\0"+
"\1\u01b8\76\0\1\u01b9\20\0\1\u01b9\113\0\1\u01ba\7\0"+
"\1\u01ba\2\0\12\u0133\1\u0134\3\u0133\1\0\71\u0133\1\0"+
"\10\u0133\1\u0134\2\u0133\1\u01bb\1\u0133\1\u0136\46\u0133\1\u01bb"+
"\20\u0133\1\u0137\1\0\12\u0137\1\u0134\1\u01bc\1\u0137\1\u013b"+
"\46\u0137\1\u01bc\21\u0137\1\0\12\u0137\1\u01bd\1\u01bc\1\u0137"+
"\1\u013b\46\u0137\1\u01bc\20\u0137\14\0\1\u01be\72\0\14\u0137"+
"\1\u01bd\1\u0137\1\0\71\u0137\1\0\12\u0137\1\u0134\1\u01bf"+
"\1\u0137\1\u013b\46\u0137\1\u01bf\20\u0137\12\u0145\1\u0146\3\u0145"+
"\1\0\71\u0145\1\0\10\u0145\1\u0146\2\u0145\1\u01c0\1\u0145"+
"\1\u0148\46\u0145\1\u01c0\20\u0145\1\u0149\1\0\12\u0149\1\u0146"+
"\1\u01c1\1\u0149\1\u014d\46\u0149\1\u01c1\21\u0149\1\0\12\u0149"+
"\1\u01c2\1\u01c1\1\u0149\1\u014d\46\u0149\1\u01c1\20\u0149\14\0"+
"\1\u01c3\72\0\14\u0149\1\u01c2\1\u0149\1\0\71\u0149\1\0"+
"\12\u0149\1\u0146\1\u01c4\1\u0149\1\u014d\46\u0149\1\u01c4\20\u0149"+
"\2\233\1\0\4\233\1\u01c5\12\233\1\u01c6\3\233\1\u01c7"+
"\23\233\1\u01c8\36\233\1\0\33\233\1\u01c9\50\233\12\u0151"+
"\1\u0152\3\u0151\1\0\71\u0151\1\0\10\u0151\1\u0152\2\u0151"+
"\1\u01ca\1\u0151\1\u0154\46\u0151\1\u01ca\20\u0151\1\u0155\1\0"+
"\12\u0155\1\u0152\1\u01cb\1\u0155\1\u0159\46\u0155\1\u01cb\21\u0155"+
"\1\0\12\u0155\1\u01cc\1\u01cb\1\u0155\1\u0159\46\u0155\1\u01cb"+
"\20\u0155\14\0\1\u01cd\72\0\14\u0155\1\u01cc\1\u0155\1\0"+
"\71\u0155\1\0\12\u0155\1\u0152\1\u01ce\1\u0155\1\u0159\46\u0155"+
"\1\u01ce\20\u0155\2\242\1\0\4\242\1\u01cf\12\242\1\u01d0"+
"\3\242\1\u01d1\23\242\1\u01d2\36\242\1\0\33\242\1\u01d3"+
"\50\242\23\0\1\u01d4\63\0\12\u015e\1\u015f\3\u015e\1\0"+
"\71\u015e\1\0\10\u015e\1\u01d5\2\u015e\1\u01d6\1\u015e\1\u0161"+
"\46\u015e\1\u01d6\20\u015e\14\u0162\1\u015f\1\u0162\1\0\71\u0162"+
"\1\0\12\u0162\1\u01d7\1\u01d8\1\u0162\1\u0164\46\u0162\1\u01d8"+
"\20\u0162\1\u01d9\2\u01b1\1\u01da\1\u01d9\1\u01b1\4\u01d9\1\u01b1"+
"\1\u01d9\1\u01b1\3\u01d9\1\u01b1\6\u01d9\1\u01b1\55\u01d9\1\252"+
"\1\u01d9\1\u01db\2\u01b4\1\u01dc\1\u01db\1\u01b4\4\u01db\1\u01b4"+
"\1\u01db\1\u01b4\3\u01db\1\u01b4\6\u01db\1\u01b4\55\u01db\1\252"+
"\1\u01db\5\0\1\u0168\12\0\1\u0168\6\0\1\u0168\57\0"+
"\12\274\1\0\1\274\1\0\1\274\1\u01dd\66\274\1\u0170"+
"\10\274\1\u01de\2\274\1\0\1\274\1\0\1\u016d\4\274"+
"\1\u01df\3\274\1\u01e0\23\274\1\u01e1\32\274\1\0\1\274"+
"\12\u01dd\1\0\1\u01dd\1\0\70\u01dd\1\0\1\u01dd\12\u0170"+
"\1\0\1\u0170\1\0\1\u01e2\67\u0170\1\0\1\u0170\7\u0171"+
"\1\u01e3\4\u0171\1\u0172\5\u0171\1\u01e4\3\u0171\1\u01e5\23\u0171"+
"\1\u01e6\50\u0171\1\u0172\21\u0171\1\u01e7\50\u0171\7\u0175\1\u01e8"+
"\2\u0175\1\u0176\7\u0175\1\u01e9\3\u0175\1\u01ea\23\u0175\1\u01eb"+
"\46\u0175\1\u0176\23\u0175\1\u01ec\50\u0175\12\312\1\0\103\312"+
"\1\u01ed\2\312\1\0\4\312\1\u0179\2\312\1\u01ee\3\312"+
"\1\u01ef\23\312\1\u01f0\32\312\1\0\1\312\17\u01f1\1\u01f2"+
"\67\u01f1\14\317\1\0\101\317\1\u01f3\4\317\1\0\2\317"+
"\1\u017c\2\317\1\u01f4\3\317\1\u01f5\23\317\1\u01f6\32\317"+
"\1\0\1\317\17\u01f7\1\u01f8\67\u01f7\7\322\1\u01f9\2\322"+
"\1\0\1\322\1\0\5\322\1\u01fa\3\322\1\u01fb\23\322"+
"\1\u01fc\32\322\1\0\1\322\7\u0181\1\u01fd\4\u0181\1\u0182"+
"\5\u0181\1\u01fe\3\u0181\1\u01ff\23\u0181\1\u0200\50\u0181\1\u0182"+
"\21\u0181\1\u0201\50\u0181\7\u0185\1\u0202\2\u0185\1\u0186\7\u0185"+
"\1\u0203\3\u0185\1\u0204\23\u0185\1\u0205\46\u0185\1\u0186\23\u0185"+
"\1\u0206\50\u0185\12\340\1\0\103\340\1\u0207\2\340\1\0"+
"\4\340\1\u0189\2\340\1\u0208\3\340\1\u0209\23\340\1\u020a"+
"\32\340\1\0\1\340\17\u020b\1\u020c\67\u020b\14\344\1\0"+
"\101\344\1\u020d\4\344\1\0\2\344\1\u018c\2\344\1\u020e"+
"\3\344\1\u020f\23\344\1\u0210\32\344\1\0\1\344\17\u0211"+
"\1\u0212\67\u0211\7\0\1\u0213\106\0\1\u0214\136\0\1\u0215"+
"\47\0\1\u0195\1\0\11\u0195\1\0\7\u0195\1\0\63\u0195"+
"\1\u0196\1\0\11\u0196\1\0\7\u0196\1\0\47\u0196\1\0"+
"\14\u0196\1\0\3\u0196\1\u0197\5\u0196\1\0\4\u0196\1\u0197"+
"\2\u0196\1\0\3\u0196\1\u0197\43\u0196\1\u0216\13\u0196\21\0"+
"\1\u0199\51\0\1\u0217\34\0\1\u0218\15\0\3\u0218\2\0"+
"\1\u0218\11\0\1\u0218\1\0\2\u0218\7\0\1\u0218\2\0"+
"\2\u0218\6\0\1\u0218\10\0\1\114\1\u0219\2\114\7\0"+
"\1\114\6\0\6\114\1\0\13\114\1\0\13\114\1\0"+
"\4\114\1\0\11\114\1\0\1\114\6\0\4\114\7\0"+
"\1\114\6\0\6\114\1\0\11\114\1\u021a\1\114\1\0"+
"\1\u021a\12\114\1\0\4\114\1\0\11\114\1\0\1\114"+
"\12\377\1\u0100\74\377\14\u0103\1\u0100\72\u0103\12\u0109\1\u010b"+
"\3\u0109\1\0\71\u0109\1\0\10\u0109\1\u010b\2\u0109\1\u021b"+
"\1\u0109\1\u01a6\46\u0109\1\u021b\20\u0109\1\143\2\u0109\1\u010a"+
"\1\143\1\u0109\4\143\1\u010b\1\143\1\u0109\3\143\1\u0109"+
"\6\143\1\u0109\57\143\14\u010e\1\u010b\1\u010e\1\0\71\u010e"+
"\1\0\12\u010e\1\u010b\1\u021c\1\u010e\1\u01a9\46\u010e\1\u021c"+
"\20\u010e\1\144\2\u010e\1\u010f\1\144\1\u010e\4\144\1\u010e"+
"\1\144\1\u010b\3\144\1\u010e\6\144\1\u010e\57\144\12\u0116"+
"\1\u0117\74\u0116\14\u011a\1\u0117\72\u011a\6\0\3\170\1\u021d"+
"\7\0\1\170\6\0\6\170\1\0\13\170\1\0\13\170"+
"\1\0\4\170\1\0\11\170\1\0\1\170\12\u0122\1\u0123"+
"\74\u0122\14\u0126\1\u0123\72\u0126\1\u01b0\2\u01b1\1\u01b2\1\u01b0"+
"\1\u01b1\4\u01b0\1\u01b1\1\u01b0\1\u01b1\3\u01b0\1\u01b1\6\u01b0"+
"\1\u01b1\55\u01b0\1\u021e\1\u01b0\105\u01b1\1\u021f\1\u01b1\1\u01b3"+
"\2\u01b4\1\u01b5\1\u01b3\1\u01b4\4\u01b3\1\u01b4\1\u01b3\1\u01b4"+
"\3\u01b3\1\u01b4\6\u01b3\1\u01b4\55\u01b3\1\u021e\1\u01b3\105\u01b4"+
"\1\u0220\1\u01b4\42\0\1\u0221\14\0\1\u0221\63\0\2\u0222"+
"\103\0\2\u0223\115\0\1\u0224\14\0\1\u0224\63\0\2\u0225"+
"\51\0\12\u0133\1\u0134\74\u0133\14\u0137\1\u0134\1\u0137\1\0"+
"\70\u0137\3\0\2\u0226\1\0\4\u0226\2\0\1\u0139\1\u0226"+
"\2\0\4\u0226\1\0\11\u0226\1\0\40\u0226\2\0\4\u0226"+
"\1\0\1\u0226\14\u0137\1\u0134\72\u0137\12\u0145\1\u0146\74\u0145"+
"\14\u0149\1\u0146\1\u0149\1\0\70\u0149\3\0\2\u0227\1\0"+
"\4\u0227\2\0\1\u014b\1\u0227\2\0\4\u0227\1\0\11\u0227"+
"\1\0\40\u0227\2\0\4\u0227\1\0\1\u0227\14\u0149\1\u0146"+
"\72\u0149\2\233\1\0\4\233\1\u0228\101\233\1\0\34\233"+
"\1\u0229\47\233\12\u0151\1\u0152\74\u0151\14\u0155\1\u0152\1\u0155"+
"\1\0\70\u0155\3\0\2\u022a\1\0\4\u022a\2\0\1\u0157"+
"\1\u022a\2\0\4\u022a\1\0\11\u022a\1\0\40\u022a\2\0"+
"\4\u022a\1\0\1\u022a\14\u0155\1\u0152\72\u0155\2\242\1\0"+
"\4\242\1\u022b\101\242\1\0\34\242\1\u022c\47\242\2\0"+
"\1\u022d\104\0\12\u015e\1\u015f\74\u015e\14\u0162\1\u015f\72\u0162"+
"\1\u01d9\2\u01b1\1\u01da\1\u01d9\1\u01b1\4\u01d9\1\u01b1\1\u01d9"+
"\1\u01b1\3\u01d9\1\u01b1\6\u01d9\1\u01b1\55\u01d9\1\u022e\1\u01d9"+
"\1\u01db\2\u01b4\1\u01dc\1\u01db\1\u01b4\4\u01db\1\u01b4\1\u01db"+
"\1\u01b4\3\u01db\1\u01b4\6\u01db\1\u01b4\55\u01db\1\u022e\1\u01db"+
"\7\274\1\u022f\2\274\1\0\1\274\1\0\1\u016d\67\274"+
"\1\0\1\274\12\u0170\1\0\1\u0170\1\0\1\u0170\1\0"+
"\70\u0170\7\u0171\1\u0230\4\u0171\1\u0172\106\u0171\1\u0172\22\u0171"+
"\1\u0231\47\u0171\7\u0175\1\u0232\2\u0175\1\u0176\106\u0175\1\u0176"+
"\24\u0175\1\u0233\47\u0175\7\312\1\u0234\2\312\1\0\4\312"+
"\1\u0179\65\312\1\0\1\312\12\u0235\1\u0236\72\u0235\1\0"+
"\1\u0235\7\317\1\u0237\4\317\1\0\2\317\1\u017c\65\317"+
"\1\0\1\317\14\u0238\1\u0236\70\u0238\1\0\1\u0238\7\322"+
"\1\u0239\2\322\1\0\1\322\1\0\70\322\1\0\1\322"+
"\7\u0181\1\u023a\4\u0181\1\u0182\106\u0181\1\u0182\22\u0181\1\u023b"+
"\47\u0181\7\u0185\1\u023c\2\u0185\1\u0186\106\u0185\1\u0186\24\u0185"+
"\1\u023d\47\u0185\7\340\1\u023e\2\340\1\0\4\340\1\u0189"+
"\65\340\1\0\1\340\12\u023f\1\u0240\72\u023f\1\0\1\u023f"+
"\7\344\1\u0241\4\344\1\0\2\344\1\u018c\65\344\1\0"+
"\1\344\14\u0242\1\u0240\70\u0242\1\0\1\u0242\40\0\1\u0243"+
"\141\0\1\u0216\34\0\1\u0218\15\0\3\u0218\2\0\1\u0218"+
"\11\0\1\u0218\1\0\2\u0218\7\0\1\u0218\1\0\1\u0217"+
"\2\u0218\6\0\1\u0218\10\0\4\114\7\0\1\114\6\0"+
"\6\114\1\0\7\114\1\u0244\3\114\1\0\13\114\1\0"+
"\4\114\1\0\11\114\1\0\1\114\6\0\4\114\7\0"+
"\1\114\6\0\6\114\1\0\6\114\1\u0245\4\114\1\0"+
"\13\114\1\0\1\114\1\u0245\2\114\1\0\11\114\1\0"+
"\1\114\12\u0109\1\u010b\74\u0109\14\u010e\1\u010b\72\u010e\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\6\170\1\u0246"+
"\4\170\1\0\6\170\1\u0247\4\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170\54\0\1\u0248\5\0\1\u0248\73\0"+
"\1\u0249\14\0\1\u0249\66\0\1\u024a\11\0\1\u024a\74\0"+
"\1\u024b\11\0\1\u024b\77\0\1\u024c\14\0\1\u024c\22\0"+
"\2\233\1\0\35\233\1\u024d\46\233\2\242\1\0\35\242"+
"\1\u024e\46\242\14\u0171\1\u0172\23\u0171\1\u024f\46\u0171\12\u0175"+
"\1\u0176\25\u0175\1\u0250\46\u0175\12\u0235\1\u01f1\4\u0235\1\u0251"+
"\65\u0235\1\u01f1\1\u0235\14\u0238\1\u01f7\2\u0238\1\u0252\65\u0238"+
"\1\u01f7\1\u0238\14\u0181\1\u0182\23\u0181\1\u0253\46\u0181\12\u0185"+
"\1\u0186\25\u0185\1\u0254\46\u0185\12\u023f\1\u020b\4\u023f\1\u0255"+
"\65\u023f\1\u020b\1\u023f\14\u0242\1\u0211\2\u0242\1\u0256\65\u0242"+
"\1\u0211\1\u0242\41\0\1\u0257\53\0\4\114\7\0\1\114"+
"\6\0\6\114\1\0\13\114\1\0\4\114\1\u0258\6\114"+
"\1\0\4\114\1\0\11\114\1\0\1\114\6\0\4\114"+
"\7\0\1\114\6\0\6\114\1\0\3\114\1\u0259\7\114"+
"\1\0\4\114\1\u0259\6\114\1\0\4\114\1\0\11\114"+
"\1\0\1\114\6\0\4\170\7\0\1\170\6\0\6\170"+
"\1\0\11\170\1\u025a\1\170\1\0\13\170\1\0\4\170"+
"\1\0\11\170\1\0\1\170\6\0\4\170\7\0\1\170"+
"\6\0\6\170\1\0\10\170\1\u025b\2\170\1\0\13\170"+
"\1\0\4\170\1\0\11\170\1\0\1\170\55\0\1\u025c"+
"\24\0\1\u025c\52\0\1\u025d\20\0\1\u025d\70\0\1\u025e"+
"\13\0\1\u025e\53\0\2\u025f\112\0\1\u0260\35\0\1\u0260"+
"\11\0\2\233\1\0\36\233\1\u0261\45\233\2\242\1\0"+
"\36\242\1\u0262\45\242\14\u0171\1\u0172\24\u0171\1\u0263\45\u0171"+
"\12\u0175\1\u0176\26\u0175\1\u0264\45\u0175\12\u0235\1\u0265\4\u0235"+
"\1\u0251\65\u0235\1\u01f1\1\u0235\14\u0238\1\u0266\2\u0238\1\u0252"+
"\65\u0238\1\u01f7\1\u0238\14\u0181\1\u0182\24\u0181\1\u0267\45\u0181"+
"\12\u0185\1\u0186\26\u0185\1\u0268\45\u0185\12\u023f\1\u0269\4\u023f"+
"\1\u0255\65\u023f\1\u020b\1\u023f\14\u0242\1\u026a\2\u0242\1\u0256"+
"\65\u0242\1\u0211\1\u0242\42\0\1\u026b\52\0\4\114\7\0"+
"\1\114\6\0\6\114\1\0\13\114\1\0\7\114\1\u026c"+
"\3\114\1\0\4\114\1\0\11\114\1\0\1\114\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\11\170\1\u026d"+
"\1\170\1\0\13\170\1\0\4\170\1\0\11\170\1\0"+
"\1\170\6\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\6\170\1\u026e\4\170\1\0\13\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170\44\0\1\u026f\11\0\1\u026f\72\0"+
"\1\u0270\14\0\1\u0270\71\0\1\u0271\14\0\1\u0271\27\0"+
"\2\233\1\0\37\233\1\u0272\44\233\2\242\1\0\37\242"+
"\1\u0273\44\242\14\u0171\1\u0172\25\u0171\1\u0274\44\u0171\12\u0175"+
"\1\u0176\27\u0175\1\u0275\44\u0175\14\u0181\1\u0182\25\u0181\1\u0276"+
"\44\u0181\12\u0185\1\u0186\27\u0185\1\u0277\44\u0185\41\0\1\u0278"+
"\53\0\4\114\7\0\1\114\6\0\5\114\1\u0279\1\0"+
"\13\114\1\0\13\114\1\0\4\114\1\0\11\114\1\0"+
"\1\114\6\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\13\170\1\0\4\170\1\u027a\6\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170\6\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\5\170\1\u027b\5\170\1\0\13\170\1\0"+
"\4\170\1\0\11\170\1\0\1\170\2\233\1\0\36\233"+
"\1\u027c\45\233\2\242\1\0\36\242\1\u027d\45\242\14\u0171"+
"\1\u0172\24\u0171\1\u027e\45\u0171\12\u0175\1\u0176\26\u0175\1\u027f"+
"\45\u0175\14\u0181\1\u0182\24\u0181\1\u0280\45\u0181\12\u0185\1\u0186"+
"\26\u0185\1\u0281\45\u0185\36\0\1\u0282\56\0\4\114\7\0"+
"\1\114\6\0\6\114\1\0\5\114\1\u0283\5\114\1\0"+
"\13\114\1\0\4\114\1\0\11\114\1\0\1\114\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\13\170\1\0"+
"\13\170\1\0\4\170\1\0\1\170\1\u0284\7\170\1\0"+
"\1\170\2\233\1\0\33\233\1\u0285\50\233\2\242\1\0"+
"\33\242\1\u0286\50\242\14\u0171\1\u0172\21\u0171\1\u0287\50\u0171"+
"\12\u0175\1\u0176\23\u0175\1\u0288\50\u0175\14\u0181\1\u0182\21\u0181"+
"\1\u0289\50\u0181\12\u0185\1\u0186\23\u0185\1\u028a\50\u0185\6\0"+
"\4\114\7\0\1\114\6\0\6\114\1\0\7\114\1\u028b"+
"\3\114\1\0\13\114\1\0\4\114\1\0\11\114\1\0"+
"\1\114\6\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\13\170\1\0\4\170\1\u028c\6\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170\6\0\4\114\7\0\1\114\6\0"+
"\6\114\1\0\13\114\1\0\13\114\1\0\4\114\1\0"+
"\11\114\1\0\1\u028d\6\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\10\170\1\u028e\2\170\1\0\13\170\1\0"+
"\4\170\1\0\11\170\1\0\1\170\6\0\4\114\7\0"+
"\1\114\6\0\6\114\1\0\5\114\1\u028f\5\114\1\0"+
"\13\114\1\0\4\114\1\0\11\114\1\0\1\114\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\4\170\1\u0290"+
"\6\170\1\0\13\170\1\0\4\170\1\0\11\170\1\0"+
"\1\170\6\0\4\114\7\0\1\114\6\0\6\114\1\0"+
"\5\114\1\u0291\5\114\1\0\13\114\1\0\4\114\1\0"+
"\11\114\1\0\1\114\6\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\5\170\1\u0292\5\170\1\0\13\170\1\0"+
"\4\170\1\0\11\170\1\0\1\170\6\0\4\114\7\0"+
"\1\114\6\0\6\114\1\0\13\114\1\0\4\114\1\u0293"+
"\6\114\1\0\4\114\1\0\11\114\1\0\1\114\6\u0294"+
"\4\u0295\7\u0294\1\u0295\5\u0294\1\0\6\u0295\1\u0294\13\u0295"+
"\1\u0294\13\u0295\1\u0294\4\u0295\1\u0294\11\u0295\1\u0294\1\u0295"+
"\43\0\1\u0296\3\0\1\u0297\7\0\1\u0298\1\u0299\21\0"+
"\1\u029a\12\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\4\170\1\u029b\3\170\1\u029c\2\170\1\0\4\170\1\u029d"+
"\1\u029e\5\170\1\0\4\170\1\0\6\170\1\u029f\2\170"+
"\1\0\1\170\60\0\1\u02a0\77\0\1\u02a1\115\0\1\u02a2"+
"\105\0\1\u02a3\107\0\1\u02a4\34\0\4\170\7\0\1\170"+
"\6\0\6\170\1\0\13\170\1\0\5\170\1\u02a5\5\170"+
"\1\0\4\170\1\0\11\170\1\0\1\170\6\0\4\170"+
"\7\0\1\170\6\0\6\170\1\0\12\170\1\u02a6\1\0"+
"\13\170\1\0\4\170\1\0\11\170\1\0\1\170\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\13\170\1\0"+
"\5\170\1\u02a7\5\170\1\0\4\170\1\0\11\170\1\0"+
"\1\170\6\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\13\170\1\0\4\170\1\u02a8\6\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170\6\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\13\170\1\0\5\170\1\u02a9\5\170\1\0"+
"\4\170\1\0\11\170\1\0\1\170\45\0\1\u02aa\136\0"+
"\1\u02ab\107\0\1\u02ac\67\0\1\u02ad\125\0\1\u02ae\16\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\6\170\1\u02af"+
"\4\170\1\0\13\170\1\0\4\170\1\0\11\170\1\0"+
"\1\170\6\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\13\170\1\0\13\170\1\0\4\170\1\0\1\170\1\u02b0"+
"\7\170\1\0\1\170\6\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\13\170\1\0\13\170\1\0\4\170\1\0"+
"\2\170\1\u02b1\6\170\1\0\1\170\6\0\4\170\7\0"+
"\1\170\6\0\6\170\1\0\13\170\1\0\4\170\1\u02b2"+
"\6\170\1\0\4\170\1\0\11\170\1\0\1\170\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\13\170\1\0"+
"\13\170\1\0\4\170\1\0\2\170\1\u02b3\6\170\1\0"+
"\1\170\47\0\1\u02b4\74\0\1\u02b5\106\0\1\u02b6\116\0"+
"\1\u02b7\105\0\1\u02b8\50\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\10\170\1\u02b9\2\170\1\0\13\170\1\0"+
"\4\170\1\0\11\170\1\0\1\170\6\0\4\170\7\0"+
"\1\170\6\0\5\170\1\u02ba\1\0\13\170\1\0\13\170"+
"\1\0\4\170\1\0\11\170\1\0\1\170\6\0\4\170"+
"\7\0\1\170\6\0\5\170\1\u02bb\1\0\13\170\1\0"+
"\13\170\1\0\4\170\1\0\11\170\1\0\1\170\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\6\170\1\u02bc"+
"\4\170\1\0\13\170\1\0\4\170\1\0\11\170\1\0"+
"\1\170\6\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\5\170\1\u02bd\5\170\1\0\13\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170\60\0\1\u02be\131\0\1\u02bf\52\0"+
"\1\u02c0\106\0\1\u02c1\45\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\13\170\1\0\5\170\1\u02c2\5\170\1\0"+
"\4\170\1\0\11\170\1\0\1\170\6\0\4\170\7\0"+
"\1\170\6\0\6\170\1\0\13\170\1\0\13\170\1\0"+
"\4\170\1\0\7\170\1\u02c3\1\170\1\0\1\170\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\10\170\1\u02c4"+
"\2\170\1\0\13\170\1\0\4\170\1\0\11\170\1\0"+
"\1\170\6\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\10\170\1\u02c5\2\170\1\0\13\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170\104\0\1\u02c6\63\0\1\u02ae\131\0"+
"\1\u02b8\106\0\1\u02c7\10\0\4\170\7\0\1\170\6\0"+
"\6\170\1\0\13\170\1\0\13\170\1\0\4\170\1\0"+
"\10\170\1\u02c8\1\0\1\170\6\0\4\170\7\0\1\170"+
"\6\0\6\170\1\0\13\170\1\0\6\170\1\u02b3\4\170"+
"\1\0\4\170\1\0\11\170\1\0\1\170\6\0\4\170"+
"\7\0\1\170\6\0\6\170\1\0\13\170\1\0\13\170"+
"\1\0\4\170\1\0\10\170\1\u02bd\1\0\1\170\6\0"+
"\4\170\7\0\1\170\6\0\6\170\1\0\13\170\1\0"+
"\13\170\1\0\4\170\1\0\10\170\1\u02c9\1\0\1\170"+
"\35\0\1\u02ae\154\0\1\u02ca\11\0\4\170\7\0\1\170"+
"\6\0\5\170\1\u02b3\1\0\13\170\1\0\13\170\1\0"+
"\4\170\1\0\11\170\1\0\1\170\6\0\4\170\7\0"+
"\1\170\6\0\6\170\1\0\13\170\1\0\13\170\1\0"+
"\4\170\1\0\7\170\1\u02cb\1\170\1\0\1\170\57\0"+
"\1\u02ae\35\0\4\170\7\0\1\170\6\0\6\170\1\0"+
"\13\170\1\0\4\170\1\u02b3\6\170\1\0\4\170\1\0"+
"\11\170\1\0\1\170";
/**
* The transition table of the DFA
*/
final private static int yytrans [] = yy_unpack(yy_packed);
/* error codes */
final private static int YY_UNKNOWN_ERROR = 0;
// final private static int YY_ILLEGAL_STATE = 1;
final private static int YY_NO_MATCH = 2;
final private static int YY_PUSHBACK_2BIG = 3;
/* error messages for the codes above */
final private static String YY_ERROR_MSG[] = {
"Unkown internal scanner error", //$NON-NLS-1$
"Internal error: unknown state", //$NON-NLS-1$
"Error: could not match input", //$NON-NLS-1$
"Error: pushback value was too large" //$NON-NLS-1$
};
/**
* YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
*/
private final static byte YY_ATTRIBUTE[] = {
1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
9, 1, 9, 1, 1, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 9, 1, 1, 9,
1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1,
1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1,
1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1,
1, 1, 1, 9, 9, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 9, 1, 1, 1, 1, 9, 1, 1, 1, 1, 9, 9, 1,
9, 3, 3, 3, 3, 3, 3, 9, 9, 1, 1, 9, 1, 9, 1, 1,
1, 1, 1, 9, 9, 1, 9, 3, 3, 3, 3, 3, 3, 9, 9, 1,
1, 1, 9, 1, 1, 1, 9, 9, 1, 1, 0, 1, 0, 9, 1, 2,
0, 1, 2, 1, 0, 0, 0, 9, 1, 1, 1, 9, 9, 0, 0, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 1, 0, 0, 1,
1, 9, 0, 9, 0, 0, 9, 0, 0, 0, 0, 0, 9, 1, 1, 0,
1, 0, 9, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 9, 0,
0, 0, 0, 9, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 9,
0, 0, 1, 0, 0, 9, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0,
0, 9, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 9, 0,
0, 0, 0, 0, 1, 1, 9, 1, 9, 9, 9, 9, 1, 1, 1, 1,
2, 13, 3, 2, 2, 13, 3, 2, 0, 1, 1, 0, 1, 1, 1, 1,
2, 13, 3, 2, 2, 13, 3, 2, 0, 1, 1, 0, 1, 1, 0, 9,
9, 9, 0, 0, 1, 1, 1, 9, 0, 0, 13, 9, 13, 9, 9, 1,
1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 3,
2, 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1,
1, 1, 1, 0, 1, 0, 1, 0, 3, 2, 3, 2, 1, 1, 1, 1,
1, 0, 2, 3, 3, 3, 2, 2, 3, 3, 3, 2, 1, 1, 1, 1,
0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 2, 3, 3, 3,
2, 2, 3, 3, 3, 2, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,
0, 0, 9, 9, 0, 1, 9, 0, 1, 1, 0, 0, 1, 5, 13, 13,
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 9, 5, 1, 3,
2, 3, 2, 1, 0, 9, 1, 0, 1, 3, 2, 3, 2, 1, 0, 9,
1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 2, 2,
0, 0, 2, 2, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 9, 9,
1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 0, 1, 1, 1, 9, 9,
9, 1, 1, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 2, 2, 2,
2, 9, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1,
1, 1, 1, 0, 0, 0, 0, 9, 1, 1, 1, 1, 1, 0, 0, 0,
0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1
};
/** the input device */
private java.io.Reader yy_reader;
/** the current state of the DFA */
private int yy_state;
/** the current lexical state */
private int yy_lexical_state = YYINITIAL;
/** this buffer contains the current text to be matched and is
the source of the yytext() string */
private char yy_buffer[] = new char[16384];
/** the textposition at the last accepting state */
private int yy_markedPos;
/** the textposition at the last state to be included in yytext */
private int yy_pushbackPos;
/** the current text position in the buffer */
private int yy_currentPos;
/** startRead marks the beginning of the yytext() string in the buffer */
private int yy_startRead;
/** endRead marks the last character in the buffer, that has been read
from input */
private int yy_endRead;
/** number of newlines encountered up to the start of the matched text */
private int yyline;
/** the number of characters up to the start of the matched text */
private int yychar;
/**
* the number of characters from the last newline up to the start of the
* matched text
*/
// private int yycolumn;
/**
* yy_atBOL == true <=> the scanner is currently at the beginning of a line
*/
// private boolean yy_atBOL;
/** yy_atEOF == true <=> the scanner has returned a value for EOF */
private boolean yy_atEOF;
/** denotes if the user-EOF-code has already been executed */
private boolean yy_eof_done;
/* user code: */
private int fTokenCount = 0;
// required holders for white-space compacting
private boolean fShouldLoadBuffered = false;
private String fBufferedContext = null;
private int fBufferedStart = 1;
private int fBufferedLength = 0;
private ContextRegionContainer fBufferedEmbeddedContainer = null;
private String f_context = null;
// state stack for handling embedded regions
private IntStack fStateStack = new IntStack();
// a "hint" as to what an embedded region should be evaluated
private String fEmbeddedHint = UNDEFINED;
// a "hint" as to what state to enter once an embedded region has
// been completed
private int fEmbeddedPostState = YYINITIAL;
// the container used to create embedded regions
private ContextRegionContainer fEmbeddedContainer = null;
private static final String PROXY_CONTEXT = "PROXY_CONTEXT";
private String context = null;
private int start = 0;
private int textLength = 0;
private int length = 0;
// offset for tracking position specific block tags
private int fOffset = 0;
// the name of the current tag being opened
private String fCurrentTagName = null;
// the name of the current tag inside of an embedded region
private String internalTagName = null;
private String internalContext = null;
// the list of tag name BlockMarkers
private List fBlockMarkers = new ArrayList(0);
private List fNestablePrefixes = new ArrayList(1);
// where the last internal container block was found
private int fLastInternalBlockStart = -1;
// required to not seek text blocks on an end tag
private boolean fIsBlockingEnabled = false;
private boolean fIsCaseSensitiveBlocking = true;
private static final boolean fForbidJSP = false;
private int fELlevel = 0;
private JSPParserRegionFactory fRegionFactory = new JSPParserRegionFactory();
// Is the embedded tag a JSP tag
private boolean fEmbeddedTag = false;
// Is the non-embedded tag a JSP tag
private boolean fContainerTag = false;
// Is the tokenizer in a non-embedded tag (between < and >)
private boolean fInTagContainer = false;
// Is the tokenizer in an embedded tag (between < and >)
private boolean fInTagEmbedded = false;
/**
* user method
*/
public final void addBlockMarker(BlockMarker marker) {
if(containsTagName(marker.getTagName()))
return;
fBlockMarkers.add(marker);
}
/**
* user method
*/
public final void addNestablePrefix(TagMarker marker) {
fNestablePrefixes.add(marker);
}
/* user method */
public List getNestablePrefixes() {
return fNestablePrefixes;
}
/**
* user method
*/
private boolean isNestable(String tagName) {
//Iterator blocks = fNestablePrefixes.iterator();
//while(blocks.hasNext()) {
// TagMarker marker = (TagMarker)blocks.next();
// String markerName = marker.getTagName();
// if(tagName.length() > markerName.length() + 1 && tagName.startsWith(markerName) && tagName.charAt(markerName.length()) == ':') {
// return marker.isGlobal() || getOffset() >= marker.getMarker().getStart();
// }
//}
//return false;
return true;
}
/**
* user method
*/
public final void removeNestablePrefix(String name) {
if (fNestablePrefixes != null) {
Iterator nestables = fNestablePrefixes.iterator();
while (nestables.hasNext()) {
if (((TagMarker) nestables.next()).getTagName().equalsIgnoreCase(name))
nestables.remove();
}
}
}
/**
* user method
*/
public final void removeBlockMarker(BlockMarker marker) {
fBlockMarkers.remove(marker);
}
/**
* user method
*/
public final void removeBlockMarker(String tagname) {
if (fBlockMarkers != null) {
Iterator blocks = fBlockMarkers.iterator();
while (blocks.hasNext()) {
if (((BlockMarker) blocks.next()).getTagName().equals(tagname))
blocks.remove();
}
}
}
/* user method */
private final void assembleEmbeddedTagSequence(String startType, String endTagName) {
assembleEmbeddedContainer(startType, null, endTagName);
}
/* user method */
private final void assembleEmbeddedContainer(String startType, String[] endTypes) {
assembleEmbeddedContainer(startType, endTypes, null);
}
/* user method */
private final void assembleEmbeddedContainer(String startType, String endType) {
assembleEmbeddedContainer(startType, new String[]{endType}, null);
}
/**
* user method
*
* Assembles an embedded container beginning with the given startType as
* the first ContextRegion within it and of the type fEmbeddedHint. The
* endTypes[] array contains the context types that will cause a successful
* exit. Use of the endTagName parameter alters this behavior to force an
* exit on an XML_TAG_CLOSE after seeing an XML_TAG_NAME whose significant
* text matches the endTagName String. All contents in between are
* insignificant, and yes, this means comments are allowed inside.
**/
private final void assembleEmbeddedContainer(String startType, String[] endTypes, String endTagName) {
// the context of the region being added to the embedded container
internalContext = startType;
// keep track of where this container began; to provide relative indeces for the regions
int containerStart = yychar;
boolean notFinished = true;
// keep track of where we seem to be so that the endTagName can be checked
boolean isInEndTag = false;
boolean isInFirstTag = true;
// create the embedded container and setup its "type"
if (fEmbeddedContainer == null) {
fEmbeddedContainer = new ContextRegionContainer();
fEmbeddedContainer.setType(fEmbeddedHint);
fEmbeddedContainer.setStart(containerStart);
// TODO: parent region needs to be set .... but not sure where to get it from
// fEmbeddedContainer.setParent(parentRegion);
}
containerStart = fEmbeddedContainer.getStart();
while (notFinished) {
// add the region to the container
if (internalContext != null && internalContext != PROXY_CONTEXT) {
ITextRegion newToken = fRegionFactory.createToken(internalContext, yychar - containerStart, yylength(), yylength());
fEmbeddedContainer.getRegions().add(newToken);
fEmbeddedContainer.setLength(fEmbeddedContainer.getLength() + yylength());
fEmbeddedContainer.setTextLength(fEmbeddedContainer.getTextLength() + yylength());
// DW, 4/16/2003 token regions no longer have parents
//newToken.setParent(fEmbeddedContainer);
}
try {
// longscan determines whether to attempt a blockTagScan within the embedded container
boolean longscan = false;
// save the tokenizer state in case of a block tag scan
int previousState = yystate();
String previousCurrentTagName = fCurrentTagName;
int previousPostState = fEmbeddedPostState;
String previousEmbeddedHint = fEmbeddedHint;
// determine if a block tag scan is necessary
if (internalContext == XML_TAG_NAME) {
internalTagName = yytext();
if(!isNestable(internalTagName)) {
internalTagName = null;
// snagged a tag name we shouldn't have
fEmbeddedPostState = ST_ABORT_EMBEDDED;
notFinished = false;
}
}
else if (internalContext == XML_TAG_OPEN || internalContext == XML_END_TAG_OPEN) {
internalTagName = null;
}
// do upkeep for endTagName usage; must be here since the next token could be the close
if (internalContext == XML_END_TAG_OPEN) {
isInEndTag = true;
} else if (internalContext == XML_TAG_CLOSE) {
isInFirstTag = isInEndTag = false;
} else {
ITextRegionList embeddedRegions = fEmbeddedContainer.getRegions();
if (embeddedRegions.size() > 2 && (embeddedRegions.get(embeddedRegions.size()-1)).getType() == XML_TAG_CLOSE && (embeddedRegions.get(embeddedRegions.size() - 3)).getType() == XML_TAG_OPEN && internalTagName != null) {
if (containsTagName(internalTagName)) {
longscan = true;
yybegin(ST_BLOCK_TAG_SCAN);
}
}
}
if (longscan)
fCurrentTagName = internalTagName;
// read the next region and context
internalContext = primGetNextToken();
if (longscan) {
// Returning from a block tag scan requires restoring some state variables
// as well as handling the block region and setting up for normal scanning
// inside the embedded container
ITextRegion newToken = fRegionFactory.createToken(internalContext, yychar - containerStart, yylength(), yylength());
fEmbeddedContainer.getRegions().add(newToken);
fEmbeddedContainer.setLength(fEmbeddedContainer.getLength() + yylength());
fEmbeddedContainer.setTextLength(fEmbeddedContainer.getTextLength() + yylength());
// DW, 4/16/2003 token regions no longer have parents
// newToken.setParent(fEmbeddedContainer);
longscan = false;
fEmbeddedPostState = previousPostState;
fEmbeddedHint = previousEmbeddedHint;
fCurrentTagName = previousCurrentTagName;
yybegin(previousState);
internalContext = primGetNextToken();
}
} catch (IOException e) {
// primGetNextToken() calls may throw an IOException
// catch and do nothing since the isEOF check below
// will properly exit if the input was too short
} catch (Exception f) {
// some other exception happened; never should
Logger.logException(f);
}
boolean isEndingType = yystate() == ST_ABORT_EMBEDDED;
if(!isEndingType) {
// check for ending context
if (endTagName == null) {
for (int i = 0; i < endTypes.length; i++) {
isEndingType = isEndingType || (internalContext == endTypes[i]);
}
}
else {
isEndingType = ((isInEndTag && internalContext == XML_TAG_CLOSE) || (isInFirstTag && internalContext == XML_EMPTY_TAG_CLOSE)) && internalTagName != null && internalTagName.equals(endTagName);
}
}
ITextRegionList embeddedList = fEmbeddedContainer.getRegions();
notFinished = notFinished && ((!isEndingType) && !isEOF() && (endTagName != null || internalContext != UNDEFINED) && !(internalContext == PROXY_CONTEXT && (embeddedList.get(embeddedList.size()-1)).getType() == UNDEFINED));
}
// finish adding the last context
if (internalContext != null && internalContext != PROXY_CONTEXT) {
ITextRegion newToken = fRegionFactory.createToken(internalContext, yychar - containerStart, yylength(), yylength());
fEmbeddedContainer.getRegions().add(newToken);
// DW, 4/16/2003 token regions no longer have parents
//newToken.setParent(fEmbeddedContainer);
fEmbeddedContainer.setLength(yychar - containerStart + yylength());
fEmbeddedContainer.setTextLength(yychar - containerStart + yylength());
}
yybegin(fEmbeddedPostState);
}
/* user method */
public final boolean isCaseSensitiveBlocking() {
return fIsCaseSensitiveBlocking;
}
/* user method */
public final void setCaseSensitiveBlocking(boolean newValue) {
fIsCaseSensitiveBlocking = newValue;
}
/* user method */
public boolean getBlockMarkerAllowsJSP() {
return getBlockMarkerAllowsJSP(fCurrentTagName);
}
/* user method */
public boolean getBlockMarkerAllowsJSP(String name) {
Iterator iterator = fBlockMarkers.iterator();
while(iterator.hasNext()) {
BlockMarker marker = (BlockMarker)iterator.next();
boolean casesensitive = marker.isCaseSensitive();
if(casesensitive && marker.getTagName().equals(name))
return marker.allowsJSP();
else if(!casesensitive && marker.getTagName().equalsIgnoreCase(name))
return marker.allowsJSP();
}
return true;
}
/* user method */
public boolean getBlockMarkerCaseSensitivity() {
return getBlockMarkerCaseSensitivity(fCurrentTagName);
}
public boolean getBlockMarkerCaseSensitivity(String name) {
Iterator iterator = fBlockMarkers.iterator();
while(iterator.hasNext()) {
BlockMarker marker = (BlockMarker)iterator.next();
boolean casesensitive = marker.isCaseSensitive();
if(casesensitive && marker.getTagName().equals(name))
return casesensitive;
else if(!casesensitive && marker.getTagName().equalsIgnoreCase(name))
return casesensitive;
}
return true;
}
/* user method */
public String getBlockMarkerContext() {
return getBlockMarkerContext(fCurrentTagName);
}
/* user method */
public String getBlockMarkerContext(String name) {
Iterator iterator = fBlockMarkers.iterator();
while(iterator.hasNext()) {
BlockMarker marker = (BlockMarker)iterator.next();
if(marker.getTagName().equals(name))
return marker.getContext();
}
return BLOCK_TEXT;
}
/* user method */
public List getBlockMarkers() {
return fBlockMarkers;
}
/* user method */
public final int getOffset() {
return fOffset + yychar;
}
private final boolean isBlockMarker() {
return isBlockMarker(fCurrentTagName);
}
private final boolean isBlockMarker(String tagName) {
if (!fIsBlockingEnabled)
return false;
return containsTagName(tagName);
}
/**
* user method
*/
public final void beginBlockTagScan(String newTagName) {
beginBlockMarkerScan(newTagName, BLOCK_TEXT);
}
/**
* user method
*
* Special tokenizer setup. Allows tokenization to be initiated at the
* start of a text block within a "newTagName" tag.
*
* Example:
* Tokenizer toker = new Tokenizer();
* toker.setCaseSensitiveBlocking(false);
* toker.reset(new java.io.StringReader("afiuhqwkejhtasihgalkwhtq</scripter></scr></script>asgdasga"));
* toker.beginBlockMarkerScan("script", BLOCK_TEXT);
* toker.getRegions();
*
* Returns:
* BLOCK_TEXT: 0-40
* XML_END_TAG_OPEN: 41-42
* XML_TAG_NAME: 43-48
* XML_TAG_CLOSE: 49-49
* XML_CONTENT: 50-57
*
*/
public final void beginBlockMarkerScan(String newTagName, String blockcontext) {
yybegin(ST_BLOCK_TAG_SCAN);
fCurrentTagName = newTagName;
}
/**
* Method doScan.
*
* Returns a context region for all of the text from the current position upto the end of input or
* to right *before* the first occurence of searchString
*
* @param searchString - target string to search for ex.: "-->", "</tagname"
* @param requireTailSeparator - whether the target must be immediately followed by whitespace or '>'
* @param allowJSP - check for and allow for JSP markup <%%>
* @param context - the context of the scanned region if non-zero length
* @param exitState - the state to go to if the region was of non-zero length
* @param abortState - the state to go to if the searchString was found immediately
* @return String - the context found: the desired context on a non-zero length match, the abortContext on immediate success
* @throws IOException
*/
private final String doScan(String searchString, boolean requireTailSeparator, boolean allowJSP, boolean allowCDATA, String searchContext, int exitState, int immediateFallbackState) throws IOException {
boolean stillSearching = true;
// Disable further block (probably)
fIsBlockingEnabled = false;
int searchStringLength = searchString.length();
int n = 0;
char lastCheckChar;
int i;
boolean same = false;
// Check for JSP starts ("<%") if the tag is global like SCRIPT or STYLE
boolean checkJSPs = allowJSP && !fForbidJSP;
boolean checkedForJSPsOnce = !checkJSPs;
boolean checkedJSPsAtStartOnce = false;
while (stillSearching) {
n = 0;
// Ensure that enough data from the input exists to compare against the search String.
n = yy_advance();
while(n != YYEOF && yy_currentPos < searchStringLength)
n = yy_advance();
// c = (char) n;
// If the input was too short or we've exhausted the input, stop immediately.
if (n == YYEOF && checkedForJSPsOnce) {
stillSearching = false;
}
else {
/**
* Look for starting JSPs "<%"
*/
checkedForJSPsOnce = true;
// 1) yy_currentPos - searchStringLength : There's at least searchStringLength of input available; once that's read, check for JSPs
// ---
// Look for a JSP beginning at current-searchStringLength; if so, backup and switch scanner states to handle it.
// Ensure that we've not encountered a complete block (<%%>) that was *shorter* than the closeTagString and
// thus found twice at current-targetLength [since the first scan would have come out this far anyway].
if(checkJSPs && yy_currentPos > searchStringLength && yy_currentPos - searchStringLength != fLastInternalBlockStart &&
yy_buffer[yy_currentPos - searchStringLength] == '<' && yy_buffer[yy_currentPos - searchStringLength + 1] == '%') {
fLastInternalBlockStart = yy_markedPos = yy_currentPos - searchStringLength;
yy_currentPos = yy_markedPos + 1;
int resumeState = yystate();
yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
if(yy_markedPos == yy_startRead) {
String jspContext = primGetNextToken();
yybegin(resumeState);
return jspContext;
}
return searchContext;
}
// 2) yy_currentPos - jspstarter.length : There's not searchStringLength of input available; check for a JSP 2 spots back in what we could read
// ---
// Look for a JSP beginning at the current position; this case wouldn't be handled by the preceding section
// since it relies upon *having* closeTagStringLength amount of input to work as designed. Must be sure we don't
// spill over the end of the buffer while checking.
else if(checkJSPs && yy_startRead != fLastInternalBlockStart && yy_currentPos > 0 && yy_currentPos < yy_buffer.length - 1 &&
yy_buffer[yy_currentPos - 1] == '<' && yy_buffer[yy_currentPos] == '%') {
fLastInternalBlockStart = yy_markedPos = yy_currentPos - 1;
yy_currentPos = yy_markedPos + 1;
int resumeState = yystate();
yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
if(yy_markedPos == yy_startRead) {
String jspContext = primGetNextToken();
yybegin(resumeState);
return jspContext;
}
return searchContext;
}
// 3) yy_currentPos..(yy_currentPos+jspStartlength-1) : Check at the start of the block one time
// ---
// Look for a JSP beginning immediately in the block area; this case wouldn't be handled by the preceding section
// since it relies upon yy_currentPos equaling exactly the previous end +1 to work as designed.
else if(checkJSPs && !checkedJSPsAtStartOnce && yy_startRead != fLastInternalBlockStart && yy_startRead > 0 &&
yy_startRead < yy_buffer.length - 1 && yy_buffer[yy_startRead] == '<' && yy_buffer[yy_startRead + 1] == '%') {
checkedJSPsAtStartOnce = true;
fLastInternalBlockStart = yy_markedPos = yy_startRead;
yy_currentPos = yy_markedPos + 1;
int resumeState = yystate();
yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
if(yy_markedPos == yy_startRead) {
String jspContext = primGetNextToken();
yybegin(resumeState);
return jspContext;
}
return searchContext;
}
/**
* Look for starting CDATA "<![CDATA["
*/
// 1) yy_currentPos - searchStringLength: There's at least searchStringLength of input available; once that's read, check for CDATA
// ---
// Look for a CDATA beginning at current-searchStringLength; if so, backup and switch scanner states to handle it.
// Ensure that we've not encountered a complete block (<[!CDATA[]]>) that was *shorter* than the closeTagString and
// thus found twice at current-targetLength [since the first scan would have come out this far anyway].
/* if(checkCDATA && yy_currentPos > searchStringLength && yy_currentPos + searchStringLength < yy_buffer.length && yy_currentPos - searchStringLength != fLastInternalBlockStart &&
charsMatch(cdataStarter, yy_buffer, 0, yy_currentPos - searchStringLength)) {
fLastInternalBlockStart = yy_markedPos = yy_currentPos - searchStringLength;
yy_currentPos = yy_markedPos + 1;
int resumeState = yystate();
// go to a state where CDATA can be found
if (fEmbeddedContainer == null) {
fEmbeddedContainer = new ContextRegionContainer();
fEmbeddedContainer.setType(searchContext);
fEmbeddedContainer.setStart(yychar);
}
ITextRegion newToken = fRegionFactory.createToken(searchContext, yychar, yylength(), yylength());
fEmbeddedContainer.getRegions().add(newToken);
fEmbeddedContainer.setLength(fEmbeddedContainer.getLength() + yylength());
fEmbeddedContainer.setTextLength(fEmbeddedContainer.getTextLength() + yylength());
yybegin(YYINITIAL);
String context = primGetNextToken();
if(context.equals(XMLRegionContexts.XML_CDATA_OPEN)) {
assembleEmbeddedContainer(XMLRegionContexts.XML_CDATA_OPEN, XMLRegionContexts.XML_CDATA_CLOSE);
}
yybegin(resumeState);
return searchContext;
}
*//*
// 2) yy_currentPos - cdataStarter.length: There's not searchStringLength of input available; check for a CDATA right here spots back in what we could read
// ---
// Look for a JSP beginning at the current position; this case wouldn't be handled by the preceding section
// since it relies upon *having* closeTagStringLength amount of input to work as designed. Must be sure we don't
// spill over the end of the buffer while checking.
else if(checkCDATA && yy_startRead != fLastInternalBlockStart && yy_currentPos > 0 && yy_currentPos < yy_buffer.length - 1 &&
yy_buffer[yy_currentPos - 1] == '<' && yy_buffer[yy_currentPos] == '%') {
fLastInternalBlockStart = yy_markedPos = yy_currentPos - 1;
yy_currentPos = yy_markedPos + 1;
int resumeState = yystate();
yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
if(yy_markedPos == yy_startRead) {
String jspContext = primGetNextToken();
yybegin(resumeState);
return jspContext;
}
return searchContext;
}
// 3) yy_currentPos : Check at the start of the block one time
// ---
// Look for a JSP beginning immediately in the block area; this case wouldn't be handled by the preceding section
// since it relies upon yy_currentPos equaling exactly the previous end +1 to work as designed.
else if(checkCDATA && !checkedForCDATAOnce && yy_startRead != fLastInternalBlockStart && yy_startRead > 0 &&
yy_startRead < yy_buffer.length - 1 && yy_buffer[yy_startRead] == '<' && yy_buffer[yy_startRead + 1] == '%') {
checkedForCDATAOnce = true;
fLastInternalBlockStart = yy_markedPos = yy_startRead;
yy_currentPos = yy_markedPos + 1;
int resumeState = yystate();
yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
if(yy_markedPos == yy_startRead) {
String jspContext = primGetNextToken();
yybegin(resumeState);
return jspContext;
}
return searchContext;
}
*/
// Check the characters in the target versus the last targetLength characters read from the buffer
// and see if it matches
if (n == YYEOF) {
stillSearching = false;
}
else {
same = true;
// safety check for array accesses
if(yy_currentPos >= searchStringLength && yy_currentPos <= yy_buffer.length) {
for(i = 0; i < searchStringLength; i++) {
if(same && fIsCaseSensitiveBlocking)
same = yy_buffer[i + yy_currentPos - searchStringLength] == searchString.charAt(i);
else if(same && !fIsCaseSensitiveBlocking)
same = Character.toLowerCase(yy_buffer[i + yy_currentPos - searchStringLength]) == Character.toLowerCase(searchString.charAt(i));
}
}
// safety check failed; no match is possible right now
else {
same = false;
}
}
if (same && requireTailSeparator && yy_currentPos < yy_buffer.length) {
// Additional check for close tags to ensure that targetString="</script" doesn't match
// "</scriptS"
lastCheckChar = yy_buffer[yy_currentPos];
// Succeed on "</script>" and "</script "
if(lastCheckChar == '>' || Character.isWhitespace(lastCheckChar))
stillSearching = false;
}
else {
stillSearching = !same || (yy_currentPos < yy_startRead + searchStringLength);
}
}
}
if (n != YYEOF || same) {
// We've stopped short of the end or definitely found a match
yy_markedPos = yy_currentPos - searchStringLength;
yy_currentPos = yy_markedPos + 1;
// If the searchString occurs at the very beginning of what would have
// been a Block, resume scanning normally immediately
if (yy_markedPos == yy_startRead) {
yybegin(immediateFallbackState);
return primGetNextToken();
}
}
else {
// We ran through the rest of the input
yy_markedPos = yy_currentPos;
yy_currentPos++;
}
yybegin(exitState);
// If the ending occurs at the very beginning of what would have
// been a Block, resume scanning normally immediately
if(yy_markedPos == yy_startRead)
return primGetNextToken();
return searchContext;
}
/**
* user method
* does a lookahead for the current tag name
*/
private final String doBlockTagScan() throws IOException {
fIsCaseSensitiveBlocking = getBlockMarkerCaseSensitivity();
return doScan("</" + fCurrentTagName, true, getBlockMarkerAllowsJSP(), true, getBlockMarkerContext(fCurrentTagName), YYINITIAL, YYINITIAL);
}
/**
* user method
*
* Converts the raw context String returned by the primGetNextToken()
* method into a full ITextRegion by pulling in values for the
* current offset within the scanning text.
*
* Returns null when EOF is encountered and attaches intermittently
* discovered whitespace onto the end of useful regions.
*
* Note that this algorithm caches the token following the one being returned
* so that whitespace can be collapsed.
*/
public final ITextRegion getNextToken() throws IOException {
fEmbeddedContainer = null;
// load the starting non-whitespace token (assume that it is so)
if (fShouldLoadBuffered) {
if (fBufferedEmbeddedContainer != null) {
ITextRegion container = fBufferedEmbeddedContainer;
fBufferedEmbeddedContainer = null;
fShouldLoadBuffered = false;
return container;
}
context = fBufferedContext;
start = fBufferedStart;
textLength = length = fBufferedLength;
fShouldLoadBuffered = false;
} else {
context = primGetNextToken();
if (context == PROXY_CONTEXT) {
return fEmbeddedContainer;
} else if (context == XML_TAG_NAME || f_context == JSP_ROOT_TAG_NAME || f_context == JSP_DIRECTIVE_NAME) {
if(containsTagName(yy_buffer, yy_startRead, yy_markedPos-yy_startRead))
fCurrentTagName = yytext();
else
fCurrentTagName = null;
} else if (context == XML_TAG_OPEN) {
fIsBlockingEnabled = true;
} else if (context == XML_END_TAG_OPEN) {
fIsBlockingEnabled = false;
}
start = yychar;
textLength = length = yylength();
if (yy_atEOF) {
fTokenCount++;
return null;
}
}
// store the next token
f_context = primGetNextToken();
if (f_context == PROXY_CONTEXT) {
fBufferedEmbeddedContainer = fEmbeddedContainer;
fShouldLoadBuffered = true;
} else if (f_context == XML_TAG_NAME || f_context == JSP_ROOT_TAG_NAME || f_context == JSP_DIRECTIVE_NAME) {
if(containsTagName(yy_buffer, yy_startRead, yy_markedPos-yy_startRead))
fCurrentTagName = yytext();
else
fCurrentTagName = null;
} else if (f_context == XML_TAG_OPEN) {
fIsBlockingEnabled = true;
} else if (f_context == XML_END_TAG_OPEN) {
fIsBlockingEnabled = false;
}
fBufferedContext = f_context;
fBufferedStart = yychar;
fBufferedLength = yylength();
fShouldLoadBuffered = true;
if (fBufferedContext == WHITE_SPACE) {
fShouldLoadBuffered = false;
length += fBufferedLength;
}
if (context == null) {
// EOF
if (Debug.debugTokenizer) {
System.out.println(getClass().getName() + " discovered " + fTokenCount + " tokens."); //$NON-NLS-2$//$NON-NLS-1$
}
return null;
}
fTokenCount++;
return fRegionFactory.createToken(context, start, textLength, length, null, fCurrentTagName);
}
/* user method */
public JSPTokenizer(){
super();
}
/* user method */
public JSPTokenizer(char[] charArray){
this(new CharArrayReader(charArray));
}
/* user method */
public void reset(char[] charArray) {
reset(new CharArrayReader(charArray), 0);
}
/* user method */
public void reset(char[] charArray, int newOffset) {
reset(new CharArrayReader(charArray), newOffset);
}
/* user method */
public void reset(java.io.InputStream in) {
reset(new java.io.InputStreamReader(in), 0);
}
/* user method */
public void reset(java.io.InputStream in, int newOffset) {
reset(new java.io.InputStreamReader(in), newOffset);
}
/* user method */
public void reset(java.io.Reader in) {
reset(in, 0);
}
/**
* user method *
*
* Reset internal counters and vars to "newly created" values, in the hopes
* that resetting a pre-existing tokenizer is faster than creating a new one.
*
* This method contains code blocks that were essentially duplicated from the
* <em>generated</em> output of this specification before this method was
* added. Those code blocks were under the above copyright.
*/
public void reset(java.io.Reader in, int newOffset) {
if (Debug.debugTokenizer) {
System.out.println("resetting tokenizer");//$NON-NLS-1$
}
fOffset = newOffset;
/* the input device */
yy_reader = in;
/* the current state of the DFA */
yy_state = 0;
/* the current lexical state */
yy_lexical_state = YYINITIAL;
/* this buffer contains the current text to be matched and is
the source of the yytext() string */
java.util.Arrays.fill(yy_buffer, (char)0);
/* the textposition at the last accepting state */
yy_markedPos = 0;
/* the textposition at the last state to be included in yytext */
yy_pushbackPos = 0;
/* the current text position in the buffer */
yy_currentPos = 0;
/* startRead marks the beginning of the yytext() string in the buffer */
yy_startRead = 0;
/**
* endRead marks the last character in the buffer, that has been read
* from input
*/
yy_endRead = 0;
/* number of newlines encountered up to the start of the matched text */
yyline = 0;
/* the number of characters up to the start of the matched text */
yychar = 0;
/* yy_atEOF == true <=> the scanner has returned a value for EOF */
yy_atEOF = false;
/* denotes if the user-EOF-code has already been executed */
yy_eof_done = false;
/* user vars: */
fTokenCount = 0;
fShouldLoadBuffered = false;
fBufferedContext = null;
fBufferedStart = 1;
fBufferedLength = 0;
fStateStack = new IntStack();
fLastInternalBlockStart = -1;
context = null;
start = 0;
textLength = 0;
length = 0;
fEmbeddedContainer = null;
fELlevel = 0;
}
/**
* user method
*
*/
public BlockTokenizer newInstance() {
JSPTokenizer newInstance = new JSPTokenizer();
// global tagmarkers can be shared; they have no state and
// are never destroyed (e.g. 'release')
for(int i = 0; i < fBlockMarkers.size(); i++) {
BlockMarker blockMarker = (BlockMarker) fBlockMarkers.get(i);
if(blockMarker.isGlobal())
newInstance.addBlockMarker(blockMarker);
}
for(int i = 0; i < fNestablePrefixes.size(); i++) {
TagMarker marker = (TagMarker) fNestablePrefixes.get(i);
if(marker.isGlobal())
newInstance.addNestablePrefix(marker);
}
return newInstance;
}
/* user method */
private final String scanXMLCommentText() throws IOException {
// Scan for '-->' and return the text up to that point as
// XML_COMMENT_TEXT unless the string occurs IMMEDIATELY, in which
// case change to the ST_XML_COMMENT_END state and return the next
// context as usual.
return doScan("-->", false, true, true, XML_COMMENT_TEXT, ST_XML_COMMENT_END, ST_XML_COMMENT_END);
}
/* user method */
private final String scanJSPCommentText() throws IOException {
// Scan for '--%>' and return the text up to that point as
// JSP_COMMENT_TEXT unless the string occurs IMMEDIATELY, in which
// case change to the ST_JSP_COMMENT_END state and return the next
// context as usual.
return doScan("--%>", false, false, true, JSP_COMMENT_TEXT, ST_JSP_COMMENT_END, ST_JSP_COMMENT_END);
}
/* user method */
private boolean isJspTag() {
return (fContainerTag && fEmbeddedContainer != null) || (fContainerTag && fInTagContainer) || (fEmbeddedTag && fInTagEmbedded);
}
/**
* Creates a new scanner
* There is also a java.io.InputStream version of this constructor.
*
* @param in the java.io.Reader to read input from.
*/
public JSPTokenizer(java.io.Reader in) {
this.yy_reader = in;
}
/**
* Creates a new scanner.
* There is also java.io.Reader version of this constructor.
*
* @param in the java.io.Inputstream to read input from.
*/
public JSPTokenizer(java.io.InputStream in) {
this(new java.io.InputStreamReader(in));
}
/**
* Unpacks the compressed DFA transition table.
*
* @param packed the packed transition table
* @return the unpacked transition table
*/
private static int [] yy_unpack(String packed) {
int [] trans = new int[35145];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 9302) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
value--;
do trans[j++] = value; while (--count > 0);
}
return trans;
}
/**
* Unpacks the compressed character translation table.
*
* @param packed the packed character translation table
* @return the unpacked character translation table
*/
private static char [] yy_unpack_cmap(String packed) {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 1376) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
}
return map;
}
/**
* Gets the next input character.
*
* @return the next character of the input stream, EOF if the
* end of the stream is reached.
* @exception IOException if any I/O-Error occurs
*/
private int yy_advance() throws java.io.IOException {
/* standard case */
if (yy_currentPos < yy_endRead) return yy_buffer[yy_currentPos++];
/* if the eof is reached, we don't need to work hard */
if (yy_atEOF) return YYEOF;
/* otherwise: need to refill the buffer */
/* first: make room (if you can) */
if (yy_startRead > 0) {
System.arraycopy(yy_buffer, yy_startRead,
yy_buffer, 0,
yy_endRead-yy_startRead);
/* translate stored positions */
yy_endRead-= yy_startRead;
yy_currentPos-= yy_startRead;
yy_markedPos-= yy_startRead;
yy_pushbackPos-= yy_startRead;
yy_startRead = 0;
}
/* is the buffer big enough? */
if (yy_currentPos >= yy_buffer.length) {
/* if not: blow it up */
char newBuffer[] = new char[yy_currentPos*2];
System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
yy_buffer = newBuffer;
}
/* finally: fill the buffer with new input */
int numRead = yy_reader.read(yy_buffer, yy_endRead,
yy_buffer.length-yy_endRead);
if ( numRead == -1 ) return YYEOF;
yy_endRead+= numRead;
return yy_buffer[yy_currentPos++];
}
/**
* Closes the input stream.
*/
final public void yyclose() throws java.io.IOException {
yy_atEOF = true; /* indicate end of file */
yy_endRead = yy_startRead; /* invalidate buffer */
yy_reader.close();
}
/**
* Returns the current lexical state.
*/
final public int yystate() {
return yy_lexical_state;
}
/**
* Enters a new lexical state
*
* @param newState the new lexical state
*/
final public void yybegin(int newState) {
yy_lexical_state = newState;
}
/**
* Returns the text matched by the current regular expression.
*/
final public String yytext() {
return new String( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );
}
/**
* Returns the length of the matched text region.
*/
final public int yylength() {
return yy_markedPos-yy_startRead;
}
/**
* Reports an error that occured while scanning - from the SED JFlex skeleton
*
* @param errorCode the code of the errormessage to display
*/
private void yy_ScanError(int errorCode) {
try {
Logger.log(Logger.ERROR, YY_ERROR_MSG[errorCode]);
}
catch (ArrayIndexOutOfBoundsException e) {
Logger.log(Logger.ERROR, YY_ERROR_MSG[YY_UNKNOWN_ERROR]);
}
// DO NOT EXIT the VM on an error
// System.exit(1);
}
/**
* Pushes the specified amount of characters back into the input stream.
*
* They will be read again by then next call of the scanning method
*
* @param number the number of characters to be read again.
* This number must not be greater than yylength()!
*/
void yypushback(int number) {
if ( number > yylength() )
yy_ScanError(YY_PUSHBACK_2BIG);
yy_markedPos -= number;
}
/**
* user method - skeleton.sed
*/
protected final boolean containsTagName(char[] markerTagName, int offset, int tagnameLength) {
for(int j = 0; j < fBlockMarkers.size(); j++) {
BlockMarker marker = (BlockMarker)fBlockMarkers.get(j);
if(marker.getTagName().length() == tagnameLength) {
boolean matchesSoFar = true;
for(int i = 0; i < tagnameLength && matchesSoFar; i++) {
if(marker.isCaseSensitive()) {
if(marker.getTagName().charAt(i) != markerTagName[i + offset])
matchesSoFar = false;
}
else {
if(Character.toLowerCase(marker.getTagName().charAt(i)) != Character.toLowerCase(markerTagName[i + offset]))
matchesSoFar = false;
}
}
if(matchesSoFar)
return true;
}
}
return false;
}
/**
* user method - skeleton.sed
*
* Return ALL of the regions scannable within the remaining text
* Note: for verification use
*/
public final List getRegions() {
List tokens = new ArrayList();
ITextRegion region = null;
try {
region = getNextToken();
while(region != null) {
if (region != null) {
tokens.add(region);
}
region = getNextToken();
}
}
catch (StackOverflowError e) {
Logger.logException(getClass().getName()+": input could not be tokenized correctly at position " + getOffset(), e);//$NON-NLS-1$
throw e;
}
catch (Exception e) {
// Since this is convenience method and NOT the recommended
// way of getting tokens, many errors are simply hidden
Logger.logException("Exception not handled retrieving regions: " + e.getLocalizedMessage(), e);//$NON-NLS-1$
}
return tokens;
}
/**
* user method - skeleton.sed
*/
private final void dump(String s) {
if (Debug.debugTokenizer) {
System.out.println(s + " (" + yychar + "-" + //$NON-NLS-2$//$NON-NLS-1$
(yylength() + yychar) + "):\'" +//$NON-NLS-1$
StringUtils.escape(yytext()) + "\'");//$NON-NLS-1$
}
}
/* user method - skeleton.sed */
public final boolean isEOF() {
return yy_atEOF;
}
/* user method - skeleton.sed */
protected final boolean containsTagName(String markerTagName) {
Iterator blocks = fBlockMarkers.iterator();
while(blocks.hasNext()) {
BlockMarker marker = (BlockMarker)blocks.next();
if(marker.isCaseSensitive()) {
if(marker.getTagName().equals(markerTagName))
return true;
}
else {
if(marker.getTagName().equalsIgnoreCase(markerTagName))
return true;
}
}
return false;
}
/**
* Contains user EOF-code, which will be executed exactly once,
* when the end of file is reached
*/
private void yy_do_eof() {
if (!yy_eof_done) {
yy_eof_done = true;
// do nothing, this is the downstream parser's job
}
}
/**
* Resumes scanning until the next regular expression is matched,
* the end of input is encountered or an I/O-Error occurs.
*
* @return the next token
* @exception IOException if any I/O-Error occurs
*/
public String primGetNextToken() throws java.io.IOException {
int yy_input;
int yy_action;
yy_pushbackPos = -1;
boolean yy_was_pushback;
while (true) {
yychar+= yylength();
boolean yy_counted = false;
for (yy_currentPos = yy_startRead; yy_currentPos < yy_markedPos;
yy_currentPos++) {
switch (yy_buffer[yy_currentPos]) {
case '\r':
yyline++;
yy_counted = true;
break;
case '\n':
if (yy_counted)
yy_counted = false;
else {
yyline++;
}
break;
default:
yy_counted = false;
}
}
if (yy_counted) {
if ( yy_advance() == '\n' ) yyline--;
if ( !yy_atEOF ) yy_currentPos--;
}
yy_action = -1;
yy_currentPos = yy_startRead = yy_markedPos;
yy_state = yy_lexical_state;
yy_was_pushback = false;
yy_forAction: {
while (true) {
yy_input = yy_advance();
if ( yy_input == YYEOF ) break yy_forAction;
int yy_next = yytrans[ yy_rowMap[yy_state] + yycmap[yy_input] ];
if (yy_next == -1) break yy_forAction;
yy_state = yy_next;
int yy_attributes = YY_ATTRIBUTE[yy_state];
if ( (yy_attributes & 2) > 0 )
yy_pushbackPos = yy_currentPos;
if ( (yy_attributes & 1) > 0 ) {
yy_was_pushback = (yy_attributes & 4) > 0;
yy_action = yy_state;
yy_markedPos = yy_currentPos;
if ( (yy_attributes & 8) > 0 ) break yy_forAction;
}
}
}
if (yy_was_pushback)
yy_markedPos = yy_pushbackPos;
switch (yy_action) {
case 124:
case 129:
case 130:
case 290:
case 296:
case 297:
case 431:
case 434:
case 541:
{ /* only allow for non-JSP tags for this does not obey JSP quoting rules */
if(Debug.debugTokenizer)
dump("attr value");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_ATTRIBUTE_NAME);
return XML_TAG_ATTRIBUTE_VALUE;
}
case 716: break;
case 169:
case 174:
case 175:
case 350:
case 356:
case 357:
case 468:
case 470:
case 472:
case 474:
case 557:
{ /* JSP attribute values have escape semantics */
if(Debug.debugTokenizer)
dump("jsp attr value");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_ATTRIBUTE_NAME);
return XML_TAG_ATTRIBUTE_VALUE;
}
case 717: break;
case 683:
case 688:
case 695:
case 700:
{
if(Debug.debugTokenizer)
dump("jsp directive tag name");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_ATTRIBUTE_NAME);
return JSP_DIRECTIVE_NAME;
}
case 718: break;
case 658:
{
if(Debug.debugTokenizer)
dump("XSL processing instruction target");//$NON-NLS-1$
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_PI_ATTRIBUTE_NAME);
return XML_TAG_NAME;
}
case 719: break;
case 641:
case 644:
case 645:
case 646:
case 647:
case 648:
case 649:
{
if(Debug.debugTokenizer)
dump("\nCDATA start");//$NON-NLS-1$
fStateStack.push(yystate());
yybegin(ST_CDATA_TEXT);
return XML_CDATA_OPEN;
}
case 720: break;
case 633:
{
if(Debug.debugTokenizer)
dump("jsp:root tag name");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_ATTRIBUTE_NAME);
return JSP_ROOT_TAG_NAME;
}
case 721: break;
case 624:
{
if(Debug.debugTokenizer)
dump("element");//$NON-NLS-1$
yybegin(ST_XML_ELEMENT_DECLARATION);
return XML_ELEMENT_DECLARATION;
}
case 722: break;
case 623:
{
if(Debug.debugTokenizer)
dump("attlist");//$NON-NLS-1$
yybegin(ST_XML_ATTLIST_DECLARATION);
return XML_ATTLIST_DECLARATION;
}
case 723: break;
case 622:
{
if(Debug.debugTokenizer)
dump("doctype");//$NON-NLS-1$
yybegin(ST_XML_DOCTYPE_DECLARATION);
return XML_DOCTYPE_DECLARATION;
}
case 724: break;
case 607:
{
if(Debug.debugTokenizer)
dump("doctype external id");//$NON-NLS-1$
fEmbeddedHint = XML_DOCTYPE_EXTERNAL_ID_PUBREF;
yybegin(ST_XML_DOCTYPE_ID_PUBLIC);
return XML_DOCTYPE_EXTERNAL_ID_PUBLIC;
}
case 725: break;
case 606:
{
if(Debug.debugTokenizer)
dump("doctype external id");//$NON-NLS-1$
fEmbeddedHint = XML_DOCTYPE_EXTERNAL_ID_SYSREF;
yybegin(ST_XML_DOCTYPE_ID_SYSTEM);
return XML_DOCTYPE_EXTERNAL_ID_SYSTEM;
}
case 726: break;
case 600:
{
if(Debug.debugTokenizer)
dump("DHTML processing instruction target");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_DHTML_ATTRIBUTE_NAME);
return XML_TAG_NAME;
}
case 727: break;
case 575:
case 616:
case 617:
{
return JSP_VBL_QUOTED_CONTENT;
}
case 728: break;
case 565:
case 612:
case 613:
{
return JSP_EL_QUOTED_CONTENT;
}
case 729: break;
case 556:
{
if(Debug.debugTokenizer)
dump("\nJSP comment close");//$NON-NLS-1$
yybegin(YYINITIAL);
return JSP_COMMENT_CLOSE;
}
case 730: break;
case 543:
{
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", el-unquoted");//$NON-NLS-1$
}
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
fStateStack.push(yystate());
if(yylength() > 2)
yypushback(yylength() -2);
if(Debug.debugTokenizer)
dump("VBL in attr value");//$NON-NLS-1$
yybegin(ST_JSP_VBL);
fELlevel++;
assembleEmbeddedContainer(JSP_VBL_OPEN, new String[]{JSP_VBL_CLOSE});
fStateStack.pop();
yybegin(ST_XML_ATTRIBUTE_NAME);
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
return PROXY_CONTEXT;
}
case 731: break;
case 542:
{
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", el-unquoted");//$NON-NLS-1$
}
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
fStateStack.push(yystate());
if(yylength() > 2)
yypushback(yylength() -2);
if(Debug.debugTokenizer)
dump("EL in attr value");//$NON-NLS-1$
yybegin(ST_JSP_EL);
fELlevel++;
assembleEmbeddedContainer(JSP_EL_OPEN, new String[]{JSP_EL_CLOSE});
fStateStack.pop();
yybegin(ST_XML_ATTRIBUTE_NAME);
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
return PROXY_CONTEXT;
}
case 732: break;
case 534:
{
if(Debug.debugTokenizer)
dump("\nCharRef");//$NON-NLS-1$
return XML_CHAR_REFERENCE;
}
case 733: break;
case 531:
{
if(Debug.debugTokenizer)
dump("\ncomment start");//$NON-NLS-1$
fEmbeddedHint = XML_COMMENT_TEXT;
fEmbeddedPostState = ST_XML_COMMENT;
yybegin(ST_XML_COMMENT);
return XML_COMMENT_OPEN;
}
case 734: break;
case 530:
case 551:
case 554:
case 558:
case 559:
case 561:
case 563:
case 566:
case 568:
case 569:
case 571:
case 573:
case 576:
{
/* JSP comment begun (anywhere)
* A consequence of the start anywhere possibility is that the
* incoming state must be checked to see if it's erroneous
* due to the order of precedence generated
*/
// begin sanity checks
if(yystate() == ST_JSP_CONTENT) {
// at the beginning?!
yypushback(3);
return JSP_CONTENT;
}
else if(yystate() == ST_BLOCK_TAG_SCAN) {
yypushback(4);
return doBlockTagScan();
}
else if(yystate() == ST_XML_COMMENT) {
yypushback(4);
return scanXMLCommentText();
}
else if(yystate() == ST_JSP_COMMENT) {
yypushback(4);
return scanJSPCommentText();
}
else if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
yybegin(ST_JSP_COMMENT);
assembleEmbeddedContainer(JSP_COMMENT_OPEN, JSP_COMMENT_CLOSE);
if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN)
yybegin(ST_BLOCK_TAG_SCAN);
return PROXY_CONTEXT;
}
// finished sanity checks
if(yystate()==YYINITIAL) {
// the simple case, just a regular scriptlet out in content
if(Debug.debugTokenizer)
dump("\nJSP comment start");//$NON-NLS-1$
yybegin(ST_JSP_COMMENT);
return JSP_COMMENT_OPEN;
}
else {
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", jspCommentStart");//$NON-NLS-1$
}
if(Debug.debugTokenizer)
dump("JSP comment start");//$NON-NLS-1$
if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
else if(yystate() == ST_CDATA_TEXT) {
fEmbeddedPostState = ST_CDATA_TEXT;
fEmbeddedHint = XML_CDATA_TEXT;
}
yybegin(ST_JSP_COMMENT);
// the comment container itself will act as comment text
fEmbeddedHint = JSP_COMMENT_TEXT;
assembleEmbeddedContainer(JSP_COMMENT_OPEN, JSP_COMMENT_CLOSE);
if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
yybegin(ST_BLOCK_TAG_SCAN);
return BLOCK_TEXT;
}
/*
* required help for successive embedded regions; mark this one as a
* comment so it will be otherwise ignored but preserved (which is why
* we can't use white-space)
*/
if(yystate() == ST_XML_TAG_NAME) {
fEmbeddedHint = XML_TAG_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
}
else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if(yystate() == ST_JSP_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
return PROXY_CONTEXT;
}
}
case 735: break;
case 415:
case 416:
{
if(Debug.debugTokenizer)
dump("XML processing instruction target");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_PI_ATTRIBUTE_NAME);
return XML_TAG_NAME;
}
case 736: break;
case 414:
{
if(Debug.debugTokenizer)
dump("comment end");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
yybegin(YYINITIAL);
return XML_COMMENT_CLOSE;
}
case 737: break;
case 413:
{
if(Debug.debugTokenizer)
dump("CDATA end");//$NON-NLS-1$
yybegin(fStateStack.pop());
return XML_CDATA_CLOSE;
}
case 738: break;
case 412:
{
yybegin(ST_JSP_VBL);
if(yylength() > 2)
yypushback(yylength() - 2);
fELlevel++;
fEmbeddedHint = XML_CONTENT;
fEmbeddedPostState = YYINITIAL;
assembleEmbeddedContainer(JSP_VBL_OPEN, JSP_VBL_CLOSE);
fEmbeddedHint = XML_CONTENT;
yybegin(YYINITIAL);
return PROXY_CONTEXT;
}
case 739: break;
case 411:
{
if(Debug.debugTokenizer)
dump("\nPEReference");//$NON-NLS-1$
return XML_PE_REFERENCE;
}
case 740: break;
case 410:
{
yybegin(ST_JSP_EL);
if(yylength() > 2)
yypushback(yylength() - 2);
fELlevel++;
fEmbeddedHint = XML_CONTENT;
fEmbeddedPostState = YYINITIAL;
assembleEmbeddedContainer(JSP_EL_OPEN, JSP_EL_CLOSE);
fEmbeddedHint = XML_CONTENT;
yybegin(YYINITIAL);
return PROXY_CONTEXT;
}
case 741: break;
case 407:
{
if(Debug.debugTokenizer)
dump("\nEntityRef");//$NON-NLS-1$
return XML_ENTITY_REFERENCE;
}
case 742: break;
case 401:
case 455:
case 465:
case 480:
case 485:
case 490:
case 495:
case 501:
case 507:
case 511:
case 516:
case 521:
case 527:
{
/* JSP expression begun (anywhere)
* A consequence of the start anywhere possibility is that the
* incoming state must be checked to see if it's erroneous
* due to the order of precedence generated
*/
// begin sanity checks
if(yystate() == ST_JSP_CONTENT) {
// at the beginning?!
yypushback(2);
return JSP_CONTENT;
}
else if(yystate() == ST_BLOCK_TAG_SCAN) {
yypushback(3);
return doBlockTagScan();
}
else if(yystate() == ST_XML_COMMENT) {
yypushback(3);
return scanXMLCommentText();
}
else if(yystate() == ST_JSP_COMMENT) {
yypushback(3);
return scanJSPCommentText();
}
// end sanity checks
fStateStack.push(yystate());
if(fStateStack.peek()==YYINITIAL) {
// the simple case, just an expression out in content
if(Debug.debugTokenizer)
dump("\nJSP expression start");//$NON-NLS-1$
yybegin(ST_JSP_CONTENT);
return JSP_EXPRESSION_OPEN;
}
else {
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", jspExpressionStart");//$NON-NLS-1$
}
if(Debug.debugTokenizer)
dump("JSP expression start");//$NON-NLS-1$
if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
else if(yystate() == ST_CDATA_TEXT) {
fEmbeddedPostState = ST_CDATA_TEXT;
fEmbeddedHint = XML_CDATA_TEXT;
}
yybegin(ST_JSP_CONTENT);
assembleEmbeddedContainer(JSP_EXPRESSION_OPEN, JSP_CLOSE);
if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
yybegin(ST_BLOCK_TAG_SCAN);
return BLOCK_TEXT;
}
// required help for successive embedded regions
if(yystate() == ST_XML_TAG_NAME) {
fEmbeddedHint = XML_TAG_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
}
else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if(yystate() == ST_JSP_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
return PROXY_CONTEXT;
}
}
case 743: break;
case 400:
case 454:
case 464:
case 479:
case 484:
case 489:
case 494:
case 500:
case 506:
case 510:
case 515:
case 520:
case 526:
{
/* JSP declaration begun (anywhere)
* A consequence of the start anywhere possibility is that the
* incoming state must be checked to see if it's erroneous
* due to the order of precedence generated
*/
// begin sanity checks
if(yystate() == ST_JSP_CONTENT) {
// at the beginning?!
yypushback(2);
return JSP_CONTENT;
}
else if(yystate() == ST_BLOCK_TAG_SCAN) {
yypushback(3);
return doBlockTagScan();
}
else if(yystate() == ST_XML_COMMENT) {
yypushback(3);
return scanXMLCommentText();
}
else if(yystate() == ST_JSP_COMMENT) {
yypushback(3);
return scanJSPCommentText();
}
// end sanity checks
fStateStack.push(yystate());
if(fStateStack.peek()==YYINITIAL) {
// the simple case, just a declaration out in content
if(Debug.debugTokenizer)
dump("\nJSP declaration start");//$NON-NLS-1$
yybegin(ST_JSP_CONTENT);
return JSP_DECLARATION_OPEN;
}
else {
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", jspDeclarationStart");//$NON-NLS-1$
}
if(Debug.debugTokenizer)
dump("JSP declaration start");//$NON-NLS-1$
if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
else if(yystate() == ST_CDATA_TEXT) {
fEmbeddedPostState = ST_CDATA_TEXT;
fEmbeddedHint = XML_CDATA_TEXT;
}
yybegin(ST_JSP_CONTENT);
assembleEmbeddedContainer(JSP_DECLARATION_OPEN, JSP_CLOSE);
if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
yybegin(ST_BLOCK_TAG_SCAN);
return BLOCK_TEXT;
}
// required help for successive embedded regions
if(yystate() == ST_XML_TAG_NAME) {
fEmbeddedHint = XML_TAG_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
}
else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if(yystate() == ST_JSP_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
return PROXY_CONTEXT;
}
}
case 744: break;
case 399:
case 453:
case 463:
case 478:
case 483:
case 488:
case 493:
case 499:
case 505:
case 509:
case 514:
case 519:
case 525:
{
/* JSP directive begun (anywhere)
* A consequence of the start anywhere possibility is that the
* incoming state must be checked to see if it's erroneous
* due to the order of precedence generated
*/
// begin sanity checks
if(yystate() == ST_JSP_CONTENT) {
// at the beginning?!
yypushback(2);
return JSP_CONTENT;
}
else if(yystate() == ST_BLOCK_TAG_SCAN) {
yypushback(3);
return doBlockTagScan();
}
else if(yystate() == ST_XML_COMMENT) {
yypushback(3);
return scanXMLCommentText();
}
else if(yystate() == ST_JSP_COMMENT) {
yypushback(3);
return scanJSPCommentText();
}
// end sanity checks
fStateStack.push(yystate());
if(fStateStack.peek()==YYINITIAL) {
// the simple case, just a declaration out in content
if(Debug.debugTokenizer)
dump("\nJSP directive start");//$NON-NLS-1$
yybegin(ST_JSP_DIRECTIVE_NAME);
return JSP_DIRECTIVE_OPEN;
}
else {
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", jspDirectiveStart");//$NON-NLS-1$
}
if(Debug.debugTokenizer)
dump("JSP declaration start");//$NON-NLS-1$
if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
else if(yystate() == ST_CDATA_TEXT) {
fEmbeddedPostState = ST_CDATA_TEXT;
fEmbeddedHint = XML_CDATA_TEXT;
}
yybegin(ST_JSP_DIRECTIVE_NAME);
assembleEmbeddedContainer(JSP_DIRECTIVE_OPEN, new String[]{JSP_DIRECTIVE_CLOSE, JSP_CLOSE});
if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
yybegin(ST_BLOCK_TAG_SCAN);
return BLOCK_TEXT;
}
// required help for successive embedded regions
if(yystate() == ST_XML_TAG_NAME) {
fEmbeddedHint = XML_TAG_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
}
else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
return PROXY_CONTEXT;
}
}
case 745: break;
case 389:
{
yybegin(ST_JSP_VBL_DQUOTES_END);
return JSP_VBL_QUOTED_CONTENT;
}
case 746: break;
case 385:
{
yybegin(ST_JSP_VBL_SQUOTES_END);
return JSP_VBL_QUOTED_CONTENT;
}
case 747: break;
case 383:
{
fELlevel++;
if(fELlevel == 1) {
return JSP_VBL_OPEN;
}
}
case 748: break;
case 373:
{
yybegin(ST_JSP_EL_DQUOTES_END);
return JSP_EL_QUOTED_CONTENT;
}
case 749: break;
case 369:
{
yybegin(ST_JSP_EL_SQUOTES_END);
return JSP_EL_QUOTED_CONTENT;
}
case 750: break;
case 367:
{
//System.out.println(JSP_EL_CONTENT+ ":[" + yytext() + "]");
return JSP_EL_CONTENT;
}
case 751: break;
case 366:
{
fELlevel++;
if(fELlevel == 1) {
return JSP_EL_OPEN;
}
}
case 752: break;
case 363:
{
int enterState = yystate();
yybegin(ST_JSP_DQUOTED_VBL);
assembleEmbeddedContainer(JSP_VBL_OPEN, new String[]{JSP_VBL_CLOSE, XML_TAG_ATTRIBUTE_VALUE_DQUOTE, JSP_TAG_ATTRIBUTE_VALUE_DQUOTE});
// abort early when an unescaped double quote is found in the VBL
if(fEmbeddedContainer.getLastRegion().getType().equals(XML_TAG_ATTRIBUTE_VALUE_DQUOTE) || fEmbeddedContainer.getLastRegion().getType().equals(JSP_TAG_ATTRIBUTE_VALUE_DQUOTE)) {
yybegin(ST_ABORT_EMBEDDED);
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else {
yybegin(enterState);
}
return PROXY_CONTEXT;
}
case 753: break;
case 362:
{
int enterState = yystate();
yybegin(ST_JSP_DQUOTED_EL);
assembleEmbeddedContainer(JSP_EL_OPEN, new String[]{JSP_EL_CLOSE, XML_TAG_ATTRIBUTE_VALUE_DQUOTE, JSP_TAG_ATTRIBUTE_VALUE_DQUOTE});
// abort early when an unescaped double quote is found in the EL
if(fEmbeddedContainer.getLastRegion().getType().equals(XML_TAG_ATTRIBUTE_VALUE_DQUOTE) || fEmbeddedContainer.getLastRegion().getType().equals(JSP_TAG_ATTRIBUTE_VALUE_DQUOTE)) {
yybegin(ST_ABORT_EMBEDDED);
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else {
yybegin(enterState);
}
return PROXY_CONTEXT;
}
case 754: break;
case 361:
{
int enterState = yystate();
yybegin(ST_JSP_SQUOTED_VBL);
assembleEmbeddedContainer(JSP_VBL_OPEN, new String[]{JSP_VBL_CLOSE, XML_TAG_ATTRIBUTE_VALUE_SQUOTE, JSP_TAG_ATTRIBUTE_VALUE_SQUOTE});
// abort early when an unescaped single quote is found in the VBL
if(fEmbeddedContainer.getLastRegion().getType().equals(XML_TAG_ATTRIBUTE_VALUE_SQUOTE) || fEmbeddedContainer.getLastRegion().getType().equals(JSP_TAG_ATTRIBUTE_VALUE_SQUOTE)) {
yybegin(ST_ABORT_EMBEDDED);
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else {
yybegin(enterState);
}
return PROXY_CONTEXT;
}
case 755: break;
case 360:
{
int enterState = yystate();
yybegin(ST_JSP_SQUOTED_EL);
assembleEmbeddedContainer(JSP_EL_OPEN, new String[]{JSP_EL_CLOSE, XML_TAG_ATTRIBUTE_VALUE_SQUOTE, JSP_TAG_ATTRIBUTE_VALUE_SQUOTE});
// abort early when an unescaped single quote is found in the EL
if(fEmbeddedContainer.getLastRegion().getType().equals(XML_TAG_ATTRIBUTE_VALUE_SQUOTE) || fEmbeddedContainer.getLastRegion().getType().equals(JSP_TAG_ATTRIBUTE_VALUE_SQUOTE)) {
yybegin(ST_ABORT_EMBEDDED);
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else {
yybegin(enterState);
}
return PROXY_CONTEXT;
}
case 756: break;
case 358:
{
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", genericEndTagOpen");//$NON-NLS-1$
}
int incomingState = yystate();
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
if(Debug.debugTokenizer)
dump("JSP attribute value start - end tag");//$NON-NLS-1$
yybegin(ST_XML_TAG_NAME);
assembleEmbeddedContainer(XML_END_TAG_OPEN, new String[]{XML_TAG_CLOSE,XML_EMPTY_TAG_CLOSE});
if(yystate() != ST_ABORT_EMBEDDED)
yybegin(incomingState);
return PROXY_CONTEXT;
}
case 757: break;
case 302:
case 316:
case 322:
{
return XML_DOCTYPE_INTERNAL_SUBSET;
}
case 758: break;
case 288:
{
String tagName = yytext().substring(1);
// pushback to just after the opening bracket
yypushback(yylength() - 1);
/*
* If this tag can not be nested or we're already searching for an
* attribute name, equals, or value, return immediately.
*/
if (!isNestable(tagName) || (!fStateStack.empty() && (fStateStack.peek() == ST_XML_ATTRIBUTE_NAME || fStateStack.peek() == ST_XML_EQUALS || fStateStack.peek() == ST_XML_ATTRIBUTE_VALUE || fStateStack.peek() == ST_JSP_ATTRIBUTE_VALUE))) {
yybegin(ST_XML_TAG_NAME);
return XML_TAG_OPEN;
}
if(Debug.debugTokenizer)
dump("tag in place of attr value");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
fStateStack.push(yystate());
// embedded container should be looking for the name (again) next
yybegin(ST_XML_TAG_NAME);
assembleEmbeddedTagSequence(XML_TAG_OPEN, tagName); // ?
fStateStack.pop();
yybegin(ST_XML_ATTRIBUTE_NAME);
return PROXY_CONTEXT;
}
case 759: break;
case 286:
{
String tagName = yytext().substring(1);
// pushback to just after the opening bracket
yypushback(yylength() - 1);
/*
* If this tag can not be nested or we're already searching for an
* attribute name, equals, or value, return immediately.
*/
if (!isNestable(tagName) || (!fStateStack.empty() && (fStateStack.peek() == ST_XML_ATTRIBUTE_NAME || fStateStack.peek() == ST_XML_EQUALS || fStateStack.peek() == ST_XML_ATTRIBUTE_VALUE || fStateStack.peek() == ST_JSP_ATTRIBUTE_VALUE))) {
yybegin(ST_XML_TAG_NAME);
return XML_TAG_OPEN;
}
if(Debug.debugTokenizer)
dump("tag in place of attr name");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
fStateStack.push(yystate());
// embedded container should be looking for the name (again) next
yybegin(ST_XML_TAG_NAME);
assembleEmbeddedTagSequence(XML_TAG_OPEN, tagName); // ?
fStateStack.pop();
yybegin(ST_XML_EQUALS);
return PROXY_CONTEXT;
}
case 760: break;
case 284:
{
yybegin(YYINITIAL);
fEmbeddedHint = UNDEFINED;
if(Debug.debugTokenizer)
dump("empty tag close");//$NON-NLS-1$
if (fEmbeddedContainer != null)
fInTagEmbedded = false;
else
fInTagContainer = false;
return XML_EMPTY_TAG_CLOSE;
}
case 761: break;
case 275:
{
if(Debug.debugTokenizer)
dump("JSP end");//$NON-NLS-1$
if (Debug.debugTokenizer) {
if(fStateStack.peek()!=YYINITIAL)
System.out.println("end embedded region");//$NON-NLS-1$
}
yybegin(fStateStack.pop());
return JSP_DIRECTIVE_CLOSE;
}
case 762: break;
case 273:
{
if(Debug.debugTokenizer)
dump("JSP end");//$NON-NLS-1$
if (Debug.debugTokenizer) {
if(fStateStack.peek()!=YYINITIAL)
System.out.println("end embedded region");//$NON-NLS-1$
}
yybegin(fStateStack.pop());
return JSP_CLOSE;
}
case 763: break;
case 127:
case 172:
{
String type = yy_lexical_state == ST_XML_ATTRIBUTE_VALUE ? XML_TAG_ATTRIBUTE_VALUE_DQUOTE : JSP_TAG_ATTRIBUTE_VALUE_DQUOTE;
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", "+type);//$NON-NLS-1$
}
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
yybegin(ST_XML_ATTRIBUTE_VALUE_DQUOTED);
fStateStack.push(yystate());
if(Debug.debugTokenizer)
dump("JSP attribute value start - complex double quoted");//$NON-NLS-1$
assembleEmbeddedContainer(type, type);
fStateStack.pop();
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_ATTRIBUTE_NAME);
return PROXY_CONTEXT;
}
case 764: break;
case 125:
{
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", unquoted genericTagOpen");//$NON-NLS-1$
}
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
fStateStack.push(yystate());
if(Debug.debugTokenizer)
dump("JSP tag embedded name start - start tag");//$NON-NLS-1$
yybegin(ST_XML_TAG_NAME);
assembleEmbeddedContainer(XML_TAG_OPEN, new String[]{XML_TAG_CLOSE,XML_EMPTY_TAG_CLOSE});
fStateStack.pop();
yybegin(ST_XML_ATTRIBUTE_NAME);
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
return PROXY_CONTEXT;
}
case 765: break;
case 123:
{
if(Debug.debugTokenizer)
dump("equals");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
yybegin(isJspTag() ? ST_JSP_ATTRIBUTE_VALUE : ST_XML_ATTRIBUTE_VALUE);
return XML_TAG_ATTRIBUTE_EQUALS;
}
case 766: break;
case 122:
{
if(Debug.debugTokenizer)
dump("attr name");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
yybegin(ST_XML_EQUALS);
return XML_TAG_ATTRIBUTE_NAME;
}
case 767: break;
case 118:
case 119:
case 120:
case 285:
case 428:
case 540:
case 581:
case 582:
case 601:
case 602:
case 620:
case 621:
case 634:
case 643:
case 651:
case 653:
case 655:
case 657:
case 660:
case 666:
case 667:
case 668:
case 669:
case 670:
case 676:
case 677:
case 678:
case 679:
case 680:
case 686:
case 687:
case 689:
case 690:
case 696:
case 697:
case 698:
case 699:
case 705:
case 706:
case 707:
case 708:
case 711:
case 712:
case 714:
{
if(Debug.debugTokenizer)
dump("tag name");//$NON-NLS-1$
String tagname = yytext();
boolean jspTag = tagname.indexOf(':') != -1;
if (fEmbeddedContainer != null) {
fEmbeddedTag = jspTag;
fInTagEmbedded = true;
}
else {
fContainerTag = jspTag;
fInTagContainer = true;
}
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_ATTRIBUTE_NAME);
return XML_TAG_NAME;
}
case 768: break;
case 116:
{
if(Debug.debugTokenizer)
dump("tag close");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
if(isBlockMarker()) {
fEmbeddedHint = getBlockMarkerContext();
fEmbeddedPostState = ST_BLOCK_TAG_SCAN;
yybegin(ST_BLOCK_TAG_SCAN);
}
else
yybegin(YYINITIAL);
if (fEmbeddedContainer != null)
fInTagEmbedded = false;
else
fInTagContainer = false;
return XML_TAG_CLOSE;
}
case 769: break;
case 109:
case 113:
case 278:
{
if(Debug.debugTokenizer)
dump("attr value");//$NON-NLS-1$
yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_NAME);
return XML_TAG_ATTRIBUTE_VALUE;
}
case 770: break;
case 108:
{
if(Debug.debugTokenizer)
dump("equals");//$NON-NLS-1$
yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_VALUE);
return XML_TAG_ATTRIBUTE_EQUALS;
}
case 771: break;
case 107:
{
if(Debug.debugTokenizer)
dump("attr name");//$NON-NLS-1$
yybegin(ST_JSP_DIRECTIVE_EQUALS);
return XML_TAG_ATTRIBUTE_NAME;
}
case 772: break;
case 104:
{
if(Debug.debugTokenizer)
dump("JSP directive name");//$NON-NLS-1$
yybegin(ST_JSP_DIRECTIVE_NAME_WHITESPACE);
return JSP_DIRECTIVE_NAME;
}
case 773: break;
case 100:
case 101:
case 102:
{
if(Debug.debugTokenizer)
dump("JSP code content");//$NON-NLS-1$
return doScan("%>", false, false, false, JSP_CONTENT, ST_JSP_CONTENT, ST_JSP_CONTENT);
}
case 774: break;
case 96:
case 98:
case 99:
case 266:
case 267:
case 268:
case 271:
case 272:
case 422:
case 425:
{
if(Debug.debugTokenizer)
dump("DHTML processing instruction attribute value");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_DHTML_ATTRIBUTE_NAME);
return XML_TAG_ATTRIBUTE_VALUE;
}
case 775: break;
case 95:
{
if(Debug.debugTokenizer)
dump("DHTML processing instruction '='");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
yybegin(ST_DHTML_ATTRIBUTE_VALUE);
return XML_TAG_ATTRIBUTE_EQUALS;
}
case 776: break;
case 94:
{
if(Debug.debugTokenizer)
dump("DHTML processing instruction attribute name");//$NON-NLS-1$
yybegin(ST_DHTML_EQUALS);
return XML_TAG_ATTRIBUTE_NAME;
}
case 777: break;
case 92:
{
if(Debug.debugTokenizer)
dump("DHTML processing instruction end");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
yybegin(YYINITIAL);
return XML_PI_CLOSE;
}
case 778: break;
case 86:
case 88:
case 255:
{
if(Debug.debugTokenizer)
dump("XML processing instruction attribute value");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_PI_ATTRIBUTE_NAME);
return XML_TAG_ATTRIBUTE_VALUE;
}
case 779: break;
case 85:
{
if(Debug.debugTokenizer)
dump("XML processing instruction '='");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
yybegin(ST_XML_PI_ATTRIBUTE_VALUE);
return XML_TAG_ATTRIBUTE_EQUALS;
}
case 780: break;
case 50:
case 209:
case 210:
case 213:
case 223:
case 224:
case 227:
case 228:
case 394:
case 397:
case 504:
case 518:
case 524:
{
return JSP_VBL_CONTENT;
}
case 781: break;
case 43:
case 187:
case 188:
case 191:
case 201:
case 202:
case 206:
case 207:
case 364:
case 378:
case 381:
case 476:
case 477:
case 492:
case 498:
{
return JSP_EL_CONTENT;
}
case 782: break;
case 35:
case 161:
case 162:
case 346:
case 462:
case 466:
case 555:
case 589:
case 609:
case 626:
case 636:
{
if(Debug.debugTokenizer)
dump("attlist contentspec");//$NON-NLS-1$
return XML_ATTLIST_DECL_CONTENT;
}
case 783: break;
case 33:
case 154:
case 155:
case 334:
case 452:
case 456:
case 552:
case 588:
case 608:
case 625:
case 635:
{
if(Debug.debugTokenizer)
dump("elementdecl contentspec");//$NON-NLS-1$
return XML_ELEMENT_DECL_CONTENT;
}
case 784: break;
case 22:
case 114:
{
if(Debug.debugTokenizer)
dump("inappropriate tag name");//$NON-NLS-1$
if(!fStateStack.empty() && (fStateStack.peek()==ST_XML_ATTRIBUTE_VALUE_SQUOTED||fStateStack.peek()==ST_XML_ATTRIBUTE_VALUE_DQUOTED)) {
yybegin(ST_ABORT_EMBEDDED);
yypushback(yylength()-1);
return XML_TAG_ATTRIBUTE_VALUE;
}
yybegin(YYINITIAL);
return XML_CONTENT;
}
case 785: break;
case 18:
case 106:
{
if(Debug.debugTokenizer)
dump("white space");//$NON-NLS-1$
yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_NAME);
return WHITE_SPACE;
}
case 786: break;
case 5:
case 8:
case 9:
case 10:
case 12:
case 13:
case 14:
case 15:
case 17:
case 19:
case 20:
case 21:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 32:
case 34:
case 40:
case 41:
case 42:
case 74:
case 178:
case 183:
{
if(Debug.debugTokenizer)
dump("white space");//$NON-NLS-1$
return WHITE_SPACE;
}
case 787: break;
case 0:
case 57:
case 60:
case 61:
case 63:
case 235:
case 237:
case 238:
case 241:
case 243:
case 404:
case 405:
case 406:
case 533:
{
if(Debug.debugTokenizer)
dump("\nXML content");//$NON-NLS-1$
return XML_CONTENT;
}
case 788: break;
case 58:
case 103:
case 115:
case 121:
case 131:
{
if(Debug.debugTokenizer)
dump("\nstart tag open");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
yybegin(ST_XML_TAG_NAME);
return XML_TAG_OPEN;
}
case 789: break;
case 59:
case 62:
case 66:
case 67:
case 68:
case 72:
case 73:
case 83:
case 87:
case 89:
case 90:
case 91:
case 93:
case 97:
case 105:
case 110:
case 111:
case 112:
case 117:
case 126:
case 133:
case 134:
case 135:
case 136:
case 138:
case 139:
case 141:
case 142:
case 143:
case 146:
case 147:
case 148:
case 151:
case 152:
case 153:
case 158:
case 159:
case 160:
case 168:
case 170:
case 171:
case 193:
case 194:
case 196:
case 197:
case 204:
case 208:
case 215:
case 216:
case 218:
case 219:
case 225:
case 229:
{
if (Debug.debugTokenizer)
System.out.println("!!!unexpected!!!: \"" + yytext() + "\":" + //$NON-NLS-2$//$NON-NLS-1$
yychar + "-" + (yychar + yylength()));//$NON-NLS-1$
return UNDEFINED;
}
case 790: break;
case 64:
case 65:
{
if(Debug.debugTokenizer)
dump("CDATA text");//$NON-NLS-1$
fEmbeddedPostState = ST_CDATA_TEXT;
fEmbeddedHint = XML_CDATA_TEXT;
String returnedContext = doScan("]]>", false, true, true, XML_CDATA_TEXT, ST_CDATA_END, ST_CDATA_END);//$NON-NLS-1$
if(returnedContext == XML_CDATA_TEXT)
yybegin(ST_CDATA_END);
return returnedContext;
}
case 791: break;
case 69:
case 195:
case 198:
case 217:
case 220:
{
if(Debug.debugTokenizer)
dump("LINE FEED");//$NON-NLS-1$
return WHITE_SPACE;
}
case 792: break;
case 70:
case 71:
{
if(Debug.debugTokenizer)
dump("comment content");//$NON-NLS-1$
return scanXMLCommentText();
}
case 793: break;
case 75:
case 76:
case 77:
case 78:
case 248:
case 249:
case 250:
case 417:
case 536:
case 537:
case 579:
case 580:
case 599:
case 619:
case 632:
case 642:
case 650:
case 652:
case 654:
case 656:
{
if(Debug.debugTokenizer)
dump("processing instruction target");//$NON-NLS-1$
fEmbeddedHint = XML_CONTENT;
yybegin(ST_PI_WS);
return XML_TAG_NAME;
}
case 794: break;
case 79:
{
yybegin(ST_PI_CONTENT);
return WHITE_SPACE;
}
case 795: break;
case 80:
case 81:
case 82:
{
// block scan until close is found
return doScan("?>", false, false, false, XML_PI_CONTENT, ST_XML_PI_TAG_CLOSE, ST_XML_PI_TAG_CLOSE);
}
case 796: break;
case 84:
{
if(Debug.debugTokenizer)
dump("XML processing instruction attribute name");//$NON-NLS-1$
yybegin(ST_XML_PI_EQUALS);
return XML_TAG_ATTRIBUTE_NAME;
}
case 797: break;
case 128:
case 173:
{
String type = yy_lexical_state == ST_XML_ATTRIBUTE_VALUE ? XML_TAG_ATTRIBUTE_VALUE_SQUOTE : JSP_TAG_ATTRIBUTE_VALUE_SQUOTE;
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", "+type);//$NON-NLS-1$
}
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
yybegin(ST_XML_ATTRIBUTE_VALUE_SQUOTED);
fStateStack.push(yystate());
if(Debug.debugTokenizer)
dump("JSP attribute value start - complex single quoted");//$NON-NLS-1$
assembleEmbeddedContainer(type, type);
fStateStack.pop();
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
yybegin(ST_XML_ATTRIBUTE_NAME);
return PROXY_CONTEXT;
}
case 798: break;
case 132:
{
if(Debug.debugTokenizer)
dump("declaration end");//$NON-NLS-1$
if (Debug.debugTokenizer) {
if(fStateStack.peek()!=YYINITIAL)
System.out.println("end embedded region");//$NON-NLS-1$
}
yybegin(fStateStack.pop());
return XML_DECLARATION_CLOSE;
}
case 799: break;
case 137:
{
if(Debug.debugTokenizer)
dump("doctype type");//$NON-NLS-1$
yybegin(ST_XML_DOCTYPE_EXTERNAL_ID);
return XML_DOCTYPE_NAME;
}
case 800: break;
case 140:
case 144:
case 307:
case 312:
case 444:
{
if(Debug.debugTokenizer)
dump("doctype public reference");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
fEmbeddedPostState = YYINITIAL;
yybegin(ST_XML_DOCTYPE_ID_SYSTEM);
return XML_DOCTYPE_EXTERNAL_ID_PUBREF;
}
case 801: break;
case 145:
case 149:
case 319:
{
if(Debug.debugTokenizer)
dump("doctype system reference");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
fEmbeddedPostState = YYINITIAL;
yybegin(ST_XML_DECLARATION_CLOSE);
return XML_DOCTYPE_EXTERNAL_ID_SYSREF;
}
case 802: break;
case 150:
case 325:
case 330:
case 449:
{
if(Debug.debugTokenizer)
dump("elementdecl name");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
fEmbeddedPostState = YYINITIAL;
yybegin(ST_XML_ELEMENT_DECLARATION_CONTENT);
return XML_ELEMENT_DECL_NAME;
}
case 803: break;
case 156:
{
if(Debug.debugTokenizer)
dump("elementdecl close");//$NON-NLS-1$
if (Debug.debugTokenizer) {
if(fStateStack.peek()!=YYINITIAL)
System.out.println("end embedded region");//$NON-NLS-1$
}
yybegin(fStateStack.pop());
return XML_DECLARATION_CLOSE;
}
case 804: break;
case 157:
case 337:
case 342:
case 459:
{
if(Debug.debugTokenizer)
dump("attlist name");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
fEmbeddedPostState = YYINITIAL;
yybegin(ST_XML_ATTLIST_DECLARATION_CONTENT);
return XML_ATTLIST_DECL_NAME;
}
case 805: break;
case 163:
{
if(Debug.debugTokenizer)
dump("attlist close");//$NON-NLS-1$
if (Debug.debugTokenizer) {
if(fStateStack.peek()!=YYINITIAL)
System.out.println("end embedded region");//$NON-NLS-1$
}
yybegin(fStateStack.pop());
return XML_DECLARATION_CLOSE;
}
case 806: break;
case 166:
case 167:
{
if(Debug.debugTokenizer)
dump("\nJSP comment text");//$NON-NLS-1$
return scanJSPCommentText();
}
case 807: break;
case 176:
case 180:
case 181:
case 182:
case 185:
case 186:
case 359:
{
return XML_TAG_ATTRIBUTE_VALUE;
}
case 808: break;
case 177:
{
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", genericTagOpen");//$NON-NLS-1$
}
int incomingState = yystate();
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
if(Debug.debugTokenizer)
dump("tag inside of JSP attribute value start");//$NON-NLS-1$
yybegin(ST_XML_TAG_NAME);
assembleEmbeddedContainer(XML_TAG_OPEN, new String[]{XML_TAG_CLOSE,XML_EMPTY_TAG_CLOSE});
if(yystate() != ST_ABORT_EMBEDDED)
yybegin(incomingState);
return PROXY_CONTEXT;
}
case 809: break;
case 179:
{
return isJspTag() ? JSP_TAG_ATTRIBUTE_VALUE_SQUOTE : XML_TAG_ATTRIBUTE_VALUE_SQUOTE;
}
case 810: break;
case 184:
{
return isJspTag()? JSP_TAG_ATTRIBUTE_VALUE_DQUOTE : XML_TAG_ATTRIBUTE_VALUE_DQUOTE;
}
case 811: break;
case 189:
{
yybegin(ST_JSP_EL_DQUOTES);
return JSP_EL_DQUOTE;
}
case 812: break;
case 190:
{
yybegin(ST_JSP_EL_SQUOTES);
return JSP_EL_SQUOTE;
}
case 813: break;
case 192:
{
fELlevel--;
if(fELlevel == 0) {
yybegin(YYINITIAL);
return JSP_EL_CLOSE;
}
return JSP_EL_CONTENT;
}
case 814: break;
case 199:
{
yybegin(ST_JSP_EL);
return JSP_EL_SQUOTE;
}
case 815: break;
case 200:
{
yybegin(ST_JSP_EL);
return JSP_EL_DQUOTE;
}
case 816: break;
case 203:
{
return isJspTag() ? JSP_TAG_ATTRIBUTE_VALUE_DQUOTE: XML_TAG_ATTRIBUTE_VALUE_DQUOTE;
}
case 817: break;
case 205:
{
return JSP_EL_CLOSE;
}
case 818: break;
case 211:
{
yybegin(ST_JSP_VBL_DQUOTES);
return JSP_VBL_DQUOTE;
}
case 819: break;
case 212:
{
yybegin(ST_JSP_VBL_SQUOTES);
return JSP_VBL_SQUOTE;
}
case 820: break;
case 214:
{
fELlevel--;
if(fELlevel == 0) {
yybegin(YYINITIAL);
return JSP_VBL_CLOSE;
}
return JSP_VBL_CONTENT;
}
case 821: break;
case 221:
{
yybegin(ST_JSP_VBL);
return JSP_VBL_SQUOTE;
}
case 822: break;
case 222:
{
yybegin(ST_JSP_VBL);
return JSP_VBL_DQUOTE;
}
case 823: break;
case 226:
{
return JSP_VBL_CLOSE;
}
case 824: break;
case 230:
{
if(Debug.debugTokenizer)
dump("\nend tag open");//$NON-NLS-1$
fEmbeddedHint = XML_TAG_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
yybegin(ST_XML_TAG_NAME);
return XML_END_TAG_OPEN;
}
case 825: break;
case 231:
{
if(Debug.debugTokenizer)
dump("\nprocessing instruction start");//$NON-NLS-1$
yybegin(ST_PI);
return XML_PI_OPEN;
}
case 826: break;
case 232:
case 333:
case 345:
case 365:
case 370:
case 374:
case 377:
case 380:
case 382:
case 386:
case 390:
case 393:
case 396:
{
/* JSP scriptlet begun (anywhere)
* A consequence of the start anywhere possibility is that the
* incoming state must be checked to see if it's erroneous
* due to the order of precedence generated
*/
// begin sanity checks
if(yystate() == ST_JSP_CONTENT) {
// at the beginning?!
yypushback(1);
return JSP_CONTENT;
}
else if(yystate() == ST_BLOCK_TAG_SCAN) {
yypushback(2);
return doBlockTagScan();
}
else if(yystate() == ST_XML_COMMENT) {
yypushback(2);
return scanXMLCommentText();
}
else if(yystate() == ST_JSP_COMMENT) {
yypushback(2);
return scanJSPCommentText();
}
// finished sanity checks
fStateStack.push(yystate());
if(fStateStack.peek()==YYINITIAL) {
// the simple case, just a regular scriptlet out in content
if(Debug.debugTokenizer)
dump("\nJSP scriptlet start");//$NON-NLS-1$
yybegin(ST_JSP_CONTENT);
return JSP_SCRIPTLET_OPEN;
}
else {
if (Debug.debugTokenizer) {
System.out.println("begin embedded region: " + fEmbeddedHint+", jspScriptletStart");//$NON-NLS-1$
}
if(Debug.debugTokenizer)
dump("JSP scriptlet start");//$NON-NLS-1$
if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
else if(yystate() == ST_CDATA_TEXT) {
fEmbeddedPostState = ST_CDATA_TEXT;
fEmbeddedHint = XML_CDATA_TEXT;
}
yybegin(ST_JSP_CONTENT);
assembleEmbeddedContainer(JSP_SCRIPTLET_OPEN, JSP_CLOSE);
if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
yybegin(ST_BLOCK_TAG_SCAN);
return BLOCK_TEXT;
}
// required help for successive embedded regions
if(yystate() == ST_XML_TAG_NAME) {
fEmbeddedHint = XML_TAG_NAME;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
fEmbeddedPostState = ST_XML_EQUALS;
}
else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
else if(yystate() == ST_JSP_ATTRIBUTE_VALUE) {
fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
}
return PROXY_CONTEXT;
}
}
case 827: break;
case 233:
{
fStateStack.push(yystate());
if(Debug.debugTokenizer)
dump("\ndeclaration start");//$NON-NLS-1$
yybegin(ST_XML_DECLARATION);
return XML_DECLARATION_OPEN;
}
case 828: break;
case 247:
{
if(Debug.debugTokenizer)
dump("processing instruction end");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
yybegin(YYINITIAL);
return XML_PI_CLOSE;
}
case 829: break;
case 251:
{
// ended with nothing inside
fEmbeddedHint = UNDEFINED;
yybegin(YYINITIAL);
return XML_PI_CLOSE;
}
case 830: break;
case 252:
{
if(Debug.debugTokenizer)
dump("XML processing instruction end");//$NON-NLS-1$
fEmbeddedHint = UNDEFINED;
yybegin(YYINITIAL);
return XML_PI_CLOSE;
}
case 831: break;
case 164:
case 165:
{
return doBlockTagScan();
}
case 832: break;
default:
if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
yy_atEOF = true;
yy_do_eof();
return null;
}
else {
yy_ScanError(YY_NO_MATCH);
}
}
}
}
}