001/* The following code was generated by JFlex 1.4.3 on 9/6/17 5:26 PM */ 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\0\1\100\1\76\1\101\2\0"+ 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\3\71\4\0\3\71\1\0\45\71\1\0\10\71"+ 345 "\11\0\5\71\10\0\1\202\110\0\3\71\4\0\3\71"+ 346 "\1\0\45\71\1\0\2\71\1\203\1\204\4\71\11\0"+ 347 "\5\71\5\0\3\71\4\0\3\71\1\0\45\71\1\0"+ 348 "\3\71\1\204\4\71\11\0\5\71\5\0\3\71\4\0"+ 349 "\3\71\1\0\31\71\1\205\1\206\12\71\1\0\10\71"+ 350 "\11\0\5\71\5\0\3\71\4\0\3\71\1\0\32\71"+ 351 "\1\206\12\71\1\0\10\71\11\0\5\71\5\0\3\71"+ 352 "\4\0\3\71\1\0\31\71\1\207\1\210\12\71\1\0"+ 353 "\10\71\11\0\5\71\5\0\3\71\4\0\3\71\1\0"+ 354 "\32\71\1\210\12\71\1\0\10\71\11\0\5\71\4\0"+ 355 "\1\211\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 356 "\1\0\42\10\1\0\10\10\12\0\4\10\4\0\1\212"+ 357 "\1\0\1\212\4\0\1\213\1\214\1\215\1\212\2\0"+ 358 "\1\212\1\0\42\212\1\0\10\212\12\0\4\212\14\0"+ 359 "\2\103\1\106\5\0\1\106\106\0\1\216\110\0\2\217"+ 360 "\1\0\2\220\100\0\2\10\1\101\1\102\3\0\3\10"+ 361 "\1\0\2\10\1\0\5\10\1\221\34\10\1\0\10\10"+ 362 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 363 "\1\0\2\10\1\0\25\10\1\222\14\10\1\0\10\10"+ 364 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 365 "\1\0\2\10\1\0\2\10\1\223\37\10\1\0\10\10"+ 366 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 367 "\1\0\2\10\1\0\24\10\1\224\15\10\1\0\10\10"+ 368 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 369 "\1\0\2\10\1\0\25\10\1\225\14\10\1\0\10\10"+ 370 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 371 "\1\0\2\10\1\0\3\10\1\226\36\10\1\0\10\10"+ 372 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 373 "\1\0\2\10\1\0\6\10\1\227\33\10\1\0\10\10"+ 374 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 375 "\1\0\2\10\1\0\13\10\1\230\22\10\1\231\3\10"+ 376 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 377 "\3\0\3\10\1\0\2\10\1\0\16\10\1\232\20\10"+ 378 "\1\233\2\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 379 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\13\10"+ 380 "\1\234\26\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 381 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\16\10"+ 382 "\1\235\23\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 383 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 384 "\1\0\2\10\1\236\5\10\12\0\4\10\5\0\2\10"+ 385 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 386 "\1\0\3\10\1\237\4\10\12\0\4\10\5\0\2\10"+ 387 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\16\10"+ 388 "\1\240\23\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 389 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\12\10"+ 390 "\1\241\27\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 391 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\15\10"+ 392 "\1\242\24\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 393 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\10\10"+ 394 "\1\243\31\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 395 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\30\10"+ 396 "\1\244\11\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 397 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\31\10"+ 398 "\1\245\10\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 399 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\17\10"+ 400 "\1\246\22\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 401 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\31\10"+ 402 "\1\247\10\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 403 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\1\10"+ 404 "\1\250\40\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 405 "\1\101\1\102\3\0\2\10\1\251\1\0\2\10\1\0"+ 406 "\42\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 407 "\1\102\3\0\3\10\1\0\2\10\1\0\42\10\1\0"+ 408 "\6\10\1\252\1\10\12\0\4\10\5\0\2\10\1\101"+ 409 "\1\102\3\0\3\10\1\0\2\10\1\0\42\10\1\0"+ 410 "\7\10\1\253\12\0\4\10\5\0\2\10\1\101\1\102"+ 411 "\3\0\3\10\1\0\2\10\1\0\6\10\1\254\33\10"+ 412 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 413 "\3\0\3\10\1\0\2\10\1\0\3\10\1\254\36\10"+ 414 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 415 "\3\0\3\10\1\0\2\10\1\0\2\10\1\255\37\10"+ 416 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 417 "\3\0\3\10\1\0\2\10\1\0\5\10\1\255\34\10"+ 418 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 419 "\3\0\3\10\1\0\2\10\1\0\30\10\1\256\11\10"+ 420 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 421 "\3\0\3\10\1\0\2\10\1\0\31\10\1\256\10\10"+ 422 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 423 "\3\0\3\10\1\0\2\10\1\0\4\10\1\257\35\10"+ 424 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 425 "\3\0\3\10\1\0\2\10\1\0\7\10\1\257\32\10"+ 426 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 427 "\3\0\3\10\1\0\2\10\1\0\2\10\1\260\37\10"+ 428 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 429 "\3\0\3\10\1\0\2\10\1\0\5\10\1\261\34\10"+ 430 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 431 "\3\0\3\10\1\0\1\10\1\262\1\0\42\10\1\0"+ 432 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 433 "\3\10\1\0\2\10\1\0\1\263\41\10\1\0\10\10"+ 434 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 435 "\1\0\2\10\1\0\4\10\1\264\35\10\1\0\10\10"+ 436 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 437 "\1\0\2\10\1\0\7\10\1\265\32\10\1\0\10\10"+ 438 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 439 "\1\0\2\10\1\0\1\266\41\10\1\0\10\10\12\0"+ 440 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 441 "\1\10\1\267\1\0\42\10\1\0\10\10\12\0\4\10"+ 442 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 443 "\1\0\32\10\1\270\1\271\6\10\1\0\10\10\12\0"+ 444 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 445 "\2\10\1\0\33\10\1\271\6\10\1\0\10\10\12\0"+ 446 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 447 "\2\10\1\0\7\10\1\272\32\10\1\0\10\10\12\0"+ 448 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 449 "\2\10\1\0\4\10\1\273\35\10\1\0\10\10\12\0"+ 450 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 451 "\2\10\1\0\12\10\1\274\27\10\1\0\10\10\12\0"+ 452 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 453 "\2\10\1\0\15\10\1\275\24\10\1\0\10\10\12\0"+ 454 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 455 "\2\10\1\0\15\10\1\276\24\10\1\0\10\10\12\0"+ 456 "\4\10\5\0\3\71\4\0\3\71\1\0\4\71\1\277"+ 457 "\40\71\1\0\10\71\11\0\5\71\5\0\3\71\4\0"+ 458 "\2\71\1\300\1\0\45\71\1\0\10\71\11\0\5\71"+ 459 "\5\0\3\71\4\0\3\71\1\0\27\71\1\301\15\71"+ 460 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 461 "\1\0\30\71\1\302\14\71\1\0\10\71\11\0\5\71"+ 462 "\5\0\3\71\4\0\3\71\1\0\33\71\1\303\11\71"+ 463 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 464 "\1\0\34\71\1\304\10\71\1\0\10\71\11\0\5\71"+ 465 "\5\0\2\211\1\305\4\0\3\211\1\0\2\211\1\0"+ 466 "\42\211\1\0\10\211\12\0\4\211\5\0\3\212\1\102"+ 467 "\1\306\2\0\3\212\1\0\2\212\1\0\42\212\1\0"+ 468 "\10\212\12\0\4\212\10\0\1\102\3\0\1\214\1\215"+ 469 "\106\0\1\102\113\0\1\102\3\0\2\215\114\0\1\307"+ 470 "\5\0\1\307\103\0\2\217\103\0\2\10\1\101\1\102"+ 471 "\3\0\2\10\1\310\1\0\2\10\1\0\42\10\1\0"+ 472 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 473 "\3\10\1\0\2\10\1\0\14\10\1\311\25\10\1\0"+ 474 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 475 "\3\10\1\0\2\10\1\0\1\10\1\312\40\10\1\0"+ 476 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 477 "\3\10\1\0\2\10\1\0\11\10\1\313\30\10\1\0"+ 478 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 479 "\3\10\1\0\2\10\1\0\14\10\1\314\25\10\1\0"+ 480 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 481 "\3\10\1\0\2\10\1\0\24\10\1\315\15\10\1\0"+ 482 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 483 "\3\10\1\0\2\10\1\0\25\10\1\316\14\10\1\0"+ 484 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 485 "\3\10\1\0\2\10\1\0\32\10\1\317\7\10\1\0"+ 486 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 487 "\3\10\1\0\2\10\1\0\1\10\1\320\40\10\1\0"+ 488 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 489 "\3\10\1\0\2\10\1\0\33\10\1\321\6\10\1\0"+ 490 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 491 "\2\10\1\320\1\0\2\10\1\0\42\10\1\0\10\10"+ 492 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 493 "\1\0\2\10\1\0\1\10\1\322\40\10\1\0\10\10"+ 494 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\2\10"+ 495 "\1\323\1\0\2\10\1\0\42\10\1\0\10\10\12\0"+ 496 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 497 "\2\10\1\0\1\10\1\324\40\10\1\0\10\10\12\0"+ 498 "\4\10\5\0\2\10\1\101\1\102\3\0\2\10\1\324"+ 499 "\1\0\2\10\1\0\42\10\1\0\10\10\12\0\4\10"+ 500 "\5\0\2\10\1\101\1\102\3\0\2\10\1\325\1\0"+ 501 "\2\10\1\0\42\10\1\0\10\10\12\0\4\10\5\0"+ 502 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 503 "\13\10\1\326\26\10\1\0\10\10\12\0\4\10\5\0"+ 504 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 505 "\16\10\1\326\23\10\1\0\10\10\12\0\4\10\5\0"+ 506 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 507 "\1\327\41\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 508 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\1\10"+ 509 "\1\330\40\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 510 "\1\101\1\102\3\0\2\10\1\331\1\0\2\10\1\0"+ 511 "\42\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 512 "\1\102\3\0\3\10\1\0\1\10\1\332\1\0\42\10"+ 513 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 514 "\3\0\2\10\1\333\1\0\2\10\1\0\42\10\1\0"+ 515 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 516 "\3\10\1\0\2\10\1\0\11\10\1\334\30\10\1\0"+ 517 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 518 "\3\10\1\0\2\10\1\0\14\10\1\335\25\10\1\0"+ 519 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 520 "\3\10\1\0\2\10\1\0\32\10\1\336\7\10\1\0"+ 521 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 522 "\3\10\1\0\2\10\1\0\33\10\1\337\6\10\1\0"+ 523 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 524 "\3\10\1\0\2\10\1\0\2\10\1\340\37\10\1\0"+ 525 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 526 "\3\10\1\0\2\10\1\0\5\10\1\340\34\10\1\0"+ 527 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 528 "\3\10\1\0\2\10\1\0\6\10\1\341\33\10\1\0"+ 529 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 530 "\3\10\1\0\2\10\1\0\3\10\1\341\36\10\1\0"+ 531 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 532 "\3\10\1\0\2\10\1\0\1\10\1\342\40\10\1\0"+ 533 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 534 "\2\10\1\342\1\0\2\10\1\0\42\10\1\0\10\10"+ 535 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 536 "\1\0\2\10\1\0\4\10\1\343\35\10\1\0\10\10"+ 537 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 538 "\1\0\2\10\1\0\7\10\1\344\32\10\1\0\10\10"+ 539 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 540 "\1\0\2\10\1\0\36\10\1\345\3\10\1\0\10\10"+ 541 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 542 "\1\0\2\10\1\0\37\10\1\346\2\10\1\0\10\10"+ 543 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 544 "\1\0\2\10\1\0\23\10\1\347\16\10\1\0\10\10"+ 545 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 546 "\1\0\2\10\1\0\20\10\1\350\21\10\1\0\10\10"+ 547 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 548 "\1\0\2\10\1\0\34\10\1\351\5\10\1\0\10\10"+ 549 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 550 "\1\0\2\10\1\0\35\10\1\352\4\10\1\0\10\10"+ 551 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 552 "\1\0\2\10\1\0\35\10\1\353\4\10\1\0\10\10"+ 553 "\12\0\4\10\5\0\3\71\4\0\3\71\1\0\14\71"+ 554 "\1\354\30\71\1\0\10\71\11\0\5\71\5\0\3\71"+ 555 "\4\0\3\71\1\0\17\71\1\355\25\71\1\0\10\71"+ 556 "\11\0\5\71\5\0\3\71\4\0\3\71\1\0\5\71"+ 557 "\1\356\37\71\1\0\10\71\11\0\5\71\5\0\3\71"+ 558 "\4\0\3\71\1\0\10\71\1\357\34\71\1\0\10\71"+ 559 "\11\0\5\71\5\0\3\71\4\0\3\71\1\0\4\71"+ 560 "\1\360\40\71\1\0\10\71\11\0\5\71\5\0\3\71"+ 561 "\4\0\2\71\1\361\1\0\45\71\1\0\10\71\11\0"+ 562 "\5\71\4\0\3\211\1\305\4\0\3\211\1\0\2\211"+ 563 "\1\0\42\211\1\0\10\211\12\0\4\211\13\0\1\362"+ 564 "\1\363\1\364\117\0\1\365\1\0\1\365\75\0\2\10"+ 565 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\6\10"+ 566 "\1\366\33\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 567 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 568 "\1\367\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 569 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\3\10"+ 570 "\1\370\36\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 571 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\4\10"+ 572 "\1\371\35\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 573 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 574 "\1\372\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 575 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\4\10"+ 576 "\1\373\35\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 577 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 578 "\1\374\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 579 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\4\10"+ 580 "\1\375\35\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 581 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 582 "\1\375\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 583 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\1\376"+ 584 "\41\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 585 "\1\102\3\0\3\10\1\0\1\10\1\377\1\0\1\377"+ 586 "\41\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 587 "\1\102\3\0\3\10\1\0\1\10\1\377\1\0\42\10"+ 588 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 589 "\3\0\3\10\1\0\2\10\1\0\1\10\1\u0100\40\10"+ 590 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 591 "\3\0\3\10\1\0\2\10\1\0\11\10\1\u0101\30\10"+ 592 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 593 "\3\0\3\10\1\0\2\10\1\0\14\10\1\u0102\25\10"+ 594 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 595 "\3\0\2\10\1\u0103\1\0\2\10\1\0\42\10\1\0"+ 596 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 597 "\3\10\1\0\2\10\1\0\14\10\1\u0104\25\10\1\0"+ 598 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 599 "\3\10\1\0\2\10\1\0\1\10\1\u0105\40\10\1\0"+ 600 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 601 "\2\10\1\u0105\1\0\2\10\1\0\42\10\1\0\10\10"+ 602 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 603 "\1\0\2\10\1\0\26\10\1\u0106\13\10\1\0\10\10"+ 604 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 605 "\1\0\2\10\1\0\27\10\1\u0107\12\10\1\0\10\10"+ 606 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 607 "\1\0\2\10\1\0\32\10\1\u0108\7\10\1\0\10\10"+ 608 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 609 "\1\0\2\10\1\0\33\10\1\u0109\6\10\1\0\10\10"+ 610 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 611 "\1\0\2\10\1\0\1\10\1\u010a\40\10\1\0\10\10"+ 612 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\2\10"+ 613 "\1\u010a\1\0\2\10\1\0\42\10\1\0\10\10\12\0"+ 614 "\4\10\5\0\2\10\1\101\1\102\3\0\2\10\1\u010b"+ 615 "\1\0\2\10\1\0\42\10\1\0\10\10\12\0\4\10"+ 616 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 617 "\1\0\1\10\1\u010c\40\10\1\0\10\10\12\0\4\10"+ 618 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 619 "\1\0\42\10\1\0\2\10\1\u010d\5\10\12\0\4\10"+ 620 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 621 "\1\0\42\10\1\0\3\10\1\u010e\4\10\12\0\4\10"+ 622 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 623 "\1\0\42\10\1\0\3\10\1\u010f\4\10\12\0\4\10"+ 624 "\5\0\3\71\4\0\3\71\1\0\27\71\1\u0110\15\71"+ 625 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 626 "\1\0\30\71\1\u0111\14\71\1\0\10\71\11\0\5\71"+ 627 "\5\0\3\71\4\0\3\71\1\0\45\71\1\0\1\u0112"+ 628 "\7\71\11\0\5\71\5\0\3\71\4\0\3\71\1\0"+ 629 "\45\71\1\0\1\71\1\u0113\6\71\11\0\5\71\5\0"+ 630 "\3\71\4\0\3\71\1\0\45\71\1\0\10\71\11\0"+ 631 "\1\71\1\u0114\3\71\5\0\3\71\4\0\3\71\1\0"+ 632 "\45\71\1\0\10\71\11\0\2\71\1\u0114\2\71\12\0"+ 633 "\1\214\1\0\1\363\1\364\110\0\1\214\113\0\1\214"+ 634 "\1\0\2\364\103\0\1\u0115\113\0\2\10\1\101\1\102"+ 635 "\3\0\3\10\1\0\2\10\1\0\7\10\1\u0116\32\10"+ 636 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 637 "\3\0\3\10\1\0\1\10\1\u0117\1\0\42\10\1\0"+ 638 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 639 "\3\10\1\0\2\10\1\0\4\10\1\u0116\35\10\1\0"+ 640 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 641 "\3\10\1\0\2\10\1\0\1\u0118\41\10\1\0\10\10"+ 642 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 643 "\1\0\1\10\1\u0119\1\0\42\10\1\0\10\10\12\0"+ 644 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 645 "\2\10\1\0\32\10\1\u011a\7\10\1\0\10\10\12\0"+ 646 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 647 "\2\10\1\0\33\10\1\u011b\6\10\1\0\10\10\12\0"+ 648 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 649 "\2\10\1\0\4\10\1\u011c\35\10\1\0\10\10\12\0"+ 650 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 651 "\2\10\1\0\7\10\1\u011d\32\10\1\0\10\10\12\0"+ 652 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 653 "\2\10\1\0\4\10\1\u011e\35\10\1\0\10\10\12\0"+ 654 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 655 "\2\10\1\0\42\10\1\u011f\10\10\12\0\4\10\5\0"+ 656 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 657 "\42\10\1\u0120\10\10\12\0\4\10\5\0\2\10\1\101"+ 658 "\1\102\3\0\3\10\1\0\2\10\1\0\7\10\1\u011e"+ 659 "\32\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 660 "\1\102\3\0\3\10\1\0\2\10\1\0\42\10\1\u0121"+ 661 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 662 "\3\10\1\0\2\10\1\0\42\10\1\0\4\10\1\u0122"+ 663 "\3\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 664 "\3\10\1\0\2\10\1\0\42\10\1\0\5\10\1\u0122"+ 665 "\2\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 666 "\3\10\1\0\2\10\1\0\26\10\1\u0123\13\10\1\0"+ 667 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 668 "\3\10\1\0\2\10\1\0\27\10\1\u0124\12\10\1\0"+ 669 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 670 "\2\10\1\u0125\1\0\2\10\1\0\42\10\1\0\10\10"+ 671 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 672 "\1\0\2\10\1\0\1\10\1\u0126\40\10\1\0\10\10"+ 673 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 674 "\1\0\2\10\1\0\42\10\1\u0127\10\10\12\0\4\10"+ 675 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 676 "\1\0\42\10\1\u0128\10\10\12\0\4\10\5\0\2\10"+ 677 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 678 "\1\u0129\10\10\12\0\4\10\5\0\3\71\4\0\3\71"+ 679 "\1\0\7\71\1\u012a\35\71\1\0\10\71\11\0\5\71"+ 680 "\5\0\3\71\4\0\3\71\1\0\12\71\1\u012b\32\71"+ 681 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 682 "\1\0\45\71\1\0\10\71\11\0\3\71\1\u012c\1\71"+ 683 "\5\0\3\71\4\0\3\71\1\0\45\71\1\0\10\71"+ 684 "\11\0\4\71\1\u012d\5\0\2\10\1\101\1\102\3\0"+ 685 "\3\10\1\0\2\10\1\0\23\10\1\u012e\16\10\1\0"+ 686 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 687 "\3\10\1\0\2\10\1\0\20\10\1\u012f\21\10\1\0"+ 688 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 689 "\3\10\1\0\2\10\1\0\20\10\1\u012e\2\10\1\u012e"+ 690 "\16\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 691 "\1\102\3\0\3\10\1\0\2\10\1\0\12\10\1\u0130"+ 692 "\27\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 693 "\1\102\3\0\3\10\1\0\2\10\1\0\15\10\1\u0131"+ 694 "\24\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 695 "\1\102\3\0\3\10\1\0\2\10\1\0\24\10\1\u0132"+ 696 "\15\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 697 "\1\102\3\0\3\10\1\0\2\10\1\0\25\10\1\u0133"+ 698 "\14\10\1\0\10\10\12\0\4\10\63\0\1\u0134\113\0"+ 699 "\1\u0135\114\0\1\u0135\34\0\2\10\1\101\1\102\3\0"+ 700 "\3\10\1\0\2\10\1\0\3\10\1\u0136\36\10\1\0"+ 701 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 702 "\3\10\1\0\2\10\1\0\6\10\1\u0137\33\10\1\0"+ 703 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 704 "\3\10\1\0\2\10\1\0\27\10\1\u0138\12\10\1\0"+ 705 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 706 "\3\10\1\0\2\10\1\0\26\10\1\u0138\13\10\1\0"+ 707 "\10\10\12\0\4\10\63\0\1\u0139\113\0\1\u013a\114\0"+ 708 "\1\u013a\34\0\3\71\4\0\3\71\1\0\15\71\1\u013b"+ 709 "\27\71\1\0\10\71\11\0\5\71\5\0\3\71\4\0"+ 710 "\3\71\1\0\20\71\1\u013c\24\71\1\0\10\71\11\0"+ 711 "\5\71\5\0\3\71\4\0\3\71\1\0\4\71\1\u013d"+ 712 "\40\71\1\0\10\71\11\0\5\71\5\0\3\71\4\0"+ 713 "\2\71\1\u013e\1\0\45\71\1\0\10\71\11\0\5\71"+ 714 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 715 "\1\0\33\10\1\u013f\6\10\1\0\10\10\12\0\4\10"+ 716 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 717 "\1\0\32\10\1\u0140\7\10\1\0\10\10\12\0\4\10"+ 718 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 719 "\1\0\26\10\1\u0141\13\10\1\0\10\10\12\0\4\10"+ 720 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 721 "\1\0\27\10\1\u0141\12\10\1\0\10\10\12\0\4\10"+ 722 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 723 "\1\0\13\10\1\u0142\26\10\1\0\10\10\12\0\4\10"+ 724 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 725 "\1\0\16\10\1\u0143\23\10\1\0\10\10\12\0\4\10"+ 726 "\66\0\1\u0144\114\0\1\u0144\31\0\2\10\1\101\1\102"+ 727 "\3\0\3\10\1\0\2\10\1\0\4\10\1\u0145\35\10"+ 728 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 729 "\3\0\3\10\1\0\2\10\1\0\7\10\1\u0145\32\10"+ 730 "\1\0\10\10\12\0\4\10\66\0\1\u0146\114\0\1\u0146"+ 731 "\31\0\3\71\4\0\3\71\1\0\14\71\1\u0147\30\71"+ 732 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 733 "\1\0\17\71\1\u0147\25\71\1\0\10\71\11\0\5\71"+ 734 "\5\0\3\71\4\0\3\71\1\0\14\71\1\u0148\30\71"+ 735 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 736 "\1\0\17\71\1\u0148\25\71\1\0\10\71\11\0\5\71"+ 737 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 738 "\1\0\7\10\1\u0149\32\10\1\0\10\10\12\0\4\10"+ 739 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 740 "\1\0\4\10\1\u014a\35\10\1\0\10\10\12\0\4\10"+ 741 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 742 "\1\0\42\10\1\0\2\10\1\u014b\5\10\12\0\4\10"+ 743 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 744 "\1\0\42\10\1\0\3\10\1\u014b\4\10\12\0\4\10"+ 745 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 746 "\1\0\22\10\1\u014c\17\10\1\0\10\10\12\0\4\10"+ 747 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 748 "\1\0\21\10\1\u014c\20\10\1\0\10\10\12\0\4\10"; 749 750 private static int [] zzUnpackTrans() { 751 int [] result = new int[21204]; 752 int offset = 0; 753 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); 754 return result; 755 } 756 757 private static int zzUnpackTrans(String packed, int offset, int [] result) { 758 int i = 0; /* index in packed string */ 759 int j = offset; /* index in unpacked array */ 760 int l = packed.length(); 761 while (i < l) { 762 int count = packed.charAt(i++); 763 int value = packed.charAt(i++); 764 value--; 765 do result[j++] = value; while (--count > 0); 766 } 767 return j; 768 } 769 770 771 /* error codes */ 772 private static final int ZZ_UNKNOWN_ERROR = 0; 773 private static final int ZZ_NO_MATCH = 1; 774 private static final int ZZ_PUSHBACK_2BIG = 2; 775 776 /* error messages for the codes above */ 777 private static final String ZZ_ERROR_MSG[] = { 778 "Unkown internal scanner error", 779 "Error: could not match input", 780 "Error: pushback value was too large" 781 }; 782 783 /** 784 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code> 785 */ 786 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); 787 788 private static final String ZZ_ATTRIBUTE_PACKED_0 = 789 "\4\0\1\11\1\1\1\11\3\1\1\11\2\1\2\11"+ 790 "\32\1\1\11\3\1\5\11\1\1\1\11\2\1\1\11"+ 791 "\12\1\1\0\1\1\1\0\1\1\1\0\62\1\12\11"+ 792 "\13\1\1\0\1\1\1\0\65\1\2\0\52\1\4\0"+ 793 "\37\1\1\11\11\1\3\0\5\1\3\0\12\1\2\0"+ 794 "\3\1\2\0\11\1\1\11\1\1\1\11\6\1"; 795 796 private static int [] zzUnpackAttribute() { 797 int [] result = new int[332]; 798 int offset = 0; 799 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); 800 return result; 801 } 802 803 private static int zzUnpackAttribute(String packed, int offset, int [] result) { 804 int i = 0; /* index in packed string */ 805 int j = offset; /* index in unpacked array */ 806 int l = packed.length(); 807 while (i < l) { 808 int count = packed.charAt(i++); 809 int value = packed.charAt(i++); 810 do result[j++] = value; while (--count > 0); 811 } 812 return j; 813 } 814 815 /** the input device */ 816 private java.io.Reader zzReader; 817 818 /** the current state of the DFA */ 819 private int zzState; 820 821 /** the current lexical state */ 822 private int zzLexicalState = YYINITIAL; 823 824 /** this buffer contains the current text to be matched and is 825 the source of the yytext() string */ 826 private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; 827 828 /** the textposition at the last accepting state */ 829 private int zzMarkedPos; 830 831 /** the current text position in the buffer */ 832 private int zzCurrentPos; 833 834 /** startRead marks the beginning of the yytext() string in the buffer */ 835 private int zzStartRead; 836 837 /** endRead marks the last character in the buffer, that has been read 838 from input */ 839 private int zzEndRead; 840 841 /** number of newlines encountered up to the start of the matched text */ 842 private int yyline; 843 844 /** the number of characters up to the start of the matched text */ 845 private int yychar; 846 847 /** 848 * the number of characters from the last newline up to the start of the 849 * matched text 850 */ 851 private int yycolumn; 852 853 /** 854 * zzAtBOL == true <=> the scanner is currently at the beginning of a line 855 */ 856 private boolean zzAtBOL = true; 857 858 /** zzAtEOF == true <=> the scanner is at the EOF */ 859 private boolean zzAtEOF; 860 861 /** denotes if the user-EOF-code has already been executed */ 862 private boolean zzEOFDone; 863 864 /* user code: */ 865 StringBuffer string = new StringBuffer(); 866 867 private Symbol symbol(int type) { 868 return new Symbol(type, -1, yychar, yytext()); 869 } 870 871 private Symbol symbol(int type, Object value) { 872 return new Symbol(type, -1, yychar, value); 873 } 874 875 private void scanError() throws QueryParseException { 876 StringBuffer buf = new StringBuffer("Lexical Error: Illegal character <") 877 .append(yytext()).append("> at offset ").append(yychar); 878 throw new QueryParseException(buf.toString()); 879 } 880 881 882 883 /** 884 * Creates a new scanner 885 * There is also a java.io.InputStream version of this constructor. 886 * 887 * @param in the java.io.Reader to read input from. 888 */ 889 public Scanner(java.io.Reader in) { 890 this.zzReader = in; 891 } 892 893 /** 894 * Creates a new scanner. 895 * There is also java.io.Reader version of this constructor. 896 * 897 * @param in the java.io.Inputstream to read input from. 898 */ 899 public Scanner(java.io.InputStream in) { 900 this(new java.io.InputStreamReader(in)); 901 } 902 903 /** 904 * Unpacks the compressed character translation table. 905 * 906 * @param packed the packed character translation table 907 * @return the unpacked character translation table 908 */ 909 private static char [] zzUnpackCMap(String packed) { 910 char [] map = new char[0x10000]; 911 int i = 0; /* index in packed string */ 912 int j = 0; /* index in unpacked array */ 913 while (i < 1726) { 914 int count = packed.charAt(i++); 915 char value = packed.charAt(i++); 916 do map[j++] = value; while (--count > 0); 917 } 918 return map; 919 } 920 921 922 /** 923 * Refills the input buffer. 924 * 925 * @return <code>false</code>, iff there was new input. 926 * 927 * @exception java.io.IOException if any I/O-Error occurs 928 */ 929 private boolean zzRefill() throws java.io.IOException { 930 931 /* first: make room (if you can) */ 932 if (zzStartRead > 0) { 933 System.arraycopy(zzBuffer, zzStartRead, 934 zzBuffer, 0, 935 zzEndRead-zzStartRead); 936 937 /* translate stored positions */ 938 zzEndRead-= zzStartRead; 939 zzCurrentPos-= zzStartRead; 940 zzMarkedPos-= zzStartRead; 941 zzStartRead = 0; 942 } 943 944 /* is the buffer big enough? */ 945 if (zzCurrentPos >= zzBuffer.length) { 946 /* if not: blow it up */ 947 char newBuffer[] = new char[zzCurrentPos*2]; 948 System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); 949 zzBuffer = newBuffer; 950 } 951 952 /* finally: fill the buffer with new input */ 953 int numRead = zzReader.read(zzBuffer, zzEndRead, 954 zzBuffer.length-zzEndRead); 955 956 if (numRead > 0) { 957 zzEndRead+= numRead; 958 return false; 959 } 960 // unlikely but not impossible: read 0 characters, but not at end of stream 961 if (numRead == 0) { 962 int c = zzReader.read(); 963 if (c == -1) { 964 return true; 965 } else { 966 zzBuffer[zzEndRead++] = (char) c; 967 return false; 968 } 969 } 970 971 // numRead < 0 972 return true; 973 } 974 975 976 /** 977 * Closes the input stream. 978 */ 979 public final void yyclose() throws java.io.IOException { 980 zzAtEOF = true; /* indicate end of file */ 981 zzEndRead = zzStartRead; /* invalidate buffer */ 982 983 if (zzReader != null) 984 zzReader.close(); 985 } 986 987 988 /** 989 * Resets the scanner to read from a new input stream. 990 * Does not close the old reader. 991 * 992 * All internal variables are reset, the old input stream 993 * <b>cannot</b> be reused (internal buffer is discarded and lost). 994 * Lexical state is set to <tt>ZZ_INITIAL</tt>. 995 * 996 * @param reader the new input stream 997 */ 998 public final void yyreset(java.io.Reader reader) { 999 zzReader = reader; 1000 zzAtBOL = true; 1001 zzAtEOF = false; 1002 zzEOFDone = false; 1003 zzEndRead = zzStartRead = 0; 1004 zzCurrentPos = zzMarkedPos = 0; 1005 yyline = yychar = yycolumn = 0; 1006 zzLexicalState = YYINITIAL; 1007 } 1008 1009 1010 /** 1011 * Returns the current lexical state. 1012 */ 1013 public final int yystate() { 1014 return zzLexicalState; 1015 } 1016 1017 1018 /** 1019 * Enters a new lexical state 1020 * 1021 * @param newState the new lexical state 1022 */ 1023 public final void yybegin(int newState) { 1024 zzLexicalState = newState; 1025 } 1026 1027 1028 /** 1029 * Returns the text matched by the current regular expression. 1030 */ 1031 public final String yytext() { 1032 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); 1033 } 1034 1035 1036 /** 1037 * Returns the character at position <tt>pos</tt> from the 1038 * matched text. 1039 * 1040 * It is equivalent to yytext().charAt(pos), but faster 1041 * 1042 * @param pos the position of the character to fetch. 1043 * A value from 0 to yylength()-1. 1044 * 1045 * @return the character at position pos 1046 */ 1047 public final char yycharat(int pos) { 1048 return zzBuffer[zzStartRead+pos]; 1049 } 1050 1051 1052 /** 1053 * Returns the length of the matched text region. 1054 */ 1055 public final int yylength() { 1056 return zzMarkedPos-zzStartRead; 1057 } 1058 1059 1060 /** 1061 * Reports an error that occured while scanning. 1062 * 1063 * In a wellformed scanner (no or only correct usage of 1064 * yypushback(int) and a match-all fallback rule) this method 1065 * will only be called with things that "Can't Possibly Happen". 1066 * If this method is called, something is seriously wrong 1067 * (e.g. a JFlex bug producing a faulty scanner etc.). 1068 * 1069 * Usual syntax/scanner level error handling should be done 1070 * in error fallback rules. 1071 * 1072 * @param errorCode the code of the errormessage to display 1073 */ 1074 private void zzScanError(int errorCode) { 1075 String message; 1076 try { 1077 message = ZZ_ERROR_MSG[errorCode]; 1078 } 1079 catch (ArrayIndexOutOfBoundsException e) { 1080 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; 1081 } 1082 1083 throw new Error(message); 1084 } 1085 1086 1087 /** 1088 * Pushes the specified amount of characters back into the input stream. 1089 * 1090 * They will be read again by then next call of the scanning method 1091 * 1092 * @param number the number of characters to be read again. 1093 * This number must not be greater than yylength()! 1094 */ 1095 public void yypushback(int number) { 1096 if ( number > yylength() ) 1097 zzScanError(ZZ_PUSHBACK_2BIG); 1098 1099 zzMarkedPos -= number; 1100 } 1101 1102 1103 /** 1104 * Contains user EOF-code, which will be executed exactly once, 1105 * when the end of file is reached 1106 */ 1107 private void zzDoEOF() throws java.io.IOException { 1108 if (!zzEOFDone) { 1109 zzEOFDone = true; 1110 yyclose(); 1111 } 1112 } 1113 1114 1115 /** 1116 * Resumes scanning until the next regular expression is matched, 1117 * the end of input is encountered or an I/O-Error occurs. 1118 * 1119 * @return the next token 1120 * @exception java.io.IOException if any I/O-Error occurs 1121 */ 1122 public java_cup.runtime.Symbol next_token() throws java.io.IOException { 1123 int zzInput; 1124 int zzAction; 1125 1126 // cached fields: 1127 int zzCurrentPosL; 1128 int zzMarkedPosL; 1129 int zzEndReadL = zzEndRead; 1130 char [] zzBufferL = zzBuffer; 1131 char [] zzCMapL = ZZ_CMAP; 1132 1133 int [] zzTransL = ZZ_TRANS; 1134 int [] zzRowMapL = ZZ_ROWMAP; 1135 int [] zzAttrL = ZZ_ATTRIBUTE; 1136 1137 while (true) { 1138 zzMarkedPosL = zzMarkedPos; 1139 1140 yychar+= zzMarkedPosL-zzStartRead; 1141 1142 zzAction = -1; 1143 1144 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; 1145 1146 zzState = ZZ_LEXSTATE[zzLexicalState]; 1147 1148 1149 zzForAction: { 1150 while (true) { 1151 1152 if (zzCurrentPosL < zzEndReadL) 1153 zzInput = zzBufferL[zzCurrentPosL++]; 1154 else if (zzAtEOF) { 1155 zzInput = YYEOF; 1156 break zzForAction; 1157 } 1158 else { 1159 // store back cached positions 1160 zzCurrentPos = zzCurrentPosL; 1161 zzMarkedPos = zzMarkedPosL; 1162 boolean eof = zzRefill(); 1163 // get translated positions and possibly new buffer 1164 zzCurrentPosL = zzCurrentPos; 1165 zzMarkedPosL = zzMarkedPos; 1166 zzBufferL = zzBuffer; 1167 zzEndReadL = zzEndRead; 1168 if (eof) { 1169 zzInput = YYEOF; 1170 break zzForAction; 1171 } 1172 else { 1173 zzInput = zzBufferL[zzCurrentPosL++]; 1174 } 1175 } 1176 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; 1177 if (zzNext == -1) break zzForAction; 1178 zzState = zzNext; 1179 1180 int zzAttributes = zzAttrL[zzState]; 1181 if ( (zzAttributes & 1) == 1 ) { 1182 zzAction = zzState; 1183 zzMarkedPosL = zzCurrentPosL; 1184 if ( (zzAttributes & 8) == 8 ) break zzForAction; 1185 } 1186 1187 } 1188 } 1189 1190 // store back cached position 1191 zzMarkedPos = zzMarkedPosL; 1192 1193 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { 1194 case 2: 1195 { /* ignore */ 1196 } 1197 case 65: break; 1198 case 55: 1199 { return symbol(sym.HAVING); 1200 } 1201 case 66: break; 1202 case 25: 1203 { return symbol(sym.IS); 1204 } 1205 case 67: break; 1206 case 49: 1207 { return symbol(sym.WHERE); 1208 } 1209 case 68: break; 1210 case 46: 1211 { return symbol(sym.DESC); 1212 } 1213 case 69: break; 1214 case 11: 1215 { return symbol(sym.GT); 1216 } 1217 case 70: break; 1218 case 59: 1219 { return symbol(sym.DISTINCT); 1220 } 1221 case 71: break; 1222 case 30: 1223 { string.append('\t'); 1224 } 1225 case 72: break; 1226 case 7: 1227 { return symbol(sym.SUM); 1228 } 1229 case 73: break; 1230 case 10: 1231 { return symbol(sym.LT); 1232 } 1233 case 74: break; 1234 case 15: 1235 { string.setLength(0); yybegin(STRING); 1236 } 1237 case 75: break; 1238 case 63: 1239 { return symbol(sym.TIMESTAMP); 1240 } 1241 case 76: break; 1242 case 50: 1243 { return symbol(sym.ILIKE); 1244 } 1245 case 77: break; 1246 case 29: 1247 { return symbol(sym.GTEQ); 1248 } 1249 case 78: break; 1250 case 62: 1251 { return symbol(sym.ANALYZER); 1252 } 1253 case 79: break; 1254 case 22: 1255 { return symbol(sym.DOUBLE, yytext()); 1256 } 1257 case 80: break; 1258 case 41: 1259 { return symbol(sym.NOT); 1260 } 1261 case 81: break; 1262 case 40: 1263 { return symbol(sym.AND); 1264 } 1265 case 82: break; 1266 case 4: 1267 { return symbol(sym.DIV); 1268 } 1269 case 83: break; 1270 case 19: 1271 { string.append('\\'); 1272 } 1273 case 84: break; 1274 case 31: 1275 { string.append('\r'); 1276 } 1277 case 85: break; 1278 case 56: 1279 { return symbol(sym.BETWEEN); 1280 } 1281 case 86: break; 1282 case 54: 1283 { return symbol(sym.OFFSET); 1284 } 1285 case 87: break; 1286 case 47: 1287 { return symbol(sym.DATE); 1288 } 1289 case 88: break; 1290 case 38: 1291 { return symbol(sym.ASC); 1292 } 1293 case 89: break; 1294 case 8: 1295 { return symbol(sym.SUB); 1296 } 1297 case 90: break; 1298 case 43: 1299 { return symbol(sym.TYPE); 1300 } 1301 case 91: break; 1302 case 21: 1303 { return symbol(sym.ES_IDENTIFIER, yytext()); 1304 } 1305 case 92: break; 1306 case 3: 1307 { return symbol(sym.IDENTIFIER, yytext()); 1308 } 1309 case 93: break; 1310 case 34: 1311 { string.append('\"'); 1312 } 1313 case 94: break; 1314 case 39: 1315 { return symbol(sym.ALL); 1316 } 1317 case 95: break; 1318 case 1: 1319 { scanError(); 1320 } 1321 case 96: break; 1322 case 58: 1323 { return symbol(sym.ORDERBY); 1324 } 1325 case 97: break; 1326 case 20: 1327 { yybegin(YYINITIAL); 1328 return symbol(sym.STRING, string.toString()); 1329 } 1330 case 98: break; 1331 case 33: 1332 { string.append('\''); 1333 } 1334 case 99: break; 1335 case 42: 1336 { return symbol(sym.LIKE); 1337 } 1338 case 100: break; 1339 case 23: 1340 { return symbol(sym.OR); 1341 } 1342 case 101: break; 1343 case 26: 1344 { return symbol(sym.IN); 1345 } 1346 case 102: break; 1347 case 9: 1348 { return symbol(sym.EQ); 1349 } 1350 case 103: break; 1351 case 61: 1352 { return symbol(sym.OPERATOR); 1353 } 1354 case 104: break; 1355 case 18: 1356 { yybegin(YYINITIAL); 1357 return symbol(sym.STRING,string.toString()); 1358 } 1359 case 105: break; 1360 case 36: 1361 { return symbol(sym.FROM_IDENTIFIER, yytext()); 1362 } 1363 case 106: break; 1364 case 35: 1365 { yybegin(YYINITIAL); 1366 return symbol(sym.RHINT); 1367 } 1368 case 107: break; 1369 case 37: 1370 { return symbol(sym.PATH_IDENTIFIER, yytext()); 1371 } 1372 case 108: break; 1373 case 32: 1374 { string.append('\n'); 1375 } 1376 case 109: break; 1377 case 57: 1378 { return symbol(sym.LOCATION); 1379 } 1380 case 110: break; 1381 case 28: 1382 { return symbol(sym.LTEQ); 1383 } 1384 case 111: break; 1385 case 24: 1386 { return symbol(sym.AS); 1387 } 1388 case 112: break; 1389 case 12: 1390 { return symbol(sym.LPARA); 1391 } 1392 case 113: break; 1393 case 44: 1394 { return symbol(sym.FROM); 1395 } 1396 case 114: break; 1397 case 53: 1398 { return symbol(sym.SELECT); 1399 } 1400 case 115: break; 1401 case 13: 1402 { return symbol(sym.RPARA); 1403 } 1404 case 116: break; 1405 case 64: 1406 { return symbol(sym.STARTSWITH); 1407 } 1408 case 117: break; 1409 case 27: 1410 { return symbol(sym.NOTEQ); 1411 } 1412 case 118: break; 1413 case 16: 1414 { string.setLength(0); yybegin(SQ_STRING); 1415 } 1416 case 119: break; 1417 case 14: 1418 { return symbol(sym.COMMA); 1419 } 1420 case 120: break; 1421 case 5: 1422 { return symbol(sym.MUL); 1423 } 1424 case 121: break; 1425 case 60: 1426 { return symbol(sym.GROUPBY); 1427 } 1428 case 122: break; 1429 case 52: 1430 { string.setLength(0); yybegin(ES_HINT); return symbol(sym.LHINT_ES); 1431 } 1432 case 123: break; 1433 case 51: 1434 { return symbol(sym.INDEX); 1435 } 1436 case 124: break; 1437 case 17: 1438 { string.append( yytext() ); 1439 } 1440 case 125: break; 1441 case 6: 1442 { return symbol(sym.INTEGER, yytext()); 1443 } 1444 case 126: break; 1445 case 45: 1446 { return symbol(sym.NULL); 1447 } 1448 case 127: break; 1449 case 48: 1450 { return symbol(sym.LIMIT); 1451 } 1452 case 128: break; 1453 default: 1454 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { 1455 zzAtEOF = true; 1456 zzDoEOF(); 1457 { return new java_cup.runtime.Symbol(sym.EOF); } 1458 } 1459 else { 1460 zzScanError(ZZ_NO_MATCH); 1461 } 1462 } 1463 } 1464 } 1465 1466 1467}