# Generated from Skyline.g by ANTLR 4.7.2
from antlr4 import *
from io import StringIO
from typing.io import TextIO
import sys


def serializedATN():
    with StringIO() as buf:
        buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\20")
        buf.write("G\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7")
        buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16")
        buf.write("\t\16\4\17\t\17\3\2\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3")
        buf.write("\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3")
        buf.write("\f\3\r\6\r8\n\r\r\r\16\r9\3\16\6\16=\n\16\r\16\16\16>")
        buf.write("\3\17\6\17B\n\17\r\17\16\17C\3\17\3\17\2\2\20\3\3\5\4")
        buf.write("\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17")
        buf.write("\35\20\3\2\5\3\2\62;\3\2c|\4\2\f\f\"\"\2I\2\3\3\2\2\2")
        buf.write("\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r")
        buf.write("\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3")
        buf.write("\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2")
        buf.write("\2\2\3\37\3\2\2\2\5\"\3\2\2\2\7$\3\2\2\2\t&\3\2\2\2\13")
        buf.write("(\3\2\2\2\r*\3\2\2\2\17,\3\2\2\2\21.\3\2\2\2\23\60\3\2")
        buf.write("\2\2\25\62\3\2\2\2\27\64\3\2\2\2\31\67\3\2\2\2\33<\3\2")
        buf.write("\2\2\35A\3\2\2\2\37 \7<\2\2 !\7?\2\2!\4\3\2\2\2\"#\7*")
        buf.write("\2\2#\6\3\2\2\2$%\7+\2\2%\b\3\2\2\2&\'\7]\2\2\'\n\3\2")
        buf.write("\2\2()\7_\2\2)\f\3\2\2\2*+\7}\2\2+\16\3\2\2\2,-\7\177")
        buf.write("\2\2-\20\3\2\2\2./\7,\2\2/\22\3\2\2\2\60\61\7-\2\2\61")
        buf.write("\24\3\2\2\2\62\63\7/\2\2\63\26\3\2\2\2\64\65\7.\2\2\65")
        buf.write("\30\3\2\2\2\668\t\2\2\2\67\66\3\2\2\289\3\2\2\29\67\3")
        buf.write("\2\2\29:\3\2\2\2:\32\3\2\2\2;=\t\3\2\2<;\3\2\2\2=>\3\2")
        buf.write("\2\2><\3\2\2\2>?\3\2\2\2?\34\3\2\2\2@B\t\4\2\2A@\3\2\2")
        buf.write("\2BC\3\2\2\2CA\3\2\2\2CD\3\2\2\2DE\3\2\2\2EF\b\17\2\2")
        buf.write("F\36\3\2\2\2\6\29>C\3\b\2\2")
        return buf.getvalue()


