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