001/* The following code was generated by JFlex 1.4.1 on 3/13/06 6:15 PM */ 002 003/* 004 * Copyright 2006 Arnout Engelen <arnouten[remove] at bzzt dot net>. 005 * Copyright 2000-2006 Omnicore Software, Hans Kratz & Dennis Strein GbR, 006 * Geert Bevin <gbevin[remove] at uwyn dot com>. 007 * Distributed under the terms of the GNU Lesser General Public License, v2.1 or later 008 * $Id: CppHighlighter.java 3106 2006-03-13 17:53:50Z gbevin $ 009 */ 010package com.uwyn.jhighlight.highlighter; 011 012import java.io.Reader; 013import java.io.IOException; 014 015 016/** 017 * This class is a scanner generated by 018 * <a href="http://www.jflex.de/">JFlex</a> 1.4.1 019 * on 3/13/06 6:15 PM from the specification file 020 * <tt>com/uwyn/jhighlight/highlighter/CppHighlighter.flex</tt> 021 */ 022public class CppHighlighter implements ExplicitStateHighlighter { 023 024 /** This character denotes the end of file */ 025 public static final int YYEOF = -1; 026 027 /** initial size of the lookahead buffer */ 028 private static final int ZZ_BUFFERSIZE = 128; 029 030 /** lexical states */ 031 public static final int YYINITIAL = 0; 032 public static final int IN_DOXYGEN_COMMENT = 2; 033 public static final int IN_COMMENT = 1; 034 035 /** 036 * Translates characters to character classes 037 */ 038 private static final String ZZ_CMAP_PACKED = 039 "\11\4\1\0\1\61\1\0\1\0\1\0\16\4\4\0\1\0\1\65"+ 040 "\1\60\1\1\1\2\1\65\1\65\1\63\1\64\1\64\1\66\1\27"+ 041 "\1\57\1\27\1\24\1\67\1\7\1\51\1\54\1\53\1\55\1\14"+ 042 "\1\52\1\14\1\50\1\5\1\65\1\64\1\65\1\65\1\65\1\65"+ 043 "\1\70\3\13\1\22\1\26\1\22\5\6\1\20\10\6\1\16\2\6"+ 044 "\1\11\2\6\1\64\1\62\1\64\1\65\1\3\1\0\1\30\1\31"+ 045 "\1\12\1\23\1\25\1\21\1\36\1\44\1\35\1\2\1\43\1\17"+ 046 "\1\42\1\37\1\40\1\45\1\2\1\34\1\32\1\33\1\15\1\46"+ 047 "\1\47\1\10\1\41\1\56\1\64\1\65\1\64\1\65\41\4\2\0"+ 048 "\4\2\4\0\1\2\12\0\1\2\4\0\1\2\5\0\27\2\1\0"+ 049 "\37\2\1\0\u0128\2\2\0\22\2\34\0\136\2\2\0\11\2\2\0"+ 050 "\7\2\16\0\2\2\16\0\5\2\11\0\1\2\21\0\117\4\21\0"+ 051 "\3\4\27\0\1\2\13\0\1\2\1\0\3\2\1\0\1\2\1\0"+ 052 "\24\2\1\0\54\2\1\0\10\2\2\0\32\2\14\0\202\2\1\0"+ 053 "\4\4\5\0\71\2\2\0\2\2\2\0\2\2\3\0\46\2\2\0"+ 054 "\2\2\67\0\46\2\2\0\1\2\7\0\47\2\11\0\21\4\1\0"+ 055 "\27\4\1\0\3\4\1\0\1\4\1\0\2\4\1\0\1\4\13\0"+ 056 "\33\2\5\0\3\2\56\0\32\2\5\0\13\2\13\4\12\0\12\4"+ 057 "\6\0\1\4\143\2\1\0\1\2\7\4\2\0\6\4\2\2\2\4"+ 058 "\1\0\4\4\2\0\12\4\3\2\22\0\1\4\1\2\1\4\33\2"+ 059 "\3\0\33\4\65\0\46\2\13\4\u0150\0\3\4\1\0\65\2\2\0"+ 060 "\1\4\1\2\20\4\2\0\1\2\4\4\3\0\12\2\2\4\2\0"+ 061 "\12\4\21\0\3\4\1\0\10\2\2\0\2\2\2\0\26\2\1\0"+ 062 "\7\2\1\0\1\2\3\0\4\2\2\0\1\4\1\0\7\4\2\0"+ 063 "\2\4\2\0\3\4\11\0\1\4\4\0\2\2\1\0\3\2\2\4"+ 064 "\2\0\12\4\4\2\16\0\1\4\2\0\6\2\4\0\2\2\2\0"+ 065 "\26\2\1\0\7\2\1\0\2\2\1\0\2\2\1\0\2\2\2\0"+ 066 "\1\4\1\0\5\4\4\0\2\4\2\0\3\4\13\0\4\2\1\0"+ 067 "\1\2\7\0\14\4\3\2\14\0\3\4\1\0\7\2\1\0\1\2"+ 068 "\1\0\3\2\1\0\26\2\1\0\7\2\1\0\2\2\1\0\5\2"+ 069 "\2\0\1\4\1\2\10\4\1\0\3\4\1\0\3\4\2\0\1\2"+ 070 "\17\0\1\2\5\0\12\4\21\0\3\4\1\0\10\2\2\0\2\2"+ 071 "\2\0\26\2\1\0\7\2\1\0\2\2\2\0\4\2\2\0\1\4"+ 072 "\1\2\6\4\3\0\2\4\2\0\3\4\10\0\2\4\4\0\2\2"+ 073 "\1\0\3\2\4\0\12\4\22\0\2\4\1\0\6\2\3\0\3\2"+ 074 "\1\0\4\2\3\0\2\2\1\0\1\2\1\0\2\2\3\0\2\2"+ 075 "\3\0\3\2\3\0\10\2\1\0\3\2\4\0\5\4\3\0\3\4"+ 076 "\1\0\4\4\11\0\1\4\17\0\11\4\21\0\3\4\1\0\10\2"+ 077 "\1\0\3\2\1\0\27\2\1\0\12\2\1\0\5\2\4\0\7\4"+ 078 "\1\0\3\4\1\0\4\4\7\0\2\4\11\0\2\2\4\0\12\4"+ 079 "\22\0\2\4\1\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2"+ 080 "\1\0\5\2\4\0\7\4\1\0\3\4\1\0\4\4\7\0\2\4"+ 081 "\7\0\1\2\1\0\2\2\4\0\12\4\22\0\2\4\1\0\10\2"+ 082 "\1\0\3\2\1\0\27\2\1\0\20\2\4\0\6\4\2\0\3\4"+ 083 "\1\0\4\4\11\0\1\4\10\0\2\2\4\0\12\4\22\0\2\4"+ 084 "\1\0\22\2\3\0\30\2\1\0\11\2\1\0\1\2\2\0\7\2"+ 085 "\3\0\1\4\4\0\6\4\1\0\1\4\1\0\10\4\22\0\2\4"+ 086 "\15\0\60\2\1\4\2\2\7\4\4\0\10\2\10\4\1\0\12\4"+ 087 "\47\0\2\2\1\0\1\2\2\0\2\2\1\0\1\2\2\0\1\2"+ 088 "\6\0\4\2\1\0\7\2\1\0\3\2\1\0\1\2\1\0\1\2"+ 089 "\2\0\2\2\1\0\4\2\1\4\2\2\6\4\1\0\2\4\1\2"+ 090 "\2\0\5\2\1\0\1\2\1\0\6\4\2\0\12\4\2\0\2\2"+ 091 "\42\0\1\2\27\0\2\4\6\0\12\4\13\0\1\4\1\0\1\4"+ 092 "\1\0\1\4\4\0\2\4\10\2\1\0\42\2\6\0\24\4\1\0"+ 093 "\2\4\4\2\4\0\10\4\1\0\44\4\11\0\1\4\71\0\42\2"+ 094 "\1\0\5\2\1\0\2\2\1\0\7\4\3\0\4\4\6\0\12\4"+ 095 "\6\0\6\2\4\4\106\0\46\2\12\0\47\2\11\0\132\2\5\0"+ 096 "\104\2\5\0\122\2\6\0\7\2\1\0\77\2\1\0\1\2\1\0"+ 097 "\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2\0\47\2\1\0"+ 098 "\1\2\1\0\4\2\2\0\37\2\1\0\1\2\1\0\4\2\2\0"+ 099 "\7\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0\7\2\1\0"+ 100 "\27\2\1\0\37\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0"+ 101 "\47\2\1\0\23\2\16\0\11\4\56\0\125\2\14\0\u026c\2\2\0"+ 102 "\10\2\12\0\32\2\5\0\113\2\225\0\64\2\40\4\7\0\1\2"+ 103 "\4\0\12\4\41\0\4\4\1\0\12\4\6\0\130\2\10\0\51\2"+ 104 "\1\4\u0556\0\234\2\4\0\132\2\6\0\26\2\2\0\6\2\2\0"+ 105 "\46\2\2\0\6\2\2\0\10\2\1\0\1\2\1\0\1\2\1\0"+ 106 "\1\2\1\0\37\2\2\0\65\2\1\0\7\2\1\0\1\2\3\0"+ 107 "\3\2\1\0\7\2\3\0\4\2\2\0\6\2\4\0\15\2\5\0"+ 108 "\3\2\1\0\7\2\17\0\4\4\32\0\5\4\20\0\2\2\51\0"+ 109 "\6\4\17\0\1\2\40\0\20\2\40\0\15\4\4\0\1\4\40\0"+ 110 "\1\2\4\0\1\2\2\0\12\2\1\0\1\2\3\0\5\2\6\0"+ 111 "\1\2\1\0\1\2\1\0\1\2\1\0\4\2\1\0\3\2\1\0"+ 112 "\7\2\46\0\44\2\u0e81\0\3\2\31\0\11\2\6\4\1\0\5\2"+ 113 "\2\0\3\2\6\0\124\2\4\0\2\4\2\0\2\2\2\0\136\2"+ 114 "\6\0\50\2\4\0\136\2\21\0\30\2\u0248\0\u19b6\2\112\0\u51a6\2"+ 115 "\132\0\u048d\2\u0773\0\u2ba4\2\u215c\0\u012e\2\322\0\7\2\14\0\5\2"+ 116 "\5\0\1\2\1\4\12\2\1\0\15\2\1\0\5\2\1\0\1\2"+ 117 "\1\0\2\2\1\0\2\2\1\0\154\2\41\0\u016b\2\22\0\100\2"+ 118 "\2\0\66\2\50\0\14\2\44\0\4\4\17\0\2\2\30\0\3\2"+ 119 "\31\0\1\2\6\0\3\2\1\0\1\2\1\0\207\2\2\0\1\4"+ 120 "\4\0\1\2\13\0\12\4\7\0\32\2\4\0\1\2\1\0\32\2"+ 121 "\12\0\132\2\3\0\6\2\2\0\6\2\2\0\6\2\2\0\3\2"+ 122 "\3\0\2\2\3\0\2\2\22\0\3\4\4\0"; 123 124 /** 125 * Translates characters to character classes 126 */ 127 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); 128 129 /** 130 * Translates DFA states to action switch labels. 131 */ 132 private static final int [] ZZ_ACTION = zzUnpackAction(); 133 134 private static final String ZZ_ACTION_PACKED_0 = 135 "\3\0\4\1\1\2\1\1\1\2\5\1\1\3\1\1"+ 136 "\1\4\15\1\1\3\2\1\1\4\1\1\1\5\1\1"+ 137 "\3\6\1\1\6\0\2\1\7\2\1\0\1\1\1\7"+ 138 "\4\2\20\1\1\10\24\1\1\10\20\1\4\0\1\11"+ 139 "\3\0\1\12\1\13\1\14\7\0\1\15\3\0\23\1"+ 140 "\1\2\1\0\1\2\55\1\1\7\23\1\1\16\11\0"+ 141 "\41\1\1\7\54\1\1\0\1\15\4\0\16\1\1\10"+ 142 "\44\1\3\0\20\1\1\10\2\1\1\10\56\1\1\10"+ 143 "\10\1"; 144 145 private static int [] zzUnpackAction() { 146 int [] result = new int[450]; 147 int offset = 0; 148 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); 149 return result; 150 } 151 152 private static int zzUnpackAction(String packed, int offset, int [] result) { 153 int i = 0; /* index in packed string */ 154 int j = offset; /* index in unpacked array */ 155 int l = packed.length(); 156 while (i < l) { 157 int count = packed.charAt(i++); 158 int value = packed.charAt(i++); 159 do result[j++] = value; while (--count > 0); 160 } 161 return j; 162 } 163 164 165 /** 166 * Translates a state to a row index in the transition table 167 */ 168 private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); 169 170 private static final String ZZ_ROWMAP_PACKED_0 = 171 "\0\0\0\71\0\162\0\253\0\344\0\u011d\0\u0156\0\u018f"+ 172 "\0\u01c8\0\u0201\0\u023a\0\u0273\0\u02ac\0\u02e5\0\u031e\0\u0357"+ 173 "\0\u0390\0\253\0\u03c9\0\u0402\0\u043b\0\u0474\0\u04ad\0\u04e6"+ 174 "\0\u051f\0\u0558\0\u0591\0\u05ca\0\u0603\0\u063c\0\u0675\0\253"+ 175 "\0\u06ae\0\u06e7\0\u0720\0\u0759\0\253\0\u0792\0\253\0\u07cb"+ 176 "\0\u0804\0\u083d\0\u0876\0\u08af\0\u08e8\0\u0921\0\u095a\0\u0993"+ 177 "\0\u09cc\0\u0a05\0\u0a3e\0\u0a77\0\u0ab0\0\u0ae9\0\253\0\u083d"+ 178 "\0\u0b22\0\u0b5b\0\u0b94\0\u0bcd\0\u0c06\0\u0c3f\0\u0c78\0\u0cb1"+ 179 "\0\u0cea\0\u0d23\0\u0d5c\0\u0d95\0\u0dce\0\u0e07\0\u0e40\0\u0e79"+ 180 "\0\u0eb2\0\u0eeb\0\u0f24\0\u0f5d\0\u0f96\0\u0fcf\0\u1008\0\u1041"+ 181 "\0\u107a\0\u10b3\0\u10ec\0\u1125\0\u115e\0\u1197\0\u11d0\0\u1209"+ 182 "\0\u1242\0\u127b\0\u12b4\0\u12ed\0\u1326\0\u135f\0\u1398\0\u13d1"+ 183 "\0\u140a\0\u1443\0\u147c\0\u14b5\0\u14ee\0\u011d\0\u1527\0\u1560"+ 184 "\0\u1599\0\u15d2\0\u160b\0\u1644\0\u167d\0\u16b6\0\u16ef\0\u1728"+ 185 "\0\u1761\0\u179a\0\u17d3\0\u180c\0\u1845\0\u187e\0\u06ae\0\u18b7"+ 186 "\0\u06e7\0\u18f0\0\u1929\0\u1962\0\u0759\0\u0792\0\253\0\253"+ 187 "\0\u199b\0\u19d4\0\u1a0d\0\u1a46\0\u1a7f\0\u1ab8\0\u1af1\0\u1b2a"+ 188 "\0\u1b63\0\u1b9c\0\u1bd5\0\u1c0e\0\u1c47\0\u1c80\0\u1cb9\0\u1cf2"+ 189 "\0\u1d2b\0\u1d64\0\u1d9d\0\u1dd6\0\u1e0f\0\u1e48\0\u1e81\0\u1eba"+ 190 "\0\u1ef3\0\u1f2c\0\u1f65\0\u1f9e\0\u1fd7\0\u2010\0\u2049\0\u2082"+ 191 "\0\u20bb\0\u20f4\0\u212d\0\u2166\0\u219f\0\u21d8\0\u2211\0\u224a"+ 192 "\0\u2283\0\u22bc\0\u22f5\0\u232e\0\u2367\0\u23a0\0\u23d9\0\u2412"+ 193 "\0\u244b\0\u2484\0\u24bd\0\u24f6\0\u252f\0\u2568\0\u25a1\0\u25da"+ 194 "\0\u2613\0\u264c\0\u2685\0\u26be\0\u26f7\0\u2730\0\u2769\0\u27a2"+ 195 "\0\u27db\0\u2814\0\u284d\0\u2886\0\u28bf\0\u28f8\0\u2931\0\u296a"+ 196 "\0\u29a3\0\u29dc\0\u2a15\0\u2a4e\0\u2a87\0\u2ac0\0\u2af9\0\u2b32"+ 197 "\0\u2b6b\0\u2ba4\0\u2bdd\0\u2c16\0\u2c4f\0\u2c88\0\u2cc1\0\u2cfa"+ 198 "\0\u2d33\0\u2d6c\0\u2da5\0\u2dde\0\u2e17\0\u2e50\0\u2e89\0\u2ec2"+ 199 "\0\u2efb\0\u2f34\0\u2f6d\0\u2fa6\0\u2fdf\0\u3018\0\u3051\0\u308a"+ 200 "\0\u30c3\0\u30fc\0\u3135\0\u316e\0\u31a7\0\u31e0\0\u3219\0\u3252"+ 201 "\0\u328b\0\u32c4\0\u32fd\0\u3336\0\u336f\0\u33a8\0\u33e1\0\u341a"+ 202 "\0\u3453\0\u348c\0\u34c5\0\u34fe\0\u3537\0\u3570\0\u35a9\0\u35e2"+ 203 "\0\u361b\0\u3654\0\u368d\0\u36c6\0\u36ff\0\u3738\0\u3771\0\u37aa"+ 204 "\0\u37e3\0\u381c\0\u3855\0\u388e\0\u38c7\0\u3900\0\u011d\0\u3939"+ 205 "\0\u3972\0\u39ab\0\u39e4\0\u3a1d\0\u3a56\0\u3a8f\0\u3ac8\0\u3b01"+ 206 "\0\u3b3a\0\u3b73\0\u3bac\0\u3be5\0\u3c1e\0\u3c57\0\u3c90\0\u3cc9"+ 207 "\0\u3d02\0\u3d3b\0\u3d74\0\u3dad\0\u3de6\0\u3e1f\0\u3e58\0\u3e91"+ 208 "\0\u3eca\0\u3f03\0\u3f3c\0\u3f75\0\u3fae\0\u3fe7\0\u4020\0\u4059"+ 209 "\0\u4092\0\u40cb\0\u4104\0\u413d\0\u4176\0\u41af\0\u41e8\0\u4221"+ 210 "\0\u425a\0\u4293\0\u42cc\0\u4305\0\253\0\u433e\0\u4377\0\u43b0"+ 211 "\0\u43e9\0\u4422\0\u445b\0\u4494\0\u44cd\0\u4506\0\u453f\0\u4578"+ 212 "\0\u45b1\0\u45ea\0\u4623\0\u465c\0\u4695\0\u46ce\0\u4707\0\u4740"+ 213 "\0\u4779\0\u47b2\0\u47eb\0\u4824\0\u485d\0\u4896\0\u48cf\0\u4908"+ 214 "\0\u4941\0\u497a\0\u49b3\0\u49ec\0\u4a25\0\u4a5e\0\u4a97\0\u4ad0"+ 215 "\0\u4b09\0\u4b42\0\u4b7b\0\u4bb4\0\u4bed\0\u4c26\0\u4c5f\0\u4c98"+ 216 "\0\u4cd1\0\u4d0a\0\u4d43\0\u4d7c\0\u4db5\0\u4dee\0\u4e27\0\u4e60"+ 217 "\0\u4e99\0\u4ed2\0\u4f0b\0\u4f44\0\u4f7d\0\u4fb6\0\u4fef\0\u5028"+ 218 "\0\u5061\0\u509a\0\u50d3\0\u510c\0\u5145\0\u517e\0\u51b7\0\u51f0"+ 219 "\0\u5229\0\u5262\0\u529b\0\u52d4\0\u530d\0\u5346\0\u537f\0\u53b8"+ 220 "\0\u53f1\0\u542a\0\u5463\0\u549c\0\u54d5\0\u550e\0\u5547\0\u5580"+ 221 "\0\u55b9\0\u55f2\0\u562b\0\u5664\0\u569d\0\u56d6\0\u570f\0\u5748"+ 222 "\0\u5781\0\u57ba\0\u57f3\0\u582c\0\u5865\0\u589e\0\u58d7\0\u5910"+ 223 "\0\u5949\0\u5982\0\u59bb\0\u59f4\0\u4740\0\u5a2d\0\u5a66\0\u5a9f"+ 224 "\0\u5ad8\0\u5b11\0\u5b4a\0\u5b83\0\u5bbc\0\u5bf5\0\u5c2e\0\u5c67"+ 225 "\0\u5ca0\0\u5cd9\0\u5d12\0\u5d4b\0\u5d84\0\u5dbd\0\u5df6\0\u5e2f"+ 226 "\0\u5e68\0\253\0\u5ea1\0\u5eda\0\u5f13\0\u5f4c\0\u5f85\0\u5fbe"+ 227 "\0\u5ff7\0\u6030"; 228 229 private static int [] zzUnpackRowMap() { 230 int [] result = new int[450]; 231 int offset = 0; 232 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); 233 return result; 234 } 235 236 private static int zzUnpackRowMap(String packed, int offset, int [] result) { 237 int i = 0; /* index in packed string */ 238 int j = offset; /* index in unpacked array */ 239 int l = packed.length(); 240 while (i < l) { 241 int high = packed.charAt(i++) << 16; 242 result[j++] = high | packed.charAt(i++); 243 } 244 return j; 245 } 246 247 /** 248 * The transition table of the DFA 249 */ 250 private static final int [] ZZ_TRANS = zzUnpackTrans(); 251 252 private static final String ZZ_TRANS_PACKED_0 = 253 "\1\4\1\5\1\6\1\7\1\4\1\10\1\11\1\12"+ 254 "\1\6\1\11\1\13\1\11\1\10\1\14\1\11\1\15"+ 255 "\1\11\1\16\1\11\1\17\1\20\1\21\1\11\1\22"+ 256 "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+ 257 "\1\33\1\6\1\34\2\6\1\35\1\36\1\37\6\10"+ 258 "\1\6\1\40\1\41\2\4\1\42\1\40\2\22\1\43"+ 259 "\1\4\61\44\1\45\4\44\1\46\2\44\66\47\1\50"+ 260 "\1\47\1\51\72\0\1\52\1\0\1\52\1\0\3\52"+ 261 "\1\0\1\52\1\0\2\52\1\53\1\52\1\54\1\52"+ 262 "\1\0\1\52\1\55\1\0\1\56\1\52\6\0\1\57"+ 263 "\7\0\1\60\2\0\6\52\15\0\22\6\1\0\2\6"+ 264 "\1\0\27\6\13\0\1\52\1\6\1\61\1\6\3\62"+ 265 "\1\6\1\62\1\6\2\62\1\6\1\62\1\6\1\62"+ 266 "\1\6\1\62\1\6\1\0\1\6\1\62\1\0\20\6"+ 267 "\6\62\1\6\13\0\1\52\1\0\1\52\1\0\1\10"+ 268 "\1\52\1\10\1\0\1\52\1\0\1\52\1\10\1\63"+ 269 "\1\64\1\65\1\66\1\67\1\70\1\67\1\71\1\72"+ 270 "\1\73\21\0\6\10\14\0\1\52\1\74\1\11\1\74"+ 271 "\3\11\1\74\1\11\1\74\2\11\1\74\1\11\1\74"+ 272 "\1\11\1\74\1\11\1\74\1\0\1\74\1\11\1\0"+ 273 "\20\74\6\11\1\74\13\0\1\52\1\0\1\52\1\0"+ 274 "\1\75\1\52\1\76\1\77\1\100\1\0\1\52\1\76"+ 275 "\1\63\1\64\1\65\1\66\1\67\1\70\1\67\1\71"+ 276 "\1\72\1\73\21\0\1\75\5\76\15\0\15\6\1\101"+ 277 "\4\6\1\0\2\6\1\0\1\102\7\6\1\103\3\6"+ 278 "\1\104\12\6\14\0\13\6\1\105\6\6\1\0\2\6"+ 279 "\1\0\2\6\1\106\4\6\1\107\17\6\14\0\22\6"+ 280 "\1\0\2\6\1\0\5\6\1\110\2\6\1\111\16\6"+ 281 "\14\0\15\6\1\112\4\6\1\0\2\6\1\0\1\113"+ 282 "\3\6\1\114\1\115\2\6\1\116\16\6\14\0\15\6"+ 283 "\1\117\4\6\1\0\1\120\1\6\1\0\10\6\1\121"+ 284 "\1\122\15\6\17\0\1\71\1\0\1\71\4\0\1\71"+ 285 "\33\0\6\71\15\0\6\6\1\123\6\6\1\124\4\6"+ 286 "\1\0\2\6\1\0\7\6\1\125\6\6\1\126\10\6"+ 287 "\14\0\22\6\1\0\2\6\1\0\1\6\1\127\2\6"+ 288 "\1\130\22\6\14\0\22\6\1\0\2\6\1\0\4\6"+ 289 "\1\131\3\6\1\132\16\6\14\0\22\6\1\0\1\133"+ 290 "\1\6\1\0\1\134\2\6\1\135\1\6\1\136\6\6"+ 291 "\1\137\2\6\1\140\7\6\14\0\22\6\1\0\1\141"+ 292 "\1\6\1\0\4\6\1\142\4\6\1\143\2\6\1\144"+ 293 "\12\6\14\0\22\6\1\0\1\145\1\6\1\0\27\6"+ 294 "\14\0\17\6\1\146\2\6\1\0\2\6\1\0\7\6"+ 295 "\1\147\17\6\14\0\10\6\1\150\11\6\1\0\1\151"+ 296 "\1\6\1\0\10\6\1\152\16\6\14\0\13\6\1\153"+ 297 "\6\6\1\0\1\154\1\6\1\0\1\155\7\6\1\156"+ 298 "\16\6\14\0\22\6\1\0\2\6\1\0\15\6\1\157"+ 299 "\11\6\14\0\13\6\1\160\6\6\1\0\2\6\1\0"+ 300 "\27\6\14\0\13\6\1\161\6\6\1\0\2\6\1\0"+ 301 "\4\6\1\162\22\6\14\0\22\6\1\0\2\6\1\0"+ 302 "\1\163\4\6\1\164\2\6\1\165\16\6\14\0\22\6"+ 303 "\1\0\2\6\1\0\14\6\1\166\12\6\12\0\60\167"+ 304 "\2\67\1\170\6\167\61\171\1\67\1\172\1\67\5\171"+ 305 "\66\0\1\173\1\174\1\0\61\175\1\45\4\175\1\176"+ 306 "\63\175\1\45\4\175\1\176\1\177\1\175\67\0\1\200"+ 307 "\3\0\2\201\2\0\1\201\1\0\4\201\1\0\7\201"+ 308 "\1\0\2\201\1\0\20\201\6\0\1\201\13\0\1\52"+ 309 "\1\0\1\52\1\0\3\52\1\0\1\52\1\0\2\52"+ 310 "\1\0\1\52\1\0\1\52\1\0\1\52\3\0\1\52"+ 311 "\21\0\6\52\45\0\1\202\4\0\1\203\66\0\1\204"+ 312 "\60\0\1\205\62\0\1\206\14\0\1\207\2\0\1\210"+ 313 "\52\0\1\211\15\0\1\212\2\0\1\213\62\0\1\214"+ 314 "\35\0\1\52\1\6\1\62\1\6\3\62\1\6\1\62"+ 315 "\1\215\2\62\1\216\1\62\1\217\1\62\1\220\1\62"+ 316 "\1\221\1\0\1\222\1\62\1\0\1\223\1\224\1\225"+ 317 "\1\226\1\227\1\230\1\231\1\232\2\6\1\233\1\6"+ 318 "\1\234\1\235\1\236\1\237\6\62\1\6\13\0\1\52"+ 319 "\1\6\1\62\1\6\3\62\1\6\1\62\1\6\2\62"+ 320 "\1\6\1\62\1\6\1\62\1\6\1\62\1\6\1\0"+ 321 "\1\6\1\62\1\0\20\6\6\62\1\6\27\0\2\67"+ 322 "\2\65\51\0\1\52\1\0\1\52\1\0\3\52\1\0"+ 323 "\1\52\1\0\2\52\1\67\1\70\1\65\1\66\1\0"+ 324 "\1\52\3\0\1\52\21\0\6\52\30\0\2\67\53\0"+ 325 "\1\52\1\0\1\52\1\0\3\52\1\0\1\52\1\0"+ 326 "\2\52\1\67\1\70\1\0\1\52\1\0\1\52\3\0"+ 327 "\1\52\21\0\6\52\20\0\1\71\1\0\1\71\4\0"+ 328 "\1\71\4\0\3\67\1\0\2\72\21\0\6\71\20\0"+ 329 "\1\240\1\0\1\240\4\0\1\240\12\0\1\241\20\0"+ 330 "\6\240\14\0\1\52\1\0\1\52\1\0\1\242\1\52"+ 331 "\1\242\1\0\1\52\1\0\1\52\1\242\1\0\1\52"+ 332 "\1\0\1\52\1\0\1\52\3\0\1\52\1\241\20\0"+ 333 "\6\242\15\0\22\74\1\0\2\74\1\0\27\74\13\0"+ 334 "\1\52\1\0\1\52\1\0\1\75\1\52\1\75\1\0"+ 335 "\1\52\1\0\1\52\1\75\1\0\1\52\1\0\1\52"+ 336 "\1\67\1\70\1\67\1\71\1\72\1\73\21\0\6\75"+ 337 "\14\0\1\52\1\0\1\52\1\0\1\75\1\52\1\76"+ 338 "\1\0\1\52\1\0\1\52\1\76\1\63\1\64\1\65"+ 339 "\1\66\1\67\1\70\1\67\1\71\1\72\1\73\21\0"+ 340 "\1\75\5\76\20\0\1\77\1\0\1\77\2\0\3\77"+ 341 "\2\63\2\65\3\77\1\0\2\77\1\0\2\77\16\0"+ 342 "\6\77\14\0\1\52\1\0\1\52\1\0\1\100\1\52"+ 343 "\1\100\1\0\1\52\1\77\2\100\1\63\1\64\1\65"+ 344 "\1\66\1\77\1\100\1\77\1\0\1\77\1\100\1\0"+ 345 "\2\77\16\0\6\100\15\0\22\6\1\0\2\6\1\0"+ 346 "\1\243\26\6\14\0\22\6\1\0\2\6\1\0\2\6"+ 347 "\1\244\1\245\23\6\14\0\22\6\1\0\2\6\1\0"+ 348 "\7\6\1\246\17\6\14\0\22\6\1\0\2\6\1\0"+ 349 "\1\247\26\6\14\0\22\6\1\0\2\6\1\0\5\6"+ 350 "\1\250\21\6\14\0\22\6\1\0\2\6\1\0\5\6"+ 351 "\1\251\21\6\14\0\22\6\1\0\2\6\1\0\2\6"+ 352 "\1\252\2\6\1\253\21\6\14\0\22\6\1\0\2\6"+ 353 "\1\0\3\6\1\254\23\6\14\0\22\6\1\0\2\6"+ 354 "\1\0\7\6\1\255\17\6\14\0\22\6\1\0\2\6"+ 355 "\1\0\10\6\1\256\16\6\14\0\15\6\1\124\4\6"+ 356 "\1\0\2\6\1\0\27\6\14\0\22\6\1\0\2\6"+ 357 "\1\0\5\6\1\257\21\6\14\0\22\6\1\0\2\6"+ 358 "\1\0\7\6\1\260\17\6\14\0\22\6\1\0\2\6"+ 359 "\1\0\4\6\1\146\22\6\14\0\15\6\1\261\4\6"+ 360 "\1\0\2\6\1\0\27\6\14\0\15\6\1\262\1\6"+ 361 "\1\263\2\6\1\0\2\6\1\0\15\6\1\264\11\6"+ 362 "\14\0\13\6\1\265\6\6\1\0\2\6\1\0\27\6"+ 363 "\14\0\22\6\1\0\2\6\1\0\7\6\1\266\17\6"+ 364 "\14\0\22\6\1\0\2\6\1\0\3\6\1\267\11\6"+ 365 "\1\270\11\6\14\0\22\6\1\0\2\6\1\0\2\6"+ 366 "\1\244\24\6\14\0\13\6\1\271\6\6\1\0\2\6"+ 367 "\1\0\27\6\14\0\22\6\1\0\1\272\1\6\1\0"+ 368 "\27\6\14\0\22\6\1\0\2\6\1\0\2\6\1\273"+ 369 "\24\6\14\0\22\6\1\0\2\6\1\0\4\6\1\274"+ 370 "\22\6\14\0\22\6\1\0\1\275\1\6\1\0\27\6"+ 371 "\14\0\22\6\1\0\2\6\1\0\10\6\1\276\16\6"+ 372 "\14\0\15\6\1\277\4\6\1\0\2\6\1\0\1\300"+ 373 "\26\6\14\0\17\6\1\301\2\6\1\0\2\6\1\0"+ 374 "\27\6\14\0\22\6\1\0\2\6\1\0\1\302\3\6"+ 375 "\1\303\22\6\14\0\22\6\1\0\2\6\1\0\6\6"+ 376 "\1\304\17\6\1\305\14\0\22\6\1\0\2\6\1\0"+ 377 "\10\6\1\306\16\6\14\0\22\6\1\0\2\6\1\0"+ 378 "\5\6\1\307\21\6\14\0\22\6\1\0\2\6\1\0"+ 379 "\12\6\1\310\14\6\14\0\13\6\1\244\6\6\1\0"+ 380 "\2\6\1\0\11\6\1\146\15\6\14\0\22\6\1\0"+ 381 "\2\6\1\0\15\6\1\311\11\6\14\0\22\6\1\0"+ 382 "\2\6\1\0\4\6\1\312\1\313\21\6\14\0\22\6"+ 383 "\1\0\2\6\1\0\3\6\1\314\1\6\1\315\1\316"+ 384 "\20\6\14\0\15\6\1\317\4\6\1\0\2\6\1\0"+ 385 "\3\6\1\320\1\6\1\321\21\6\14\0\22\6\1\0"+ 386 "\2\6\1\0\7\6\1\322\17\6\14\0\22\6\1\0"+ 387 "\2\6\1\0\7\6\1\323\17\6\14\0\22\6\1\0"+ 388 "\2\6\1\0\3\6\1\324\23\6\14\0\15\6\1\325"+ 389 "\4\6\1\0\2\6\1\0\27\6\14\0\22\6\1\0"+ 390 "\2\6\1\0\17\6\1\146\7\6\14\0\22\6\1\0"+ 391 "\2\6\1\0\12\6\1\326\1\327\13\6\14\0\22\6"+ 392 "\1\0\2\6\1\0\3\6\1\330\1\331\1\332\10\6"+ 393 "\1\160\10\6\14\0\22\6\1\0\1\333\1\6\1\0"+ 394 "\27\6\14\0\22\6\1\0\2\6\1\0\3\6\1\334"+ 395 "\23\6\14\0\22\6\1\0\2\6\1\0\1\6\1\335"+ 396 "\25\6\14\0\22\6\1\0\2\6\1\0\5\6\1\336"+ 397 "\2\6\1\337\16\6\14\0\15\6\1\340\4\6\1\0"+ 398 "\2\6\1\0\27\6\14\0\22\6\1\0\2\6\1\0"+ 399 "\4\6\1\341\22\6\14\0\15\6\1\342\4\6\1\0"+ 400 "\2\6\1\0\5\6\1\250\21\6\14\0\22\6\1\0"+ 401 "\2\6\1\0\5\6\1\343\21\6\12\0\61\167\1\67"+ 402 "\7\167\61\171\1\67\7\171\66\0\1\344\2\0\61\174"+ 403 "\1\45\7\174\2\0\22\201\1\0\2\201\1\0\27\201"+ 404 "\47\0\1\345\56\0\1\346\104\0\1\347\52\0\1\54"+ 405 "\101\0\1\347\2\0\1\350\67\0\1\351\57\0\1\352"+ 406 "\70\0\1\346\13\0\1\203\43\0\1\353\123\0\1\354"+ 407 "\53\0\1\355\42\0\21\6\1\356\1\0\2\6\1\0"+ 408 "\27\6\14\0\13\6\1\357\6\6\1\0\2\6\1\0"+ 409 "\7\6\1\360\17\6\14\0\22\6\1\0\1\361\1\6"+ 410 "\1\0\27\6\14\0\22\6\1\0\2\6\1\0\1\362"+ 411 "\4\6\1\115\2\6\1\363\16\6\14\0\22\6\1\0"+ 412 "\1\364\1\6\1\0\27\6\14\0\6\6\1\365\13\6"+ 413 "\1\0\2\6\1\0\16\6\1\126\10\6\14\0\15\6"+ 414 "\1\366\4\6\1\0\2\6\1\0\1\6\1\127\1\367"+ 415 "\24\6\14\0\22\6\1\0\2\6\1\0\1\370\7\6"+ 416 "\1\371\16\6\14\0\13\6\1\372\6\6\1\0\1\373"+ 417 "\1\6\1\0\3\6\1\374\1\6\1\375\21\6\14\0"+ 418 "\22\6\1\0\2\6\1\0\4\6\1\376\22\6\14\0"+ 419 "\22\6\1\0\2\6\1\0\1\377\26\6\14\0\17\6"+ 420 "\1\u0100\1\6\1\u0101\1\0\2\6\1\0\7\6\1\u0102"+ 421 "\17\6\14\0\10\6\1\146\11\6\1\0\2\6\1\0"+ 422 "\27\6\14\0\22\6\1\0\2\6\1\0\10\6\1\u0103"+ 423 "\16\6\14\0\13\6\1\u0104\6\6\1\0\2\6\1\0"+ 424 "\21\6\1\u0105\1\u0106\4\6\14\0\22\6\1\0\2\6"+ 425 "\1\0\10\6\1\u0107\16\6\14\0\22\6\1\0\2\6"+ 426 "\1\0\4\6\1\u0108\1\u0109\21\6\14\0\22\6\1\0"+ 427 "\2\6\1\0\1\163\4\6\1\u010a\21\6\14\0\10\6"+ 428 "\1\u010b\11\6\1\0\2\6\1\0\22\6\1\u0106\4\6"+ 429 "\17\0\1\240\1\0\1\240\4\0\1\240\4\0\3\67"+ 430 "\24\0\6\240\20\0\1\240\1\0\1\240\4\0\1\240"+ 431 "\33\0\6\240\14\0\1\52\1\0\1\52\1\0\1\242"+ 432 "\1\52\1\242\1\0\1\52\1\0\1\52\1\242\1\0"+ 433 "\1\52\1\0\1\52\1\67\1\70\1\67\2\0\1\52"+ 434 "\21\0\6\242\15\0\22\6\1\0\2\6\1\0\2\6"+ 435 "\1\313\24\6\14\0\22\6\1\0\1\146\1\6\1\0"+ 436 "\27\6\14\0\10\6\1\u010c\11\6\1\0\2\6\1\0"+ 437 "\27\6\14\0\22\6\1\0\2\6\1\0\2\6\1\u010d"+ 438 "\1\u010e\23\6\14\0\22\6\1\0\2\6\1\0\4\6"+ 439 "\1\u010f\22\6\14\0\21\6\1\146\1\0\2\6\1\0"+ 440 "\27\6\14\0\22\6\1\0\2\6\1\0\7\6\1\u0110"+ 441 "\17\6\14\0\22\6\1\0\2\6\1\0\5\6\1\u0111"+ 442 "\21\6\14\0\22\6\1\0\2\6\1\0\10\6\1\u0109"+ 443 "\16\6\14\0\22\6\1\0\1\u0112\1\6\1\0\27\6"+ 444 "\14\0\22\6\1\0\2\6\1\0\6\6\1\u010f\20\6"+ 445 "\14\0\22\6\1\0\2\6\1\0\1\u0113\26\6\14\0"+ 446 "\22\6\1\0\1\u0114\1\6\1\0\27\6\14\0\22\6"+ 447 "\1\0\2\6\1\0\1\u0115\26\6\14\0\22\6\1\0"+ 448 "\1\u0116\1\6\1\0\5\6\1\u0117\21\6\14\0\22\6"+ 449 "\1\0\1\u0118\1\6\1\0\27\6\14\0\22\6\1\0"+ 450 "\2\6\1\0\1\u0119\26\6\14\0\22\6\1\0\2\6"+ 451 "\1\0\4\6\1\u011a\22\6\14\0\22\6\1\0\2\6"+ 452 "\1\0\1\6\1\343\25\6\14\0\22\6\1\0\2\6"+ 453 "\1\0\1\u011b\26\6\14\0\22\6\1\0\1\u011c\1\6"+ 454 "\1\0\27\6\14\0\15\6\1\u011d\4\6\1\0\2\6"+ 455 "\1\0\27\6\14\0\22\6\1\0\2\6\1\0\12\6"+ 456 "\1\146\14\6\14\0\22\6\1\0\2\6\1\0\7\6"+ 457 "\1\u011e\17\6\14\0\22\6\1\0\2\6\1\0\3\6"+ 458 "\1\u011f\23\6\14\0\22\6\1\0\2\6\1\0\1\u0120"+ 459 "\26\6\14\0\22\6\1\0\2\6\1\0\1\u0121\26\6"+ 460 "\14\0\15\6\1\u010f\4\6\1\0\2\6\1\0\27\6"+ 461 "\14\0\22\6\1\0\1\u0122\1\6\1\0\27\6\14\0"+ 462 "\15\6\1\327\4\6\1\0\2\6\1\0\27\6\14\0"+ 463 "\22\6\1\0\1\u0123\1\6\1\0\27\6\14\0\22\6"+ 464 "\1\0\2\6\1\0\3\6\1\u0124\23\6\14\0\13\6"+ 465 "\1\u0125\6\6\1\0\2\6\1\0\27\6\14\0\22\6"+ 466 "\1\0\2\6\1\0\7\6\1\327\17\6\14\0\22\6"+ 467 "\1\0\1\u0126\1\6\1\0\27\6\14\0\22\6\1\0"+ 468 "\2\6\1\0\4\6\1\u0113\22\6\14\0\22\6\1\0"+ 469 "\2\6\1\0\3\6\1\245\23\6\14\0\22\6\1\0"+ 470 "\2\6\1\0\15\6\1\u0127\11\6\14\0\22\6\1\0"+ 471 "\1\u0128\1\6\1\0\27\6\14\0\22\6\1\0\1\u0129"+ 472 "\1\6\1\0\10\6\1\154\16\6\14\0\22\6\1\0"+ 473 "\2\6\1\0\2\6\1\146\24\6\14\0\13\6\1\u011c"+ 474 "\6\6\1\0\2\6\1\0\27\6\14\0\22\6\1\0"+ 475 "\2\6\1\0\7\6\1\u012a\17\6\14\0\22\6\1\0"+ 476 "\2\6\1\0\5\6\1\u012b\21\6\14\0\22\6\1\0"+ 477 "\2\6\1\0\5\6\1\u012c\21\6\14\0\22\6\1\0"+ 478 "\1\u012d\1\6\1\0\27\6\14\0\22\6\1\0\2\6"+ 479 "\1\0\3\6\1\u012e\23\6\14\0\22\6\1\0\1\154"+ 480 "\1\6\1\0\27\6\14\0\22\6\1\0\1\u012f\1\6"+ 481 "\1\0\27\6\14\0\22\6\1\0\2\6\1\0\10\6"+ 482 "\1\146\16\6\14\0\15\6\1\u0130\4\6\1\0\2\6"+ 483 "\1\0\27\6\14\0\22\6\1\0\1\u0131\1\6\1\0"+ 484 "\27\6\14\0\22\6\1\0\1\250\1\6\1\0\27\6"+ 485 "\14\0\22\6\1\0\2\6\1\0\14\6\1\u0132\12\6"+ 486 "\14\0\22\6\1\0\1\u0133\1\6\1\0\27\6\14\0"+ 487 "\22\6\1\0\2\6\1\0\7\6\1\u0134\17\6\14\0"+ 488 "\22\6\1\0\2\6\1\0\4\6\1\u0135\22\6\14\0"+ 489 "\22\6\1\0\2\6\1\0\1\265\26\6\14\0\15\6"+ 490 "\1\u0136\4\6\1\0\2\6\1\0\27\6\14\0\22\6"+ 491 "\1\0\2\6\1\0\16\6\1\u0137\10\6\14\0\22\6"+ 492 "\1\0\2\6\1\0\3\6\1\u0138\11\6\1\u0139\11\6"+ 493 "\14\0\13\6\1\244\6\6\1\0\2\6\1\0\27\6"+ 494 "\14\0\22\6\1\0\2\6\1\0\3\6\1\u013a\23\6"+ 495 "\14\0\22\6\1\0\2\6\1\0\1\u013b\26\6\14\0"+ 496 "\15\6\1\244\4\6\1\0\2\6\1\0\27\6\101\0"+ 497 "\1\45\40\0\1\u013c\56\0\1\350\70\0\1\u013d\64\0"+ 498 "\1\u013d\107\0\1\u013e\65\0\1\350\52\0\1\u013f\111\0"+ 499 "\1\u0140\66\0\1\u0141\34\0\22\6\1\0\1\u0142\1\6"+ 500 "\1\0\27\6\14\0\22\6\1\0\2\6\1\0\5\6"+ 501 "\1\u0143\21\6\14\0\22\6\1\0\2\6\1\0\1\u0144"+ 502 "\13\6\1\234\12\6\14\0\22\6\1\0\2\6\1\0"+ 503 "\1\u0145\26\6\14\0\22\6\1\0\2\6\1\0\2\6"+ 504 "\1\u0146\24\6\14\0\22\6\1\0\2\6\1\0\4\6"+ 505 "\1\u0147\22\6\14\0\10\6\1\u0148\4\6\1\u0149\4\6"+ 506 "\1\0\2\6\1\0\27\6\14\0\10\6\1\u014a\11\6"+ 507 "\1\0\2\6\1\0\27\6\14\0\22\6\1\0\2\6"+ 508 "\1\0\5\6\1\u014b\21\6\14\0\22\6\1\0\2\6"+ 509 "\1\0\2\6\1\u014c\7\6\1\146\14\6\14\0\22\6"+ 510 "\1\0\2\6\1\0\2\6\1\327\24\6\14\0\6\6"+ 511 "\1\146\13\6\1\0\2\6\1\0\27\6\14\0\22\6"+ 512 "\1\0\2\6\1\0\15\6\1\u014d\11\6\14\0\22\6"+ 513 "\1\0\2\6\1\0\1\300\26\6\14\0\21\6\1\u014e"+ 514 "\1\0\2\6\1\0\27\6\14\0\22\6\1\0\2\6"+ 515 "\1\0\7\6\1\u014f\17\6\14\0\22\6\1\0\2\6"+ 516 "\1\0\11\6\1\u0150\15\6\14\0\22\6\1\0\2\6"+ 517 "\1\0\5\6\1\124\21\6\14\0\1\6\1\u0151\20\6"+ 518 "\1\0\2\6\1\0\27\6\14\0\22\6\1\0\1\u0152"+ 519 "\1\6\1\0\27\6\14\0\15\6\1\317\4\6\1\0"+ 520 "\2\6\1\0\3\6\1\u0153\23\6\14\0\22\6\1\0"+ 521 "\2\6\1\0\6\6\1\231\1\6\1\u0154\16\6\14\0"+ 522 "\15\6\1\u0155\4\6\1\0\2\6\1\0\27\6\14\0"+ 523 "\22\6\1\0\2\6\1\0\24\6\1\u0156\2\6\14\0"+ 524 "\22\6\1\0\2\6\1\0\25\6\1\146\1\6\14\0"+ 525 "\22\6\1\0\2\6\1\0\10\6\1\u0121\16\6\14\0"+ 526 "\22\6\1\0\2\6\1\0\10\6\1\u0157\16\6\14\0"+ 527 "\22\6\1\0\2\6\1\0\7\6\1\146\17\6\14\0"+ 528 "\22\6\1\0\2\6\1\0\4\6\1\u0158\22\6\14\0"+ 529 "\22\6\1\0\2\6\1\0\14\6\1\u0159\12\6\14\0"+ 530 "\22\6\1\0\2\6\1\0\14\6\1\146\12\6\14\0"+ 531 "\22\6\1\0\2\6\1\0\3\6\1\u0150\23\6\14\0"+ 532 "\22\6\1\0\2\6\1\0\5\6\1\u015a\21\6\14\0"+ 533 "\22\6\1\0\2\6\1\0\6\6\1\146\20\6\14\0"+ 534 "\22\6\1\0\2\6\1\0\6\6\1\304\20\6\14\0"+ 535 "\22\6\1\0\2\6\1\0\4\6\1\u015b\22\6\14\0"+ 536 "\22\6\1\0\2\6\1\0\3\6\1\u010f\23\6\14\0"+ 537 "\22\6\1\0\2\6\1\0\7\6\1\u015c\17\6\14\0"+ 538 "\15\6\1\u015d\4\6\1\0\2\6\1\0\27\6\14\0"+ 539 "\6\6\1\u015e\13\6\1\0\2\6\1\0\27\6\14\0"+ 540 "\22\6\1\0\2\6\1\0\12\6\1\u015e\14\6\14\0"+ 541 "\22\6\1\0\2\6\1\0\3\6\1\244\2\6\1\u0137"+ 542 "\20\6\14\0\13\6\1\u015f\6\6\1\0\2\6\1\0"+ 543 "\27\6\14\0\22\6\1\0\1\u0160\1\6\1\0\27\6"+ 544 "\14\0\22\6\1\0\2\6\1\0\12\6\1\u0161\14\6"+ 545 "\14\0\22\6\1\0\2\6\1\0\4\6\1\u0109\22\6"+ 546 "\14\0\22\6\1\0\2\6\1\0\5\6\1\u0162\21\6"+ 547 "\14\0\22\6\1\0\2\6\1\0\3\6\1\146\23\6"+ 548 "\14\0\22\6\1\0\2\6\1\0\4\6\1\u0163\22\6"+ 549 "\14\0\22\6\1\0\2\6\1\0\11\6\1\146\15\6"+ 550 "\14\0\22\6\1\0\2\6\1\0\13\6\1\146\13\6"+ 551 "\14\0\10\6\1\u0164\11\6\1\0\2\6\1\0\27\6"+ 552 "\14\0\10\6\1\u0165\11\6\1\0\2\6\1\0\27\6"+ 553 "\14\0\22\6\1\0\2\6\1\0\5\6\1\u0166\21\6"+ 554 "\14\0\10\6\1\u011e\11\6\1\0\2\6\1\0\27\6"+ 555 "\14\0\22\6\1\0\2\6\1\0\10\6\1\u0167\16\6"+ 556 "\14\0\15\6\1\u0137\4\6\1\0\2\6\1\0\27\6"+ 557 "\14\0\21\6\1\u0168\1\0\2\6\1\0\5\6\1\250"+ 558 "\1\6\1\u0169\17\6\14\0\22\6\1\0\2\6\1\0"+ 559 "\1\250\26\6\14\0\22\6\1\0\2\6\1\0\3\6"+ 560 "\1\u016a\23\6\14\0\22\6\1\0\2\6\1\0\2\6"+ 561 "\1\u016b\24\6\14\0\22\6\1\0\2\6\1\0\7\6"+ 562 "\1\244\17\6\14\0\22\6\1\0\2\6\1\0\4\6"+ 563 "\1\u016c\22\6\14\0\22\6\1\0\2\6\1\0\10\6"+ 564 "\1\u016d\16\6\14\0\22\6\1\0\2\6\1\0\4\6"+ 565 "\1\u0136\22\6\14\0\22\6\1\0\2\6\1\0\15\6"+ 566 "\1\u016e\11\6\14\0\22\6\1\0\2\6\1\0\2\6"+ 567 "\1\u016f\24\6\14\0\22\6\1\0\2\6\1\0\4\6"+ 568 "\1\u0170\22\6\14\0\22\6\1\0\2\6\1\0\3\6"+ 569 "\1\314\23\6\14\0\15\6\1\317\4\6\1\0\2\6"+ 570 "\1\0\27\6\14\0\22\6\1\0\2\6\1\0\1\u0171"+ 571 "\26\6\14\0\22\6\1\0\2\6\1\0\5\6\1\231"+ 572 "\21\6\14\0\22\6\1\0\2\6\1\0\1\u0172\26\6"+ 573 "\14\0\22\6\1\0\1\u0173\1\6\1\0\27\6\14\0"+ 574 "\22\6\1\0\1\u0174\1\6\1\0\27\6\14\0\13\6"+ 575 "\1\u015b\6\6\1\0\2\6\1\0\27\6\14\0\22\6"+ 576 "\1\0\2\6\1\0\3\6\1\166\23\6\50\0\1\u013d"+ 577 "\66\0\1\u013d\51\0\1\u0175\107\0\1\u0176\76\0\1\u0177"+ 578 "\30\0\10\6\1\u0178\11\6\1\0\2\6\1\0\27\6"+ 579 "\14\0\21\6\1\u0126\1\0\2\6\1\0\27\6\14\0"+ 580 "\15\6\1\252\4\6\1\0\2\6\1\0\27\6\14\0"+ 581 "\22\6\1\0\2\6\1\0\16\6\1\244\10\6\14\0"+ 582 "\22\6\1\0\2\6\1\0\3\6\1\u014e\23\6\14\0"+ 583 "\10\6\1\u0179\11\6\1\0\2\6\1\0\27\6\14\0"+ 584 "\15\6\1\u017a\4\6\1\0\2\6\1\0\27\6\14\0"+ 585 "\22\6\1\0\1\u017b\1\6\1\0\27\6\14\0\22\6"+ 586 "\1\0\1\u017c\1\6\1\0\27\6\14\0\22\6\1\0"+ 587 "\2\6\1\0\6\6\1\u017d\20\6\14\0\13\6\1\u017e"+ 588 "\6\6\1\0\2\6\1\0\27\6\14\0\22\6\1\0"+ 589 "\1\116\1\6\1\0\27\6\14\0\10\6\1\u017f\11\6"+ 590 "\1\0\2\6\1\0\27\6\14\0\22\6\1\0\2\6"+ 591 "\1\0\6\6\1\u0180\20\6\14\0\1\6\1\u0123\20\6"+ 592 "\1\0\2\6\1\0\27\6\14\0\22\6\1\0\1\u0181"+ 593 "\1\6\1\0\7\6\1\u0182\17\6\14\0\22\6\1\0"+ 594 "\2\6\1\0\7\6\1\u0183\17\6\14\0\22\6\1\0"+ 595 "\1\u0184\1\6\1\0\20\6\1\146\1\u0185\1\u0106\1\u0186"+ 596 "\3\6\14\0\22\6\1\0\2\6\1\0\15\6\1\146"+ 597 "\11\6\14\0\22\6\1\0\2\6\1\0\3\6\1\u0187"+ 598 "\23\6\14\0\22\6\1\0\2\6\1\0\20\6\1\u0188"+ 599 "\6\6\14\0\22\6\1\0\2\6\1\0\15\6\1\u0139"+ 600 "\11\6\14\0\22\6\1\0\2\6\1\0\3\6\1\u0189"+ 601 "\23\6\14\0\22\6\1\0\2\6\1\0\1\u018a\26\6"+ 602 "\14\0\22\6\1\0\2\6\1\0\7\6\1\340\17\6"+ 603 "\14\0\22\6\1\0\2\6\1\0\1\u0178\26\6\14\0"+ 604 "\21\6\1\u018b\1\0\2\6\1\0\27\6\14\0\15\6"+ 605 "\1\u0120\4\6\1\0\2\6\1\0\27\6\14\0\22\6"+ 606 "\1\0\2\6\1\0\15\6\1\u018c\11\6\14\0\15\6"+ 607 "\1\u011e\4\6\1\0\2\6\1\0\27\6\14\0\10\6"+ 608 "\1\u018d\11\6\1\0\2\6\1\0\27\6\14\0\22\6"+ 609 "\1\0\2\6\1\0\5\6\1\u018e\21\6\14\0\10\6"+ 610 "\1\u018f\11\6\1\0\2\6\1\0\27\6\14\0\22\6"+ 611 "\1\0\2\6\1\0\1\u0125\26\6\14\0\22\6\1\0"+ 612 "\2\6\1\0\3\6\1\u0190\23\6\14\0\22\6\1\0"+ 613 "\2\6\1\0\1\u0191\26\6\14\0\10\6\1\u0150\11\6"+ 614 "\1\0\2\6\1\0\27\6\14\0\17\6\1\146\2\6"+ 615 "\1\0\2\6\1\0\27\6\14\0\22\6\1\0\1\u0167"+ 616 "\1\6\1\0\27\6\14\0\22\6\1\0\2\6\1\0"+ 617 "\1\u017e\26\6\14\0\22\6\1\0\1\u0192\1\6\1\0"+ 618 "\27\6\14\0\22\6\1\0\2\6\1\0\3\6\1\u014d"+ 619 "\23\6\14\0\17\6\1\u0193\2\6\1\0\2\6\1\0"+ 620 "\5\6\1\u0194\21\6\14\0\22\6\1\0\2\6\1\0"+ 621 "\7\6\1\u015d\17\6\14\0\22\6\1\0\2\6\1\0"+ 622 "\3\6\1\116\23\6\14\0\22\6\1\0\2\6\1\0"+ 623 "\15\6\1\u0193\11\6\14\0\22\6\1\0\2\6\1\0"+ 624 "\10\6\1\154\16\6\14\0\22\6\1\0\2\6\1\0"+ 625 "\3\6\1\u0195\23\6\14\0\22\6\1\0\2\6\1\0"+ 626 "\3\6\1\244\23\6\14\0\10\6\1\u0196\11\6\1\0"+ 627 "\2\6\1\0\27\6\14\0\22\6\1\0\2\6\1\0"+ 628 "\4\6\1\u0197\22\6\35\0\1\347\100\0\1\u013d\65\0"+ 629 "\1\u013d\42\0\15\6\1\146\4\6\1\0\2\6\1\0"+ 630 "\27\6\14\0\22\6\1\0\1\u0198\1\6\1\0\27\6"+ 631 "\14\0\22\6\1\0\2\6\1\0\2\6\1\u0199\24\6"+ 632 "\14\0\22\6\1\0\2\6\1\0\6\6\1\u0137\20\6"+ 633 "\14\0\22\6\1\0\2\6\1\0\15\6\1\u011e\11\6"+ 634 "\14\0\22\6\1\0\2\6\1\0\7\6\1\u0126\17\6"+ 635 "\14\0\22\6\1\0\2\6\1\0\12\6\1\244\14\6"+ 636 "\14\0\22\6\1\0\2\6\1\0\1\u019a\26\6\14\0"+ 637 "\15\6\1\u019b\4\6\1\0\2\6\1\0\27\6\14\0"+ 638 "\6\6\1\u019c\13\6\1\0\2\6\1\0\27\6\14\0"+ 639 "\22\6\1\0\2\6\1\0\10\6\1\u019d\16\6\14\0"+ 640 "\22\6\1\0\2\6\1\0\3\6\1\u019e\23\6\14\0"+ 641 "\22\6\1\0\2\6\1\0\4\6\1\u019f\22\6\14\0"+ 642 "\22\6\1\0\2\6\1\0\22\6\1\146\4\6\14\0"+ 643 "\22\6\1\0\2\6\1\0\24\6\1\146\2\6\14\0"+ 644 "\22\6\1\0\2\6\1\0\5\6\1\u01a0\21\6\14\0"+ 645 "\21\6\1\146\1\0\2\6\1\0\5\6\1\146\21\6"+ 646 "\14\0\13\6\1\u01a1\6\6\1\0\2\6\1\0\27\6"+ 647 "\14\0\22\6\1\0\2\6\1\0\4\6\1\u01a2\22\6"+ 648 "\14\0\1\6\1\u01a3\20\6\1\0\2\6\1\0\27\6"+ 649 "\14\0\22\6\1\0\2\6\1\0\10\6\1\u01a4\16\6"+ 650 "\14\0\22\6\1\0\2\6\1\0\1\u0196\26\6\14\0"+ 651 "\10\6\1\u01a5\11\6\1\0\2\6\1\0\27\6\14\0"+ 652 "\22\6\1\0\2\6\1\0\5\6\1\u011e\21\6\14\0"+ 653 "\22\6\1\0\2\6\1\0\1\u01a6\26\6\14\0\22\6"+ 654 "\1\0\2\6\1\0\2\6\1\u011e\24\6\14\0\22\6"+ 655 "\1\0\2\6\1\0\4\6\1\u01a7\22\6\14\0\22\6"+ 656 "\1\0\2\6\1\0\1\u01a8\26\6\14\0\22\6\1\0"+ 657 "\2\6\1\0\10\6\1\u01a9\16\6\14\0\22\6\1\0"+ 658 "\2\6\1\0\10\6\1\116\16\6\14\0\22\6\1\0"+ 659 "\2\6\1\0\3\6\1\327\23\6\14\0\22\6\1\0"+ 660 "\2\6\1\0\3\6\1\u0120\23\6\14\0\22\6\1\0"+ 661 "\2\6\1\0\5\6\1\332\21\6\14\0\22\6\1\0"+ 662 "\2\6\1\0\15\6\1\u01aa\11\6\14\0\15\6\1\u0178"+ 663 "\4\6\1\0\2\6\1\0\27\6\14\0\22\6\1\0"+ 664 "\1\u01ab\1\6\1\0\27\6\14\0\22\6\1\0\2\6"+ 665 "\1\0\5\6\1\u01ac\21\6\14\0\22\6\1\0\2\6"+ 666 "\1\0\3\6\1\u01ad\23\6\14\0\22\6\1\0\2\6"+ 667 "\1\0\5\6\1\u01ae\21\6\14\0\17\6\1\u0193\2\6"+ 668 "\1\0\2\6\1\0\27\6\14\0\22\6\1\0\2\6"+ 669 "\1\0\15\6\1\u0180\11\6\14\0\22\6\1\0\2\6"+ 670 "\1\0\1\u01af\26\6\14\0\1\6\1\u01b0\20\6\1\0"+ 671 "\2\6\1\0\27\6\14\0\22\6\1\0\2\6\1\0"+ 672 "\1\313\26\6\14\0\22\6\1\0\2\6\1\0\4\6"+ 673 "\1\u011e\22\6\14\0\22\6\1\0\2\6\1\0\7\6"+ 674 "\1\u0120\17\6\14\0\22\6\1\0\2\6\1\0\15\6"+ 675 "\1\u01b1\11\6\14\0\10\6\1\244\11\6\1\0\2\6"+ 676 "\1\0\27\6\14\0\22\6\1\0\2\6\1\0\4\6"+ 677 "\1\u01b2\22\6\14\0\22\6\1\0\1\231\1\6\1\0"+ 678 "\27\6\14\0\1\6\1\u01b3\20\6\1\0\2\6\1\0"+ 679 "\27\6\14\0\22\6\1\0\2\6\1\0\2\6\1\u01b4"+ 680 "\24\6\14\0\1\6\1\u01b5\20\6\1\0\2\6\1\0"+ 681 "\27\6\14\0\17\6\1\u01b6\2\6\1\0\2\6\1\0"+ 682 "\27\6\14\0\15\6\1\u01ab\4\6\1\0\2\6\1\0"+ 683 "\27\6\14\0\22\6\1\0\2\6\1\0\3\6\1\u01b7"+ 684 "\23\6\14\0\22\6\1\0\2\6\1\0\4\6\1\u01b8"+ 685 "\22\6\14\0\1\6\1\u0130\20\6\1\0\2\6\1\0"+ 686 "\27\6\14\0\22\6\1\0\2\6\1\0\5\6\1\u01b9"+ 687 "\21\6\14\0\22\6\1\0\2\6\1\0\3\6\1\313"+ 688 "\23\6\14\0\22\6\1\0\1\u0181\1\6\1\0\27\6"+ 689 "\14\0\22\6\1\0\2\6\1\0\5\6\1\u014d\21\6"+ 690 "\14\0\22\6\1\0\2\6\1\0\27\6\1\u01ba\13\0"+ 691 "\22\6\1\0\1\u01bb\1\6\1\0\27\6\14\0\22\6"+ 692 "\1\0\2\6\1\0\7\6\1\u01bc\17\6\14\0\22\6"+ 693 "\1\0\2\6\1\0\3\6\1\u01a5\23\6\14\0\22\6"+ 694 "\1\0\2\6\1\0\14\6\1\u01bd\12\6\14\0\22\6"+ 695 "\1\0\1\u01be\1\6\1\0\27\6\14\0\22\6\1\0"+ 696 "\2\6\1\0\4\6\1\u01bf\22\6\14\0\22\6\1\0"+ 697 "\2\6\1\0\5\6\1\u01c0\21\6\14\0\22\6\1\0"+ 698 "\2\6\1\0\3\6\1\u01c1\23\6\14\0\22\6\1\0"+ 699 "\2\6\1\0\1\u01c2\26\6\14\0\22\6\1\0\2\6"+ 700 "\1\0\7\6\1\u01a8\17\6\12\0"; 701 702 private static int [] zzUnpackTrans() { 703 int [] result = new int[24681]; 704 int offset = 0; 705 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); 706 return result; 707 } 708 709 private static int zzUnpackTrans(String packed, int offset, int [] result) { 710 int i = 0; /* index in packed string */ 711 int j = offset; /* index in unpacked array */ 712 int l = packed.length(); 713 while (i < l) { 714 int count = packed.charAt(i++); 715 int value = packed.charAt(i++); 716 value--; 717 do result[j++] = value; while (--count > 0); 718 } 719 return j; 720 } 721 722 723 /* error codes */ 724 private static final int ZZ_UNKNOWN_ERROR = 0; 725 private static final int ZZ_NO_MATCH = 1; 726 private static final int ZZ_PUSHBACK_2BIG = 2; 727 728 /* error messages for the codes above */ 729 private static final String ZZ_ERROR_MSG[] = { 730 "Unkown internal scanner error", 731 "Error: could not match input", 732 "Error: pushback value was too large" 733 }; 734 735 /** 736 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code> 737 */ 738 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); 739 740 private static final String ZZ_ATTRIBUTE_PACKED_0 = 741 "\3\0\1\11\15\1\1\11\15\1\1\11\4\1\1\11"+ 742 "\1\1\1\11\3\1\6\0\6\1\1\11\2\1\1\0"+ 743 "\74\1\4\0\1\1\3\0\2\11\1\1\7\0\1\1"+ 744 "\3\0\24\1\1\0\103\1\11\0\116\1\1\0\1\11"+ 745 "\4\0\63\1\3\0\102\1\1\11\10\1"; 746 747 private static int [] zzUnpackAttribute() { 748 int [] result = new int[450]; 749 int offset = 0; 750 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); 751 return result; 752 } 753 754 private static int zzUnpackAttribute(String packed, int offset, int [] result) { 755 int i = 0; /* index in packed string */ 756 int j = offset; /* index in unpacked array */ 757 int l = packed.length(); 758 while (i < l) { 759 int count = packed.charAt(i++); 760 int value = packed.charAt(i++); 761 do result[j++] = value; while (--count > 0); 762 } 763 return j; 764 } 765 766 /** the input device */ 767 private java.io.Reader zzReader; 768 769 /** the current state of the DFA */ 770 private int zzState; 771 772 /** the current lexical state */ 773 private int zzLexicalState = YYINITIAL; 774 775 /** this buffer contains the current text to be matched and is 776 the source of the yytext() string */ 777 private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; 778 779 /** the textposition at the last accepting state */ 780 private int zzMarkedPos; 781 782 /** the textposition at the last state to be included in yytext */ 783 private int zzPushbackPos; 784 785 /** the current text position in the buffer */ 786 private int zzCurrentPos; 787 788 /** startRead marks the beginning of the yytext() string in the buffer */ 789 private int zzStartRead; 790 791 /** endRead marks the last character in the buffer, that has been read 792 from input */ 793 private int zzEndRead; 794 795 /** number of newlines encountered up to the start of the matched text */ 796 private int yyline; 797 798 /** the number of characters up to the start of the matched text */ 799 private int yychar; 800 801 /** 802 * the number of characters from the last newline up to the start of the 803 * matched text 804 */ 805 private int yycolumn; 806 807 /** 808 * zzAtBOL == true <=> the scanner is currently at the beginning of a line 809 */ 810 private boolean zzAtBOL = true; 811 812 /** zzAtEOF == true <=> the scanner is at the EOF */ 813 private boolean zzAtEOF; 814 815 /* user code: */ 816 /* styles */ 817 818 public static final byte PLAIN_STYLE = 1; 819 public static final byte KEYWORD_STYLE = 2; 820 public static final byte TYPE_STYLE = 3; 821 public static final byte OPERATOR_STYLE = 4; 822 public static final byte SEPARATOR_STYLE = 5; 823 public static final byte LITERAL_STYLE = 6; 824 public static final byte CPP_COMMENT_STYLE = 7; 825 public static final byte DOXYGEN_COMMENT_STYLE = 8; 826 public static final byte DOXYGEN_TAG_STYLE = 9; 827 public static final byte PREPROC_STYLE = 10; 828 829 /* Highlighter implementation */ 830 831 public int getStyleCount() 832 { 833 return 10; 834 } 835 836 public byte getStartState() 837 { 838 return YYINITIAL+1; 839 } 840 841 public byte getCurrentState() 842 { 843 return (byte) (yystate()+1); 844 } 845 846 public void setState(byte newState) 847 { 848 yybegin(newState-1); 849 } 850 851 public byte getNextToken() 852 throws IOException 853 { 854 return (byte) yylex(); 855 } 856 857 public int getTokenLength() 858 { 859 return yylength(); 860 } 861 862 public void setReader(Reader r) 863 { 864 this.zzReader = r; 865 } 866 867 public CppHighlighter() 868 { 869 } 870 871 872 /** 873 * Creates a new scanner 874 * There is also a java.io.InputStream version of this constructor. 875 * 876 * @param in the java.io.Reader to read input from. 877 */ 878 public CppHighlighter(java.io.Reader in) { 879 this.zzReader = in; 880 } 881 882 /** 883 * Creates a new scanner. 884 * There is also java.io.Reader version of this constructor. 885 * 886 * @param in the java.io.Inputstream to read input from. 887 */ 888 public CppHighlighter(java.io.InputStream in) { 889 this(new java.io.InputStreamReader(in)); 890 } 891 892 /** 893 * Unpacks the compressed character translation table. 894 * 895 * @param packed the packed character translation table 896 * @return the unpacked character translation table 897 */ 898 private static char [] zzUnpackCMap(String packed) { 899 char [] map = new char[0x10000]; 900 int i = 0; /* index in packed string */ 901 int j = 0; /* index in unpacked array */ 902 while (i < 1674) { 903 int count = packed.charAt(i++); 904 char value = packed.charAt(i++); 905 do map[j++] = value; while (--count > 0); 906 } 907 return map; 908 } 909 910 911 /** 912 * Refills the input buffer. 913 * 914 * @return <code>false</code>, iff there was new input. 915 * 916 * @exception java.io.IOException if any I/O-Error occurs 917 */ 918 private boolean zzRefill() throws java.io.IOException { 919 920 /* first: make room (if you can) */ 921 if (zzStartRead > 0) { 922 System.arraycopy(zzBuffer, zzStartRead, 923 zzBuffer, 0, 924 zzEndRead-zzStartRead); 925 926 /* translate stored positions */ 927 zzEndRead-= zzStartRead; 928 zzCurrentPos-= zzStartRead; 929 zzMarkedPos-= zzStartRead; 930 zzPushbackPos-= zzStartRead; 931 zzStartRead = 0; 932 } 933 934 /* is the buffer big enough? */ 935 if (zzCurrentPos >= zzBuffer.length) { 936 /* if not: blow it up */ 937 char newBuffer[] = new char[zzCurrentPos*2]; 938 System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); 939 zzBuffer = newBuffer; 940 } 941 942 /* finally: fill the buffer with new input */ 943 int numRead = zzReader.read(zzBuffer, zzEndRead, 944 zzBuffer.length-zzEndRead); 945 946 if (numRead < 0) { 947 return true; 948 } 949 else { 950 zzEndRead+= numRead; 951 return false; 952 } 953 } 954 955 956 /** 957 * Closes the input stream. 958 */ 959 public final void yyclose() throws java.io.IOException { 960 zzAtEOF = true; /* indicate end of file */ 961 zzEndRead = zzStartRead; /* invalidate buffer */ 962 963 if (zzReader != null) 964 zzReader.close(); 965 } 966 967 968 /** 969 * Resets the scanner to read from a new input stream. 970 * Does not close the old reader. 971 * 972 * All internal variables are reset, the old input stream 973 * <b>cannot</b> be reused (internal buffer is discarded and lost). 974 * Lexical state is set to <tt>ZZ_INITIAL</tt>. 975 * 976 * @param reader the new input stream 977 */ 978 public final void yyreset(java.io.Reader reader) { 979 zzReader = reader; 980 zzAtBOL = true; 981 zzAtEOF = false; 982 zzEndRead = zzStartRead = 0; 983 zzCurrentPos = zzMarkedPos = zzPushbackPos = 0; 984 yyline = yychar = yycolumn = 0; 985 zzLexicalState = YYINITIAL; 986 } 987 988 989 /** 990 * Returns the current lexical state. 991 */ 992 public final int yystate() { 993 return zzLexicalState; 994 } 995 996 997 /** 998 * Enters a new lexical state 999 * 1000 * @param newState the new lexical state 1001 */ 1002 public final void yybegin(int newState) { 1003 zzLexicalState = newState; 1004 } 1005 1006 1007 /** 1008 * Returns the text matched by the current regular expression. 1009 */ 1010 public final String yytext() { 1011 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); 1012 } 1013 1014 1015 /** 1016 * Returns the character at position <tt>pos</tt> from the 1017 * matched text. 1018 * 1019 * It is equivalent to yytext().charAt(pos), but faster 1020 * 1021 * @param pos the position of the character to fetch. 1022 * A value from 0 to yylength()-1. 1023 * 1024 * @return the character at position pos 1025 */ 1026 public final char yycharat(int pos) { 1027 return zzBuffer[zzStartRead+pos]; 1028 } 1029 1030 1031 /** 1032 * Returns the length of the matched text region. 1033 */ 1034 public final int yylength() { 1035 return zzMarkedPos-zzStartRead; 1036 } 1037 1038 1039 /** 1040 * Reports an error that occured while scanning. 1041 * 1042 * In a wellformed scanner (no or only correct usage of 1043 * yypushback(int) and a match-all fallback rule) this method 1044 * will only be called with things that "Can't Possibly Happen". 1045 * If this method is called, something is seriously wrong 1046 * (e.g. a JFlex bug producing a faulty scanner etc.). 1047 * 1048 * Usual syntax/scanner level error handling should be done 1049 * in error fallback rules. 1050 * 1051 * @param errorCode the code of the errormessage to display 1052 */ 1053 private void zzScanError(int errorCode) { 1054 String message; 1055 try { 1056 message = ZZ_ERROR_MSG[errorCode]; 1057 } 1058 catch (ArrayIndexOutOfBoundsException e) { 1059 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; 1060 } 1061 1062 throw new Error(message); 1063 } 1064 1065 1066 /** 1067 * Pushes the specified amount of characters back into the input stream. 1068 * 1069 * They will be read again by then next call of the scanning method 1070 * 1071 * @param number the number of characters to be read again. 1072 * This number must not be greater than yylength()! 1073 */ 1074 public void yypushback(int number) { 1075 if ( number > yylength() ) 1076 zzScanError(ZZ_PUSHBACK_2BIG); 1077 1078 zzMarkedPos -= number; 1079 } 1080 1081 1082 /** 1083 * Resumes scanning until the next regular expression is matched, 1084 * the end of input is encountered or an I/O-Error occurs. 1085 * 1086 * @return the next token 1087 * @exception java.io.IOException if any I/O-Error occurs 1088 */ 1089 public int yylex() throws java.io.IOException { 1090 int zzInput; 1091 int zzAction; 1092 1093 // cached fields: 1094 int zzCurrentPosL; 1095 int zzMarkedPosL; 1096 int zzEndReadL = zzEndRead; 1097 char [] zzBufferL = zzBuffer; 1098 char [] zzCMapL = ZZ_CMAP; 1099 1100 int [] zzTransL = ZZ_TRANS; 1101 int [] zzRowMapL = ZZ_ROWMAP; 1102 int [] zzAttrL = ZZ_ATTRIBUTE; 1103 1104 while (true) { 1105 zzMarkedPosL = zzMarkedPos; 1106 1107 zzAction = -1; 1108 1109 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; 1110 1111 zzState = zzLexicalState; 1112 1113 1114 zzForAction: { 1115 while (true) { 1116 1117 if (zzCurrentPosL < zzEndReadL) 1118 zzInput = zzBufferL[zzCurrentPosL++]; 1119 else if (zzAtEOF) { 1120 zzInput = YYEOF; 1121 break zzForAction; 1122 } 1123 else { 1124 // store back cached positions 1125 zzCurrentPos = zzCurrentPosL; 1126 zzMarkedPos = zzMarkedPosL; 1127 boolean eof = zzRefill(); 1128 // get translated positions and possibly new buffer 1129 zzCurrentPosL = zzCurrentPos; 1130 zzMarkedPosL = zzMarkedPos; 1131 zzBufferL = zzBuffer; 1132 zzEndReadL = zzEndRead; 1133 if (eof) { 1134 zzInput = YYEOF; 1135 break zzForAction; 1136 } 1137 else { 1138 zzInput = zzBufferL[zzCurrentPosL++]; 1139 } 1140 } 1141 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; 1142 if (zzNext == -1) break zzForAction; 1143 zzState = zzNext; 1144 1145 int zzAttributes = zzAttrL[zzState]; 1146 if ( (zzAttributes & 1) == 1 ) { 1147 zzAction = zzState; 1148 zzMarkedPosL = zzCurrentPosL; 1149 if ( (zzAttributes & 8) == 8 ) break zzForAction; 1150 } 1151 1152 } 1153 } 1154 1155 // store back cached position 1156 zzMarkedPos = zzMarkedPosL; 1157 1158 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { 1159 case 12: 1160 { return DOXYGEN_TAG_STYLE; 1161 } 1162 case 15: break; 1163 case 6: 1164 { return DOXYGEN_COMMENT_STYLE; 1165 } 1166 case 16: break; 1167 case 1: 1168 { return PLAIN_STYLE; 1169 } 1170 case 17: break; 1171 case 8: 1172 { return KEYWORD_STYLE; 1173 } 1174 case 18: break; 1175 case 14: 1176 { yybegin(IN_DOXYGEN_COMMENT); return DOXYGEN_COMMENT_STYLE; 1177 } 1178 case 19: break; 1179 case 4: 1180 { return OPERATOR_STYLE; 1181 } 1182 case 20: break; 1183 case 2: 1184 { return LITERAL_STYLE; 1185 } 1186 case 21: break; 1187 case 3: 1188 { return SEPARATOR_STYLE; 1189 } 1190 case 22: break; 1191 case 7: 1192 { return TYPE_STYLE; 1193 } 1194 case 23: break; 1195 case 5: 1196 { return CPP_COMMENT_STYLE; 1197 } 1198 case 24: break; 1199 case 11: 1200 { yybegin(YYINITIAL); return DOXYGEN_COMMENT_STYLE; 1201 } 1202 case 25: break; 1203 case 9: 1204 { yybegin(IN_COMMENT); return CPP_COMMENT_STYLE; 1205 } 1206 case 26: break; 1207 case 10: 1208 { yybegin(YYINITIAL); return CPP_COMMENT_STYLE; 1209 } 1210 case 27: break; 1211 case 13: 1212 { return PREPROC_STYLE; 1213 } 1214 case 28: break; 1215 default: 1216 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { 1217 zzAtEOF = true; 1218 return YYEOF; 1219 } 1220 else { 1221 zzScanError(ZZ_NO_MATCH); 1222 } 1223 } 1224 } 1225 } 1226 1227 1228}