# Generated from C:\Users\Andrew\Documents\Gitrepos\COMP\ajarnagi\project2\app\parser\tm.g4 by ANTLR 4.7.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\30")
        buf.write("\u009f\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\3\3\3\3\3\3\3\7\38\n\3\f\3\16\3;\13\3\3\3\3")
        buf.write("\3\3\4\6\4@\n\4\r\4\16\4A\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\t\3\t\3\t\3\t\3\n\3\n\3\n\3")
        buf.write("\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f")
        buf.write("\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16")
        buf.write("\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17")
        buf.write("\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21")
        buf.write("\3\21\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\24\3\24")
        buf.write("\3\24\3\24\3\25\3\25\6\25\u0096\n\25\r\25\16\25\u0097")
        buf.write("\3\26\3\26\3\27\3\27\3\30\3\30\2\2\31\3\3\5\4\7\5\t\6")
        buf.write("\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20")
        buf.write("\37\21!\22#\23%\24\'\25)\26+\27-\30/\2\3\2\5\4\2\f\f\17")
        buf.write("\17\5\2\13\f\17\17\"\"\5\2\62;C\\c|\2\u00a0\2\3\3\2\2")
        buf.write("\2\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")
        buf.write("\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25")
        buf.write("\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3")
        buf.write("\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2")
        buf.write("\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\3\61\3\2\2")
        buf.write("\2\5\63\3\2\2\2\7?\3\2\2\2\tE\3\2\2\2\13G\3\2\2\2\rI\3")
        buf.write("\2\2\2\17K\3\2\2\2\21M\3\2\2\2\23T\3\2\2\2\25Z\3\2\2\2")
        buf.write("\27a\3\2\2\2\31h\3\2\2\2\33n\3\2\2\2\35y\3\2\2\2\37~\3")
        buf.write("\2\2\2!\u0083\3\2\2\2#\u0087\3\2\2\2%\u008b\3\2\2\2\'")
        buf.write("\u008f\3\2\2\2)\u0093\3\2\2\2+\u0099\3\2\2\2-\u009b\3")
        buf.write("\2\2\2/\u009d\3\2\2\2\61\62\7=\2\2\62\4\3\2\2\2\63\64")
        buf.write("\7/\2\2\64\65\7/\2\2\659\3\2\2\2\668\n\2\2\2\67\66\3\2")
        buf.write("\2\28;\3\2\2\29\67\3\2\2\29:\3\2\2\2:<\3\2\2\2;9\3\2\2")
        buf.write("\2<=\b\3\2\2=\6\3\2\2\2>@\t\3\2\2?>\3\2\2\2@A\3\2\2\2")
        buf.write("A?\3\2\2\2AB\3\2\2\2BC\3\2\2\2CD\b\4\2\2D\b\3\2\2\2EF")
        buf.write("\7}\2\2F\n\3\2\2\2GH\7\177\2\2H\f\3\2\2\2IJ\7<\2\2J\16")
        buf.write("\3\2\2\2KL\7.\2\2L\20\3\2\2\2MN\7u\2\2NO\7v\2\2OP\7c\2")
        buf.write("\2PQ\7v\2\2QR\7g\2\2RS\7u\2\2S\22\3\2\2\2TU\7u\2\2UV\7")
        buf.write("v\2\2VW\7c\2\2WX\7t\2\2XY\7v\2\2Y\24\3\2\2\2Z[\7c\2\2")
        buf.write("[\\\7e\2\2\\]\7e\2\2]^\7g\2\2^_\7r\2\2_`\7v\2\2`\26\3")
        buf.write("\2\2\2ab\7t\2\2bc\7g\2\2cd\7l\2\2de\7g\2\2ef\7e\2\2fg")
        buf.write("\7v\2\2g\30\3\2\2\2hi\7c\2\2ij\7n\2\2jk\7r\2\2kl\7j\2")
        buf.write("\2lm\7c\2\2m\32\3\2\2\2no\7v\2\2op\7c\2\2pq\7r\2\2qr\7")
        buf.write("g\2\2rs\7/\2\2st\7c\2\2tu\7n\2\2uv\7r\2\2vw\7j\2\2wx\7")
        buf.write("c\2\2x\34\3\2\2\2yz\7t\2\2z{\7y\2\2{|\7T\2\2|}\7v\2\2")
        buf.write("}\36\3\2\2\2~\177\7t\2\2\177\u0080\7y\2\2\u0080\u0081")
        buf.write("\7N\2\2\u0081\u0082\7v\2\2\u0082 \3\2\2\2\u0083\u0084")
        buf.write("\7t\2\2\u0084\u0085\7T\2\2\u0085\u0086\7n\2\2\u0086\"")
        buf.write("\3\2\2\2\u0087\u0088\7t\2\2\u0088\u0089\7N\2\2\u0089\u008a")
        buf.write("\7n\2\2\u008a$\3\2\2\2\u008b\u008c\7t\2\2\u008c\u008d")
        buf.write("\7T\2\2\u008d\u008e\7v\2\2\u008e&\3\2\2\2\u008f\u0090")
        buf.write("\7t\2\2\u0090\u0091\7N\2\2\u0091\u0092\7v\2\2\u0092(\3")
        buf.write("\2\2\2\u0093\u0095\5/\30\2\u0094\u0096\5/\30\2\u0095\u0094")
        buf.write("\3\2\2\2\u0096\u0097\3\2\2\2\u0097\u0095\3\2\2\2\u0097")
        buf.write("\u0098\3\2\2\2\u0098*\3\2\2\2\u0099\u009a\5/\30\2\u009a")
        buf.write(",\3\2\2\2\u009b\u009c\13\2\2\2\u009c.\3\2\2\2\u009d\u009e")
        buf.write("\t\4\2\2\u009e\60\3\2\2\2\6\29A\u0097\3\b\2\2")
        return buf.getvalue()


class tmLexer(Lexer):

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

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

    T__0 = 1
    COMMENT = 2
    WS = 3
    INIL = 4
    INIR = 5
    COL = 6
    SEP = 7
    STATES = 8
    START = 9
    ACCEPT = 10
    REJECT = 11
    ALPHA = 12
    TALPHA = 13
    RWRT = 14
    RWLT = 15
    RRL = 16
    RLL = 17
    RRT = 18
    RLT = 19
    NAME = 20
    ALPHACHAR = 21
    CHAR = 22

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

    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "';'", "'{'", "'}'", "':'", "','", "'states'", "'start'", "'accept'", 
            "'reject'", "'alpha'", "'tape-alpha'", "'rwRt'", "'rwLt'", "'rRl'", 
            "'rLl'", "'rRt'", "'rLt'" ]

    symbolicNames = [ "<INVALID>",
            "COMMENT", "WS", "INIL", "INIR", "COL", "SEP", "STATES", "START", 
            "ACCEPT", "REJECT", "ALPHA", "TALPHA", "RWRT", "RWLT", "RRL", 
            "RLL", "RRT", "RLT", "NAME", "ALPHACHAR", "CHAR" ]

    ruleNames = [ "T__0", "COMMENT", "WS", "INIL", "INIR", "COL", "SEP", 
                  "STATES", "START", "ACCEPT", "REJECT", "ALPHA", "TALPHA", 
                  "RWRT", "RWLT", "RRL", "RLL", "RRT", "RLT", "NAME", "ALPHACHAR", 
                  "CHAR", "ALPHANUM" ]

    grammarFileName = "tm.g4"

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


