001/* The following code was generated by JFlex 1.4.3 on 14/04/15 14:51 */ 002 003/* 004 * Copyright (c) 2006-2013 Nuxeo SA (http://nuxeo.com/) and others. 005 * 006 * All rights reserved. This program and the accompanying materials 007 * are made available under the terms of the Eclipse Public License v1.0 008 * which accompanies this distribution, and is available at 009 * http://www.eclipse.org/legal/epl-v10.html 010 * 011 * Contributors: 012 * Bogdan Stefanescu 013 * Florent Guillaume 014 */ 015package org.nuxeo.ecm.core.query.sql.parser; 016 017import java_cup.runtime.*; 018import org.nuxeo.ecm.core.query.*; 019 020/** 021 * Lexer for NXQL 022 */ 023 024 025public class Scanner implements java_cup.runtime.Scanner { 026 027 /** This character denotes the end of file */ 028 public static final int YYEOF = -1; 029 030 /** initial size of the lookahead buffer */ 031 private static final int ZZ_BUFFERSIZE = 16384; 032 033 /** lexical states */ 034 public static final int STRING = 4; 035 public static final int ES_HINT = 6; 036 public static final int YYINITIAL = 0; 037 public static final int SQ_STRING = 2; 038 039 /** 040 * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l 041 * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l 042 * at the beginning of a line 043 * l is of the form l = 2*k, k a non negative integer 044 */ 045 private static final int ZZ_LEXSTATE[] = { 046 0, 0, 1, 1, 2, 2, 3, 3 047 }; 048 049 /** 050 * Translates characters to character classes 051 */ 052 private static final String ZZ_CMAP_PACKED = 053 "\11\0\1\3\1\2\1\0\1\3\1\1\22\0\1\65\1\77\1\105"+ 054 "\1\0\1\4\2\0\1\106\1\102\1\103\1\13\1\17\1\104\1\20"+ 055 "\1\7\1\10\1\14\11\15\1\5\1\22\1\100\1\76\1\101\2\22"+ 056 "\1\47\1\63\1\26\1\53\1\24\1\33\1\72\1\44\1\55\1\6"+ 057 "\1\61\1\25\1\36\1\51\1\35\1\70\1\6\1\34\1\23\1\27"+ 058 "\1\57\1\74\1\43\1\110\1\66\1\112\1\11\1\107\1\12\1\22"+ 059 "\1\6\1\0\1\50\1\64\1\31\1\54\1\16\1\42\1\73\1\45"+ 060 "\1\56\1\6\1\62\1\30\1\41\1\52\1\40\1\71\1\6\1\37"+ 061 "\1\21\1\32\1\60\1\75\1\46\1\111\1\67\1\113\47\0\4\4"+ 062 "\4\0\1\4\12\0\1\4\4\0\1\4\5\0\27\4\1\0\37\4"+ 063 "\1\0\u01ca\4\4\0\14\4\16\0\5\4\7\0\1\4\1\0\1\4"+ 064 "\201\0\5\4\1\0\2\4\2\0\4\4\10\0\1\4\1\0\3\4"+ 065 "\1\0\1\4\1\0\24\4\1\0\123\4\1\0\213\4\10\0\236\4"+ 066 "\11\0\46\4\2\0\1\4\7\0\47\4\7\0\1\4\100\0\33\4"+ 067 "\5\0\3\4\30\0\1\4\24\0\53\4\43\0\2\4\1\0\143\4"+ 068 "\1\0\1\4\17\0\2\4\7\0\2\4\12\0\3\4\2\0\1\4"+ 069 "\20\0\1\4\1\0\36\4\35\0\131\4\13\0\1\4\30\0\41\4"+ 070 "\11\0\2\4\4\0\1\4\5\0\26\4\4\0\1\4\11\0\1\4"+ 071 "\3\0\1\4\27\0\31\4\107\0\1\4\1\0\13\4\127\0\66\4"+ 072 "\3\0\1\4\22\0\1\4\7\0\12\4\17\0\7\4\1\0\7\4"+ 073 "\5\0\10\4\2\0\2\4\2\0\26\4\1\0\7\4\1\0\1\4"+ 074 "\3\0\4\4\3\0\1\4\20\0\1\4\15\0\2\4\1\0\3\4"+ 075 "\16\0\4\4\7\0\1\4\11\0\6\4\4\0\2\4\2\0\26\4"+ 076 "\1\0\7\4\1\0\2\4\1\0\2\4\1\0\2\4\37\0\4\4"+ 077 "\1\0\1\4\23\0\3\4\20\0\11\4\1\0\3\4\1\0\26\4"+ 078 "\1\0\7\4\1\0\2\4\1\0\5\4\3\0\1\4\22\0\1\4"+ 079 "\17\0\2\4\17\0\1\4\23\0\10\4\2\0\2\4\2\0\26\4"+ 080 "\1\0\7\4\1\0\2\4\1\0\5\4\3\0\1\4\36\0\2\4"+ 081 "\1\0\3\4\17\0\1\4\21\0\1\4\1\0\6\4\3\0\3\4"+ 082 "\1\0\4\4\3\0\2\4\1\0\1\4\1\0\2\4\3\0\2\4"+ 083 "\3\0\3\4\3\0\14\4\26\0\1\4\50\0\1\4\13\0\10\4"+ 084 "\1\0\3\4\1\0\27\4\1\0\12\4\1\0\5\4\3\0\1\4"+ 085 "\32\0\2\4\6\0\2\4\43\0\10\4\1\0\3\4\1\0\27\4"+ 086 "\1\0\12\4\1\0\5\4\3\0\1\4\40\0\1\4\1\0\2\4"+ 087 "\17\0\2\4\22\0\10\4\1\0\3\4\1\0\51\4\2\0\1\4"+ 088 "\20\0\1\4\21\0\2\4\30\0\6\4\5\0\22\4\3\0\30\4"+ 089 "\1\0\11\4\1\0\1\4\2\0\7\4\72\0\60\4\1\0\2\4"+ 090 "\13\0\10\4\72\0\2\4\1\0\1\4\2\0\2\4\1\0\1\4"+ 091 "\2\0\1\4\6\0\4\4\1\0\7\4\1\0\3\4\1\0\1\4"+ 092 "\1\0\1\4\2\0\2\4\1\0\4\4\1\0\2\4\11\0\1\4"+ 093 "\2\0\5\4\1\0\1\4\25\0\4\4\40\0\1\4\77\0\10\4"+ 094 "\1\0\44\4\33\0\5\4\163\0\53\4\24\0\1\4\20\0\6\4"+ 095 "\4\0\4\4\3\0\1\4\3\0\2\4\7\0\3\4\4\0\15\4"+ 096 "\14\0\1\4\21\0\46\4\1\0\1\4\5\0\1\4\2\0\53\4"+ 097 "\1\0\u014d\4\1\0\4\4\2\0\7\4\1\0\1\4\1\0\4\4"+ 098 "\2\0\51\4\1\0\4\4\2\0\41\4\1\0\4\4\2\0\7\4"+ 099 "\1\0\1\4\1\0\4\4\2\0\17\4\1\0\71\4\1\0\4\4"+ 100 "\2\0\103\4\45\0\20\4\20\0\125\4\14\0\u026c\4\2\0\21\4"+ 101 "\1\0\32\4\5\0\113\4\3\0\3\4\17\0\15\4\1\0\4\4"+ 102 "\16\0\22\4\16\0\22\4\16\0\15\4\1\0\3\4\17\0\64\4"+ 103 "\43\0\1\4\3\0\2\4\103\0\130\4\10\0\51\4\1\0\1\4"+ 104 "\5\0\106\4\12\0\35\4\63\0\36\4\2\0\5\4\13\0\54\4"+ 105 "\25\0\7\4\70\0\27\4\11\0\65\4\122\0\1\4\135\0\57\4"+ 106 "\21\0\7\4\67\0\36\4\15\0\2\4\12\0\54\4\32\0\44\4"+ 107 "\51\0\3\4\12\0\44\4\153\0\4\4\1\0\4\4\3\0\2\4"+ 108 "\11\0\300\4\100\0\u0116\4\2\0\6\4\2\0\46\4\2\0\6\4"+ 109 "\2\0\10\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0\37\4"+ 110 "\2\0\65\4\1\0\7\4\1\0\1\4\3\0\3\4\1\0\7\4"+ 111 "\3\0\4\4\2\0\6\4\4\0\15\4\5\0\3\4\1\0\7\4"+ 112 "\102\0\2\4\23\0\1\4\34\0\1\4\15\0\1\4\20\0\15\4"+ 113 "\3\0\33\4\107\0\1\4\4\0\1\4\2\0\12\4\1\0\1\4"+ 114 "\3\0\5\4\6\0\1\4\1\0\1\4\1\0\1\4\1\0\4\4"+ 115 "\1\0\13\4\2\0\4\4\5\0\5\4\4\0\1\4\21\0\51\4"+ 116 "\u0a77\0\57\4\1\0\57\4\1\0\205\4\6\0\4\4\3\0\2\4"+ 117 "\14\0\46\4\1\0\1\4\5\0\1\4\2\0\70\4\7\0\1\4"+ 118 "\20\0\27\4\11\0\7\4\1\0\7\4\1\0\7\4\1\0\7\4"+ 119 "\1\0\7\4\1\0\7\4\1\0\7\4\1\0\7\4\120\0\1\4"+ 120 "\u01d5\0\3\4\31\0\11\4\7\0\5\4\2\0\5\4\4\0\126\4"+ 121 "\6\0\3\4\1\0\132\4\1\0\4\4\5\0\51\4\3\0\136\4"+ 122 "\21\0\33\4\65\0\20\4\u0200\0\u19b6\4\112\0\u51cd\4\63\0\u048d\4"+ 123 "\103\0\56\4\2\0\u010d\4\3\0\20\4\12\0\2\4\24\0\57\4"+ 124 "\20\0\31\4\10\0\120\4\47\0\11\4\2\0\147\4\2\0\4\4"+ 125 "\1\0\4\4\14\0\13\4\115\0\12\4\1\0\3\4\1\0\4\4"+ 126 "\1\0\27\4\25\0\1\4\7\0\64\4\16\0\62\4\76\0\6\4"+ 127 "\3\0\1\4\16\0\34\4\12\0\27\4\31\0\35\4\7\0\57\4"+ 128 "\34\0\1\4\60\0\51\4\27\0\3\4\1\0\10\4\24\0\27\4"+ 129 "\3\0\1\4\5\0\60\4\1\0\1\4\3\0\2\4\2\0\5\4"+ 130 "\2\0\1\4\1\0\1\4\30\0\3\4\2\0\13\4\7\0\3\4"+ 131 "\14\0\6\4\2\0\6\4\2\0\6\4\11\0\7\4\1\0\7\4"+ 132 "\221\0\43\4\35\0\u2ba4\4\14\0\27\4\4\0\61\4\u2104\0\u016e\4"+ 133 "\2\0\152\4\46\0\7\4\14\0\5\4\5\0\1\4\1\0\12\4"+ 134 "\1\0\15\4\1\0\5\4\1\0\1\4\1\0\2\4\1\0\2\4"+ 135 "\1\0\154\4\41\0\u016b\4\22\0\100\4\2\0\66\4\50\0\15\4"+ 136 "\66\0\2\4\30\0\3\4\31\0\1\4\6\0\5\4\1\0\207\4"+ 137 "\7\0\1\4\34\0\32\4\4\0\1\4\1\0\32\4\13\0\131\4"+ 138 "\3\0\6\4\2\0\6\4\2\0\6\4\2\0\3\4\3\0\2\4"+ 139 "\3\0\2\4\31\0"; 140 141 /** 142 * Translates characters to character classes 143 */ 144 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); 145 146 /** 147 * Translates DFA states to action switch labels. 148 */ 149 private static final int [] ZZ_ACTION = zzUnpackAction(); 150 151 private static final String ZZ_ACTION_PACKED_0 = 152 "\4\0\1\1\2\2\1\3\1\1\1\4\1\5\2\6"+ 153 "\1\7\1\10\32\3\1\11\1\1\1\12\1\13\1\14"+ 154 "\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\21"+ 155 "\1\24\1\23\1\25\1\1\6\25\1\3\1\0\1\26"+ 156 "\1\0\1\26\1\0\21\3\2\27\1\3\1\27\4\3"+ 157 "\2\30\16\3\1\31\1\3\1\32\6\3\1\33\1\34"+ 158 "\1\35\1\36\1\37\1\40\1\41\1\23\1\42\1\43"+ 159 "\6\25\1\44\4\45\1\0\1\26\1\0\33\3\1\46"+ 160 "\1\47\1\50\1\51\17\3\6\25\1\44\2\0\10\3"+ 161 "\1\52\3\3\1\53\1\3\1\54\11\3\1\55\1\56"+ 162 "\1\57\11\3\6\25\4\0\7\3\1\60\7\3\1\61"+ 163 "\4\3\1\62\5\3\4\25\1\63\1\64\1\65\7\3"+ 164 "\1\66\3\0\1\67\4\3\3\0\4\25\6\3\2\0"+ 165 "\2\3\1\70\2\0\4\25\2\3\1\71\2\3\1\72"+ 166 "\1\73\1\74\1\75\1\76\2\3\1\77\1\100"; 167 168 private static int [] zzUnpackAction() { 169 int [] result = new int[332]; 170 int offset = 0; 171 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); 172 return result; 173 } 174 175 private static int zzUnpackAction(String packed, int offset, int [] result) { 176 int i = 0; /* index in packed string */ 177 int j = offset; /* index in unpacked array */ 178 int l = packed.length(); 179 while (i < l) { 180 int count = packed.charAt(i++); 181 int value = packed.charAt(i++); 182 do result[j++] = value; while (--count > 0); 183 } 184 return j; 185 } 186 187 188 /** 189 * Translates a state to a row index in the transition table 190 */ 191 private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); 192 193 private static final String ZZ_ROWMAP_PACKED_0 = 194 "\0\0\0\114\0\230\0\344\0\u0130\0\u017c\0\u0130\0\u01c8"+ 195 "\0\u0214\0\u0260\0\u0130\0\u02ac\0\u02f8\0\u0130\0\u0130\0\u0344"+ 196 "\0\u0390\0\u03dc\0\u0428\0\u0474\0\u04c0\0\u050c\0\u0558\0\u05a4"+ 197 "\0\u05f0\0\u063c\0\u0688\0\u06d4\0\u0720\0\u076c\0\u07b8\0\u0804"+ 198 "\0\u0850\0\u089c\0\u08e8\0\u0934\0\u0980\0\u09cc\0\u0a18\0\u0a64"+ 199 "\0\u0ab0\0\u0130\0\u0afc\0\u0b48\0\u0b94\0\u0130\0\u0130\0\u0130"+ 200 "\0\u0130\0\u0130\0\u0be0\0\u0130\0\u0c2c\0\u0c78\0\u0130\0\u0cc4"+ 201 "\0\u0d10\0\u0d5c\0\u0da8\0\u0df4\0\u0e40\0\u0e8c\0\u0ed8\0\u0f24"+ 202 "\0\u0f70\0\u0fbc\0\u1008\0\u1054\0\u02ac\0\u10a0\0\u10ec\0\u1138"+ 203 "\0\u1184\0\u11d0\0\u121c\0\u1268\0\u12b4\0\u1300\0\u134c\0\u1398"+ 204 "\0\u13e4\0\u1430\0\u147c\0\u14c8\0\u1514\0\u1560\0\u15ac\0\u15f8"+ 205 "\0\u1644\0\u1690\0\u16dc\0\u1728\0\u1774\0\u17c0\0\u180c\0\u1858"+ 206 "\0\u18a4\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c\0\u1ab8"+ 207 "\0\u1b04\0\u1b50\0\u1b9c\0\u1be8\0\u1c34\0\u1c80\0\u1ccc\0\u01c8"+ 208 "\0\u1d18\0\u01c8\0\u1d64\0\u1db0\0\u1dfc\0\u1e48\0\u1e94\0\u1ee0"+ 209 "\0\u0130\0\u0130\0\u0130\0\u0130\0\u0130\0\u0130\0\u0130\0\u0130"+ 210 "\0\u0130\0\u0130\0\u1f2c\0\u1f78\0\u1fc4\0\u2010\0\u205c\0\u20a8"+ 211 "\0\u20f4\0\u2140\0\u218c\0\u21d8\0\u2224\0\u2270\0\u22bc\0\u22bc"+ 212 "\0\u2308\0\u2354\0\u23a0\0\u23ec\0\u2438\0\u2484\0\u24d0\0\u251c"+ 213 "\0\u2568\0\u25b4\0\u2600\0\u264c\0\u2698\0\u26e4\0\u2730\0\u277c"+ 214 "\0\u27c8\0\u2814\0\u2860\0\u28ac\0\u28f8\0\u2944\0\u2990\0\u29dc"+ 215 "\0\u2a28\0\u2a74\0\u2ac0\0\u01c8\0\u01c8\0\u01c8\0\u01c8\0\u2b0c"+ 216 "\0\u2b58\0\u2ba4\0\u2bf0\0\u2c3c\0\u2c88\0\u2cd4\0\u2d20\0\u2d6c"+ 217 "\0\u2db8\0\u2e04\0\u2e50\0\u2e9c\0\u2ee8\0\u2f34\0\u2f80\0\u2fcc"+ 218 "\0\u3018\0\u3064\0\u30b0\0\u30fc\0\u3148\0\u3194\0\u31e0\0\u322c"+ 219 "\0\u3278\0\u32c4\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u3440\0\u01c8"+ 220 "\0\u348c\0\u34d8\0\u3524\0\u01c8\0\u3570\0\u01c8\0\u35bc\0\u3608"+ 221 "\0\u3654\0\u36a0\0\u36ec\0\u3738\0\u3784\0\u37d0\0\u381c\0\u01c8"+ 222 "\0\u01c8\0\u01c8\0\u3868\0\u38b4\0\u3900\0\u394c\0\u3998\0\u39e4"+ 223 "\0\u3a30\0\u3a7c\0\u3ac8\0\u3b14\0\u3b60\0\u3bac\0\u3bf8\0\u3c44"+ 224 "\0\u3c90\0\u3cdc\0\u3d28\0\u3d74\0\u3dc0\0\u3e0c\0\u3e58\0\u3ea4"+ 225 "\0\u3ef0\0\u3f3c\0\u3f88\0\u3fd4\0\u01c8\0\u4020\0\u406c\0\u40b8"+ 226 "\0\u4104\0\u4150\0\u419c\0\u41e8\0\u01c8\0\u4234\0\u4280\0\u42cc"+ 227 "\0\u4318\0\u01c8\0\u4364\0\u43b0\0\u43fc\0\u4448\0\u4494\0\u44e0"+ 228 "\0\u452c\0\u4578\0\u45c4\0\u0d10\0\u0130\0\u01c8\0\u4610\0\u465c"+ 229 "\0\u46a8\0\u46f4\0\u4740\0\u478c\0\u47d8\0\u01c8\0\u4824\0\u4870"+ 230 "\0\u48bc\0\u01c8\0\u4908\0\u4954\0\u49a0\0\u49ec\0\u4a38\0\u4a84"+ 231 "\0\u4ad0\0\u4b1c\0\u4b68\0\u4bb4\0\u4c00\0\u4c4c\0\u4c98\0\u4ce4"+ 232 "\0\u4d30\0\u4d7c\0\u4dc8\0\u4e14\0\u4e60\0\u4eac\0\u4ef8\0\u01c8"+ 233 "\0\u4f44\0\u4f90\0\u4fdc\0\u5028\0\u5074\0\u50c0\0\u510c\0\u5158"+ 234 "\0\u01c8\0\u51a4\0\u51f0\0\u0130\0\u01c8\0\u0130\0\u0d10\0\u0d10"+ 235 "\0\u523c\0\u5288\0\u01c8\0\u01c8"; 236 237 private static int [] zzUnpackRowMap() { 238 int [] result = new int[332]; 239 int offset = 0; 240 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); 241 return result; 242 } 243 244 private static int zzUnpackRowMap(String packed, int offset, int [] result) { 245 int i = 0; /* index in packed string */ 246 int j = offset; /* index in unpacked array */ 247 int l = packed.length(); 248 while (i < l) { 249 int high = packed.charAt(i++) << 16; 250 result[j++] = high | packed.charAt(i++); 251 } 252 return j; 253 } 254 255 /** 256 * The transition table of the DFA 257 */ 258 private static final int [] ZZ_TRANS = zzUnpackTrans(); 259 260 private static final String ZZ_TRANS_PACKED_0 = 261 "\1\5\1\6\2\7\1\10\1\5\1\10\1\11\1\12"+ 262 "\2\5\1\13\1\14\1\15\1\10\1\16\1\17\1\20"+ 263 "\1\5\1\21\1\10\1\22\1\10\1\23\1\24\1\10"+ 264 "\1\25\1\26\1\10\1\27\2\10\1\30\1\10\1\31"+ 265 "\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+ 266 "\1\42\1\43\1\44\1\45\4\10\1\46\1\47\1\7"+ 267 "\4\10\1\50\1\51\2\10\1\52\1\53\1\54\1\55"+ 268 "\1\56\1\57\1\60\1\61\1\62\1\5\4\10\1\63"+ 269 "\2\5\103\63\1\64\1\65\4\63\1\66\2\5\102\66"+ 270 "\1\67\1\66\1\70\4\66\1\5\1\6\2\7\1\71"+ 271 "\1\5\1\71\4\5\1\72\2\5\1\71\2\5\1\71"+ 272 "\1\5\12\71\1\73\2\71\1\74\6\71\1\75\1\76"+ 273 "\4\71\1\77\1\100\6\71\1\7\10\71\4\5\1\56"+ 274 "\1\57\1\60\3\5\4\71\116\0\1\7\116\0\2\10"+ 275 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 276 "\1\0\10\10\12\0\4\10\14\0\2\103\111\0\1\104"+ 277 "\107\0\1\103\4\0\2\105\1\106\5\0\1\106\76\0"+ 278 "\1\103\4\0\2\15\1\106\5\0\1\106\74\0\2\10"+ 279 "\1\101\1\102\3\0\2\10\1\107\1\0\2\10\1\0"+ 280 "\7\10\1\110\32\10\1\0\10\10\12\0\4\10\5\0"+ 281 "\2\10\1\101\1\102\3\0\2\10\1\107\1\0\2\10"+ 282 "\1\0\1\10\1\111\2\10\1\112\2\10\1\113\32\10"+ 283 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 284 "\3\0\3\10\1\0\2\10\1\0\12\10\1\114\2\10"+ 285 "\1\115\14\10\1\116\1\117\6\10\1\0\10\10\12\0"+ 286 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 287 "\2\10\1\0\32\10\1\120\1\121\6\10\1\0\1\122"+ 288 "\1\123\6\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 289 "\3\0\3\10\1\0\2\10\1\0\15\10\1\115\15\10"+ 290 "\1\117\6\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 291 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\33\10"+ 292 "\1\124\6\10\1\0\1\10\1\123\6\10\12\0\4\10"+ 293 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 294 "\1\0\11\10\1\125\2\10\1\126\25\10\1\0\10\10"+ 295 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 296 "\1\0\2\10\1\0\10\10\1\127\1\130\2\10\1\131"+ 297 "\2\10\1\132\22\10\1\0\10\10\12\0\4\10\5\0"+ 298 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 299 "\14\10\1\133\2\10\1\132\22\10\1\0\10\10\12\0"+ 300 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 301 "\2\10\1\0\14\10\1\126\25\10\1\0\10\10\12\0"+ 302 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 303 "\2\10\1\0\21\10\1\134\1\135\17\10\1\0\10\10"+ 304 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 305 "\1\0\2\10\1\0\24\10\1\136\1\137\14\10\1\0"+ 306 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 307 "\3\10\1\0\2\10\1\0\25\10\1\137\14\10\1\0"+ 308 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 309 "\3\10\1\0\2\10\1\0\22\10\1\135\17\10\1\0"+ 310 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 311 "\3\10\1\0\1\10\1\140\1\0\1\141\1\10\1\142"+ 312 "\2\10\1\143\20\10\1\144\1\145\12\10\1\0\10\10"+ 313 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 314 "\1\0\1\10\1\140\1\0\5\10\1\143\21\10\1\145"+ 315 "\12\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 316 "\1\102\3\0\3\10\1\0\2\10\1\0\12\10\1\146"+ 317 "\2\10\1\147\16\10\1\150\1\151\4\10\1\0\10\10"+ 318 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 319 "\1\0\2\10\1\0\15\10\1\147\17\10\1\151\4\10"+ 320 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 321 "\3\0\2\10\1\152\1\0\2\10\1\0\1\10\1\153"+ 322 "\22\10\1\154\1\155\4\10\1\156\1\157\6\10\1\0"+ 323 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 324 "\2\10\1\152\1\0\2\10\1\0\25\10\1\155\5\10"+ 325 "\1\157\6\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 326 "\1\101\1\102\3\0\3\10\1\0\1\10\1\160\1\0"+ 327 "\1\160\1\10\1\161\23\10\2\162\12\10\1\0\10\10"+ 328 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 329 "\1\0\1\10\1\160\1\0\5\10\1\163\21\10\1\162"+ 330 "\12\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 331 "\1\102\3\0\2\10\1\164\1\0\2\10\1\0\1\10"+ 332 "\1\165\40\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 333 "\1\101\1\102\3\0\2\10\1\164\1\0\2\10\1\0"+ 334 "\42\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 335 "\1\102\3\0\3\10\1\0\2\10\1\0\11\10\1\166"+ 336 "\2\10\1\167\25\10\1\0\10\10\12\0\4\10\5\0"+ 337 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 338 "\14\10\1\170\25\10\1\0\10\10\12\0\4\10\76\0"+ 339 "\1\171\113\0\1\172\2\0\1\171\110\0\1\173\15\0"+ 340 "\1\63\2\0\103\63\2\0\4\63\32\0\1\174\4\0"+ 341 "\1\175\12\0\1\176\33\0\1\177\1\200\4\0\1\66"+ 342 "\2\0\102\66\1\0\1\66\1\0\4\66\32\0\1\174"+ 343 "\4\0\1\175\12\0\1\176\32\0\1\201\1\0\1\200"+ 344 "\11\0\4\71\3\0\3\71\2\0\44\71\1\0\11\71"+ 345 "\1\0\2\71\6\0\4\71\10\0\1\202\110\0\4\71"+ 346 "\3\0\3\71\2\0\44\71\1\0\2\71\1\203\1\204"+ 347 "\5\71\1\0\2\71\6\0\4\71\5\0\4\71\3\0"+ 348 "\3\71\2\0\44\71\1\0\3\71\1\204\5\71\1\0"+ 349 "\2\71\6\0\4\71\5\0\4\71\3\0\3\71\2\0"+ 350 "\30\71\1\205\1\206\12\71\1\0\11\71\1\0\2\71"+ 351 "\6\0\4\71\5\0\4\71\3\0\3\71\2\0\31\71"+ 352 "\1\206\12\71\1\0\11\71\1\0\2\71\6\0\4\71"+ 353 "\5\0\4\71\3\0\3\71\2\0\30\71\1\207\1\210"+ 354 "\12\71\1\0\11\71\1\0\2\71\6\0\4\71\5\0"+ 355 "\4\71\3\0\3\71\2\0\31\71\1\210\12\71\1\0"+ 356 "\11\71\1\0\2\71\6\0\4\71\4\0\1\211\2\10"+ 357 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 358 "\1\0\10\10\12\0\4\10\4\0\1\212\1\0\1\212"+ 359 "\4\0\1\213\1\214\1\215\1\212\2\0\1\212\1\0"+ 360 "\42\212\1\0\10\212\12\0\4\212\14\0\2\103\1\106"+ 361 "\5\0\1\106\106\0\1\216\110\0\2\217\1\0\2\220"+ 362 "\100\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 363 "\1\0\5\10\1\221\34\10\1\0\10\10\12\0\4\10"+ 364 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 365 "\1\0\25\10\1\222\14\10\1\0\10\10\12\0\4\10"+ 366 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 367 "\1\0\2\10\1\223\37\10\1\0\10\10\12\0\4\10"+ 368 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 369 "\1\0\24\10\1\224\15\10\1\0\10\10\12\0\4\10"+ 370 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 371 "\1\0\25\10\1\225\14\10\1\0\10\10\12\0\4\10"+ 372 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 373 "\1\0\3\10\1\226\36\10\1\0\10\10\12\0\4\10"+ 374 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 375 "\1\0\6\10\1\227\33\10\1\0\10\10\12\0\4\10"+ 376 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 377 "\1\0\13\10\1\230\22\10\1\231\3\10\1\0\10\10"+ 378 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 379 "\1\0\2\10\1\0\16\10\1\232\20\10\1\233\2\10"+ 380 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 381 "\3\0\3\10\1\0\2\10\1\0\13\10\1\234\26\10"+ 382 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 383 "\3\0\3\10\1\0\2\10\1\0\16\10\1\235\23\10"+ 384 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 385 "\3\0\3\10\1\0\2\10\1\0\42\10\1\0\2\10"+ 386 "\1\236\5\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 387 "\3\0\3\10\1\0\2\10\1\0\42\10\1\0\3\10"+ 388 "\1\237\4\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 389 "\3\0\3\10\1\0\2\10\1\0\16\10\1\240\23\10"+ 390 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 391 "\3\0\3\10\1\0\2\10\1\0\12\10\1\241\27\10"+ 392 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 393 "\3\0\3\10\1\0\2\10\1\0\15\10\1\242\24\10"+ 394 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 395 "\3\0\3\10\1\0\2\10\1\0\10\10\1\243\31\10"+ 396 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 397 "\3\0\3\10\1\0\2\10\1\0\30\10\1\244\11\10"+ 398 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 399 "\3\0\3\10\1\0\2\10\1\0\31\10\1\245\10\10"+ 400 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 401 "\3\0\3\10\1\0\2\10\1\0\17\10\1\246\22\10"+ 402 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 403 "\3\0\3\10\1\0\2\10\1\0\31\10\1\247\10\10"+ 404 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 405 "\3\0\3\10\1\0\2\10\1\0\1\10\1\250\40\10"+ 406 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 407 "\3\0\2\10\1\251\1\0\2\10\1\0\42\10\1\0"+ 408 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 409 "\3\10\1\0\2\10\1\0\42\10\1\0\6\10\1\252"+ 410 "\1\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 411 "\3\10\1\0\2\10\1\0\42\10\1\0\7\10\1\253"+ 412 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 413 "\1\0\2\10\1\0\6\10\1\254\33\10\1\0\10\10"+ 414 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 415 "\1\0\2\10\1\0\3\10\1\254\36\10\1\0\10\10"+ 416 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 417 "\1\0\2\10\1\0\2\10\1\255\37\10\1\0\10\10"+ 418 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 419 "\1\0\2\10\1\0\5\10\1\255\34\10\1\0\10\10"+ 420 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 421 "\1\0\2\10\1\0\30\10\1\256\11\10\1\0\10\10"+ 422 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 423 "\1\0\2\10\1\0\31\10\1\256\10\10\1\0\10\10"+ 424 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 425 "\1\0\2\10\1\0\4\10\1\257\35\10\1\0\10\10"+ 426 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 427 "\1\0\2\10\1\0\7\10\1\257\32\10\1\0\10\10"+ 428 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 429 "\1\0\2\10\1\0\2\10\1\260\37\10\1\0\10\10"+ 430 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 431 "\1\0\2\10\1\0\5\10\1\261\34\10\1\0\10\10"+ 432 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 433 "\1\0\1\10\1\262\1\0\42\10\1\0\10\10\12\0"+ 434 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 435 "\2\10\1\0\1\263\41\10\1\0\10\10\12\0\4\10"+ 436 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 437 "\1\0\4\10\1\264\35\10\1\0\10\10\12\0\4\10"+ 438 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 439 "\1\0\7\10\1\265\32\10\1\0\10\10\12\0\4\10"+ 440 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 441 "\1\0\1\266\41\10\1\0\10\10\12\0\4\10\5\0"+ 442 "\2\10\1\101\1\102\3\0\3\10\1\0\1\10\1\267"+ 443 "\1\0\42\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 444 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\32\10"+ 445 "\1\270\1\271\6\10\1\0\10\10\12\0\4\10\5\0"+ 446 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 447 "\33\10\1\271\6\10\1\0\10\10\12\0\4\10\5\0"+ 448 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 449 "\7\10\1\272\32\10\1\0\10\10\12\0\4\10\5\0"+ 450 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 451 "\4\10\1\273\35\10\1\0\10\10\12\0\4\10\5\0"+ 452 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 453 "\12\10\1\274\27\10\1\0\10\10\12\0\4\10\5\0"+ 454 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 455 "\15\10\1\275\24\10\1\0\10\10\12\0\4\10\5\0"+ 456 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 457 "\15\10\1\276\24\10\1\0\10\10\12\0\4\10\5\0"+ 458 "\4\71\3\0\3\71\2\0\3\71\1\277\40\71\1\0"+ 459 "\11\71\1\0\2\71\6\0\4\71\5\0\4\71\3\0"+ 460 "\2\71\1\300\2\0\44\71\1\0\11\71\1\0\2\71"+ 461 "\6\0\4\71\5\0\4\71\3\0\3\71\2\0\26\71"+ 462 "\1\301\15\71\1\0\11\71\1\0\2\71\6\0\4\71"+ 463 "\5\0\4\71\3\0\3\71\2\0\27\71\1\302\14\71"+ 464 "\1\0\11\71\1\0\2\71\6\0\4\71\5\0\4\71"+ 465 "\3\0\3\71\2\0\32\71\1\303\11\71\1\0\11\71"+ 466 "\1\0\2\71\6\0\4\71\5\0\4\71\3\0\3\71"+ 467 "\2\0\33\71\1\304\10\71\1\0\11\71\1\0\2\71"+ 468 "\6\0\4\71\5\0\2\211\1\305\4\0\3\211\1\0"+ 469 "\2\211\1\0\42\211\1\0\10\211\12\0\4\211\5\0"+ 470 "\3\212\1\102\1\306\2\0\3\212\1\0\2\212\1\0"+ 471 "\42\212\1\0\10\212\12\0\4\212\10\0\1\102\3\0"+ 472 "\1\214\1\215\106\0\1\102\113\0\1\102\3\0\2\215"+ 473 "\114\0\1\307\5\0\1\307\103\0\2\217\103\0\2\10"+ 474 "\1\101\1\102\3\0\2\10\1\310\1\0\2\10\1\0"+ 475 "\42\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 476 "\1\102\3\0\3\10\1\0\2\10\1\0\14\10\1\311"+ 477 "\25\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 478 "\1\102\3\0\3\10\1\0\2\10\1\0\1\10\1\312"+ 479 "\40\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 480 "\1\102\3\0\3\10\1\0\2\10\1\0\11\10\1\313"+ 481 "\30\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 482 "\1\102\3\0\3\10\1\0\2\10\1\0\14\10\1\314"+ 483 "\25\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 484 "\1\102\3\0\3\10\1\0\2\10\1\0\24\10\1\315"+ 485 "\15\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 486 "\1\102\3\0\3\10\1\0\2\10\1\0\25\10\1\316"+ 487 "\14\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 488 "\1\102\3\0\3\10\1\0\2\10\1\0\32\10\1\317"+ 489 "\7\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 490 "\1\102\3\0\3\10\1\0\2\10\1\0\1\10\1\320"+ 491 "\40\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 492 "\1\102\3\0\3\10\1\0\2\10\1\0\33\10\1\321"+ 493 "\6\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 494 "\1\102\3\0\2\10\1\320\1\0\2\10\1\0\42\10"+ 495 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 496 "\3\0\3\10\1\0\2\10\1\0\1\10\1\322\40\10"+ 497 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 498 "\3\0\2\10\1\323\1\0\2\10\1\0\42\10\1\0"+ 499 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 500 "\3\10\1\0\2\10\1\0\1\10\1\324\40\10\1\0"+ 501 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 502 "\2\10\1\324\1\0\2\10\1\0\42\10\1\0\10\10"+ 503 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\2\10"+ 504 "\1\325\1\0\2\10\1\0\42\10\1\0\10\10\12\0"+ 505 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 506 "\2\10\1\0\13\10\1\326\26\10\1\0\10\10\12\0"+ 507 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 508 "\2\10\1\0\16\10\1\326\23\10\1\0\10\10\12\0"+ 509 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 510 "\2\10\1\0\1\327\41\10\1\0\10\10\12\0\4\10"+ 511 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 512 "\1\0\1\10\1\330\40\10\1\0\10\10\12\0\4\10"+ 513 "\5\0\2\10\1\101\1\102\3\0\2\10\1\331\1\0"+ 514 "\2\10\1\0\42\10\1\0\10\10\12\0\4\10\5\0"+ 515 "\2\10\1\101\1\102\3\0\3\10\1\0\1\10\1\332"+ 516 "\1\0\42\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 517 "\1\101\1\102\3\0\2\10\1\333\1\0\2\10\1\0"+ 518 "\42\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 519 "\1\102\3\0\3\10\1\0\2\10\1\0\11\10\1\334"+ 520 "\30\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 521 "\1\102\3\0\3\10\1\0\2\10\1\0\14\10\1\335"+ 522 "\25\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 523 "\1\102\3\0\3\10\1\0\2\10\1\0\32\10\1\336"+ 524 "\7\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 525 "\1\102\3\0\3\10\1\0\2\10\1\0\33\10\1\337"+ 526 "\6\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 527 "\1\102\3\0\3\10\1\0\2\10\1\0\2\10\1\340"+ 528 "\37\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 529 "\1\102\3\0\3\10\1\0\2\10\1\0\5\10\1\340"+ 530 "\34\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 531 "\1\102\3\0\3\10\1\0\2\10\1\0\6\10\1\341"+ 532 "\33\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 533 "\1\102\3\0\3\10\1\0\2\10\1\0\3\10\1\341"+ 534 "\36\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 535 "\1\102\3\0\3\10\1\0\2\10\1\0\1\10\1\342"+ 536 "\40\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 537 "\1\102\3\0\2\10\1\342\1\0\2\10\1\0\42\10"+ 538 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 539 "\3\0\3\10\1\0\2\10\1\0\4\10\1\343\35\10"+ 540 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 541 "\3\0\3\10\1\0\2\10\1\0\7\10\1\344\32\10"+ 542 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 543 "\3\0\3\10\1\0\2\10\1\0\36\10\1\345\3\10"+ 544 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 545 "\3\0\3\10\1\0\2\10\1\0\37\10\1\346\2\10"+ 546 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 547 "\3\0\3\10\1\0\2\10\1\0\23\10\1\347\16\10"+ 548 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 549 "\3\0\3\10\1\0\2\10\1\0\20\10\1\350\21\10"+ 550 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 551 "\3\0\3\10\1\0\2\10\1\0\34\10\1\351\5\10"+ 552 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 553 "\3\0\3\10\1\0\2\10\1\0\35\10\1\352\4\10"+ 554 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 555 "\3\0\3\10\1\0\2\10\1\0\35\10\1\353\4\10"+ 556 "\1\0\10\10\12\0\4\10\5\0\4\71\3\0\3\71"+ 557 "\2\0\13\71\1\354\30\71\1\0\11\71\1\0\2\71"+ 558 "\6\0\4\71\5\0\4\71\3\0\3\71\2\0\16\71"+ 559 "\1\355\25\71\1\0\11\71\1\0\2\71\6\0\4\71"+ 560 "\5\0\4\71\3\0\3\71\2\0\4\71\1\356\37\71"+ 561 "\1\0\11\71\1\0\2\71\6\0\4\71\5\0\4\71"+ 562 "\3\0\3\71\2\0\7\71\1\357\34\71\1\0\11\71"+ 563 "\1\0\2\71\6\0\4\71\5\0\4\71\3\0\3\71"+ 564 "\2\0\3\71\1\360\40\71\1\0\11\71\1\0\2\71"+ 565 "\6\0\4\71\5\0\4\71\3\0\2\71\1\361\2\0"+ 566 "\44\71\1\0\11\71\1\0\2\71\6\0\4\71\4\0"+ 567 "\3\211\1\305\4\0\3\211\1\0\2\211\1\0\42\211"+ 568 "\1\0\10\211\12\0\4\211\13\0\1\362\1\363\1\364"+ 569 "\117\0\1\365\1\0\1\365\75\0\2\10\1\101\1\102"+ 570 "\3\0\3\10\1\0\2\10\1\0\6\10\1\366\33\10"+ 571 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 572 "\3\0\3\10\1\0\2\10\1\0\7\10\1\367\32\10"+ 573 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 574 "\3\0\3\10\1\0\2\10\1\0\3\10\1\370\36\10"+ 575 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 576 "\3\0\3\10\1\0\2\10\1\0\4\10\1\371\35\10"+ 577 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 578 "\3\0\3\10\1\0\2\10\1\0\7\10\1\372\32\10"+ 579 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 580 "\3\0\3\10\1\0\2\10\1\0\4\10\1\373\35\10"+ 581 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 582 "\3\0\3\10\1\0\2\10\1\0\7\10\1\374\32\10"+ 583 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 584 "\3\0\3\10\1\0\2\10\1\0\4\10\1\375\35\10"+ 585 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 586 "\3\0\3\10\1\0\2\10\1\0\7\10\1\375\32\10"+ 587 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 588 "\3\0\3\10\1\0\2\10\1\0\1\376\41\10\1\0"+ 589 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 590 "\3\10\1\0\1\10\1\377\1\0\1\377\41\10\1\0"+ 591 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 592 "\3\10\1\0\1\10\1\377\1\0\42\10\1\0\10\10"+ 593 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 594 "\1\0\2\10\1\0\1\10\1\u0100\40\10\1\0\10\10"+ 595 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 596 "\1\0\2\10\1\0\11\10\1\u0101\30\10\1\0\10\10"+ 597 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 598 "\1\0\2\10\1\0\14\10\1\u0102\25\10\1\0\10\10"+ 599 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\2\10"+ 600 "\1\u0103\1\0\2\10\1\0\42\10\1\0\10\10\12\0"+ 601 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 602 "\2\10\1\0\14\10\1\u0104\25\10\1\0\10\10\12\0"+ 603 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 604 "\2\10\1\0\1\10\1\u0105\40\10\1\0\10\10\12\0"+ 605 "\4\10\5\0\2\10\1\101\1\102\3\0\2\10\1\u0105"+ 606 "\1\0\2\10\1\0\42\10\1\0\10\10\12\0\4\10"+ 607 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 608 "\1\0\26\10\1\u0106\13\10\1\0\10\10\12\0\4\10"+ 609 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 610 "\1\0\27\10\1\u0107\12\10\1\0\10\10\12\0\4\10"+ 611 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 612 "\1\0\32\10\1\u0108\7\10\1\0\10\10\12\0\4\10"+ 613 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 614 "\1\0\33\10\1\u0109\6\10\1\0\10\10\12\0\4\10"+ 615 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 616 "\1\0\1\10\1\u010a\40\10\1\0\10\10\12\0\4\10"+ 617 "\5\0\2\10\1\101\1\102\3\0\2\10\1\u010a\1\0"+ 618 "\2\10\1\0\42\10\1\0\10\10\12\0\4\10\5\0"+ 619 "\2\10\1\101\1\102\3\0\2\10\1\u010b\1\0\2\10"+ 620 "\1\0\42\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 621 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\1\10"+ 622 "\1\u010c\40\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 623 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 624 "\1\0\2\10\1\u010d\5\10\12\0\4\10\5\0\2\10"+ 625 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 626 "\1\0\3\10\1\u010e\4\10\12\0\4\10\5\0\2\10"+ 627 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 628 "\1\0\3\10\1\u010f\4\10\12\0\4\10\5\0\4\71"+ 629 "\3\0\3\71\2\0\26\71\1\u0110\15\71\1\0\11\71"+ 630 "\1\0\2\71\6\0\4\71\5\0\4\71\3\0\3\71"+ 631 "\2\0\27\71\1\u0111\14\71\1\0\11\71\1\0\2\71"+ 632 "\6\0\4\71\5\0\4\71\3\0\3\71\2\0\44\71"+ 633 "\1\0\1\u0112\10\71\1\0\2\71\6\0\4\71\5\0"+ 634 "\4\71\3\0\3\71\2\0\44\71\1\0\1\71\1\u0113"+ 635 "\7\71\1\0\2\71\6\0\4\71\5\0\4\71\3\0"+ 636 "\3\71\2\0\44\71\1\0\11\71\1\0\2\71\6\0"+ 637 "\1\u0114\3\71\5\0\4\71\3\0\3\71\2\0\44\71"+ 638 "\1\0\11\71\1\0\2\71\6\0\1\71\1\u0114\2\71"+ 639 "\12\0\1\214\1\0\1\363\1\364\110\0\1\214\113\0"+ 640 "\1\214\1\0\2\364\103\0\1\u0115\113\0\2\10\1\101"+ 641 "\1\102\3\0\3\10\1\0\2\10\1\0\7\10\1\u0116"+ 642 "\32\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 643 "\1\102\3\0\3\10\1\0\1\10\1\u0117\1\0\42\10"+ 644 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 645 "\3\0\3\10\1\0\2\10\1\0\4\10\1\u0116\35\10"+ 646 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 647 "\3\0\3\10\1\0\2\10\1\0\1\u0118\41\10\1\0"+ 648 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 649 "\3\10\1\0\1\10\1\u0119\1\0\42\10\1\0\10\10"+ 650 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 651 "\1\0\2\10\1\0\32\10\1\u011a\7\10\1\0\10\10"+ 652 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 653 "\1\0\2\10\1\0\33\10\1\u011b\6\10\1\0\10\10"+ 654 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 655 "\1\0\2\10\1\0\4\10\1\u011c\35\10\1\0\10\10"+ 656 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 657 "\1\0\2\10\1\0\7\10\1\u011d\32\10\1\0\10\10"+ 658 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 659 "\1\0\2\10\1\0\4\10\1\u011e\35\10\1\0\10\10"+ 660 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 661 "\1\0\2\10\1\0\42\10\1\u011f\10\10\12\0\4\10"+ 662 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 663 "\1\0\42\10\1\u0120\10\10\12\0\4\10\5\0\2\10"+ 664 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 665 "\1\u011e\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 666 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 667 "\1\u0121\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 668 "\3\0\3\10\1\0\2\10\1\0\42\10\1\0\4\10"+ 669 "\1\u0122\3\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 670 "\3\0\3\10\1\0\2\10\1\0\42\10\1\0\5\10"+ 671 "\1\u0122\2\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 672 "\3\0\3\10\1\0\2\10\1\0\26\10\1\u0123\13\10"+ 673 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 674 "\3\0\3\10\1\0\2\10\1\0\27\10\1\u0124\12\10"+ 675 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 676 "\3\0\2\10\1\u0125\1\0\2\10\1\0\42\10\1\0"+ 677 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 678 "\3\10\1\0\2\10\1\0\1\10\1\u0126\40\10\1\0"+ 679 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 680 "\3\10\1\0\2\10\1\0\42\10\1\u0127\10\10\12\0"+ 681 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 682 "\2\10\1\0\42\10\1\u0128\10\10\12\0\4\10\5\0"+ 683 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 684 "\42\10\1\u0129\10\10\12\0\4\10\5\0\4\71\3\0"+ 685 "\3\71\2\0\6\71\1\u012a\35\71\1\0\11\71\1\0"+ 686 "\2\71\6\0\4\71\5\0\4\71\3\0\3\71\2\0"+ 687 "\11\71\1\u012b\32\71\1\0\11\71\1\0\2\71\6\0"+ 688 "\4\71\5\0\4\71\3\0\3\71\2\0\44\71\1\0"+ 689 "\11\71\1\0\2\71\6\0\2\71\1\u012c\1\71\5\0"+ 690 "\4\71\3\0\3\71\2\0\44\71\1\0\11\71\1\0"+ 691 "\2\71\6\0\3\71\1\u012d\5\0\2\10\1\101\1\102"+ 692 "\3\0\3\10\1\0\2\10\1\0\23\10\1\u012e\16\10"+ 693 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 694 "\3\0\3\10\1\0\2\10\1\0\20\10\1\u012f\21\10"+ 695 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 696 "\3\0\3\10\1\0\2\10\1\0\20\10\1\u012e\2\10"+ 697 "\1\u012e\16\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 698 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\12\10"+ 699 "\1\u0130\27\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 700 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\15\10"+ 701 "\1\u0131\24\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 702 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\24\10"+ 703 "\1\u0132\15\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 704 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\25\10"+ 705 "\1\u0133\14\10\1\0\10\10\12\0\4\10\63\0\1\u0134"+ 706 "\113\0\1\u0135\114\0\1\u0135\34\0\2\10\1\101\1\102"+ 707 "\3\0\3\10\1\0\2\10\1\0\3\10\1\u0136\36\10"+ 708 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 709 "\3\0\3\10\1\0\2\10\1\0\6\10\1\u0137\33\10"+ 710 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 711 "\3\0\3\10\1\0\2\10\1\0\27\10\1\u0138\12\10"+ 712 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 713 "\3\0\3\10\1\0\2\10\1\0\26\10\1\u0138\13\10"+ 714 "\1\0\10\10\12\0\4\10\63\0\1\u0139\113\0\1\u013a"+ 715 "\114\0\1\u013a\34\0\4\71\3\0\3\71\2\0\14\71"+ 716 "\1\u013b\27\71\1\0\11\71\1\0\2\71\6\0\4\71"+ 717 "\5\0\4\71\3\0\3\71\2\0\17\71\1\u013c\24\71"+ 718 "\1\0\11\71\1\0\2\71\6\0\4\71\5\0\4\71"+ 719 "\3\0\3\71\2\0\3\71\1\u013d\40\71\1\0\11\71"+ 720 "\1\0\2\71\6\0\4\71\5\0\4\71\3\0\2\71"+ 721 "\1\u013e\2\0\44\71\1\0\11\71\1\0\2\71\6\0"+ 722 "\4\71\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 723 "\2\10\1\0\33\10\1\u013f\6\10\1\0\10\10\12\0"+ 724 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 725 "\2\10\1\0\32\10\1\u0140\7\10\1\0\10\10\12\0"+ 726 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 727 "\2\10\1\0\26\10\1\u0141\13\10\1\0\10\10\12\0"+ 728 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 729 "\2\10\1\0\27\10\1\u0141\12\10\1\0\10\10\12\0"+ 730 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 731 "\2\10\1\0\13\10\1\u0142\26\10\1\0\10\10\12\0"+ 732 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 733 "\2\10\1\0\16\10\1\u0143\23\10\1\0\10\10\12\0"+ 734 "\4\10\66\0\1\u0144\114\0\1\u0144\31\0\2\10\1\101"+ 735 "\1\102\3\0\3\10\1\0\2\10\1\0\4\10\1\u0145"+ 736 "\35\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 737 "\1\102\3\0\3\10\1\0\2\10\1\0\7\10\1\u0145"+ 738 "\32\10\1\0\10\10\12\0\4\10\66\0\1\u0146\114\0"+ 739 "\1\u0146\31\0\4\71\3\0\3\71\2\0\13\71\1\u0147"+ 740 "\30\71\1\0\11\71\1\0\2\71\6\0\4\71\5\0"+ 741 "\4\71\3\0\3\71\2\0\16\71\1\u0147\25\71\1\0"+ 742 "\11\71\1\0\2\71\6\0\4\71\5\0\4\71\3\0"+ 743 "\3\71\2\0\13\71\1\u0148\30\71\1\0\11\71\1\0"+ 744 "\2\71\6\0\4\71\5\0\4\71\3\0\3\71\2\0"+ 745 "\16\71\1\u0148\25\71\1\0\11\71\1\0\2\71\6\0"+ 746 "\4\71\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 747 "\2\10\1\0\7\10\1\u0149\32\10\1\0\10\10\12\0"+ 748 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 749 "\2\10\1\0\4\10\1\u014a\35\10\1\0\10\10\12\0"+ 750 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 751 "\2\10\1\0\42\10\1\0\2\10\1\u014b\5\10\12\0"+ 752 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 753 "\2\10\1\0\42\10\1\0\3\10\1\u014b\4\10\12\0"+ 754 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 755 "\2\10\1\0\22\10\1\u014c\17\10\1\0\10\10\12\0"+ 756 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 757 "\2\10\1\0\21\10\1\u014c\20\10\1\0\10\10\12\0"+ 758 "\4\10"; 759 760 private static int [] zzUnpackTrans() { 761 int [] result = new int[21204]; 762 int offset = 0; 763 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); 764 return result; 765 } 766 767 private static int zzUnpackTrans(String packed, int offset, int [] result) { 768 int i = 0; /* index in packed string */ 769 int j = offset; /* index in unpacked array */ 770 int l = packed.length(); 771 while (i < l) { 772 int count = packed.charAt(i++); 773 int value = packed.charAt(i++); 774 value--; 775 do result[j++] = value; while (--count > 0); 776 } 777 return j; 778 } 779 780 781 /* error codes */ 782 private static final int ZZ_UNKNOWN_ERROR = 0; 783 private static final int ZZ_NO_MATCH = 1; 784 private static final int ZZ_PUSHBACK_2BIG = 2; 785 786 /* error messages for the codes above */ 787 private static final String ZZ_ERROR_MSG[] = { 788 "Unkown internal scanner error", 789 "Error: could not match input", 790 "Error: pushback value was too large" 791 }; 792 793 /** 794 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code> 795 */ 796 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); 797 798 private static final String ZZ_ATTRIBUTE_PACKED_0 = 799 "\4\0\1\11\1\1\1\11\3\1\1\11\2\1\2\11"+ 800 "\32\1\1\11\3\1\5\11\1\1\1\11\2\1\1\11"+ 801 "\12\1\1\0\1\1\1\0\1\1\1\0\62\1\12\11"+ 802 "\13\1\1\0\1\1\1\0\65\1\2\0\52\1\4\0"+ 803 "\37\1\1\11\11\1\3\0\5\1\3\0\12\1\2\0"+ 804 "\3\1\2\0\11\1\1\11\1\1\1\11\6\1"; 805 806 private static int [] zzUnpackAttribute() { 807 int [] result = new int[332]; 808 int offset = 0; 809 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); 810 return result; 811 } 812 813 private static int zzUnpackAttribute(String packed, int offset, int [] result) { 814 int i = 0; /* index in packed string */ 815 int j = offset; /* index in unpacked array */ 816 int l = packed.length(); 817 while (i < l) { 818 int count = packed.charAt(i++); 819 int value = packed.charAt(i++); 820 do result[j++] = value; while (--count > 0); 821 } 822 return j; 823 } 824 825 /** the input device */ 826 private java.io.Reader zzReader; 827 828 /** the current state of the DFA */ 829 private int zzState; 830 831 /** the current lexical state */ 832 private int zzLexicalState = YYINITIAL; 833 834 /** this buffer contains the current text to be matched and is 835 the source of the yytext() string */ 836 private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; 837 838 /** the textposition at the last accepting state */ 839 private int zzMarkedPos; 840 841 /** the current text position in the buffer */ 842 private int zzCurrentPos; 843 844 /** startRead marks the beginning of the yytext() string in the buffer */ 845 private int zzStartRead; 846 847 /** endRead marks the last character in the buffer, that has been read 848 from input */ 849 private int zzEndRead; 850 851 /** number of newlines encountered up to the start of the matched text */ 852 private int yyline; 853 854 /** the number of characters up to the start of the matched text */ 855 private int yychar; 856 857 /** 858 * the number of characters from the last newline up to the start of the 859 * matched text 860 */ 861 private int yycolumn; 862 863 /** 864 * zzAtBOL == true <=> the scanner is currently at the beginning of a line 865 */ 866 private boolean zzAtBOL = true; 867 868 /** zzAtEOF == true <=> the scanner is at the EOF */ 869 private boolean zzAtEOF; 870 871 /** denotes if the user-EOF-code has already been executed */ 872 private boolean zzEOFDone; 873 874 /* user code: */ 875 StringBuffer string = new StringBuffer(); 876 877 private Symbol symbol(int type) { 878 return new Symbol(type, -1, yychar, yytext()); 879 } 880 881 private Symbol symbol(int type, Object value) { 882 return new Symbol(type, -1, yychar, value); 883 } 884 885 private void scanError() throws QueryParseException { 886 StringBuffer buf = new StringBuffer("Lexical Error: Illegal character <") 887 .append(yytext()).append("> at offset ").append(yychar); 888 throw new QueryParseException(buf.toString()); 889 } 890 891 892 893 /** 894 * Creates a new scanner 895 * There is also a java.io.InputStream version of this constructor. 896 * 897 * @param in the java.io.Reader to read input from. 898 */ 899 public Scanner(java.io.Reader in) { 900 this.zzReader = in; 901 } 902 903 /** 904 * Creates a new scanner. 905 * There is also java.io.Reader version of this constructor. 906 * 907 * @param in the java.io.Inputstream to read input from. 908 */ 909 public Scanner(java.io.InputStream in) { 910 this(new java.io.InputStreamReader(in)); 911 } 912 913 /** 914 * Unpacks the compressed character translation table. 915 * 916 * @param packed the packed character translation table 917 * @return the unpacked character translation table 918 */ 919 private static char [] zzUnpackCMap(String packed) { 920 char [] map = new char[0x10000]; 921 int i = 0; /* index in packed string */ 922 int j = 0; /* index in unpacked array */ 923 while (i < 1726) { 924 int count = packed.charAt(i++); 925 char value = packed.charAt(i++); 926 do map[j++] = value; while (--count > 0); 927 } 928 return map; 929 } 930 931 932 /** 933 * Refills the input buffer. 934 * 935 * @return <code>false</code>, iff there was new input. 936 * 937 * @exception java.io.IOException if any I/O-Error occurs 938 */ 939 private boolean zzRefill() throws java.io.IOException { 940 941 /* first: make room (if you can) */ 942 if (zzStartRead > 0) { 943 System.arraycopy(zzBuffer, zzStartRead, 944 zzBuffer, 0, 945 zzEndRead-zzStartRead); 946 947 /* translate stored positions */ 948 zzEndRead-= zzStartRead; 949 zzCurrentPos-= zzStartRead; 950 zzMarkedPos-= zzStartRead; 951 zzStartRead = 0; 952 } 953 954 /* is the buffer big enough? */ 955 if (zzCurrentPos >= zzBuffer.length) { 956 /* if not: blow it up */ 957 char newBuffer[] = new char[zzCurrentPos*2]; 958 System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); 959 zzBuffer = newBuffer; 960 } 961 962 /* finally: fill the buffer with new input */ 963 int numRead = zzReader.read(zzBuffer, zzEndRead, 964 zzBuffer.length-zzEndRead); 965 966 if (numRead > 0) { 967 zzEndRead+= numRead; 968 return false; 969 } 970 // unlikely but not impossible: read 0 characters, but not at end of stream 971 if (numRead == 0) { 972 int c = zzReader.read(); 973 if (c == -1) { 974 return true; 975 } else { 976 zzBuffer[zzEndRead++] = (char) c; 977 return false; 978 } 979 } 980 981 // numRead < 0 982 return true; 983 } 984 985 986 /** 987 * Closes the input stream. 988 */ 989 public final void yyclose() throws java.io.IOException { 990 zzAtEOF = true; /* indicate end of file */ 991 zzEndRead = zzStartRead; /* invalidate buffer */ 992 993 if (zzReader != null) 994 zzReader.close(); 995 } 996 997 998 /** 999 * Resets the scanner to read from a new input stream. 1000 * Does not close the old reader. 1001 * 1002 * All internal variables are reset, the old input stream 1003 * <b>cannot</b> be reused (internal buffer is discarded and lost). 1004 * Lexical state is set to <tt>ZZ_INITIAL</tt>. 1005 * 1006 * @param reader the new input stream 1007 */ 1008 public final void yyreset(java.io.Reader reader) { 1009 zzReader = reader; 1010 zzAtBOL = true; 1011 zzAtEOF = false; 1012 zzEOFDone = false; 1013 zzEndRead = zzStartRead = 0; 1014 zzCurrentPos = zzMarkedPos = 0; 1015 yyline = yychar = yycolumn = 0; 1016 zzLexicalState = YYINITIAL; 1017 } 1018 1019 1020 /** 1021 * Returns the current lexical state. 1022 */ 1023 public final int yystate() { 1024 return zzLexicalState; 1025 } 1026 1027 1028 /** 1029 * Enters a new lexical state 1030 * 1031 * @param newState the new lexical state 1032 */ 1033 public final void yybegin(int newState) { 1034 zzLexicalState = newState; 1035 } 1036 1037 1038 /** 1039 * Returns the text matched by the current regular expression. 1040 */ 1041 public final String yytext() { 1042 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); 1043 } 1044 1045 1046 /** 1047 * Returns the character at position <tt>pos</tt> from the 1048 * matched text. 1049 * 1050 * It is equivalent to yytext().charAt(pos), but faster 1051 * 1052 * @param pos the position of the character to fetch. 1053 * A value from 0 to yylength()-1. 1054 * 1055 * @return the character at position pos 1056 */ 1057 public final char yycharat(int pos) { 1058 return zzBuffer[zzStartRead+pos]; 1059 } 1060 1061 1062 /** 1063 * Returns the length of the matched text region. 1064 */ 1065 public final int yylength() { 1066 return zzMarkedPos-zzStartRead; 1067 } 1068 1069 1070 /** 1071 * Reports an error that occured while scanning. 1072 * 1073 * In a wellformed scanner (no or only correct usage of 1074 * yypushback(int) and a match-all fallback rule) this method 1075 * will only be called with things that "Can't Possibly Happen". 1076 * If this method is called, something is seriously wrong 1077 * (e.g. a JFlex bug producing a faulty scanner etc.). 1078 * 1079 * Usual syntax/scanner level error handling should be done 1080 * in error fallback rules. 1081 * 1082 * @param errorCode the code of the errormessage to display 1083 */ 1084 private void zzScanError(int errorCode) { 1085 String message; 1086 try { 1087 message = ZZ_ERROR_MSG[errorCode]; 1088 } 1089 catch (ArrayIndexOutOfBoundsException e) { 1090 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; 1091 } 1092 1093 throw new Error(message); 1094 } 1095 1096 1097 /** 1098 * Pushes the specified amount of characters back into the input stream. 1099 * 1100 * They will be read again by then next call of the scanning method 1101 * 1102 * @param number the number of characters to be read again. 1103 * This number must not be greater than yylength()! 1104 */ 1105 public void yypushback(int number) { 1106 if ( number > yylength() ) 1107 zzScanError(ZZ_PUSHBACK_2BIG); 1108 1109 zzMarkedPos -= number; 1110 } 1111 1112 1113 /** 1114 * Contains user EOF-code, which will be executed exactly once, 1115 * when the end of file is reached 1116 */ 1117 private void zzDoEOF() throws java.io.IOException { 1118 if (!zzEOFDone) { 1119 zzEOFDone = true; 1120 yyclose(); 1121 } 1122 } 1123 1124 1125 /** 1126 * Resumes scanning until the next regular expression is matched, 1127 * the end of input is encountered or an I/O-Error occurs. 1128 * 1129 * @return the next token 1130 * @exception java.io.IOException if any I/O-Error occurs 1131 */ 1132 public java_cup.runtime.Symbol next_token() throws java.io.IOException { 1133 int zzInput; 1134 int zzAction; 1135 1136 // cached fields: 1137 int zzCurrentPosL; 1138 int zzMarkedPosL; 1139 int zzEndReadL = zzEndRead; 1140 char [] zzBufferL = zzBuffer; 1141 char [] zzCMapL = ZZ_CMAP; 1142 1143 int [] zzTransL = ZZ_TRANS; 1144 int [] zzRowMapL = ZZ_ROWMAP; 1145 int [] zzAttrL = ZZ_ATTRIBUTE; 1146 1147 while (true) { 1148 zzMarkedPosL = zzMarkedPos; 1149 1150 yychar+= zzMarkedPosL-zzStartRead; 1151 1152 zzAction = -1; 1153 1154 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; 1155 1156 zzState = ZZ_LEXSTATE[zzLexicalState]; 1157 1158 1159 zzForAction: { 1160 while (true) { 1161 1162 if (zzCurrentPosL < zzEndReadL) 1163 zzInput = zzBufferL[zzCurrentPosL++]; 1164 else if (zzAtEOF) { 1165 zzInput = YYEOF; 1166 break zzForAction; 1167 } 1168 else { 1169 // store back cached positions 1170 zzCurrentPos = zzCurrentPosL; 1171 zzMarkedPos = zzMarkedPosL; 1172 boolean eof = zzRefill(); 1173 // get translated positions and possibly new buffer 1174 zzCurrentPosL = zzCurrentPos; 1175 zzMarkedPosL = zzMarkedPos; 1176 zzBufferL = zzBuffer; 1177 zzEndReadL = zzEndRead; 1178 if (eof) { 1179 zzInput = YYEOF; 1180 break zzForAction; 1181 } 1182 else { 1183 zzInput = zzBufferL[zzCurrentPosL++]; 1184 } 1185 } 1186 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; 1187 if (zzNext == -1) break zzForAction; 1188 zzState = zzNext; 1189 1190 int zzAttributes = zzAttrL[zzState]; 1191 if ( (zzAttributes & 1) == 1 ) { 1192 zzAction = zzState; 1193 zzMarkedPosL = zzCurrentPosL; 1194 if ( (zzAttributes & 8) == 8 ) break zzForAction; 1195 } 1196 1197 } 1198 } 1199 1200 // store back cached position 1201 zzMarkedPos = zzMarkedPosL; 1202 1203 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { 1204 case 2: 1205 { /* ignore */ 1206 } 1207 case 65: break; 1208 case 55: 1209 { return symbol(sym.HAVING); 1210 } 1211 case 66: break; 1212 case 25: 1213 { return symbol(sym.IS); 1214 } 1215 case 67: break; 1216 case 49: 1217 { return symbol(sym.WHERE); 1218 } 1219 case 68: break; 1220 case 46: 1221 { return symbol(sym.DESC); 1222 } 1223 case 69: break; 1224 case 11: 1225 { return symbol(sym.GT); 1226 } 1227 case 70: break; 1228 case 59: 1229 { return symbol(sym.DISTINCT); 1230 } 1231 case 71: break; 1232 case 30: 1233 { string.append('\t'); 1234 } 1235 case 72: break; 1236 case 7: 1237 { return symbol(sym.SUM); 1238 } 1239 case 73: break; 1240 case 10: 1241 { return symbol(sym.LT); 1242 } 1243 case 74: break; 1244 case 15: 1245 { string.setLength(0); yybegin(STRING); 1246 } 1247 case 75: break; 1248 case 63: 1249 { return symbol(sym.TIMESTAMP); 1250 } 1251 case 76: break; 1252 case 50: 1253 { return symbol(sym.ILIKE); 1254 } 1255 case 77: break; 1256 case 29: 1257 { return symbol(sym.GTEQ); 1258 } 1259 case 78: break; 1260 case 62: 1261 { return symbol(sym.ANALYZER); 1262 } 1263 case 79: break; 1264 case 22: 1265 { return symbol(sym.DOUBLE, yytext()); 1266 } 1267 case 80: break; 1268 case 41: 1269 { return symbol(sym.NOT); 1270 } 1271 case 81: break; 1272 case 40: 1273 { return symbol(sym.AND); 1274 } 1275 case 82: break; 1276 case 4: 1277 { return symbol(sym.DIV); 1278 } 1279 case 83: break; 1280 case 19: 1281 { string.append('\\'); 1282 } 1283 case 84: break; 1284 case 31: 1285 { string.append('\r'); 1286 } 1287 case 85: break; 1288 case 56: 1289 { return symbol(sym.BETWEEN); 1290 } 1291 case 86: break; 1292 case 54: 1293 { return symbol(sym.OFFSET); 1294 } 1295 case 87: break; 1296 case 47: 1297 { return symbol(sym.DATE); 1298 } 1299 case 88: break; 1300 case 38: 1301 { return symbol(sym.ASC); 1302 } 1303 case 89: break; 1304 case 8: 1305 { return symbol(sym.SUB); 1306 } 1307 case 90: break; 1308 case 43: 1309 { return symbol(sym.TYPE); 1310 } 1311 case 91: break; 1312 case 21: 1313 { return symbol(sym.ES_IDENTIFIER, yytext()); 1314 } 1315 case 92: break; 1316 case 3: 1317 { return symbol(sym.IDENTIFIER, yytext()); 1318 } 1319 case 93: break; 1320 case 34: 1321 { string.append('\"'); 1322 } 1323 case 94: break; 1324 case 39: 1325 { return symbol(sym.ALL); 1326 } 1327 case 95: break; 1328 case 1: 1329 { scanError(); 1330 } 1331 case 96: break; 1332 case 58: 1333 { return symbol(sym.ORDERBY); 1334 } 1335 case 97: break; 1336 case 20: 1337 { yybegin(YYINITIAL); 1338 return symbol(sym.STRING, string.toString()); 1339 } 1340 case 98: break; 1341 case 33: 1342 { string.append('\''); 1343 } 1344 case 99: break; 1345 case 42: 1346 { return symbol(sym.LIKE); 1347 } 1348 case 100: break; 1349 case 23: 1350 { return symbol(sym.OR); 1351 } 1352 case 101: break; 1353 case 26: 1354 { return symbol(sym.IN); 1355 } 1356 case 102: break; 1357 case 9: 1358 { return symbol(sym.EQ); 1359 } 1360 case 103: break; 1361 case 61: 1362 { return symbol(sym.OPERATOR); 1363 } 1364 case 104: break; 1365 case 18: 1366 { yybegin(YYINITIAL); 1367 return symbol(sym.STRING,string.toString()); 1368 } 1369 case 105: break; 1370 case 36: 1371 { return symbol(sym.FROM_IDENTIFIER, yytext()); 1372 } 1373 case 106: break; 1374 case 35: 1375 { yybegin(YYINITIAL); 1376 return symbol(sym.RHINT); 1377 } 1378 case 107: break; 1379 case 37: 1380 { return symbol(sym.PATH_IDENTIFIER, yytext()); 1381 } 1382 case 108: break; 1383 case 32: 1384 { string.append('\n'); 1385 } 1386 case 109: break; 1387 case 57: 1388 { return symbol(sym.LOCATION); 1389 } 1390 case 110: break; 1391 case 28: 1392 { return symbol(sym.LTEQ); 1393 } 1394 case 111: break; 1395 case 24: 1396 { return symbol(sym.AS); 1397 } 1398 case 112: break; 1399 case 12: 1400 { return symbol(sym.LPARA); 1401 } 1402 case 113: break; 1403 case 44: 1404 { return symbol(sym.FROM); 1405 } 1406 case 114: break; 1407 case 53: 1408 { return symbol(sym.SELECT); 1409 } 1410 case 115: break; 1411 case 13: 1412 { return symbol(sym.RPARA); 1413 } 1414 case 116: break; 1415 case 64: 1416 { return symbol(sym.STARTSWITH); 1417 } 1418 case 117: break; 1419 case 27: 1420 { return symbol(sym.NOTEQ); 1421 } 1422 case 118: break; 1423 case 16: 1424 { string.setLength(0); yybegin(SQ_STRING); 1425 } 1426 case 119: break; 1427 case 14: 1428 { return symbol(sym.COMMA); 1429 } 1430 case 120: break; 1431 case 5: 1432 { return symbol(sym.MUL); 1433 } 1434 case 121: break; 1435 case 60: 1436 { return symbol(sym.GROUPBY); 1437 } 1438 case 122: break; 1439 case 52: 1440 { string.setLength(0); yybegin(ES_HINT); return symbol(sym.LHINT_ES); 1441 } 1442 case 123: break; 1443 case 51: 1444 { return symbol(sym.INDEX); 1445 } 1446 case 124: break; 1447 case 17: 1448 { string.append( yytext() ); 1449 } 1450 case 125: break; 1451 case 6: 1452 { return symbol(sym.INTEGER, yytext()); 1453 } 1454 case 126: break; 1455 case 45: 1456 { return symbol(sym.NULL); 1457 } 1458 case 127: break; 1459 case 48: 1460 { return symbol(sym.LIMIT); 1461 } 1462 case 128: break; 1463 default: 1464 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { 1465 zzAtEOF = true; 1466 zzDoEOF(); 1467 { return new java_cup.runtime.Symbol(sym.EOF); } 1468 } 1469 else { 1470 zzScanError(ZZ_NO_MATCH); 1471 } 1472 } 1473 } 1474 } 1475 1476 1477}