# Generated from Naja.g4 by ANTLR 4.9
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\31")
        buf.write("\u00ac\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("\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3")
        buf.write("\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6")
        buf.write("\3\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\t\3")
        buf.write("\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n")
        buf.write("\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\r\3")
        buf.write("\r\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22\3")
        buf.write("\23\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24")
        buf.write("\5\24\u0089\n\24\3\25\5\25\u008c\n\25\3\25\7\25\u008f")
        buf.write("\n\25\f\25\16\25\u0092\13\25\3\26\3\26\6\26\u0096\n\26")
        buf.write("\r\26\16\26\u0097\3\26\3\26\3\27\6\27\u009d\n\27\r\27")
        buf.write("\16\27\u009e\3\27\3\27\6\27\u00a3\n\27\r\27\16\27\u00a4")
        buf.write("\5\27\u00a7\n\27\3\30\3\30\3\30\3\30\2\2\31\3\3\5\4\7")
        buf.write("\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\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\3\2\t\4")
        buf.write("\2--/\61\4\2>>@@\4\2C\\c|\5\2\62;C\\c|\6\2\"\"\62;C\\")
        buf.write("c|\3\2\62;\5\2\13\f\17\17\"\"\2\u00b4\2\3\3\2\2\2\2\5")
        buf.write("\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2")
        buf.write("\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2")
        buf.write("\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2")
        buf.write("\2\37\3\2\2\2\2!\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\3\61")
        buf.write("\3\2\2\2\5\66\3\2\2\2\7;\3\2\2\2\tB\3\2\2\2\13H\3\2\2")
        buf.write("\2\rM\3\2\2\2\17U\3\2\2\2\21X\3\2\2\2\23^\3\2\2\2\25g")
        buf.write("\3\2\2\2\27o\3\2\2\2\31q\3\2\2\2\33s\3\2\2\2\35u\3\2\2")
        buf.write("\2\37w\3\2\2\2!y\3\2\2\2#{\3\2\2\2%}\3\2\2\2\'\u0088\3")
        buf.write("\2\2\2)\u008b\3\2\2\2+\u0093\3\2\2\2-\u009c\3\2\2\2/\u00a8")
        buf.write("\3\2\2\2\61\62\7j\2\2\62\63\7g\2\2\63\64\7c\2\2\64\65")
        buf.write("\7f\2\2\65\4\3\2\2\2\66\67\7v\2\2\678\7c\2\289\7k\2\2")
        buf.write("9:\7n\2\2:\6\3\2\2\2;<\7p\2\2<=\7w\2\2=>\7o\2\2>?\7g\2")
        buf.write("\2?@\7t\2\2@A\7q\2\2A\b\3\2\2\2BC\7v\2\2CD\7g\2\2DE\7")
        buf.write("z\2\2EF\7v\2\2FG\7q\2\2G\n\3\2\2\2HI\7n\2\2IJ\7g\2\2J")
        buf.write("K\7k\2\2KL\7c\2\2L\f\3\2\2\2MN\7g\2\2NO\7u\2\2OP\7e\2")
        buf.write("\2PQ\7t\2\2QR\7g\2\2RS\7x\2\2ST\7c\2\2T\16\3\2\2\2UV\7")
        buf.write("u\2\2VW\7g\2\2W\20\3\2\2\2XY\7u\2\2YZ\7g\2\2Z[\7p\2\2")
        buf.write("[\\\7c\2\2\\]\7q\2\2]\22\3\2\2\2^_\7g\2\2_`\7p\2\2`a\7")
        buf.write("s\2\2ab\7w\2\2bc\7c\2\2cd\7p\2\2de\7v\2\2ef\7q\2\2f\24")
        buf.write("\3\2\2\2gh\7g\2\2hi\7z\2\2ij\7g\2\2jk\7e\2\2kl\7w\2\2")
        buf.write("lm\7v\2\2mn\7g\2\2n\26\3\2\2\2op\7*\2\2p\30\3\2\2\2qr")
        buf.write("\7+\2\2r\32\3\2\2\2st\7=\2\2t\34\3\2\2\2uv\t\2\2\2v\36")
        buf.write("\3\2\2\2wx\7<\2\2x \3\2\2\2yz\7.\2\2z\"\3\2\2\2{|\7}\2")
        buf.write("\2|$\3\2\2\2}~\7\177\2\2~&\3\2\2\2\177\u0089\t\3\2\2\u0080")
        buf.write("\u0081\7@\2\2\u0081\u0089\7?\2\2\u0082\u0083\7>\2\2\u0083")
        buf.write("\u0089\7?\2\2\u0084\u0085\7?\2\2\u0085\u0089\7?\2\2\u0086")
        buf.write("\u0087\7#\2\2\u0087\u0089\7?\2\2\u0088\177\3\2\2\2\u0088")
        buf.write("\u0080\3\2\2\2\u0088\u0082\3\2\2\2\u0088\u0084\3\2\2\2")
        buf.write("\u0088\u0086\3\2\2\2\u0089(\3\2\2\2\u008a\u008c\t\4\2")
        buf.write("\2\u008b\u008a\3\2\2\2\u008c\u0090\3\2\2\2\u008d\u008f")
        buf.write("\t\5\2\2\u008e\u008d\3\2\2\2\u008f\u0092\3\2\2\2\u0090")
        buf.write("\u008e\3\2\2\2\u0090\u0091\3\2\2\2\u0091*\3\2\2\2\u0092")
        buf.write("\u0090\3\2\2\2\u0093\u0095\7$\2\2\u0094\u0096\t\6\2\2")
        buf.write("\u0095\u0094\3\2\2\2\u0096\u0097\3\2\2\2\u0097\u0095\3")
        buf.write("\2\2\2\u0097\u0098\3\2\2\2\u0098\u0099\3\2\2\2\u0099\u009a")
        buf.write("\7$\2\2\u009a,\3\2\2\2\u009b\u009d\t\7\2\2\u009c\u009b")
        buf.write("\3\2\2\2\u009d\u009e\3\2\2\2\u009e\u009c\3\2\2\2\u009e")
        buf.write("\u009f\3\2\2\2\u009f\u00a6\3\2\2\2\u00a0\u00a2\7.\2\2")
        buf.write("\u00a1\u00a3\t\7\2\2\u00a2\u00a1\3\2\2\2\u00a3\u00a4\3")
        buf.write("\2\2\2\u00a4\u00a2\3\2\2\2\u00a4\u00a5\3\2\2\2\u00a5\u00a7")
        buf.write("\3\2\2\2\u00a6\u00a0\3\2\2\2\u00a6\u00a7\3\2\2\2\u00a7")
        buf.write(".\3\2\2\2\u00a8\u00a9\t\b\2\2\u00a9\u00aa\3\2\2\2\u00aa")
        buf.write("\u00ab\b\30\2\2\u00ab\60\3\2\2\2\f\2\u0088\u008b\u008e")
        buf.write("\u0090\u0095\u0097\u009e\u00a4\u00a6\3\b\2\2")
        return buf.getvalue()


class NajaLexer(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
    AP = 11
    FP = 12
    SC = 13
    OP = 14
    ATTR = 15
    VIR = 16
    ACH = 17
    FCH = 18
    OPREL = 19
    ID = 20
    TEXTO = 21
    NUMBER = 22
    WS = 23

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

    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "'head'", "'tail'", "'numero'", "'texto'", "'leia'", "'escreva'", 
            "'se'", "'senao'", "'enquanto'", "'execute'", "'('", "')'", 
            "';'", "':'", "','", "'{'", "'}'" ]

    symbolicNames = [ "<INVALID>",
            "AP", "FP", "SC", "OP", "ATTR", "VIR", "ACH", "FCH", "OPREL", 
            "ID", "TEXTO", "NUMBER", "WS" ]

    ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", 
                  "T__7", "T__8", "T__9", "AP", "FP", "SC", "OP", "ATTR", 
                  "VIR", "ACH", "FCH", "OPREL", "ID", "TEXTO", "NUMBER", 
                  "WS" ]

    grammarFileName = "Naja.g4"

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


