# Generated from LittleDuckGrammar.g4 by ANTLR 4.9.1
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\35")
        buf.write("\u00c1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7")
        buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r")
        buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23")
        buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30")
        buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\3\2\3\2\3\2\3")
        buf.write("\2\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7")
        buf.write("\3\7\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r")
        buf.write("\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22")
        buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24")
        buf.write("\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\27\3\27")
        buf.write("\3\27\3\27\3\27\3\27\3\30\5\30~\n\30\3\30\7\30\u0081\n")
        buf.write("\30\f\30\16\30\u0084\13\30\3\31\3\31\3\31\7\31\u0089\n")
        buf.write("\31\f\31\16\31\u008c\13\31\5\31\u008e\n\31\3\32\3\32\3")
        buf.write("\32\7\32\u0093\n\32\f\32\16\32\u0096\13\32\5\32\u0098")
        buf.write("\n\32\3\32\3\32\6\32\u009c\n\32\r\32\16\32\u009d\3\32")
        buf.write("\3\32\5\32\u00a2\n\32\3\32\3\32\3\32\7\32\u00a7\n\32\f")
        buf.write("\32\16\32\u00aa\13\32\5\32\u00ac\n\32\5\32\u00ae\n\32")
        buf.write("\3\33\3\33\3\33\3\33\7\33\u00b4\n\33\f\33\16\33\u00b7")
        buf.write("\13\33\3\33\3\33\3\34\6\34\u00bc\n\34\r\34\16\34\u00bd")
        buf.write("\3\34\3\34\2\2\35\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23")
        buf.write("\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25")
        buf.write(")\26+\27-\30/\31\61\32\63\33\65\34\67\35\3\2\13\4\2C\\")
        buf.write("c|\5\2\62;C\\c|\3\2\63;\3\2\62;\4\2GGgg\4\2--//\4\2$$")
        buf.write("^^\6\2\f\f\17\17$$^^\5\2\13\f\17\17\"\"\2\u00cd\2\3\3")
        buf.write("\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2")
        buf.write("\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2")
        buf.write("\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2")
        buf.write("\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2")
        buf.write("\2\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("\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2")
        buf.write("\2\2\39\3\2\2\2\5=\3\2\2\2\7C\3\2\2\2\tE\3\2\2\2\13G\3")
        buf.write("\2\2\2\rI\3\2\2\2\17K\3\2\2\2\21M\3\2\2\2\23P\3\2\2\2")
        buf.write("\25R\3\2\2\2\27T\3\2\2\2\31V\3\2\2\2\33X\3\2\2\2\35Z\3")
        buf.write("\2\2\2\37\\\3\2\2\2!^\3\2\2\2#`\3\2\2\2%b\3\2\2\2\'j\3")
        buf.write("\2\2\2)m\3\2\2\2+r\3\2\2\2-v\3\2\2\2/}\3\2\2\2\61\u008d")
        buf.write("\3\2\2\2\63\u0097\3\2\2\2\65\u00af\3\2\2\2\67\u00bb\3")
        buf.write("\2\2\29:\7k\2\2:;\7p\2\2;<\7v\2\2<\4\3\2\2\2=>\7h\2\2")
        buf.write(">?\7n\2\2?@\7q\2\2@A\7c\2\2AB\7v\2\2B\6\3\2\2\2CD\7?\2")
        buf.write("\2D\b\3\2\2\2EF\7,\2\2F\n\3\2\2\2GH\7\61\2\2H\f\3\2\2")
        buf.write("\2IJ\7-\2\2J\16\3\2\2\2KL\7/\2\2L\20\3\2\2\2MN\7>\2\2")
        buf.write("NO\7@\2\2O\22\3\2\2\2PQ\7@\2\2Q\24\3\2\2\2RS\7>\2\2S\26")
        buf.write("\3\2\2\2TU\7*\2\2U\30\3\2\2\2VW\7+\2\2W\32\3\2\2\2XY\7")
        buf.write("}\2\2Y\34\3\2\2\2Z[\7\177\2\2[\36\3\2\2\2\\]\7.\2\2] ")
        buf.write("\3\2\2\2^_\7=\2\2_\"\3\2\2\2`a\7<\2\2a$\3\2\2\2bc\7r\2")
        buf.write("\2cd\7t\2\2de\7q\2\2ef\7i\2\2fg\7t\2\2gh\7c\2\2hi\7o\2")
        buf.write("\2i&\3\2\2\2jk\7k\2\2kl\7h\2\2l(\3\2\2\2mn\7g\2\2no\7")
        buf.write("n\2\2op\7u\2\2pq\7g\2\2q*\3\2\2\2rs\7x\2\2st\7c\2\2tu")
        buf.write("\7t\2\2u,\3\2\2\2vw\7r\2\2wx\7t\2\2xy\7k\2\2yz\7p\2\2")
        buf.write("z{\7v\2\2{.\3\2\2\2|~\t\2\2\2}|\3\2\2\2~\u0082\3\2\2\2")
        buf.write("\177\u0081\t\3\2\2\u0080\177\3\2\2\2\u0081\u0084\3\2\2")
        buf.write("\2\u0082\u0080\3\2\2\2\u0082\u0083\3\2\2\2\u0083\60\3")
        buf.write("\2\2\2\u0084\u0082\3\2\2\2\u0085\u008e\7\62\2\2\u0086")
        buf.write("\u008a\t\4\2\2\u0087\u0089\t\5\2\2\u0088\u0087\3\2\2\2")
        buf.write("\u0089\u008c\3\2\2\2\u008a\u0088\3\2\2\2\u008a\u008b\3")
        buf.write("\2\2\2\u008b\u008e\3\2\2\2\u008c\u008a\3\2\2\2\u008d\u0085")
        buf.write("\3\2\2\2\u008d\u0086\3\2\2\2\u008e\62\3\2\2\2\u008f\u0098")
        buf.write("\7\62\2\2\u0090\u0094\t\4\2\2\u0091\u0093\t\5\2\2\u0092")
        buf.write("\u0091\3\2\2\2\u0093\u0096\3\2\2\2\u0094\u0092\3\2\2\2")
        buf.write("\u0094\u0095\3\2\2\2\u0095\u0098\3\2\2\2\u0096\u0094\3")
        buf.write("\2\2\2\u0097\u008f\3\2\2\2\u0097\u0090\3\2\2\2\u0098\u0099")
        buf.write("\3\2\2\2\u0099\u009b\7\60\2\2\u009a\u009c\t\5\2\2\u009b")
        buf.write("\u009a\3\2\2\2\u009c\u009d\3\2\2\2\u009d\u009b\3\2\2\2")
        buf.write("\u009d\u009e\3\2\2\2\u009e\u00ad\3\2\2\2\u009f\u00a1\t")
        buf.write("\6\2\2\u00a0\u00a2\t\7\2\2\u00a1\u00a0\3\2\2\2\u00a1\u00a2")
        buf.write("\3\2\2\2\u00a2\u00ab\3\2\2\2\u00a3\u00ac\7\62\2\2\u00a4")
        buf.write("\u00a8\t\4\2\2\u00a5\u00a7\t\5\2\2\u00a6\u00a5\3\2\2\2")
        buf.write("\u00a7\u00aa\3\2\2\2\u00a8\u00a6\3\2\2\2\u00a8\u00a9\3")
        buf.write("\2\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8\3\2\2\2\u00ab\u00a3")
        buf.write("\3\2\2\2\u00ab\u00a4\3\2\2\2\u00ac\u00ae\3\2\2\2\u00ad")
        buf.write("\u009f\3\2\2\2\u00ad\u00ae\3\2\2\2\u00ae\64\3\2\2\2\u00af")
        buf.write("\u00b5\7$\2\2\u00b0\u00b1\7^\2\2\u00b1\u00b4\t\b\2\2\u00b2")
        buf.write("\u00b4\n\t\2\2\u00b3\u00b0\3\2\2\2\u00b3\u00b2\3\2\2\2")
        buf.write("\u00b4\u00b7\3\2\2\2\u00b5\u00b3\3\2\2\2\u00b5\u00b6\3")
        buf.write("\2\2\2\u00b6\u00b8\3\2\2\2\u00b7\u00b5\3\2\2\2\u00b8\u00b9")
        buf.write("\7$\2\2\u00b9\66\3\2\2\2\u00ba\u00bc\t\n\2\2\u00bb\u00ba")
        buf.write("\3\2\2\2\u00bc\u00bd\3\2\2\2\u00bd\u00bb\3\2\2\2\u00bd")
        buf.write("\u00be\3\2\2\2\u00be\u00bf\3\2\2\2\u00bf\u00c0\b\34\2")
        buf.write("\2\u00c08\3\2\2\2\22\2}\u0080\u0082\u008a\u008d\u0094")
        buf.write("\u0097\u009d\u00a1\u00a8\u00ab\u00ad\u00b3\u00b5\u00bd")
        buf.write("\3\b\2\2")
        return buf.getvalue()


class LittleDuckGrammarLexer(Lexer):

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

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

    INT = 1
    FLOAT = 2
    EQUAL = 3
    TIMES = 4
    DIV = 5
    PLUS = 6
    MINUS = 7
    DIFF = 8
    GREATER = 9
    SMALLER = 10
    L_BRACE = 11
    R_BRACE = 12
    L_BRK = 13
    R_BRK = 14
    COMMA = 15
    SEMICOLON = 16
    COLON = 17
    PROGRAM = 18
    IF = 19
    ELSE = 20
    VAR = 21
    PRINT = 22
    ID = 23
    CTEI = 24
    CTEF = 25
    STRING = 26
    WHITESPACE = 27

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

    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "'int'", "'float'", "'='", "'*'", "'/'", "'+'", "'-'", "'<>'", 
            "'>'", "'<'", "'('", "')'", "'{'", "'}'", "','", "';'", "':'", 
            "'program'", "'if'", "'else'", "'var'", "'print'" ]

    symbolicNames = [ "<INVALID>",
            "INT", "FLOAT", "EQUAL", "TIMES", "DIV", "PLUS", "MINUS", "DIFF", 
            "GREATER", "SMALLER", "L_BRACE", "R_BRACE", "L_BRK", "R_BRK", 
            "COMMA", "SEMICOLON", "COLON", "PROGRAM", "IF", "ELSE", "VAR", 
            "PRINT", "ID", "CTEI", "CTEF", "STRING", "WHITESPACE" ]

    ruleNames = [ "INT", "FLOAT", "EQUAL", "TIMES", "DIV", "PLUS", "MINUS", 
                  "DIFF", "GREATER", "SMALLER", "L_BRACE", "R_BRACE", "L_BRK", 
                  "R_BRK", "COMMA", "SEMICOLON", "COLON", "PROGRAM", "IF", 
                  "ELSE", "VAR", "PRINT", "ID", "CTEI", "CTEF", "STRING", 
                  "WHITESPACE" ]

    grammarFileName = "LittleDuckGrammar.g4"

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