class SkylineLexer(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
    NUM = 12
    VAR = 13
    WS = 14

    channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]

    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "':='", "'('", "')'", "'['", "']'", "'{'", "'}'", "'*'", "'+'", 
            "'-'", "','" ]

    symbolicNames = [ "<INVALID>",
            "NUM", "VAR", "WS" ]

    ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", 
                  "T__7", "T__8", "T__9", "T__10", "NUM", "VAR", "WS" ]

    grammarFileName = "Skyline.g"

    def __init__(self, input=None, output:TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.7.2")
        self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None



9484557636526ec1a29ac8b6a3a87a1f7fdc4150
<mask token>


class SkylineLexer(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>

    def __init__(self, input=None, output: TextIO=sys.stdout):
        super().__init__(input, output)
        self.checkVersion('4.7.2')
        self._interp = LexerATNSimulator(self, self.atn, self.
            decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None

<mask token>


class SkylineLexer(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
    NUM = 12
    VAR = 13
    WS = 14
    channelNames = [u'DEFAULT_TOKEN_CHANNEL', u'HIDDEN']
    modeNames = ['DEFAULT_MODE']
    literalNames = ['<INVALID>', "':='", "'('", "')'", "'['", "']'", "'{'",
        "'}'", "'*'", "'+'", "'-'", "','"]
    symbolicNames = ['<INVALID>', 'NUM', 'VAR', 'WS']
    ruleNames = ['T__0', 'T__1', 'T__2', 'T__3', 'T__4', 'T__5', 'T__6',
        'T__7', 'T__8', 'T__9', 'T__10', 'NUM', 'VAR', 'WS']
    grammarFileName = 'Skyline.g'

    def __init__(self, input=None, output: TextIO=sys.stdout):
        super().__init__(input, output)
        self.checkVersion('4.7.2')
        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('\x03悋Ꜫ脳맭䅼㯧瞆奤\x02\x10')
        buf.write(
            'G\x08\x01\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07\t\x07'
            )
        buf.write(
            '\x04\x08\t\x08\x04\t\t\t\x04\n\t\n\x04\x0b\t\x0b\x04\x0c\t\x0c\x04\r\t\r\x04\x0e'
            )
        buf.write(
            '\t\x0e\x04\x0f\t\x0f\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03\x04\x03\x05\x03\x05\x03'
            )
        buf.write("""		

""")
        buf.write(
            '\x0c\x03\r\x06\r8\n\r\r\r\x0e\r9\x03\x0e\x06\x0e=\n\x0e\r\x0e\x0e\x0e>'
            )
        buf.write(
            '\x03\x0f\x06\x0fB\n\x0f\r\x0f\x0e\x0fC\x03\x0f\x03\x0f\x02\x02\x10\x03\x03\x05\x04'
            )
        buf.write(
            '\x07\x05\t\x06\x0b\x07\r\x08\x0f\t\x11\n\x13\x0b\x15\x0c\x17\r\x19\x0e\x1b\x0f'
            )
        buf.write(
            '\x1d\x10\x03\x02\x05\x03\x022;\x03\x02c|\x04\x02\x0c\x0c""\x02I\x02\x03\x03\x02\x02\x02'
            )
        buf.write(
            '\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\x0b\x03\x02\x02\x02\x02\r'
            )
        buf.write(
            '\x03\x02\x02\x02\x02\x0f\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03'
            )
        buf.write(
            '\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1b\x03\x02\x02\x02\x02\x1d\x03\x02'
            )
        buf.write(
            '\x02\x02\x03\x1f\x03\x02\x02\x02\x05"\x03\x02\x02\x02\x07$\x03\x02\x02\x02\t&\x03\x02\x02\x02\x0b'
            )
        buf.write(
            '(\x03\x02\x02\x02\r*\x03\x02\x02\x02\x0f,\x03\x02\x02\x02\x11.\x03\x02\x02\x02\x130\x03\x02'
            )
        buf.write(
            '\x02\x02\x152\x03\x02\x02\x02\x174\x03\x02\x02\x02\x197\x03\x02\x02\x02\x1b<\x03\x02'
            )
        buf.write(
            '\x02\x02\x1dA\x03\x02\x02\x02\x1f \x07<\x02\x02 !\x07?\x02\x02!\x04\x03\x02\x02\x02"#\x07*'
            )
        buf.write("""#$%+%&']'
""")
        buf.write(
            '\x02\x02()\x07_\x02\x02)\x0c\x03\x02\x02\x02*+\x07}\x02\x02+\x0e\x03\x02\x02\x02,-\x07\x7f'
            )
        buf.write(
            '\x02\x02-\x10\x03\x02\x02\x02./\x07,\x02\x02/\x12\x03\x02\x02\x0201\x07-\x02\x021'
            )
        buf.write(
            '\x14\x03\x02\x02\x0223\x07/\x02\x023\x16\x03\x02\x02\x0245\x07.\x02\x025'
            )
        buf.write(
            '\x18\x03\x02\x02\x0268\t\x02\x02\x0276\x03\x02\x02\x0289\x03\x02\x02\x0297\x03'
            )
        buf.write(
            '\x02\x02\x029:\x03\x02\x02\x02:\x1a\x03\x02\x02\x02;=\t\x03\x02\x02<;\x03\x02\x02\x02=>\x03\x02'
            )
        buf.write(
            '\x02\x02><\x03\x02\x02\x02>?\x03\x02\x02\x02?\x1c\x03\x02\x02\x02@B\t\x04\x02\x02A@\x03\x02\x02'
            )
        buf.write(
            '\x02BC\x03\x02\x02\x02CA\x03\x02\x02\x02CD\x03\x02\x02\x02DE\x03\x02\x02\x02EF\x08\x0f\x02\x02'
            )
        buf.write('F\x1e\x03\x02\x02\x02\x06\x029>C\x03\x08\x02\x02')
        return buf.getvalue()


class SkylineLexer(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
    NUM = 12
    VAR = 13
    WS = 14
    channelNames = [u'DEFAULT_TOKEN_CHANNEL', u'HIDDEN']
    modeNames = ['DEFAULT_MODE']
    literalNames = ['<INVALID>', "':='", "'('", "')'", "'['", "']'", "'{'",
        "'}'", "'*'", "'+'", "'-'", "','"]
    symbolicNames = ['<INVALID>', 'NUM', 'VAR', 'WS']
    ruleNames = ['T__0', 'T__1', 'T__2', 'T__3', 'T__4', 'T__5', 'T__6',
        'T__7', 'T__8', 'T__9', 'T__10', 'NUM', 'VAR', 'WS']
    grammarFileName = 'Skyline.g'

    def __init__(self, input=None, output: TextIO=sys.stdout):
        super().__init__(input, output)
        self.checkVersion('4.7.2')
        self._interp = LexerATNSimulator(self, self.atn, self.
            decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None

from antlr4 import *
from io import StringIO
from typing.io import TextIO
import sys


def serializedATN():
    with StringIO() as buf:
        buf.write('\x03悋Ꜫ脳맭䅼㯧瞆奤\x02\x10')
        buf.write(
            'G\x08\x01\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07\t\x07'
            )
        buf.write(
            '\x04\x08\t\x08\x04\t\t\t\x04\n\t\n\x04\x0b\t\x0b\x04\x0c\t\x0c\x04\r\t\r\x04\x0e'
            )
        buf.write(
            '\t\x0e\x04\x0f\t\x0f\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03\x04\x03\x05\x03\x05\x03'
            )
        buf.write("""		

""")
        buf.write(
            '\x0c\x03\r\x06\r8\n\r\r\r\x0e\r9\x03\x0e\x06\x0e=\n\x0e\r\x0e\x0e\x0e>'
            )
        buf.write(
            '\x03\x0f\x06\x0fB\n\x0f\r\x0f\x0e\x0fC\x03\x0f\x03\x0f\x02\x02\x10\x03\x03\x05\x04'
            )
        buf.write(
            '\x07\x05\t\x06\x0b\x07\r\x08\x0f\t\x11\n\x13\x0b\x15\x0c\x17\r\x19\x0e\x1b\x0f'
            )
        buf.write(
            '\x1d\x10\x03\x02\x05\x03\x022;\x03\x02c|\x04\x02\x0c\x0c""\x02I\x02\x03\x03\x02\x02\x02'
            )
        buf.write(
            '\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\x0b\x03\x02\x02\x02\x02\r'
            )
        buf.write(
            '\x03\x02\x02\x02\x02\x0f\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03'
            )
        buf.write(
            '\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1b\x03\x02\x02\x02\x02\x1d\x03\x02'
            )
        buf.write(
            '\x02\x02\x03\x1f\x03\x02\x02\x02\x05"\x03\x02\x02\x02\x07$\x03\x02\x02\x02\t&\x03\x02\x02\x02\x0b'
            )
        buf.write(
            '(\x03\x02\x02\x02\r*\x03\x02\x02\x02\x0f,\x03\x02\x02\x02\x11.\x03\x02\x02\x02\x130\x03\x02'
            )
        buf.write(
            '\x02\x02\x152\x03\x02\x02\x02\x174\x03\x02\x02\x02\x197\x03\x02\x02\x02\x1b<\x03\x02'
            )
        buf.write(
            '\x02\x02\x1dA\x03\x02\x02\x02\x1f \x07<\x02\x02 !\x07?\x02\x02!\x04\x03\x02\x02\x02"#\x07*'
            )
        buf.write("""#$%+%&']'
""")
        buf.write(
            '\x02\x02()\x07_\x02\x02)\x0c\x03\x02\x02\x02*+\x07}\x02\x02+\x0e\x03\x02\x02\x02,-\x07\x7f'
            )
        buf.write(
            '\x02\x02-\x10\x03\x02\x02\x02./\x07,\x02\x02/\x12\x03\x02\x02\x0201\x07-\x02\x021'
            )
        buf.write(
            '\x14\x03\x02\x02\x0223\x07/\x02\x023\x16\x03\x02\x02\x0245\x07.\x02\x025'
            )
        buf.write(
            '\x18\x03\x02\x02\x0268\t\x02\x02\x0276\x03\x02\x02\x0289\x03\x02\x02\x0297\x03'
            )
        buf.write(
            '\x02\x02\x029:\x03\x02\x02\x02:\x1a\x03\x02\x02\x02;=\t\x03\x02\x02<;\x03\x02\x02\x02=>\x03\x02'
            )
        buf.write(
            '\x02\x02><\x03\x02\x02\x02>?\x03\x02\x02\x02?\x1c\x03\x02\x02\x02@B\t\x04\x02\x02A@\x03\x02\x02'
            )
        buf.write(
            '\x02BC\x03\x02\x02\x02CA\x03\x02\x02\x02CD\x03\x02\x02\x02DE\x03\x02\x02\x02EF\x08\x0f\x02\x02'
            )
        buf.write('F\x1e\x03\x02\x02\x02\x06\x029>C\x03\x08\x02\x02')
        return buf.getvalue()


class SkylineLexer(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
    NUM = 12
    VAR = 13
    WS = 14
    channelNames = [u'DEFAULT_TOKEN_CHANNEL', u'HIDDEN']
    modeNames = ['DEFAULT_MODE']
    literalNames = ['<INVALID>', "':='", "'('", "')'", "'['", "']'", "'{'",
        "'}'", "'*'", "'+'", "'-'", "','"]
    symbolicNames = ['<INVALID>', 'NUM', 'VAR', 'WS']
    ruleNames = ['T__0', 'T__1', 'T__2', 'T__3', 'T__4', 'T__5', 'T__6',
        'T__7', 'T__8', 'T__9', 'T__10', 'NUM', 'VAR', 'WS']
    grammarFileName = 'Skyline.g'

    def __init__(self, input=None, output: TextIO=sys.stdout):
        super().__init__(input, output)
        self.checkVersion('4.7.2')
        self._interp = LexerATNSimulator(self, self.atn, self.
            decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None

# Generated from Skyline.g by ANTLR 4.7.2
from antlr4 import *
from io import StringIO
from typing.io import TextIO
import sys


def serializedATN():
    with StringIO() as buf:
        buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\20")
        buf.write("G\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7")
        buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16")
        buf.write("\t\16\4\17\t\17\3\2\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3")
        buf.write("\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3")
        buf.write("\f\3\r\6\r8\n\r\r\r\16\r9\3\16\6\16=\n\16\r\16\16\16>")
        buf.write("\3\17\6\17B\n\17\r\17\16\17C\3\17\3\17\2\2\20\3\3\5\4")
        buf.write("\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17")
        buf.write("\35\20\3\2\5\3\2\62;\3\2c|\4\2\f\f\"\"\2I\2\3\3\2\2\2")
        buf.write("\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r")
        buf.write("\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3")
        buf.write("\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2")
        buf.write("\2\2\3\37\3\2\2\2\5\"\3\2\2\2\7$\3\2\2\2\t&\3\2\2\2\13")
        buf.write("(\3\2\2\2\r*\3\2\2\2\17,\3\2\2\2\21.\3\2\2\2\23\60\3\2")
        buf.write("\2\2\25\62\3\2\2\2\27\64\3\2\2\2\31\67\3\2\2\2\33<\3\2")
        buf.write("\2\2\35A\3\2\2\2\37 \7<\2\2 !\7?\2\2!\4\3\2\2\2\"#\7*")
        buf.write("\2\2#\6\3\2\2\2$%\7+\2\2%\b\3\2\2\2&\'\7]\2\2\'\n\3\2")
        buf.write("\2\2()\7_\2\2)\f\3\2\2\2*+\7}\2\2+\16\3\2\2\2,-\7\177")
        buf.write("\2\2-\20\3\2\2\2./\7,\2\2/\22\3\2\2\2\60\61\7-\2\2\61")
        buf.write("\24\3\2\2\2\62\63\7/\2\2\63\26\3\2\2\2\64\65\7.\2\2\65")
        buf.write("\30\3\2\2\2\668\t\2\2\2\67\66\3\2\2\289\3\2\2\29\67\3")
        buf.write("\2\2\29:\3\2\2\2:\32\3\2\2\2;=\t\3\2\2<;\3\2\2\2=>\3\2")
        buf.write("\2\2><\3\2\2\2>?\3\2\2\2?\34\3\2\2\2@B\t\4\2\2A@\3\2\2")
        buf.write("\2BC\3\2\2\2CA\3\2\2\2CD\3\2\2\2DE\3\2\2\2EF\b\17\2\2")
        buf.write("F\36\3\2\2\2\6\29>C\3\b\2\2")
        return buf.getvalue()


class SkylineLexer(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
    NUM = 12
    VAR = 13
    WS = 14

    channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]

    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "':='", "'('", "')'", "'['", "']'", "'{'", "'}'", "'*'", "'+'", 
            "'-'", "','" ]

    symbolicNames = [ "<INVALID>",
            "NUM", "VAR", "WS" ]

    ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", 
                  "T__7", "T__8", "T__9", "T__10", "NUM", "VAR", "WS" ]

    grammarFileName = "Skyline.g"

    def __init__(self, input=None, output:TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.7.2")
        self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None


