0001: /* The following code was generated by JFlex 1.3.5 on 13-9-06 0:53 */
0002:
0003: package vqwiki.lex;
0004:
0005: /*
0006: Very Quick Wiki - WikiWikiWeb clone
0007: Copyright (C) 2001-2003 Gareth Cronin
0008:
0009: This program is free software; you can redistribute it and/or modify
0010: it under the terms of the GNU Lesser General Public License as published by
0011: the Free Software Foundation; either version 2 of the License, or
0012: (at your option) any later version.
0013:
0014: This program is distributed in the hope that it will be useful,
0015: but WITHOUT ANY WARRANTY; without even the implied warranty of
0016: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0017: GNU General Public License for more details.
0018:
0019: You should have received a copy of the GNU Lesser General Public License
0020: along with this program (gpl.txt); if not, write to the Free Software
0021: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
0022: */
0023:
0024: import java.io.*;
0025: import org.apache.log4j.Logger;
0026: import vqwiki.lex.Lexer;
0027: import vqwiki.Environment;
0028: import vqwiki.WikiBase;
0029: import vqwiki.servlets.WikiServlet;
0030: import vqwiki.utils.Utilities;
0031: import vqwiki.utils.JSPUtils;
0032:
0033: /**
0034: * This class is a scanner generated by
0035: * <a href="http://www.jflex.de/">JFlex</a> 1.3.5
0036: * on 13-9-06 0:53 from the specification file
0037: * <tt>file:/C:/SourceForge/VQWiki_2X/vqwiki-classic/jflex/links.jflex</tt>
0038: */
0039: public class LinkLex implements vqwiki.lex.Lexer {
0040:
0041: /** This character denotes the end of file */
0042: final public static int YYEOF = -1;
0043:
0044: /** initial size of the lookahead buffer */
0045: final private static int YY_BUFFERSIZE = 16384;
0046:
0047: /** lexical states */
0048: final public static int YYINITIAL = 0;
0049: final public static int EXTERNAL = 4;
0050: final public static int PRE = 3;
0051: final public static int OFF = 2;
0052: final public static int NORMAL = 1;
0053:
0054: /**
0055: * Translates characters to character classes
0056: */
0057: final private static String yycmap_packed = "\11\0\1\3\1\56\2\0\1\3\22\0\1\1\1\0\1\55\13\0"
0058: + "\1\31\1\53\12\46\1\30\1\0\1\50\1\0\1\27\2\0\1\51"
0059: + "\1\44\2\51\1\42\1\36\1\34\1\51\1\35\1\37\2\51\1\45"
0060: + "\1\41\1\51\1\40\12\51\1\10\1\57\1\4\1\0\1\47\1\2"
0061: + "\1\17\1\43\1\54\1\52\1\24\1\15\1\32\1\12\1\20\1\33"
0062: + "\1\52\1\21\1\16\1\23\1\22\1\14\1\52\1\60\1\26\1\13"
0063: + "\2\52\1\25\3\52\1\0\1\11\55\0\1\6\12\0\1\6\4\0"
0064: + "\1\6\5\0\27\5\1\0\7\5\30\6\1\0\10\6\1\5\1\6"
0065: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0066: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0067: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0068: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0069: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0070: + "\1\5\1\6\1\5\2\6\1\5\1\6\1\5\1\6\1\5\1\6"
0071: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\2\6"
0072: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0073: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0074: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0075: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0076: + "\1\5\1\6\1\5\1\6\1\5\1\6\2\5\1\6\1\5\1\6"
0077: + "\1\5\3\6\2\5\1\6\1\5\1\6\2\5\1\6\3\5\2\6"
0078: + "\4\5\1\6\2\5\1\6\3\5\3\6\2\5\1\6\2\5\1\6"
0079: + "\1\5\1\6\1\5\1\6\2\5\1\6\1\5\2\6\1\5\1\6"
0080: + "\2\5\1\6\3\5\1\6\1\5\1\6\2\5\2\6\1\7\1\5"
0081: + "\3\6\4\7\1\5\1\7\1\6\1\5\1\7\1\6\1\5\1\7"
0082: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0083: + "\1\6\1\5\1\6\1\5\1\6\1\5\2\6\1\5\1\6\1\5"
0084: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0085: + "\1\6\1\5\1\6\1\5\2\6\1\5\1\7\1\6\1\5\1\6"
0086: + "\3\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0087: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0088: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0089: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0090: + "\2\0\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0091: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\34\0"
0092: + "\136\6\2\0\11\7\2\0\7\7\16\0\2\7\16\0\5\7\11\0"
0093: + "\1\7\213\0\1\7\13\0\1\5\1\0\3\5\1\0\1\5\1\0"
0094: + "\2\5\1\6\21\5\1\0\11\5\43\6\1\0\2\6\3\5\3\6"
0095: + "\2\0\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0096: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0097: + "\1\6\1\5\5\6\14\0\60\5\60\6\1\5\1\6\1\5\1\6"
0098: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0099: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0100: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0101: + "\12\0\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0102: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0103: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0104: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0105: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0106: + "\1\6\1\5\1\6\2\5\1\6\1\5\1\6\2\0\1\5\1\6"
0107: + "\2\0\1\5\1\6\3\0\1\5\1\6\1\5\1\6\1\5\1\6"
0108: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0109: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0110: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0111: + "\1\5\1\6\2\0\1\5\1\6\67\0\46\5\2\0\1\7\7\0"
0112: + "\47\6\110\0\33\7\5\0\3\7\56\0\32\7\5\0\13\7\25\0"
0113: + "\12\46\7\0\143\7\1\0\1\7\17\0\2\7\11\0\12\46\3\7"
0114: + "\23\0\1\7\1\0\33\7\123\0\46\7\u015f\0\65\7\3\0\1\7"
0115: + "\22\0\1\7\7\0\12\7\4\0\12\46\25\0\10\7\2\0\2\7"
0116: + "\2\0\26\7\1\0\7\7\1\0\1\7\3\0\4\7\42\0\2\7"
0117: + "\1\0\3\7\4\0\12\46\2\7\23\0\6\7\4\0\2\7\2\0"
0118: + "\26\7\1\0\7\7\1\0\2\7\1\0\2\7\1\0\2\7\37\0"
0119: + "\4\7\1\0\1\7\7\0\12\46\2\0\3\7\20\0\7\7\1\0"
0120: + "\1\7\1\0\3\7\1\0\26\7\1\0\7\7\1\0\2\7\1\0"
0121: + "\5\7\3\0\1\7\22\0\1\7\17\0\1\7\5\0\12\46\25\0"
0122: + "\10\7\2\0\2\7\2\0\26\7\1\0\7\7\1\0\2\7\2\0"
0123: + "\4\7\3\0\1\7\36\0\2\7\1\0\3\7\4\0\12\46\25\0"
0124: + "\6\7\3\0\3\7\1\0\4\7\3\0\2\7\1\0\1\7\1\0"
0125: + "\2\7\3\0\2\7\3\0\3\7\3\0\10\7\1\0\3\7\55\0"
0126: + "\11\46\25\0\10\7\1\0\3\7\1\0\27\7\1\0\12\7\1\0"
0127: + "\5\7\46\0\2\7\4\0\12\46\25\0\10\7\1\0\3\7\1\0"
0128: + "\27\7\1\0\12\7\1\0\5\7\44\0\1\7\1\0\2\7\4\0"
0129: + "\12\46\25\0\10\7\1\0\3\7\1\0\27\7\1\0\20\7\46\0"
0130: + "\2\7\4\0\12\46\25\0\22\7\3\0\30\7\1\0\11\7\1\0"
0131: + "\1\7\2\0\7\7\72\0\60\7\1\0\2\7\14\0\7\7\11\0"
0132: + "\12\46\47\0\2\7\1\0\1\7\2\0\2\7\1\0\1\7\2\0"
0133: + "\1\7\6\0\4\7\1\0\7\7\1\0\3\7\1\0\1\7\1\0"
0134: + "\1\7\2\0\2\7\1\0\4\7\1\0\2\7\11\0\1\7\2\0"
0135: + "\5\7\1\0\1\7\11\0\12\46\2\0\2\7\42\0\1\7\37\0"
0136: + "\12\46\26\0\10\7\1\0\42\7\35\0\4\7\164\0\42\7\1\0"
0137: + "\5\7\1\0\2\7\25\0\12\46\6\0\6\7\112\0\46\5\12\0"
0138: + "\47\7\11\0\132\7\5\0\104\7\5\0\122\7\6\0\7\7\1\0"
0139: + "\77\7\1\0\1\7\1\0\4\7\2\0\7\7\1\0\1\7\1\0"
0140: + "\4\7\2\0\47\7\1\0\1\7\1\0\4\7\2\0\37\7\1\0"
0141: + "\1\7\1\0\4\7\2\0\7\7\1\0\1\7\1\0\4\7\2\0"
0142: + "\7\7\1\0\7\7\1\0\27\7\1\0\37\7\1\0\1\7\1\0"
0143: + "\4\7\2\0\7\7\1\0\47\7\1\0\23\7\16\0\11\46\56\0"
0144: + "\125\7\14\0\u026c\7\2\0\10\7\12\0\32\7\5\0\113\7\225\0"
0145: + "\64\7\54\0\12\46\46\0\12\46\6\0\130\7\10\0\51\7\u0557\0"
0146: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0147: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0148: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0149: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0150: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0151: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0152: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0153: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0154: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0155: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0156: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0157: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0158: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0159: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6"
0160: + "\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\7\6"
0161: + "\4\0\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0162: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0163: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0164: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0165: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0166: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0167: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0168: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0169: + "\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5\1\6\1\5"
0170: + "\1\6\6\0\10\6\10\5\6\6\2\0\6\5\2\0\10\6\10\5"
0171: + "\10\6\10\5\6\6\2\0\6\5\2\0\10\6\1\0\1\5\1\0"
0172: + "\1\5\1\0\1\5\1\0\1\5\10\6\10\5\16\6\2\0\10\6"
0173: + "\10\7\10\6\10\7\10\6\10\7\5\6\1\0\2\6\4\5\1\7"
0174: + "\1\0\1\6\3\0\3\6\1\0\2\6\4\5\1\7\3\0\4\6"
0175: + "\2\0\2\6\4\5\4\0\10\6\5\5\5\0\3\6\1\0\2\6"
0176: + "\4\5\1\7\202\0\1\6\202\0\1\5\4\0\1\5\2\0\1\6"
0177: + "\3\5\2\6\3\5\1\6\1\0\1\5\3\0\5\5\6\0\1\5"
0178: + "\1\0\1\5\1\0\1\5\1\0\4\5\1\0\1\6\2\5\1\0"
0179: + "\1\5\1\6\4\7\1\6\u0ecb\0\2\7\52\0\5\7\13\0\124\7"
0180: + "\10\0\2\7\2\0\132\7\1\0\3\7\6\0\50\7\4\0\136\7"
0181: + "\21\0\30\7\u0248\0\u19b6\7\112\0\u51a6\7\132\0\u048d\7\u0773\0\u2ba4\7"
0182: + "\u215c\0\u012e\7\322\0\7\6\14\0\5\6\5\0\1\7\1\0\12\7"
0183: + "\1\0\15\7\1\0\5\7\1\0\1\7\1\0\2\7\1\0\2\7"
0184: + "\1\0\154\7\41\0\u016b\7\22\0\100\7\2\0\66\7\50\0\14\7"
0185: + "\164\0\3\7\1\0\1\7\1\0\207\7\23\0\12\46\7\0\32\5"
0186: + "\6\0\32\6\13\0\131\7\3\0\6\7\2\0\6\7\2\0\6\7"
0187: + "\2\0\3\7\43\0";
0188:
0189: /**
0190: * Translates characters to character classes
0191: */
0192: final private static char[] yycmap = yy_unpack_cmap(yycmap_packed);
0193:
0194: /**
0195: * Translates a state to a row index in the transition table
0196: */
0197: final private static int yy_rowMap[] = { 0, 49, 98, 147, 196, 0, 0,
0198: 245, 294, 343, 392, 441, 490, 539, 588, 637, 686, 735, 784,
0199: 833, 882, 931, 980, 1029, 1078, 294, 1127, 343, 1176, 1225,
0200: 1274, 1323, 1372, 1421, 1470, 1519, 1568, 1617, 1666, 1715,
0201: 1764, 1813, 1862, 1911, 0, 1960, 2009, 0, 2058, 2107, 2156,
0202: 2205, 1176, 2254, 2303, 2352, 2401, 2450, 2499, 2548, 2597,
0203: 2646, 2695, 2744, 2793, 2842, 2891, 2940, 2989, 3038, 0,
0204: 3087, 3136, 2156, 2205, 3185, 3234, 3283, 3332, 3381, 3430,
0205: 3479, 3528, 3577, 3626, 3675, 3724, 3773, 3822, 3871, 3920,
0206: 3969, 4018, 0, 4067, 4116, 4165, 4214, 4263, 4312, 0, 4361,
0207: 4410, 4459, 4508, 0, 4557, 4606, 4067, 4655, 4704, 4753,
0208: 4802, 4851, 4900, 4949, 0, 0, 4998, 4802, 5047, 5096, 5145,
0209: 5194, 5243, 5292, 5341, 5390, 5439, 5488, 5537, 4998, 5586,
0210: 5635, 5684, 5733, 5782, 5831, 5880, 5929, 5978, 6027, 6076,
0211: 0, 4410, 6125, 6174, 6223, 6272, 6321, 6370, 6419, 6468,
0212: 6517, 6566, 6615, 6664, 6713, 6174, 6762, 6223, 6811, 6860,
0213: 6909, 6958, 7007, 7056, 7105, 7154, 7203, 7252, 7301, 7350,
0214: 7399, 7448, 7497, 7546, 7595, 7644, 7693, 7742, 7791, 7840,
0215: 7889, 7938, 7987, 8036, 8085, 8134, 8183, 8232, 8281, 8330,
0216: 8379, 8428, 8477, 8526, 8575, 8624, 8673, 8722, 6027, 8771,
0217: 8820, 8869, 8918, 8967, 9016, 9065, 9114, 9163, 9212, 9261,
0218: 9310, 9359, 9408, 9457, 9506, 6174, 9555, 9604, 6174, 6223 };
0219:
0220: /**
0221: * The packed transition table of the DFA (part 0)
0222: */
0223: final private static String yy_packed0 = "\61\0\1\6\1\7\1\10\1\7\1\6\1\11\2\12"
0224: + "\1\13\1\6\1\14\1\15\1\12\1\16\1\17\1\20"
0225: + "\3\12\1\21\3\12\3\6\2\12\7\11\1\12\2\11"
0226: + "\1\12\1\22\1\23\1\11\1\12\1\6\1\12\1\6"
0227: + "\1\7\1\24\1\12\1\6\1\7\1\6\1\7\43\6"
0228: + "\1\25\6\6\1\7\3\6\1\7\1\6\1\7\4\6"
0229: + "\1\26\37\6\1\27\5\6\1\7\3\6\1\7\1\6"
0230: + "\1\7\4\6\1\30\45\6\1\7\2\6\2\31\2\0"
0231: + "\52\31\1\0\2\31\5\0\1\32\1\33\1\34\2\0"
0232: + "\15\33\1\0\1\35\1\0\2\33\7\32\1\33\2\32"
0233: + "\1\34\2\0\1\32\1\33\1\0\1\33\3\0\1\33"
0234: + "\5\0\3\34\2\0\15\34\1\0\1\35\1\0\15\34"
0235: + "\2\0\2\34\1\0\1\34\3\0\1\34\5\0\3\36"
0236: + "\1\37\1\0\1\40\1\41\1\36\1\42\1\43\4\36"
0237: + "\1\44\3\36\3\0\15\36\1\0\1\45\2\36\1\0"
0238: + "\1\36\3\0\1\36\5\0\3\34\2\0\1\34\1\46"
0239: + "\13\34\1\0\1\35\1\0\15\34\2\0\2\34\1\0"
0240: + "\1\34\3\0\1\34\5\0\3\34\2\0\12\34\1\47"
0241: + "\2\34\1\0\1\35\1\0\15\34\2\0\2\34\1\0"
0242: + "\1\34\3\0\1\34\5\0\3\34\2\0\1\34\1\50"
0243: + "\4\34\1\51\6\34\1\0\1\35\1\0\15\34\2\0"
0244: + "\2\34\1\0\1\34\3\0\1\34\5\0\3\34\2\0"
0245: + "\5\34\1\52\7\34\1\0\1\35\1\0\15\34\2\0"
0246: + "\2\34\1\0\1\34\3\0\1\34\5\0\3\34\2\0"
0247: + "\1\34\1\53\13\34\1\0\1\35\1\0\15\34\2\0"
0248: + "\2\34\1\0\1\34\3\0\1\34\5\0\3\34\2\0"
0249: + "\12\34\1\54\2\34\1\0\1\35\1\0\15\34\2\0"
0250: + "\2\34\1\0\1\34\3\0\1\34\47\0\1\55\25\0"
0251: + "\1\56\113\0\1\57\60\0\1\60\61\0\1\45\63\0"
0252: + "\1\61\55\0\1\62\10\0\2\31\1\63\1\0\52\31"
0253: + "\1\0\2\31\5\0\1\64\1\33\1\34\2\0\15\33"
0254: + "\1\0\1\35\1\0\2\33\7\64\1\33\2\64\1\34"
0255: + "\2\0\1\64\1\33\1\0\1\33\3\0\1\33\1\65"
0256: + "\1\0\1\65\1\0\23\65\1\0\20\65\1\0\5\65"
0257: + "\1\0\2\65\5\0\3\36\2\0\15\36\1\0\1\66"
0258: + "\1\0\15\36\2\0\2\36\1\0\1\36\3\0\1\36"
0259: + "\3\67\2\0\51\67\1\0\2\67\5\0\3\36\2\0"
0260: + "\1\36\1\70\13\36\1\0\1\66\1\0\15\36\2\0"
0261: + "\2\36\1\0\1\36\3\0\1\36\5\0\3\36\2\0"
0262: + "\12\36\1\71\2\36\1\0\1\66\1\0\15\36\2\0"
0263: + "\2\36\1\0\1\36\3\0\1\36\5\0\3\36\2\0"
0264: + "\1\36\1\72\4\36\1\73\6\36\1\0\1\66\1\0"
0265: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\5\0"
0266: + "\3\36\2\0\5\36\1\74\7\36\1\0\1\66\1\0"
0267: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\5\0"
0268: + "\3\36\2\0\12\36\1\75\2\36\1\0\1\66\1\0"
0269: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\12\0"
0270: + "\15\76\3\0\14\76\3\0\2\76\1\0\1\76\3\0"
0271: + "\1\76\5\0\3\34\2\0\1\34\1\77\13\34\1\0"
0272: + "\1\35\1\0\15\34\2\0\2\34\1\0\1\34\3\0"
0273: + "\1\34\5\0\3\34\2\0\7\34\1\100\5\34\1\0"
0274: + "\1\35\1\0\15\34\2\0\2\34\1\0\1\34\3\0"
0275: + "\1\34\5\0\3\34\2\0\2\34\1\101\12\34\1\0"
0276: + "\1\35\1\0\15\34\2\0\2\34\1\0\1\34\3\0"
0277: + "\1\34\5\0\3\34\2\0\7\34\1\102\5\34\1\0"
0278: + "\1\35\1\0\15\34\2\0\2\34\1\0\1\34\3\0"
0279: + "\1\34\5\0\3\34\2\0\6\34\1\103\6\34\1\0"
0280: + "\1\35\1\0\15\34\2\0\2\34\1\0\1\34\3\0"
0281: + "\1\34\5\0\3\34\2\0\1\34\1\104\13\34\1\0"
0282: + "\1\35\1\0\15\34\2\0\2\34\1\0\1\34\3\0"
0283: + "\1\34\5\0\3\34\2\0\13\34\1\105\1\34\1\0"
0284: + "\1\35\1\0\15\34\2\0\2\34\1\0\1\34\3\0"
0285: + "\1\34\60\0\1\106\47\0\1\107\25\0\1\110\117\0"
0286: + "\1\111\12\0\3\112\2\0\15\112\3\0\14\112\3\0"
0287: + "\2\112\1\0\1\112\3\0\1\112\5\0\1\64\1\113"
0288: + "\1\34\2\0\15\113\1\0\1\35\1\0\2\113\7\64"
0289: + "\1\113\2\64\1\34\2\0\1\64\1\113\1\0\1\113"
0290: + "\3\0\1\113\2\114\3\0\51\114\1\0\2\114\3\67"
0291: + "\1\0\1\115\4\67\1\116\44\67\1\0\2\67\5\0"
0292: + "\3\36\2\0\1\36\1\117\13\36\1\0\1\66\1\0"
0293: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\5\0"
0294: + "\3\36\2\0\7\36\1\120\5\36\1\0\1\66\1\0"
0295: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\5\0"
0296: + "\3\36\2\0\2\36\1\121\12\36\1\0\1\66\1\0"
0297: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\5\0"
0298: + "\3\36\2\0\7\36\1\122\5\36\1\0\1\66\1\0"
0299: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\5\0"
0300: + "\3\36\2\0\6\36\1\123\6\36\1\0\1\66\1\0"
0301: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\5\0"
0302: + "\3\36\2\0\13\36\1\124\1\36\1\0\1\66\1\0"
0303: + "\15\36\2\0\2\36\1\0\1\36\3\0\1\36\12\0"
0304: + "\15\76\1\125\2\0\14\76\3\0\2\76\1\0\1\76"
0305: + "\3\0\1\76\5\0\3\34\2\0\2\34\1\126\12\34"
0306: + "\1\0\1\35\1\0\15\34\2\0\2\34\1\0\1\34"
0307: + "\3\0\1\34\5\0\3\34\2\0\11\34\1\127\3\34"
0308: + "\1\0\1\35\1\0\15\34\2\0\2\34\1\0\1\34"
0309: + "\3\0\1\34\5\0\3\34\2\0\15\34\1\0\1\130"
0310: + "\1\0\15\34\2\0\2\34\1\0\1\34\3\0\1\34"
0311: + "\5\0\3\34\2\0\12\34\1\101\2\34\1\0\1\35"
0312: + "\1\0\15\34\2\0\2\34\1\0\1\34\3\0\1\34"
0313: + "\5\0\3\34\2\0\7\34\1\131\5\34\1\0\1\35"
0314: + "\1\0\15\34\2\0\2\34\1\0\1\34\3\0\1\34"
0315: + "\5\0\3\34\2\0\5\34\1\132\7\34\1\0\1\35"
0316: + "\1\0\15\34\2\0\2\34\1\0\1\34\3\0\1\34"
0317: + "\5\0\3\34\2\0\14\34\1\101\1\0\1\35\1\0"
0318: + "\15\34\2\0\2\34\1\0\1\34\3\0\1\34\24\0"
0319: + "\1\133\114\0\1\134\12\0\15\135\3\0\14\135\3\0"
0320: + "\2\135\1\0\1\135\3\0\1\135\2\114\2\0\1\136"
0321: + "\51\114\1\0\2\114\4\0\1\137\54\0\3\140\1\0"
0322: + "\1\115\51\140\1\0\2\140\5\0\3\36\2\0\2\36"
0323: + "\1\141\12\36\1\0\1\66\1\0\15\36\2\0\2\36"
0324: + "\1\0\1\36\3\0\1\36\5\0\3\36\2\0\11\36"
0325: + "\1\142\3\36\1\0\1\66\1\0\15\36\2\0\2\36"
0326: + "\1\0\1\36\3\0\1\36\5\0\3\36\2\0\15\36"
0327: + "\1\0\1\143\1\0\15\36\2\0\2\36\1\0\1\36"
0328: + "\3\0\1\36\5\0\3\36\2\0\12\36\1\121\2\36"
0329: + "\1\0\1\66\1\0\15\36\2\0\2\36\1\0\1\36"
0330: + "\3\0\1\36\5\0\3\36\2\0\7\36\1\144\5\36"
0331: + "\1\0\1\66\1\0\15\36\2\0\2\36\1\0\1\36"
0332: + "\3\0\1\36\5\0\3\36\2\0\14\36\1\121\1\0"
0333: + "\1\66\1\0\15\36\2\0\2\36\1\0\1\36\3\0"
0334: + "\1\36\4\0\1\145\61\0\3\34\2\0\14\34\1\101"
0335: + "\1\0\1\130\1\0\15\34\2\0\2\34\1\0\1\34"
0336: + "\3\0\1\34\5\0\3\34\2\0\12\34\1\146\2\34"
0337: + "\1\0\1\35\1\0\15\34\2\0\2\34\1\0\1\34"
0338: + "\3\0\1\34\1\147\1\0\1\147\1\0\23\147\1\0"
0339: + "\20\147\1\0\5\147\1\0\2\147\5\0\3\34\2\0"
0340: + "\1\34\1\150\13\34\1\0\1\35\1\0\15\34\2\0"
0341: + "\2\34\1\0\1\34\3\0\1\34\5\0\3\34\2\0"
0342: + "\15\34\1\0\1\35\1\0\15\34\2\0\2\34\1\0"
0343: + "\1\151\3\0\1\34\27\0\1\152\55\0\1\153\46\0"
0344: + "\15\135\1\154\2\0\14\135\3\0\2\135\1\0\1\135"
0345: + "\3\0\1\135\5\0\3\155\2\0\15\155\3\0\14\155"
0346: + "\3\0\2\155\1\0\1\155\3\0\1\155\3\140\1\0"
0347: + "\1\156\51\140\1\0\2\140\5\0\3\36\2\0\14\36"
0348: + "\1\121\1\0\1\143\1\0\15\36\2\0\2\36\1\0"
0349: + "\1\36\3\0\1\36\5\0\3\36\2\0\12\36\1\157"
0350: + "\2\36\1\0\1\66\1\0\15\36\2\0\2\36\1\0"
0351: + "\1\36\3\0\1\36\2\160\1\161\1\0\1\161\4\160"
0352: + "\1\114\15\160\1\114\20\160\1\114\5\160\1\0\2\160"
0353: + "\5\0\3\36\2\0\1\36\1\162\13\36\1\0\1\66"
0354: + "\1\0\15\36\2\0\2\36\1\0\1\36\3\0\1\36"
0355: + "\5\0\3\34\2\0\1\34\1\101\13\34\1\0\1\35"
0356: + "\1\0\15\34\2\0\2\34\1\0\1\34\3\0\1\34"
0357: + "\1\147\1\0\1\147\1\0\23\147\1\0\1\147\1\163"
0358: + "\16\147\1\0\5\147\1\0\2\147\5\0\3\34\2\0"
0359: + "\10\34\1\101\4\34\1\0\1\35\1\0\15\34\2\0"
0360: + "\2\34\1\0\1\34\3\0\1\34\5\0\3\34\2\0"
0361: + "\1\164\14\34\1\0\1\35\1\0\15\34\2\0\2\34"
0362: + "\1\0\1\34\3\0\1\34\27\0\1\165\35\0\1\166"
0363: + "\60\0\1\167\61\0\3\36\2\0\1\36\1\121\13\36"
0364: + "\1\0\1\66\1\0\15\36\2\0\2\36\1\0\1\36"
0365: + "\3\0\1\36\2\160\1\161\1\0\1\170\4\160\1\171"
0366: + "\15\160\1\114\20\160\1\114\5\160\1\0\2\160\3\161"
0367: + "\1\0\1\170\4\161\1\172\15\161\1\0\20\161\1\0"
0368: + "\5\161\1\0\2\161\5\0\3\36\2\0\10\36\1\121"
0369: + "\4\36\1\0\1\66\1\0\15\36\2\0\2\36\1\0"
0370: + "\1\36\3\0\1\36\1\147\1\0\1\147\1\0\10\147"
0371: + "\1\173\12\147\1\0\1\147\1\163\1\174\1\175\1\176"
0372: + "\2\147\1\177\1\200\2\147\1\201\1\202\3\147\1\0"
0373: + "\5\147\1\0\2\147\5\0\3\34\2\0\15\34\1\0"
0374: + "\1\203\1\0\15\34\2\0\2\34\1\0\1\34\3\0"
0375: + "\1\34\5\0\3\204\2\0\15\204\3\0\14\204\3\0"
0376: + "\2\204\1\0\1\204\3\0\1\204\3\205\1\0\1\136"
0377: + "\51\205\1\0\5\205\2\0\51\205\1\0\2\205\1\147"
0378: + "\1\0\1\147\1\0\17\147\1\206\3\147\1\0\1\147"
0379: + "\1\163\16\147\1\0\5\147\1\0\3\147\1\0\1\147"
0380: + "\1\0\14\147\1\207\6\147\1\0\1\147\1\163\16\147"
0381: + "\1\0\5\147\1\0\3\147\1\0\1\147\1\0\10\147"
0382: + "\1\210\12\147\1\0\1\147\1\163\16\147\1\0\5\147"
0383: + "\1\0\3\147\1\0\1\147\1\0\23\147\1\0\1\147"
0384: + "\1\163\3\147\1\211\12\147\1\0\5\147\1\0\3\147"
0385: + "\1\0\1\147\1\0\23\147\1\0\1\147\1\163\6\147"
0386: + "\1\212\7\147\1\0\5\147\1\0\3\147\1\0\1\147"
0387: + "\1\0\23\147\1\0\1\147\1\163\7\147\1\213\6\147"
0388: + "\1\0\5\147\1\0\3\147\1\0\1\147\1\0\12\147"
0389: + "\1\214\10\147\1\0\1\147\1\163\16\147\1\0\5\147"
0390: + "\1\0\3\147\1\0\1\147\1\0\23\147\1\0\1\147"
0391: + "\1\163\13\147\1\215\2\147\1\0\5\147\1\0\2\147"
0392: + "\1\216\1\0\1\216\1\0\23\216\1\0\20\216\1\0"
0393: + "\4\216\1\217\1\0\2\216\3\205\1\0\1\220\51\205"
0394: + "\1\0\2\205\1\147\1\0\1\147\1\0\23\147\1\0"
0395: + "\1\147\1\163\1\221\15\147\1\0\5\147\1\0\3\147"
0396: + "\1\0\1\147\1\0\11\147\1\221\11\147\1\0\1\147"
0397: + "\1\163\16\147\1\0\5\147\1\0\3\147\1\0\1\147"
0398: + "\1\0\20\147\1\206\2\147\1\0\1\147\1\163\1\221"
0399: + "\15\147\1\0\5\147\1\0\3\147\1\0\1\147\1\0"
0400: + "\23\147\1\0\1\147\1\163\4\147\1\221\11\147\1\0"
0401: + "\5\147\1\0\3\147\1\0\1\147\1\0\23\147\1\0"
0402: + "\1\147\1\163\2\147\1\221\5\147\1\213\5\147\1\0"
0403: + "\5\147\1\0\3\147\1\0\1\147\1\0\23\147\1\0"
0404: + "\1\147\1\163\2\147\1\221\13\147\1\0\5\147\1\0"
0405: + "\3\147\1\0\1\147\1\0\10\147\1\221\12\147\1\0"
0406: + "\1\147\1\163\16\147\1\0\5\147\1\0\3\147\1\0"
0407: + "\1\147\1\0\23\147\1\0\1\147\1\163\6\147\1\221"
0408: + "\7\147\1\0\5\147\1\0\2\147\1\216\1\0\1\216"
0409: + "\1\0\23\216\1\0\1\216\1\222\16\216\1\0\5\216"
0410: + "\1\0\2\216\1\223\1\224\1\223\1\224\23\223\1\224"
0411: + "\1\223\1\225\16\223\1\224\5\223\1\0\2\223\1\216"
0412: + "\1\0\1\216\1\0\10\216\1\226\12\216\1\0\1\216"
0413: + "\1\222\1\227\1\230\1\231\2\216\1\232\1\233\2\216"
0414: + "\1\234\1\235\3\216\1\0\5\216\1\0\2\216\1\223"
0415: + "\1\224\1\223\1\224\23\223\1\224\1\223\1\236\16\223"
0416: + "\1\224\4\223\1\237\1\0\2\223\31\224\1\240\23\224"
0417: + "\1\241\1\0\2\224\1\223\1\224\1\223\1\224\10\223"
0418: + "\1\242\12\223\1\224\1\223\1\236\1\243\1\244\1\245"
0419: + "\2\223\1\246\1\247\2\223\1\250\1\251\3\223\1\224"
0420: + "\4\223\1\237\1\0\2\223\1\216\1\0\1\216\1\0"
0421: + "\17\216\1\252\3\216\1\0\1\216\1\222\16\216\1\0"
0422: + "\5\216\1\0\3\216\1\0\1\216\1\0\14\216\1\253"
0423: + "\6\216\1\0\1\216\1\222\16\216\1\0\5\216\1\0"
0424: + "\3\216\1\0\1\216\1\0\10\216\1\254\12\216\1\0"
0425: + "\1\216\1\222\16\216\1\0\5\216\1\0\3\216\1\0"
0426: + "\1\216\1\0\23\216\1\0\1\216\1\222\3\216\1\255"
0427: + "\12\216\1\0\5\216\1\0\3\216\1\0\1\216\1\0"
0428: + "\23\216\1\0\1\216\1\222\6\216\1\256\7\216\1\0"
0429: + "\5\216\1\0\3\216\1\0\1\216\1\0\23\216\1\0"
0430: + "\1\216\1\222\7\216\1\257\6\216\1\0\5\216\1\0"
0431: + "\3\216\1\0\1\216\1\0\12\216\1\260\10\216\1\0"
0432: + "\1\216\1\222\16\216\1\0\5\216\1\0\3\216\1\0"
0433: + "\1\216\1\0\23\216\1\0\1\216\1\222\13\216\1\261"
0434: + "\2\216\1\0\5\216\1\0\2\216\1\223\1\224\1\223"
0435: + "\1\224\10\223\1\262\12\223\1\224\1\223\1\236\1\263"
0436: + "\1\264\1\265\2\223\1\266\1\267\2\223\1\270\1\271"
0437: + "\3\223\1\224\4\223\1\237\1\0\2\223\14\224\1\272"
0438: + "\14\224\1\240\1\273\1\274\1\275\2\224\1\276\1\277"
0439: + "\2\224\1\300\1\301\10\224\1\241\1\0\2\224\1\223"
0440: + "\1\224\1\223\1\224\17\223\1\302\3\223\1\224\1\223"
0441: + "\1\236\16\223\1\224\4\223\1\237\1\0\3\223\1\224"
0442: + "\1\223\1\224\14\223\1\303\6\223\1\224\1\223\1\236"
0443: + "\16\223\1\224\4\223\1\237\1\0\3\223\1\224\1\223"
0444: + "\1\224\10\223\1\304\12\223\1\224\1\223\1\236\16\223"
0445: + "\1\224\4\223\1\237\1\0\3\223\1\224\1\223\1\224"
0446: + "\23\223\1\224\1\223\1\236\3\223\1\305\12\223\1\224"
0447: + "\4\223\1\237\1\0\3\223\1\224\1\223\1\224\23\223"
0448: + "\1\224\1\223\1\236\6\223\1\306\7\223\1\224\4\223"
0449: + "\1\237\1\0\3\223\1\224\1\223\1\224\23\223\1\224"
0450: + "\1\223\1\236\7\223\1\307\6\223\1\224\4\223\1\237"
0451: + "\1\0\3\223\1\224\1\223\1\224\12\223\1\310\10\223"
0452: + "\1\224\1\223\1\236\16\223\1\224\4\223\1\237\1\0"
0453: + "\3\223\1\224\1\223\1\224\23\223\1\224\1\223\1\236"
0454: + "\13\223\1\311\2\223\1\224\4\223\1\237\1\0\2\223"
0455: + "\1\216\1\0\1\216\1\0\23\216\1\0\1\216\1\222"
0456: + "\1\312\15\216\1\0\5\216\1\0\3\216\1\0\1\216"
0457: + "\1\0\11\216\1\312\11\216\1\0\1\216\1\222\16\216"
0458: + "\1\0\5\216\1\0\3\216\1\0\1\216\1\0\20\216"
0459: + "\1\252\2\216\1\0\1\216\1\222\1\312\15\216\1\0"
0460: + "\5\216\1\0\3\216\1\0\1\216\1\0\23\216\1\0"
0461: + "\1\216\1\222\4\216\1\312\11\216\1\0\5\216\1\0"
0462: + "\3\216\1\0\1\216\1\0\23\216\1\0\1\216\1\222"
0463: + "\2\216\1\312\5\216\1\257\5\216\1\0\5\216\1\0"
0464: + "\3\216\1\0\1\216\1\0\23\216\1\0\1\216\1\222"
0465: + "\2\216\1\312\13\216\1\0\5\216\1\0\3\216\1\0"
0466: + "\1\216\1\0\10\216\1\312\12\216\1\0\1\216\1\222"
0467: + "\16\216\1\0\5\216\1\0\3\216\1\0\1\216\1\0"
0468: + "\23\216\1\0\1\216\1\222\6\216\1\312\7\216\1\0"
0469: + "\5\216\1\0\2\216\1\223\1\224\1\223\1\224\17\223"
0470: + "\1\313\3\223\1\224\1\223\1\236\16\223\1\224\4\223"
0471: + "\1\237\1\0\3\223\1\224\1\223\1\224\14\223\1\314"
0472: + "\6\223\1\224\1\223\1\236\16\223\1\224\4\223\1\237"
0473: + "\1\0\3\223\1\224\1\223\1\224\10\223\1\315\12\223"
0474: + "\1\224\1\223\1\236\16\223\1\224\4\223\1\237\1\0"
0475: + "\3\223\1\224\1\223\1\224\23\223\1\224\1\223\1\236"
0476: + "\3\223\1\316\12\223\1\224\4\223\1\237\1\0\3\223"
0477: + "\1\224\1\223\1\224\23\223\1\224\1\223\1\236\6\223"
0478: + "\1\317\7\223\1\224\4\223\1\237\1\0\3\223\1\224"
0479: + "\1\223\1\224\23\223\1\224\1\223\1\236\7\223\1\320"
0480: + "\6\223\1\224\4\223\1\237\1\0\3\223\1\224\1\223"
0481: + "\1\224\12\223\1\321\10\223\1\224\1\223\1\236\16\223"
0482: + "\1\224\4\223\1\237\1\0\3\223\1\224\1\223\1\224"
0483: + "\23\223\1\224\1\223\1\236\13\223\1\322\2\223\1\224"
0484: + "\4\223\1\237\1\0\2\223\23\224\1\323\5\224\1\240"
0485: + "\23\224\1\241\1\0\22\224\1\324\10\224\1\240\23\224"
0486: + "\1\241\1\0\16\224\1\325\14\224\1\240\23\224\1\241"
0487: + "\1\0\33\224\1\240\3\224\1\326\17\224\1\241\1\0"
0488: + "\33\224\1\240\6\224\1\327\14\224\1\241\1\0\33\224"
0489: + "\1\240\7\224\1\330\13\224\1\241\1\0\20\224\1\331"
0490: + "\12\224\1\240\23\224\1\241\1\0\33\224\1\240\13\224"
0491: + "\1\332\7\224\1\241\1\0\2\224\1\223\1\224\1\223"
0492: + "\1\224\23\223\1\224\1\223\1\236\1\333\15\223\1\224"
0493: + "\4\223\1\237\1\0\3\223\1\224\1\223\1\224\11\223"
0494: + "\1\333\11\223\1\224\1\223\1\236\16\223\1\224\4\223"
0495: + "\1\237\1\0\3\223\1\224\1\223\1\224\20\223\1\302"
0496: + "\2\223\1\224\1\223\1\236\1\333\15\223\1\224\4\223"
0497: + "\1\237\1\0\3\223\1\224\1\223\1\224\23\223\1\224"
0498: + "\1\223\1\236\4\223\1\333\11\223\1\224\4\223\1\237"
0499: + "\1\0\3\223\1\224\1\223\1\224\23\223\1\224\1\223"
0500: + "\1\236\2\223\1\333\5\223\1\307\5\223\1\224\4\223"
0501: + "\1\237\1\0\3\223\1\224\1\223\1\224\23\223\1\224"
0502: + "\1\223\1\236\2\223\1\333\13\223\1\224\4\223\1\237"
0503: + "\1\0\3\223\1\224\1\223\1\224\10\223\1\333\12\223"
0504: + "\1\224\1\223\1\236\16\223\1\224\4\223\1\237\1\0"
0505: + "\3\223\1\224\1\223\1\224\23\223\1\224\1\223\1\236"
0506: + "\6\223\1\333\7\223\1\224\4\223\1\237\1\0\3\223"
0507: + "\1\224\1\223\1\224\23\223\1\224\1\223\1\236\1\334"
0508: + "\15\223\1\224\4\223\1\237\1\0\3\223\1\224\1\223"
0509: + "\1\224\11\223\1\334\11\223\1\224\1\223\1\236\16\223"
0510: + "\1\224\4\223\1\237\1\0\3\223\1\224\1\223\1\224"
0511: + "\20\223\1\313\2\223\1\224\1\223\1\236\1\334\15\223"
0512: + "\1\224\4\223\1\237\1\0\3\223\1\224\1\223\1\224"
0513: + "\23\223\1\224\1\223\1\236\4\223\1\334\11\223\1\224"
0514: + "\4\223\1\237\1\0\3\223\1\224\1\223\1\224\23\223"
0515: + "\1\224\1\223\1\236\2\223\1\334\5\223\1\320\5\223"
0516: + "\1\224\4\223\1\237\1\0\3\223\1\224\1\223\1\224"
0517: + "\23\223\1\224\1\223\1\236\2\223\1\334\13\223\1\224"
0518: + "\4\223\1\237\1\0\3\223\1\224\1\223\1\224\10\223"
0519: + "\1\334\12\223\1\224\1\223\1\236\16\223\1\224\4\223"
0520: + "\1\237\1\0\3\223\1\224\1\223\1\224\23\223\1\224"
0521: + "\1\223\1\236\6\223\1\334\7\223\1\224\4\223\1\237"
0522: + "\1\0\2\223\31\224\1\240\1\335\22\224\1\241\1\0"
0523: + "\17\224\1\335\13\224\1\240\23\224\1\241\1\0\26\224"
0524: + "\1\323\4\224\1\240\1\335\22\224\1\241\1\0\33\224"
0525: + "\1\240\4\224\1\335\16\224\1\241\1\0\33\224\1\240"
0526: + "\2\224\1\335\5\224\1\330\12\224\1\241\1\0\33\224"
0527: + "\1\240\2\224\1\335\20\224\1\241\1\0\16\224\1\335"
0528: + "\14\224\1\240\23\224\1\241\1\0\33\224\1\240\6\224"
0529: + "\1\335\14\224\1\241\1\0\2\224\1\223\1\224\1\223"
0530: + "\1\224\23\223\1\224\1\223\1\236\16\223\1\224\4\223"
0531: + "\1\336\1\0\2\223\31\224\1\240\23\224\1\337\1\0"
0532: + "\2\224";
0533:
0534: /**
0535: * The transition table of the DFA
0536: */
0537: final private static int yytrans[] = yy_unpack();
0538:
0539: /* error codes */
0540: final private static int YY_UNKNOWN_ERROR = 0;
0541: final private static int YY_ILLEGAL_STATE = 1;
0542: final private static int YY_NO_MATCH = 2;
0543: final private static int YY_PUSHBACK_2BIG = 3;
0544:
0545: /* error messages for the codes above */
0546: final private static String YY_ERROR_MSG[] = {
0547: "Unkown internal scanner error",
0548: "Internal error: unknown state",
0549: "Error: could not match input",
0550: "Error: pushback value was too large" };
0551:
0552: /**
0553: * YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
0554: */
0555: private final static byte YY_ATTRIBUTE[] = { 8, 0, 0, 0, 0, 9, 9,
0556: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0557: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
0558: 9, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0559: 0, 0, 0, 9, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0560: 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 9, 0, 1, 0, 0, 9, 0,
0561: 0, 1, 0, 0, 0, 0, 0, 1, 0, 9, 9, 1, 1, 0, 0, 1, 1, 1, 1, 1,
0562: 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1,
0563: 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
0564: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
0565: 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0566: 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1 };
0567:
0568: /** the input device */
0569: private java.io.Reader yy_reader;
0570:
0571: /** the current state of the DFA */
0572: private int yy_state;
0573:
0574: /** the current lexical state */
0575: private int yy_lexical_state = YYINITIAL;
0576:
0577: /** this buffer contains the current text to be matched and is
0578: the source of the yytext() string */
0579: private char yy_buffer[] = new char[YY_BUFFERSIZE];
0580:
0581: /** the textposition at the last accepting state */
0582: private int yy_markedPos;
0583:
0584: /** the textposition at the last state to be included in yytext */
0585: private int yy_pushbackPos;
0586:
0587: /** the current text position in the buffer */
0588: private int yy_currentPos;
0589:
0590: /** startRead marks the beginning of the yytext() string in the buffer */
0591: private int yy_startRead;
0592:
0593: /** endRead marks the last character in the buffer, that has been read
0594: from input */
0595: private int yy_endRead;
0596:
0597: /** number of newlines encountered up to the start of the matched text */
0598: private int yyline;
0599:
0600: /** the number of characters up to the start of the matched text */
0601: private int yychar;
0602:
0603: /**
0604: * the number of characters from the last newline up to the start of the
0605: * matched text
0606: */
0607: private int yycolumn;
0608:
0609: /**
0610: * yy_atBOL == true <=> the scanner is currently at the beginning of a line
0611: */
0612: private boolean yy_atBOL = true;
0613:
0614: /** yy_atEOF == true <=> the scanner is at the EOF */
0615: private boolean yy_atEOF;
0616:
0617: /* user code: */
0618: protected static Logger logger = Logger.getLogger(LinkLex.class);
0619: protected String virtualWiki;
0620:
0621: protected boolean exists(String topic) {
0622: try {
0623: return WikiBase.getInstance().exists(virtualWiki, topic);
0624: } catch (Exception err) {
0625: logger.error(err);
0626: }
0627: return false;
0628: }
0629:
0630: public void setVirtualWiki(String vWiki) {
0631: this .virtualWiki = vWiki;
0632: }
0633:
0634: protected boolean ignoreWikiname(String name) {
0635: return Environment.getInstance().doIgnoreWikiname(name);
0636: }
0637:
0638: protected String getTopicLink(String link, String description) {
0639: link = link.trim();
0640: description = description.trim();
0641: if (exists(link)) {
0642: return "<a class=\"topic\" href=\"Wiki?"
0643: + JSPUtils.encodeURL(link) + "\">" + description
0644: + "</a>";
0645: } else {
0646: if (Environment.getInstance().isFranzNewTopicStyle()) {
0647: if (description.equals(link)) {
0648: return description
0649: + "<a class=\"newtopic\" href=\"Wiki?topic="
0650: + JSPUtils.encodeURL(link) + "&action="
0651: + WikiServlet.ACTION_EDIT + "\">?</a>";
0652: } else {
0653: return description
0654: + " ("
0655: + link
0656: + "<a class=\"newtopic\" href=\"Wiki?topic="
0657: + JSPUtils.encodeURL(link) + "&action="
0658: + WikiServlet.ACTION_EDIT + "\">?</a>)";
0659: }
0660: } else {
0661: if (description.equals(link)) {
0662: return "<a class=\"newtopic\" href=\"Wiki?topic="
0663: + JSPUtils.encodeURL(link) + "&action="
0664: + WikiServlet.ACTION_EDIT + "\">"
0665: + description + "</a>";
0666: } else {
0667: return description
0668: + " (<a class=\"newtopic\" href=\"Wiki?topic="
0669: + JSPUtils.encodeURL(link) + "&action="
0670: + WikiServlet.ACTION_EDIT + "\">" + link
0671: + "</a>)";
0672: }
0673: }
0674: }
0675: }
0676:
0677: /**
0678: * Creates a new scanner
0679: * There is also a java.io.InputStream version of this constructor.
0680: *
0681: * @param in the java.io.Reader to read input from.
0682: */
0683: public LinkLex(java.io.Reader in) {
0684: yybegin(NORMAL);
0685: this .yy_reader = in;
0686: }
0687:
0688: /**
0689: * Creates a new scanner.
0690: * There is also java.io.Reader version of this constructor.
0691: *
0692: * @param in the java.io.Inputstream to read input from.
0693: */
0694: public LinkLex(java.io.InputStream in) {
0695: this (new java.io.InputStreamReader(in));
0696: }
0697:
0698: /**
0699: * Unpacks the split, compressed DFA transition table.
0700: *
0701: * @return the unpacked transition table
0702: */
0703: private static int[] yy_unpack() {
0704: int[] trans = new int[9653];
0705: int offset = 0;
0706: offset = yy_unpack(yy_packed0, offset, trans);
0707: return trans;
0708: }
0709:
0710: /**
0711: * Unpacks the compressed DFA transition table.
0712: *
0713: * @param packed the packed transition table
0714: * @return the index of the last entry
0715: */
0716: private static int yy_unpack(String packed, int offset, int[] trans) {
0717: int i = 0; /* index in packed string */
0718: int j = offset; /* index in unpacked array */
0719: int l = packed.length();
0720: while (i < l) {
0721: int count = packed.charAt(i++);
0722: int value = packed.charAt(i++);
0723: value--;
0724: do
0725: trans[j++] = value;
0726: while (--count > 0);
0727: }
0728: return j;
0729: }
0730:
0731: /**
0732: * Unpacks the compressed character translation table.
0733: *
0734: * @param packed the packed character translation table
0735: * @return the unpacked character translation table
0736: */
0737: private static char[] yy_unpack_cmap(String packed) {
0738: char[] map = new char[0x10000];
0739: int i = 0; /* index in packed string */
0740: int j = 0; /* index in unpacked array */
0741: while (i < 2606) {
0742: int count = packed.charAt(i++);
0743: char value = packed.charAt(i++);
0744: do
0745: map[j++] = value;
0746: while (--count > 0);
0747: }
0748: return map;
0749: }
0750:
0751: /**
0752: * Refills the input buffer.
0753: *
0754: * @return <code>false</code>, iff there was new input.
0755: *
0756: * @exception IOException if any I/O-Error occurs
0757: */
0758: private boolean yy_refill() throws java.io.IOException {
0759:
0760: /* first: make room (if you can) */
0761: if (yy_startRead > 0) {
0762: System.arraycopy(yy_buffer, yy_startRead, yy_buffer, 0,
0763: yy_endRead - yy_startRead);
0764:
0765: /* translate stored positions */
0766: yy_endRead -= yy_startRead;
0767: yy_currentPos -= yy_startRead;
0768: yy_markedPos -= yy_startRead;
0769: yy_pushbackPos -= yy_startRead;
0770: yy_startRead = 0;
0771: }
0772:
0773: /* is the buffer big enough? */
0774: if (yy_currentPos >= yy_buffer.length) {
0775: /* if not: blow it up */
0776: char newBuffer[] = new char[yy_currentPos * 2];
0777: System.arraycopy(yy_buffer, 0, newBuffer, 0,
0778: yy_buffer.length);
0779: yy_buffer = newBuffer;
0780: }
0781:
0782: /* finally: fill the buffer with new input */
0783: int numRead = yy_reader.read(yy_buffer, yy_endRead,
0784: yy_buffer.length - yy_endRead);
0785:
0786: if (numRead < 0) {
0787: return true;
0788: } else {
0789: yy_endRead += numRead;
0790: return false;
0791: }
0792: }
0793:
0794: /**
0795: * Closes the input stream.
0796: */
0797: final public void yyclose() throws java.io.IOException {
0798: yy_atEOF = true; /* indicate end of file */
0799: yy_endRead = yy_startRead; /* invalidate buffer */
0800:
0801: if (yy_reader != null)
0802: yy_reader.close();
0803: }
0804:
0805: /**
0806: * Closes the current stream, and resets the
0807: * scanner to read from a new input stream.
0808: *
0809: * All internal variables are reset, the old input stream
0810: * <b>cannot</b> be reused (internal buffer is discarded and lost).
0811: * Lexical state is set to <tt>YY_INITIAL</tt>.
0812: *
0813: * @param reader the new input stream
0814: */
0815: final public void yyreset(java.io.Reader reader)
0816: throws java.io.IOException {
0817: yyclose();
0818: yy_reader = reader;
0819: yy_atBOL = true;
0820: yy_atEOF = false;
0821: yy_endRead = yy_startRead = 0;
0822: yy_currentPos = yy_markedPos = yy_pushbackPos = 0;
0823: yyline = yychar = yycolumn = 0;
0824: yy_lexical_state = YYINITIAL;
0825: }
0826:
0827: /**
0828: * Returns the current lexical state.
0829: */
0830: final public int yystate() {
0831: return yy_lexical_state;
0832: }
0833:
0834: /**
0835: * Enters a new lexical state
0836: *
0837: * @param newState the new lexical state
0838: */
0839: final public void yybegin(int newState) {
0840: yy_lexical_state = newState;
0841: }
0842:
0843: /**
0844: * Returns the text matched by the current regular expression.
0845: */
0846: final public String yytext() {
0847: return new String(yy_buffer, yy_startRead, yy_markedPos
0848: - yy_startRead);
0849: }
0850:
0851: /**
0852: * Returns the character at position <tt>pos</tt> from the
0853: * matched text.
0854: *
0855: * It is equivalent to yytext().charAt(pos), but faster
0856: *
0857: * @param pos the position of the character to fetch.
0858: * A value from 0 to yylength()-1.
0859: *
0860: * @return the character at position pos
0861: */
0862: final public char yycharat(int pos) {
0863: return yy_buffer[yy_startRead + pos];
0864: }
0865:
0866: /**
0867: * Returns the length of the matched text region.
0868: */
0869: final public int yylength() {
0870: return yy_markedPos - yy_startRead;
0871: }
0872:
0873: /**
0874: * Reports an error that occured while scanning.
0875: *
0876: * In a wellformed scanner (no or only correct usage of
0877: * yypushback(int) and a match-all fallback rule) this method
0878: * will only be called with things that "Can't Possibly Happen".
0879: * If this method is called, something is seriously wrong
0880: * (e.g. a JFlex bug producing a faulty scanner etc.).
0881: *
0882: * Usual syntax/scanner level error handling should be done
0883: * in error fallback rules.
0884: *
0885: * @param errorCode the code of the errormessage to display
0886: */
0887: private void yy_ScanError(int errorCode) {
0888: String message;
0889: try {
0890: message = YY_ERROR_MSG[errorCode];
0891: } catch (ArrayIndexOutOfBoundsException e) {
0892: message = YY_ERROR_MSG[YY_UNKNOWN_ERROR];
0893: }
0894:
0895: throw new Error(message);
0896: }
0897:
0898: /**
0899: * Pushes the specified amount of characters back into the input stream.
0900: *
0901: * They will be read again by then next call of the scanning method
0902: *
0903: * @param number the number of characters to be read again.
0904: * This number must not be greater than yylength()!
0905: */
0906: private void yypushback(int number) {
0907: if (number > yylength())
0908: yy_ScanError(YY_PUSHBACK_2BIG);
0909:
0910: yy_markedPos -= number;
0911: }
0912:
0913: /**
0914: * Resumes scanning until the next regular expression is matched,
0915: * the end of input is encountered or an I/O-Error occurs.
0916: *
0917: * @return the next token
0918: * @exception IOException if any I/O-Error occurs
0919: */
0920: public String yylex() throws java.io.IOException {
0921: int yy_input;
0922: int yy_action;
0923:
0924: // cached fields:
0925: int yy_currentPos_l;
0926: int yy_startRead_l;
0927: int yy_markedPos_l;
0928: int yy_endRead_l = yy_endRead;
0929: char[] yy_buffer_l = yy_buffer;
0930: char[] yycmap_l = yycmap;
0931:
0932: int[] yytrans_l = yytrans;
0933: int[] yy_rowMap_l = yy_rowMap;
0934: byte[] yy_attr_l = YY_ATTRIBUTE;
0935:
0936: while (true) {
0937: yy_markedPos_l = yy_markedPos;
0938:
0939: yy_action = -1;
0940:
0941: yy_startRead_l = yy_currentPos_l = yy_currentPos = yy_startRead = yy_markedPos_l;
0942:
0943: yy_state = yy_lexical_state;
0944:
0945: yy_forAction: {
0946: while (true) {
0947:
0948: if (yy_currentPos_l < yy_endRead_l)
0949: yy_input = yy_buffer_l[yy_currentPos_l++];
0950: else if (yy_atEOF) {
0951: yy_input = YYEOF;
0952: break yy_forAction;
0953: } else {
0954: // store back cached positions
0955: yy_currentPos = yy_currentPos_l;
0956: yy_markedPos = yy_markedPos_l;
0957: boolean eof = yy_refill();
0958: // get translated positions and possibly new buffer
0959: yy_currentPos_l = yy_currentPos;
0960: yy_markedPos_l = yy_markedPos;
0961: yy_buffer_l = yy_buffer;
0962: yy_endRead_l = yy_endRead;
0963: if (eof) {
0964: yy_input = YYEOF;
0965: break yy_forAction;
0966: } else {
0967: yy_input = yy_buffer_l[yy_currentPos_l++];
0968: }
0969: }
0970: int yy_next = yytrans_l[yy_rowMap_l[yy_state]
0971: + yycmap_l[yy_input]];
0972: if (yy_next == -1)
0973: break yy_forAction;
0974: yy_state = yy_next;
0975:
0976: int yy_attributes = yy_attr_l[yy_state];
0977: if ((yy_attributes & 1) == 1) {
0978: yy_action = yy_state;
0979: yy_markedPos_l = yy_currentPos_l;
0980: if ((yy_attributes & 8) == 8)
0981: break yy_forAction;
0982: }
0983:
0984: }
0985: }
0986:
0987: // store back cached position
0988: yy_markedPos = yy_markedPos_l;
0989:
0990: switch (yy_action) {
0991:
0992: case 141:
0993: case 142:
0994: case 145:
0995: case 146:
0996: case 148:
0997: case 149:
0998: case 150:
0999: case 151:
1000: case 152:
1001: case 153:
1002: case 154:
1003: case 155:
1004: case 156:
1005: case 157:
1006: case 161:
1007: case 162:
1008: case 163:
1009: case 164:
1010: case 165:
1011: case 166:
1012: case 167:
1013: case 168:
1014: case 169:
1015: case 170:
1016: case 171:
1017: case 172:
1018: case 173:
1019: case 174:
1020: case 175:
1021: case 176:
1022: case 177:
1023: case 178:
1024: case 179:
1025: case 180:
1026: case 181:
1027: case 182:
1028: case 183:
1029: case 184:
1030: case 193:
1031: case 194:
1032: case 195:
1033: case 196:
1034: case 197:
1035: case 198:
1036: case 199:
1037: case 200:
1038: case 202:
1039: case 203:
1040: case 204:
1041: case 205:
1042: case 206:
1043: case 207:
1044: case 208:
1045: case 209: {
1046: logger.debug("{attachment}");
1047: String displayLink = yytext();
1048: String attachmentName = displayLink.substring(7);
1049: String link = "Wiki?action="
1050: + WikiServlet.ACTION_VIEW_ATTACHMENT
1051: + "&attachment="
1052: + JSPUtils.encodeURL(attachmentName);
1053: StringBuffer buffer = new StringBuffer();
1054: buffer.append("<a class=\"attachmentlink\"");
1055: if (Environment.getInstance().getStringSetting(
1056: Environment.PROPERTY_ATTACHMENT_TYPE).equals(
1057: "inline"))
1058: buffer.append(" target=\"_blank\"");
1059: buffer.append(" href=\"");
1060: buffer.append(link);
1061: buffer.append("\" >att:");
1062: buffer.append(attachmentName);
1063: buffer.append("</a>");
1064: return buffer.toString();
1065: }
1066: case 224:
1067: break;
1068: case 44: {
1069: logger.debug("off");
1070: yybegin(OFF);
1071: }
1072: case 225:
1073: break;
1074: case 93: {
1075: logger.debug("{framedextlink}");
1076: String text = yytext();
1077: // trim off the square brackets
1078: text = text.substring(1, text.length() - 1);
1079: try {
1080: return LinkExtender.generateLink(text.substring(0,
1081: text.indexOf(':')), text.substring(text
1082: .indexOf(':') + 1), text);
1083: } catch (Exception err) {
1084: logger.error("error generating link from extender",
1085: err);
1086: return text;
1087: }
1088: }
1089: case 226:
1090: break;
1091: case 94: {
1092: logger.debug("{topicsquarebracket} '" + yytext() + "'");
1093: String link = yytext();
1094: link = link.substring(2, link.length() - 2).trim();
1095: return getTopicLink(link, link);
1096: }
1097: case 227:
1098: break;
1099: case 100: {
1100: logger.debug("external");
1101: yybegin(EXTERNAL);
1102: }
1103: case 228:
1104: break;
1105: case 221:
1106: case 222: {
1107: logger.debug("{imageattachment2}");
1108: String displayLink = yytext();
1109: int firstQuotePosition = displayLink.indexOf("\"");
1110: String attachmentName = displayLink.substring(
1111: firstQuotePosition + 1,
1112: displayLink.length() - 1);
1113: String link = "Wiki?action="
1114: + WikiServlet.ACTION_VIEW_ATTACHMENT
1115: + "&attachment="
1116: + JSPUtils.encodeURL(attachmentName);
1117: return "<img src=\"" + link.trim() + "\"/>";
1118: }
1119: case 229:
1120: break;
1121: case 6: {
1122: return yytext();
1123: }
1124: case 230:
1125: break;
1126: case 144: {
1127: logger.debug("{image}");
1128: String link = yytext();
1129: return "<img src=\"" + link.trim() + "\"/>";
1130: }
1131: case 231:
1132: break;
1133: case 52: {
1134: logger.debug("{extlink}");
1135: String text = yytext();
1136: try {
1137: return LinkExtender.generateLink(text.substring(0,
1138: text.indexOf(':')), text.substring(text
1139: .indexOf(':') + 1), text);
1140: } catch (Exception err) {
1141: logger.error("error generating link from extender",
1142: err);
1143: return text;
1144: }
1145: }
1146: case 232:
1147: break;
1148: case 5:
1149: case 7:
1150: case 8:
1151: case 9:
1152: case 10:
1153: case 11:
1154: case 12:
1155: case 13:
1156: case 14:
1157: case 15:
1158: case 16:
1159: case 17:
1160: case 18:
1161: case 19:
1162: case 20:
1163: case 21:
1164: case 22:
1165: case 23: {
1166: // logger.debug( ". (" + yytext() + ")" );
1167: return yytext();
1168: }
1169: case 233:
1170: break;
1171: case 108: {
1172: logger.debug("{topicsquarebrackettail} '" + yytext()
1173: + "'");
1174: String link = yytext();
1175: link = link.substring(2);
1176: String desc = link.substring(link.indexOf("]]") + 2);
1177: link = link.substring(0, link.indexOf("]]")).trim();
1178: desc = link + desc;
1179: return getTopicLink(link, desc);
1180: }
1181: case 234:
1182: break;
1183: case 143: {
1184: logger.debug("{prettyhyperlink}" + yytext());
1185: String input = yytext();
1186: int position = input.indexOf('|');
1187:
1188: String link = null;
1189: String desc = null;
1190: link = input.substring(1, position).trim();
1191: desc = input
1192: .substring(position + 1, input.length() - 1)
1193: .trim();
1194: if (desc.length() == 0) {
1195: desc = link;
1196: }
1197:
1198: return "<a class=\"externallink\" href=\""
1199: + link.trim() + "\" title= \"" + link
1200: + "\" rel=\"nofollow\">" + desc + "</a>";
1201: }
1202: case 235:
1203: break;
1204: case 131: {
1205: logger.debug("{prettytopicsquarebrackettail} '"
1206: + yytext() + "'");
1207: String input = yytext();
1208: int position = input.indexOf('|');
1209:
1210: String link = null;
1211: String desc = null;
1212: link = input.substring(2, position).trim();
1213: desc = input.substring(position + 1,
1214: input.indexOf("]]")).trim();
1215: if (desc.length() == 0) {
1216: desc = link;
1217: }
1218: desc = desc + input.substring(input.indexOf("]]") + 2);
1219:
1220: return getTopicLink(link, desc);
1221: }
1222: case 236:
1223: break;
1224: case 118: {
1225: logger.debug("{prettytopicsquarebracket} '" + yytext()
1226: + "'");
1227: String input = yytext();
1228: int position = input.indexOf('|');
1229:
1230: String link = null;
1231: String desc = null;
1232: link = input.substring(2, position).trim();
1233: desc = input
1234: .substring(position + 1, input.length() - 2)
1235: .trim();
1236: if (desc.length() == 0) {
1237: desc = link;
1238: }
1239:
1240: return getTopicLink(link, desc);
1241: }
1242: case 237:
1243: break;
1244: case 117: {
1245: logger.debug("external end");
1246: yybegin(NORMAL);
1247: }
1248: case 238:
1249: break;
1250: case 102:
1251: case 114:
1252: case 122:
1253: case 123:
1254: case 124:
1255: case 125:
1256: case 126:
1257: case 127:
1258: case 128:
1259: case 129:
1260: case 133:
1261: case 134:
1262: case 135:
1263: case 136:
1264: case 137:
1265: case 138:
1266: case 139:
1267: case 140: {
1268: logger.debug("{hyperlink}");
1269: String link = yytext();
1270: String punctuation = Utilities
1271: .extractTrailingPunctuation(link);
1272:
1273: if (punctuation != null) {
1274: link = link.substring(0, link.length()
1275: - punctuation.length());
1276: }
1277:
1278: return "<a class=\"externallink\" href=\""
1279: + link.trim() + "\">" + link + "</a>"
1280: + punctuation;
1281: }
1282: case 239:
1283: break;
1284: case 158:
1285: case 160: {
1286: logger.debug("{attachment2}");
1287: String displayLink = yytext();
1288: int firstQuotePosition = displayLink.indexOf("\"");
1289: String attachmentName = displayLink.substring(
1290: firstQuotePosition + 1,
1291: displayLink.length() - 1);
1292: String link = "Wiki?action="
1293: + WikiServlet.ACTION_VIEW_ATTACHMENT
1294: + "&attachment="
1295: + JSPUtils.encodeURL(attachmentName);
1296: StringBuffer buffer = new StringBuffer();
1297: buffer.append("<a class=\"attachmentlink\"");
1298: if (Environment.getInstance().getStringSetting(
1299: Environment.PROPERTY_ATTACHMENT_TYPE).equals(
1300: "inline"))
1301: buffer.append(" target=\"_blank\"");
1302: buffer.append(" href=\"");
1303: buffer.append(link);
1304: buffer.append("\" >att:");
1305: buffer.append(attachmentName);
1306: buffer.append("</a>");
1307: return buffer.toString();
1308: }
1309: case 240:
1310: break;
1311: case 47: {
1312: logger.debug("on");
1313: yybegin(NORMAL);
1314: }
1315: case 241:
1316: break;
1317: case 116: {
1318: logger.debug("{newline}x2 leaving pre");
1319: yybegin(NORMAL);
1320: return yytext();
1321: }
1322: case 242:
1323: break;
1324: case 74: {
1325: logger.debug("{topic} '" + yytext() + "'");
1326: String link = yytext();
1327: if (ignoreWikiname(link))
1328: return yytext();
1329: return getTopicLink(link, link);
1330: }
1331: case 243:
1332: break;
1333: case 119: {
1334: logger.debug("{framedhyperlink}");
1335: String link = yytext();
1336:
1337: link = link.substring(1, link.length() - 1).trim();
1338:
1339: return "<a class=\"externallink\" href=\""
1340: + link.trim() + "\">" + link + "</a>";
1341: }
1342: case 244:
1343: break;
1344: case 73: {
1345: logger.debug("{topicbackticktail} '" + yytext() + "'");
1346: if (!Environment.getInstance().isAllowBackTick()) {
1347: logger.debug("No back-tick links allowed");
1348: return yytext();
1349: }
1350: String link = yytext();
1351: link = link.substring(1);
1352: String desc = link.substring(link.indexOf('`') + 1)
1353: .trim();
1354: link = link.substring(0, link.indexOf('`')).trim();
1355: desc = link + desc;
1356: return getTopicLink(link, desc);
1357: }
1358: case 245:
1359: break;
1360: case 70: {
1361: logger.debug("escaped double backslash");
1362: return "__";
1363: }
1364: case 246:
1365: break;
1366: case 50: {
1367: logger.debug("{topicbacktick} '" + yytext() + "'");
1368: if (!Environment.getInstance().isAllowBackTick()) {
1369: logger.debug("No back-tick links allowed");
1370: return yytext();
1371: }
1372: String link = yytext();
1373: link = link.substring(1);
1374: link = link.substring(0, link.length() - 1).trim();
1375: return getTopicLink(link, link);
1376: }
1377: case 247:
1378: break;
1379: case 201:
1380: case 218:
1381: case 219: {
1382: logger.debug("{imageattachment}");
1383: String displayLink = yytext();
1384: String attachmentName = displayLink.substring(7);
1385: String link = "Wiki?action="
1386: + WikiServlet.ACTION_VIEW_ATTACHMENT
1387: + "&attachment="
1388: + JSPUtils.encodeURL(attachmentName);
1389: return "<img src=\"" + link.trim() + "\"/>";
1390: }
1391: case 248:
1392: break;
1393: case 105: {
1394: logger.debug("@@@@{newline} entering PRE");
1395: yybegin(PRE);
1396: return yytext();
1397: }
1398: case 249:
1399: break;
1400: default:
1401: if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
1402: yy_atEOF = true;
1403: {
1404: return null;
1405: }
1406: } else {
1407: yy_ScanError(YY_NO_MATCH);
1408: }
1409: }
1410: }
1411: }
1412:
1413: }
|