support Unicode characters in identifiers (http://www.python.org/dev/peps/pep-3131/)

This commit is contained in:
Dmitry Jemerov
2010-01-26 20:54:47 +03:00
parent fe94cda134
commit db709aa3e8
2 changed files with 423 additions and 268 deletions
@@ -30,7 +30,9 @@ LONGINTEGER = {INTEGER}[Ll]
END_OF_LINE_COMMENT="#"[^\r\n]*
IDENTIFIER = [a-zA-Z_][a-zA-Z0-9_]*
IDENT_START = [a-zA-Z_]|[:unicode_uppercase_letter:]|[:unicode_lowercase_letter:]|[:unicode_titlecase_letter:]|[:unicode_modifier_letter:]|[:unicode_other_letter:]|[:unicode_letter_number:]
IDENT_CONTINUE = [a-zA-Z0-9_]|[:unicode_uppercase_letter:]|[:unicode_lowercase_letter:]|[:unicode_titlecase_letter:]|[:unicode_modifier_letter:]|[:unicode_other_letter:]|[:unicode_letter_number:]|[:unicode_non_spacing_mark:]|[:unicode_combining_spacing_mark:]|[:unicode_decimal_digit_number:]|[:unicode_connector_punctuation:]
IDENTIFIER = {IDENT_START}{IDENT_CONTINUE}**
FLOATNUMBER=({POINTFLOAT})|({EXPONENTFLOAT})
POINTFLOAT=(({INTPART})?{FRACTION})|({INTPART}\.)
@@ -1,4 +1,4 @@
/* The following code was generated by JFlex 1.4.3 on 25.01.10 20:44 */
/* The following code was generated by JFlex 1.4.3 on 26.01.10 16:53 */
/* It's an automatically generated code. Do not modify it. */
package com.jetbrains.python.lexer;
@@ -11,7 +11,7 @@ import com.jetbrains.python.PyTokenTypes;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 25.01.10 20:44 from the specification file
* on 26.01.10 16:53 from the specification file
* <tt>C:/JetBrains/IDEA/tools/lexer/../../python/src/com/jetbrains/python/lexer/Python.flex</tt>
*/
class _PythonLexer implements FlexLexer {
@@ -35,15 +35,173 @@ class _PythonLexer implements FlexLexer {
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
"\11\0\1\30\1\13\1\0\1\31\1\13\22\0\1\27\1\71\1\25"+
"\1\12\1\0\1\63\1\64\1\23\1\73\1\74\1\61\1\57\1\102"+
"\1\17\1\15\1\62\1\1\1\5\6\3\2\2\1\103\1\105\1\70"+
"\1\60\1\67\1\0\1\101\1\4\1\10\2\4\1\16\1\4\3\14"+
"\1\20\1\14\1\11\2\14\1\7\2\14\1\22\2\14\1\21\2\14"+
"\1\6\2\14\1\75\1\24\1\76\1\66\1\14\1\104\1\32\1\41"+
"\1\43\1\34\1\36\1\47\1\54\1\56\1\26\1\20\1\42\1\44"+
"\1\53\1\33\1\45\1\51\1\14\1\37\1\35\1\40\1\46\1\14"+
"\1\55\1\50\1\52\1\14\1\77\1\65\1\100\1\72\uff81\0";
"\11\0\1\41\1\13\1\0\1\42\1\13\22\0\1\40\1\72\1\36"+
"\1\12\1\0\1\64\1\65\1\34\1\74\1\75\1\62\1\60\1\103"+
"\1\26\1\23\1\63\1\1\1\5\6\3\2\2\1\104\1\106\1\71"+
"\1\61\1\70\1\0\1\102\1\15\1\20\2\15\1\25\1\15\3\14"+
"\1\27\1\14\1\21\2\14\1\17\2\14\1\32\2\14\1\30\2\14"+
"\1\16\2\14\1\76\1\35\1\77\1\67\1\14\1\105\1\43\1\10"+
"\1\51\1\45\1\24\1\4\1\55\1\57\1\37\1\27\1\50\1\11"+
"\1\54\1\44\1\7\1\52\1\14\1\33\1\46\1\47\1\31\1\14"+
"\1\56\1\6\1\53\1\14\1\100\1\66\1\101\1\73\53\0\1\14"+
"\12\0\1\14\4\0\1\14\5\0\27\14\1\0\7\14\30\14\1\0"+
"\10\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\2\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\2\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\2\14"+
"\1\14\1\14\1\14\1\14\3\14\2\14\1\14\1\14\1\14\2\14"+
"\1\14\3\14\2\14\4\14\1\14\2\14\1\14\3\14\3\14\2\14"+
"\1\14\2\14\1\14\1\14\1\14\1\14\1\14\2\14\1\14\1\14"+
"\2\14\1\14\1\14\2\14\1\14\3\14\1\14\1\14\1\14\2\14"+
"\2\14\1\14\1\14\3\14\4\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\2\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\2\14\1\14\1\14"+
"\1\14\1\14\1\14\3\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\4\14\31\0\140\14\22\14\4\0\14\14\16\0\5\14"+
"\11\0\1\14\21\0\130\22\5\0\23\22\12\0\1\14\13\0\1\14"+
"\1\0\3\14\1\0\1\14\1\0\2\14\1\14\21\14\1\0\11\14"+
"\43\14\1\0\2\14\3\14\3\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\5\14\1\14"+
"\1\14\1\0\1\14\1\14\2\14\1\14\4\0\60\14\60\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\0\4\22\3\0\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\2\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\0\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\2\0\1\14\1\14\6\0\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\41\0\46\14\2\0\1\14\7\0\47\14\11\0"+
"\21\22\1\0\27\22\1\0\3\22\1\0\1\22\1\0\2\22\1\0"+
"\1\22\13\0\33\14\5\0\3\14\35\0\6\22\13\0\32\14\5\0"+
"\1\14\12\14\16\22\7\0\12\22\4\0\2\14\1\22\143\14\1\0"+
"\1\14\7\22\2\0\6\22\2\14\2\22\1\0\4\22\2\14\12\22"+
"\3\14\2\0\1\14\20\0\1\14\1\22\36\14\33\22\2\0\3\14"+
"\60\0\46\14\13\22\1\14\u014f\0\2\22\1\22\66\14\2\0\1\22"+
"\1\14\3\22\10\22\4\22\1\22\2\0\1\14\4\22\3\0\12\14"+
"\2\22\2\0\12\22\21\0\1\22\2\22\1\0\10\14\2\0\2\14"+
"\2\0\26\14\1\0\7\14\1\0\1\14\3\0\4\14\2\0\1\22"+
"\1\14\3\22\4\22\2\0\2\22\2\0\2\22\1\22\11\0\1\22"+
"\4\0\2\14\1\0\3\14\2\22\2\0\12\22\2\14\17\0\2\22"+
"\1\22\1\0\6\14\4\0\2\14\2\0\26\14\1\0\7\14\1\0"+
"\2\14\1\0\2\14\1\0\2\14\2\0\1\22\1\0\3\22\2\22"+
"\4\0\2\22\2\0\3\22\13\0\4\14\1\0\1\14\7\0\12\22"+
"\2\22\3\14\14\0\2\22\1\22\1\0\11\14\1\0\3\14\1\0"+
"\26\14\1\0\7\14\1\0\2\14\1\0\5\14\2\0\1\22\1\14"+
"\3\22\5\22\1\0\2\22\1\22\1\0\2\22\1\22\2\0\1\14"+
"\17\0\2\14\2\22\2\0\12\22\21\0\1\22\2\22\1\0\10\14"+
"\2\0\2\14\2\0\26\14\1\0\7\14\1\0\2\14\1\0\5\14"+
"\2\0\1\22\1\14\1\22\1\22\1\22\3\22\3\0\2\22\2\0"+
"\2\22\1\22\10\0\1\22\1\22\4\0\2\14\1\0\3\14\4\0"+
"\12\22\1\0\1\14\20\0\1\22\1\14\1\0\6\14\3\0\3\14"+
"\1\0\4\14\3\0\2\14\1\0\1\14\1\0\2\14\3\0\2\14"+
"\3\0\3\14\3\0\10\14\1\0\3\14\4\0\2\22\1\22\2\22"+
"\3\0\3\22\1\0\3\22\1\22\11\0\1\22\17\0\11\22\21\0"+
"\3\22\1\0\10\14\1\0\3\14\1\0\27\14\1\0\12\14\1\0"+
"\5\14\4\0\3\22\4\22\1\0\3\22\1\0\4\22\7\0\2\22"+
"\11\0\2\14\4\0\12\22\22\0\2\22\1\0\10\14\1\0\3\14"+
"\1\0\27\14\1\0\12\14\1\0\5\14\2\0\1\22\1\14\1\22"+
"\1\22\5\22\1\0\1\22\2\22\1\0\2\22\2\22\7\0\2\22"+
"\7\0\1\14\1\0\2\14\4\0\12\22\22\0\2\22\1\0\10\14"+
"\1\0\3\14\1\0\27\14\1\0\20\14\4\0\3\22\3\22\2\0"+
"\3\22\1\0\3\22\1\22\11\0\1\22\10\0\2\14\4\0\12\22"+
"\22\0\2\22\1\0\22\14\3\0\30\14\1\0\11\14\1\0\1\14"+
"\2\0\7\14\3\0\1\22\4\0\3\22\3\22\1\0\1\22\1\0"+
"\10\22\22\0\2\22\15\0\60\14\1\22\2\14\7\22\5\0\6\14"+
"\1\14\10\22\1\0\12\22\47\0\2\14\1\0\1\14\2\0\2\14"+
"\1\0\1\14\2\0\1\14\6\0\4\14\1\0\7\14\1\0\3\14"+
"\1\0\1\14\1\0\1\14\2\0\2\14\1\0\4\14\1\22\2\14"+
"\6\22\1\0\2\22\1\14\2\0\5\14\1\0\1\14\1\0\6\22"+
"\2\0\12\22\2\0\2\14\42\0\1\14\27\0\2\22\6\0\12\22"+
"\13\0\1\22\1\0\1\22\1\0\1\22\4\0\2\22\10\14\1\0"+
"\42\14\6\0\16\22\1\22\5\22\1\0\2\22\4\14\4\0\10\22"+
"\1\0\44\22\11\0\1\22\71\0\42\14\1\0\5\14\1\0\2\14"+
"\1\0\1\22\4\22\1\22\1\22\3\0\2\22\1\22\1\22\6\0"+
"\12\22\6\0\6\14\2\22\2\22\106\0\46\14\12\0\51\14\7\0"+
"\132\14\5\0\104\14\5\0\122\14\6\0\7\14\1\0\77\14\1\0"+
"\1\14\1\0\4\14\2\0\7\14\1\0\1\14\1\0\4\14\2\0"+
"\47\14\1\0\1\14\1\0\4\14\2\0\37\14\1\0\1\14\1\0"+
"\4\14\2\0\7\14\1\0\1\14\1\0\4\14\2\0\7\14\1\0"+
"\7\14\1\0\27\14\1\0\37\14\1\0\1\14\1\0\4\14\2\0"+
"\7\14\1\0\47\14\1\0\23\14\16\0\11\22\56\0\125\14\14\0"+
"\u026c\14\2\0\10\14\12\0\32\14\5\0\113\14\3\0\3\14\17\0"+
"\15\14\1\0\4\14\3\22\13\0\22\14\3\22\13\0\22\14\2\22"+
"\14\0\15\14\1\0\3\14\1\0\2\22\14\0\64\14\2\0\1\22"+
"\7\22\10\22\1\22\2\22\13\22\3\0\1\14\4\0\1\14\1\22"+
"\2\0\12\22\41\0\3\22\2\0\12\22\6\0\43\14\1\14\64\14"+
"\10\0\51\14\1\22\126\0\35\14\3\0\3\22\4\22\2\22\3\22"+
"\4\0\2\22\1\22\6\22\3\22\12\0\12\22\36\14\2\0\5\14"+
"\u038b\0\54\14\66\14\12\14\224\0\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\7\14\4\0\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14\1\14"+
"\1\14\1\14\1\14\1\14\1\14\1\14\6\0\10\14\10\14\6\14"+
"\2\0\6\14\2\0\10\14\10\14\10\14\10\14\6\14\2\0\6\14"+
"\2\0\10\14\1\0\1\14\1\0\1\14\1\0\1\14\1\0\1\14"+
"\10\14\10\14\16\14\2\0\10\14\10\14\10\14\10\14\10\14\10\14"+
"\5\14\1\0\2\14\4\14\1\14\1\0\1\14\3\0\3\14\1\0"+
"\2\14\4\14\1\14\3\0\4\14\2\0\2\14\4\14\4\0\10\14"+
"\5\14\5\0\3\14\1\0\2\14\4\14\1\14\102\0\2\22\23\0"+
"\1\22\34\0\1\14\15\0\1\14\120\0\15\22\4\0\1\22\3\0"+
"\6\22\27\0\1\14\4\0\1\14\2\0\1\14\3\14\2\14\3\14"+
"\1\14\1\0\1\14\3\0\5\14\6\0\1\14\1\0\1\14\1\0"+
"\1\14\1\0\4\14\1\0\1\14\2\14\1\0\1\14\1\14\4\14"+
"\1\14\3\0\1\14\2\14\5\0\1\14\4\14\26\0\44\14\u0e81\0"+
"\1\14\1\14\1\14\31\0\11\14\6\22\1\0\5\14\2\0\3\14"+
"\1\14\1\14\4\0\126\14\2\0\2\22\2\0\2\14\1\14\1\0"+
"\132\14\1\22\3\14\1\14\5\0\50\14\4\0\136\14\21\0\30\14"+
"\70\0\20\14\u0200\0\u19b6\14\112\0\u51a6\14\132\0\u048d\14\u0773\0\u2ba4\14"+
"\u215c\0\u012e\14\2\0\73\14\225\0\7\14\14\0\5\14\5\0\1\14"+
"\1\22\12\14\1\0\15\14\1\0\5\14\1\0\1\14\1\0\2\14"+
"\1\0\2\14\1\0\154\14\41\0\u016b\14\22\0\100\14\2\0\66\14"+
"\50\0\14\14\4\0\20\22\20\0\4\22\17\0\2\22\30\0\3\22"+
"\40\0\5\14\1\0\207\14\23\0\12\22\7\0\32\14\4\0\1\22"+
"\1\0\32\14\12\0\1\22\12\14\1\14\55\14\2\14\37\14\3\0"+
"\6\14\2\0\6\14\2\0\6\14\2\0\3\14\43\0";
/**
* Translates characters to character classes
@@ -56,21 +214,22 @@ class _PythonLexer implements FlexLexer {
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
"\1\0\1\1\2\2\2\3\1\4\1\5\1\6\1\7"+
"\1\3\1\10\1\11\1\10\1\3\1\12\1\13\1\14"+
"\17\3\1\15\1\16\1\17\1\20\1\21\1\22\1\23"+
"\1\24\1\25\1\26\1\1\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\2\4\0\1\2\1\43\1\0\1\44\1\45\6\10"+
"\1\46\1\47\1\50\16\3\1\51\7\3\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\3\2\1\43"+
"\1\0\1\10\2\0\1\3\1\72\1\3\1\73\1\74"+
"\1\75\5\3\1\76\6\3\1\77\4\3\1\100\1\101"+
"\1\102\1\103\6\0\2\3\1\104\1\105\10\3\1\106"+
"\1\107\3\3\4\0\3\3\1\110\1\3\1\111\1\112"+
"\3\3\1\113\1\3\1\114\1\115\1\116\1\117\1\120"+
"\1\3\1\121\1\3\1\122\1\3\1\123\1\124";
"\1\0\1\1\2\2\5\3\1\4\1\5\1\3\1\6"+
"\1\3\1\7\2\3\1\10\1\11\1\10\1\3\1\12"+
"\1\13\1\14\11\3\1\15\1\16\1\17\1\20\1\21"+
"\1\22\1\23\1\24\1\25\1\26\1\1\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\2\4\0\1\2\1\43\1\0\1\44"+
"\3\3\1\45\4\3\1\46\2\3\6\10\1\47\1\50"+
"\1\51\14\3\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\3\2\1\43\1\0\1\72\11\3\1\10"+
"\2\0\1\3\1\73\1\3\1\74\1\75\1\76\1\77"+
"\6\3\1\100\1\101\1\102\1\103\1\104\4\3\1\105"+
"\1\106\2\3\6\0\4\3\1\107\4\3\1\110\3\3"+
"\1\111\4\0\3\3\1\112\1\113\1\3\1\114\1\3"+
"\1\115\1\116\1\117\1\120\1\121\1\3\1\122\1\123"+
"\1\3\1\124";
private static int [] zzUnpackAction() {
int [] result = new int[199];
@@ -98,31 +257,31 @@ class _PythonLexer implements FlexLexer {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\106\0\214\0\322\0\u0118\0\u015e\0\u01a4\0\u01ea"+
"\0\u0230\0\u0276\0\u02bc\0\u0302\0\106\0\u0348\0\u038e\0\106"+
"\0\106\0\106\0\u03d4\0\u041a\0\u0460\0\u04a6\0\u04ec\0\u0532"+
"\0\u0578\0\u05be\0\u0604\0\u064a\0\u0690\0\u06d6\0\u071c\0\u0762"+
"\0\u07a8\0\u07ee\0\u0834\0\u087a\0\u08c0\0\u0906\0\u094c\0\u0992"+
"\0\u09d8\0\u0a1e\0\u0a64\0\u0aaa\0\106\0\106\0\106\0\106"+
"\0\106\0\106\0\106\0\106\0\106\0\106\0\106\0\106"+
"\0\u0af0\0\u0b36\0\u0b7c\0\u0bc2\0\u0c08\0\106\0\u0c4e\0\u0c94"+
"\0\106\0\106\0\u0cda\0\u0d20\0\u0d66\0\u0dac\0\u0df2\0\u0e38"+
"\0\u0118\0\u0118\0\u0118\0\u0e7e\0\u0ec4\0\u0f0a\0\u0f50\0\u0f96"+
"\0\u0fdc\0\u1022\0\u1068\0\u10ae\0\u10f4\0\u113a\0\u1180\0\u11c6"+
"\0\u120c\0\u0118\0\u1252\0\u1298\0\u12de\0\u1324\0\u136a\0\u13b0"+
"\0\u13f6\0\106\0\106\0\106\0\u143c\0\106\0\u1482\0\106"+
"\0\106\0\106\0\106\0\106\0\u14c8\0\106\0\106\0\u150e"+
"\0\106\0\u1554\0\u159a\0\u15e0\0\u1626\0\u166c\0\106\0\u16b2"+
"\0\u16f8\0\u173e\0\u0118\0\u1784\0\u0118\0\u0118\0\u0118\0\u17ca"+
"\0\u1810\0\u1856\0\u189c\0\u18e2\0\u0118\0\u1928\0\u196e\0\u19b4"+
"\0\u19fa\0\u1a40\0\u1a86\0\u0118\0\u1acc\0\u1b12\0\u1b58\0\u1b9e"+
"\0\106\0\106\0\106\0\106\0\u1be4\0\u1c2a\0\u1c70\0\u1cb6"+
"\0\u1cfc\0\u1d42\0\u1d88\0\u1dce\0\u0118\0\u0118\0\u1e14\0\u1e5a"+
"\0\u1ea0\0\u1ee6\0\u1f2c\0\u1f72\0\u1fb8\0\u1ffe\0\u0118\0\u0118"+
"\0\u2044\0\u208a\0\u20d0\0\u2116\0\u215c\0\u21a2\0\u21e8\0\u222e"+
"\0\u2274\0\u22ba\0\u0118\0\u2300\0\u0118\0\u0118\0\u2346\0\u238c"+
"\0\u23d2\0\u0118\0\u2418\0\u0118\0\u0118\0\u0118\0\u0118\0\u0118"+
"\0\u245e\0\u0118\0\u24a4\0\u0118\0\u24ea\0\u0118\0\u0118";
"\0\0\0\107\0\216\0\325\0\u011c\0\u0163\0\u01aa\0\u01f1"+
"\0\u0238\0\u027f\0\u02c6\0\u030d\0\u0354\0\u039b\0\u03e2\0\u0429"+
"\0\u0470\0\u04b7\0\107\0\u04fe\0\u0545\0\107\0\107\0\107"+
"\0\u058c\0\u05d3\0\u061a\0\u0661\0\u06a8\0\u06ef\0\u0736\0\u077d"+
"\0\u07c4\0\u080b\0\u0852\0\u0899\0\u08e0\0\u0927\0\u096e\0\u09b5"+
"\0\u09fc\0\u0a43\0\u0a8a\0\u0ad1\0\107\0\107\0\107\0\107"+
"\0\107\0\107\0\107\0\107\0\107\0\107\0\107\0\107"+
"\0\u0b18\0\u0b5f\0\u0ba6\0\u0bed\0\u0c34\0\107\0\u0c7b\0\u0cc2"+
"\0\107\0\u0d09\0\u0d50\0\u0d97\0\u0163\0\u0dde\0\u0e25\0\u0e6c"+
"\0\u0eb3\0\107\0\u0efa\0\u0f41\0\u0f88\0\u0fcf\0\u1016\0\u105d"+
"\0\u10a4\0\u10eb\0\u0163\0\u0163\0\u0163\0\u1132\0\u1179\0\u11c0"+
"\0\u1207\0\u124e\0\u1295\0\u12dc\0\u1323\0\u136a\0\u13b1\0\u13f8"+
"\0\u143f\0\107\0\107\0\107\0\u1486\0\107\0\u14cd\0\107"+
"\0\107\0\107\0\107\0\107\0\u1514\0\107\0\107\0\u155b"+
"\0\107\0\u15a2\0\u15e9\0\u1630\0\u1677\0\u16be\0\u0163\0\u1705"+
"\0\u174c\0\u1793\0\u17da\0\u1821\0\u1868\0\u18af\0\u18f6\0\u193d"+
"\0\107\0\u1984\0\u19cb\0\u1a12\0\u0163\0\u1a59\0\u0163\0\u0163"+
"\0\u0163\0\u0163\0\u1aa0\0\u1ae7\0\u1b2e\0\u1b75\0\u1bbc\0\u1c03"+
"\0\107\0\107\0\107\0\107\0\u0163\0\u1c4a\0\u1c91\0\u1cd8"+
"\0\u1d1f\0\u0163\0\u0163\0\u1d66\0\u1dad\0\u1df4\0\u1e3b\0\u1e82"+
"\0\u1ec9\0\u1f10\0\u1f57\0\u1f9e\0\u1fe5\0\u202c\0\u2073\0\u0163"+
"\0\u20ba\0\u2101\0\u2148\0\u218f\0\u0163\0\u21d6\0\u221d\0\u2264"+
"\0\u0163\0\u22ab\0\u22f2\0\u2339\0\u2380\0\u23c7\0\u240e\0\u2455"+
"\0\u0163\0\u0163\0\u249c\0\u0163\0\u24e3\0\u0163\0\u0163\0\u0163"+
"\0\u0163\0\u0163\0\u252a\0\u0163\0\u0163\0\u2571\0\u0163";
private static int [] zzUnpackRowMap() {
int [] result = new int[199];
@@ -148,198 +307,192 @@ class _PythonLexer implements FlexLexer {
private static final int [] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 =
"\1\2\1\3\2\4\1\5\1\4\2\5\1\6\1\5"+
"\1\7\1\10\1\5\1\11\1\5\1\12\1\5\1\6"+
"\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22"+
"\1\23\1\24\1\25\1\5\1\26\1\27\1\30\1\31"+
"\1\5\1\32\1\33\1\34\1\6\1\35\1\5\1\36"+
"\1\37\1\5\1\40\1\41\1\5\1\42\1\43\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\107\0\1\71\1\72\1\71"+
"\1\0\1\71\1\73\1\74\1\75\1\76\3\0\1\77"+
"\1\100\1\0\1\101\15\0\1\100\2\0\1\75\2\0"+
"\1\76\1\74\2\0\1\73\36\0\3\4\1\0\1\4"+
"\3\0\1\76\3\0\1\77\1\100\1\0\1\101\15\0"+
"\1\100\5\0\1\76\42\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\25\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\2\5\1\13"+
"\1\14\1\0\1\16\1\5\3\0\5\5\1\13\17\5"+
"\27\0\13\7\1\0\72\7\13\0\1\10\73\0\3\77"+
"\1\0\1\77\160\0\1\102\26\0\11\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\1\14\1\0\1\16\1\5"+
"\3\0\25\5\27\0\13\103\1\0\7\103\1\104\1\105"+
"\61\103\13\106\1\0\10\106\1\107\1\110\60\106\1\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\1\5\1\111\1\5\1\112\11\5\1\113"+
"\3\5\1\114\3\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\1\5\1\115"+
"\1\5\1\116\21\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\13\5\1\117"+
"\11\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\4\5\1\120\20\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\12\5\1\121\3\5\1\122\6\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\1\14"+
"\1\0\1\16\1\5\3\0\1\123\3\5\1\124\20\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\5\3\0\5\5\1\125\17\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\2\5\1\13\1\14"+
"\1\0\1\16\1\5\3\0\5\5\1\126\17\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\12\5\1\127\1\130\11\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
"\3\0\1\131\24\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\5\5\1\132"+
"\17\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\133\3\0\5\5\1\134\5\5\1\135"+
"\11\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\1\136\24\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\137"+
"\3\0\25\5\30\0\11\5\2\0\1\5\1\0\1\5"+
"\1\0\3\5\3\0\1\5\3\0\12\5\1\140\12\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\5\3\0\24\5\1\141\107\0\1\142\105\0"+
"\1\143\105\0\1\144\1\145\104\0\1\146\1\0\1\147"+
"\103\0\1\150\105\0\1\151\105\0\1\152\105\0\1\153"+
"\105\0\1\154\6\0\1\155\76\0\1\156\6\0\1\157"+
"\1\160\75\0\1\161\26\0\1\71\1\72\1\71\1\0"+
"\1\71\3\0\1\76\3\0\1\77\1\100\1\0\1\101"+
"\15\0\1\100\5\0\1\76\42\0\3\72\1\0\1\72"+
"\7\0\1\77\1\100\1\0\1\101\15\0\1\100\50\0"+
"\5\162\2\0\1\162\5\0\1\162\13\0\1\162\1\0"+
"\1\162\1\0\1\162\2\0\1\162\1\0\1\162\3\0"+
"\1\162\37\0\1\163\1\0\1\163\1\0\1\163\101\0"+
"\1\164\3\0\1\164\101\0\3\77\1\0\1\77\10\0"+
"\1\100\1\0\1\101\15\0\1\100\50\0\3\165\1\0"+
"\1\165\11\0\1\166\37\0\1\166\26\0\13\103\1\0"+
"\7\103\1\167\1\105\61\103\23\0\1\170\62\0\106\103"+
"\13\106\1\0\10\106\1\107\1\167\166\106\25\0\1\171"+
"\61\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\5\3\0\17\5\1\172\5\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
"\3\0\2\5\1\173\22\5\30\0\11\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\3\0\1\5\3\0\3\5"+
"\1\174\21\5\30\0\11\5\2\0\1\5\1\0\1\5"+
"\1\0\3\5\3\0\1\5\3\0\6\5\1\175\16\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\5\3\0\12\5\1\176\2\5\1\177\7\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\200\3\0\3\5\1\201\21\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
"\3\0\11\5\1\202\13\5\30\0\11\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\3\0\1\203\3\0\25\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\5\3\0\6\5\1\204\16\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
"\3\0\20\5\1\205\4\5\30\0\11\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\1\14\1\0\1\16\1\5"+
"\3\0\4\5\1\206\20\5\30\0\11\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\3\0\1\5\3\0\1\207"+
"\24\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\1\5\1\210\23\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\21\5\1\211\3\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\1\5\1\212\23\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\13\5\1\213"+
"\11\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\5\5\1\214\17\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\3\5\1\215\21\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\4\5\1\216\20\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\13\5\1\217"+
"\11\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\220\3\0\25\5\107\0\1\221\105\0"+
"\1\222\105\0\1\223\105\0\1\224\26\0\5\162\2\0"+
"\1\162\1\76\4\0\1\162\13\0\1\162\1\0\1\162"+
"\1\0\1\162\2\0\1\162\1\0\1\162\1\76\2\0"+
"\1\162\37\0\1\163\1\0\1\163\1\0\1\163\3\0"+
"\1\76\32\0\1\76\42\0\1\164\3\0\1\164\3\0"+
"\1\76\32\0\1\76\42\0\3\165\1\0\1\165\12\0"+
"\1\101\66\0\3\165\1\0\1\165\100\0\23\170\1\225"+
"\1\226\1\170\1\227\57\170\24\171\1\230\1\231\1\232"+
"\57\171\1\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\13\5\1\233\11\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\4\5\1\234\20\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\15\5\1\235\7\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\4\5\1\236"+
"\20\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\4\5\1\237\20\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\3\5\1\240\21\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\14\5\1\241\10\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\1\242\24\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\5\3\0\3\5\1\243\21\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
"\3\0\6\5\1\244\16\5\30\0\11\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\3\0\1\5\3\0\7\5"+
"\1\245\15\5\30\0\11\5\2\0\1\5\1\0\1\5"+
"\1\0\3\5\3\0\1\5\3\0\1\246\24\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\21\5\1\247\3\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\3\5\1\250\21\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\12\5\1\251"+
"\12\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\7\5\1\252\15\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\12\5\1\253\12\5\27\0\23\170\1\254"+
"\1\226\1\170\1\255\210\170\1\255\1\226\1\170\1\255"+
"\57\170\132\171\1\230\1\256\1\257\103\171\1\230\2\257"+
"\57\171\1\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\5\5\1\260\17\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\5\5\1\261\17\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\17\5\1\262\5\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\4\5\1\263"+
"\20\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\5\5\1\264\17\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\10\5\1\265\14\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\3\5\1\266\21\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\267\3\0\25\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\2\5\1\270\22\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\12\5\1\271\12\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\2\5\1\272"+
"\22\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\1\273\24\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
"\3\0\4\5\1\274\20\5\27\0\23\170\1\167\1\226"+
"\1\170\1\0\102\170\1\0\1\226\1\170\1\0\57\170"+
"\24\171\1\230\1\167\1\0\103\171\1\230\2\0\57\171"+
"\1\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\5\3\0\6\5\1\275\16\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
"\3\0\6\5\1\276\16\5\30\0\11\5\2\0\1\5"+
"\1\0\1\5\1\0\3\5\3\0\1\5\3\0\6\5"+
"\1\277\16\5\30\0\11\5\2\0\1\5\1\0\1\5"+
"\1\0\3\5\3\0\1\5\3\0\1\5\1\300\23\5"+
"\30\0\11\5\2\0\1\5\1\0\1\5\1\0\3\5"+
"\3\0\1\5\3\0\1\5\1\301\23\5\30\0\11\5"+
"\2\0\1\5\1\0\1\5\1\0\3\5\3\0\1\5"+
"\3\0\1\302\24\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\12\5\1\303"+
"\12\5\30\0\11\5\2\0\1\5\1\0\1\5\1\0"+
"\3\5\3\0\1\5\3\0\12\5\1\304\12\5\30\0"+
"\11\5\2\0\1\5\1\0\1\5\1\0\3\5\3\0"+
"\1\5\3\0\14\5\1\305\10\5\30\0\11\5\2\0"+
"\1\5\1\0\1\5\1\0\3\5\3\0\1\5\3\0"+
"\20\5\1\306\4\5\30\0\11\5\2\0\1\5\1\0"+
"\1\5\1\0\3\5\3\0\1\5\3\0\4\5\1\307"+
"\20\5\27\0";
"\1\2\1\3\2\4\1\5\1\4\1\6\1\7\1\10"+
"\1\11\1\12\1\13\4\6\1\14\1\6\1\2\1\15"+
"\1\16\1\6\1\17\1\6\2\14\1\20\1\21\1\22"+
"\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+
"\1\33\1\6\1\34\1\6\1\35\1\36\1\37\1\6"+
"\1\40\1\41\1\6\1\42\1\43\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\110\0\1\71\1\72\1\71\1\0\1\71"+
"\1\73\1\74\1\75\1\76\4\0\1\73\1\74\1\75"+
"\1\76\1\0\1\77\2\100\1\0\1\101\60\0\3\4"+
"\1\0\1\4\3\0\1\76\7\0\1\76\1\0\1\77"+
"\2\100\1\0\1\101\60\0\6\6\1\102\2\6\2\0"+
"\7\6\1\0\2\6\1\0\4\6\1\103\3\0\1\104"+
"\3\0\15\6\30\0\11\6\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\15\6\30\0\11\6"+
"\2\0\7\6\1\0\2\6\1\0\4\6\1\105\3\0"+
"\1\6\3\0\15\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\3\6\1\20\1\106\1\22\1\0\1\24"+
"\1\6\3\0\15\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\6\3\0\1\107\14\6"+
"\27\0\13\12\1\0\73\12\13\0\1\13\74\0\11\6"+
"\2\0\7\6\1\0\2\6\1\0\3\6\2\20\1\22"+
"\1\0\1\24\1\6\3\0\15\6\30\0\3\77\1\0"+
"\1\77\102\0\5\6\1\110\2\6\1\111\2\0\7\6"+
"\1\0\2\6\1\0\5\6\3\0\1\6\3\0\15\6"+
"\110\0\1\112\26\0\11\6\2\0\7\6\1\0\2\6"+
"\1\0\5\6\1\22\1\0\1\24\1\6\3\0\15\6"+
"\30\0\11\6\2\0\7\6\1\0\1\113\1\6\1\0"+
"\5\6\1\22\1\0\1\24\1\6\3\0\1\114\14\6"+
"\27\0\13\115\1\0\20\115\1\116\1\117\51\115\13\120"+
"\1\0\21\120\1\121\1\122\50\120\1\0\3\6\1\123"+
"\5\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\6\3\0\1\6\1\124\1\6\1\125\5\6\1\126"+
"\3\6\30\0\11\6\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\1\6\1\127\1\6\1\130"+
"\11\6\30\0\6\6\1\131\2\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\6\3\0\15\6\30\0"+
"\11\6\2\0\7\6\1\0\1\132\1\6\1\0\5\6"+
"\3\0\1\6\3\0\15\6\30\0\11\6\2\0\7\6"+
"\1\0\2\6\1\0\4\6\1\133\3\0\1\6\3\0"+
"\15\6\30\0\6\6\1\134\1\6\1\135\2\0\7\6"+
"\1\0\2\6\1\0\5\6\3\0\1\6\3\0\15\6"+
"\30\0\11\6\2\0\7\6\1\0\2\6\1\0\5\6"+
"\3\0\1\6\3\0\1\136\14\6\30\0\11\6\2\0"+
"\7\6\1\0\2\6\1\0\5\6\3\0\1\137\3\0"+
"\15\6\30\0\10\6\1\140\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\15\6\30\0\11\6"+
"\2\0\7\6\1\0\2\6\1\0\5\6\3\0\1\6"+
"\3\0\14\6\1\141\110\0\1\142\106\0\1\143\106\0"+
"\1\144\1\145\105\0\1\146\1\0\1\147\104\0\1\150"+
"\106\0\1\151\106\0\1\152\106\0\1\153\106\0\1\154"+
"\6\0\1\155\77\0\1\156\6\0\1\157\1\160\76\0"+
"\1\161\26\0\1\71\1\72\1\71\1\0\1\71\3\0"+
"\1\76\7\0\1\76\1\0\1\77\2\100\1\0\1\101"+
"\60\0\3\72\1\0\1\72\15\0\1\77\2\100\1\0"+
"\1\101\60\0\5\162\2\0\1\162\4\0\1\162\2\0"+
"\1\162\3\0\2\162\15\0\1\162\1\0\1\162\3\0"+
"\1\162\36\0\1\163\1\0\1\163\1\0\1\163\102\0"+
"\1\164\3\0\1\164\102\0\3\77\1\0\1\77\16\0"+
"\2\100\1\0\1\101\60\0\3\165\1\0\1\165\20\0"+
"\1\166\31\0\1\166\27\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\4\6\1\167\3\0\1\6\3\0\15\6"+
"\30\0\6\6\1\170\2\6\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\15\6\30\0\11\6"+
"\2\0\7\6\1\0\2\6\1\0\5\6\3\0\1\6"+
"\3\0\1\6\1\171\13\6\30\0\11\6\2\0\7\6"+
"\1\0\1\172\1\6\1\0\5\6\1\22\1\0\1\24"+
"\1\6\3\0\15\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\6\3\0\11\6\1\173"+
"\3\6\30\0\11\6\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\6\6\1\174\6\6\30\0"+
"\11\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\175\3\0\3\6\1\176\11\6\30\0\11\6\2\0"+
"\7\6\1\0\2\6\1\0\5\6\3\0\1\6\3\0"+
"\4\6\1\177\10\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\200\3\0\15\6\27\0"+
"\13\115\1\0\20\115\1\201\1\117\51\115\34\0\1\202"+
"\52\0\107\115\13\120\1\0\21\120\1\121\1\201\157\120"+
"\36\0\1\203\51\0\11\6\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\7\6\1\204\5\6"+
"\30\0\11\6\2\0\7\6\1\0\2\6\1\0\5\6"+
"\3\0\1\6\3\0\2\6\1\205\12\6\30\0\11\6"+
"\2\0\7\6\1\0\2\6\1\0\5\6\3\0\1\6"+
"\3\0\3\6\1\206\11\6\30\0\11\6\2\0\7\6"+
"\1\0\2\6\1\0\5\6\3\0\1\6\3\0\4\6"+
"\1\207\10\6\30\0\3\6\1\210\4\6\1\211\2\0"+
"\7\6\1\0\2\6\1\0\5\6\3\0\1\6\3\0"+
"\15\6\30\0\11\6\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\10\6\1\212\4\6\30\0"+
"\11\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\6\3\0\1\6\1\213\13\6\30\0\11\6\2\0"+
"\7\6\1\0\2\6\1\0\5\6\3\0\1\6\3\0"+
"\1\214\14\6\30\0\11\6\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\3\6\1\215\11\6"+
"\30\0\11\6\2\0\7\6\1\0\1\216\1\6\1\0"+
"\5\6\3\0\1\6\3\0\15\6\30\0\6\6\1\217"+
"\2\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\6\3\0\15\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\220\3\0\15\6\110\0"+
"\1\221\106\0\1\222\106\0\1\223\106\0\1\224\26\0"+
"\5\162\2\0\1\162\1\76\3\0\1\162\2\0\1\162"+
"\1\76\2\0\2\162\15\0\1\162\1\0\1\162\3\0"+
"\1\162\36\0\1\163\1\0\1\163\1\0\1\163\3\0"+
"\1\76\7\0\1\76\66\0\1\164\3\0\1\164\3\0"+
"\1\76\7\0\1\76\66\0\3\165\1\0\1\165\21\0"+
"\1\101\60\0\3\165\1\0\1\165\102\0\11\6\2\0"+
"\7\6\1\0\2\6\1\0\5\6\3\0\1\6\3\0"+
"\11\6\1\225\3\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\6\3\0\1\226\14\6"+
"\30\0\11\6\2\0\7\6\1\0\2\6\1\0\5\6"+
"\3\0\1\6\3\0\1\227\14\6\30\0\7\6\1\230"+
"\1\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\6\3\0\15\6\30\0\11\6\2\0\7\6\1\0"+
"\1\231\1\6\1\0\5\6\3\0\1\6\3\0\15\6"+
"\30\0\3\6\1\232\5\6\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\15\6\30\0\11\6"+
"\2\0\7\6\1\0\1\233\1\6\1\0\5\6\3\0"+
"\1\6\3\0\15\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\2\6\1\234\2\6\3\0\1\6\3\0"+
"\15\6\30\0\11\6\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\3\6\1\235\11\6\27\0"+
"\34\202\1\236\1\237\1\202\1\240\47\202\35\203\1\241"+
"\1\242\1\243\47\203\1\0\6\6\1\244\2\6\2\0"+
"\7\6\1\0\2\6\1\0\5\6\3\0\1\6\3\0"+
"\15\6\30\0\11\6\2\0\7\6\1\0\1\245\1\6"+
"\1\0\5\6\3\0\1\6\3\0\15\6\30\0\11\6"+
"\2\0\7\6\1\0\2\6\1\0\5\6\3\0\1\6"+
"\3\0\4\6\1\246\10\6\30\0\11\6\2\0\7\6"+
"\1\0\2\6\1\0\5\6\3\0\1\6\3\0\3\6"+
"\1\247\11\6\30\0\11\6\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\3\6\1\250\11\6"+
"\30\0\10\6\1\251\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\15\6\30\0\7\6\1\252"+
"\1\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\6\3\0\15\6\30\0\10\6\1\253\2\0\7\6"+
"\1\0\2\6\1\0\5\6\3\0\1\6\3\0\15\6"+
"\30\0\10\6\1\254\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\15\6\30\0\11\6\2\0"+
"\7\6\1\0\2\6\1\0\5\6\3\0\1\6\3\0"+
"\5\6\1\255\7\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\6\3\0\2\6\1\256"+
"\12\6\30\0\11\6\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\7\6\1\257\5\6\30\0"+
"\11\6\2\0\7\6\1\0\2\6\1\0\4\6\1\260"+
"\3\0\1\6\3\0\15\6\30\0\11\6\2\0\7\6"+
"\1\0\1\261\1\6\1\0\5\6\3\0\1\6\3\0"+
"\15\6\27\0\34\202\1\262\1\237\1\202\1\263\212\202"+
"\1\263\1\237\1\202\1\263\47\202\144\203\1\241\1\264"+
"\1\265\104\203\1\241\2\265\47\203\1\0\11\6\2\0"+
"\7\6\1\0\2\6\1\0\4\6\1\266\3\0\1\6"+
"\3\0\15\6\30\0\11\6\2\0\7\6\1\0\2\6"+
"\1\0\4\6\1\267\3\0\1\6\3\0\15\6\30\0"+
"\11\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\270\3\0\15\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\6\3\0\3\6\1\271"+
"\11\6\30\0\11\6\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\2\6\1\272\12\6\30\0"+
"\11\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\6\3\0\1\273\14\6\30\0\11\6\2\0\7\6"+
"\1\0\1\274\1\6\1\0\5\6\3\0\1\6\3\0"+
"\15\6\30\0\10\6\1\275\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\15\6\30\0\11\6"+
"\2\0\7\6\1\0\2\6\1\0\5\6\3\0\1\6"+
"\3\0\1\276\14\6\30\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\6\3\0\4\6\1\277"+
"\10\6\30\0\11\6\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\1\6\1\300\13\6\27\0"+
"\34\202\1\201\1\237\1\202\1\0\103\202\1\0\1\237"+
"\1\202\1\0\47\202\35\203\1\241\1\201\1\0\104\203"+
"\1\241\2\0\47\203\1\0\11\6\2\0\7\6\1\0"+
"\2\6\1\0\5\6\3\0\1\6\3\0\4\6\1\301"+
"\10\6\30\0\11\6\2\0\7\6\1\0\2\6\1\0"+
"\5\6\3\0\1\6\3\0\4\6\1\302\10\6\30\0"+
"\11\6\2\0\7\6\1\0\2\6\1\0\5\6\3\0"+
"\1\6\3\0\1\6\1\303\13\6\30\0\10\6\1\304"+
"\2\0\7\6\1\0\2\6\1\0\5\6\3\0\1\6"+
"\3\0\15\6\30\0\11\6\2\0\7\6\1\0\2\6"+
"\1\0\5\6\3\0\1\6\3\0\10\6\1\305\4\6"+
"\30\0\11\6\2\0\7\6\1\0\2\6\1\0\2\6"+
"\1\306\2\6\3\0\1\6\3\0\15\6\30\0\11\6"+
"\2\0\7\6\1\0\1\307\1\6\1\0\5\6\3\0"+
"\1\6\3\0\15\6\27\0";
private static int [] zzUnpackTrans() {
int [] result = new int[9520];
int [] result = new int[9656];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -380,11 +533,11 @@ class _PythonLexer implements FlexLexer {
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\1\0\1\11\12\1\1\11\2\1\3\11\32\1\14\11"+
"\1\1\4\0\1\11\1\1\1\0\2\11\37\1\3\11"+
"\1\1\1\11\1\1\5\11\1\1\2\11\1\1\1\11"+
"\4\1\1\0\1\11\2\0\27\1\4\11\6\0\21\1"+
"\4\0\30\1";
"\1\0\1\11\20\1\1\11\2\1\3\11\24\1\14\11"+
"\1\1\4\0\1\11\1\1\1\0\1\11\10\1\1\11"+
"\27\1\3\11\1\1\1\11\1\1\5\11\1\1\2\11"+
"\1\1\1\11\4\1\1\0\12\1\1\11\2\0\15\1"+
"\4\11\11\1\6\0\16\1\4\0\22\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[199];
@@ -470,7 +623,7 @@ class _PythonLexer implements FlexLexer {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 178) {
while (i < 3336) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
@@ -740,7 +893,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.MINUS;
}
case 93: break;
case 73:
case 72:
{ return PyTokenTypes.BREAK_KEYWORD;
}
case 94: break;
@@ -764,11 +917,11 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.LT;
}
case 99: break;
case 38:
case 40:
{ return PyTokenTypes.IN_KEYWORD;
}
case 100: break;
case 72:
case 73:
{ return PyTokenTypes.RAISE_KEYWORD;
}
case 101: break;
@@ -784,7 +937,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.SPACE;
}
case 104: break;
case 79:
case 78:
{ return PyTokenTypes.EXCEPT_KEYWORD;
}
case 105: break;
@@ -820,7 +973,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.OR;
}
case 113: break;
case 69:
case 70:
{ return PyTokenTypes.ELSE_KEYWORD;
}
case 114: break;
@@ -840,7 +993,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.MULT;
}
case 118: break;
case 78:
case 81:
{ return PyTokenTypes.ASSERT_KEYWORD;
}
case 119: break;
@@ -852,7 +1005,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.GLOBAL_KEYWORD;
}
case 121: break;
case 81:
case 77:
{ return PyTokenTypes.LAMBDA_KEYWORD;
}
case 122: break;
@@ -860,7 +1013,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.XOREQ;
}
case 123: break;
case 63:
case 58:
{ return PyTokenTypes.FOR_KEYWORD;
}
case 124: break;
@@ -868,7 +1021,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.AT;
}
case 125: break;
case 59:
case 60:
{ return PyTokenTypes.NOT_KEYWORD;
}
case 126: break;
@@ -876,7 +1029,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.PLUS;
}
case 127: break;
case 37:
case 38:
{ return PyTokenTypes.MINUSEQ;
}
case 128: break;
@@ -912,11 +1065,11 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.LE;
}
case 136: break;
case 58:
case 59:
{ return PyTokenTypes.AND_KEYWORD;
}
case 137: break;
case 41:
case 37:
{ return PyTokenTypes.OR_KEYWORD;
}
case 138: break;
@@ -944,11 +1097,11 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.DIVEQ;
}
case 144: break;
case 80:
case 79:
{ return PyTokenTypes.RETURN_KEYWORD;
}
case 145: break;
case 77:
case 80:
{ return PyTokenTypes.IMPORT_KEYWORD;
}
case 146: break;
@@ -964,7 +1117,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.DEF_KEYWORD;
}
case 149: break;
case 39:
case 41:
{ return PyTokenTypes.IS_KEYWORD;
}
case 150: break;
@@ -984,7 +1137,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.PERCEQ;
}
case 154: break;
case 62:
case 63:
{ return PyTokenTypes.TRY_KEYWORD;
}
case 155: break;
@@ -996,7 +1149,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.EQ;
}
case 157: break;
case 70:
case 68:
{ return PyTokenTypes.FROM_KEYWORD;
}
case 158: break;
@@ -1004,7 +1157,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.EXPEQ;
}
case 159: break;
case 68:
case 69:
{ return PyTokenTypes.ELIF_KEYWORD;
}
case 160: break;
@@ -1016,7 +1169,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.CLASS_KEYWORD;
}
case 162: break;
case 40:
case 39:
{ return PyTokenTypes.IF_KEYWORD;
}
case 163: break;
@@ -1036,7 +1189,7 @@ class _PythonLexer implements FlexLexer {
{ return PyTokenTypes.XOR;
}
case 167: break;
case 60:
case 62:
{ return PyTokenTypes.DEL_KEYWORD;
}
case 168: break;