# Generated from python2.g4 by ANTLR 4.5.3
# encoding: utf-8
from __future__ import print_function
from antlr4 import *
from io import StringIO


def serializedATN():
    with StringIO() as buf:
        buf.write(u"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2")
        buf.write(u"\34\u008c\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6")
        buf.write(u"\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4")
        buf.write(u"\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t")
        buf.write(u"\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27")
        buf.write(u"\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\3\2\3\2\3\3")
        buf.write(u"\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7")
        buf.write(u"\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\f\3\r\3")
        buf.write(u"\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3")
        buf.write(u"\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23")
        buf.write(u"\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\27\7\27s\n")
        buf.write(u"\27\f\27\16\27v\13\27\3\30\3\30\3\31\6\31{\n\31\r\31")
        buf.write(u"\16\31|\3\32\6\32\u0080\n\32\r\32\16\32\u0081\3\32\3")
        buf.write(u"\32\3\33\6\33\u0087\n\33\r\33\16\33\u0088\3\33\3\33\2")
        buf.write(u"\2\34\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27")
        buf.write(u"\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-")
        buf.write(u"\30/\31\61\32\63\33\65\34\3\2\5\3\2\62;\4\2C\\c|\5\2")
        buf.write(u"\f\f\17\17\"\"\u0090\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2")
        buf.write(u"\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2")
        buf.write(u"\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2")
        buf.write(u"\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2")
        buf.write(u"\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3")
        buf.write(u"\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2")
        buf.write(u"\2\63\3\2\2\2\2\65\3\2\2\2\3\67\3\2\2\2\59\3\2\2\2\7")
        buf.write(u"<\3\2\2\2\tA\3\2\2\2\13C\3\2\2\2\rE\3\2\2\2\17G\3\2\2")
        buf.write(u"\2\21I\3\2\2\2\23K\3\2\2\2\25M\3\2\2\2\27O\3\2\2\2\31")
        buf.write(u"R\3\2\2\2\33U\3\2\2\2\35W\3\2\2\2\37Y\3\2\2\2!\\\3\2")
        buf.write(u"\2\2#`\3\2\2\2%g\3\2\2\2\'i\3\2\2\2)k\3\2\2\2+m\3\2\2")
        buf.write(u"\2-o\3\2\2\2/w\3\2\2\2\61z\3\2\2\2\63\177\3\2\2\2\65")
        buf.write(u"\u0086\3\2\2\2\678\7.\2\28\4\3\2\2\29:\7k\2\2:;\7h\2")
        buf.write(u"\2;\6\3\2\2\2<=\7g\2\2=>\7n\2\2>?\7u\2\2?@\7g\2\2@\b")
        buf.write(u"\3\2\2\2AB\7?\2\2B\n\3\2\2\2CD\7]\2\2D\f\3\2\2\2EF\7")
        buf.write(u"_\2\2F\16\3\2\2\2GH\7/\2\2H\20\3\2\2\2IJ\7#\2\2J\22\3")
        buf.write(u"\2\2\2KL\7@\2\2L\24\3\2\2\2MN\7>\2\2N\26\3\2\2\2OP\7")
        buf.write(u"@\2\2PQ\7?\2\2Q\30\3\2\2\2RS\7>\2\2ST\7?\2\2T\32\3\2")
        buf.write(u"\2\2UV\7,\2\2V\34\3\2\2\2WX\7-\2\2X\36\3\2\2\2YZ\7?\2")
        buf.write(u"\2Z[\7?\2\2[ \3\2\2\2\\]\7f\2\2]^\7g\2\2^_\7h\2\2_\"")
        buf.write(u"\3\2\2\2`a\7t\2\2ab\7g\2\2bc\7v\2\2cd\7w\2\2de\7t\2\2")
        buf.write(u"ef\7p\2\2f$\3\2\2\2gh\7\13\2\2h&\3\2\2\2ij\7<\2\2j(\3")
        buf.write(u"\2\2\2kl\7*\2\2l*\3\2\2\2mn\7+\2\2n,\3\2\2\2ot\5/\30")
        buf.write(u"\2ps\5/\30\2qs\t\2\2\2rp\3\2\2\2rq\3\2\2\2sv\3\2\2\2")
        buf.write(u"tr\3\2\2\2tu\3\2\2\2u.\3\2\2\2vt\3\2\2\2wx\t\3\2\2x\60")
        buf.write(u"\3\2\2\2y{\t\2\2\2zy\3\2\2\2{|\3\2\2\2|z\3\2\2\2|}\3")
        buf.write(u"\2\2\2}\62\3\2\2\2~\u0080\t\4\2\2\177~\3\2\2\2\u0080")
        buf.write(u"\u0081\3\2\2\2\u0081\177\3\2\2\2\u0081\u0082\3\2\2\2")
        buf.write(u"\u0082\u0083\3\2\2\2\u0083\u0084\b\32\2\2\u0084\64\3")
        buf.write(u"\2\2\2\u0085\u0087\7%\2\2\u0086\u0085\3\2\2\2\u0087\u0088")
        buf.write(u"\3\2\2\2\u0088\u0086\3\2\2\2\u0088\u0089\3\2\2\2\u0089")
        buf.write(u"\u008a\3\2\2\2\u008a\u008b\b\33\2\2\u008b\66\3\2\2\2")
        buf.write(u"\b\2rt|\u0081\u0088\3\b\2\2")
        return buf.getvalue()


