# Generated from comparator.g4 by ANTLR 4.13.0
from antlr4 import *
from io import StringIO
import sys
if sys.version_info[1] > 5:
    from typing import TextIO
else:
    from typing.io import TextIO


def serializedATN():
    return [
        4,0,24,305,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,
        2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,
        13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,
        19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,1,0,1,0,1,1,1,1,1,2,1,
        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,85,8,2,
        1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,96,8,3,1,4,1,4,1,5,1,5,1,
        5,1,5,1,5,1,5,1,5,1,5,3,5,108,8,5,1,6,1,6,1,6,1,6,1,6,1,6,3,6,116,
        8,6,1,6,4,6,119,8,6,11,6,12,6,120,1,7,1,7,1,7,3,7,126,8,7,1,7,3,
        7,129,8,7,1,8,1,8,1,8,3,8,134,8,8,1,8,1,8,3,8,138,8,8,1,8,5,8,141,
        8,8,10,8,12,8,144,9,8,1,8,1,8,5,8,148,8,8,10,8,12,8,151,9,8,1,8,
        3,8,154,8,8,1,8,1,8,3,8,158,8,8,1,8,3,8,161,8,8,1,8,1,8,3,8,165,
        8,8,1,9,1,9,1,9,1,9,3,9,171,8,9,1,9,1,9,3,9,175,8,9,1,9,5,9,178,
        8,9,10,9,12,9,181,9,9,1,9,1,9,5,9,185,8,9,10,9,12,9,188,9,9,1,9,
        3,9,191,8,9,1,9,1,9,3,9,195,8,9,1,9,3,9,198,8,9,3,9,200,8,9,1,9,
        1,9,1,10,1,10,5,10,206,8,10,10,10,12,10,209,9,10,1,11,1,11,1,11,
        3,11,214,8,11,1,11,1,11,5,11,218,8,11,10,11,12,11,221,9,11,1,11,
        1,11,5,11,225,8,11,10,11,12,11,228,9,11,1,11,1,11,1,12,1,12,5,12,
        234,8,12,10,12,12,12,237,9,12,1,12,1,12,1,13,1,13,5,13,243,8,13,
        10,13,12,13,246,9,13,1,13,1,13,1,14,4,14,251,8,14,11,14,12,14,252,
        1,15,4,15,256,8,15,11,15,12,15,257,1,15,1,15,4,15,262,8,15,11,15,
        12,15,263,4,15,266,8,15,11,15,12,15,267,1,16,3,16,271,8,16,1,16,
        1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,3,16,282,8,16,1,16,3,16,
        285,8,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,
        1,22,1,23,4,23,300,8,23,11,23,12,23,301,1,23,1,23,2,235,244,0,24,
        1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,
        27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,
        1,0,14,2,0,70,70,102,102,2,0,65,65,97,97,2,0,76,76,108,108,2,0,83,
        83,115,115,2,0,69,69,101,101,2,0,84,84,116,116,2,0,82,82,114,114,
        2,0,85,85,117,117,2,0,60,60,62,62,3,0,48,57,65,90,97,122,5,0,45,
        45,48,57,65,90,95,95,97,122,1,0,48,57,2,0,34,34,39,39,3,0,9,10,12,
        13,32,32,351,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,
        1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,
        1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,
        1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,
        1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,1,49,
        1,0,0,0,3,51,1,0,0,0,5,84,1,0,0,0,7,95,1,0,0,0,9,97,1,0,0,0,11,107,
        1,0,0,0,13,109,1,0,0,0,15,122,1,0,0,0,17,130,1,0,0,0,19,166,1,0,
        0,0,21,203,1,0,0,0,23,210,1,0,0,0,25,231,1,0,0,0,27,240,1,0,0,0,
        29,250,1,0,0,0,31,255,1,0,0,0,33,270,1,0,0,0,35,286,1,0,0,0,37,288,
        1,0,0,0,39,290,1,0,0,0,41,292,1,0,0,0,43,294,1,0,0,0,45,296,1,0,
        0,0,47,299,1,0,0,0,49,50,5,40,0,0,50,2,1,0,0,0,51,52,5,41,0,0,52,
        4,1,0,0,0,53,54,5,101,0,0,54,55,5,120,0,0,55,56,5,105,0,0,56,57,
        5,115,0,0,57,85,5,116,0,0,58,59,5,101,0,0,59,60,5,120,0,0,60,61,
        5,105,0,0,61,62,5,115,0,0,62,63,5,116,0,0,63,85,5,115,0,0,64,65,
        5,99,0,0,65,66,5,111,0,0,66,67,5,117,0,0,67,68,5,110,0,0,68,85,5,
        116,0,0,69,70,5,99,0,0,70,71,5,111,0,0,71,72,5,110,0,0,72,73,5,116,
        0,0,73,74,5,97,0,0,74,75,5,105,0,0,75,85,5,110,0,0,76,77,5,99,0,
        0,77,78,5,111,0,0,78,79,5,110,0,0,79,80,5,116,0,0,80,81,5,97,0,0,
        81,82,5,105,0,0,82,83,5,110,0,0,83,85,5,115,0,0,84,53,1,0,0,0,84,
        58,1,0,0,0,84,64,1,0,0,0,84,69,1,0,0,0,84,76,1,0,0,0,85,6,1,0,0,
        0,86,87,7,0,0,0,87,88,7,1,0,0,88,89,7,2,0,0,89,90,7,3,0,0,90,96,
        7,4,0,0,91,92,7,5,0,0,92,93,7,6,0,0,93,94,7,7,0,0,94,96,7,4,0,0,
        95,86,1,0,0,0,95,91,1,0,0,0,96,8,1,0,0,0,97,98,5,43,0,0,98,10,1,
        0,0,0,99,108,7,8,0,0,100,101,5,62,0,0,101,108,5,61,0,0,102,103,5,
        60,0,0,103,108,5,61,0,0,104,105,5,33,0,0,105,108,5,61,0,0,106,108,
        5,61,0,0,107,99,1,0,0,0,107,100,1,0,0,0,107,102,1,0,0,0,107,104,
        1,0,0,0,107,106,1,0,0,0,108,12,1,0,0,0,109,110,5,123,0,0,110,111,
        3,21,10,0,111,118,5,125,0,0,112,115,5,46,0,0,113,116,3,15,7,0,114,
        116,3,17,8,0,115,113,1,0,0,0,115,114,1,0,0,0,116,119,1,0,0,0,117,
        119,3,19,9,0,118,112,1,0,0,0,118,117,1,0,0,0,119,120,1,0,0,0,120,
        118,1,0,0,0,120,121,1,0,0,0,121,14,1,0,0,0,122,128,3,21,10,0,123,
        125,5,91,0,0,124,126,3,29,14,0,125,124,1,0,0,0,125,126,1,0,0,0,126,
        127,1,0,0,0,127,129,5,93,0,0,128,123,1,0,0,0,128,129,1,0,0,0,129,
        16,1,0,0,0,130,164,3,21,10,0,131,133,5,91,0,0,132,134,3,35,17,0,
        133,132,1,0,0,0,133,134,1,0,0,0,134,135,1,0,0,0,135,137,3,21,10,
        0,136,138,3,35,17,0,137,136,1,0,0,0,137,138,1,0,0,0,138,142,1,0,
        0,0,139,141,3,47,23,0,140,139,1,0,0,0,141,144,1,0,0,0,142,140,1,
        0,0,0,142,143,1,0,0,0,143,145,1,0,0,0,144,142,1,0,0,0,145,149,5,
        61,0,0,146,148,3,47,23,0,147,146,1,0,0,0,148,151,1,0,0,0,149,147,
        1,0,0,0,149,150,1,0,0,0,150,153,1,0,0,0,151,149,1,0,0,0,152,154,
        3,35,17,0,153,152,1,0,0,0,153,154,1,0,0,0,154,157,1,0,0,0,155,158,
        3,29,14,0,156,158,3,21,10,0,157,155,1,0,0,0,157,156,1,0,0,0,158,
        160,1,0,0,0,159,161,3,35,17,0,160,159,1,0,0,0,160,161,1,0,0,0,161,
        162,1,0,0,0,162,163,5,93,0,0,163,165,1,0,0,0,164,131,1,0,0,0,164,
        165,1,0,0,0,165,18,1,0,0,0,166,199,5,91,0,0,167,200,3,29,14,0,168,
        200,3,37,18,0,169,171,3,35,17,0,170,169,1,0,0,0,170,171,1,0,0,0,
        171,172,1,0,0,0,172,174,3,21,10,0,173,175,3,35,17,0,174,173,1,0,
        0,0,174,175,1,0,0,0,175,179,1,0,0,0,176,178,3,47,23,0,177,176,1,
        0,0,0,178,181,1,0,0,0,179,177,1,0,0,0,179,180,1,0,0,0,180,182,1,
        0,0,0,181,179,1,0,0,0,182,186,5,61,0,0,183,185,3,47,23,0,184,183,
        1,0,0,0,185,188,1,0,0,0,186,184,1,0,0,0,186,187,1,0,0,0,187,190,
        1,0,0,0,188,186,1,0,0,0,189,191,3,35,17,0,190,189,1,0,0,0,190,191,
        1,0,0,0,191,194,1,0,0,0,192,195,3,29,14,0,193,195,3,21,10,0,194,
        192,1,0,0,0,194,193,1,0,0,0,195,197,1,0,0,0,196,198,3,35,17,0,197,
        196,1,0,0,0,197,198,1,0,0,0,198,200,1,0,0,0,199,167,1,0,0,0,199,
        168,1,0,0,0,199,170,1,0,0,0,199,200,1,0,0,0,200,201,1,0,0,0,201,
        202,5,93,0,0,202,20,1,0,0,0,203,207,7,9,0,0,204,206,7,10,0,0,205,
        204,1,0,0,0,206,209,1,0,0,0,207,205,1,0,0,0,207,208,1,0,0,0,208,
        22,1,0,0,0,209,207,1,0,0,0,210,213,3,39,19,0,211,214,3,33,16,0,212,
        214,3,27,13,0,213,211,1,0,0,0,213,212,1,0,0,0,214,226,1,0,0,0,215,
        219,5,44,0,0,216,218,3,47,23,0,217,216,1,0,0,0,218,221,1,0,0,0,219,
        217,1,0,0,0,219,220,1,0,0,0,220,222,1,0,0,0,221,219,1,0,0,0,222,
        225,3,33,16,0,223,225,3,27,13,0,224,215,1,0,0,0,224,223,1,0,0,0,
        225,228,1,0,0,0,226,224,1,0,0,0,226,227,1,0,0,0,227,229,1,0,0,0,
        228,226,1,0,0,0,229,230,3,41,20,0,230,24,1,0,0,0,231,235,3,43,21,
        0,232,234,9,0,0,0,233,232,1,0,0,0,234,237,1,0,0,0,235,236,1,0,0,
        0,235,233,1,0,0,0,236,238,1,0,0,0,237,235,1,0,0,0,238,239,3,45,22,
        0,239,26,1,0,0,0,240,244,3,35,17,0,241,243,9,0,0,0,242,241,1,0,0,
        0,243,246,1,0,0,0,244,245,1,0,0,0,244,242,1,0,0,0,245,247,1,0,0,
        0,246,244,1,0,0,0,247,248,3,35,17,0,248,28,1,0,0,0,249,251,7,11,
        0,0,250,249,1,0,0,0,251,252,1,0,0,0,252,250,1,0,0,0,252,253,1,0,
        0,0,253,30,1,0,0,0,254,256,7,11,0,0,255,254,1,0,0,0,256,257,1,0,
        0,0,257,255,1,0,0,0,257,258,1,0,0,0,258,265,1,0,0,0,259,261,5,46,
        0,0,260,262,7,11,0,0,261,260,1,0,0,0,262,263,1,0,0,0,263,261,1,0,
        0,0,263,264,1,0,0,0,264,266,1,0,0,0,265,259,1,0,0,0,266,267,1,0,
        0,0,267,265,1,0,0,0,267,268,1,0,0,0,268,32,1,0,0,0,269,271,3,35,
        17,0,270,269,1,0,0,0,270,271,1,0,0,0,271,272,1,0,0,0,272,273,3,29,
        14,0,273,274,5,46,0,0,274,275,3,29,14,0,275,276,5,46,0,0,276,277,
        3,29,14,0,277,278,5,46,0,0,278,281,3,29,14,0,279,280,5,47,0,0,280,
        282,3,29,14,0,281,279,1,0,0,0,281,282,1,0,0,0,282,284,1,0,0,0,283,
        285,3,35,17,0,284,283,1,0,0,0,284,285,1,0,0,0,285,34,1,0,0,0,286,
        287,7,12,0,0,287,36,1,0,0,0,288,289,5,42,0,0,289,38,1,0,0,0,290,
        291,5,91,0,0,291,40,1,0,0,0,292,293,5,93,0,0,293,42,1,0,0,0,294,
        295,5,123,0,0,295,44,1,0,0,0,296,297,5,125,0,0,297,46,1,0,0,0,298,
        300,7,13,0,0,299,298,1,0,0,0,300,301,1,0,0,0,301,299,1,0,0,0,301,
        302,1,0,0,0,302,303,1,0,0,0,303,304,6,23,0,0,304,48,1,0,0,0,40,0,
        84,95,107,115,118,120,125,128,133,137,142,149,153,157,160,164,170,
        174,179,186,190,194,197,199,207,213,219,224,226,235,244,252,257,
        263,267,270,281,284,301,1,6,0,0
    ]

