Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java')
-rw-r--r--web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java4082
1 files changed, 4082 insertions, 0 deletions
diff --git a/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java b/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
new file mode 100644
index 0000000000..fc5f0a4526
--- /dev/null
+++ b/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
@@ -0,0 +1,4082 @@
+/* The following code was generated by JFlex 1.2.2 on 3/8/16 8:14 PM */
+
+/*******************************************************************************
+ * Copyright (c) 2004, 2016 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.contenttype.IntStack;
+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;
+
+/**
+ * Generate with -skel skeleton-jsp.sse
+ */
+
+/**
+ * This class is a scanner generated by
+ * <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
+ * on 3/8/16 8:14 PM from the specification file
+ * <tt>file:/Users/nitin/git/webtools.sourceediting/bundles/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, 7526, 7597, 4544, 7668, 7739, 7810, 7881,
+ 7952, 8023, 8094, 8165, 4544, 8236, 8307, 8378, 8449, 8520,
+ 8591, 8662, 8733, 8733, 8804, 8875, 8946, 9017, 9017, 9088,
+ 9159, 9230, 9301, 9301, 9372, 9443, 9514, 9585, 4544, 9656,
+ 9656, 9727, 9798, 9869, 9940, 4544, 4544, 4615, 4544, 4615,
+ 10011, 10082, 7739, 10153, 10224, 10295, 10366, 10437, 10508, 10579,
+ 10650, 4544, 10721, 10792, 10863, 10934, 4544, 11005, 11076, 11147,
+ 11218, 4544, 4544, 11289, 4544, 11360, 11431, 4544, 11360, 11502,
+ 11573, 4544, 11502, 11644, 11715, 4544, 11786, 4544, 11857, 11928,
+ 11999, 12070, 12141, 4544, 4544, 12212, 4544, 12283, 12354, 4544,
+ 12283, 12425, 12496, 4544, 12425, 12567, 12638, 12709, 4544, 12780,
+ 12851, 12922, 4544, 4544, 12993, 13064, 13135, 13206, 13277, 13348,
+ 13419, 13490, 13561, 13632, 13703, 13774, 13845, 13916, 13987, 4544,
+ 14058, 14129, 14200, 4544, 4544, 5538, 5680, 4544, 14271, 14342,
+ 5751, 14413, 14484, 5822, 5964, 6035, 14555, 6106, 4544, 14626,
+ 14697, 14768, 6177, 14839, 14910, 4544, 13064, 4544, 6674, 6745,
+ 4544, 14981, 15052, 6816, 15123, 15194, 4544, 15265, 15336, 15407,
+ 15478, 7668, 15549, 7881, 4544, 15620, 15691, 7952, 15762, 15833,
+ 15904, 15975, 16046, 16117, 16188, 8449, 4544, 16259, 16330, 8733,
+ 8804, 4544, 16401, 16472, 16543, 16614, 16685, 16756, 16827, 8946,
+ 8733, 9017, 9088, 4544, 9159, 9230, 9017, 9301, 9372, 4544,
+ 16898, 16969, 17040, 17111, 17182, 17253, 17324, 17395, 17466, 9656,
+ 9727, 4544, 17537, 17608, 17679, 17750, 17821, 17892, 17963, 18034,
+ 18105, 18176, 10082, 10224, 4544, 18247, 18318, 10295, 18389, 18460,
+ 18531, 18602, 4544, 18673, 4544, 4544, 4544, 4544, 18744, 18815,
+ 18886, 18957, 11360, 4544, 19028, 19099, 11502, 4544, 19170, 19241,
+ 19312, 19383, 19454, 19525, 19596, 19667, 19738, 12070, 12283, 4544,
+ 19809, 19880, 12425, 4544, 19951, 20022, 20093, 20164, 20235, 20306,
+ 20377, 20448, 20519, 4544, 4544, 4544, 20590, 20661, 20732, 20803,
+ 20874, 4544, 20945, 21016, 21087, 4544, 4544, 4544, 4544, 21158,
+ 4544, 4544, 4970, 21229, 21300, 21371, 21442, 21513, 21584, 21655,
+ 21726, 21797, 21868, 21939, 22010, 22081, 4544, 4544, 22152, 22223,
+ 22294, 22365, 22294, 22436, 22507, 22436, 22578, 22649, 22720, 22791,
+ 22862, 22933, 23004, 23075, 23075, 23146, 23217, 23288, 23359, 23359,
+ 23430, 23501, 9514, 9514, 9514, 23572, 23643, 23714, 23785, 23785,
+ 23856, 23927, 9869, 9869, 9869, 23998, 24069, 10224, 24140, 10295,
+ 24211, 24282, 24282, 24353, 24353, 18886, 24424, 11147, 11147, 11147,
+ 24495, 24566, 11360, 11360, 11360, 24637, 24708, 11502, 11502, 11502,
+ 24779, 24850, 11644, 11644, 11644, 19454, 24921, 24992, 11857, 11857,
+ 11857, 19667, 25063, 25134, 12070, 12070, 12070, 25205, 12283, 12283,
+ 12283, 25276, 25347, 12425, 12425, 12425, 25418, 25489, 12567, 12567,
+ 12567, 20235, 25560, 25631, 12780, 12780, 12780, 20448, 25702, 4544,
+ 4544, 25773, 25844, 4544, 25915, 25986, 26057, 26128, 26199, 26270,
+ 7668, 4544, 4544, 26341, 26412, 26483, 26554, 26625, 16685, 17182,
+ 9514, 26696, 17821, 9869, 26767, 4544, 10082, 11147, 11360, 26838,
+ 11502, 26909, 11644, 26980, 4544, 11857, 27051, 12070, 12283, 27122,
+ 12425, 27193, 12567, 27264, 4544, 12780, 27335, 27406, 27477, 27548,
+ 27619, 27690, 27761, 27832, 27903, 27974, 28045, 28116, 28187, 28258,
+ 28329, 28400, 28471, 28542, 28613, 28684, 28755, 28826, 28897, 4970,
+ 28968, 29039, 29110, 29181, 29252, 4544, 4544, 29323, 29394, 29465,
+ 29536, 19454, 19667, 29607, 29678, 20235, 20448, 29749, 29820, 29891,
+ 29962, 4544, 4544, 4544, 30033, 30104, 30175, 30246, 30317, 30388,
+ 30459, 30530, 7242, 30601, 30672, 30743, 30814, 30885, 30956, 31027,
+ 4544, 31098, 31169, 9514, 9869, 11360, 11502, 12283, 12425, 31240,
+ 31311, 31382, 31453, 31524, 31595, 31666, 31737, 4970, 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, 33867, 33938, 34009,
+ 34080, 34151, 34222, 34293, 4544, 34364, 34435, 34506, 34577, 7242,
+ 34648, 34719, 34790, 34861, 34932, 35003, 35074, 35145, 35216, 35287,
+ 35358, 35429, 35500, 35571
+ };
+
+ /**
+ * 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\3\103\1\174"+
+ "\2\103\1\113\6\103\1\113\6\173\1\103\13\173\1\103"+
+ "\13\173\1\175\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\176\13\173\1\103\4\173\1\103\4\173\1\103\4\173"+
+ "\1\103\1\173\1\177\1\200\1\165\1\201\1\177\1\113"+
+ "\4\177\1\202\1\177\1\203\1\204\2\177\1\113\6\177"+
+ "\1\113\36\177\1\205\20\177\1\103\1\206\1\207\2\103"+
+ "\1\113\12\103\1\113\6\103\1\113\10\103\1\210\1\211"+
+ "\2\103\1\212\11\103\1\212\1\103\1\211\1\210\26\103"+
+ "\1\104\1\207\2\103\1\113\12\103\1\113\6\103\1\113"+
+ "\6\103\1\213\51\103\1\104\1\207\2\103\1\113\2\103"+
+ "\2\214\6\103\1\113\6\103\1\113\6\214\1\213\13\214"+
+ "\1\103\13\214\1\103\4\214\1\103\4\214\1\103\4\214"+
+ "\1\103\1\214\1\103\1\104\1\207\2\103\1\113\12\103"+
+ "\1\113\6\103\1\113\6\103\1\213\7\103\1\215\6\103"+
+ "\1\216\11\103\1\215\12\103\1\216\4\103\1\217\1\104"+
+ "\1\207\1\220\1\217\1\113\4\217\1\221\1\217\1\222"+
+ "\3\217\1\113\6\217\1\113\6\217\1\223\50\217\1\224"+
+ "\1\104\1\207\1\225\1\224\1\113\4\224\1\226\1\224"+
+ "\1\227\3\224\1\113\6\224\1\113\6\224\1\230\50\224"+
+ "\1\231\1\104\1\207\1\232\1\231\1\113\4\231\1\233"+
+ "\1\231\1\234\3\231\1\113\6\231\1\113\57\231\1\235"+
+ "\1\236\1\237\104\235\1\240\1\104\1\207\1\241\1\240"+
+ "\1\113\4\240\1\242\1\240\1\243\3\240\1\113\6\240"+
+ "\1\113\57\240\1\244\1\245\1\246\104\244\1\247\1\250"+
+ "\105\247\1\103\1\104\25\103\1\106\57\103\1\251\1\252"+
+ "\105\251\1\103\1\104\5\103\1\253\17\103\1\106\57\103"+
+ "\1\254\1\255\1\165\1\256\1\254\1\113\4\254\1\257"+
+ "\1\254\1\260\1\261\2\254\1\113\6\254\1\113\36\254"+
+ "\1\262\20\254\1\263\1\264\3\263\1\265\6\263\1\266"+
+ "\1\267\2\263\1\265\6\263\1\265\36\263\1\270\20\263"+
+ "\1\271\1\264\3\271\1\272\4\271\1\273\2\271\1\274"+
+ "\2\271\1\272\6\271\1\272\36\271\1\275\20\271\1\276"+
+ "\1\277\10\276\1\300\1\276\1\301\1\302\67\276\1\303"+
+ "\1\276\1\304\1\305\12\304\1\306\12\304\1\307\57\304"+
+ "\1\310\1\311\10\310\1\312\14\310\1\313\57\310\1\103"+
+ "\1\104\12\103\1\306\12\103\1\106\60\103\1\104\10\103"+
+ "\1\312\14\103\1\106\57\103\1\314\1\315\10\314\1\316"+
+ "\4\314\1\317\65\314\1\320\1\314\1\321\1\322\12\321"+
+ "\1\266\2\321\1\323\65\321\1\320\1\321\1\324\1\325"+
+ "\10\324\1\326\1\324\1\327\51\324\1\330\16\324\1\331"+
+ "\1\324\1\332\1\333\12\332\1\334\12\332\1\335\57\332"+
+ "\1\336\1\337\10\336\1\340\14\336\1\341\57\336\1\103"+
+ "\1\104\12\103\1\334\12\103\1\106\60\103\1\104\10\103"+
+ "\1\340\14\103\1\106\57\103\1\342\1\343\10\342\1\316"+
+ "\4\342\1\344\65\342\1\345\1\342\1\346\1\347\12\346"+
+ "\1\266\2\346\1\350\65\346\1\345\1\346\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\351\1\352\16\0\1\353\2\0\1\354"+
+ "\65\0\1\355\2\0\2\356\6\0\1\355\6\0\1\355"+
+ "\6\356\1\0\13\356\1\0\13\356\1\357\4\356\1\0"+
+ "\4\356\1\0\4\356\1\0\1\356\1\72\1\0\11\72"+
+ "\1\0\1\72\1\360\1\361\4\72\1\0\64\72\1\0"+
+ "\11\72\1\0\1\72\1\362\5\72\1\0\42\72\1\362"+
+ "\20\72\5\0\1\355\2\0\2\363\6\0\1\355\2\0"+
+ "\1\364\3\0\1\355\6\363\1\0\13\363\1\0\13\363"+
+ "\1\0\4\363\1\0\4\363\1\0\4\363\1\0\1\363"+
+ "\1\72\1\0\11\72\1\0\2\72\1\365\4\72\1\0"+
+ "\42\72\1\366\20\72\132\0\1\353\2\0\1\367\104\0"+
+ "\1\370\71\0\1\371\101\0\1\372\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\373\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\373\1\374\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\375\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\376\106\0\1\377\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\u0100\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\377\1\u0100\1\127\1\0\4\127"+
+ "\1\0\1\127\1\0\3\127\1\0\6\127\1\0\57\127"+
+ "\1\u0101\1\0\10\u0101\1\u0102\2\u0101\1\u0103\1\u0101\1\u0104"+
+ "\46\u0101\1\u0103\20\u0101\1\u0105\1\0\12\u0105\1\u0102\1\u0106"+
+ "\1\u0105\1\u0107\46\u0105\1\u0106\20\u0105\2\0\1\135\1\u0108"+
+ "\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\u0109\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\u010a\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\u010b\1\u010c"+
+ "\1\143\1\u010b\4\143\1\u010d\1\143\1\u010b\1\u010e\1\143"+
+ "\1\u010f\1\u010b\6\143\1\u010b\36\143\1\u010e\20\143\1\144"+
+ "\1\0\1\u0110\1\u0111\1\144\1\u0110\4\144\1\u0110\1\144"+
+ "\1\u010d\1\u0112\1\144\1\u0113\1\u0110\6\144\1\u0110\36\144"+
+ "\1\u0112\20\144\2\0\1\u0114\127\0\1\353\2\0\1\u0115"+
+ "\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\u0116\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\u0117\1\156\1\0\4\156\1\0\1\156"+
+ "\1\0\3\156\1\0\6\156\1\0\57\156\1\u0118\1\0"+
+ "\10\u0118\1\u0119\2\u0118\1\u011a\1\u0118\1\u011b\46\u0118\1\u011a"+
+ "\20\u0118\1\u011c\1\0\12\u011c\1\u0119\1\u011d\1\u011c\1\u011e"+
+ "\46\u011c\1\u011d\20\u011c\1\156\1\0\1\u0116\1\u0117\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\351\17\0\1\353\2\0\1\354\62\0"+
+ "\1\u011f\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\u0120\3\170"+
+ "\1\0\13\170\1\0\4\170\1\0\11\170\1\0\1\170"+
+ "\3\0\1\351\4\0\2\u0121\11\0\1\353\2\0\1\354"+
+ "\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\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\16\0\1\u0122"+
+ "\106\0\1\u0123\70\0\1\177\2\0\1\u0124\1\177\1\0"+
+ "\4\177\1\0\1\177\1\0\3\177\1\0\6\177\1\0"+
+ "\57\177\3\0\1\351\4\0\2\u0125\11\0\1\353\2\0"+
+ "\1\354\1\0\6\u0125\1\0\13\u0125\1\0\13\u0125\1\0"+
+ "\4\u0125\1\0\4\u0125\1\0\4\u0125\1\0\1\u0125\1\177"+
+ "\1\0\1\u011f\1\u0124\1\177\1\0\4\177\1\0\1\177"+
+ "\1\0\3\177\1\0\6\177\1\0\57\177\1\u0126\1\0"+
+ "\10\u0126\1\u0127\2\u0126\1\u0128\1\u0126\1\u0129\46\u0126\1\u0128"+
+ "\20\u0126\1\u012a\1\0\12\u012a\1\u0127\1\u012b\1\u012a\1\u012c"+
+ "\46\u012a\1\u012b\20\u012a\1\177\2\0\1\u0124\1\177\1\0"+
+ "\4\177\1\0\1\177\1\0\1\177\1\u012d\1\177\1\0"+
+ "\6\177\1\0\60\177\2\0\1\u0124\1\177\1\0\4\177"+
+ "\1\0\1\177\1\0\1\177\1\u012e\1\177\1\0\6\177"+
+ "\1\0\57\177\3\0\1\351\17\0\1\353\2\0\1\u0115"+
+ "\130\0\1\u012f\2\0\1\u012f\75\0\1\u0130\14\0\1\u0130"+
+ "\63\0\2\u0131\51\0\24\u0132\1\u0133\62\u0132\6\0\4\214"+
+ "\7\0\1\214\6\0\6\214\1\0\13\214\1\0\13\214"+
+ "\1\0\4\214\1\0\11\214\1\0\1\214\54\0\1\u0134"+
+ "\5\0\1\u0134\116\0\1\u0135\10\0\1\u0135\3\0\1\217"+
+ "\2\0\1\u0136\1\217\1\0\4\217\1\0\1\217\1\0"+
+ "\3\217\1\0\6\217\1\0\57\217\1\u0137\1\0\10\u0137"+
+ "\1\u0138\2\u0137\1\u0139\1\u0137\1\u013a\46\u0137\1\u0139\20\u0137"+
+ "\1\u013b\1\0\1\u013b\2\u013c\1\u013b\4\u013c\2\u013b\1\u013d"+
+ "\1\u013e\1\u013b\1\u013f\4\u013c\1\u013b\11\u013c\1\u013b\27\u013c"+
+ "\1\u013e\10\u013c\2\u013b\4\u013c\1\u013b\1\u013c\1\223\2\u0132"+
+ "\1\u0140\1\223\1\u0132\4\223\1\u0132\1\223\1\u0132\3\223"+
+ "\1\u0132\3\223\1\u0141\2\223\1\u0132\57\223\1\224\2\0"+
+ "\1\u0142\1\224\1\0\4\224\1\0\1\224\1\0\3\224"+
+ "\1\0\6\224\1\0\57\224\12\u0143\1\u0144\74\u0143\14\u0145"+
+ "\1\u0144\72\u0145\1\230\2\u0132\1\u0146\1\230\1\u0132\4\230"+
+ "\1\u0132\1\230\1\u0132\3\230\1\u0132\3\230\1\u0147\2\230"+
+ "\1\u0132\57\230\1\231\2\0\1\u0148\1\231\1\0\4\231"+
+ "\1\0\1\231\1\0\3\231\1\0\6\231\1\0\57\231"+
+ "\1\u0149\1\0\10\u0149\1\u014a\2\u0149\1\u014b\1\u0149\1\u014c"+
+ "\46\u0149\1\u014b\20\u0149\1\u014d\1\0\1\u014d\2\u014e\1\u014d"+
+ "\4\u014e\2\u014d\1\u014f\1\u0150\1\u014d\1\u0151\4\u014e\1\u014d"+
+ "\11\u014e\1\u014d\27\u014e\1\u0150\10\u014e\2\u014d\4\u014e\1\u014d"+
+ "\1\u014e\2\235\1\0\106\235\1\0\20\235\1\u0152\2\235"+
+ "\1\u0153\60\235\1\240\2\0\1\u0154\1\240\1\0\4\240"+
+ "\1\0\1\240\1\0\3\240\1\0\6\240\1\0\57\240"+
+ "\1\u0155\1\0\10\u0155\1\u0156\2\u0155\1\u0157\1\u0155\1\u0158"+
+ "\46\u0155\1\u0157\20\u0155\1\u0159\1\0\1\u0159\2\u015a\1\u0159"+
+ "\4\u015a\2\u0159\1\u015b\1\u015c\1\u0159\1\u015d\4\u015a\1\u0159"+
+ "\11\u015a\1\u0159\27\u015a\1\u015c\10\u015a\2\u0159\4\u015a\1\u0159"+
+ "\1\u015a\2\244\1\0\106\244\1\0\20\244\1\u015e\2\244"+
+ "\1\u015f\60\244\7\0\1\u0160\77\0\1\254\2\0\1\u0161"+
+ "\1\254\1\0\4\254\1\0\1\254\1\0\3\254\1\0"+
+ "\6\254\1\0\60\254\1\0\1\u011f\1\u0161\1\254\1\0"+
+ "\4\254\1\0\1\254\1\0\3\254\1\0\6\254\1\0"+
+ "\57\254\1\u0162\1\0\10\u0162\1\u0163\2\u0162\1\u0164\1\u0162"+
+ "\1\u0165\46\u0162\1\u0164\20\u0162\1\u0166\1\0\12\u0166\1\u0163"+
+ "\1\u0167\1\u0166\1\u0168\46\u0166\1\u0167\20\u0166\1\254\2\0"+
+ "\1\u0161\1\254\1\0\4\254\1\0\1\254\1\0\1\254"+
+ "\1\u0169\1\254\1\0\6\254\1\0\60\254\2\0\1\u0161"+
+ "\1\254\1\0\4\254\1\0\1\254\1\0\1\254\1\u016a"+
+ "\1\254\1\0\6\254\1\0\57\254\1\263\1\0\12\263"+
+ "\2\0\50\263\1\0\20\263\3\0\1\u016b\17\0\1\353"+
+ "\2\0\1\367\60\0\1\263\1\0\3\263\1\265\6\263"+
+ "\2\0\2\263\1\265\6\263\1\265\36\263\1\0\20\263"+
+ "\5\0\1\u016c\10\0\1\u016d\1\0\1\u016c\6\0\1\u016c"+
+ "\64\0\1\u016c\10\0\1\u016e\1\0\1\u016c\6\0\1\u016c"+
+ "\57\0\1\271\1\0\10\271\1\0\2\271\1\0\50\271"+
+ "\1\0\21\271\1\0\3\271\1\272\4\271\1\0\2\271"+
+ "\1\0\2\271\1\272\6\271\1\272\36\271\1\0\20\271"+
+ "\5\0\1\u016c\10\0\1\u016f\1\0\1\u016c\6\0\1\u016c"+
+ "\64\0\1\u016c\10\0\1\u0170\1\0\1\u016c\6\0\1\u016c"+
+ "\57\0\12\276\1\0\1\276\1\0\1\u0171\67\276\1\0"+
+ "\13\276\1\0\1\276\1\0\1\u0171\5\276\1\u0172\61\276"+
+ "\1\0\13\276\1\0\1\276\1\0\1\276\1\u0173\66\276"+
+ "\1\u0174\1\276\14\u0175\1\u0176\106\u0175\1\u0176\6\u0175\1\u0177"+
+ "\2\u0175\1\u0178\60\u0175\12\u0179\1\u017a\106\u0179\1\u017a\10\u0179"+
+ "\1\u017b\2\u0179\1\u017c\60\u0179\12\314\1\0\4\314\1\u017d"+
+ "\65\314\1\0\13\314\1\0\4\314\1\u017d\3\314\1\u017e"+
+ "\61\314\1\0\13\314\1\u017f\74\314\14\321\1\0\2\321"+
+ "\1\u0180\65\321\1\0\15\321\1\0\2\321\1\u0180\3\321"+
+ "\1\u0181\61\321\1\0\15\321\1\u0182\72\321\12\324\1\0"+
+ "\1\324\1\0\70\324\1\0\13\324\1\0\1\324\1\0"+
+ "\6\324\1\u0183\61\324\1\0\13\324\1\0\1\324\1\0"+
+ "\1\324\1\u0184\66\324\1\0\1\324\14\u0185\1\u0186\106\u0185"+
+ "\1\u0186\6\u0185\1\u0187\2\u0185\1\u0188\60\u0185\12\u0189\1\u018a"+
+ "\106\u0189\1\u018a\10\u0189\1\u018b\2\u0189\1\u018c\60\u0189\12\342"+
+ "\1\0\4\342\1\u018d\65\342\1\0\13\342\1\0\4\342"+
+ "\1\u018d\3\342\1\u018e\61\342\1\0\13\342\1\u018f\74\342"+
+ "\14\346\1\0\2\346\1\u0190\65\346\1\0\15\346\1\0"+
+ "\2\346\1\u0190\3\346\1\u0191\61\346\1\0\15\346\1\u0192"+
+ "\72\346\7\0\1\u0193\12\0\1\u0194\3\0\1\u0195\23\0"+
+ "\1\u0196\43\0\1\u0197\26\0\1\u0198\55\0\1\355\2\0"+
+ "\2\u0199\6\0\1\355\6\0\1\355\6\u0199\1\0\13\u0199"+
+ "\1\0\13\u0199\1\0\4\u0199\1\0\4\u0199\1\0\4\u0199"+
+ "\1\0\1\u0199\1\u019a\1\0\3\u019a\1\u019b\4\356\1\u019a"+
+ "\1\0\4\u019a\1\u019b\1\356\1\u019a\1\0\3\u019a\1\u019b"+
+ "\6\356\1\u019a\13\356\1\u019a\13\356\1\u019a\4\356\1\u019c"+
+ "\11\356\1\u019a\1\356\21\0\1\u019d\7\0\1\u019e\55\0"+
+ "\1\72\1\0\11\72\1\0\1\72\1\u019f\5\72\1\0"+
+ "\42\72\1\0\20\72\105\361\1\u01a0\1\361\16\0\1\u01a1"+
+ "\70\0\1\u019a\1\0\3\u019a\1\u019b\4\363\1\u019a\1\0"+
+ "\4\u019a\1\u019b\1\363\1\u019a\1\0\3\u019a\1\u019b\6\363"+
+ "\1\u019a\13\363\1\u019a\13\363\1\u019a\4\363\1\u01a2\11\363"+
+ "\1\u019a\1\363\23\0\1\364\63\0\105\365\1\u01a3\1\365"+
+ "\1\72\1\0\11\72\1\0\1\72\1\0\5\72\1\0"+
+ "\42\72\1\u01a4\20\72\36\0\1\u0198\52\0\1\u01a5\106\0"+
+ "\1\u01a6\112\0\4\114\7\0\1\114\6\0\4\114\2\u01a7"+
+ "\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\u01a7\1\u01a8\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\u01a9\10\114"+
+ "\1\0\4\114\1\0\6\114\1\u01a9\2\114\1\0\1\114"+
+ "\1\u0101\1\0\10\u0101\1\u0102\3\u0101\1\0\71\u0101\1\0"+
+ "\10\u0101\1\u0102\2\u0101\1\u01aa\1\u0101\1\u0104\46\u0101\1\u01aa"+
+ "\20\u0101\1\u0105\1\0\12\u0105\1\u0102\1\u0105\1\0\71\u0105"+
+ "\1\0\12\u0105\1\u0102\1\u01ab\1\u0105\1\u0107\46\u0105\1\u01ab"+
+ "\20\u0105\1\u010b\1\0\10\u010b\1\u010d\2\u010b\1\u01ac\1\u010b"+
+ "\1\u01ad\46\u010b\1\u01ac\20\u010b\1\143\1\0\1\u010b\1\u010c"+
+ "\1\143\1\u010b\4\143\1\u010d\1\143\1\u010b\1\143\1\141"+
+ "\1\143\1\u010b\6\143\1\u010b\60\143\1\0\1\u010b\1\u010c"+
+ "\1\143\1\u010b\4\143\1\u010d\1\143\1\u010b\1\u01ae\1\143"+
+ "\1\u010f\1\u010b\6\143\1\u010b\36\143\1\u01ae\20\143\1\u0110"+
+ "\1\0\12\u0110\1\u010d\1\u01af\1\u0110\1\u01b0\46\u0110\1\u01af"+
+ "\20\u0110\1\144\1\0\1\u0110\1\u0111\1\144\1\u0110\4\144"+
+ "\1\u0110\1\144\1\u010d\1\144\1\141\1\144\1\u0110\6\144"+
+ "\1\u0110\60\144\1\0\1\u0110\1\u0111\1\144\1\u0110\4\144"+
+ "\1\u0110\1\144\1\u010d\1\u01b1\1\144\1\u0113\1\u0110\6\144"+
+ "\1\u0110\36\144\1\u01b1\20\144\1\u0118\1\0\10\u0118\1\u0119"+
+ "\3\u0118\1\0\71\u0118\1\0\10\u0118\1\u0119\2\u0118\1\u01b2"+
+ "\1\u0118\1\u011b\46\u0118\1\u01b2\20\u0118\1\u011c\1\0\12\u011c"+
+ "\1\u0119\1\u011c\1\0\71\u011c\1\0\12\u011c\1\u0119\1\u01b3"+
+ "\1\u011c\1\u011e\46\u011c\1\u01b3\20\u011c\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\u01b4\2\170\1\0\1\170\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\105\u0122"+
+ "\1\u01b5\1\u0122\105\u0123\1\u01b6\1\u0123\6\0\4\u0125\7\0"+
+ "\1\u0125\6\0\6\u0125\1\0\13\u0125\1\0\13\u0125\1\0"+
+ "\4\u0125\1\0\11\u0125\1\0\1\u0125\1\u0126\1\0\10\u0126"+
+ "\1\u0127\3\u0126\1\0\71\u0126\1\0\10\u0126\1\u0127\2\u0126"+
+ "\1\u01b7\1\u0126\1\u0129\46\u0126\1\u01b7\20\u0126\1\u012a\1\0"+
+ "\12\u012a\1\u0127\1\u012a\1\0\71\u012a\1\0\12\u012a\1\u0127"+
+ "\1\u01b8\1\u012a\1\u012c\46\u012a\1\u01b8\20\u012a\1\u01b9\2\u01ba"+
+ "\1\u01bb\1\u01b9\1\u01ba\4\u01b9\1\u01ba\1\u01b9\1\u01ba\3\u01b9"+
+ "\1\u01ba\6\u01b9\1\u01ba\55\u01b9\1\177\1\u01b9\1\u01bc\2\u01bd"+
+ "\1\u01be\1\u01bc\1\u01bd\4\u01bc\1\u01bd\1\u01bc\1\u01bd\3\u01bc"+
+ "\1\u01bd\6\u01bc\1\u01bd\55\u01bc\1\177\1\u01bc\37\0\1\u01bf"+
+ "\35\0\1\u01bf\53\0\1\u01c0\14\0\1\u01c0\73\0\1\u01c1"+
+ "\11\0\1\u01c1\76\0\1\u01c2\20\0\1\u01c2\113\0\1\u01c3"+
+ "\7\0\1\u01c3\2\0\1\u0137\1\0\10\u0137\1\u0138\3\u0137"+
+ "\1\0\71\u0137\1\0\10\u0137\1\u0138\2\u0137\1\u01c4\1\u0137"+
+ "\1\u013a\46\u0137\1\u01c4\20\u0137\1\u013b\1\0\12\u013b\1\u0138"+
+ "\1\u01c5\1\u013b\1\u013f\46\u013b\1\u01c5\21\u013b\1\0\12\u013b"+
+ "\1\u01c6\1\u01c5\1\u013b\1\u013f\46\u013b\1\u01c5\20\u013b\14\0"+
+ "\1\u01c7\72\0\1\u013b\1\0\12\u013b\1\u01c6\1\u013b\1\0"+
+ "\71\u013b\1\0\12\u013b\1\u0138\1\u01c8\1\u013b\1\u013f\46\u013b"+
+ "\1\u01c8\20\u013b\1\u0149\1\0\10\u0149\1\u014a\3\u0149\1\0"+
+ "\71\u0149\1\0\10\u0149\1\u014a\2\u0149\1\u01c9\1\u0149\1\u014c"+
+ "\46\u0149\1\u01c9\20\u0149\1\u014d\1\0\12\u014d\1\u014a\1\u01ca"+
+ "\1\u014d\1\u0151\46\u014d\1\u01ca\21\u014d\1\0\12\u014d\1\u01cb"+
+ "\1\u01ca\1\u014d\1\u0151\46\u014d\1\u01ca\20\u014d\14\0\1\u01cc"+
+ "\72\0\1\u014d\1\0\12\u014d\1\u01cb\1\u014d\1\0\71\u014d"+
+ "\1\0\12\u014d\1\u014a\1\u01cd\1\u014d\1\u0151\46\u014d\1\u01cd"+
+ "\20\u014d\2\235\1\0\4\235\1\u01ce\12\235\1\u01cf\3\235"+
+ "\1\u01d0\23\235\1\u01d1\36\235\1\0\33\235\1\u01d2\50\235"+
+ "\1\u0155\1\0\10\u0155\1\u0156\3\u0155\1\0\71\u0155\1\0"+
+ "\10\u0155\1\u0156\2\u0155\1\u01d3\1\u0155\1\u0158\46\u0155\1\u01d3"+
+ "\20\u0155\1\u0159\1\0\12\u0159\1\u0156\1\u01d4\1\u0159\1\u015d"+
+ "\46\u0159\1\u01d4\21\u0159\1\0\12\u0159\1\u01d5\1\u01d4\1\u0159"+
+ "\1\u015d\46\u0159\1\u01d4\20\u0159\14\0\1\u01d6\72\0\1\u0159"+
+ "\1\0\12\u0159\1\u01d5\1\u0159\1\0\71\u0159\1\0\12\u0159"+
+ "\1\u0156\1\u01d7\1\u0159\1\u015d\46\u0159\1\u01d7\20\u0159\2\244"+
+ "\1\0\4\244\1\u01d8\12\244\1\u01d9\3\244\1\u01da\23\244"+
+ "\1\u01db\36\244\1\0\33\244\1\u01dc\50\244\23\0\1\u01dd"+
+ "\63\0\12\u0162\1\u0163\3\u0162\1\0\71\u0162\1\0\10\u0162"+
+ "\1\u01de\2\u0162\1\u01df\1\u0162\1\u0165\46\u0162\1\u01df\20\u0162"+
+ "\14\u0166\1\u0163\1\u0166\1\0\71\u0166\1\0\12\u0166\1\u01e0"+
+ "\1\u01e1\1\u0166\1\u0168\46\u0166\1\u01e1\20\u0166\1\u01e2\2\u01ba"+
+ "\1\u01e3\1\u01e2\1\u01ba\4\u01e2\1\u01ba\1\u01e2\1\u01ba\3\u01e2"+
+ "\1\u01ba\6\u01e2\1\u01ba\55\u01e2\1\254\1\u01e2\1\u01e4\2\u01bd"+
+ "\1\u01e5\1\u01e4\1\u01bd\4\u01e4\1\u01bd\1\u01e4\1\u01bd\3\u01e4"+
+ "\1\u01bd\6\u01e4\1\u01bd\55\u01e4\1\254\1\u01e4\5\0\1\u016c"+
+ "\12\0\1\u016c\6\0\1\u016c\57\0\12\276\1\0\1\276"+
+ "\1\0\1\276\1\u01e6\66\276\1\u0174\10\276\1\u01e7\2\276"+
+ "\1\0\1\276\1\0\1\u0171\4\276\1\u01e8\3\276\1\u01e9"+
+ "\23\276\1\u01ea\32\276\1\0\1\276\12\u01e6\1\0\1\u01e6"+
+ "\1\0\70\u01e6\1\0\1\u01e6\12\u0174\1\0\1\u0174\1\0"+
+ "\1\u01eb\67\u0174\1\0\1\u0174\7\u0175\1\u01ec\4\u0175\1\u0176"+
+ "\5\u0175\1\u01ed\3\u0175\1\u01ee\23\u0175\1\u01ef\50\u0175\1\u0176"+
+ "\21\u0175\1\u01f0\50\u0175\7\u0179\1\u01f1\2\u0179\1\u017a\7\u0179"+
+ "\1\u01f2\3\u0179\1\u01f3\23\u0179\1\u01f4\46\u0179\1\u017a\23\u0179"+
+ "\1\u01f5\50\u0179\12\314\1\0\103\314\1\u01f6\2\314\1\0"+
+ "\4\314\1\u017d\2\314\1\u01f7\3\314\1\u01f8\23\314\1\u01f9"+
+ "\32\314\1\0\1\314\17\u01fa\1\u01fb\67\u01fa\14\321\1\0"+
+ "\101\321\1\u01fc\4\321\1\0\2\321\1\u0180\2\321\1\u01fd"+
+ "\3\321\1\u01fe\23\321\1\u01ff\32\321\1\0\1\321\17\u0200"+
+ "\1\u0201\67\u0200\7\324\1\u0202\2\324\1\0\1\324\1\0"+
+ "\5\324\1\u0203\3\324\1\u0204\23\324\1\u0205\32\324\1\0"+
+ "\1\324\7\u0185\1\u0206\4\u0185\1\u0186\5\u0185\1\u0207\3\u0185"+
+ "\1\u0208\23\u0185\1\u0209\50\u0185\1\u0186\21\u0185\1\u020a\50\u0185"+
+ "\7\u0189\1\u020b\2\u0189\1\u018a\7\u0189\1\u020c\3\u0189\1\u020d"+
+ "\23\u0189\1\u020e\46\u0189\1\u018a\23\u0189\1\u020f\50\u0189\12\342"+
+ "\1\0\103\342\1\u0210\2\342\1\0\4\342\1\u018d\2\342"+
+ "\1\u0211\3\342\1\u0212\23\342\1\u0213\32\342\1\0\1\342"+
+ "\17\u0214\1\u0215\67\u0214\14\346\1\0\101\346\1\u0216\4\346"+
+ "\1\0\2\346\1\u0190\2\346\1\u0217\3\346\1\u0218\23\346"+
+ "\1\u0219\32\346\1\0\1\346\17\u021a\1\u021b\67\u021a\7\0"+
+ "\1\u021c\106\0\1\u021d\136\0\1\u021e\47\0\1\u0199\1\0"+
+ "\11\u0199\1\0\7\u0199\1\0\63\u0199\1\u019a\1\0\11\u019a"+
+ "\1\0\7\u019a\1\0\47\u019a\1\0\14\u019a\1\0\3\u019a"+
+ "\1\u019b\5\u019a\1\0\4\u019a\1\u019b\2\u019a\1\0\3\u019a"+
+ "\1\u019b\43\u019a\1\u021f\13\u019a\21\0\1\u019d\51\0\1\u0220"+
+ "\34\0\1\u0221\15\0\3\u0221\2\0\1\u0221\11\0\1\u0221"+
+ "\1\0\2\u0221\7\0\1\u0221\2\0\2\u0221\6\0\1\u0221"+
+ "\17\0\1\u019f\157\0\1\u01a4\26\0\1\114\1\u0222\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\u0223\1\114"+
+ "\1\0\1\u0223\12\114\1\0\4\114\1\0\11\114\1\0"+
+ "\1\114\1\u0101\1\0\10\u0101\1\u0102\74\u0101\1\u0105\1\0"+
+ "\12\u0105\1\u0102\72\u0105\1\u010b\1\0\10\u010b\1\u010d\3\u010b"+
+ "\1\0\71\u010b\1\0\10\u010b\1\u010d\2\u010b\1\u0224\1\u010b"+
+ "\1\u01ad\46\u010b\1\u0224\20\u010b\1\143\1\0\1\u010b\1\u010c"+
+ "\1\143\1\u010b\4\143\1\u010d\1\143\1\u010b\3\143\1\u010b"+
+ "\6\143\1\u010b\57\143\1\u0110\1\0\12\u0110\1\u010d\1\u0110"+
+ "\1\0\71\u0110\1\0\12\u0110\1\u010d\1\u0225\1\u0110\1\u01b0"+
+ "\46\u0110\1\u0225\20\u0110\1\144\1\0\1\u0110\1\u0111\1\144"+
+ "\1\u0110\4\144\1\u0110\1\144\1\u010d\3\144\1\u0110\6\144"+
+ "\1\u0110\57\144\1\u0118\1\0\10\u0118\1\u0119\74\u0118\1\u011c"+
+ "\1\0\12\u011c\1\u0119\72\u011c\6\0\3\170\1\u0226\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\1\u0126\1\0\10\u0126"+
+ "\1\u0127\74\u0126\1\u012a\1\0\12\u012a\1\u0127\72\u012a\1\u01b9"+
+ "\2\u01ba\1\u01bb\1\u01b9\1\u01ba\4\u01b9\1\u01ba\1\u01b9\1\u01ba"+
+ "\3\u01b9\1\u01ba\6\u01b9\1\u01ba\55\u01b9\1\u0227\1\u01b9\105\u01ba"+
+ "\1\u0228\1\u01ba\1\u01bc\2\u01bd\1\u01be\1\u01bc\1\u01bd\4\u01bc"+
+ "\1\u01bd\1\u01bc\1\u01bd\3\u01bc\1\u01bd\6\u01bc\1\u01bd\55\u01bc"+
+ "\1\u0227\1\u01bc\105\u01bd\1\u0229\1\u01bd\42\0\1\u022a\14\0"+
+ "\1\u022a\63\0\2\u022b\103\0\2\u022c\115\0\1\u022d\14\0"+
+ "\1\u022d\63\0\2\u022e\51\0\1\u0137\1\0\10\u0137\1\u0138"+
+ "\74\u0137\1\u013b\1\0\12\u013b\1\u0138\1\u013b\1\0\70\u013b"+
+ "\3\0\2\u022f\1\0\4\u022f\2\0\1\u013d\1\u022f\2\0"+
+ "\4\u022f\1\0\11\u022f\1\0\40\u022f\2\0\4\u022f\1\0"+
+ "\1\u022f\1\u013b\1\0\12\u013b\1\u0138\72\u013b\1\u0149\1\0"+
+ "\10\u0149\1\u014a\74\u0149\1\u014d\1\0\12\u014d\1\u014a\1\u014d"+
+ "\1\0\70\u014d\3\0\2\u0230\1\0\4\u0230\2\0\1\u014f"+
+ "\1\u0230\2\0\4\u0230\1\0\11\u0230\1\0\40\u0230\2\0"+
+ "\4\u0230\1\0\1\u0230\1\u014d\1\0\12\u014d\1\u014a\72\u014d"+
+ "\2\235\1\0\4\235\1\u0231\101\235\1\0\34\235\1\u0232"+
+ "\47\235\1\u0155\1\0\10\u0155\1\u0156\74\u0155\1\u0159\1\0"+
+ "\12\u0159\1\u0156\1\u0159\1\0\70\u0159\3\0\2\u0233\1\0"+
+ "\4\u0233\2\0\1\u015b\1\u0233\2\0\4\u0233\1\0\11\u0233"+
+ "\1\0\40\u0233\2\0\4\u0233\1\0\1\u0233\1\u0159\1\0"+
+ "\12\u0159\1\u0156\72\u0159\2\244\1\0\4\244\1\u0234\101\244"+
+ "\1\0\34\244\1\u0235\47\244\2\0\1\u0236\104\0\12\u0162"+
+ "\1\u0163\74\u0162\14\u0166\1\u0163\72\u0166\1\u01e2\2\u01ba\1\u01e3"+
+ "\1\u01e2\1\u01ba\4\u01e2\1\u01ba\1\u01e2\1\u01ba\3\u01e2\1\u01ba"+
+ "\6\u01e2\1\u01ba\55\u01e2\1\u0237\1\u01e2\1\u01e4\2\u01bd\1\u01e5"+
+ "\1\u01e4\1\u01bd\4\u01e4\1\u01bd\1\u01e4\1\u01bd\3\u01e4\1\u01bd"+
+ "\6\u01e4\1\u01bd\55\u01e4\1\u0237\1\u01e4\7\276\1\u0238\2\276"+
+ "\1\0\1\276\1\0\1\u0171\67\276\1\0\1\276\12\u0174"+
+ "\1\0\1\u0174\1\0\1\u0174\1\0\70\u0174\7\u0175\1\u0239"+
+ "\4\u0175\1\u0176\106\u0175\1\u0176\22\u0175\1\u023a\47\u0175\7\u0179"+
+ "\1\u023b\2\u0179\1\u017a\106\u0179\1\u017a\24\u0179\1\u023c\47\u0179"+
+ "\7\314\1\u023d\2\314\1\0\4\314\1\u017d\65\314\1\0"+
+ "\1\314\12\u023e\1\u023f\72\u023e\1\0\1\u023e\7\321\1\u0240"+
+ "\4\321\1\0\2\321\1\u0180\65\321\1\0\1\321\14\u0241"+
+ "\1\u023f\70\u0241\1\0\1\u0241\7\324\1\u0242\2\324\1\0"+
+ "\1\324\1\0\70\324\1\0\1\324\7\u0185\1\u0243\4\u0185"+
+ "\1\u0186\106\u0185\1\u0186\22\u0185\1\u0244\47\u0185\7\u0189\1\u0245"+
+ "\2\u0189\1\u018a\106\u0189\1\u018a\24\u0189\1\u0246\47\u0189\7\342"+
+ "\1\u0247\2\342\1\0\4\342\1\u018d\65\342\1\0\1\342"+
+ "\12\u0248\1\u0249\72\u0248\1\0\1\u0248\7\346\1\u024a\4\346"+
+ "\1\0\2\346\1\u0190\65\346\1\0\1\346\14\u024b\1\u0249"+
+ "\70\u024b\1\0\1\u024b\40\0\1\u024c\141\0\1\u021f\34\0"+
+ "\1\u0221\15\0\3\u0221\2\0\1\u0221\11\0\1\u0221\1\0"+
+ "\2\u0221\7\0\1\u0221\1\0\1\u0220\2\u0221\6\0\1\u0221"+
+ "\10\0\4\114\7\0\1\114\6\0\6\114\1\0\7\114"+
+ "\1\u024d\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\u024e\4\114\1\0\13\114\1\0\1\114"+
+ "\1\u024e\2\114\1\0\11\114\1\0\1\114\1\u010b\1\0"+
+ "\10\u010b\1\u010d\74\u010b\1\u0110\1\0\12\u0110\1\u010d\72\u0110"+
+ "\6\0\4\170\7\0\1\170\6\0\6\170\1\0\6\170"+
+ "\1\u024f\4\170\1\0\6\170\1\u0250\4\170\1\0\4\170"+
+ "\1\0\11\170\1\0\1\170\54\0\1\u0251\5\0\1\u0251"+
+ "\73\0\1\u0252\14\0\1\u0252\66\0\1\u0253\11\0\1\u0253"+
+ "\74\0\1\u0254\11\0\1\u0254\77\0\1\u0255\14\0\1\u0255"+
+ "\22\0\2\235\1\0\35\235\1\u0256\46\235\2\244\1\0"+
+ "\35\244\1\u0257\46\244\14\u0175\1\u0176\23\u0175\1\u0258\46\u0175"+
+ "\12\u0179\1\u017a\25\u0179\1\u0259\46\u0179\12\u023e\1\u01fa\4\u023e"+
+ "\1\u025a\65\u023e\1\u01fa\1\u023e\14\u0241\1\u0200\2\u0241\1\u025b"+
+ "\65\u0241\1\u0200\1\u0241\14\u0185\1\u0186\23\u0185\1\u025c\46\u0185"+
+ "\12\u0189\1\u018a\25\u0189\1\u025d\46\u0189\12\u0248\1\u0214\4\u0248"+
+ "\1\u025e\65\u0248\1\u0214\1\u0248\14\u024b\1\u021a\2\u024b\1\u025f"+
+ "\65\u024b\1\u021a\1\u024b\41\0\1\u0260\53\0\4\114\7\0"+
+ "\1\114\6\0\6\114\1\0\13\114\1\0\4\114\1\u0261"+
+ "\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\u0262"+
+ "\7\114\1\0\4\114\1\u0262\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\u0263\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\u0264\2\170\1\0"+
+ "\13\170\1\0\4\170\1\0\11\170\1\0\1\170\55\0"+
+ "\1\u0265\24\0\1\u0265\52\0\1\u0266\20\0\1\u0266\70\0"+
+ "\1\u0267\13\0\1\u0267\53\0\2\u0268\112\0\1\u0269\35\0"+
+ "\1\u0269\11\0\2\235\1\0\36\235\1\u026a\45\235\2\244"+
+ "\1\0\36\244\1\u026b\45\244\14\u0175\1\u0176\24\u0175\1\u026c"+
+ "\45\u0175\12\u0179\1\u017a\26\u0179\1\u026d\45\u0179\12\u023e\1\u026e"+
+ "\4\u023e\1\u025a\65\u023e\1\u01fa\1\u023e\14\u0241\1\u026f\2\u0241"+
+ "\1\u025b\65\u0241\1\u0200\1\u0241\14\u0185\1\u0186\24\u0185\1\u0270"+
+ "\45\u0185\12\u0189\1\u018a\26\u0189\1\u0271\45\u0189\12\u0248\1\u0272"+
+ "\4\u0248\1\u025e\65\u0248\1\u0214\1\u0248\14\u024b\1\u0273\2\u024b"+
+ "\1\u025f\65\u024b\1\u021a\1\u024b\42\0\1\u0274\52\0\4\114"+
+ "\7\0\1\114\6\0\6\114\1\0\13\114\1\0\7\114"+
+ "\1\u0275\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\u0276\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\u0277\4\170\1\0\13\170\1\0\4\170"+
+ "\1\0\11\170\1\0\1\170\44\0\1\u0278\11\0\1\u0278"+
+ "\72\0\1\u0279\14\0\1\u0279\71\0\1\u027a\14\0\1\u027a"+
+ "\27\0\2\235\1\0\37\235\1\u027b\44\235\2\244\1\0"+
+ "\37\244\1\u027c\44\244\14\u0175\1\u0176\25\u0175\1\u027d\44\u0175"+
+ "\12\u0179\1\u017a\27\u0179\1\u027e\44\u0179\14\u0185\1\u0186\25\u0185"+
+ "\1\u027f\44\u0185\12\u0189\1\u018a\27\u0189\1\u0280\44\u0189\41\0"+
+ "\1\u0281\53\0\4\114\7\0\1\114\6\0\5\114\1\u0282"+
+ "\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\u0283\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\u0284\5\170\1\0\13\170"+
+ "\1\0\4\170\1\0\11\170\1\0\1\170\2\235\1\0"+
+ "\36\235\1\u0285\45\235\2\244\1\0\36\244\1\u0286\45\244"+
+ "\14\u0175\1\u0176\24\u0175\1\u0287\45\u0175\12\u0179\1\u017a\26\u0179"+
+ "\1\u0288\45\u0179\14\u0185\1\u0186\24\u0185\1\u0289\45\u0185\12\u0189"+
+ "\1\u018a\26\u0189\1\u028a\45\u0189\36\0\1\u028b\56\0\4\114"+
+ "\7\0\1\114\6\0\6\114\1\0\5\114\1\u028c\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\u028d\7\170"+
+ "\1\0\1\170\2\235\1\0\33\235\1\u028e\50\235\2\244"+
+ "\1\0\33\244\1\u028f\50\244\14\u0175\1\u0176\21\u0175\1\u0290"+
+ "\50\u0175\12\u0179\1\u017a\23\u0179\1\u0291\50\u0179\14\u0185\1\u0186"+
+ "\21\u0185\1\u0292\50\u0185\12\u0189\1\u018a\23\u0189\1\u0293\50\u0189"+
+ "\6\0\4\114\7\0\1\114\6\0\6\114\1\0\7\114"+
+ "\1\u0294\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\u0295\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\u0296\6\0\4\170\7\0\1\170"+
+ "\6\0\6\170\1\0\10\170\1\u0297\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\u0298\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\u0299\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\u029a\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\u029b\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\u029c\6\114\1\0\4\114\1\0\11\114\1\0\1\114"+
+ "\6\u029d\4\u029e\7\u029d\1\u029e\5\u029d\1\0\6\u029e\1\u029d"+
+ "\13\u029e\1\u029d\13\u029e\1\u029d\4\u029e\1\u029d\11\u029e\1\u029d"+
+ "\1\u029e\43\0\1\u029f\3\0\1\u02a0\7\0\1\u02a1\1\u02a2"+
+ "\21\0\1\u02a3\12\0\4\170\7\0\1\170\6\0\6\170"+
+ "\1\0\4\170\1\u02a4\3\170\1\u02a5\2\170\1\0\4\170"+
+ "\1\u02a6\1\u02a7\5\170\1\0\4\170\1\0\6\170\1\u02a8"+
+ "\2\170\1\0\1\170\60\0\1\u02a9\77\0\1\u02aa\115\0"+
+ "\1\u02ab\105\0\1\u02ac\107\0\1\u02ad\34\0\4\170\7\0"+
+ "\1\170\6\0\6\170\1\0\13\170\1\0\5\170\1\u02ae"+
+ "\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\u02af"+
+ "\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\u02b0\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\u02b1\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\u02b2\5\170"+
+ "\1\0\4\170\1\0\11\170\1\0\1\170\45\0\1\u02b3"+
+ "\136\0\1\u02b4\107\0\1\u02b5\67\0\1\u02b6\125\0\1\u02b7"+
+ "\16\0\4\170\7\0\1\170\6\0\6\170\1\0\6\170"+
+ "\1\u02b8\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\u02b9\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\u02ba\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\u02bb\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\u02bc\6\170"+
+ "\1\0\1\170\47\0\1\u02bd\74\0\1\u02be\106\0\1\u02bf"+
+ "\116\0\1\u02c0\105\0\1\u02c1\50\0\4\170\7\0\1\170"+
+ "\6\0\6\170\1\0\10\170\1\u02c2\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\u02c3\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\u02c4\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\u02c5\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\u02c6\5\170\1\0\13\170\1\0\4\170"+
+ "\1\0\11\170\1\0\1\170\60\0\1\u02c7\131\0\1\u02c8"+
+ "\52\0\1\u02c9\106\0\1\u02ca\45\0\4\170\7\0\1\170"+
+ "\6\0\6\170\1\0\13\170\1\0\5\170\1\u02cb\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\u02cc\1\170\1\0\1\170"+
+ "\6\0\4\170\7\0\1\170\6\0\6\170\1\0\10\170"+
+ "\1\u02cd\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\u02ce\2\170\1\0\13\170\1\0\4\170"+
+ "\1\0\11\170\1\0\1\170\104\0\1\u02cf\63\0\1\u02b7"+
+ "\131\0\1\u02c1\106\0\1\u02d0\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\u02d1\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\u02bc"+
+ "\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\u02c6\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\u02d2\1\0"+
+ "\1\170\35\0\1\u02b7\154\0\1\u02d3\11\0\4\170\7\0"+
+ "\1\170\6\0\5\170\1\u02bc\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\u02d4\1\170\1\0\1\170"+
+ "\57\0\1\u02b7\35\0\4\170\7\0\1\170\6\0\6\170"+
+ "\1\0\13\170\1\0\4\170\1\u02bc\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, 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, 9, 3, 3, 3, 9, 3, 1, 1, 9, 1, 9,
+ 1, 1, 1, 1, 1, 9, 9, 1, 9, 3, 3, 9, 3, 3, 3, 9,
+ 3, 1, 1, 1, 9, 1, 1, 1, 9, 9, 1, 1, 0, 1, 0, 1,
+ 2, 0, 1, 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, 2, 2, 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, 1, 13,
+ 9, 9, 13, 1, 9, 9, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0,
+ 1, 0, 0, 1, 13, 13, 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 ITextRegion fBufferedEmbeddedContainer = null;
+ private ITextRegion fProxyUnknownRegion = 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 static final String PROXY_UNKNOWN_CONTEXT = "PROXY_UNKNOWN_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);
+ }
+ int initialLength = fEmbeddedContainer.getRegions().size();
+ 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 (endTagName != null && endTagName.length() == 0){
+ endTagName = internalTagName;
+ }
+ 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;
+ ITextRegionList embeddedList = fEmbeddedContainer.getRegions();
+ if(!isEndingType) {
+ // check for ending context
+ if (endTagName == null) {
+ for (int i = 0; i < endTypes.length; i++) {
+ isEndingType = isEndingType || (internalContext == endTypes[i]) || (embeddedList.size() - initialLength) >= 2 && (embeddedList.get(embeddedList.size()-1)).getType() == endTypes[i];
+ }
+ }
+ else {
+ isEndingType = ((isInEndTag && internalContext == XML_TAG_CLOSE) || (isInFirstTag && internalContext == XML_EMPTY_TAG_CLOSE)) && internalTagName != null && internalTagName.equals(endTagName);
+ }
+ }
+ 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;
+ boolean wasBlockingEnabled = fIsBlockingEnabled;
+ try {
+ // 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_currentPos - searchStringLength > yy_startRead &&
+ 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 && same; i++) {
+ if(fIsCaseSensitiveBlocking)
+ same = yy_buffer[i + yy_currentPos - searchStringLength] == searchString.charAt(i);
+ else
+ 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;
+ }
+ finally {
+ fIsBlockingEnabled = wasBlockingEnabled;
+ }
+}
+/**
+ * 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;
+ } else if (f_context == PROXY_UNKNOWN_CONTEXT) {
+ fBufferedEmbeddedContainer = fProxyUnknownRegion;
+ }
+ 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[35642];
+ int i = 0; /* index in packed string */
+ int j = 0; /* index in unpacked array */
+ while (i < 9512) {
+ 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();
+
+ 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 126:
+ case 131:
+ case 132:
+ case 294:
+ case 300:
+ case 301:
+ case 440:
+ case 443:
+ case 550:
+ { /* 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 725: break;
+ case 171:
+ case 176:
+ case 177:
+ case 354:
+ case 360:
+ case 361:
+ case 477:
+ case 479:
+ case 481:
+ case 483:
+ case 566:
+ { /* 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 726: break;
+ case 692:
+ case 697:
+ case 704:
+ case 709:
+ {
+ 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 727: break;
+ case 667:
+ {
+ 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 728: break;
+ case 650:
+ case 653:
+ case 654:
+ case 655:
+ case 656:
+ case 657:
+ case 658:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nCDATA start");//$NON-NLS-1$
+ fStateStack.push(yystate());
+ yybegin(ST_CDATA_TEXT);
+ return XML_CDATA_OPEN;
+ }
+ case 729: break;
+ case 642:
+ {
+ 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 730: break;
+ case 633:
+ {
+ if(Debug.debugTokenizer)
+ dump("element");//$NON-NLS-1$
+ yybegin(ST_XML_ELEMENT_DECLARATION);
+ return XML_ELEMENT_DECLARATION;
+ }
+ case 731: break;
+ case 632:
+ {
+ if(Debug.debugTokenizer)
+ dump("attlist");//$NON-NLS-1$
+ yybegin(ST_XML_ATTLIST_DECLARATION);
+ return XML_ATTLIST_DECLARATION;
+ }
+ case 732: break;
+ case 631:
+ {
+ if(Debug.debugTokenizer)
+ dump("doctype");//$NON-NLS-1$
+ yybegin(ST_XML_DOCTYPE_DECLARATION);
+ return XML_DOCTYPE_DECLARATION;
+ }
+ case 733: break;
+ case 616:
+ {
+ 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 734: break;
+ case 615:
+ {
+ 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 735: break;
+ case 609:
+ {
+ 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 736: break;
+ case 584:
+ case 625:
+ case 626:
+ {
+ return JSP_VBL_QUOTED_CONTENT;
+ }
+ case 737: break;
+ case 574:
+ case 621:
+ case 622:
+ {
+ return JSP_EL_QUOTED_CONTENT;
+ }
+ case 738: break;
+ case 565:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nJSP comment close");//$NON-NLS-1$
+ yybegin(YYINITIAL);
+ return JSP_COMMENT_CLOSE;
+ }
+ case 739: break;
+ case 552:
+ {
+ 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 740: break;
+ case 551:
+ {
+ 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 741: break;
+ case 543:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nCharRef");//$NON-NLS-1$
+ return XML_CHAR_REFERENCE;
+ }
+ case 742: break;
+ case 540:
+ {
+ 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 743: break;
+ case 539:
+ case 560:
+ case 563:
+ case 567:
+ case 568:
+ case 570:
+ case 572:
+ case 575:
+ case 577:
+ case 578:
+ case 580:
+ case 582:
+ case 585:
+ {
+ /* 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 744: break;
+ case 437:
+ {
+ yybegin(ST_JSP_VBL);
+ if(yylength() > 2)
+ yypushback(yylength() - 2);
+ fELlevel++;
+ fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
+ fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
+ assembleEmbeddedContainer(JSP_VBL_OPEN, JSP_VBL_CLOSE);
+ fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
+ yybegin(ST_XML_ATTRIBUTE_NAME);
+ return PROXY_CONTEXT;
+ }
+ case 745: break;
+ case 436:
+ {
+ yybegin(ST_JSP_EL);
+ if(yylength() > 2)
+ yypushback(yylength() - 2);
+ fELlevel++;
+ fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
+ fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
+ assembleEmbeddedContainer(JSP_EL_OPEN, JSP_EL_CLOSE);
+ fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
+ yybegin(ST_XML_ATTRIBUTE_NAME);
+ return PROXY_CONTEXT;
+ }
+ case 746: break;
+ case 422:
+ case 423:
+ {
+ 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 747: break;
+ case 421:
+ {
+ if(Debug.debugTokenizer)
+ dump("comment end");//$NON-NLS-1$
+ fEmbeddedHint = UNDEFINED;
+ yybegin(YYINITIAL);
+ return XML_COMMENT_CLOSE;
+ }
+ case 748: break;
+ case 420:
+ {
+ if(Debug.debugTokenizer)
+ dump("CDATA end");//$NON-NLS-1$
+ yybegin(fStateStack.pop());
+ return XML_CDATA_CLOSE;
+ }
+ case 749: break;
+ case 418:
+ {
+ 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 750: break;
+ case 417:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nPEReference");//$NON-NLS-1$
+ return XML_PE_REFERENCE;
+ }
+ case 751: break;
+ case 415:
+ {
+ 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 752: break;
+ case 411:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nEntityRef");//$NON-NLS-1$
+ return XML_ENTITY_REFERENCE;
+ }
+ case 753: break;
+ case 405:
+ case 464:
+ case 474:
+ case 489:
+ case 494:
+ case 499:
+ case 504:
+ case 510:
+ case 516:
+ case 520:
+ case 525:
+ case 530:
+ case 536:
+ {
+ /* 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 754: break;
+ case 404:
+ case 463:
+ case 473:
+ case 488:
+ case 493:
+ case 498:
+ case 503:
+ case 509:
+ case 515:
+ case 519:
+ case 524:
+ case 529:
+ case 535:
+ {
+ /* 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 755: break;
+ case 403:
+ case 462:
+ case 472:
+ case 487:
+ case 492:
+ case 497:
+ case 502:
+ case 508:
+ case 514:
+ case 518:
+ case 523:
+ case 528:
+ case 534:
+ {
+ /* 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 756: break;
+ case 393:
+ {
+ yybegin(ST_JSP_VBL_DQUOTES_END);
+ return JSP_VBL_QUOTED_CONTENT;
+ }
+ case 757: break;
+ case 389:
+ {
+ yybegin(ST_JSP_VBL_SQUOTES_END);
+ return JSP_VBL_QUOTED_CONTENT;
+ }
+ case 758: break;
+ case 387:
+ {
+ fELlevel++;
+ if(fELlevel == 1) {
+ return JSP_VBL_OPEN;
+ }
+ }
+ case 759: break;
+ case 377:
+ {
+ yybegin(ST_JSP_EL_DQUOTES_END);
+ return JSP_EL_QUOTED_CONTENT;
+ }
+ case 760: break;
+ case 373:
+ {
+ yybegin(ST_JSP_EL_SQUOTES_END);
+ return JSP_EL_QUOTED_CONTENT;
+ }
+ case 761: break;
+ case 371:
+ {
+ //System.out.println(JSP_EL_CONTENT+ ":[" + yytext() + "]");
+ return JSP_EL_CONTENT;
+ }
+ case 762: break;
+ case 370:
+ {
+ fELlevel++;
+ if(fELlevel == 1) {
+ return JSP_EL_OPEN;
+ }
+ }
+ case 763: break;
+ case 367:
+ {
+ 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 764: break;
+ case 366:
+ {
+ 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 765: break;
+ case 365:
+ {
+ 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 766: break;
+ case 364:
+ {
+ 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 767: break;
+ case 362:
+ {
+ 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 768: break;
+ case 306:
+ case 320:
+ case 326:
+ {
+ return XML_DOCTYPE_INTERNAL_SUBSET;
+ }
+ case 769: break;
+ case 292:
+ {
+ 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 770: 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 || fStateStack.peek() == ST_XML_ATTRIBUTE_VALUE_DQUOTED || fStateStack.peek() == ST_XML_ATTRIBUTE_VALUE_SQUOTED))) {
+ 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 771: break;
+ case 286:
+ {
+ 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 772: break;
+ case 277:
+ {
+ 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 773: 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_CLOSE;
+ }
+ case 774: break;
+ case 254:
+ {
+ if(Debug.debugTokenizer)
+ dump("XML processing instruction end");//$NON-NLS-1$
+ fEmbeddedHint = UNDEFINED;
+ yybegin(YYINITIAL);
+ return XML_PI_CLOSE;
+ }
+ case 775: break;
+ case 127:
+ {
+ 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 776: break;
+ case 125:
+ {
+ 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 777: 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 778: break;
+ case 118:
+ case 119:
+ case 120:
+ case 287:
+ case 435:
+ case 549:
+ case 590:
+ case 591:
+ case 610:
+ case 611:
+ case 629:
+ case 630:
+ case 643:
+ case 652:
+ case 660:
+ case 662:
+ case 664:
+ case 666:
+ case 669:
+ case 675:
+ case 676:
+ case 677:
+ case 678:
+ case 679:
+ case 685:
+ case 686:
+ case 687:
+ case 688:
+ case 689:
+ case 695:
+ case 696:
+ case 698:
+ case 699:
+ case 705:
+ case 706:
+ case 707:
+ case 708:
+ case 714:
+ case 715:
+ case 716:
+ case 717:
+ case 720:
+ case 721:
+ case 723:
+ {
+ 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 779: 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 780: break;
+ case 109:
+ case 113:
+ case 280:
+ {
+ if(Debug.debugTokenizer)
+ dump("attr value");//$NON-NLS-1$
+ yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_NAME);
+ return XML_TAG_ATTRIBUTE_VALUE;
+ }
+ case 781: break;
+ case 108:
+ {
+ if(Debug.debugTokenizer)
+ dump("equals");//$NON-NLS-1$
+ yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_VALUE);
+ return XML_TAG_ATTRIBUTE_EQUALS;
+ }
+ case 782: break;
+ case 107:
+ {
+ if(Debug.debugTokenizer)
+ dump("attr name");//$NON-NLS-1$
+ yybegin(ST_JSP_DIRECTIVE_EQUALS);
+ return XML_TAG_ATTRIBUTE_NAME;
+ }
+ case 783: break;
+ case 104:
+ {
+ if(Debug.debugTokenizer)
+ dump("JSP directive name");//$NON-NLS-1$
+ yybegin(ST_JSP_DIRECTIVE_NAME_WHITESPACE);
+ return JSP_DIRECTIVE_NAME;
+ }
+ case 784: 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 785: break;
+ case 96:
+ case 98:
+ case 99:
+ case 268:
+ case 269:
+ case 270:
+ case 273:
+ case 274:
+ case 429:
+ case 432:
+ {
+ 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 786: 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 787: 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 788: break;
+ case 92:
+ {
+ if(Debug.debugTokenizer)
+ dump("DHTML processing instruction end");//$NON-NLS-1$
+ fEmbeddedHint = UNDEFINED;
+ yybegin(YYINITIAL);
+ return XML_PI_CLOSE;
+ }
+ case 789: break;
+ case 86:
+ case 88:
+ case 257:
+ {
+ 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 790: 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 791: 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 792: break;
+ case 50:
+ case 211:
+ case 212:
+ case 215:
+ case 225:
+ case 226:
+ case 229:
+ case 230:
+ case 398:
+ case 401:
+ case 513:
+ case 527:
+ case 533:
+ {
+ return JSP_VBL_CONTENT;
+ }
+ case 793: break;
+ case 43:
+ case 189:
+ case 190:
+ case 193:
+ case 203:
+ case 204:
+ case 208:
+ case 209:
+ case 368:
+ case 382:
+ case 385:
+ case 485:
+ case 486:
+ case 501:
+ case 507:
+ {
+ return JSP_EL_CONTENT;
+ }
+ case 794: break;
+ case 35:
+ case 163:
+ case 164:
+ case 350:
+ case 471:
+ case 475:
+ case 564:
+ case 598:
+ case 618:
+ case 635:
+ case 645:
+ {
+ if(Debug.debugTokenizer)
+ dump("attlist contentspec");//$NON-NLS-1$
+ return XML_ATTLIST_DECL_CONTENT;
+ }
+ case 795: break;
+ case 33:
+ case 156:
+ case 157:
+ case 338:
+ case 461:
+ case 465:
+ case 561:
+ case 597:
+ case 617:
+ case 634:
+ case 644:
+ {
+ if(Debug.debugTokenizer)
+ dump("elementdecl contentspec");//$NON-NLS-1$
+ return XML_ELEMENT_DECL_CONTENT;
+ }
+ case 796: 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);
+ char c = yy_buffer[yy_markedPos - 1];
+ if (fStateStack.peek()==ST_XML_ATTRIBUTE_VALUE_DQUOTED && c == '\"') {
+ return isJspTag() ? JSP_TAG_ATTRIBUTE_VALUE_DQUOTE : XML_TAG_ATTRIBUTE_VALUE_DQUOTE;
+ }
+ if (fStateStack.peek()==ST_XML_ATTRIBUTE_VALUE_SQUOTED && c == '\'') {
+ return isJspTag() ? JSP_TAG_ATTRIBUTE_VALUE_SQUOTE : XML_TAG_ATTRIBUTE_VALUE_SQUOTE;
+ }
+ yypushback(yylength()-1);
+ return XML_TAG_ATTRIBUTE_VALUE;
+ }
+ yybegin(YYINITIAL);
+ return XML_CONTENT;
+ }
+ case 797: break;
+ case 18:
+ case 106:
+ {
+ if(Debug.debugTokenizer)
+ dump("white space");//$NON-NLS-1$
+ yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_NAME);
+ return WHITE_SPACE;
+ }
+ case 798: 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 180:
+ case 185:
+ {
+ if(Debug.debugTokenizer)
+ dump("white space");//$NON-NLS-1$
+ return WHITE_SPACE;
+ }
+ case 799: break;
+ case 0:
+ case 57:
+ case 60:
+ case 61:
+ case 63:
+ case 237:
+ case 239:
+ case 242:
+ case 245:
+ case 408:
+ case 409:
+ case 410:
+ case 414:
+ case 416:
+ case 419:
+ case 542:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nXML content");//$NON-NLS-1$
+ return XML_CONTENT;
+ }
+ case 800: break;
+ case 58:
+ case 103:
+ case 115:
+ case 121:
+ case 133:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nstart tag open");//$NON-NLS-1$
+ if (!fStateStack.empty() && fStateStack.peek()== ST_XML_COMMENT){
+ fStateStack.pop();
+ fEmbeddedHint = XML_COMMENT_TEXT;
+ yybegin(ST_XML_TAG_NAME);
+ String tagName = "";
+ assembleEmbeddedTagSequence(XML_TAG_OPEN, tagName); // ?
+ return PROXY_CONTEXT;
+ }
+ fEmbeddedHint = XML_TAG_NAME;
+ fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
+ yybegin(ST_XML_TAG_NAME);
+ return XML_TAG_OPEN;
+ }
+ case 801: break;
+ case 59:
+ 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 123:
+ case 124:
+ case 128:
+ case 135:
+ case 136:
+ case 137:
+ case 138:
+ case 140:
+ case 141:
+ case 143:
+ case 144:
+ case 145:
+ case 148:
+ case 149:
+ case 150:
+ case 153:
+ case 154:
+ case 155:
+ case 160:
+ case 161:
+ case 162:
+ case 170:
+ case 172:
+ case 173:
+ case 195:
+ case 196:
+ case 199:
+ case 200:
+ case 206:
+ case 210:
+ case 217:
+ case 218:
+ case 221:
+ case 222:
+ case 227:
+ case 231:
+ {
+ if (Debug.debugTokenizer)
+ System.out.println("!!!unexpected!!!: \"" + yytext() + "\":" + //$NON-NLS-2$//$NON-NLS-1$
+ yychar + "-" + (yychar + yylength()));//$NON-NLS-1$
+ return UNDEFINED;
+ }
+ case 802: break;
+ case 62:
+ case 243:
+ {
+ if(Debug.debugTokenizer)
+ dump("non-reference %");//$NON-NLS-1$
+ return XML_CONTENT;
+ }
+ case 803: 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 804: break;
+ case 69:
+ case 198:
+ case 202:
+ case 220:
+ case 224:
+ {
+ if(Debug.debugTokenizer)
+ dump("LINE FEED");//$NON-NLS-1$
+ return WHITE_SPACE;
+ }
+ case 805: break;
+ case 70:
+ case 71:
+ {
+ if(Debug.debugTokenizer)
+ dump("comment content");//$NON-NLS-1$
+ return scanXMLCommentText();
+ }
+ case 806: break;
+ case 75:
+ case 76:
+ case 77:
+ case 78:
+ case 250:
+ case 251:
+ case 252:
+ case 424:
+ case 545:
+ case 546:
+ case 588:
+ case 589:
+ case 608:
+ case 628:
+ case 641:
+ case 651:
+ case 659:
+ case 661:
+ case 663:
+ case 665:
+ {
+ if(Debug.debugTokenizer)
+ dump("processing instruction target");//$NON-NLS-1$
+ fEmbeddedHint = XML_CONTENT;
+ yybegin(ST_PI_WS);
+ return XML_TAG_NAME;
+ }
+ case 807: break;
+ case 79:
+ {
+ yybegin(ST_PI_CONTENT);
+ return WHITE_SPACE;
+ }
+ case 808: 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 809: break;
+ case 129:
+ case 174:
+ {
+ 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);
+ if (fEmbeddedContainer.getLastRegion().getType() == UNDEFINED) {
+ fProxyUnknownRegion = fRegionFactory.createToken(XML_TAG_ATTRIBUTE_VALUE, fEmbeddedContainer.getStart(), fEmbeddedContainer.getTextLength(), fEmbeddedContainer.getLength());
+ return PROXY_UNKNOWN_CONTEXT;
+ }
+ return PROXY_CONTEXT;
+ }
+ case 810: break;
+ case 130:
+ case 175:
+ {
+ 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);
+ if (fEmbeddedContainer.getLastRegion().getType() == UNDEFINED) {
+ fProxyUnknownRegion = fRegionFactory.createToken(XML_TAG_ATTRIBUTE_VALUE, fEmbeddedContainer.getStart(), fEmbeddedContainer.getTextLength(), fEmbeddedContainer.getLength());
+ return PROXY_UNKNOWN_CONTEXT;
+ }
+ return PROXY_CONTEXT;
+ }
+ case 811: break;
+ case 134:
+ {
+ 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 812: break;
+ case 139:
+ {
+ if(Debug.debugTokenizer)
+ dump("doctype type");//$NON-NLS-1$
+ yybegin(ST_XML_DOCTYPE_EXTERNAL_ID);
+ return XML_DOCTYPE_NAME;
+ }
+ case 813: break;
+ case 142:
+ case 146:
+ case 311:
+ case 316:
+ case 453:
+ {
+ 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 814: break;
+ case 147:
+ case 151:
+ case 323:
+ {
+ 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 815: break;
+ case 152:
+ case 329:
+ case 334:
+ case 458:
+ {
+ 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 816: break;
+ case 158:
+ {
+ 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 817: break;
+ case 159:
+ case 341:
+ case 346:
+ case 468:
+ {
+ 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 818: break;
+ case 165:
+ {
+ 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 819: break;
+ case 168:
+ case 169:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nJSP comment text");//$NON-NLS-1$
+ return scanJSPCommentText();
+ }
+ case 820: break;
+ case 178:
+ case 182:
+ case 183:
+ case 184:
+ case 187:
+ case 188:
+ case 363:
+ {
+ return XML_TAG_ATTRIBUTE_VALUE;
+ }
+ case 821: break;
+ case 179:
+ {
+ 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 822: break;
+ case 181:
+ {
+ return isJspTag() ? JSP_TAG_ATTRIBUTE_VALUE_SQUOTE : XML_TAG_ATTRIBUTE_VALUE_SQUOTE;
+ }
+ case 823: break;
+ case 186:
+ {
+ return isJspTag()? JSP_TAG_ATTRIBUTE_VALUE_DQUOTE : XML_TAG_ATTRIBUTE_VALUE_DQUOTE;
+ }
+ case 824: break;
+ case 191:
+ {
+ yybegin(ST_JSP_EL_DQUOTES);
+ return JSP_EL_DQUOTE;
+ }
+ case 825: break;
+ case 192:
+ {
+ yybegin(ST_JSP_EL_SQUOTES);
+ return JSP_EL_SQUOTE;
+ }
+ case 826: break;
+ case 194:
+ {
+ fELlevel--;
+ if(fELlevel == 0) {
+ yybegin(YYINITIAL);
+ return JSP_EL_CLOSE;
+ }
+ return JSP_EL_CONTENT;
+ }
+ case 827: break;
+ case 197:
+ {
+ yybegin(ST_JSP_EL);
+ return JSP_EL_SQUOTE;
+ }
+ case 828: break;
+ case 201:
+ {
+ yybegin(ST_JSP_EL);
+ return JSP_EL_DQUOTE;
+ }
+ case 829: break;
+ case 205:
+ {
+ return isJspTag() ? JSP_TAG_ATTRIBUTE_VALUE_DQUOTE: XML_TAG_ATTRIBUTE_VALUE_DQUOTE;
+ }
+ case 830: break;
+ case 207:
+ {
+ return JSP_EL_CLOSE;
+ }
+ case 831: break;
+ case 213:
+ {
+ yybegin(ST_JSP_VBL_DQUOTES);
+ return JSP_VBL_DQUOTE;
+ }
+ case 832: break;
+ case 214:
+ {
+ yybegin(ST_JSP_VBL_SQUOTES);
+ return JSP_VBL_SQUOTE;
+ }
+ case 833: break;
+ case 216:
+ {
+ fELlevel--;
+ if(fELlevel == 0) {
+ yybegin(YYINITIAL);
+ return JSP_VBL_CLOSE;
+ }
+ return JSP_VBL_CONTENT;
+ }
+ case 834: break;
+ case 219:
+ {
+ yybegin(ST_JSP_VBL);
+ return JSP_VBL_SQUOTE;
+ }
+ case 835: break;
+ case 223:
+ {
+ yybegin(ST_JSP_VBL);
+ return JSP_VBL_DQUOTE;
+ }
+ case 836: break;
+ case 228:
+ {
+ return JSP_VBL_CLOSE;
+ }
+ case 837: break;
+ case 232:
+ {
+ 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 838: break;
+ case 233:
+ {
+ if(Debug.debugTokenizer)
+ dump("\nprocessing instruction start");//$NON-NLS-1$
+ yybegin(ST_PI);
+ return XML_PI_OPEN;
+ }
+ case 839: break;
+ case 234:
+ case 337:
+ case 349:
+ case 369:
+ case 374:
+ case 378:
+ case 381:
+ case 384:
+ case 386:
+ case 390:
+ case 394:
+ case 397:
+ case 400:
+ {
+ /* 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 840: break;
+ case 235:
+ {
+ fStateStack.push(yystate());
+ if(Debug.debugTokenizer)
+ dump("\ndeclaration start");//$NON-NLS-1$
+ yybegin(ST_XML_DECLARATION);
+ return XML_DECLARATION_OPEN;
+ }
+ case 841: break;
+ case 249:
+ {
+ if(Debug.debugTokenizer)
+ dump("processing instruction end");//$NON-NLS-1$
+ fEmbeddedHint = UNDEFINED;
+ yybegin(YYINITIAL);
+ return XML_PI_CLOSE;
+ }
+ case 842: break;
+ case 253:
+ {
+ // ended with nothing inside
+ fEmbeddedHint = UNDEFINED;
+ yybegin(YYINITIAL);
+ return XML_PI_CLOSE;
+ }
+ case 843: break;
+ case 166:
+ case 167:
+ {
+ return doBlockTagScan();
+ }
+ case 844: break;
+ default:
+ if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
+ yy_atEOF = true;
+ yy_do_eof();
+ return null;
+ }
+ else {
+ yy_ScanError(YY_NO_MATCH);
+ }
+ }
+ }
+ }
+
+
+}

Back to the top