/* The following code was generated by JFlex 1.7.0-SNAPSHOT tweaked for IntelliJ platform */ /* It's an automatically generated code. Do not modify it. */ package com.jetbrains.python.lexer; import com.intellij.lexer.FlexLexer; import com.intellij.psi.tree.IElementType; import com.jetbrains.python.PyTokenTypes; import com.intellij.openapi.util.text.StringUtil; /** * This class is a scanner generated by * <a href="http://www.jflex.de/">JFlex</a> 1.7.0-SNAPSHOT * from the specification file <tt>Python.flex</tt> */ class _PythonLexer implements FlexLexer { /** 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 YYINITIAL = 0; public static final int PENDING_DOCSTRING = 2; public static final int IN_DOCSTRING_OWNER = 4; /** * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l * at the beginning of a line * l is of the form l = 2*k, k a non negative integer */ private static final int ZZ_LEXSTATE[] = { 0, 0, 1, 1, 2, 2 }; /** * Translates characters to character classes * Chosen bits are [11, 6, 4] * Total runtime size is 15040 bytes */ public static int ZZ_CMAP(int ch) { return ZZ_CMAP_A[(ZZ_CMAP_Y[(ZZ_CMAP_Z[ch>>10]<<6)|((ch>>4)&0x3f)]<<4)|(ch&0xf)]; } /* The ZZ_CMAP_Z table has 1088 entries */ static final char ZZ_CMAP_Z[] = zzUnpackCMap( "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\6\15\1\16\23\15"+ "\1\17\1\15\1\20\1\21\12\15\1\22\10\12\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1"+ "\32\1\33\1\12\1\34\1\35\2\12\1\15\1\36\3\12\1\37\10\12\1\40\1\41\20\12\1\42"+ "\2\12\1\43\4\12\1\44\1\45\1\46\3\12\1\47\1\50\1\51\3\12\51\15\1\52\3\15\1"+ "\53\1\54\4\15\1\55\12\12\1\56\u02c1\12\1\57\277\12"); /* The ZZ_CMAP_Y table has 3072 entries */ static final char ZZ_CMAP_Y[] = zzUnpackCMap( "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\1\1\11\1\12\1\13\1\14\1\13\1\14\34"+ "\13\1\15\1\16\1\17\1\1\7\13\1\20\1\21\1\13\1\22\4\13\1\23\10\13\1\22\12\13"+ "\1\24\1\13\1\25\1\24\1\13\1\26\1\24\1\13\1\27\1\30\1\13\1\31\1\32\1\1\1\31"+ "\4\13\1\33\6\13\1\34\1\35\1\36\1\1\3\13\1\37\6\13\1\16\1\40\2\13\1\41\2\13"+ "\1\42\1\1\1\13\1\43\4\1\1\13\1\44\2\1\1\45\7\13\1\46\1\24\1\34\1\47\1\35\1"+ "\50\1\51\1\52\1\46\1\16\1\53\1\47\1\35\1\54\1\55\1\56\1\57\1\60\1\61\1\22"+ "\1\35\1\62\1\63\1\64\1\46\1\65\1\66\1\47\1\35\1\62\1\67\1\70\1\46\1\71\1\72"+ "\1\73\1\74\1\75\1\76\1\77\1\57\1\1\1\100\1\101\1\35\1\102\1\103\1\104\1\46"+ "\1\1\1\105\1\101\1\35\1\106\1\103\1\107\1\46\1\110\1\105\1\101\1\13\1\37\1"+ "\111\1\112\1\46\1\113\1\114\1\115\1\13\1\116\1\117\1\120\1\57\1\121\1\24\2"+ "\13\1\31\1\122\1\123\2\1\1\124\1\125\1\126\1\127\1\130\1\131\2\1\1\64\1\132"+ "\1\123\1\133\1\134\1\13\1\135\1\24\1\136\1\134\1\13\1\135\1\137\3\1\4\13\1"+ "\123\4\13\1\140\2\13\1\141\2\13\1\142\24\13\1\143\1\144\2\13\1\143\2\13\1"+ "\145\1\146\1\14\3\13\1\146\3\13\1\37\2\1\1\13\1\1\5\13\1\147\1\24\45\13\1"+ "\150\1\13\1\24\1\31\4\13\1\151\1\152\1\153\1\44\1\13\1\44\1\13\1\154\1\153"+ "\1\155\5\13\1\156\1\123\1\1\1\157\1\123\5\13\1\26\2\13\1\31\4\13\1\60\1\13"+ "\1\122\2\43\1\57\1\13\1\42\1\44\2\13\1\43\1\13\1\160\1\123\2\1\1\13\1\43\3"+ "\13\1\122\1\13\1\150\2\123\1\161\1\122\4\1\4\13\1\43\1\123\1\162\1\154\3\13"+ "\1\40\3\13\1\154\3\13\1\26\1\163\1\40\1\13\1\42\5\1\1\164\1\13\1\165\17\13"+ "\1\166\21\13\1\147\2\13\1\147\1\167\1\13\1\42\3\13\1\170\1\171\1\172\1\135"+ "\1\171\2\1\1\173\1\174\1\64\1\175\1\1\1\176\1\1\1\135\3\1\2\13\1\64\1\177"+ "\1\200\1\201\1\202\1\203\1\1\2\13\1\152\62\1\1\204\2\13\1\160\161\1\2\13\1"+ "\122\2\13\1\122\10\13\1\205\1\154\2\13\1\141\3\13\1\206\1\174\1\13\1\207\4"+ "\210\2\13\2\1\1\174\35\1\1\211\1\1\1\24\1\212\1\24\4\13\1\213\1\24\4\13\1"+ "\142\1\214\1\13\1\42\1\24\4\13\1\122\1\1\1\13\1\31\3\1\1\13\40\1\133\13\1"+ "\60\4\1\135\13\1\60\2\1\10\13\1\135\4\1\2\13\1\42\20\13\1\135\1\13\1\215\1"+ "\1\3\13\1\216\7\13\1\16\1\1\1\217\1\220\5\13\1\221\1\13\1\42\1\26\3\1\1\217"+ "\2\13\1\26\1\1\3\13\1\154\4\13\1\44\1\123\1\13\1\222\1\40\1\13\1\42\2\13\1"+ "\154\1\13\1\135\4\13\1\223\1\123\1\13\1\224\3\13\1\207\1\42\1\123\1\13\1\115"+ "\4\13\1\32\1\157\1\13\1\225\1\226\1\227\1\210\2\13\1\142\1\60\7\13\1\230\1"+ "\123\72\13\1\154\1\13\1\231\2\13\1\43\20\1\26\13\1\42\6\13\1\160\2\1\1\207"+ "\1\232\1\35\1\233\1\234\6\13\1\16\1\1\1\45\25\13\1\42\1\1\4\13\1\220\2\13"+ "\1\26\2\1\1\43\1\13\1\1\1\13\1\235\1\236\2\1\1\136\7\13\1\135\1\1\1\123\1"+ "\24\1\237\1\24\1\31\1\204\4\13\1\122\1\240\1\241\2\1\1\242\1\13\1\14\1\243"+ "\2\42\2\1\7\13\1\31\4\1\3\13\1\44\7\1\1\244\10\1\1\13\1\135\3\13\2\64\1\1"+ "\2\13\1\1\1\13\1\31\2\13\1\31\1\13\1\42\2\13\1\245\1\246\2\1\11\13\1\42\1"+ "\123\5\1\2\13\1\26\3\13\1\154\11\1\23\13\1\207\1\13\1\60\1\26\11\1\1\247\2"+ "\13\1\250\1\13\1\60\1\13\1\207\1\13\1\122\4\1\1\13\1\251\1\13\1\60\1\13\1"+ "\160\4\1\3\13\1\252\4\1\1\253\1\254\1\13\1\255\2\1\1\13\1\135\1\13\1\135\2"+ "\1\1\134\1\13\1\207\1\1\3\13\1\60\1\13\1\60\1\13\1\32\1\13\1\16\6\1\4\13\1"+ "\152\3\1\3\13\1\32\3\13\1\32\60\1\4\13\1\207\1\1\1\57\1\174\3\13\1\31\1\1"+ "\1\13\1\152\1\123\3\13\1\256\1\1\2\13\1\257\4\13\1\260\1\261\2\1\1\13\1\22"+ "\1\13\1\26\4\1\1\262\1\27\1\152\3\13\1\31\1\123\1\34\1\47\1\35\1\62\1\67\1"+ "\263\1\264\1\44\20\1\4\13\1\265\1\123\12\1\3\13\1\266\1\64\1\267\2\1\4\13"+ "\1\270\1\123\2\1\3\13\1\26\1\123\3\1\1\13\1\102\1\43\1\123\26\1\4\13\1\123"+ "\1\174\34\1\3\13\1\152\20\1\71\13\1\160\6\1\6\13\1\122\1\1\14\13\1\154\53"+ "\1\2\13\1\122\75\1\44\13\1\207\33\1\43\13\1\152\1\13\1\122\1\123\6\1\1\13"+ "\1\42\1\44\3\13\1\207\1\154\1\123\1\45\1\271\1\13\67\1\4\13\1\44\2\13\1\122"+ "\1\174\1\13\6\1\1\16\77\1\6\13\1\31\1\135\1\152\1\272\114\1\1\273\1\274\1"+ "\275\1\1\1\276\11\1\1\277\33\1\5\13\1\136\3\13\1\153\1\300\1\301\1\302\3\13"+ "\1\303\1\304\1\13\1\305\1\306\1\101\24\13\1\266\1\13\1\101\1\142\1\13\1\142"+ "\1\13\1\136\1\13\1\136\1\122\1\13\1\122\1\13\1\35\1\13\1\35\1\13\1\307\3\310"+ "\40\1\3\13\1\231\2\13\1\135\1\311\1\175\1\162\1\24\25\1\14\13\1\44\1\207\122"+ "\1\1\302\1\13\1\312\1\313\1\314\1\315\1\316\1\317\1\320\1\43\1\321\1\43\47"+ "\1\1\13\1\160\1\13\1\160\1\13\1\160\47\1\55\13\1\207\2\1\103\13\1\44\15\13"+ "\1\42\150\13\1\16\25\1\41\13\1\42\56\1\17\13\41\1"); /* The ZZ_CMAP_A table has 3360 entries */ static final char ZZ_CMAP_A[] = zzUnpackCMap( "\11\0\1\31\1\33\1\111\1\32\1\14\22\0\1\30\1\76\1\27\1\13\1\0\1\70\1\71\1\25"+ "\1\100\1\101\1\65\1\63\1\106\1\21\1\17\1\67\1\1\1\5\6\3\2\2\1\107\1\34\1\75"+ "\1\64\1\74\1\0\1\66\1\4\1\11\1\23\1\4\1\20\1\23\3\15\1\22\1\15\1\12\2\15\1"+ "\10\2\15\1\24\2\15\1\24\2\15\1\6\2\15\1\102\1\26\1\103\1\73\1\7\1\110\1\35"+ "\1\44\1\46\1\37\1\41\1\53\1\60\1\62\1\51\1\22\1\45\1\47\1\57\1\36\1\50\1\55"+ "\1\15\1\42\1\40\1\43\1\52\1\15\1\61\1\54\1\56\1\15\1\104\1\72\1\105\1\77\6"+ "\0\1\111\24\0\1\15\12\0\1\15\4\0\1\15\5\0\27\15\1\0\12\15\4\0\14\15\16\0\5"+ "\15\7\0\1\15\1\0\1\15\1\0\5\15\1\0\2\15\2\0\4\15\1\0\1\15\6\0\1\15\1\0\3\15"+ "\1\0\1\15\1\0\4\15\1\0\23\15\1\0\11\15\1\0\26\15\2\0\1\15\6\0\10\15\10\0\16"+ "\15\1\0\1\15\1\0\2\15\1\0\2\15\1\0\1\15\10\0\13\15\5\0\3\15\15\0\12\16\4\0"+ "\6\15\1\0\10\15\2\0\12\15\1\0\6\15\12\16\3\15\2\0\14\15\2\0\3\15\12\16\14"+ "\15\4\0\1\15\5\0\16\15\2\0\14\15\4\0\5\15\16\0\21\15\2\0\12\16\1\15\2\0\16"+ "\15\1\0\1\15\3\0\4\15\2\0\11\15\2\0\2\15\2\0\4\15\10\0\1\15\4\0\2\15\1\0\1"+ "\15\1\0\3\15\1\0\6\15\4\0\2\15\1\0\2\15\1\0\2\15\1\0\2\15\2\0\1\15\1\0\5\15"+ "\4\0\2\15\2\0\3\15\3\0\1\15\7\0\4\15\1\0\1\15\7\0\12\16\6\15\13\0\3\15\1\0"+ "\11\15\1\0\2\15\1\0\2\15\1\0\5\15\2\0\12\15\1\0\3\15\1\0\3\15\2\0\1\15\30"+ "\0\1\15\7\0\3\15\1\0\10\15\2\0\6\15\2\0\2\15\2\0\3\15\10\0\2\15\4\0\2\15\1"+ "\0\1\15\1\0\1\15\20\0\2\15\1\0\6\15\3\0\3\15\1\0\4\15\3\0\2\15\1\0\1\15\1"+ "\0\2\15\3\0\2\15\3\0\3\15\3\0\14\15\4\0\5\15\3\0\3\15\1\0\4\15\2\0\1\15\6"+ "\0\1\15\10\0\4\15\1\0\10\15\1\0\3\15\1\0\30\15\3\0\10\15\1\0\3\15\1\0\4\15"+ "\7\0\2\15\1\0\3\15\6\0\3\15\1\0\10\15\1\0\6\15\1\0\5\15\2\0\4\15\5\0\2\15"+ "\7\0\1\15\2\0\2\15\15\0\5\15\1\0\3\15\1\0\5\15\10\0\1\15\7\0\1\15\12\0\6\15"+ "\2\0\2\15\1\0\22\15\3\0\10\15\1\0\11\15\1\0\1\15\2\0\7\15\3\0\1\15\4\0\6\15"+ "\1\0\1\15\1\0\10\15\2\0\2\15\14\0\17\15\1\0\12\16\7\0\2\15\1\0\1\15\2\0\2"+ "\15\1\0\1\15\2\0\1\15\6\0\4\15\1\0\7\15\1\0\3\15\1\0\1\15\1\0\1\15\2\0\2\15"+ "\1\0\15\15\1\0\3\15\2\0\5\15\1\0\1\15\1\0\6\15\2\0\12\16\2\0\4\15\10\0\2\15"+ "\13\0\1\15\1\0\1\15\1\0\1\15\4\0\12\15\1\0\24\15\3\0\5\15\1\0\12\15\6\0\1"+ "\15\11\0\12\16\4\15\2\0\6\15\1\0\1\15\5\0\1\15\2\0\13\15\1\0\15\15\1\0\4\15"+ "\2\0\7\15\1\0\1\15\1\0\4\15\2\0\1\15\1\0\4\15\2\0\7\15\1\0\1\15\1\0\4\15\2"+ "\0\16\15\2\0\6\15\2\0\15\15\2\0\14\15\3\0\13\15\7\0\15\15\1\0\6\15\14\0\1"+ "\15\1\0\2\15\14\0\4\15\3\0\1\15\4\0\2\15\15\0\3\15\2\0\12\15\15\0\1\15\23"+ "\0\5\15\12\16\3\0\6\15\1\0\23\15\1\0\2\15\6\0\6\15\6\0\14\15\1\0\1\15\1\0"+ "\1\15\1\0\1\15\1\0\6\15\1\0\7\15\1\0\1\15\3\0\3\15\1\0\7\15\3\0\4\15\2\0\6"+ "\15\14\0\2\111\25\0\1\15\4\0\1\15\14\0\1\15\15\0\1\15\2\0\1\15\4\0\1\15\2"+ "\0\12\15\1\0\1\15\3\0\5\15\6\0\1\15\1\0\1\15\1\0\1\15\1\0\4\15\1\0\13\15\2"+ "\0\4\15\5\0\5\15\4\0\1\15\7\0\17\15\6\0\15\15\7\0\10\15\11\0\7\15\1\0\7\15"+ "\6\0\3\15\11\0\5\15\2\0\5\15\3\0\7\15\2\0\2\15\2\0\3\15\5\0\13\15\12\16\2"+ "\15\4\0\3\15\1\0\12\15\1\0\1\15\7\0\11\15\2\0\27\15\2\0\15\15\3\0\1\15\1\0"+ "\1\15\2\0\1\15\16\0\1\15\12\16\5\15\3\0\5\15\12\0\6\15\2\0\6\15\2\0\6\15\11"+ "\0\13\15\1\0\2\15\2\0\7\15\4\0\5\15\3\0\5\15\5\0\12\15\1\0\5\15\1\0\1\15\1"+ "\0\2\15\1\0\2\15\1\0\12\15\3\0\2\15\30\0\16\15\4\0\1\15\2\0\6\15\2\0\6\15"+ "\2\0\6\15\2\0\3\15\3\0\14\15\1\0\16\15\1\0\2\15\1\0\1\15\15\0\1\15\2\0\4\15"+ "\4\0\10\15\1\0\5\15\12\0\6\15\2\0\1\15\1\0\14\15\1\0\2\15\3\0\1\15\2\0\4\15"+ "\1\0\2\15\12\0\10\15\6\0\6\15\1\0\2\15\5\0\10\15\1\0\3\15\1\0\13\15\4\0\3"+ "\15\4\0\6\15\1\0\12\16\4\15\2\0\1\15\11\0\5\15\5\0\3\15\3\0\12\16\1\15\1\0"+ "\1\15\3\0\7\15\1\0\1\15\1\0\4\15\1\0\2\15\6\0\1\15\5\0\7\15\2\0\7\15\3\0\6"+ "\15\1\0\1\15\10\0\6\15\2\0\10\15\10\0\6\15\2\0\1\15\3\0\1\15\13\0\10\15\5"+ "\0\15\15\3\0\2\15\6\0\5\15\3\0\6\15\10\0\10\15\2\0\7\15\16\0\4\15\4\0\3\15"+ "\15\0\1\15\2\0\2\15\2\0\4\15\1\0\14\15\1\0\1\15\1\0\7\15\1\0\21\15\1\0\4\15"+ "\2\0\10\15\1\0\7\15\1\0\14\15\1\0\4\15\1\0\5\15\1\0\1\15\3\0\11\15\1\0\10"+ "\15\2\0\22\16\5\0\1\15\13\0\2\15\1\0\1\15\2\0\1\15\1\0\12\15\1\0\4\15\1\0"+ "\1\15\1\0\1\15\6\0\1\15\4\0\1\15\1\0\1\15\1\0\1\15\1\0\3\15\1\0\2\15\1\0\1"+ "\15\2\0\1\15\1\0\1\15\1\0\1\15\1\0\1\15\1\0\1\15\1\0\2\15\1\0\1\15\2\0\4\15"+ "\1\0\7\15\1\0\4\15\1\0\4\15\1\0\1\15\1\0\12\15\1\0\5\15\1\0\3\15\1\0\5\15"+ "\1\0\5\15"); /** * Translates DFA states to action switch labels. */ private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = "\3\0\1\1\2\2\2\3\1\4\1\5\1\6\1\7"+ "\1\10\1\7\1\11\1\12\1\13\1\14\1\15\20\3"+ "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+ "\1\26\1\27\1\30\1\1\1\31\1\32\1\33\1\34"+ "\1\35\1\36\1\37\1\40\1\41\1\42\2\43\1\44"+ "\2\45\1\46\1\3\2\47\4\3\1\41\1\2\5\0"+ "\1\2\1\50\1\0\1\51\1\0\1\3\1\50\1\52"+ "\1\53\3\7\1\54\3\7\15\3\1\55\1\56\1\57"+ "\1\60\10\3\1\61\1\62\1\63\1\64\1\65\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\0\3\45\1\102\3\45\1\3"+ "\6\47\2\3\2\0\1\103\1\0\1\2\1\0\1\2"+ "\1\0\1\2\1\0\1\50\1\0\1\3\1\0\1\7"+ "\1\104\1\105\1\0\1\104\1\106\1\3\1\107\1\110"+ "\1\111\5\3\1\112\6\3\1\113\5\3\1\114\1\115"+ "\1\116\1\117\1\0\1\45\1\120\1\121\1\0\1\120"+ "\1\3\1\47\2\122\1\0\2\123\1\0\1\3\1\124"+ "\1\125\10\3\1\126\1\3\1\127\3\3\1\0\2\121"+ "\11\0\2\3\1\130\1\3\1\131\1\132\4\3\1\133"+ "\1\3\1\134\6\0\1\104\1\135\1\136\1\137\1\3"+ "\1\140\1\141\1\3\1\142\1\120\1\122\1\123\1\0"+ "\1\143\1\3\1\144\1\145"; private static int [] zzUnpackAction() { int [] result = new int[277]; 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\112\0\224\0\336\0\u0128\0\u0172\0\u01bc\0\u0206"+ "\0\u0250\0\u029a\0\u02e4\0\u032e\0\336\0\u0378\0\336\0\336"+ "\0\336\0\336\0\336\0\u03c2\0\u040c\0\u0456\0\u04a0\0\u04ea"+ "\0\u0534\0\u057e\0\u05c8\0\u0612\0\u065c\0\u06a6\0\u06f0\0\u073a"+ "\0\u0784\0\u07ce\0\u0818\0\u0862\0\u08ac\0\u08f6\0\u0940\0\u098a"+ "\0\u09d4\0\u0a1e\0\u0a68\0\u0ab2\0\u0afc\0\u0b46\0\u0b90\0\336"+ "\0\336\0\336\0\336\0\336\0\336\0\336\0\336\0\336"+ "\0\336\0\336\0\u0bda\0\u0c24\0\u0c6e\0\u0cb8\0\336\0\u0d02"+ "\0\u0d4c\0\u0d96\0\u0de0\0\u0e2a\0\u0e74\0\u0ebe\0\u0f08\0\u0f52"+ "\0\u0f9c\0\u0fe6\0\u1030\0\u107a\0\u10c4\0\336\0\u110e\0\u1158"+ "\0\336\0\u11a2\0\u11ec\0\u1236\0\336\0\336\0\u1280\0\u12ca"+ "\0\u1314\0\336\0\u135e\0\u13a8\0\u13f2\0\u143c\0\u1486\0\u14d0"+ "\0\u151a\0\u1564\0\u15ae\0\u15f8\0\u1642\0\u168c\0\u16d6\0\u1720"+ "\0\u176a\0\u17b4\0\u01bc\0\u01bc\0\u01bc\0\u01bc\0\u17fe\0\u1848"+ "\0\u1892\0\u18dc\0\u1926\0\u1970\0\u19ba\0\u1a04\0\336\0\336"+ "\0\336\0\u1a4e\0\336\0\336\0\u1a98\0\336\0\336\0\336"+ "\0\336\0\336\0\u1ae2\0\336\0\336\0\u1b2c\0\336\0\u1b76"+ "\0\u1bc0\0\u1c0a\0\u1c54\0\336\0\u1c9e\0\u1ce8\0\u1d32\0\u1d7c"+ "\0\u1dc6\0\u1e10\0\u1e5a\0\u1ea4\0\u1eee\0\u1f38\0\u1f82\0\u1fcc"+ "\0\u2016\0\u0f08\0\336\0\u2060\0\u20aa\0\u20f4\0\u213e\0\u2188"+ "\0\u21d2\0\u221c\0\u2266\0\u22b0\0\u22fa\0\u029a\0\u2344\0\u238e"+ "\0\336\0\u2344\0\u23d8\0\u01bc\0\u2422\0\u01bc\0\u01bc\0\u01bc"+ "\0\u246c\0\u24b6\0\u2500\0\u254a\0\u2594\0\u01bc\0\u25de\0\u2628"+ "\0\u2672\0\u26bc\0\u2706\0\u2750\0\u01bc\0\u279a\0\u27e4\0\u282e"+ "\0\u2878\0\u28c2\0\336\0\336\0\336\0\336\0\u290c\0\u2956"+ "\0\u29a0\0\336\0\u2956\0\u29ea\0\u2a34\0\336\0\u2a7e\0\u2ac8"+ "\0\u2b12\0\u2b5c\0\u2ba6\0\u2bf0\0\u2c3a\0\u01bc\0\u01bc\0\u2c84"+ "\0\u2cce\0\u2d18\0\u2d62\0\u2dac\0\u2df6\0\u2e40\0\u2e8a\0\u01bc"+ "\0\u2ed4\0\u01bc\0\u2f1e\0\u2f68\0\u2fb2\0\u2ffc\0\u3046\0\u3090"+ "\0\u30da\0\u3124\0\u316e\0\u31b8\0\u3202\0\u324c\0\u2b5c\0\u2ba6"+ "\0\u3296\0\u32e0\0\u332a\0\u01bc\0\u3374\0\u01bc\0\u01bc\0\u33be"+ "\0\u3408\0\u3452\0\u349c\0\u01bc\0\u34e6\0\u01bc\0\u3530\0\u3046"+ "\0\u3090\0\u357a\0\u35c4\0\u360e\0\u3658\0\u01bc\0\u01bc\0\u01bc"+ "\0\u36a2\0\u01bc\0\u01bc\0\u36ec\0\u01bc\0\u2956\0\336\0\336"+ "\0\u3658\0\336\0\u3736\0\u01bc\0\u01bc"; private static int [] zzUnpackRowMap() { int [] result = new int[277]; 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 = "\1\4\1\5\2\6\1\7\1\6\3\7\1\10\1\7"+ "\1\11\1\4\1\7\1\4\1\12\1\7\1\13\1\7"+ "\2\10\1\14\1\15\1\16\1\17\1\20\1\21\1\22"+ "\1\23\1\24\1\25\1\26\1\7\1\27\1\30\1\31"+ "\1\32\1\7\1\33\1\34\1\35\1\36\1\10\1\37"+ "\1\7\1\40\1\41\1\7\1\42\1\43\1\7\1\44"+ "\1\45\1\46\1\47\1\50\1\51\1\52\1\53\1\54"+ "\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\64"+ "\1\65\1\66\1\67\1\70\1\71\1\4\11\72\1\73"+ "\1\72\1\74\1\0\6\72\2\73\1\75\1\15\1\76"+ "\1\17\1\20\1\21\1\77\6\72\1\73\1\72\1\73"+ "\1\72\1\73\3\72\2\73\35\72\1\0\1\4\1\5"+ "\2\6\1\7\1\6\3\7\1\100\1\7\1\74\1\4"+ "\1\7\1\4\1\12\1\7\1\13\1\7\2\100\1\101"+ "\1\15\1\102\1\17\1\20\1\21\1\77\1\23\1\24"+ "\1\25\1\26\1\7\1\27\1\103\1\31\1\104\1\7"+ "\1\105\1\34\1\35\1\36\1\100\1\106\1\7\1\40"+ "\1\41\1\7\1\42\1\43\1\7\1\44\1\45\1\46"+ "\1\47\1\50\1\51\1\52\1\53\1\54\1\55\1\56"+ "\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1\66"+ "\1\67\1\107\1\71\1\4\113\0\1\110\1\111\1\110"+ "\1\0\1\110\1\112\1\113\1\114\1\115\1\116\4\0"+ "\1\117\1\120\1\0\1\121\16\0\1\120\2\0\1\115"+ "\2\0\1\116\1\114\3\0\1\112\36\0\3\6\1\0"+ "\1\6\1\0\1\122\2\0\1\116\4\0\1\117\1\120"+ "\1\0\1\121\16\0\1\120\5\0\1\116\43\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\26\7"+ "\30\0\10\7\1\123\1\7\2\0\2\7\1\0\1\7"+ "\1\0\1\7\2\123\1\14\1\0\1\16\5\0\5\7"+ "\1\123\1\7\1\123\1\7\1\123\3\7\2\123\7\7"+ "\27\0\14\11\1\0\16\11\1\0\56\11\1\0\3\124"+ "\1\0\1\124\170\0\1\125\7\0\1\126\15\0\14\127"+ "\1\0\10\127\1\130\1\131\4\127\1\132\56\127\14\133"+ "\1\0\11\133\1\134\1\135\3\133\1\132\56\133\1\0"+ "\12\7\2\0\2\7\1\0\1\7\1\0\3\7\10\0"+ "\1\7\1\136\1\7\1\137\22\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\13\7\1\140"+ "\12\7\30\0\12\7\2\0\2\7\1\0\1\7\1\0"+ "\3\7\10\0\4\7\1\141\21\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\12\7\1\142"+ "\4\7\1\143\6\7\30\0\10\7\1\123\1\7\2\0"+ "\2\7\1\0\1\7\1\0\1\7\2\123\1\14\1\0"+ "\1\16\5\0\1\144\3\7\1\145\1\123\1\7\1\123"+ "\1\7\1\123\3\7\2\123\7\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\5\7\1\146"+ "\20\7\30\0\10\7\1\123\1\7\2\0\2\7\1\0"+ "\1\7\1\0\1\7\2\123\1\14\1\0\1\16\5\0"+ "\5\7\1\147\1\7\1\123\1\7\1\123\3\7\2\123"+ "\7\7\30\0\10\7\1\123\1\7\2\0\2\7\1\0"+ "\1\7\1\0\1\7\2\123\1\14\1\0\1\16\5\0"+ "\5\7\1\123\1\7\1\123\1\7\1\123\1\150\1\151"+ "\1\7\2\123\7\7\30\0\12\7\2\0\2\7\1\0"+ "\1\7\1\0\3\7\10\0\1\152\25\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\5\7"+ "\1\153\20\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\1\7\1\154\1\7\1\155\12\7"+ "\1\156\3\7\1\157\3\7\30\0\10\7\1\123\1\7"+ "\2\0\2\7\1\0\1\7\1\0\1\7\2\123\1\14"+ "\1\0\1\16\5\0\5\7\1\160\1\7\1\123\1\7"+ "\1\123\1\7\1\161\1\162\2\123\7\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\1\163"+ "\25\7\30\0\12\7\2\0\2\7\1\0\1\7\1\0"+ "\3\7\10\0\14\7\1\164\11\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\12\7\1\165"+ "\13\7\30\0\12\7\2\0\2\7\1\0\1\7\1\0"+ "\3\7\10\0\25\7\1\166\113\0\1\167\111\0\1\170"+ "\111\0\1\171\1\172\110\0\1\173\111\0\1\174\2\0"+ "\1\175\106\0\1\176\111\0\1\177\111\0\1\200\111\0"+ "\1\201\111\0\1\202\7\0\1\203\101\0\1\204\7\0"+ "\1\205\1\206\100\0\1\207\36\0\1\210\11\0\2\210"+ "\1\75\1\0\1\76\12\0\1\210\1\0\1\210\1\0"+ "\1\210\3\0\2\210\36\0\14\74\1\0\16\74\1\0"+ "\56\74\14\211\1\0\10\211\1\212\1\213\4\211\1\214"+ "\56\211\14\215\1\0\11\215\1\216\1\217\3\215\1\214"+ "\56\215\1\0\10\7\1\220\1\7\2\0\2\7\1\0"+ "\1\7\1\0\1\7\2\220\1\101\1\0\1\102\5\0"+ "\5\7\1\220\1\7\1\220\1\7\1\220\3\7\2\220"+ "\7\7\27\0\14\221\1\0\10\221\1\222\1\223\4\221"+ "\1\0\56\221\14\224\1\0\11\224\1\225\1\226\3\224"+ "\1\0\56\224\1\0\10\7\1\220\1\7\2\0\2\7"+ "\1\0\1\7\1\0\1\7\2\220\1\101\1\0\1\102"+ "\5\0\1\144\3\7\1\145\1\220\1\7\1\220\1\7"+ "\1\220\3\7\2\220\7\7\30\0\10\7\1\220\1\7"+ "\2\0\2\7\1\0\1\7\1\0\1\7\2\220\1\101"+ "\1\0\1\102\5\0\5\7\1\227\1\7\1\220\1\7"+ "\1\220\3\7\2\220\7\7\30\0\10\7\1\220\1\7"+ "\2\0\2\7\1\0\1\7\1\0\1\7\2\220\1\101"+ "\1\0\1\102\5\0\5\7\1\220\1\7\1\220\1\7"+ "\1\220\1\150\1\151\1\7\2\220\7\7\30\0\10\7"+ "\1\220\1\7\2\0\2\7\1\0\1\7\1\0\1\7"+ "\2\220\1\101\1\0\1\102\5\0\5\7\1\230\1\7"+ "\1\220\1\7\1\220\1\7\1\161\1\162\2\220\7\7"+ "\42\0\1\231\14\0\1\232\2\0\1\233\57\0\1\110"+ "\1\111\1\110\1\0\1\110\1\0\1\113\2\0\1\116"+ "\4\0\1\117\1\120\1\0\1\121\16\0\1\120\5\0"+ "\1\116\43\0\3\111\1\0\1\111\1\0\1\234\7\0"+ "\1\117\1\120\1\0\1\121\16\0\1\120\51\0\5\235"+ "\1\0\1\236\1\0\1\235\6\0\1\235\2\0\1\235"+ "\11\0\1\235\1\0\1\235\1\0\1\235\2\0\1\235"+ "\1\0\1\235\4\0\1\235\37\0\1\110\1\111\1\110"+ "\1\0\1\110\105\0\1\237\1\0\1\237\1\0\1\237"+ "\1\0\1\240\103\0\1\241\3\0\1\241\1\0\1\242"+ "\103\0\3\124\1\0\1\124\12\0\1\120\1\0\1\121"+ "\16\0\1\120\51\0\3\243\1\0\1\243\13\0\1\244"+ "\41\0\1\244\27\0\3\6\1\0\1\6\105\0\10\7"+ "\1\245\1\7\2\0\2\7\1\0\1\7\1\0\1\7"+ "\2\245\1\14\1\0\1\16\5\0\5\7\1\245\1\7"+ "\1\245\1\7\1\245\3\7\2\245\7\7\30\0\3\124"+ "\1\0\1\124\1\0\1\246\10\0\1\120\1\0\1\121"+ "\16\0\1\120\50\0\14\127\1\0\10\127\1\247\1\131"+ "\4\127\1\132\56\127\25\0\1\250\1\251\1\0\2\252"+ "\1\0\2\132\55\0\112\127\14\133\1\0\11\133\1\134"+ "\1\247\3\133\1\132\170\133\26\0\1\251\1\253\2\252"+ "\1\0\2\132\56\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\2\7\1\254\23\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\3\7"+ "\1\255\22\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\6\7\1\256\17\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\12\7"+ "\1\257\3\7\1\260\7\7\30\0\12\7\2\0\2\7"+ "\1\0\1\7\1\0\3\7\10\0\3\7\1\261\10\7"+ "\1\262\11\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\11\7\1\263\14\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\14\7"+ "\1\264\11\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\6\7\1\265\17\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\21\7"+ "\1\266\4\7\30\0\10\7\1\245\1\7\2\0\2\7"+ "\1\0\1\7\1\0\1\7\2\245\1\14\1\0\1\16"+ "\5\0\4\7\1\267\1\245\1\7\1\245\1\7\1\245"+ "\3\7\2\245\7\7\30\0\12\7\2\0\2\7\1\0"+ "\1\7\1\0\3\7\10\0\1\270\25\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\1\7"+ "\1\271\24\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\22\7\1\272\3\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\20\7"+ "\1\273\5\7\30\0\10\7\1\245\1\7\2\0\2\7"+ "\1\0\1\7\1\0\1\7\2\245\1\14\1\0\1\16"+ "\5\0\5\7\1\245\1\7\1\245\1\7\1\245\1\7"+ "\1\274\1\7\2\245\7\7\30\0\12\7\2\0\2\7"+ "\1\0\1\7\1\0\3\7\10\0\5\7\1\275\20\7"+ "\30\0\12\7\2\0\2\7\1\0\1\7\1\0\3\7"+ "\10\0\1\7\1\276\24\7\30\0\12\7\2\0\2\7"+ "\1\0\1\7\1\0\3\7\10\0\3\7\1\277\22\7"+ "\30\0\12\7\2\0\2\7\1\0\1\7\1\0\3\7"+ "\10\0\4\7\1\300\21\7\30\0\12\7\2\0\2\7"+ "\1\0\1\7\1\0\3\7\10\0\13\7\1\301\12\7"+ "\30\0\12\7\2\0\2\7\1\0\1\7\1\0\3\7"+ "\10\0\14\7\1\302\11\7\113\0\1\303\111\0\1\304"+ "\111\0\1\305\111\0\1\306\36\0\1\307\11\0\2\307"+ "\1\75\1\0\1\76\12\0\1\307\1\0\1\307\1\0"+ "\1\307\3\0\2\307\36\0\14\211\1\0\10\211\1\310"+ "\1\213\4\211\1\214\56\211\25\0\1\311\1\312\1\0"+ "\2\313\1\0\2\214\55\0\112\211\14\215\1\0\11\215"+ "\1\216\1\310\3\215\1\214\170\215\26\0\1\312\1\314"+ "\2\313\1\0\2\214\56\0\10\7\1\315\1\7\2\0"+ "\2\7\1\0\1\7\1\0\1\7\2\315\1\101\1\0"+ "\1\102\5\0\5\7\1\315\1\7\1\315\1\7\1\315"+ "\3\7\2\315\7\7\27\0\14\221\1\0\10\221\1\316"+ "\1\223\4\221\1\0\56\221\25\0\1\317\64\0\112\221"+ "\14\224\1\0\11\224\1\225\1\316\3\224\1\0\170\224"+ "\27\0\1\320\63\0\10\7\1\315\1\7\2\0\2\7"+ "\1\0\1\7\1\0\1\7\2\315\1\101\1\0\1\102"+ "\5\0\4\7\1\267\1\315\1\7\1\315\1\7\1\315"+ "\3\7\2\315\7\7\30\0\10\7\1\315\1\7\2\0"+ "\2\7\1\0\1\7\1\0\1\7\2\315\1\101\1\0"+ "\1\102\5\0\5\7\1\315\1\7\1\315\1\7\1\315"+ "\1\7\1\274\1\7\2\315\7\7\27\0\14\231\1\0"+ "\16\231\1\233\56\231\1\0\3\111\1\0\1\111\105\0"+ "\5\235\1\0\1\236\1\0\1\235\1\116\5\0\1\235"+ "\2\0\1\235\11\0\1\235\1\0\1\235\1\0\1\235"+ "\2\0\1\235\1\0\1\235\1\116\3\0\1\235\37\0"+ "\5\235\3\0\1\235\6\0\1\235\2\0\1\235\11\0"+ "\1\235\1\0\1\235\1\0\1\235\2\0\1\235\1\0"+ "\1\235\4\0\1\235\37\0\1\237\1\0\1\237\1\0"+ "\1\237\1\0\1\240\2\0\1\116\34\0\1\116\43\0"+ "\1\237\1\0\1\237\1\0\1\237\105\0\1\241\3\0"+ "\1\241\1\0\1\242\2\0\1\116\34\0\1\116\43\0"+ "\1\241\3\0\1\241\105\0\3\243\1\0\1\243\1\0"+ "\1\244\12\0\1\121\70\0\3\243\1\0\1\243\105\0"+ "\12\7\2\0\2\7\1\0\1\7\1\0\3\7\1\14"+ "\1\0\1\16\5\0\26\7\55\0\1\251\1\0\2\252"+ "\1\0\2\132\55\0\25\250\1\321\1\322\63\250\26\253"+ "\1\323\1\324\62\253\1\0\12\7\2\0\2\7\1\0"+ "\1\7\1\0\3\7\10\0\4\7\1\325\21\7\30\0"+ "\12\7\2\0\2\7\1\0\1\7\1\0\3\7\10\0"+ "\4\7\1\326\21\7\30\0\12\7\2\0\2\7\1\0"+ "\1\7\1\0\3\7\10\0\16\7\1\327\7\7\30\0"+ "\12\7\2\0\2\7\1\0\1\7\1\0\3\7\10\0"+ "\4\7\1\330\21\7\30\0\12\7\2\0\2\7\1\0"+ "\1\7\1\0\3\7\10\0\3\7\1\331\22\7\30\0"+ "\12\7\2\0\2\7\1\0\1\7\1\0\3\7\10\0"+ "\15\7\1\332\10\7\30\0\12\7\2\0\2\7\1\0"+ "\1\7\1\0\3\7\10\0\1\333\25\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\3\7"+ "\1\334\22\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\6\7\1\335\17\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\7\7"+ "\1\336\16\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\13\7\1\337\12\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\22\7"+ "\1\340\3\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\1\341\25\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\3\7\1\342"+ "\22\7\30\0\12\7\2\0\2\7\1\0\1\7\1\0"+ "\3\7\10\0\12\7\1\343\13\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\7\7\1\344"+ "\16\7\30\0\12\7\2\0\2\7\1\0\1\7\1\0"+ "\3\7\10\0\12\7\1\345\13\7\54\0\1\75\1\0"+ "\1\76\110\0\1\312\1\0\2\313\1\0\2\214\55\0"+ "\25\311\1\346\1\347\63\311\26\314\1\350\1\351\62\314"+ "\1\0\12\7\2\0\2\7\1\0\1\7\1\0\3\7"+ "\1\101\1\0\1\102\5\0\26\7\27\0\25\317\1\352"+ "\1\353\63\317\26\320\1\354\1\355\62\320\25\250\1\356"+ "\1\357\175\250\140\253\1\360\1\361\62\253\1\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\5\7"+ "\1\362\20\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\20\7\1\363\5\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\4\7"+ "\1\364\21\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\5\7\1\365\20\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\10\7"+ "\1\366\15\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\3\7\1\367\22\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\14\7"+ "\1\370\11\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\2\7\1\371\23\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\5\7"+ "\1\372\20\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\12\7\1\373\13\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\2\7"+ "\1\374\23\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\1\375\25\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\4\7\1\376"+ "\21\7\27\0\25\311\1\377\1\u0100\175\311\140\314\1\u0101"+ "\1\u0102\62\314\25\317\1\u0103\1\353\175\317\140\320\1\354"+ "\1\u0104\62\320\25\250\1\u0105\1\357\63\250\26\253\1\360"+ "\1\u0105\62\253\1\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\6\7\1\u0106\17\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\6\7"+ "\1\u0107\17\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\1\7\1\u0108\24\7\30\0\12\7"+ "\2\0\2\7\1\0\1\7\1\0\3\7\10\0\1\7"+ "\1\u0109\24\7\30\0\12\7\2\0\2\7\1\0\1\7"+ "\1\0\3\7\10\0\1\u010a\25\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\6\7\1\u010b"+ "\17\7\30\0\12\7\2\0\2\7\1\0\1\7\1\0"+ "\3\7\10\0\12\7\1\u010c\13\7\30\0\12\7\2\0"+ "\2\7\1\0\1\7\1\0\3\7\10\0\12\7\1\u010d"+ "\13\7\27\0\25\311\1\u010e\1\u0100\63\311\26\314\1\u0101"+ "\1\u010e\62\314\25\317\1\u010f\1\353\63\317\26\320\1\354"+ "\1\u010f\62\320\26\0\1\u0110\1\0\2\u0111\1\0\2\u0112"+ "\56\0\12\7\2\0\2\7\1\0\1\7\1\0\3\7"+ "\10\0\15\7\1\u0113\10\7\30\0\12\7\2\0\2\7"+ "\1\0\1\7\1\0\3\7\10\0\21\7\1\u0114\4\7"+ "\30\0\12\7\2\0\2\7\1\0\1\7\1\0\3\7"+ "\10\0\4\7\1\u0115\21\7\27\0"; private static int [] zzUnpackTrans() { int [] result = new int[14208]; 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 = { "Unknown 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 = "\3\0\1\11\10\1\1\11\1\1\5\11\34\1\13\11"+ "\4\1\1\11\11\1\5\0\1\11\1\1\1\0\1\11"+ "\1\0\2\1\2\11\3\1\1\11\34\1\3\11\1\1"+ "\2\11\1\1\5\11\1\1\2\11\1\1\1\11\1\0"+ "\3\1\1\11\14\1\2\0\1\11\1\0\1\1\1\0"+ "\1\1\1\0\1\1\1\0\1\1\1\0\1\1\1\0"+ "\2\1\1\11\1\0\30\1\4\11\1\0\2\1\1\11"+ "\1\0\2\1\1\11\2\1\1\0\2\1\1\0\21\1"+ "\1\0\2\1\11\0\15\1\6\0\12\1\2\11\1\0"+ "\1\11\3\1"; private static int [] zzUnpackAttribute() { int [] result = new int[277]; 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 CharSequence zzBuffer = ""; /** the textposition at the last accepting state */ private int zzMarkedPos; /** 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; /** * 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 int getSpaceLength(CharSequence string) { String string1 = string.toString(); string1 = StringUtil.trimEnd(string1, "\\"); string1 = StringUtil.trimEnd(string1, ";"); final String s = StringUtil.trimTrailing(string1); return yylength()-s.length(); } /** * Creates a new scanner * * @param in the java.io.Reader to read input from. */ _PythonLexer(java.io.Reader in) { this.zzReader = 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) { int size = 0; for (int i = 0, length = packed.length(); i < length; i += 2) { size += packed.charAt(i); } char[] map = new char[size]; int i = 0; /* index in packed string */ int j = 0; /* index in unpacked array */ while (i < packed.length()) { int count = packed.charAt(i++); char value = packed.charAt(i++); do map[j++] = value; while (--count > 0); } return map; } public final int getTokenStart() { return zzStartRead; } public final int getTokenEnd() { return getTokenStart() + yylength(); } public void reset(CharSequence buffer, int start, int end, int initialState) { zzBuffer = buffer; zzCurrentPos = zzMarkedPos = zzStartRead = start; zzAtEOF = false; zzAtBOL = true; zzEndRead = end; yybegin(initialState); } /** * 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 { return true; } /** * 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 CharSequence yytext() { return zzBuffer.subSequence(zzStartRead, zzMarkedPos); } /** * 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.charAt(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; } /** * 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 IElementType advance() throws java.io.IOException { int zzInput; int zzAction; // cached fields: int zzCurrentPosL; int zzMarkedPosL; int zzEndReadL = zzEndRead; CharSequence zzBufferL = zzBuffer; int [] zzTransL = ZZ_TRANS; int [] zzRowMapL = ZZ_ROWMAP; int [] zzAttrL = ZZ_ATTRIBUTE; while (true) { zzMarkedPosL = zzMarkedPos; zzAction = -1; zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; zzState = ZZ_LEXSTATE[zzLexicalState]; // set up zzAction for empty match case: int zzAttributes = zzAttrL[zzState]; if ( (zzAttributes & 1) == 1 ) { zzAction = zzState; } zzForAction: { while (true) { if (zzCurrentPosL < zzEndReadL) { zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/); zzCurrentPosL += Character.charCount(zzInput); } 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 = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/); zzCurrentPosL += Character.charCount(zzInput); } } int zzNext = zzTransL[ zzRowMapL[zzState] + ZZ_CMAP(zzInput) ]; if (zzNext == -1) break zzForAction; zzState = zzNext; zzAttributes = zzAttrL[zzState]; if ( (zzAttributes & 1) == 1 ) { zzAction = zzState; zzMarkedPosL = zzCurrentPosL; if ( (zzAttributes & 8) == 8 ) break zzForAction; } } } // store back cached position zzMarkedPos = zzMarkedPosL; if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; return null; } else { switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { case 1: { return PyTokenTypes.BAD_CHARACTER; } case 102: break; case 2: { return PyTokenTypes.INTEGER_LITERAL; } case 103: break; case 3: { return PyTokenTypes.IDENTIFIER; } case 104: break; case 4: { if (zzCurrentPos == 0) yybegin(PENDING_DOCSTRING); return PyTokenTypes.END_OF_LINE_COMMENT; } case 105: break; case 5: { return PyTokenTypes.DOT; } case 106: break; case 6: { return PyTokenTypes.MINUS; } case 107: break; case 7: { if (zzInput == YYEOF && zzStartRead == 0) return PyTokenTypes.DOCSTRING; else return PyTokenTypes.SINGLE_QUOTED_STRING; } case 108: break; case 8: { return PyTokenTypes.BACKSLASH; } case 109: break; case 9: { return PyTokenTypes.SPACE; } case 110: break; case 10: { return PyTokenTypes.TAB; } case 111: break; case 11: { return PyTokenTypes.FORMFEED; } case 112: break; case 12: { if (zzCurrentPos == 0) yybegin(PENDING_DOCSTRING); return PyTokenTypes.LINE_BREAK; } case 113: break; case 13: { return PyTokenTypes.SEMICOLON; } case 114: break; case 14: { return PyTokenTypes.PLUS; } case 115: break; case 15: { return PyTokenTypes.EQ; } case 116: break; case 16: { return PyTokenTypes.MULT; } case 117: break; case 17: { return PyTokenTypes.AT; } case 118: break; case 18: { return PyTokenTypes.DIV; } case 119: break; case 19: { return PyTokenTypes.PERC; } case 120: break; case 20: { return PyTokenTypes.AND; } case 121: break; case 21: { return PyTokenTypes.OR; } case 122: break; case 22: { return PyTokenTypes.XOR; } case 123: break; case 23: { return PyTokenTypes.GT; } case 124: break; case 24: { return PyTokenTypes.LT; } case 125: break; case 25: { return PyTokenTypes.TILDE; } case 126: break; case 26: { return PyTokenTypes.LPAR; } case 127: break; case 27: { return PyTokenTypes.RPAR; } case 128: break; case 28: { return PyTokenTypes.LBRACKET; } case 129: break; case 29: { return PyTokenTypes.RBRACKET; } case 130: break; case 30: { return PyTokenTypes.LBRACE; } case 131: break; case 31: { return PyTokenTypes.RBRACE; } case 132: break; case 32: { return PyTokenTypes.COMMA; } case 133: break; case 33: { return PyTokenTypes.COLON; } case 134: break; case 34: { return PyTokenTypes.TICK; } case 135: break; case 35: { yypushback(1); yybegin(YYINITIAL); } case 136: break; case 36: { return PyTokenTypes.END_OF_LINE_COMMENT; } case 137: break; case 37: { if (zzInput == YYEOF) return PyTokenTypes.DOCSTRING; else yybegin(YYINITIAL); return PyTokenTypes.SINGLE_QUOTED_STRING; } case 138: break; case 38: { return PyTokenTypes.LINE_BREAK; } case 139: break; case 39: { return PyTokenTypes.SINGLE_QUOTED_STRING; } case 140: break; case 40: { return PyTokenTypes.FLOAT_LITERAL; } case 141: break; case 41: { return PyTokenTypes.IMAGINARY_LITERAL; } case 142: break; case 42: { return PyTokenTypes.MINUSEQ; } case 143: break; case 43: { return PyTokenTypes.RARROW; } case 144: break; case 44: { yypushback(getSpaceLength(yytext())); if (zzCurrentPos != 0) return PyTokenTypes.SINGLE_QUOTED_STRING; return PyTokenTypes.DOCSTRING; } case 145: break; case 45: { return PyTokenTypes.OR_KEYWORD; } case 146: break; case 46: { return PyTokenTypes.IN_KEYWORD; } case 147: break; case 47: { return PyTokenTypes.IS_KEYWORD; } case 148: break; case 48: { return PyTokenTypes.IF_KEYWORD; } case 149: break; case 49: { return PyTokenTypes.PLUSEQ; } case 150: break; case 50: { return PyTokenTypes.EQEQ; } case 151: break; case 51: { return PyTokenTypes.MULTEQ; } case 152: break; case 52: { return PyTokenTypes.EXP; } case 153: break; case 53: { return PyTokenTypes.ATEQ; } case 154: break; case 54: { return PyTokenTypes.DIVEQ; } case 155: break; case 55: { return PyTokenTypes.FLOORDIV; } case 156: break; case 56: { return PyTokenTypes.PERCEQ; } case 157: break; case 57: { return PyTokenTypes.ANDEQ; } case 158: break; case 58: { return PyTokenTypes.OREQ; } case 159: break; case 59: { return PyTokenTypes.XOREQ; } case 160: break; case 60: { return PyTokenTypes.GE; } case 161: break; case 61: { return PyTokenTypes.GTGT; } case 162: break; case 62: { return PyTokenTypes.LE; } case 163: break; case 63: { return PyTokenTypes.NE_OLD; } case 164: break; case 64: { return PyTokenTypes.LTLT; } case 165: break; case 65: { return PyTokenTypes.NE; } case 166: break; case 66: { yypushback(getSpaceLength(yytext())); yybegin(YYINITIAL); return PyTokenTypes.DOCSTRING; } case 167: break; case 67: { yypushback(yylength()-1); yybegin(PENDING_DOCSTRING); return PyTokenTypes.COLON; } case 168: break; case 68: { if (zzInput == YYEOF && zzStartRead == 0) return PyTokenTypes.DOCSTRING; else return PyTokenTypes.TRIPLE_QUOTED_STRING; } case 169: break; case 69: { yypushback(getSpaceLength(yytext())); if (zzCurrentPos != 0) return PyTokenTypes.SINGLE_QUOTED_STRING; yybegin(PENDING_DOCSTRING); return PyTokenTypes.DOCSTRING; } case 170: break; case 70: { return PyTokenTypes.AND_KEYWORD; } case 171: break; case 71: { return PyTokenTypes.NOT_KEYWORD; } case 172: break; case 72: { return PyTokenTypes.DEL_KEYWORD; } case 173: break; case 73: { yybegin(IN_DOCSTRING_OWNER); return PyTokenTypes.DEF_KEYWORD; } case 174: break; case 74: { return PyTokenTypes.TRY_KEYWORD; } case 175: break; case 75: { return PyTokenTypes.FOR_KEYWORD; } case 176: break; case 76: { return PyTokenTypes.EXPEQ; } case 177: break; case 77: { return PyTokenTypes.FLOORDIVEQ; } case 178: break; case 78: { return PyTokenTypes.GTGTEQ; } case 179: break; case 79: { return PyTokenTypes.LTLTEQ; } case 180: break; case 80: { if (zzInput == YYEOF) return PyTokenTypes.DOCSTRING; else yybegin(YYINITIAL); return PyTokenTypes.TRIPLE_QUOTED_STRING; } case 181: break; case 81: { yypushback(getSpaceLength(yytext())); return PyTokenTypes.DOCSTRING; } case 182: break; case 82: { return PyTokenTypes.TRIPLE_QUOTED_STRING; } case 183: break; case 83: { yypushback(getSpaceLength(yytext())); if (zzCurrentPos != 0) return PyTokenTypes.TRIPLE_QUOTED_STRING; yybegin(PENDING_DOCSTRING); return PyTokenTypes.DOCSTRING; } case 184: break; case 84: { return PyTokenTypes.ELSE_KEYWORD; } case 185: break; case 85: { return PyTokenTypes.ELIF_KEYWORD; } case 186: break; case 86: { return PyTokenTypes.FROM_KEYWORD; } case 187: break; case 87: { return PyTokenTypes.PASS_KEYWORD; } case 188: break; case 88: { return PyTokenTypes.RAISE_KEYWORD; } case 189: break; case 89: { return PyTokenTypes.BREAK_KEYWORD; } case 190: break; case 90: { yybegin(IN_DOCSTRING_OWNER); return PyTokenTypes.CLASS_KEYWORD; } case 191: break; case 91: { return PyTokenTypes.YIELD_KEYWORD; } case 192: break; case 92: { return PyTokenTypes.WHILE_KEYWORD; } case 193: break; case 93: { return PyTokenTypes.ASSERT_KEYWORD; } case 194: break; case 94: { return PyTokenTypes.EXCEPT_KEYWORD; } case 195: break; case 95: { return PyTokenTypes.RETURN_KEYWORD; } case 196: break; case 96: { return PyTokenTypes.LAMBDA_KEYWORD; } case 197: break; case 97: { return PyTokenTypes.IMPORT_KEYWORD; } case 198: break; case 98: { return PyTokenTypes.GLOBAL_KEYWORD; } case 199: break; case 99: { yypushback(getSpaceLength(yytext())); if (zzCurrentPos != 0) return PyTokenTypes.TRIPLE_QUOTED_STRING; return PyTokenTypes.DOCSTRING; } case 200: break; case 100: { return PyTokenTypes.FINALLY_KEYWORD; } case 201: break; case 101: { return PyTokenTypes.CONTINUE_KEYWORD; } case 202: break; default: zzScanError(ZZ_NO_MATCH); } } } } }