/* The following code was generated by JFlex 1.4.1 on 12/2/10 4:57 PM */
/*******************************************************************************
* Copyright (c) 2006 Zend Corporation and IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Zend and IBM - Initial implementation
*******************************************************************************/
package org2.eclipse.php.internal.core.ast.scanner.php53;
import java.util.LinkedList;
import java_cup.sym;
import java_cup.runtime.Symbol;
import org2.eclipse.php.internal.core.PHPVersion;
import org2.eclipse.php.internal.core.ast.nodes.AST;
import org2.eclipse.php.internal.core.ast.nodes.Comment;
import org2.eclipse.php.internal.core.ast.nodes.IDocumentorLexer;
import org2.eclipse.php.internal.core.ast.scanner.StateStack;
import org2.eclipse.php.internal.core.ast.util.ASTUtils;
import org2.eclipse.php.internal.core.compiler.ast.nodes.VarComment;
import org2.eclipse.php.internal.core.compiler.ast.parser.DocumentorLexer;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.1
* on 12/2/10 4:57 PM from the specification file
* <tt>ast_scanner.flex</tt>
*/
@SuppressWarnings({"unchecked", "nls", "unused", "rawtypes"})
public class PhpAstLexer implements org2.eclipse.php.internal.core.ast.scanner.AstLexer {
/** This character denotes the end of file */
public static final int YYEOF = -1;
/** initial size of the lookahead buffer */
private static final int ZZ_BUFFERSIZE = 16384;
/** lexical states */
public static final int ST_DOCBLOCK = 11;
public static final int ST_IN_SCRIPTING = 1;
public static final int ST_NOWDOC = 6;
public static final int ST_LOOKING_FOR_PROPERTY = 7;
public static final int ST_ONE_LINE_COMMENT = 12;
public static final int ST_COMMENT = 10;
public static final int ST_BACKQUOTE = 3;
public static final int ST_DOUBLE_QUOTES = 2;
public static final int YYINITIAL = 0;
public static final int ST_VAR_OFFSET = 9;
public static final int ST_LOOKING_FOR_VARNAME = 8;
public static final int ST_HEREDOC = 4;
public static final int ST_END_HEREDOC = 5;
/**
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
"\11\0\1\12\1\11\2\0\1\13\22\0\1\12\1\57\1\15\1\100"+
"\1\14\1\63\1\64\1\77\1\51\1\52\1\61\1\4\1\67\1\45"+
"\1\2\1\62\1\5\11\1\1\47\1\21\1\60\1\56\1\46\1\73"+
"\1\74\1\35\1\7\1\30\1\24\1\3\1\25\1\42\1\36\1\22"+
"\1\53\1\41\1\40\1\44\1\27\1\31\1\43\1\55\1\33\1\32"+
"\1\23\1\26\1\50\1\37\1\6\1\34\1\10\1\70\1\16\1\71"+
"\1\66\1\54\1\17\1\35\1\7\1\30\1\24\1\3\1\25\1\42"+
"\1\36\1\22\1\53\1\41\1\40\1\44\1\27\1\31\1\43\1\55"+
"\1\33\1\76\1\23\1\26\1\50\1\37\1\6\1\34\1\10\1\20"+
"\1\65\1\75\1\72\201\10\uff00\0";
/**
* Translates characters to character classes
*/
private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
/**
* Translates DFA states to action switch labels.
*/
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
"\4\0\1\1\10\0\2\2\1\3\1\4\1\5\1\6"+
"\1\7\1\4\3\6\1\10\1\11\1\12\1\13\1\14"+
"\1\15\1\16\17\6\1\17\1\20\1\21\1\6\1\22"+
"\1\23\1\6\1\24\1\25\1\26\1\27\1\30\1\31"+
"\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+
"\1\42\1\43\1\3\1\44\1\1\1\3\1\45\2\3"+
"\1\1\2\3\1\46\1\3\3\1\3\3\1\47\3\3"+
"\1\50\1\51\1\50\1\52\1\53\1\54\1\5\1\7"+
"\1\54\1\55\1\56\1\57\1\60\1\17\1\20\1\21"+
"\1\22\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+
"\1\33\1\34\1\61\1\41\1\62\1\10\1\63\3\10"+
"\3\64\2\63\1\0\1\65\1\66\1\2\1\67\1\0"+
"\1\70\6\6\1\71\1\72\1\0\2\6\2\0\1\73"+
"\2\0\1\74\2\0\1\75\7\6\1\76\12\6\1\77"+
"\5\6\1\100\7\6\1\101\1\102\1\103\1\104\1\105"+
"\1\106\1\6\12\0\1\6\1\107\1\110\2\111\1\112"+
"\1\113\1\0\1\114\1\115\1\116\1\117\1\120\1\121"+
"\1\122\1\123\1\124\1\125\1\126\4\0\1\73\2\127"+
"\1\130\1\131\1\127\3\0\3\132\3\0\1\133\2\1"+
"\2\127\3\0\1\134\2\0\1\135\1\136\1\0\1\137"+
"\1\140\1\141\1\142\2\0\1\67\1\0\7\6\1\67"+
"\1\143\1\6\1\0\5\6\1\144\3\6\1\145\2\6"+
"\1\146\1\6\1\147\1\150\13\6\1\151\10\6\1\152"+
"\1\153\12\0\7\6\1\154\1\155\1\156\3\0\1\157"+
"\1\0\2\117\2\126\1\0\1\160\1\161\1\1\1\162"+
"\1\0\1\136\2\0\6\6\1\163\1\164\1\6\1\165"+
"\22\6\1\166\11\6\1\167\1\170\5\6\12\0\10\6"+
"\4\0\1\171\4\0\1\6\1\172\5\6\1\173\1\174"+
"\3\6\1\175\1\6\1\176\3\6\1\177\2\6\1\200"+
"\2\6\1\201\1\202\1\203\1\204\5\6\1\205\1\206"+
"\2\6\1\207\2\6\4\0\1\210\7\0\10\6\2\211"+
"\4\0\1\212\2\213\1\0\2\6\1\214\2\6\1\215"+
"\4\6\1\216\6\6\1\217\1\220\1\221\2\6\1\222"+
"\1\223\2\6\3\0\1\224\5\0\1\225\1\0\10\6"+
"\4\0\1\226\5\6\1\227\2\6\1\230\1\231\1\6"+
"\1\232\2\6\1\233\1\6\1\234\1\6\3\0\1\235"+
"\1\0\1\236\1\237\7\6\3\0\3\6\1\240\4\6"+
"\1\241\1\6\1\242\1\6\1\243\1\6\1\244\1\245"+
"\1\246\4\6\1\247\1\6\4\0\2\6\1\250\1\251"+
"\3\6\1\252\1\6\1\253\2\6\1\254\2\6\2\0"+
"\1\255\1\256\1\6\1\257\1\260\4\6\1\261\4\0"+
"\5\6\1\0\1\262\1\0\1\263\1\264\1\265\2\6"+
"\1\0\1\266\1\6\1\0\1\6\1\0\1\267\14\0"+
"\1\66\1\0";
private static int [] zzUnpackAction() {
int [] result = new int[672];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAction(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/**
* Translates a state to a row index in the transition table
*/
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\101\0\202\0\303\0\u0104\0\u0145\0\u0186\0\u01c7"+
"\0\u0208\0\u0249\0\u028a\0\u02cb\0\u030c\0\u034d\0\u038e\0\u03cf"+
"\0\u0410\0\u0451\0\u0492\0\u04d3\0\u0514\0\u0555\0\u0596\0\u05d7"+
"\0\u0618\0\u0659\0\u069a\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u06db"+
"\0\u071c\0\u075d\0\u079e\0\u07df\0\u0820\0\u0861\0\u08a2\0\u08e3"+
"\0\u0924\0\u0965\0\u09a6\0\u09e7\0\u0a28\0\u0a69\0\u0aaa\0\u0aeb"+
"\0\u0b2c\0\u0b6d\0\u0bae\0\u03cf\0\u0bef\0\u0c30\0\u0c71\0\u0cb2"+
"\0\u0cf3\0\u0d34\0\u0d75\0\u0db6\0\u0df7\0\u0e38\0\u03cf\0\u03cf"+
"\0\u03cf\0\u03cf\0\u0e79\0\u03cf\0\u03cf\0\u0eba\0\u03cf\0\u0efb"+
"\0\u0f3c\0\u03cf\0\u0f7d\0\u0fbe\0\u0fff\0\u1040\0\u1081\0\u03cf"+
"\0\u10c2\0\u1103\0\u1144\0\u1185\0\u11c6\0\u1207\0\u1248\0\u03cf"+
"\0\u1289\0\u12ca\0\u130b\0\u03cf\0\u134c\0\u138d\0\u03cf\0\u13ce"+
"\0\u140f\0\u03cf\0\u03cf\0\u1450\0\u03cf\0\u03cf\0\u03cf\0\u03cf"+
"\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf"+
"\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf"+
"\0\u1491\0\u14d2\0\u03cf\0\u1513\0\u1554\0\u1595\0\u03cf\0\u15d6"+
"\0\u03cf\0\u1617\0\u1658\0\u1699\0\u16da\0\u171b\0\u175c\0\u179d"+
"\0\u03cf\0\u17de\0\u181f\0\u1860\0\u18a1\0\u18e2\0\u1923\0\u03cf"+
"\0\u03cf\0\u1964\0\u19a5\0\u19e6\0\u1a27\0\u0eba\0\u1a68\0\u069a"+
"\0\u1aa9\0\u03cf\0\u1aea\0\u1b2b\0\u05d7\0\u1b6c\0\u1bad\0\u1bee"+
"\0\u1c2f\0\u1c70\0\u1cb1\0\u1cf2\0\u05d7\0\u1d33\0\u1d74\0\u1db5"+
"\0\u1df6\0\u1e37\0\u1e78\0\u1eb9\0\u1efa\0\u1f3b\0\u1f7c\0\u05d7"+
"\0\u1fbd\0\u1ffe\0\u203f\0\u2080\0\u20c1\0\u05d7\0\u2102\0\u2143"+
"\0\u2184\0\u21c5\0\u2206\0\u2247\0\u2288\0\u03cf\0\u03cf\0\u03cf"+
"\0\u22c9\0\u03cf\0\u03cf\0\u230a\0\u234b\0\u0bae\0\u238c\0\u23cd"+
"\0\u240e\0\u244f\0\u2490\0\u24d1\0\u2512\0\u2553\0\u2594\0\u03cf"+
"\0\u25d5\0\u2616\0\u03cf\0\u03cf\0\u2657\0\u2698\0\u03cf\0\u03cf"+
"\0\u26d9\0\u271a\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u03cf"+
"\0\u275b\0\u279c\0\u27dd\0\u0f7d\0\u281e\0\u285f\0\u27dd\0\u03cf"+
"\0\u03cf\0\u03cf\0\u281e\0\u28a0\0\u1081\0\u28e1\0\u28a0\0\u03cf"+
"\0\u28e1\0\u2922\0\u1207\0\u2963\0\u1185\0\u29a4\0\u29e5\0\u2922"+
"\0\u2963\0\u1289\0\u130b\0\u12ca\0\u130b\0\u2a26\0\u2a67\0\u03cf"+
"\0\u2aa8\0\u2ae9\0\u03cf\0\u03cf\0\u03cf\0\u03cf\0\u2b2a\0\u2b6b"+
"\0\u2bac\0\u2bac\0\u2bed\0\u2c2e\0\u2c6f\0\u2cb0\0\u2cf1\0\u2d32"+
"\0\u2d73\0\u1964\0\u05d7\0\u2db4\0\u2df5\0\u2e36\0\u2e77\0\u2eb8"+
"\0\u2ef9\0\u2f3a\0\u05d7\0\u2f7b\0\u2fbc\0\u2ffd\0\u05d7\0\u303e"+
"\0\u307f\0\u30c0\0\u3101\0\u05d7\0\u05d7\0\u3142\0\u3183\0\u31c4"+
"\0\u3205\0\u3246\0\u3287\0\u32c8\0\u3309\0\u334a\0\u338b\0\u33cc"+
"\0\u05d7\0\u340d\0\u344e\0\u348f\0\u34d0\0\u3511\0\u3552\0\u3593"+
"\0\u35d4\0\u03cf\0\u05d7\0\u3615\0\u3656\0\u3697\0\u36d8\0\u3719"+
"\0\u375a\0\u379b\0\u37dc\0\u381d\0\u385e\0\u389f\0\u38e0\0\u3921"+
"\0\u3962\0\u39a3\0\u39e4\0\u3a25\0\u03cf\0\u03cf\0\u03cf\0\u3a66"+
"\0\u3aa7\0\u3ae8\0\u3b29\0\u3b6a\0\u03cf\0\u3bab\0\u03cf\0\u3bec"+
"\0\u3c2d\0\u03cf\0\u03cf\0\u3c6e\0\u03cf\0\u3caf\0\u2ae9\0\u3cf0"+
"\0\u3d31\0\u3d72\0\u3db3\0\u3df4\0\u3e35\0\u3e76\0\u3eb7\0\u05d7"+
"\0\u3ef8\0\u3f39\0\u05d7\0\u3f7a\0\u3fbb\0\u3ffc\0\u403d\0\u407e"+
"\0\u40bf\0\u4100\0\u4141\0\u4182\0\u41c3\0\u4204\0\u4245\0\u4286"+
"\0\u42c7\0\u4308\0\u4349\0\u438a\0\u43cb\0\u05d7\0\u440c\0\u444d"+
"\0\u448e\0\u44cf\0\u4510\0\u4551\0\u4592\0\u45d3\0\u4614\0\u05d7"+
"\0\u05d7\0\u4655\0\u4696\0\u46d7\0\u4718\0\u4759\0\u479a\0\u47db"+
"\0\u481c\0\u485d\0\u489e\0\u48df\0\u4920\0\u4961\0\u49a2\0\u49e3"+
"\0\u4a24\0\u4a65\0\u4aa6\0\u4ae7\0\u4b28\0\u4b69\0\u4baa\0\u4beb"+
"\0\u4c2c\0\u4c6d\0\u4cae\0\u4cef\0\u03cf\0\u4d30\0\u4d71\0\u4db2"+
"\0\u4df3\0\u4e34\0\u05d7\0\u4e75\0\u4eb6\0\u4ef7\0\u4f38\0\u4f79"+
"\0\u05d7\0\u05d7\0\u4fba\0\u4ffb\0\u503c\0\u05d7\0\u507d\0\u05d7"+
"\0\u50be\0\u50ff\0\u5140\0\u05d7\0\u5181\0\u51c2\0\u05d7\0\u5203"+
"\0\u5244\0\u05d7\0\u05d7\0\u05d7\0\u05d7\0\u5285\0\u52c6\0\u5307"+
"\0\u5348\0\u5389\0\u05d7\0\u05d7\0\u53ca\0\u540b\0\u05d7\0\u544c"+
"\0\u548d\0\u54ce\0\u550f\0\u5550\0\u5591\0\u03cf\0\u55d2\0\u5613"+
"\0\u5654\0\u5695\0\u56d6\0\u5717\0\u5758\0\u5799\0\u57da\0\u581b"+
"\0\u585c\0\u589d\0\u58de\0\u591f\0\u5960\0\u03cf\0\u59a1\0\u59e2"+
"\0\u5a23\0\u5a64\0\u5aa5\0\u03cf\0\u03cf\0\u5ae6\0\u5b27\0\u5b68"+
"\0\u5ba9\0\u5bea\0\u5c2b\0\u5c6c\0\u05d7\0\u5cad\0\u5cee\0\u5d2f"+
"\0\u5d70\0\u05d7\0\u5db1\0\u5df2\0\u5e33\0\u5e74\0\u5eb5\0\u5ef6"+
"\0\u05d7\0\u05d7\0\u05d7\0\u5f37\0\u5f78\0\u05d7\0\u05d7\0\u5fb9"+
"\0\u5ffa\0\u603b\0\u607c\0\u60bd\0\u03cf\0\u60fe\0\u613f\0\u6180"+
"\0\u61c1\0\u6202\0\u03cf\0\u6243\0\u6284\0\u62c5\0\u6306\0\u6347"+
"\0\u6388\0\u63c9\0\u640a\0\u644b\0\u648c\0\u64cd\0\u650e\0\u654f"+
"\0\u05d7\0\u6590\0\u65d1\0\u6612\0\u6653\0\u6694\0\u66d5\0\u6716"+
"\0\u6757\0\u05d7\0\u05d7\0\u6798\0\u05d7\0\u67d9\0\u681a\0\u685b"+
"\0\u689c\0\u05d7\0\u68dd\0\u691e\0\u695f\0\u69a0\0\u03cf\0\u69e1"+
"\0\u03cf\0\u05d7\0\u6a22\0\u6a63\0\u6aa4\0\u6ae5\0\u6b26\0\u6b67"+
"\0\u6ba8\0\u6be9\0\u6c2a\0\u6c6b\0\u6cac\0\u6ced\0\u6d2e\0\u05d7"+
"\0\u6d6f\0\u6db0\0\u6df1\0\u6e32\0\u05d7\0\u6e73\0\u05d7\0\u6eb4"+
"\0\u05d7\0\u6ef5\0\u03cf\0\u03cf\0\u05d7\0\u6f36\0\u6f77\0\u6fb8"+
"\0\u6ff9\0\u05d7\0\u703a\0\u707b\0\u70bc\0\u70fd\0\u713e\0\u717f"+
"\0\u71c0\0\u05d7\0\u05d7\0\u7201\0\u7242\0\u7283\0\u05d7\0\u72c4"+
"\0\u05d7\0\u7305\0\u7346\0\u05d7\0\u7387\0\u73c8\0\u7409\0\u744a"+
"\0\u05d7\0\u05d7\0\u748b\0\u05d7\0\u05d7\0\u74cc\0\u750d\0\u754e"+
"\0\u758f\0\u05d7\0\u75d0\0\u7611\0\u7652\0\u7693\0\u76d4\0\u7715"+
"\0\u7756\0\u7797\0\u77d8\0\u7819\0\u03cf\0\u785a\0\u05d7\0\u05d7"+
"\0\u05d7\0\u789b\0\u78dc\0\u791d\0\u05d7\0\u795e\0\u799f\0\u79e0"+
"\0\u7a21\0\u05d7\0\u7a62\0\u7aa3\0\u7ae4\0\u7b25\0\u7b66\0\u7ba7"+
"\0\u7be8\0\u7c29\0\u7c6a\0\u7cab\0\u7cec\0\u7d2d\0\u03cf\0\u7d6e";
private static int [] zzUnpackRowMap() {
int [] result = new int[672];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
}
private static int zzUnpackRowMap(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int high = packed.charAt(i++) << 16;
result[j++] = high | packed.charAt(i++);
}
return j;
}
/**
* The transition table of the DFA
*/
private static final int [] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 =
"\60\16\1\17\20\16\1\20\1\21\1\22\1\23\1\24"+
"\1\25\1\26\1\27\1\30\3\31\1\32\1\33\1\34"+
"\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44"+
"\1\45\1\46\1\47\1\50\1\51\1\30\1\52\1\30"+
"\1\53\1\54\1\30\1\55\1\56\1\30\1\57\1\60"+
"\1\61\1\62\1\63\1\64\1\30\1\65\1\30\1\66"+
"\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\76"+
"\1\77\1\100\1\101\1\102\1\103\1\104\1\105\1\50"+
"\1\106\1\107\14\110\1\111\1\112\1\113\1\110\1\114"+
"\60\110\14\115\1\116\1\115\1\117\1\120\1\121\60\115"+
"\3\122\1\123\2\122\3\123\1\124\1\122\1\124\1\125"+
"\1\122\1\126\1\122\1\127\1\122\23\123\3\122\1\123"+
"\2\122\3\123\20\122\1\123\2\122\101\130\3\131\1\132"+
"\2\131\3\132\1\133\1\131\1\133\6\131\23\132\3\131"+
"\1\132\2\131\3\132\20\131\1\132\2\131\3\134\1\135"+
"\2\134\3\135\3\31\6\134\23\135\1\136\2\134\1\135"+
"\2\134\3\135\20\134\1\135\2\134\3\137\1\140\2\137"+
"\3\140\11\137\23\140\3\137\1\140\2\137\3\140\20\137"+
"\1\140\2\137\1\20\1\141\1\142\1\30\1\143\1\144"+
"\3\30\3\145\1\32\1\146\1\145\1\147\1\150\1\37"+
"\23\30\1\151\1\152\1\153\1\30\1\154\1\64\3\30"+
"\1\155\1\156\1\157\1\160\1\161\1\162\1\163\1\164"+
"\1\165\1\77\1\100\1\166\1\102\1\167\1\104\1\170"+
"\1\30\2\145\61\171\1\172\17\171\13\173\1\174\45\173"+
"\1\175\17\173\11\176\1\177\1\176\1\200\32\176\1\201"+
"\14\176\1\202\7\176\1\202\5\176\60\16\1\203\100\16"+
"\1\0\2\16\1\204\7\16\1\205\2\16\1\206\2\16"+
"\102\0\1\21\1\207\1\210\1\0\1\21\74\0\1\207"+
"\3\0\1\207\50\0\1\211\23\0\1\30\1\0\1\30"+
"\1\0\1\30\1\212\2\30\11\0\5\30\1\213\1\214"+
"\7\30\1\215\3\30\1\216\3\0\1\217\2\0\3\30"+
"\20\0\1\30\6\0\1\220\51\0\1\221\23\0\1\21"+
"\1\207\1\210\1\0\1\21\1\222\73\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\7\30\1\223\13\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\4\0\1\33\4\0\11\30\1\224"+
"\11\30\3\0\1\30\2\0\3\30\2\0\1\225\15\0"+
"\1\30\1\226\2\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\23\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\13\0\3\31\70\0\1\227\2\0\3\227\11\0\23\227"+
"\3\0\1\227\2\0\3\227\20\0\1\227\2\0\14\230"+
"\1\231\1\232\1\233\1\230\1\234\60\230\1\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\3\30\1\235\1\30"+
"\1\236\2\30\1\237\11\30\1\240\3\0\1\30\2\0"+
"\3\30\20\0\1\237\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\11\30\1\241\2\30\1\242\6\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\243\1\0\4\30\11\0\1\244\6\30\1\245\13\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\246\3\30\1\247"+
"\2\30\1\250\13\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\5\30\1\251\2\30\1\252\12\30\3\0\1\30\2\0"+
"\3\30\20\0\1\252\3\0\1\30\1\0\1\253\1\0"+
"\4\30\11\0\13\30\1\254\7\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\7\30\1\255\3\30\1\256\2\30\1\257"+
"\4\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\11\30\1\260"+
"\11\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\1\30\1\261"+
"\13\30\1\262\5\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\263\1\0\4\30\11\0"+
"\23\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\2\30\1\264\1\30\11\0"+
"\5\30\1\265\2\30\1\266\1\267\11\30\3\0\1\30"+
"\2\0\3\30\20\0\1\266\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\14\30\1\270\6\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\1\271\22\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\7\30\1\272\6\30\1\273\4\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\4\30\1\274\4\30\1\275"+
"\11\30\3\0\1\30\2\0\3\30\20\0\1\30\47\0"+
"\1\276\1\277\7\0\1\300\70\0\1\301\7\0\1\302"+
"\71\0\1\303\32\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\13\30\1\304\7\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\11\0\1\305\2\0\1\306\7\0\1\307"+
"\1\0\1\310\1\311\1\312\2\0\1\313\1\314\1\315"+
"\1\0\1\316\40\0\1\314\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\23\30\3\0\1\30\2\0\1\30"+
"\1\317\1\30\20\0\1\30\50\0\1\320\7\0\1\321"+
"\100\0\1\322\70\0\1\323\7\0\1\324\1\0\1\325"+
"\1\0\1\326\74\0\1\327\100\0\1\330\2\0\1\331"+
"\1\107\64\0\1\332\7\0\1\333\100\0\1\334\5\0"+
"\1\335\72\0\1\336\6\0\1\337\71\0\1\340\70\0"+
"\1\341\32\0\16\226\1\342\60\226\1\232\1\226\14\110"+
"\1\343\1\0\1\344\1\110\1\345\63\110\1\346\2\110"+
"\3\346\3\110\1\347\1\350\1\344\1\110\1\351\1\110"+
"\23\346\3\110\1\346\2\110\3\346\20\110\1\346\117\110"+
"\1\352\1\350\1\344\1\110\1\353\60\110\14\115\1\354"+
"\1\115\1\355\1\0\1\356\63\115\1\346\2\115\3\346"+
"\3\115\1\357\1\115\1\355\1\360\1\351\1\115\23\346"+
"\3\115\1\346\2\115\3\346\20\115\1\346\117\115\1\352"+
"\1\115\1\355\1\360\1\361\60\115\11\122\1\124\1\122"+
"\1\124\1\362\1\122\1\363\1\122\1\364\61\122\1\123"+
"\1\122\1\123\1\122\4\123\1\365\1\122\1\365\1\362"+
"\1\122\1\363\1\122\1\364\1\366\23\123\3\122\1\123"+
"\2\122\3\123\20\122\1\123\5\122\1\367\2\122\3\367"+
"\1\124\1\122\1\124\1\362\1\122\1\363\1\122\1\364"+
"\1\122\23\367\3\122\1\367\2\122\3\367\20\122\1\367"+
"\5\122\1\346\2\122\3\346\1\124\1\122\1\124\1\370"+
"\1\122\1\363\1\122\1\351\1\122\23\346\3\122\1\346"+
"\2\122\3\346\20\122\1\346\13\122\1\124\1\122\1\124"+
"\76\122\1\124\1\122\1\124\1\352\1\122\1\363\1\122"+
"\1\371\60\122\11\372\1\373\1\372\1\373\66\372\1\374"+
"\1\372\1\374\1\372\4\374\1\375\1\372\1\375\5\372"+
"\1\376\23\374\3\372\1\374\2\372\3\374\20\372\1\374"+
"\5\372\1\377\2\372\3\377\1\373\1\372\1\373\6\372"+
"\23\377\3\372\1\377\2\372\3\377\20\372\1\377\2\372"+
"\1\0\1\135\1\0\1\135\1\0\4\135\11\0\23\135"+
"\3\0\1\135\2\0\3\135\20\0\1\135\50\0\1\u0100"+
"\33\0\1\140\1\0\1\140\1\0\4\140\11\0\23\140"+
"\3\0\1\140\2\0\3\140\20\0\1\140\3\0\1\141"+
"\3\0\1\141\74\0\1\u0101\3\0\1\u0101\1\u0102\72\0"+
"\61\171\1\0\17\171\62\0\1\u0103\27\0\1\173\151\0"+
"\1\u0104\16\0\11\176\1\177\1\176\1\200\32\176\1\177"+
"\14\176\1\177\7\176\1\177\5\176\11\0\1\177\135\0"+
"\1\u0105\32\0\60\16\1\0\2\16\1\0\7\16\1\0"+
"\2\16\1\0\2\16\56\0\1\u0106\65\0\1\u0107\12\0"+
"\1\u0106\52\0\1\u0108\51\0\1\207\1\0\1\210\1\0"+
"\1\207\74\0\1\u0109\2\0\1\u010a\1\u0109\37\0\1\u010a"+
"\34\0\1\30\1\0\1\30\1\0\4\30\11\0\1\u010b"+
"\1\u010c\21\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\2\30"+
"\1\u010d\20\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\14\30"+
"\1\u010e\6\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\10\30"+
"\1\u010f\12\30\3\0\1\30\2\0\3\30\20\0\1\u010f"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\21\30"+
"\1\u0110\1\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\13\30"+
"\1\u0111\7\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\u0112\1\0\1\u0112\1\0\1\u0112\1\0\1\u0112"+
"\14\0\2\u0112\2\0\1\u0112\4\0\1\u0112\44\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\11\30\1\u0113\11\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\u0114\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\62\0\1\u0115\21\0\1\227"+
"\1\0\1\227\1\0\4\227\11\0\23\227\3\0\1\227"+
"\2\0\3\227\20\0\1\227\2\0\3\230\1\0\2\230"+
"\3\0\3\230\1\231\1\232\1\233\1\230\1\0\1\230"+
"\23\0\3\230\1\0\2\230\3\0\20\230\1\0\117\230"+
"\1\0\1\232\1\233\1\230\1\234\60\230\1\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\30\1\u0116\4\30"+
"\1\u0117\1\30\1\u0118\12\30\3\0\1\30\2\0\3\30"+
"\20\0\1\u0118\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\10\30\1\u0119\12\30\3\0\1\30\2\0\3\30"+
"\20\0\1\u0119\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\21\30\1\u011a\1\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\12\30\1\u011b\10\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\11\30\1\u011c\11\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\3\30\1\u011d\2\30\1\u011e\14\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\u011f"+
"\1\0\4\30\11\0\23\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\5\30\1\u0120\15\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\5\30\1\u0121\15\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\11\30\1\u0122\11\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\10\30\1\u0123\12\30\3\0\1\30\2\0\3\30"+
"\20\0\1\u0123\3\0\1\30\1\0\1\u0124\1\0\4\30"+
"\11\0\23\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\15\30"+
"\1\u0125\5\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\22\30"+
"\1\u0126\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\5\30\1\u0127"+
"\15\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\1\30\1\u0128"+
"\6\30\1\u0129\12\30\3\0\1\30\2\0\3\30\20\0"+
"\1\u0129\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\7\30\1\u012a\3\30\1\u012b\7\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\13\30\1\u012c\7\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\u012d\22\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\1\30\1\u012e\21\30\3\0\1\30\2\0\2\30"+
"\1\u012f\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\10\30\1\u0130\12\30\3\0\1\30\2\0"+
"\3\30\20\0\1\u0130\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\2\30\1\u0131\20\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\11\30\1\u0132\11\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\u0133\22\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\10\30\1\u0134\12\30\3\0\1\30\2\0\3\30"+
"\20\0\1\u0134\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\1\30\1\u0135\21\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\7\30\1\u0136\13\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\2\30"+
"\1\u0137\1\30\11\0\23\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\1\u0138\6\30\1\u0139\13\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\60\0\1\u013a\23\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\11\30\1\u013b\11\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\24\0\1\u013c\6\0"+
"\1\u013d\76\0\1\u013e\102\0\1\u013f\107\0\1\u0140\67\0"+
"\1\u0141\60\0\1\u0142\114\0\1\u0143\60\0\1\u0144\130\0"+
"\1\u0145\46\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\2\30\1\u0146\1\u0147\1\30\1\u0148\1\u0149\5\30\1\u014a"+
"\1\30\1\u014b\3\30\1\u014c\3\0\1\30\2\0\3\30"+
"\20\0\1\30\60\0\1\u014d\100\0\1\u014e\100\0\1\u014f"+
"\1\0\1\u0150\52\0\1\u0151\43\0\1\u0151\13\0\3\u0152"+
"\45\0\1\u0153\12\0\1\u0154\15\0\1\u0155\1\0\1\u0156"+
"\76\0\1\u0157\1\0\1\u0158\65\0\101\226\3\110\1\0"+
"\2\110\3\0\3\110\1\347\1\350\1\344\1\110\1\0"+
"\1\110\23\0\3\110\1\0\2\110\3\0\20\110\1\0"+
"\16\110\1\0\1\350\1\344\1\110\1\353\60\110\1\0"+
"\1\346\1\0\1\346\1\0\4\346\11\0\23\346\1\u0159"+
"\2\0\1\346\2\0\3\346\12\0\1\u015a\5\0\1\346"+
"\2\0\3\115\1\0\2\115\3\0\3\115\1\357\1\115"+
"\1\355\1\360\1\0\1\115\23\0\3\115\1\0\2\115"+
"\3\0\20\115\1\0\16\115\1\0\1\115\1\355\1\360"+
"\1\361\60\115\3\122\1\0\2\122\3\0\1\124\1\122"+
"\1\124\1\370\1\122\1\363\1\122\1\0\1\122\23\0"+
"\3\122\1\0\2\122\3\0\20\122\1\0\13\122\1\124"+
"\1\122\1\124\1\0\1\122\1\363\1\122\1\371\71\122"+
"\1\365\1\122\1\365\1\362\1\122\1\363\1\122\1\364"+
"\61\122\1\367\1\122\1\367\1\122\4\367\1\u015b\1\122"+
"\1\u015b\1\362\1\122\1\363\1\122\1\364\1\u015c\23\367"+
"\3\122\1\367\2\122\3\367\20\122\1\367\2\122\11\372"+
"\1\375\1\372\1\375\66\372\1\377\1\372\1\377\1\372"+
"\4\377\1\u015d\1\372\1\u015d\5\372\1\u015e\23\377\3\372"+
"\1\377\2\372\3\377\20\372\1\377\2\372\1\0\1\u0101"+
"\3\0\1\u0101\74\0\1\u015f\1\0\1\u015f\1\0\1\u015f"+
"\1\0\1\u015f\14\0\2\u015f\2\0\1\u015f\4\0\1\u015f"+
"\101\0\1\u0160\75\0\1\u0161\46\0\1\u0109\3\0\1\u0109"+
"\74\0\1\30\1\0\1\30\1\0\4\30\11\0\1\30"+
"\1\u011f\21\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\u0162\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\u0163\1\30\1\u0164"+
"\1\u0165\4\30\1\u0166\4\30\1\u0167\5\30\3\0\1\30"+
"\2\0\3\30\20\0\1\u0166\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\7\30\1\u0168\13\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\u0169"+
"\1\0\4\30\11\0\23\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\1\30\1\u016a\21\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\16\30\1\u016b\4\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\13\30\1\u016c\7\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\62\0\1\u0150\21\0\1\30\1\0\1\u016d"+
"\1\0\4\30\11\0\23\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\16\30\1\u016e\4\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\1\30\1\u016f\21\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\u0170\1\0\4\30"+
"\11\0\23\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\16\30"+
"\1\u0171\4\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\7\30"+
"\1\u0172\13\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\1\u0173"+
"\12\30\1\u0174\7\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\16\30\1\u0175\4\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\13\30\1\u0176\7\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\6\30\1\u0177\14\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\u0178\1\0\4\30\11\0"+
"\23\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\u0179\1\0\4\30\11\0\23\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\u017a\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\30\1\u017b\6\30\1\u017c\12\30\3\0"+
"\1\30\2\0\3\30\20\0\1\u017c\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\6\30\1\u017d\14\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\u017e\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\5\30\1\u017f\15\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\10\30\1\u0180\12\30\3\0\1\30\2\0"+
"\3\30\20\0\1\u0180\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\30\1\u0181\21\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\30\1\u0182\21\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\4\30\1\u0183\16\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\4\30\1\u0184\16\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\30\1\u0185\21\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\13\30\1\u0186\7\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\16\30\1\u0187\4\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\30\1\u0188\21\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\7\30\1\u0189\13\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\2\30\1\u018a\1\30\11\0\23\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\16\30\1\u018b\4\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\5\30\1\u018c\15\30\3\0\1\u018d\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\30\1\u018e\21\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\31\0\1\u018f\102\0\1\u0190\72\0"+
"\1\u0191\103\0\1\u0192\103\0\1\u0193\101\0\1\u0194\43\0"+
"\1\u0194\55\0\1\u0195\60\0\1\u0196\102\0\1\u0197\76\0"+
"\1\u0198\46\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\1\u0199\22\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\1\u019a"+
"\3\30\1\u019b\16\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\13\30\1\u019c\7\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\16\30\1\u019d\4\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\13\30\1\u019e\7\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\1\u019f\22\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\u01a0\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\5\0\1\u01a1"+
"\2\0\3\u01a1\1\0\1\u0150\2\0\1\u01a2\4\0\23\u01a1"+
"\3\0\1\u01a1\2\0\3\u01a1\20\0\1\u01a1\1\u01a3\31\0"+
"\1\u01a4\61\0\3\u0152\60\0\1\u0154\66\0\1\u01a5\66\0"+
"\1\u01a6\41\0\1\u0155\100\0\1\u0157\135\0\1\u01a7\32\0"+
"\11\122\1\u015b\1\122\1\u015b\1\362\1\122\1\363\1\122"+
"\1\364\60\122\11\372\1\u015d\1\372\1\u015d\65\372\43\0"+
"\1\u01a8\57\0\1\u01a9\57\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\5\30\1\u01aa\15\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\3\30\1\u01ab\17\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\u01ac\1\0"+
"\4\30\11\0\23\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\7\30\1\u01ad\13\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\15\30\1\u01ae\5\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\14\30\1\u01af\6\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\1\u01b0\22\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\12\30"+
"\1\u01b1\10\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\17\30"+
"\1\u01b2\3\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\11\30"+
"\1\u01b3\11\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\4\30"+
"\1\u01b4\16\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\13\30"+
"\1\u01b5\7\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\1\30"+
"\1\u01b6\21\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\u01b7\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\15\30\1\u01b8\5\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\5\30\1\u01b9\15\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\4\30\1\u01ba\16\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\13\30\1\u01bb\7\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\16\30\1\u01bc\4\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\30\1\u01bd\21\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\13\30\1\u01be\7\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\30\1\u01bf\21\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\10\30\1\u01c0\12\30"+
"\3\0\1\30\2\0\3\30\20\0\1\u01c0\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\u01c1\22\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\1\30\1\u01c2\21\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\14\30\1\u01c3\6\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\u01c4\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\10\30\1\u01c5\12\30\3\0\1\30\2\0"+
"\3\30\20\0\1\u01c5\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\u01c6\22\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\6\30\1\u01c7\14\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\11\30\1\u01c8\11\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\1\u01c9\22\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\11\30\1\u01ca\11\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\12\30\1\u01cb\10\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\u01cc\1\0\4\30\11\0"+
"\23\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\13\30\1\u01cd"+
"\7\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\1\u01ce\22\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\30\1\u01cf\21\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\13\30\1\u01d0\7\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\u01d1\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\37\0\1\u01d2\103\0\1\u01d3"+
"\43\0\1\u01d4\6\0\1\u01d5\37\0\1\u01d6\35\0\1\u01d7"+
"\126\0\1\u01d8\46\0\1\u01d9\100\0\1\u01da\117\0\1\u01db"+
"\116\0\1\u01dc\75\0\1\u01dd\44\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\11\30\1\u01de\11\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\16\30\1\u01df\4\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\5\30\1\u01e0\15\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\22\30\1\u01e1\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\13\30\1\u01e2\7\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\16\30\1\u01e3\4\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\5\30\1\u01e4\15\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\30\1\u01e5\21\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\u01a1\1\0\1\u01a1\1\0"+
"\4\u01a1\1\u01e6\1\0\1\u01e7\6\0\23\u01a1\3\0\1\u01a1"+
"\2\0\3\u01a1\20\0\1\u01a1\5\0\1\u01e8\2\0\3\u01e8"+
"\11\0\23\u01e8\3\0\1\u01e8\2\0\3\u01e8\20\0\1\u01e8"+
"\5\0\1\u01e9\2\0\3\u01e9\11\0\23\u01e9\3\0\1\u01e9"+
"\2\0\3\u01e9\20\0\1\u01e9\35\0\1\u01ea\102\0\1\u01eb"+
"\46\0\1\u01ec\2\0\3\u01ec\11\0\23\u01ec\3\0\1\u01ec"+
"\2\0\3\u01ec\20\0\1\u01ec\13\0\2\u01ed\1\u01ee\130\0"+
"\1\u01ef\36\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\2\30\1\u01f0\20\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\6\30\1\u01f1\14\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\11\30\1\u01f2\11\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\1\u01f3\22\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\1\u01f4"+
"\22\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\3\30\1\u01f5"+
"\17\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\3\30\1\u01f6"+
"\17\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\2\30\1\u01f7"+
"\20\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\5\30\1\u01f8"+
"\15\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\22\30\1\u01f9"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\u01fa\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\16\30\1\u01fb\4\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\11\30\1\u01fc\11\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\1\u01fd\22\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\6\30\1\u01fe\14\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\21\30\1\u01ff\1\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\5\30\1\u0200\15\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\6\30\1\u0201\14\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\14\30\1\u0202\6\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\5\30\1\u0203\15\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\11\30\1\u0204\11\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\13\30\1\u0205\7\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\16\30\1\u0206\4\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\6\30\1\u0207\14\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\1\30\1\u0208\21\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\6\30\1\u0209\14\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\35\0\1\u020a\50\0\1\u020b\6\0"+
"\1\u020c\37\0\1\u020d\70\0\1\u020e\50\0\1\u01d5\37\0"+
"\1\u01d6\66\0\1\u020f\63\0\1\u01dc\100\0\1\u0210\105\0"+
"\1\u0211\77\0\1\u0212\63\0\1\u01dc\37\0\1\u0213\62\0"+
"\1\u0214\45\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\23\30\3\0\1\30\2\0\1\30\1\u0215\1\30\20\0"+
"\1\30\3\0\1\30\1\0\1\u0216\1\0\4\30\11\0"+
"\23\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\6\30\1\u0217"+
"\14\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\u0218\1\0\4\30\11\0\23\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\10\30\1\u0219\12\30\3\0"+
"\1\30\2\0\3\30\20\0\1\u0219\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\1\30\1\u021a\21\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\u021b\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\14\30\1\u021c\6\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\13\0\1\u01e6\70\0\1\u01e8\1\0"+
"\1\u01e8\1\0\4\u01e8\4\0\1\u021d\4\0\23\u01e8\3\0"+
"\1\u01e8\2\0\3\u01e8\20\0\1\u01e8\3\0\1\u01e9\1\0"+
"\1\u01e9\1\0\4\u01e9\11\0\23\u01e9\3\0\1\u01e9\2\0"+
"\3\u01e9\20\0\1\u01e9\1\u021d\23\0\1\u021e\111\0\1\u021f"+
"\56\0\1\u01ed\112\0\1\u0220\56\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\10\30\1\u0221\12\30\3\0\1\30"+
"\2\0\3\30\20\0\1\u0221\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\16\30\1\u0222\4\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\u0223"+
"\1\0\4\30\11\0\23\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\1\30\1\u0224\21\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\16\30\1\u0225\4\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\13\30\1\u0226\7\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\u0227\1\0\4\30"+
"\11\0\23\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\6\30"+
"\1\u0228\14\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\u0229\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\30\1\u022a\21\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\u022b\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\7\30\1\u022c\13\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\14\30\1\u022d\6\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\13\30\1\u022e\7\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\4\30\1\u022f\16\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\u0230"+
"\1\0\4\30\11\0\23\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\6\30\1\u0231\14\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\u0232\1\0\4\30"+
"\11\0\23\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\1\30"+
"\1\u0233\21\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\36\0\1\u0234\101\0\1\u0235\55\0\1\u020c\37\0\1\u020d"+
"\31\0\1\u0236\100\0\1\u01dc\107\0\1\u0210\37\0\1\u0237"+
"\51\0\1\u0238\117\0\1\u0234\50\0\1\u0214\37\0\1\u0239"+
"\27\0\1\30\1\0\1\30\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\1\30\1\u023a\1\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\1\30\1\u023b\1\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\1\30"+
"\1\u023c\21\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\10\30"+
"\1\u023d\12\30\3\0\1\30\2\0\3\30\20\0\1\u023d"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\10\30"+
"\1\u023e\12\30\3\0\1\30\2\0\3\30\20\0\1\u023e"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\1\30\1\u023f\1\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\1\30\1\u0240\1\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\7\30"+
"\1\u0241\13\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\13\0\1\u01e6\1\0\1\u01e7\130\0\1\u0242\46\0\3\u0243"+
"\76\0\3\u0244\66\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\13\30\1\u0245\7\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\13\30\1\u0246\7\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\30\1\0\4\30"+
"\11\0\6\30\1\u0247\14\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\3\0\1\30\1\0\1\u0248\1\0\4\30"+
"\11\0\23\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\6\30"+
"\1\u0249\14\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\1\30\1\u024a\1\30\20\0\1\30"+
"\3\0\1\30\1\0\1\u024b\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\5\30\1\u024c\15\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\5\30\1\u024d\15\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\6\30\1\u024e\14\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\u024f\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\23\30\3\0\1\30\2\0\1\30"+
"\1\u0250\1\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\1\30\1\u0251\21\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\u0252"+
"\1\0\4\30\11\0\23\30\3\0\1\30\2\0\3\30"+
"\20\0\1\30\14\0\1\u0234\37\0\1\u0253\55\0\1\u020c"+
"\104\0\1\u01d5\57\0\1\u0238\37\0\1\u0254\27\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\1\30\1\u0255\1\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\u0256\22\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\21\30\1\u0257\1\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\1\30\1\u0258\1\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\6\30\1\u0259\14\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\1\30\1\u025a\1\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\2\30\1\u025b\20\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\25\0\1\u025c\60\0"+
"\1\u025d\2\0\3\u025d\3\u0243\1\u025e\5\0\23\u025d\3\0"+
"\1\u025d\2\0\3\u025d\20\0\1\u025d\13\0\3\u0244\24\0"+
"\1\u025f\41\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\11\30\1\u0260\11\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\6\30\1\u0261\14\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\30\1\0\4\30\11\0"+
"\14\30\1\u0262\6\30\3\0\1\30\2\0\3\30\20\0"+
"\1\30\3\0\1\30\1\0\1\u0263\1\0\4\30\11\0"+
"\23\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\7\30\1\u0264"+
"\13\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\7\30\1\u0265"+
"\13\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\30\1\0\4\30\11\0\1\30\1\u0266"+
"\21\30\3\0\1\30\2\0\3\30\20\0\1\30\3\0"+
"\1\30\1\0\1\u0267\1\0\4\30\11\0\23\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\7\30\1\u0268\13\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\2\30\1\u0269\20\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\7\30\1\u026a\13\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\13\30\1\u026b\7\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\1\30\1\u026c\1\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\7\30\1\u026d\13\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\3\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\1\30\1\u026e\1\30\20\0\1\30\13\0\3\u025c\32\0"+
"\1\341\33\0\1\u025d\1\0\1\u025d\1\0\4\u025d\3\u026f"+
"\6\0\23\u025d\3\0\1\u025d\2\0\3\u025d\20\0\1\u025d"+
"\5\0\1\u025d\2\0\3\u025d\11\0\23\u025d\3\0\1\u025d"+
"\2\0\3\u025d\20\0\1\u025d\37\0\1\u0270\44\0\1\30"+
"\1\0\1\u0271\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\14\30\1\u0272\6\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\5\30\1\u0273\15\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\3\30\1\u0274\17\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\10\30\1\u0275\12\30\3\0\1\30"+
"\2\0\3\30\20\0\1\u0275\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\5\30\1\u0276\15\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\5\30\1\u0277\15\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\6\30\1\u0278\14\30\3\0\1\30"+
"\2\0\3\30\20\0\1\30\3\0\1\30\1\0\1\30"+
"\1\0\4\30\11\0\22\30\1\u0279\3\0\1\30\2\0"+
"\3\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\23\30\3\0\1\30\2\0\1\30\1\u027a"+
"\1\30\20\0\1\30\5\0\1\u027b\2\0\3\u027b\3\u026f"+
"\2\0\1\u027c\3\0\23\u027b\3\0\1\u027b\2\0\3\u027b"+
"\3\0\1\u027d\3\0\1\u027c\10\0\1\u027b\31\0\1\u027e"+
"\52\0\1\30\1\0\1\30\1\0\4\30\11\0\6\30"+
"\1\u027f\14\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\6\30"+
"\1\u0280\14\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\30\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\1\30\1\u0281\1\30\20\0\1\30"+
"\3\0\1\30\1\0\1\u0282\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\21\30\1\u0283\1\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\u027b"+
"\1\0\1\u027b\1\0\4\u027b\3\u0284\2\0\1\u027c\3\0"+
"\23\u027b\3\0\1\u027b\2\0\3\u027b\3\0\1\u027d\3\0"+
"\1\u027c\10\0\1\u027b\5\0\1\u027b\2\0\3\u027b\3\u0284"+
"\2\0\1\u027c\3\0\23\u027b\3\0\1\u027b\2\0\3\u027b"+
"\3\0\1\u027d\3\0\1\u027c\10\0\1\u027b\64\0\1\u0285"+
"\60\0\1\u0286\37\0\1\30\1\0\1\u0287\1\0\4\30"+
"\11\0\23\30\3\0\1\30\2\0\3\30\20\0\1\30"+
"\3\0\1\30\1\0\1\u0288\1\0\4\30\11\0\23\30"+
"\3\0\1\30\2\0\3\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\1\30\1\u0289\1\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\23\30\3\0\1\30"+
"\2\0\1\30\1\u028a\1\30\20\0\1\30\3\0\1\30"+
"\1\0\1\30\1\0\4\30\11\0\1\u028b\22\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\13\0\3\u0284\45\0"+
"\1\u027d\45\0\1\u028c\53\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\23\30\3\0\1\30\2\0\1\30\1\u028d"+
"\1\30\20\0\1\30\3\0\1\30\1\0\1\30\1\0"+
"\4\30\11\0\16\30\1\u028e\4\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\37\0\1\u028f\44\0\1\30\1\0"+
"\1\u0290\1\0\4\30\11\0\23\30\3\0\1\30\2\0"+
"\3\30\20\0\1\30\44\0\1\u0291\37\0\1\30\1\0"+
"\1\30\1\0\4\30\11\0\11\30\1\u0292\11\30\3\0"+
"\1\30\2\0\3\30\20\0\1\30\5\0\1\u0293\106\0"+
"\3\u0293\42\0\1\u0294\33\0\3\u0294\1\0\1\u0295\25\0"+
"\1\u0296\33\0\1\u0297\44\0\1\u0298\73\0\1\u0299\105\0"+
"\1\u029a\73\0\1\u029b\105\0\1\u029c\73\0\1\u029d\105\0"+
"\1\u029e\46\0\3\u029c\32\0\1\u029f\75\0\1\u02a0\52\0"+
"\1\u029c\162\0\1\u029c\1\0";
private static int [] zzUnpackTrans() {
int [] result = new int[32175];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
}
private static int zzUnpackTrans(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
value--;
do result[j++] = value; while (--count > 0);
}
return j;
}
/* error codes */
private static final int ZZ_UNKNOWN_ERROR = 0;
private static final int ZZ_NO_MATCH = 1;
private static final int ZZ_PUSHBACK_2BIG = 2;
/* error messages for the codes above */
private static final String ZZ_ERROR_MSG[] = {
"Unkown internal scanner error",
"Error: could not match input",
"Error: pushback value was too large"
};
/**
* ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
*/
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\4\0\1\1\10\0\2\1\1\11\13\1\4\11\24\1"+
"\1\11\12\1\4\11\1\1\2\11\1\1\1\11\2\1"+
"\1\11\5\1\1\11\7\1\1\11\3\1\1\11\2\1"+
"\1\11\2\1\2\11\1\1\24\11\2\1\1\11\3\1"+
"\1\11\1\1\1\11\1\1\1\0\4\1\1\0\1\11"+
"\6\1\2\11\1\0\2\1\2\0\1\1\2\0\1\11"+
"\2\0\41\1\3\11\1\1\2\11\1\1\12\0\1\1"+
"\1\11\2\1\2\11\1\1\1\0\2\11\2\1\6\11"+
"\1\1\4\0\2\1\3\11\1\1\3\0\1\1\1\11"+
"\1\1\3\0\5\1\3\0\1\1\2\0\1\11\1\1"+
"\1\0\4\11\2\0\1\1\1\0\12\1\1\0\44\1"+
"\1\11\1\1\12\0\7\1\3\11\3\0\1\1\1\0"+
"\1\11\1\1\1\11\1\1\1\0\2\11\1\1\1\11"+
"\1\0\1\1\2\0\55\1\12\0\10\1\4\0\1\11"+
"\4\0\50\1\4\0\1\11\7\0\10\1\1\11\1\1"+
"\4\0\2\11\1\1\1\0\32\1\3\0\1\11\5\0"+
"\1\11\1\0\10\1\4\0\23\1\3\0\1\11\1\0"+
"\1\11\10\1\3\0\16\1\2\11\7\1\4\0\17\1"+
"\2\0\12\1\4\0\5\1\1\0\1\11\1\0\5\1"+
"\1\0\2\1\1\0\1\1\1\0\1\1\14\0\1\11"+
"\1\0";
private static int [] zzUnpackAttribute() {
int [] result = new int[672];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAttribute(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/** the input device */
private java.io.Reader zzReader;
/** the current state of the DFA */
private int zzState;
/** the current lexical state */
private int zzLexicalState = YYINITIAL;
/** this buffer contains the current text to be matched and is
the source of the yytext() string */
private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
/** the textposition at the last accepting state */
private int zzMarkedPos;
/** the textposition at the last state to be included in yytext */
private int zzPushbackPos;
/** the current text position in the buffer */
private int zzCurrentPos;
/** startRead marks the beginning of the yytext() string in the buffer */
private int zzStartRead;
/** endRead marks the last character in the buffer, that has been read
from input */
private int zzEndRead;
/** number of newlines encountered up to the start of the matched text */
private int yyline;
/** the number of characters up to the start of the matched text */
private int yychar;
/**
* the number of characters from the last newline up to the start of the
* matched text
*/
private int yycolumn;
/**
* zzAtBOL == true <=> the scanner is currently at the beginning of a line
*/
private boolean zzAtBOL = true;
/** zzAtEOF == true <=> the scanner is at the EOF */
private boolean zzAtEOF;
/** denotes if the user-EOF-code has already been executed */
private boolean zzEOFDone;
/* user code: */
private final LinkedList commentList = new LinkedList();
private String heredoc = null;
private String nowdoc = null;
private boolean asp_tags = false;
private boolean short_tags_allowed = true;
private StateStack stack = new StateStack();
private char yy_old_buffer[] = new char[ZZ_BUFFERSIZE];
private int yy_old_pushbackPos;
protected int commentStartPosition;
private AST ast;
public void setAST(AST ast) {
this.ast = ast;
}
public PHPVersion getPHPVersion() {
return PHPVersion.PHP5_3;
}
public void setInScriptingState() {
yybegin(ST_IN_SCRIPTING);
}
public void resetCommentList() {
commentList.clear();
}
public LinkedList getCommentList() {
return commentList;
}
protected void addComment(int type) {
if (ast == null)
{
return;
}
int leftPosition = getTokenStartPosition();
Comment comment = new Comment(commentStartPosition, leftPosition + getTokenLength(), ast, type);
commentList.add(comment);
}
public void setUseAspTagsAsPhp(boolean useAspTagsAsPhp) {
asp_tags = useAspTagsAsPhp;
}
public void setUseShortTags(boolean useShortTags) {
short_tags_allowed = useShortTags;
}
private void pushState(int state) {
stack.pushStack(zzLexicalState);
yybegin(state);
}
private void popState() {
yybegin(stack.popStack());
}
public int getCurrentLine() {
return yyline;
}
protected int getTokenStartPosition() {
return zzStartRead - zzPushbackPos;
}
protected int getTokenLength() {
return zzMarkedPos - zzStartRead;
}
public int getLength() {
return zzEndRead - zzPushbackPos;
}
private void handleCommentStart() {
commentStartPosition = getTokenStartPosition();
}
private void handleLineCommentEnd() {
addComment(Comment.TYPE_SINGLE_LINE);
}
private void handleMultilineCommentEnd() {
addComment(Comment.TYPE_MULTILINE);
}
private void handlePHPDocEnd() {
addComment(Comment.TYPE_PHPDOC);
}
protected void handleVarComment() {
// [Appcelerator Mod]
String content = yytext();
int start = getTokenStartPosition();
int end = start + getTokenLength();
VarComment varComment = ASTUtils.parseVarComment(ast, content, start, end);
if (varComment != null) {
getCommentList().add(varComment);
}
}
private Symbol createFullSymbol(int symbolNumber) {
Symbol symbol = createSymbol(symbolNumber);
symbol.value = yytext();
return symbol;
}
protected Symbol createSymbol(int symbolNumber) {
int leftPosition = getTokenStartPosition();
return new Symbol(symbolNumber, leftPosition, leftPosition + getTokenLength());
}
public int[] getParamenters(){
return new int[]{zzMarkedPos, zzPushbackPos, zzCurrentPos, zzStartRead, zzEndRead, yyline};
}
protected boolean parsePHPDoc(){
final IDocumentorLexer documentorLexer = getDocumentorLexer(zzReader);
if(documentorLexer == null){
return false;
}
yypushback(zzMarkedPos - zzStartRead);
int[] parameters = getParamenters();
documentorLexer.reset(zzReader, zzBuffer, parameters);
Object phpDocBlock = documentorLexer.parse();
commentList.add(phpDocBlock);
reset(zzReader, documentorLexer.getBuffer(), documentorLexer.getParamenters());
return true;
}
protected IDocumentorLexer getDocumentorLexer(java.io.Reader reader) {
// Aptana Mod.
return new DocumentorLexer(reader, ast);
}
public void reset(java.io.Reader reader, char[] buffer, int[] parameters){
this.zzReader = reader;
this.zzBuffer = buffer;
this.zzMarkedPos = parameters[0];
this.zzPushbackPos = parameters[1];
this.zzCurrentPos = parameters[2];
this.zzStartRead = parameters[3];
this.zzEndRead = parameters[4];
this.yyline = parameters[5];
this.yychar = this.zzStartRead - this.zzPushbackPos;
}
/**
* Creates a new scanner
* There is also a java.io.InputStream version of this constructor.
*
* @param in the java.io.Reader to read input from.
*/
public PhpAstLexer(java.io.Reader in) {
this.zzReader = in;
}
/**
* Creates a new scanner.
* There is also java.io.Reader version of this constructor.
*
* @param in the java.io.Inputstream to read input from.
*/
public PhpAstLexer(java.io.InputStream in) {
this(new java.io.InputStreamReader(in));
}
/**
* Unpacks the compressed character translation table.
*
* @param packed the packed character translation table
* @return the unpacked character translation table
*/
private static char [] zzUnpackCMap(String packed) {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 190) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
}
return map;
}
/**
* Refills the input buffer.
*
* @return <code>false</code>, iff there was new input.
*
* @exception java.io.IOException if any I/O-Error occurs
*/
private boolean zzRefill() throws java.io.IOException {
/* first: make room (if you can) */
if (zzStartRead > 0) {
System.arraycopy(zzBuffer, zzStartRead,
zzBuffer, 0,
zzEndRead-zzStartRead);
/* translate stored positions */
zzEndRead-= zzStartRead;
zzCurrentPos-= zzStartRead;
zzMarkedPos-= zzStartRead;
zzPushbackPos-= zzStartRead;
zzStartRead = 0;
}
/* is the buffer big enough? */
if (zzCurrentPos >= zzBuffer.length) {
/* if not: blow it up */
char newBuffer[] = new char[zzCurrentPos*2];
System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
zzBuffer = newBuffer;
}
/* finally: fill the buffer with new input */
int numRead = zzReader.read(zzBuffer, zzEndRead,
zzBuffer.length-zzEndRead);
if (numRead < 0) {
return true;
}
else {
zzEndRead+= numRead;
return false;
}
}
/**
* Closes the input stream.
*/
public final void yyclose() throws java.io.IOException {
zzAtEOF = true; /* indicate end of file */
zzEndRead = zzStartRead; /* invalidate buffer */
if (zzReader != null)
zzReader.close();
}
/**
* Resets the scanner to read from a new input stream.
* Does not close the old reader.
*
* All internal variables are reset, the old input stream
* <b>cannot</b> be reused (internal buffer is discarded and lost).
* Lexical state is set to <tt>ZZ_INITIAL</tt>.
*
* @param reader the new input stream
*/
public final void yyreset(java.io.Reader reader) {
zzReader = reader;
zzAtBOL = true;
zzAtEOF = false;
zzEndRead = zzStartRead = 0;
zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
yyline = yychar = yycolumn = 0;
zzLexicalState = YYINITIAL;
}
/**
* Returns the current lexical state.
*/
public final int yystate() {
return zzLexicalState;
}
/**
* Enters a new lexical state
*
* @param newState the new lexical state
*/
public final void yybegin(int newState) {
zzLexicalState = newState;
}
/**
* Returns the text matched by the current regular expression.
*/
public final String yytext() {
return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
}
/**
* Returns the character at position <tt>pos</tt> from the
* matched text.
*
* It is equivalent to yytext().charAt(pos), but faster
*
* @param pos the position of the character to fetch.
* A value from 0 to yylength()-1.
*
* @return the character at position pos
*/
public final char yycharat(int pos) {
return zzBuffer[zzStartRead+pos];
}
/**
* Returns the length of the matched text region.
*/
public final int yylength() {
return zzMarkedPos-zzStartRead;
}
/**
* Reports an error that occured while scanning.
*
* In a wellformed scanner (no or only correct usage of
* yypushback(int) and a match-all fallback rule) this method
* will only be called with things that "Can't Possibly Happen".
* If this method is called, something is seriously wrong
* (e.g. a JFlex bug producing a faulty scanner etc.).
*
* Usual syntax/scanner level error handling should be done
* in error fallback rules.
*
* @param errorCode the code of the errormessage to display
*/
private void zzScanError(int errorCode) {
String message;
try {
message = ZZ_ERROR_MSG[errorCode];
}
catch (ArrayIndexOutOfBoundsException e) {
message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
}
throw new Error(message);
}
/**
* Pushes the specified amount of characters back into the input stream.
*
* They will be read again by then next call of the scanning method
*
* @param number the number of characters to be read again.
* This number must not be greater than yylength()!
*/
public void yypushback(int number) {
if ( number > yylength() )
zzScanError(ZZ_PUSHBACK_2BIG);
zzMarkedPos -= number;
}
/**
* Contains user EOF-code, which will be executed exactly once,
* when the end of file is reached
*/
private void zzDoEOF() throws java.io.IOException {
if (!zzEOFDone) {
zzEOFDone = true;
yyclose();
}
}
/**
* Resumes scanning until the next regular expression is matched,
* the end of input is encountered or an I/O-Error occurs.
*
* @return the next token
* @exception java.io.IOException if any I/O-Error occurs
*/
public java_cup.runtime.Symbol next_token() throws java.io.IOException {
int zzInput;
int zzAction;
// cached fields:
int zzCurrentPosL;
int zzMarkedPosL;
int zzEndReadL = zzEndRead;
char [] zzBufferL = zzBuffer;
char [] zzCMapL = ZZ_CMAP;
int [] zzTransL = ZZ_TRANS;
int [] zzRowMapL = ZZ_ROWMAP;
int [] zzAttrL = ZZ_ATTRIBUTE;
while (true) {
zzMarkedPosL = zzMarkedPos;
boolean zzR = false;
for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
zzCurrentPosL++) {
switch (zzBufferL[zzCurrentPosL]) {
case '\u000B':
case '\u000C':
case '\u0085':
case '\u2028':
case '\u2029':
yyline++;
zzR = false;
break;
case '\r':
yyline++;
zzR = true;
break;
case '\n':
if (zzR)
zzR = false;
else {
yyline++;
}
break;
default:
zzR = false;
}
}
if (zzR) {
// peek one character ahead if it is \n (if we have counted one line too much)
boolean zzPeek;
if (zzMarkedPosL < zzEndReadL)
zzPeek = zzBufferL[zzMarkedPosL] == '\n';
else if (zzAtEOF)
zzPeek = false;
else {
boolean eof = zzRefill();
zzEndReadL = zzEndRead;
zzMarkedPosL = zzMarkedPos;
zzBufferL = zzBuffer;
if (eof)
zzPeek = false;
else
zzPeek = zzBufferL[zzMarkedPosL] == '\n';
}
if (zzPeek) yyline--;
}
zzAction = -1;
zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
zzState = zzLexicalState;
zzForAction: {
while (true) {
if (zzCurrentPosL < zzEndReadL)
zzInput = zzBufferL[zzCurrentPosL++];
else if (zzAtEOF) {
zzInput = YYEOF;
break zzForAction;
}
else {
// store back cached positions
zzCurrentPos = zzCurrentPosL;
zzMarkedPos = zzMarkedPosL;
boolean eof = zzRefill();
// get translated positions and possibly new buffer
zzCurrentPosL = zzCurrentPos;
zzMarkedPosL = zzMarkedPos;
zzBufferL = zzBuffer;
zzEndReadL = zzEndRead;
if (eof) {
zzInput = YYEOF;
break zzForAction;
}
else {
zzInput = zzBufferL[zzCurrentPosL++];
}
}
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
int zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
zzMarkedPosL = zzCurrentPosL;
if ( (zzAttributes & 8) == 8 ) break zzForAction;
}
}
}
// store back cached position
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 63:
{ return createSymbol(ParserConstants.T_LOGICAL_OR);
}
case 184: break;
case 155:
{ return createSymbol(ParserConstants.T_REQUIRE);
}
case 185: break;
case 55:
{ return createFullSymbol(ParserConstants.T_DNUMBER);
}
case 186: break;
case 169:
{ return createSymbol(ParserConstants.T_INTERFACE);
}
case 187: break;
case 47:
{ return createSymbol(ParserConstants.T_BACKQUATE);
}
case 188: break;
case 23:
{ return createSymbol(ParserConstants.T_TIMES);
}
case 189: break;
case 114:
{ String text = yytext();
if (text.charAt(text.length() - 2)== ';') {
text = text.substring(0, text.length() - 2);
yypushback(1);
} else {
text = text.substring(0, text.length() - 1);
}
int textLength = text.length();
int nowdocLength = nowdoc.length();
if (textLength > nowdocLength && text.substring(textLength - nowdocLength, textLength).equals(nowdoc)) {
yypushback(2);
yybegin(ST_END_HEREDOC);
nowdoc = null;
// we need to remove the closing label from the symbol value.
Symbol sym = createFullSymbol(ParserConstants.T_ENCAPSED_AND_WHITESPACE);
String value = (String)sym.value;
sym.value = value.substring(0, value.length() - nowdocLength + 1);
return sym;
}
yypushback(1);
}
case 190: break;
case 57:
{ return createSymbol(ParserConstants.T_INC);
}
case 191: break;
case 128:
{ return createSymbol(ParserConstants.T_UNSET);
}
case 192: break;
case 27:
{ return createSymbol(ParserConstants.T_OR);
}
case 193: break;
case 17:
{ return createSymbol(ParserConstants.T_NEKUDOTAIM);
}
case 194: break;
case 38:
{ yybegin(ST_IN_SCRIPTING);
return createSymbol(ParserConstants.T_BACKQUATE);
}
case 195: break;
case 51:
{ // yymore();
}
case 196: break;
case 39:
{ yybegin(ST_IN_SCRIPTING);
return createSymbol(ParserConstants.T_END_HEREDOC);
}
case 197: break;
case 59:
{ return createFullSymbol(ParserConstants.T_VARIABLE);
}
case 198: break;
case 77:
{ return createSymbol(ParserConstants.T_DIV_EQUAL);
}
case 199: break;
case 94:
{ /* treat numbers (almost) as strings inside encapsulated strings */
return createFullSymbol(ParserConstants.T_NUM_STRING);
}
case 200: break;
case 93:
{ return createSymbol(ParserConstants.T_OBJECT_OPERATOR);
}
case 201: break;
case 36:
{ handleCommentStart();
yybegin(ST_ONE_LINE_COMMENT);
// yymore();
}
case 202: break;
case 49:
{ popState();
return createSymbol(ParserConstants.T_CLOSE_RECT);
}
case 203: break;
case 106:
{ return createSymbol(ParserConstants.T_SR_EQUAL);
}
case 204: break;
case 139:
{ yybegin(ST_IN_SCRIPTING);
//return T_OPEN_TAG;
}
case 205: break;
case 182:
{ return createSymbol(ParserConstants.T_NS_C);
}
case 206: break;
case 172:
{ return createSymbol(ParserConstants.T_CLASS_C);
}
case 207: break;
case 110:
{ return createSymbol(ParserConstants.T_SL_EQUAL);
}
case 208: break;
case 87:
{ yypushback(1);
return createFullSymbol(ParserConstants.T_ENCAPSED_AND_WHITESPACE);
}
case 209: break;
case 116:
{ return createSymbol(ParserConstants.T_ELSE);
}
case 210: break;
case 146:
{ return createSymbol(ParserConstants.T_GLOBAL);
}
case 211: break;
case 124:
{ return createSymbol(ParserConstants.T_BREAK);
}
case 212: break;
case 62:
{ return createSymbol(ParserConstants.T_DO);
}
case 213: break;
case 21:
{ return createSymbol(ParserConstants.T_NOT);
}
case 214: break;
case 119:
{ return createSymbol(ParserConstants.T_LIST);
}
case 215: break;
case 41:
{ popState();
return createFullSymbol(ParserConstants.T_STRING);
}
case 216: break;
case 12:
{ yybegin(ST_BACKQUOTE);
return createSymbol(ParserConstants.T_BACKQUATE);
}
case 217: break;
case 129:
{ return createSymbol(ParserConstants.T_CONST);
}
case 218: break;
case 181:
{ return createSymbol(ParserConstants.T_FUNC_C);
}
case 219: break;
case 33:
{ return createSymbol(ParserConstants.T_QUESTION_MARK);
}
case 220: break;
case 149:
{ return createSymbol(ParserConstants.T_DOUBLE_CAST);
}
case 221: break;
case 174:
{ return createSymbol(ParserConstants.T_ENDFOREACH);
}
case 222: break;
case 79:
{ if (asp_tags) {
yybegin(YYINITIAL);
return createSymbol(ParserConstants.T_SEMICOLON); /* implicit ';' at php-end tag */
} else {
return createSymbol(ParserConstants.T_INLINE_HTML);
}
}
case 223: break;
case 143:
{ return createSymbol(ParserConstants.T_STATIC);
}
case 224: break;
case 115:
{ return createSymbol(ParserConstants.T_ECHO);
}
case 225: break;
case 145:
{ return createSymbol(ParserConstants.T_RETURN);
}
case 226: break;
case 158:
{ return createSymbol(ParserConstants.T_ARRAY_CAST);
}
case 227: break;
case 32:
{ return createSymbol(ParserConstants.T_TILDA);
}
case 228: break;
case 35:
{ /* This is a temporary fix which is dependant on flex and it's implementation */
if (!stack.isEmpty()) {
popState();
}
return createSymbol(ParserConstants.T_CURLY_CLOSE);
}
case 229: break;
case 5:
{ return createSymbol(ParserConstants.T_NEKUDA);
}
case 230: break;
case 88:
{ pushState(ST_LOOKING_FOR_VARNAME);
return createSymbol(ParserConstants.T_DOLLAR_OPEN_CURLY_BRACES);
}
case 231: break;
case 152:
{ return createSymbol(ParserConstants.T_DEFAULT);
}
case 232: break;
case 42:
{ yypushback(yylength());
popState();
pushState(ST_IN_SCRIPTING);
}
case 233: break;
case 73:
{ return createSymbol(ParserConstants.T_IS_NOT_EQUAL);
}
case 234: break;
case 69:
{ return createSymbol(ParserConstants.T_IS_GREATER_OR_EQUAL);
}
case 235: break;
case 7:
{ return createSymbol(ParserConstants.T_PLUS);
}
case 236: break;
case 144:
{ return createSymbol(ParserConstants.T_SWITCH);
}
case 237: break;
case 170:
{ return createSymbol(ParserConstants.T_NAMESPACE);
}
case 238: break;
case 26:
{ return createSymbol(ParserConstants.T_REFERENCE);
}
case 239: break;
case 177:
{ return createSymbol(ParserConstants.T_METHOD_C);
}
case 240: break;
case 82:
{ return createSymbol(ParserConstants.T_BOOLEAN_AND);
}
case 241: break;
case 14:
{ return createSymbol(ParserConstants.T_SEMICOLON);
}
case 242: break;
case 96:
{ handlePHPDocEnd();
yybegin(ST_IN_SCRIPTING);
}
case 243: break;
case 92:
{ String text = yytext();
int length = text.length() - 1;
text = text.trim();
yypushback(1);
if (text.endsWith(";")) {
text = text.substring(0, text.length() - 1);
yypushback(1);
}
if (text.equals(nowdoc)) {
nowdoc = null;
yybegin(ST_IN_SCRIPTING);
return createSymbol(ParserConstants.T_END_HEREDOC);
}
else {
yybegin(ST_HEREDOC);
}
}
case 244: break;
case 137:
{ int removeChars = (yytext().charAt(0) == 'b') ? 4 : 3;
String hereOrNowDoc = yytext().substring(removeChars).trim(); // for 'b<<<' or '<<<'
int heredoc_len = hereOrNowDoc.length();
Symbol sym = createFullSymbol(ParserConstants.T_START_HEREDOC);
if (hereOrNowDoc.charAt(0) == '\'') {
nowdoc = hereOrNowDoc.substring(1, heredoc_len-1);
sym.value = nowdoc;
heredoc_len -= 2;
yybegin(ST_NOWDOC);
}
else if (hereOrNowDoc.charAt(0) == '"') {
heredoc = heredoc.substring(1, heredoc_len-1);
sym.value = heredoc;
heredoc_len -= 2;
yybegin(ST_HEREDOC);
} else {
heredoc = hereOrNowDoc;
sym.value = heredoc;
yybegin(ST_HEREDOC);
}
return sym;
}
case 245: break;
case 15:
{ return createSymbol(ParserConstants.T_MINUS);
}
case 246: break;
case 176:
{ return createSymbol(ParserConstants.T_IMPLEMENTS);
}
case 247: break;
case 3:
{ // do nothing
}
case 248: break;
case 91:
{ String text = yytext();
int length = text.length() - 1;
text = text.trim();
yypushback(1);
if (text.endsWith(";")) {
text = text.substring(0, text.length() - 1);
yypushback(1);
}
if (text.equals(heredoc)) {
heredoc = null;
yybegin(ST_IN_SCRIPTING);
return createSymbol(ParserConstants.T_END_HEREDOC);
}
else {
yybegin(ST_HEREDOC);
}
}
case 249: break;
case 168:
{ return createSymbol(ParserConstants.T_ENDSWITCH);
}
case 250: break;
case 97:
{ if (asp_tags || yytext().charAt(0)!='%') { /* asp comment? */
handleLineCommentEnd();
yypushback(yylength());
yybegin(ST_IN_SCRIPTING);
//return T_COMMENT;
}
}
case 251: break;
case 58:
{ return createSymbol(ParserConstants.T_PLUS_EQUAL);
}
case 252: break;
case 31:
{ return createSymbol(ParserConstants.T_CLOSE_RECT);
}
case 253: break;
case 99:
{ return createSymbol(ParserConstants.T_LOGICAL_XOR);
}
case 254: break;
case 45:
{ yypushback(1);
popState();
return createSymbol(ParserConstants.T_ENCAPSED_AND_WHITESPACE);
}
case 255: break;
case 70:
{ return createSymbol(ParserConstants.T_PAAMAYIM_NEKUDOTAYIM);
}
case 256: break;
case 173:
{ return createSymbol(ParserConstants.T_ENDDECLARE);
}
case 257: break;
case 151:
{ return createSymbol(ParserConstants.T_INCLUDE);
}
case 258: break;
case 11:
{ return createSymbol(ParserConstants.T_NS_SEPARATOR);
}
case 259: break;
case 121:
{ handleCommentStart();
}
case 260: break;
case 60:
{ return createFullSymbol(ParserConstants.T_CONSTANT_ENCAPSED_STRING);
}
case 261: break;
case 72:
{ return createSymbol(ParserConstants.T_IS_EQUAL);
}
case 262: break;
case 133:
{ return createSymbol(ParserConstants.T_ARRAY);
}
case 263: break;
case 30:
{ return createSymbol(ParserConstants.T_OPEN_RECT);
}
case 264: break;
case 138:
{ yypushback(3);
pushState(ST_LOOKING_FOR_PROPERTY);
return createFullSymbol(ParserConstants.T_VARIABLE);
}
case 265: break;
case 102:
{ return createSymbol(ParserConstants.T_FOR);
}
case 266: break;
case 165:
{ return createSymbol(ParserConstants.T_OBJECT_CAST);
}
case 267: break;
case 156:
{ return createSymbol(ParserConstants.T_PRIVATE);
}
case 268: break;
case 163:
{ return createSymbol(ParserConstants.T_ABSTRACT);
}
case 269: break;
case 154:
{ return createSymbol(ParserConstants.T_FOREACH);
}
case 270: break;
case 44:
{ /* Offset could be treated as a long */
return createFullSymbol(ParserConstants.T_NUM_STRING);
}
case 271: break;
case 126:
{ return createSymbol(ParserConstants.T_THROW);
}
case 272: break;
case 164:
{ return createSymbol(ParserConstants.T_STRING_CAST);
}
case 273: break;
case 81:
{ return createSymbol(ParserConstants.T_AND_EQUAL);
}
case 274: break;
case 134:
{ return createSymbol(ParserConstants.T_WHILE);
}
case 275: break;
case 104:
{ return createSymbol(ParserConstants.T_NEW);
}
case 276: break;
case 65:
{ return createSymbol(ParserConstants.T_DEC);
}
case 277: break;
case 64:
{ return createSymbol(ParserConstants.T_AS);
}
case 278: break;
case 141:
{ return createSymbol(ParserConstants.T_ELSEIF);
}
case 279: break;
case 80:
{ return createSymbol(ParserConstants.T_MOD_EQUAL);
}
case 280: break;
case 98:
{ String text = yytext();
if ((text.charAt(1)=='%' && asp_tags)
|| (text.charAt(1)=='?' && short_tags_allowed)) {
yybegin(ST_IN_SCRIPTING);
//return T_OPEN_TAG_WITH_ECHO;
} else {
return createSymbol(ParserConstants.T_INLINE_HTML);
}
}
case 281: break;
case 108:
{ return createSymbol(ParserConstants.T_IS_IDENTICAL);
}
case 282: break;
case 25:
{ return createSymbol(ParserConstants.T_PRECENT);
}
case 283: break;
case 71:
{ return createSymbol(ParserConstants.T_DOUBLE_ARROW);
}
case 284: break;
case 130:
{ return createSymbol(ParserConstants.T_CATCH);
}
case 285: break;
case 111:
{ if (!parsePHPDoc()) {
handleCommentStart();
yybegin(ST_DOCBLOCK);
}
}
case 286: break;
case 9:
{ return createSymbol(ParserConstants.T_DOLLAR);
}
case 287: break;
case 95:
{ handleMultilineCommentEnd();
yybegin(ST_IN_SCRIPTING);
}
case 288: break;
case 22:
{ return createSymbol(ParserConstants.T_RGREATER);
}
case 289: break;
case 4:
{ return createFullSymbol(ParserConstants.T_LNUMBER);
}
case 290: break;
case 140:
{ return createSymbol(ParserConstants.T_ENDFOR);
}
case 291: break;
case 28:
{ return createSymbol(ParserConstants.T_KOVA);
}
case 292: break;
case 56:
{ return createSymbol(ParserConstants.T_CONCAT_EQUAL);
}
case 293: break;
case 132:
{ return createSymbol(ParserConstants.T_CLASS);
}
case 294: break;
case 100:
{ return createSymbol(ParserConstants.T_TRY);
}
case 295: break;
case 125:
{ return createSymbol(ParserConstants.T_ISSET);
}
case 296: break;
case 53:
{ if (asp_tags) {
yybegin(ST_IN_SCRIPTING);
//return T_OPEN_TAG;
} else {
return createSymbol(ParserConstants.T_INLINE_HTML);
}
}
case 297: break;
case 122:
{ return createSymbol(ParserConstants.T_ENDIF);
}
case 298: break;
case 86:
{ yybegin(YYINITIAL);
return createSymbol(ParserConstants.T_SEMICOLON); /* implicit ';' at php-end tag */
}
case 299: break;
case 78:
{ handleCommentStart();
yybegin(ST_COMMENT);
}
case 300: break;
case 76:
{ return createSymbol(ParserConstants.T_MUL_EQUAL);
}
case 301: break;
case 112:
{ yypushback(1);
pushState(ST_VAR_OFFSET);
return createFullSymbol(ParserConstants.T_VARIABLE);
}
case 302: break;
case 24:
{ return createSymbol(ParserConstants.T_DIV);
}
case 303: break;
case 54:
{ if (short_tags_allowed || yylength()>2) { /* yyleng>2 means it's not <? but <script> */
yybegin(ST_IN_SCRIPTING);
//return T_OPEN_TAG;
} else {
return createSymbol(ParserConstants.T_INLINE_HTML);
}
}
case 304: break;
case 131:
{ return createSymbol(ParserConstants.T_CLONE);
}
case 305: break;
case 180:
{ return createSymbol(ParserConstants.T_REQUIRE_ONCE);
}
case 306: break;
case 6:
{ return createFullSymbol(ParserConstants.T_STRING);
}
case 307: break;
case 89:
{ pushState(ST_IN_SCRIPTING);
yypushback(yylength()-1);
return createSymbol(ParserConstants.T_CURLY_OPEN_WITH_DOLAR);
}
case 308: break;
case 103:
{ return createSymbol(ParserConstants.T_USE);
}
case 309: break;
case 19:
{ return createSymbol(ParserConstants.T_CLOSE_PARENTHESE);
}
case 310: break;
case 175:
{ return createSymbol(ParserConstants.T_INSTANCEOF);
}
case 311: break;
case 159:
{ return createSymbol(ParserConstants.T_DIR);
}
case 312: break;
case 10:
{ yybegin(ST_DOUBLE_QUOTES);
return createSymbol(ParserConstants.T_QUATE);
}
case 313: break;
case 123:
{ return createSymbol(ParserConstants.T_EMPTY);
}
case 314: break;
case 113:
{ String text = yytext();
if (text.charAt(text.length() - 2)== ';') {
text = text.substring(0, text.length() - 2);
yypushback(1);
} else {
text = text.substring(0, text.length() - 1);
}
int textLength = text.length();
int heredocLength = heredoc.length();
if (textLength > heredocLength && text.substring(textLength - heredocLength, textLength).equals(heredoc)) {
yypushback(2);
yybegin(ST_END_HEREDOC);
heredoc = null;
// we need to remove the closing label from the symbol value.
Symbol sym = createFullSymbol(ParserConstants.T_ENCAPSED_AND_WHITESPACE);
String value = (String)sym.value;
sym.value = value.substring(0, value.length() - heredocLength + 1);
return sym;
}
yypushback(1);
}
case 315: break;
case 50:
{ return createSymbol(ParserConstants.T_CURLY_CLOSE);
}
case 316: break;
case 167:
{ return createSymbol(ParserConstants.T_LINE);
}
case 317: break;
case 43:
{ popState();
pushState(ST_IN_SCRIPTING);
return createFullSymbol(ParserConstants.T_STRING_VARNAME);
}
case 318: break;
case 2:
{ return createSymbol(ParserConstants.T_INLINE_HTML);
}
case 319: break;
case 83:
{ return createSymbol(ParserConstants.T_OR_EQUAL);
}
case 320: break;
case 118:
{ return createSymbol(ParserConstants.T_CASE);
}
case 321: break;
case 166:
{ return createSymbol(ParserConstants.T_FILE);
}
case 322: break;
case 150:
{ return createSymbol(ParserConstants.T_EXTENDS);
}
case 323: break;
case 67:
{ return createSymbol(ParserConstants.T_MINUS_EQUAL);
}
case 324: break;
case 1:
{ return createFullSymbol(ParserConstants.T_ENCAPSED_AND_WHITESPACE);
}
case 325: break;
case 127:
{ return createSymbol(ParserConstants.T_FINAL);
}
case 326: break;
case 153:
{ return createSymbol(ParserConstants.T_DECLARE);
}
case 327: break;
case 52:
{ String yytext = yytext();
switch (yytext.charAt(yytext.length() - 1)) {
case '?':
case '%':
case '>':
yypushback(1);
break;
default:
handleLineCommentEnd();
yybegin(ST_IN_SCRIPTING);
}
// yymore();
}
case 328: break;
case 157:
{ return createSymbol(ParserConstants.T_UNSET_CAST);
}
case 329: break;
case 136:
{ return createSymbol(ParserConstants.T_INT_CAST);
}
case 330: break;
case 48:
{ return createSymbol(ParserConstants.T_CURLY_OPEN);
}
case 331: break;
case 18:
{ return createSymbol(ParserConstants.T_OPEN_PARENTHESE);
}
case 332: break;
case 148:
{ return createSymbol(ParserConstants.T_BOOL_CAST);
}
case 333: break;
case 105:
{ return createSymbol(ParserConstants.T_LOGICAL_AND);
}
case 334: break;
case 147:
{ return createSymbol(ParserConstants.T_PUBLIC);
}
case 335: break;
case 20:
{ return createSymbol(ParserConstants.T_EQUAL);
}
case 336: break;
case 61:
{ return createSymbol(ParserConstants.T_IF);
}
case 337: break;
case 29:
{ return createSymbol(ParserConstants.T_COMMA);
}
case 338: break;
case 40:
{ yypushback(yylength());
popState();
}
case 339: break;
case 109:
{ return createSymbol(ParserConstants.T_IS_NOT_IDENTICAL);
}
case 340: break;
case 74:
{ return createSymbol(ParserConstants.T_IS_SMALLER_OR_EQUAL);
}
case 341: break;
case 117:
{ return createSymbol(ParserConstants.T_EVAL);
}
case 342: break;
case 66:
{ pushState(ST_LOOKING_FOR_PROPERTY);
return createSymbol(ParserConstants.T_OBJECT_OPERATOR);
}
case 343: break;
case 178:
{ handleVarComment();
//return createFullSymbol(ParserConstants.T_VAR_COMMENT);
}
case 344: break;
case 84:
{ return createSymbol(ParserConstants.T_BOOLEAN_OR);
}
case 345: break;
case 142:
{ /* not a keyword, hust for recognize constans.*/
return createFullSymbol(ParserConstants.T_DEFINE);
}
case 346: break;
case 37:
{ yybegin(ST_IN_SCRIPTING);
return createSymbol(ParserConstants.T_QUATE);
}
case 347: break;
case 68:
{ return createSymbol(ParserConstants.T_SR);
}
case 348: break;
case 161:
{ return createSymbol(ParserConstants.T_FUNCTION);
}
case 349: break;
case 171:
{ return createSymbol(ParserConstants.T_PROTECTED);
}
case 350: break;
case 160:
{ return createSymbol(ParserConstants.T_ENDWHILE);
}
case 351: break;
case 16:
{ return createSymbol(ParserConstants.T_LGREATER);
}
case 352: break;
case 107:
{ return createSymbol(ParserConstants.T_VAR);
}
case 353: break;
case 85:
{ return createSymbol(ParserConstants.T_XOR_EQUAL);
}
case 354: break;
case 13:
{ pushState(ST_IN_SCRIPTING);
return createSymbol(ParserConstants.T_CURLY_OPEN);
}
case 355: break;
case 46:
{ return createSymbol(ParserConstants.T_QUATE);
}
case 356: break;
case 162:
{ return createSymbol(ParserConstants.T_CONTINUE);
}
case 357: break;
case 90:
{ yypushback(1);
return createFullSymbol(ParserConstants.T_ENCAPSED_AND_WHITESPACE);
}
case 358: break;
case 101:
{ return createFullSymbol(ParserConstants.T_EXIT);
}
case 359: break;
case 135:
{ return createSymbol(ParserConstants.T_PRINT);
}
case 360: break;
case 183:
{ return createSymbol(ParserConstants.T_HALT_COMPILER);
}
case 361: break;
case 75:
{ return createSymbol(ParserConstants.T_SL);
}
case 362: break;
case 120:
{ return createSymbol(ParserConstants.T_GOTO);
}
case 363: break;
case 179:
{ return createSymbol(ParserConstants.T_INCLUDE_ONCE);
}
case 364: break;
case 8:
{
}
case 365: break;
case 34:
{ return createSymbol(ParserConstants.T_AT);
}
case 366: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
zzDoEOF();
{ return createSymbol(sym.EOF);
}
}
else {
zzScanError(ZZ_NO_MATCH);
}
}
}
}
/**
* Runs the scanner on input files.
*
* This is a standalone scanner, it will print any unmatched
* text to System.out unchanged.
*
* @param argv the command line, contains the filenames to run
* the scanner on.
*/
public static void main(String argv[]) {
if (argv.length == 0) {
System.out.println("Usage : java PhpAstLexer <inputfile>");
}
else {
for (int i = 0; i < argv.length; i++) {
PhpAstLexer scanner = null;
try {
scanner = new PhpAstLexer( new java.io.FileReader(argv[i]) );
while ( !scanner.zzAtEOF ) scanner.next_token();
}
catch (java.io.FileNotFoundException e) {
System.out.println("File not found : \""+argv[i]+"\"");
}
catch (java.io.IOException e) {
System.out.println("IO error scanning file \""+argv[i]+"\"");
System.out.println(e);
}
catch (Exception e) {
System.out.println("Unexpected exception:");
e.printStackTrace();
}
}
}
}
}