class python2Lexer(Lexer):

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]


    T__0 = 1
    T__1 = 2
    T__2 = 3
    T__3 = 4
    T__4 = 5
    T__5 = 6
    T__6 = 7
    T__7 = 8
    T__8 = 9
    T__9 = 10
    T__10 = 11
    T__11 = 12
    T__12 = 13
    T__13 = 14
    T__14 = 15
    DEF = 16
    RETURN = 17
    INDENT = 18
    COLON = 19
    OPEN_PR = 20
    CLOSE_PR = 21
    ID = 22
    NAME = 23
    NUMBER = 24
    WS = 25
    COMMENT = 26

    modeNames = [ u"DEFAULT_MODE" ]

    literalNames = [ u"<INVALID>",
            u"','", u"'if'", u"'else'", u"'='", u"'['", u"']'", u"'-'", 
            u"'!'", u"'>'", u"'<'", u"'>='", u"'<='", u"'*'", u"'+'", u"'=='", 
            u"'def'", u"'return'", u"'\t'", u"':'", u"'('", u"')'" ]

    symbolicNames = [ u"<INVALID>",
            u"DEF", u"RETURN", u"INDENT", u"COLON", u"OPEN_PR", u"CLOSE_PR", 
            u"ID", u"NAME", u"NUMBER", u"WS", u"COMMENT" ]

    ruleNames = [ u"T__0", u"T__1", u"T__2", u"T__3", u"T__4", u"T__5", 
                  u"T__6", u"T__7", u"T__8", u"T__9", u"T__10", u"T__11", 
                  u"T__12", u"T__13", u"T__14", u"DEF", u"RETURN", u"INDENT", 
                  u"COLON", u"OPEN_PR", u"CLOSE_PR", u"ID", u"NAME", u"NUMBER", 
                  u"WS", u"COMMENT" ]

    grammarFileName = u"python2.g4"

    def __init__(self, input=None):
        super(python2Lexer, self).__init__(input)
        self.checkVersion("4.5.3")
        self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None



795eb09a61d0c7c4d7b2260767ca5fbadfc686c5
<mask token>