class comparatorLexer(Lexer):

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

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

    T__0 = 1
    T__1 = 2
    METHOD = 3
    BOOL = 4
    OP = 5
    COMP = 6
    FMT1 = 7
    ATTRFMT1 = 8
    ATTRFMT2 = 9
    ATTRFMT3 = 10
    STRING = 11
    ARRSTRING = 12
    DICTSTRING = 13
    QUOTESTRING = 14
    NUMBER = 15
    FNUMBER = 16
    IPADDRESS = 17
    QUOTE = 18
    STAR = 19
    SQOPEN = 20
    SQCLOSE = 21
    FLOPEN = 22
    FLCLOSE = 23
    WS = 24

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

    modeNames = [ "DEFAULT_MODE" ]

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

    symbolicNames = [ "<INVALID>",
            "METHOD", "BOOL", "OP", "COMP", "FMT1", "ATTRFMT1", "ATTRFMT2", 
            "ATTRFMT3", "STRING", "ARRSTRING", "DICTSTRING", "QUOTESTRING", 
            "NUMBER", "FNUMBER", "IPADDRESS", "QUOTE", "STAR", "SQOPEN", 
            "SQCLOSE", "FLOPEN", "FLCLOSE", "WS" ]

    ruleNames = [ "T__0", "T__1", "METHOD", "BOOL", "OP", "COMP", "FMT1", 
                  "ATTRFMT1", "ATTRFMT2", "ATTRFMT3", "STRING", "ARRSTRING", 
                  "DICTSTRING", "QUOTESTRING", "NUMBER", "FNUMBER", "IPADDRESS", 
                  "QUOTE", "STAR", "SQOPEN", "SQCLOSE", "FLOPEN", "FLCLOSE", 
                  "WS" ]

    grammarFileName = "comparator.g4"

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