class python2Lexer(Lexer):
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>

    def __init__(self, input=None):
        super(python2Lexer, self).__init__(input)
        self.checkVersion('4.5.3')
        self._interp = LexerATNSimulator(self, self.atn, self.
            decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None

<mask token>


class python2Lexer(Lexer):
    atn = ATNDeserializer().deserialize(serializedATN())
    decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
    T__0 = 1
    T__1 = 2
    T__2 = 3
    T__3 = 4
    T__4 = 5
    T__5 = 6
    T__6 = 7
    T__7 = 8
    T__8 = 9
    T__9 = 10
    T__10 = 11
    T__11 = 12
    T__12 = 13
    T__13 = 14
    T__14 = 15
    DEF = 16
    RETURN = 17
    INDENT = 18
    COLON = 19
    OPEN_PR = 20
    CLOSE_PR = 21
    ID = 22
    NAME = 23
    NUMBER = 24
    WS = 25
    COMMENT = 26
    modeNames = [u'DEFAULT_MODE']
    literalNames = [u'<INVALID>', u"','", u"'if'", u"'else'", u"'='",
        u"'['", u"']'", u"'-'", u"'!'", u"'>'", u"'<'", u"'>='", u"'<='",
        u"'*'", u"'+'", u"'=='", u"'def'", u"'return'", u"'\t'", u"':'",
        u"'('", u"')'"]
    symbolicNames = [u'<INVALID>', u'DEF', u'RETURN', u'INDENT', u'COLON',
        u'OPEN_PR', u'CLOSE_PR', u'ID', u'NAME', u'NUMBER', u'WS', u'COMMENT']
    ruleNames = [u'T__0', u'T__1', u'T__2', u'T__3', u'T__4', u'T__5',
        u'T__6', u'T__7', u'T__8', u'T__9', u'T__10', u'T__11', u'T__12',
        u'T__13', u'T__14', u'DEF', u'RETURN', u'INDENT', u'COLON',
        u'OPEN_PR', u'CLOSE_PR', u'ID', u'NAME', u'NUMBER', u'WS', u'COMMENT']
    grammarFileName = u'python2.g4'

    def __init__(self, input=None):
        super(python2Lexer, self).__init__(input)
        self.checkVersion('4.5.3')
        self._interp = LexerATNSimulator(self, self.atn, self.
            decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None

<mask token>


def serializedATN():
    with StringIO() as buf:
        buf.write(u'\x03а훑舆괭䐗껱趀ꫝ\x02')
        buf.write(
            u'\x1c\x8c\x08\x01\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06'
            )
        buf.write(u"""					
	
		""")
        buf.write(
            u'\r\t\r\x04\x0e\t\x0e\x04\x0f\t\x0f\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t'
            )
        buf.write(
            u'\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17'
            )
        buf.write(
            u'\x04\x18\t\x18\x04\x19\t\x19\x04\x1a\t\x1a\x04\x1b\t\x1b\x03\x02\x03\x02\x03\x03'
            )
        buf.write(
            u'\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07'
            )
        buf.write(
            u'\x03\x08\x03\x08\x03\t\x03\t\x03\n\x03\n\x03\x0b\x03\x0b\x03\x0c\x03\x0c\x03\x0c\x03\r\x03'
            )
        buf.write(
            u'\r\x03\r\x03\x0e\x03\x0e\x03\x0f\x03\x0f\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03'
            )
        buf.write(
            u'\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13'
            )
        buf.write(u"""s
""")
        buf.write(
            u'\x17\x0c\x17\x0e\x17v\x0b\x17\x03\x18\x03\x18\x03\x19\x06\x19{\n\x19\r\x19'
            )
        buf.write(
            u'\x0e\x19|\x03\x1a\x06\x1a\x80\n\x1a\r\x1a\x0e\x1a\x81\x03\x1a\x03'
            )
        buf.write(
            u'\x1a\x03\x1b\x06\x1b\x87\n\x1b\r\x1b\x0e\x1b\x88\x03\x1b\x03\x1b\x02'
            )
        buf.write(
            u'\x02\x1c\x03\x03\x05\x04\x07\x05\t\x06\x0b\x07\r\x08\x0f\t\x11\n\x13\x0b\x15\x0c\x17'
            )
        buf.write(
            u"\r\x19\x0e\x1b\x0f\x1d\x10\x1f\x11!\x12#\x13%\x14'\x15)\x16+\x17-"
            )
        buf.write(
            u'\x18/\x191\x1a3\x1b5\x1c\x03\x02\x05\x03\x022;\x04\x02C\\c|\x05\x02'
            )
        buf.write(
            u'\x0c\x0c\x0f\x0f""\x90\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02'
            )
        buf.write(
            u'\x02\x02\x02\t\x03\x02\x02\x02\x02\x0b\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0f\x03\x02\x02'
            )
        buf.write(
            u'\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02'
            )
        buf.write(
            u'\x02\x02\x19\x03\x02\x02\x02\x02\x1b\x03\x02\x02\x02\x02\x1d\x03\x02\x02\x02\x02\x1f\x03\x02\x02'
            )
        buf.write(
            u"\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02'\x03\x02\x02\x02\x02)\x03"
            )
        buf.write(
            u'\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02'
            )
        buf.write(
            u'\x023\x03\x02\x02\x02\x025\x03\x02\x02\x02\x037\x03\x02\x02\x02\x059\x03\x02\x02\x02\x07'
            )
        buf.write(
            u'<\x03\x02\x02\x02\tA\x03\x02\x02\x02\x0bC\x03\x02\x02\x02\rE\x03\x02\x02\x02\x0fG\x03\x02\x02'
            )
        buf.write(
            u'\x02\x11I\x03\x02\x02\x02\x13K\x03\x02\x02\x02\x15M\x03\x02\x02\x02\x17O\x03\x02\x02\x02\x19'
            )
        buf.write(
            u'R\x03\x02\x02\x02\x1bU\x03\x02\x02\x02\x1dW\x03\x02\x02\x02\x1fY\x03\x02\x02\x02!\\\x03\x02'
            )
        buf.write(
            u"\x02\x02#`\x03\x02\x02\x02%g\x03\x02\x02\x02'i\x03\x02\x02\x02)k\x03\x02\x02\x02+m\x03\x02\x02"
            )
        buf.write(
            u'\x02-o\x03\x02\x02\x02/w\x03\x02\x02\x021z\x03\x02\x02\x023\x7f\x03\x02\x02\x025'
            )
        buf.write(
            u'\x86\x03\x02\x02\x0278\x07.\x02\x028\x04\x03\x02\x02\x029:\x07k\x02\x02:;\x07h\x02'
            )
        buf.write(
            u'\x02;\x06\x03\x02\x02\x02<=\x07g\x02\x02=>\x07n\x02\x02>?\x07u\x02\x02?@\x07g\x02\x02@\x08'
            )
        buf.write(u"""AB?B
CD]DEF""")
        buf.write(
            u'_\x02\x02F\x0e\x03\x02\x02\x02GH\x07/\x02\x02H\x10\x03\x02\x02\x02IJ\x07#\x02\x02J\x12\x03'
            )
        buf.write(
            u'\x02\x02\x02KL\x07@\x02\x02L\x14\x03\x02\x02\x02MN\x07>\x02\x02N\x16\x03\x02\x02\x02OP\x07'
            )
        buf.write(
            u'@\x02\x02PQ\x07?\x02\x02Q\x18\x03\x02\x02\x02RS\x07>\x02\x02ST\x07?\x02\x02T\x1a\x03\x02'
            )
        buf.write(
            u'\x02\x02UV\x07,\x02\x02V\x1c\x03\x02\x02\x02WX\x07-\x02\x02X\x1e\x03\x02\x02\x02YZ\x07?\x02'
            )
        buf.write(
            u'\x02Z[\x07?\x02\x02[ \x03\x02\x02\x02\\]\x07f\x02\x02]^\x07g\x02\x02^_\x07h\x02\x02_"'
            )
        buf.write(
            u'\x03\x02\x02\x02`a\x07t\x02\x02ab\x07g\x02\x02bc\x07v\x02\x02cd\x07w\x02\x02de\x07t\x02\x02'
            )
        buf.write(
            u'ef\x07p\x02\x02f$\x03\x02\x02\x02gh\x07\x0b\x02\x02h&\x03\x02\x02\x02ij\x07<\x02\x02j(\x03'
            )
        buf.write(
            u'\x02\x02\x02kl\x07*\x02\x02l*\x03\x02\x02\x02mn\x07+\x02\x02n,\x03\x02\x02\x02ot\x05/\x18'
            )
        buf.write(
            u'\x02ps\x05/\x18\x02qs\t\x02\x02\x02rp\x03\x02\x02\x02rq\x03\x02\x02\x02sv\x03\x02\x02\x02'
            )
        buf.write(
            u'tr\x03\x02\x02\x02tu\x03\x02\x02\x02u.\x03\x02\x02\x02vt\x03\x02\x02\x02wx\t\x03\x02\x02x0'
            )
        buf.write(
            u'\x03\x02\x02\x02y{\t\x02\x02\x02zy\x03\x02\x02\x02{|\x03\x02\x02\x02|z\x03\x02\x02\x02|}\x03'
            )
        buf.write(
            u'\x02\x02\x02}2\x03\x02\x02\x02~\x80\t\x04\x02\x02\x7f~\x03\x02\x02\x02\x80'
            )
        buf.write(
            u'\x81\x03\x02\x02\x02\x81\x7f\x03\x02\x02\x02\x81\x82\x03\x02\x02\x02'
            )
        buf.write(u'\x82\x83\x03\x02\x02\x02\x83\x84\x08\x1a\x02\x02\x844\x03')
        buf.write(
            u'\x02\x02\x02\x85\x87\x07%\x02\x02\x86\x85\x03\x02\x02\x02\x87\x88'
            )
        buf.write(
            u'\x03\x02\x02\x02\x88\x86\x03\x02\x02\x02\x88\x89\x03\x02\x02\x02\x89'
            )
        buf.write(
            u'\x8a\x03\x02\x02\x02\x8a\x8b\x08\x1b\x02\x02\x8b6\x03\x02\x02\x02'
            )
        buf.write(u'\x08\x02rt|\x81\x88\x03\x08\x02\x02')
        return buf.getvalue()


class python2Lexer(Lexer):
    atn = ATNDeserializer().deserialize(serializedATN())
    decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
    T__0 = 1
    T__1 = 2
    T__2 = 3
    T__3 = 4
    T__4 = 5
    T__5 = 6
    T__6 = 7
    T__7 = 8
    T__8 = 9
    T__9 = 10
    T__10 = 11
    T__11 = 12
    T__12 = 13
    T__13 = 14
    T__14 = 15
    DEF = 16
    RETURN = 17
    INDENT = 18
    COLON = 19
    OPEN_PR = 20
    CLOSE_PR = 21
    ID = 22
    NAME = 23
    NUMBER = 24
    WS = 25
    COMMENT = 26
    modeNames = [u'DEFAULT_MODE']
    literalNames = [u'<INVALID>', u"','", u"'if'", u"'else'", u"'='",
        u"'['", u"']'", u"'-'", u"'!'", u"'>'", u"'<'", u"'>='", u"'<='",
        u"'*'", u"'+'", u"'=='", u"'def'", u"'return'", u"'\t'", u"':'",
        u"'('", u"')'"]
    symbolicNames = [u'<INVALID>', u'DEF', u'RETURN', u'INDENT', u'COLON',
        u'OPEN_PR', u'CLOSE_PR', u'ID', u'NAME', u'NUMBER', u'WS', u'COMMENT']
    ruleNames = [u'T__0', u'T__1', u'T__2', u'T__3', u'T__4', u'T__5',
        u'T__6', u'T__7', u'T__8', u'T__9', u'T__10', u'T__11', u'T__12',
        u'T__13', u'T__14', u'DEF', u'RETURN', u'INDENT', u'COLON',
        u'OPEN_PR', u'CLOSE_PR', u'ID', u'NAME', u'NUMBER', u'WS', u'COMMENT']
    grammarFileName = u'python2.g4'

    def __init__(self, input=None):
        super(python2Lexer, self).__init__(input)
        self.checkVersion('4.5.3')
        self._interp = LexerATNSimulator(self, self.atn, self.
            decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None

from __future__ import print_function
from antlr4 import *
from io import StringIO


def serializedATN():
    with StringIO() as buf:
        buf.write(u'\x03а훑舆괭䐗껱趀ꫝ\x02')
        buf.write(
            u'\x1c\x8c\x08\x01\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06'
            )
        buf.write(u"""					
	
		""")
        buf.write(
            u'\r\t\r\x04\x0e\t\x0e\x04\x0f\t\x0f\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t'
            )
        buf.write(
            u'\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17'
            )
        buf.write(
            u'\x04\x18\t\x18\x04\x19\t\x19\x04\x1a\t\x1a\x04\x1b\t\x1b\x03\x02\x03\x02\x03\x03'
            )
        buf.write(
            u'\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07'
            )
        buf.write(
            u'\x03\x08\x03\x08\x03\t\x03\t\x03\n\x03\n\x03\x0b\x03\x0b\x03\x0c\x03\x0c\x03\x0c\x03\r\x03'
            )
        buf.write(
            u'\r\x03\r\x03\x0e\x03\x0e\x03\x0f\x03\x0f\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03'
            )
        buf.write(
            u'\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13'
            )
        buf.write(u"""s
""")
        buf.write(
            u'\x17\x0c\x17\x0e\x17v\x0b\x17\x03\x18\x03\x18\x03\x19\x06\x19{\n\x19\r\x19'
            )
        buf.write(
            u'\x0e\x19|\x03\x1a\x06\x1a\x80\n\x1a\r\x1a\x0e\x1a\x81\x03\x1a\x03'
            )
        buf.write(
            u'\x1a\x03\x1b\x06\x1b\x87\n\x1b\r\x1b\x0e\x1b\x88\x03\x1b\x03\x1b\x02'
            )
        buf.write(
            u'\x02\x1c\x03\x03\x05\x04\x07\x05\t\x06\x0b\x07\r\x08\x0f\t\x11\n\x13\x0b\x15\x0c\x17'
            )
        buf.write(
            u"\r\x19\x0e\x1b\x0f\x1d\x10\x1f\x11!\x12#\x13%\x14'\x15)\x16+\x17-"
            )
        buf.write(
            u'\x18/\x191\x1a3\x1b5\x1c\x03\x02\x05\x03\x022;\x04\x02C\\c|\x05\x02'
            )
        buf.write(
            u'\x0c\x0c\x0f\x0f""\x90\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02'
            )
        buf.write(
            u'\x02\x02\x02\t\x03\x02\x02\x02\x02\x0b\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0f\x03\x02\x02'
            )
        buf.write(
            u'\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02'
            )
        buf.write(
            u'\x02\x02\x19\x03\x02\x02\x02\x02\x1b\x03\x02\x02\x02\x02\x1d\x03\x02\x02\x02\x02\x1f\x03\x02\x02'
            )
        buf.write(
            u"\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02'\x03\x02\x02\x02\x02)\x03"
            )
        buf.write(
            u'\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02'
            )
        buf.write(
            u'\x023\x03\x02\x02\x02\x025\x03\x02\x02\x02\x037\x03\x02\x02\x02\x059\x03\x02\x02\x02\x07'
            )
        buf.write(
            u'<\x03\x02\x02\x02\tA\x03\x02\x02\x02\x0bC\x03\x02\x02\x02\rE\x03\x02\x02\x02\x0fG\x03\x02\x02'
            )
        buf.write(
            u'\x02\x11I\x03\x02\x02\x02\x13K\x03\x02\x02\x02\x15M\x03\x02\x02\x02\x17O\x03\x02\x02\x02\x19'
            )
        buf.write(
            u'R\x03\x02\x02\x02\x1bU\x03\x02\x02\x02\x1dW\x03\x02\x02\x02\x1fY\x03\x02\x02\x02!\\\x03\x02'
            )
        buf.write(
            u"\x02\x02#`\x03\x02\x02\x02%g\x03\x02\x02\x02'i\x03\x02\x02\x02)k\x03\x02\x02\x02+m\x03\x02\x02"
            )
        buf.write(
            u'\x02-o\x03\x02\x02\x02/w\x03\x02\x02\x021z\x03\x02\x02\x023\x7f\x03\x02\x02\x025'
            )
        buf.write(
            u'\x86\x03\x02\x02\x0278\x07.\x02\x028\x04\x03\x02\x02\x029:\x07k\x02\x02:;\x07h\x02'
            )
        buf.write(
            u'\x02;\x06\x03\x02\x02\x02<=\x07g\x02\x02=>\x07n\x02\x02>?\x07u\x02\x02?@\x07g\x02\x02@\x08'
            )
        buf.write(u"""AB?B
CD]DEF""")
        buf.write(
            u'_\x02\x02F\x0e\x03\x02\x02\x02GH\x07/\x02\x02H\x10\x03\x02\x02\x02IJ\x07#\x02\x02J\x12\x03'
            )
        buf.write(
            u'\x02\x02\x02KL\x07@\x02\x02L\x14\x03\x02\x02\x02MN\x07>\x02\x02N\x16\x03\x02\x02\x02OP\x07'
            )
        buf.write(
            u'@\x02\x02PQ\x07?\x02\x02Q\x18\x03\x02\x02\x02RS\x07>\x02\x02ST\x07?\x02\x02T\x1a\x03\x02'
            )
        buf.write(
            u'\x02\x02UV\x07,\x02\x02V\x1c\x03\x02\x02\x02WX\x07-\x02\x02X\x1e\x03\x02\x02\x02YZ\x07?\x02'
            )
        buf.write(
            u'\x02Z[\x07?\x02\x02[ \x03\x02\x02\x02\\]\x07f\x02\x02]^\x07g\x02\x02^_\x07h\x02\x02_"'
            )
        buf.write(
            u'\x03\x02\x02\x02`a\x07t\x02\x02ab\x07g\x02\x02bc\x07v\x02\x02cd\x07w\x02\x02de\x07t\x02\x02'
            )
        buf.write(
            u'ef\x07p\x02\x02f$\x03\x02\x02\x02gh\x07\x0b\x02\x02h&\x03\x02\x02\x02ij\x07<\x02\x02j(\x03'
            )
        buf.write(
            u'\x02\x02\x02kl\x07*\x02\x02l*\x03\x02\x02\x02mn\x07+\x02\x02n,\x03\x02\x02\x02ot\x05/\x18'
            )
        buf.write(
            u'\x02ps\x05/\x18\x02qs\t\x02\x02\x02rp\x03\x02\x02\x02rq\x03\x02\x02\x02sv\x03\x02\x02\x02'
            )
        buf.write(
            u'tr\x03\x02\x02\x02tu\x03\x02\x02\x02u.\x03\x02\x02\x02vt\x03\x02\x02\x02wx\t\x03\x02\x02x0'
            )
        buf.write(
            u'\x03\x02\x02\x02y{\t\x02\x02\x02zy\x03\x02\x02\x02{|\x03\x02\x02\x02|z\x03\x02\x02\x02|}\x03'
            )
        buf.write(
            u'\x02\x02\x02}2\x03\x02\x02\x02~\x80\t\x04\x02\x02\x7f~\x03\x02\x02\x02\x80'
            )
        buf.write(
            u'\x81\x03\x02\x02\x02\x81\x7f\x03\x02\x02\x02\x81\x82\x03\x02\x02\x02'
            )
        buf.write(u'\x82\x83\x03\x02\x02\x02\x83\x84\x08\x1a\x02\x02\x844\x03')
        buf.write(
            u'\x02\x02\x02\x85\x87\x07%\x02\x02\x86\x85\x03\x02\x02\x02\x87\x88'
            )
        buf.write(
            u'\x03\x02\x02\x02\x88\x86\x03\x02\x02\x02\x88\x89\x03\x02\x02\x02\x89'
            )
        buf.write(
            u'\x8a\x03\x02\x02\x02\x8a\x8b\x08\x1b\x02\x02\x8b6\x03\x02\x02\x02'
            )
        buf.write(u'\x08\x02rt|\x81\x88\x03\x08\x02\x02')
        return buf.getvalue()


class python2Lexer(Lexer):
    atn = ATNDeserializer().deserialize(serializedATN())
    decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
    T__0 = 1
    T__1 = 2
    T__2 = 3
    T__3 = 4
    T__4 = 5
    T__5 = 6
    T__6 = 7
    T__7 = 8
    T__8 = 9
    T__9 = 10
    T__10 = 11
    T__11 = 12
    T__12 = 13
    T__13 = 14
    T__14 = 15
    DEF = 16
    RETURN = 17
    INDENT = 18
    COLON = 19
    OPEN_PR = 20
    CLOSE_PR = 21
    ID = 22
    NAME = 23
    NUMBER = 24
    WS = 25
    COMMENT = 26
    modeNames = [u'DEFAULT_MODE']
    literalNames = [u'<INVALID>', u"','", u"'if'", u"'else'", u"'='",
        u"'['", u"']'", u"'-'", u"'!'", u"'>'", u"'<'", u"'>='", u"'<='",
        u"'*'", u"'+'", u"'=='", u"'def'", u"'return'", u"'\t'", u"':'",
        u"'('", u"')'"]
    symbolicNames = [u'<INVALID>', u'DEF', u'RETURN', u'INDENT', u'COLON',
        u'OPEN_PR', u'CLOSE_PR', u'ID', u'NAME', u'NUMBER', u'WS', u'COMMENT']
    ruleNames = [u'T__0', u'T__1', u'T__2', u'T__3', u'T__4', u'T__5',
        u'T__6', u'T__7', u'T__8', u'T__9', u'T__10', u'T__11', u'T__12',
        u'T__13', u'T__14', u'DEF', u'RETURN', u'INDENT', u'COLON',
        u'OPEN_PR', u'CLOSE_PR', u'ID', u'NAME', u'NUMBER', u'WS', u'COMMENT']
    grammarFileName = u'python2.g4'

    def __init__(self, input=None):
        super(python2Lexer, self).__init__(input)
        self.checkVersion('4.5.3')
        self._interp = LexerATNSimulator(self, self.atn, self.
            decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None

# Generated from python2.g4 by ANTLR 4.5.3
# encoding: utf-8
from __future__ import print_function
from antlr4 import *
from io import StringIO


def serializedATN():
    with StringIO() as buf:
        buf.write(u"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2")
        buf.write(u"\34\u008c\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6")
        buf.write(u"\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4")
        buf.write(u"\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t")
        buf.write(u"\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27")
        buf.write(u"\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\3\2\3\2\3\3")
        buf.write(u"\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7")
        buf.write(u"\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\f\3\r\3")
        buf.write(u"\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3")
        buf.write(u"\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23")
        buf.write(u"\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\27\7\27s\n")
        buf.write(u"\27\f\27\16\27v\13\27\3\30\3\30\3\31\6\31{\n\31\r\31")
        buf.write(u"\16\31|\3\32\6\32\u0080\n\32\r\32\16\32\u0081\3\32\3")
        buf.write(u"\32\3\33\6\33\u0087\n\33\r\33\16\33\u0088\3\33\3\33\2")
        buf.write(u"\2\34\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27")
        buf.write(u"\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-")
        buf.write(u"\30/\31\61\32\63\33\65\34\3\2\5\3\2\62;\4\2C\\c|\5\2")
        buf.write(u"\f\f\17\17\"\"\u0090\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2")
        buf.write(u"\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2")
        buf.write(u"\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2")
        buf.write(u"\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2")
        buf.write(u"\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3")
        buf.write(u"\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2")
        buf.write(u"\2\63\3\2\2\2\2\65\3\2\2\2\3\67\3\2\2\2\59\3\2\2\2\7")
        buf.write(u"<\3\2\2\2\tA\3\2\2\2\13C\3\2\2\2\rE\3\2\2\2\17G\3\2\2")
        buf.write(u"\2\21I\3\2\2\2\23K\3\2\2\2\25M\3\2\2\2\27O\3\2\2\2\31")
        buf.write(u"R\3\2\2\2\33U\3\2\2\2\35W\3\2\2\2\37Y\3\2\2\2!\\\3\2")
        buf.write(u"\2\2#`\3\2\2\2%g\3\2\2\2\'i\3\2\2\2)k\3\2\2\2+m\3\2\2")
        buf.write(u"\2-o\3\2\2\2/w\3\2\2\2\61z\3\2\2\2\63\177\3\2\2\2\65")
        buf.write(u"\u0086\3\2\2\2\678\7.\2\28\4\3\2\2\29:\7k\2\2:;\7h\2")
        buf.write(u"\2;\6\3\2\2\2<=\7g\2\2=>\7n\2\2>?\7u\2\2?@\7g\2\2@\b")
        buf.write(u"\3\2\2\2AB\7?\2\2B\n\3\2\2\2CD\7]\2\2D\f\3\2\2\2EF\7")
        buf.write(u"_\2\2F\16\3\2\2\2GH\7/\2\2H\20\3\2\2\2IJ\7#\2\2J\22\3")
        buf.write(u"\2\2\2KL\7@\2\2L\24\3\2\2\2MN\7>\2\2N\26\3\2\2\2OP\7")
        buf.write(u"@\2\2PQ\7?\2\2Q\30\3\2\2\2RS\7>\2\2ST\7?\2\2T\32\3\2")
        buf.write(u"\2\2UV\7,\2\2V\34\3\2\2\2WX\7-\2\2X\36\3\2\2\2YZ\7?\2")
        buf.write(u"\2Z[\7?\2\2[ \3\2\2\2\\]\7f\2\2]^\7g\2\2^_\7h\2\2_\"")
        buf.write(u"\3\2\2\2`a\7t\2\2ab\7g\2\2bc\7v\2\2cd\7w\2\2de\7t\2\2")
        buf.write(u"ef\7p\2\2f$\3\2\2\2gh\7\13\2\2h&\3\2\2\2ij\7<\2\2j(\3")
        buf.write(u"\2\2\2kl\7*\2\2l*\3\2\2\2mn\7+\2\2n,\3\2\2\2ot\5/\30")
        buf.write(u"\2ps\5/\30\2qs\t\2\2\2rp\3\2\2\2rq\3\2\2\2sv\3\2\2\2")
        buf.write(u"tr\3\2\2\2tu\3\2\2\2u.\3\2\2\2vt\3\2\2\2wx\t\3\2\2x\60")
        buf.write(u"\3\2\2\2y{\t\2\2\2zy\3\2\2\2{|\3\2\2\2|z\3\2\2\2|}\3")
        buf.write(u"\2\2\2}\62\3\2\2\2~\u0080\t\4\2\2\177~\3\2\2\2\u0080")
        buf.write(u"\u0081\3\2\2\2\u0081\177\3\2\2\2\u0081\u0082\3\2\2\2")
        buf.write(u"\u0082\u0083\3\2\2\2\u0083\u0084\b\32\2\2\u0084\64\3")
        buf.write(u"\2\2\2\u0085\u0087\7%\2\2\u0086\u0085\3\2\2\2\u0087\u0088")
        buf.write(u"\3\2\2\2\u0088\u0086\3\2\2\2\u0088\u0089\3\2\2\2\u0089")
        buf.write(u"\u008a\3\2\2\2\u008a\u008b\b\33\2\2\u008b\66\3\2\2\2")
        buf.write(u"\b\2rt|\u0081\u0088\3\b\2\2")
        return buf.getvalue()


class python2Lexer(Lexer):

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]


    T__0 = 1
    T__1 = 2
    T__2 = 3
    T__3 = 4
    T__4 = 5
    T__5 = 6
    T__6 = 7
    T__7 = 8
    T__8 = 9
    T__9 = 10
    T__10 = 11
    T__11 = 12
    T__12 = 13
    T__13 = 14
    T__14 = 15
    DEF = 16
    RETURN = 17
    INDENT = 18
    COLON = 19
    OPEN_PR = 20
    CLOSE_PR = 21
    ID = 22
    NAME = 23
    NUMBER = 24
    WS = 25
    COMMENT = 26

    modeNames = [ u"DEFAULT_MODE" ]

    literalNames = [ u"<INVALID>",
            u"','", u"'if'", u"'else'", u"'='", u"'['", u"']'", u"'-'", 
            u"'!'", u"'>'", u"'<'", u"'>='", u"'<='", u"'*'", u"'+'", u"'=='", 
            u"'def'", u"'return'", u"'\t'", u"':'", u"'('", u"')'" ]

    symbolicNames = [ u"<INVALID>",
            u"DEF", u"RETURN", u"INDENT", u"COLON", u"OPEN_PR", u"CLOSE_PR", 
            u"ID", u"NAME", u"NUMBER", u"WS", u"COMMENT" ]

    ruleNames = [ u"T__0", u"T__1", u"T__2", u"T__3", u"T__4", u"T__5", 
                  u"T__6", u"T__7", u"T__8", u"T__9", u"T__10", u"T__11", 
                  u"T__12", u"T__13", u"T__14", u"DEF", u"RETURN", u"INDENT", 
                  u"COLON", u"OPEN_PR", u"CLOSE_PR", u"ID", u"NAME", u"NUMBER", 
                  u"WS", u"COMMENT" ]

    grammarFileName = u"python2.g4"

    def __init__(self, input=None):
        super(python2Lexer, self).__init__(input)
        self.checkVersion("4.5.3")
        self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None


