From b94a5e16b3c800f03bfd13250a92acaee74c229f Mon Sep 17 00:00:00 2001 From: Kevin Matz Date: Sat, 20 Oct 2018 18:25:04 -0400 Subject: [PATCH] grammar has stabilized. distribute antlr files. --- .gitignore | 3 - CommentMacroLexer.py | 207 +++++++ CommentMacroListener.py | 100 +++ CommentMacroParser.py | 1303 +++++++++++++++++++++++++++++++++++++++ MANIFEST.in | 5 +- 5 files changed, 1614 insertions(+), 4 deletions(-) create mode 100644 CommentMacroLexer.py create mode 100644 CommentMacroListener.py create mode 100644 CommentMacroParser.py diff --git a/.gitignore b/.gitignore index 4065c5b..5b9d187 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,6 @@ # Antlr4 *.interp *.tokens -CommentMacroLexer.py -CommentMacroListener.py -CommentMacroParser.py # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/CommentMacroLexer.py b/CommentMacroLexer.py new file mode 100644 index 0000000..08c8b3e --- /dev/null +++ b/CommentMacroLexer.py @@ -0,0 +1,207 @@ +# Generated from CommentMacro.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-") + buf.write("\u0111\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\4\35\t\35\4\36") + buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") + buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\3\2") + buf.write("\3\2\3\3\3\3\3\3\3\4\3\4\3\4\3\5\3\5\3\5\3\6\3\6\3\6\3") + buf.write("\7\3\7\3\7\3\b\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\13") + buf.write("\3\13\3\13\3\f\3\f\3\f\3\r\3\r\3\r\3\16\3\16\3\16\3\17") + buf.write("\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3\21\3\22\3\22\3\22") + buf.write("\3\23\3\23\3\23\3\24\3\24\3\24\3\25\3\25\3\25\3\26\3\26") + buf.write("\3\26\3\27\3\27\3\27\3\30\3\30\3\30\3\31\3\31\3\31\3\32") + buf.write("\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35\3\35") + buf.write("\3\36\3\36\3\37\3\37\3 \6 \u00b5\n \r \16 \u00b6\3 \3") + buf.write(" \6 \u00bb\n \r \16 \u00bc\5 \u00bf\n \3!\3!\3\"\3\"\3") + buf.write("#\3#\3$\3$\3%\3%\3&\3&\3\'\3\'\3(\3(\3)\3)\3)\3)\3*\5") + buf.write("*\u00d6\n*\3*\3*\3+\6+\u00db\n+\r+\16+\u00dc\3+\3+\3,") + buf.write("\3,\3,\3,\3,\3,\7,\u00e7\n,\f,\16,\u00ea\13,\3,\3,\3,") + buf.write("\3,\3,\3,\3,\7,\u00f3\n,\f,\16,\u00f6\13,\3,\3,\5,\u00fa") + buf.write("\n,\3,\3,\3-\3-\3-\3-\7-\u0102\n-\f-\16-\u0105\13-\3-") + buf.write("\3-\7-\u0109\n-\f-\16-\u010c\13-\5-\u010e\n-\3-\3-\4\u00e8") + buf.write("\u00f4\2.\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25") + buf.write("\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+") + buf.write("\27-\30/\31\61\32\63\33\65\34\67\359\36;\37=\2? A!C\"") + buf.write("E#G$I%K&M\'O(Q)S*U+W,Y-\3\2\7\3\2\62;\4\2JJjj\4\2FFff") + buf.write("\4\2\13\13\"\"\4\2\f\f\17\17\2\u011a\2\3\3\2\2\2\2\5\3") + buf.write("\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\2") + buf.write("\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2") + buf.write("\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2") + buf.write("\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2") + buf.write("\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3") + buf.write("\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2") + buf.write("\2\2;\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") + buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") + buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") + buf.write("\3\2\2\2\3[\3\2\2\2\5]\3\2\2\2\7`\3\2\2\2\tc\3\2\2\2\13") + buf.write("f\3\2\2\2\ri\3\2\2\2\17l\3\2\2\2\21o\3\2\2\2\23r\3\2\2") + buf.write("\2\25v\3\2\2\2\27y\3\2\2\2\31|\3\2\2\2\33\177\3\2\2\2") + buf.write("\35\u0082\3\2\2\2\37\u0085\3\2\2\2!\u0088\3\2\2\2#\u008b") + buf.write("\3\2\2\2%\u008e\3\2\2\2\'\u0091\3\2\2\2)\u0094\3\2\2\2") + buf.write("+\u0097\3\2\2\2-\u009a\3\2\2\2/\u009d\3\2\2\2\61\u00a0") + buf.write("\3\2\2\2\63\u00a3\3\2\2\2\65\u00a6\3\2\2\2\67\u00a9\3") + buf.write("\2\2\29\u00ac\3\2\2\2;\u00af\3\2\2\2=\u00b1\3\2\2\2?\u00b4") + buf.write("\3\2\2\2A\u00c0\3\2\2\2C\u00c2\3\2\2\2E\u00c4\3\2\2\2") + buf.write("G\u00c6\3\2\2\2I\u00c8\3\2\2\2K\u00ca\3\2\2\2M\u00cc\3") + buf.write("\2\2\2O\u00ce\3\2\2\2Q\u00d0\3\2\2\2S\u00d5\3\2\2\2U\u00da") + buf.write("\3\2\2\2W\u00f9\3\2\2\2Y\u010d\3\2\2\2[\\\7<\2\2\\\4\3") + buf.write("\2\2\2]^\7I\2\2^_\7O\2\2_\6\3\2\2\2`a\7J\2\2ab\7O\2\2") + buf.write("b\b\3\2\2\2cd\7C\2\2de\7O\2\2e\n\3\2\2\2fg\7T\2\2gh\7") + buf.write("O\2\2h\f\3\2\2\2ij\7T\2\2jk\7C\2\2k\16\3\2\2\2lm\7T\2") + buf.write("\2mn\7Q\2\2n\20\3\2\2\2op\7H\2\2pq\7O\2\2q\22\3\2\2\2") + buf.write("rs\7H\2\2st\7I\2\2tu\7O\2\2u\24\3\2\2\2vw\7E\2\2wx\7O") + buf.write("\2\2x\26\3\2\2\2yz\7I\2\2z{\7N\2\2{\30\3\2\2\2|}\7J\2") + buf.write("\2}~\7N\2\2~\32\3\2\2\2\177\u0080\7C\2\2\u0080\u0081\7") + buf.write("N\2\2\u0081\34\3\2\2\2\u0082\u0083\7T\2\2\u0083\u0084") + buf.write("\7N\2\2\u0084\36\3\2\2\2\u0085\u0086\7I\2\2\u0086\u0087") + buf.write("\7D\2\2\u0087 \3\2\2\2\u0088\u0089\7J\2\2\u0089\u008a") + buf.write("\7D\2\2\u008a\"\3\2\2\2\u008b\u008c\7C\2\2\u008c\u008d") + buf.write("\7D\2\2\u008d$\3\2\2\2\u008e\u008f\7T\2\2\u008f\u0090") + buf.write("\7D\2\2\u0090&\3\2\2\2\u0091\u0092\7I\2\2\u0092\u0093") + buf.write("\7U\2\2\u0093(\3\2\2\2\u0094\u0095\7J\2\2\u0095\u0096") + buf.write("\7U\2\2\u0096*\3\2\2\2\u0097\u0098\7C\2\2\u0098\u0099") + buf.write("\7U\2\2\u0099,\3\2\2\2\u009a\u009b\7T\2\2\u009b\u009c") + buf.write("\7U\2\2\u009c.\3\2\2\2\u009d\u009e\7E\2\2\u009e\u009f") + buf.write("\7R\2\2\u009f\60\3\2\2\2\u00a0\u00a1\7T\2\2\u00a1\u00a2") + buf.write("\7X\2\2\u00a2\62\3\2\2\2\u00a3\u00a4\7T\2\2\u00a4\u00a5") + buf.write("\7P\2\2\u00a5\64\3\2\2\2\u00a6\u00a7\7I\2\2\u00a7\u00a8") + buf.write("\7M\2\2\u00a8\66\3\2\2\2\u00a9\u00aa\7J\2\2\u00aa\u00ab") + buf.write("\7M\2\2\u00ab8\3\2\2\2\u00ac\u00ad\7T\2\2\u00ad\u00ae") + buf.write("\7M\2\2\u00ae:\3\2\2\2\u00af\u00b0\7.\2\2\u00b0<\3\2\2") + buf.write("\2\u00b1\u00b2\t\2\2\2\u00b2>\3\2\2\2\u00b3\u00b5\5=\37") + buf.write("\2\u00b4\u00b3\3\2\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00b4") + buf.write("\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00be\3\2\2\2\u00b8") + buf.write("\u00ba\7\60\2\2\u00b9\u00bb\5=\37\2\u00ba\u00b9\3\2\2") + buf.write("\2\u00bb\u00bc\3\2\2\2\u00bc\u00ba\3\2\2\2\u00bc\u00bd") + buf.write("\3\2\2\2\u00bd\u00bf\3\2\2\2\u00be\u00b8\3\2\2\2\u00be") + buf.write("\u00bf\3\2\2\2\u00bf@\3\2\2\2\u00c0\u00c1\7\61\2\2\u00c1") + buf.write("B\3\2\2\2\u00c2\u00c3\7@\2\2\u00c3D\3\2\2\2\u00c4\u00c5") + buf.write("\7-\2\2\u00c5F\3\2\2\2\u00c6\u00c7\7/\2\2\u00c7H\3\2\2") + buf.write("\2\u00c8\u00c9\7,\2\2\u00c9J\3\2\2\2\u00ca\u00cb\7v\2") + buf.write("\2\u00cbL\3\2\2\2\u00cc\u00cd\t\3\2\2\u00cdN\3\2\2\2\u00ce") + buf.write("\u00cf\t\4\2\2\u00cfP\3\2\2\2\u00d0\u00d1\7K\2\2\u00d1") + buf.write("\u00d2\7Q\2\2\u00d2\u00d3\7R\2\2\u00d3R\3\2\2\2\u00d4") + buf.write("\u00d6\7\17\2\2\u00d5\u00d4\3\2\2\2\u00d5\u00d6\3\2\2") + buf.write("\2\u00d6\u00d7\3\2\2\2\u00d7\u00d8\7\f\2\2\u00d8T\3\2") + buf.write("\2\2\u00d9\u00db\t\5\2\2\u00da\u00d9\3\2\2\2\u00db\u00dc") + buf.write("\3\2\2\2\u00dc\u00da\3\2\2\2\u00dc\u00dd\3\2\2\2\u00dd") + buf.write("\u00de\3\2\2\2\u00de\u00df\b+\2\2\u00dfV\3\2\2\2\u00e0") + buf.write("\u00e1\7>\2\2\u00e1\u00e2\7#\2\2\u00e2\u00e3\7/\2\2\u00e3") + buf.write("\u00e4\7/\2\2\u00e4\u00e8\3\2\2\2\u00e5\u00e7\13\2\2\2") + buf.write("\u00e6\u00e5\3\2\2\2\u00e7\u00ea\3\2\2\2\u00e8\u00e9\3") + buf.write("\2\2\2\u00e8\u00e6\3\2\2\2\u00e9\u00eb\3\2\2\2\u00ea\u00e8") + buf.write("\3\2\2\2\u00eb\u00ec\7/\2\2\u00ec\u00ed\7/\2\2\u00ed\u00fa") + buf.write("\7@\2\2\u00ee\u00ef\7\61\2\2\u00ef\u00f0\7,\2\2\u00f0") + buf.write("\u00f4\3\2\2\2\u00f1\u00f3\13\2\2\2\u00f2\u00f1\3\2\2") + buf.write("\2\u00f3\u00f6\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f4\u00f2") + buf.write("\3\2\2\2\u00f5\u00f7\3\2\2\2\u00f6\u00f4\3\2\2\2\u00f7") + buf.write("\u00f8\7,\2\2\u00f8\u00fa\7\61\2\2\u00f9\u00e0\3\2\2\2") + buf.write("\u00f9\u00ee\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00fc\b") + buf.write(",\2\2\u00fcX\3\2\2\2\u00fd\u00fe\7\61\2\2\u00fe\u00ff") + buf.write("\7\61\2\2\u00ff\u0103\3\2\2\2\u0100\u0102\n\6\2\2\u0101") + buf.write("\u0100\3\2\2\2\u0102\u0105\3\2\2\2\u0103\u0101\3\2\2\2") + buf.write("\u0103\u0104\3\2\2\2\u0104\u010e\3\2\2\2\u0105\u0103\3") + buf.write("\2\2\2\u0106\u010a\7%\2\2\u0107\u0109\n\6\2\2\u0108\u0107") + buf.write("\3\2\2\2\u0109\u010c\3\2\2\2\u010a\u0108\3\2\2\2\u010a") + buf.write("\u010b\3\2\2\2\u010b\u010e\3\2\2\2\u010c\u010a\3\2\2\2") + buf.write("\u010d\u00fd\3\2\2\2\u010d\u0106\3\2\2\2\u010e\u010f\3") + buf.write("\2\2\2\u010f\u0110\b-\2\2\u0110Z\3\2\2\2\16\2\u00b6\u00bc") + buf.write("\u00be\u00d5\u00dc\u00e8\u00f4\u00f9\u0103\u010a\u010d") + buf.write("\3\b\2\2") + return buf.getvalue() + + +class CommentMacroLexer(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 + T__11 = 12 + T__12 = 13 + T__13 = 14 + T__14 = 15 + T__15 = 16 + T__16 = 17 + T__17 = 18 + T__18 = 19 + T__19 = 20 + T__20 = 21 + T__21 = 22 + T__22 = 23 + T__23 = 24 + T__24 = 25 + T__25 = 26 + T__26 = 27 + T__27 = 28 + T__28 = 29 + NUMBER = 30 + SLASH = 31 + THRU = 32 + NEXT = 33 + PREV = 34 + CURRENT = 35 + TIME = 36 + WHOLEHOG = 37 + DP8K = 38 + IOP = 39 + NEWLINE = 40 + WS = 41 + COMMENT = 42 + LINE_COMMENT = 43 + + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + + modeNames = [ "DEFAULT_MODE" ] + + literalNames = [ "", + "':'", "'GM'", "'HM'", "'AM'", "'RM'", "'RA'", "'RO'", "'FM'", + "'FGM'", "'CM'", "'GL'", "'HL'", "'AL'", "'RL'", "'GB'", "'HB'", + "'AB'", "'RB'", "'GS'", "'HS'", "'AS'", "'RS'", "'CP'", "'RV'", + "'RN'", "'GK'", "'HK'", "'RK'", "','", "'/'", "'>'", "'+'", + "'-'", "'*'", "'t'", "'IOP'" ] + + symbolicNames = [ "", + "NUMBER", "SLASH", "THRU", "NEXT", "PREV", "CURRENT", "TIME", + "WHOLEHOG", "DP8K", "IOP", "NEWLINE", "WS", "COMMENT", "LINE_COMMENT" ] + + ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", + "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", + "T__14", "T__15", "T__16", "T__17", "T__18", "T__19", + "T__20", "T__21", "T__22", "T__23", "T__24", "T__25", + "T__26", "T__27", "T__28", "DIGIT", "NUMBER", "SLASH", + "THRU", "NEXT", "PREV", "CURRENT", "TIME", "WHOLEHOG", + "DP8K", "IOP", "NEWLINE", "WS", "COMMENT", "LINE_COMMENT" ] + + grammarFileName = "CommentMacro.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 + + diff --git a/CommentMacroListener.py b/CommentMacroListener.py new file mode 100644 index 0000000..c979090 --- /dev/null +++ b/CommentMacroListener.py @@ -0,0 +1,100 @@ +# Generated from CommentMacro.g4 by ANTLR 4.7.1 +from antlr4 import * +if __name__ is not None and "." in __name__: + from .CommentMacroParser import CommentMacroParser +else: + from CommentMacroParser import CommentMacroParser + +# This class defines a complete listener for a parse tree produced by CommentMacroParser. +class CommentMacroListener(ParseTreeListener): + + # Enter a parse tree produced by CommentMacroParser#prog. + def enterProg(self, ctx:CommentMacroParser.ProgContext): + pass + + # Exit a parse tree produced by CommentMacroParser#prog. + def exitProg(self, ctx:CommentMacroParser.ProgContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#statement. + def enterStatement(self, ctx:CommentMacroParser.StatementContext): + pass + + # Exit a parse tree produced by CommentMacroParser#statement. + def exitStatement(self, ctx:CommentMacroParser.StatementContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#macro. + def enterMacro(self, ctx:CommentMacroParser.MacroContext): + pass + + # Exit a parse tree produced by CommentMacroParser#macro. + def exitMacro(self, ctx:CommentMacroParser.MacroContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#master. + def enterMaster(self, ctx:CommentMacroParser.MasterContext): + pass + + # Exit a parse tree produced by CommentMacroParser#master. + def exitMaster(self, ctx:CommentMacroParser.MasterContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#time. + def enterTime(self, ctx:CommentMacroParser.TimeContext): + pass + + # Exit a parse tree produced by CommentMacroParser#time. + def exitTime(self, ctx:CommentMacroParser.TimeContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#device. + def enterDevice(self, ctx:CommentMacroParser.DeviceContext): + pass + + # Exit a parse tree produced by CommentMacroParser#device. + def exitDevice(self, ctx:CommentMacroParser.DeviceContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#nodeType. + def enterNodeType(self, ctx:CommentMacroParser.NodeTypeContext): + pass + + # Exit a parse tree produced by CommentMacroParser#nodeType. + def exitNodeType(self, ctx:CommentMacroParser.NodeTypeContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#target. + def enterTarget(self, ctx:CommentMacroParser.TargetContext): + pass + + # Exit a parse tree produced by CommentMacroParser#target. + def exitTarget(self, ctx:CommentMacroParser.TargetContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#span. + def enterSpan(self, ctx:CommentMacroParser.SpanContext): + pass + + # Exit a parse tree produced by CommentMacroParser#span. + def exitSpan(self, ctx:CommentMacroParser.SpanContext): + pass + + + # Enter a parse tree produced by CommentMacroParser#number. + def enterNumber(self, ctx:CommentMacroParser.NumberContext): + pass + + # Exit a parse tree produced by CommentMacroParser#number. + def exitNumber(self, ctx:CommentMacroParser.NumberContext): + pass + + diff --git a/CommentMacroParser.py b/CommentMacroParser.py new file mode 100644 index 0000000..d7829c6 --- /dev/null +++ b/CommentMacroParser.py @@ -0,0 +1,1303 @@ +# Generated from CommentMacro.g4 by ANTLR 4.7.1 +# encoding: utf-8 +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\3-") + buf.write("\u00ed\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\3\2\6\2\30\n\2\r\2") + buf.write("\16\2\31\3\2\3\2\3\3\3\3\3\3\7\3!\n\3\f\3\16\3$\13\3\3") + buf.write("\3\5\3\'\n\3\3\3\5\3*\n\3\3\4\3\4\3\4\5\4/\n\4\3\4\3\4") + buf.write("\3\4\3\4\3\4\5\4\66\n\4\3\4\3\4\3\4\5\4;\n\4\3\4\3\4\3") + buf.write("\4\5\4@\n\4\3\4\3\4\3\4\5\4E\n\4\3\4\3\4\5\4I\n\4\3\4") + buf.write("\3\4\5\4M\n\4\3\4\3\4\3\4\3\4\3\4\5\4T\n\4\3\4\5\4W\n") + buf.write("\4\3\4\3\4\3\4\5\4\\\n\4\3\4\5\4_\n\4\3\4\3\4\3\4\5\4") + buf.write("d\n\4\3\4\3\4\3\4\5\4i\n\4\3\4\3\4\3\4\3\4\3\4\5\4p\n") + buf.write("\4\3\4\3\4\3\4\5\4u\n\4\3\4\3\4\3\4\5\4z\n\4\3\4\3\4\3") + buf.write("\4\5\4\177\n\4\3\4\3\4\3\4\5\4\u0084\n\4\3\4\3\4\3\4\5") + buf.write("\4\u0089\n\4\3\4\3\4\3\4\5\4\u008e\n\4\3\4\3\4\3\4\5\4") + buf.write("\u0093\n\4\3\4\3\4\3\4\5\4\u0098\n\4\3\4\3\4\3\4\5\4\u009d") + buf.write("\n\4\3\4\3\4\3\4\5\4\u00a2\n\4\3\4\3\4\3\4\5\4\u00a7\n") + buf.write("\4\3\4\3\4\3\4\5\4\u00ac\n\4\3\4\3\4\3\4\5\4\u00b1\n\4") + buf.write("\3\4\3\4\3\4\5\4\u00b6\n\4\3\4\3\4\3\4\5\4\u00bb\n\4\3") + buf.write("\4\3\4\3\4\3\4\3\4\5\4\u00c2\n\4\3\4\3\4\3\4\5\4\u00c7") + buf.write("\n\4\3\4\3\4\3\4\5\4\u00cc\n\4\5\4\u00ce\n\4\3\5\3\5\5") + buf.write("\5\u00d2\n\5\3\6\3\6\3\6\3\7\3\7\3\7\3\b\3\b\3\t\3\t\5") + buf.write("\t\u00de\n\t\3\t\3\t\7\t\u00e2\n\t\f\t\16\t\u00e5\13\t") + buf.write("\3\n\3\n\3\n\3\n\3\13\3\13\3\13\2\2\f\2\4\6\b\n\f\16\20") + buf.write("\22\24\2\3\3\2\')\2\u0127\2\27\3\2\2\2\4)\3\2\2\2\6\u00cd") + buf.write("\3\2\2\2\b\u00d1\3\2\2\2\n\u00d3\3\2\2\2\f\u00d6\3\2\2") + buf.write("\2\16\u00d9\3\2\2\2\20\u00dd\3\2\2\2\22\u00e6\3\2\2\2") + buf.write("\24\u00ea\3\2\2\2\26\30\5\4\3\2\27\26\3\2\2\2\30\31\3") + buf.write("\2\2\2\31\27\3\2\2\2\31\32\3\2\2\2\32\33\3\2\2\2\33\34") + buf.write("\7\2\2\3\34\3\3\2\2\2\35\"\5\6\4\2\36\37\7\3\2\2\37!\5") + buf.write("\6\4\2 \36\3\2\2\2!$\3\2\2\2\" \3\2\2\2\"#\3\2\2\2#&\3") + buf.write("\2\2\2$\"\3\2\2\2%\'\7*\2\2&%\3\2\2\2&\'\3\2\2\2\'*\3") + buf.write("\2\2\2(*\7*\2\2)\35\3\2\2\2)(\3\2\2\2*\5\3\2\2\2+,\7\4") + buf.write("\2\2,.\5\b\5\2-/\5\f\7\2.-\3\2\2\2./\3\2\2\2/\u00ce\3") + buf.write("\2\2\2\60\61\7\4\2\2\61\62\5\b\5\2\62\63\7!\2\2\63\65") + buf.write("\5\24\13\2\64\66\5\f\7\2\65\64\3\2\2\2\65\66\3\2\2\2\66") + buf.write("\u00ce\3\2\2\2\678\7\5\2\28:\5\b\5\29;\5\f\7\2:9\3\2\2") + buf.write("\2:;\3\2\2\2;\u00ce\3\2\2\2<=\7\6\2\2=?\5\b\5\2>@\5\f") + buf.write("\7\2?>\3\2\2\2?@\3\2\2\2@\u00ce\3\2\2\2AB\7\7\2\2BD\5") + buf.write("\b\5\2CE\5\f\7\2DC\3\2\2\2DE\3\2\2\2E\u00ce\3\2\2\2FH") + buf.write("\7\b\2\2GI\5\f\7\2HG\3\2\2\2HI\3\2\2\2I\u00ce\3\2\2\2") + buf.write("JL\7\t\2\2KM\5\f\7\2LK\3\2\2\2LM\3\2\2\2M\u00ce\3\2\2") + buf.write("\2NO\7\n\2\2OP\5\b\5\2PQ\7!\2\2QS\5\24\13\2RT\5\n\6\2") + buf.write("SR\3\2\2\2ST\3\2\2\2TV\3\2\2\2UW\5\f\7\2VU\3\2\2\2VW\3") + buf.write("\2\2\2W\u00ce\3\2\2\2XY\7\13\2\2Y[\5\24\13\2Z\\\5\n\6") + buf.write("\2[Z\3\2\2\2[\\\3\2\2\2\\^\3\2\2\2]_\5\f\7\2^]\3\2\2\2") + buf.write("^_\3\2\2\2_\u00ce\3\2\2\2`a\7\f\2\2ac\5\24\13\2bd\5\f") + buf.write("\7\2cb\3\2\2\2cd\3\2\2\2d\u00ce\3\2\2\2ef\7\r\2\2fh\5") + buf.write("\20\t\2gi\5\f\7\2hg\3\2\2\2hi\3\2\2\2i\u00ce\3\2\2\2j") + buf.write("k\7\r\2\2kl\5\20\t\2lm\7!\2\2mo\5\24\13\2np\5\f\7\2on") + buf.write("\3\2\2\2op\3\2\2\2p\u00ce\3\2\2\2qr\7\16\2\2rt\5\20\t") + buf.write("\2su\5\f\7\2ts\3\2\2\2tu\3\2\2\2u\u00ce\3\2\2\2vw\7\17") + buf.write("\2\2wy\5\20\t\2xz\5\f\7\2yx\3\2\2\2yz\3\2\2\2z\u00ce\3") + buf.write("\2\2\2{|\7\20\2\2|~\5\20\t\2}\177\5\f\7\2~}\3\2\2\2~\177") + buf.write("\3\2\2\2\177\u00ce\3\2\2\2\u0080\u0081\7\21\2\2\u0081") + buf.write("\u0083\5\20\t\2\u0082\u0084\5\f\7\2\u0083\u0082\3\2\2") + buf.write("\2\u0083\u0084\3\2\2\2\u0084\u00ce\3\2\2\2\u0085\u0086") + buf.write("\7\22\2\2\u0086\u0088\5\20\t\2\u0087\u0089\5\f\7\2\u0088") + buf.write("\u0087\3\2\2\2\u0088\u0089\3\2\2\2\u0089\u00ce\3\2\2\2") + buf.write("\u008a\u008b\7\23\2\2\u008b\u008d\5\20\t\2\u008c\u008e") + buf.write("\5\f\7\2\u008d\u008c\3\2\2\2\u008d\u008e\3\2\2\2\u008e") + buf.write("\u00ce\3\2\2\2\u008f\u0090\7\24\2\2\u0090\u0092\5\20\t") + buf.write("\2\u0091\u0093\5\f\7\2\u0092\u0091\3\2\2\2\u0092\u0093") + buf.write("\3\2\2\2\u0093\u00ce\3\2\2\2\u0094\u0095\7\25\2\2\u0095") + buf.write("\u0097\5\20\t\2\u0096\u0098\5\f\7\2\u0097\u0096\3\2\2") + buf.write("\2\u0097\u0098\3\2\2\2\u0098\u00ce\3\2\2\2\u0099\u009a") + buf.write("\7\26\2\2\u009a\u009c\5\20\t\2\u009b\u009d\5\f\7\2\u009c") + buf.write("\u009b\3\2\2\2\u009c\u009d\3\2\2\2\u009d\u00ce\3\2\2\2") + buf.write("\u009e\u009f\7\27\2\2\u009f\u00a1\5\20\t\2\u00a0\u00a2") + buf.write("\5\f\7\2\u00a1\u00a0\3\2\2\2\u00a1\u00a2\3\2\2\2\u00a2") + buf.write("\u00ce\3\2\2\2\u00a3\u00a4\7\30\2\2\u00a4\u00a6\5\20\t") + buf.write("\2\u00a5\u00a7\5\f\7\2\u00a6\u00a5\3\2\2\2\u00a6\u00a7") + buf.write("\3\2\2\2\u00a7\u00ce\3\2\2\2\u00a8\u00a9\7\31\2\2\u00a9") + buf.write("\u00ab\5\24\13\2\u00aa\u00ac\5\f\7\2\u00ab\u00aa\3\2\2") + buf.write("\2\u00ab\u00ac\3\2\2\2\u00ac\u00ce\3\2\2\2\u00ad\u00ae") + buf.write("\7\31\2\2\u00ae\u00b0\7#\2\2\u00af\u00b1\5\f\7\2\u00b0") + buf.write("\u00af\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1\u00ce\3\2\2\2") + buf.write("\u00b2\u00b3\7\31\2\2\u00b3\u00b5\7$\2\2\u00b4\u00b6\5") + buf.write("\f\7\2\u00b5\u00b4\3\2\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00ce") + buf.write("\3\2\2\2\u00b7\u00b8\7\32\2\2\u00b8\u00ba\5\24\13\2\u00b9") + buf.write("\u00bb\5\f\7\2\u00ba\u00b9\3\2\2\2\u00ba\u00bb\3\2\2\2") + buf.write("\u00bb\u00ce\3\2\2\2\u00bc\u00bd\7\33\2\2\u00bd\u00ce") + buf.write("\5\f\7\2\u00be\u00bf\7\34\2\2\u00bf\u00c1\5\24\13\2\u00c0") + buf.write("\u00c2\5\f\7\2\u00c1\u00c0\3\2\2\2\u00c1\u00c2\3\2\2\2") + buf.write("\u00c2\u00ce\3\2\2\2\u00c3\u00c4\7\35\2\2\u00c4\u00c6") + buf.write("\5\24\13\2\u00c5\u00c7\5\f\7\2\u00c6\u00c5\3\2\2\2\u00c6") + buf.write("\u00c7\3\2\2\2\u00c7\u00ce\3\2\2\2\u00c8\u00c9\7\36\2") + buf.write("\2\u00c9\u00cb\5\24\13\2\u00ca\u00cc\5\f\7\2\u00cb\u00ca") + buf.write("\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc\u00ce\3\2\2\2\u00cd") + buf.write("+\3\2\2\2\u00cd\60\3\2\2\2\u00cd\67\3\2\2\2\u00cd<\3\2") + buf.write("\2\2\u00cdA\3\2\2\2\u00cdF\3\2\2\2\u00cdJ\3\2\2\2\u00cd") + buf.write("N\3\2\2\2\u00cdX\3\2\2\2\u00cd`\3\2\2\2\u00cde\3\2\2\2") + buf.write("\u00cdj\3\2\2\2\u00cdq\3\2\2\2\u00cdv\3\2\2\2\u00cd{\3") + buf.write("\2\2\2\u00cd\u0080\3\2\2\2\u00cd\u0085\3\2\2\2\u00cd\u008a") + buf.write("\3\2\2\2\u00cd\u008f\3\2\2\2\u00cd\u0094\3\2\2\2\u00cd") + buf.write("\u0099\3\2\2\2\u00cd\u009e\3\2\2\2\u00cd\u00a3\3\2\2\2") + buf.write("\u00cd\u00a8\3\2\2\2\u00cd\u00ad\3\2\2\2\u00cd\u00b2\3") + buf.write("\2\2\2\u00cd\u00b7\3\2\2\2\u00cd\u00bc\3\2\2\2\u00cd\u00be") + buf.write("\3\2\2\2\u00cd\u00c3\3\2\2\2\u00cd\u00c8\3\2\2\2\u00ce") + buf.write("\7\3\2\2\2\u00cf\u00d2\5\20\t\2\u00d0\u00d2\7%\2\2\u00d1") + buf.write("\u00cf\3\2\2\2\u00d1\u00d0\3\2\2\2\u00d2\t\3\2\2\2\u00d3") + buf.write("\u00d4\7&\2\2\u00d4\u00d5\5\24\13\2\u00d5\13\3\2\2\2\u00d6") + buf.write("\u00d7\5\16\b\2\u00d7\u00d8\5\24\13\2\u00d8\r\3\2\2\2") + buf.write("\u00d9\u00da\t\2\2\2\u00da\17\3\2\2\2\u00db\u00de\5\24") + buf.write("\13\2\u00dc\u00de\5\22\n\2\u00dd\u00db\3\2\2\2\u00dd\u00dc") + buf.write("\3\2\2\2\u00de\u00e3\3\2\2\2\u00df\u00e0\7\37\2\2\u00e0") + buf.write("\u00e2\5\20\t\2\u00e1\u00df\3\2\2\2\u00e2\u00e5\3\2\2") + buf.write("\2\u00e3\u00e1\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4\21\3") + buf.write("\2\2\2\u00e5\u00e3\3\2\2\2\u00e6\u00e7\5\24\13\2\u00e7") + buf.write("\u00e8\7\"\2\2\u00e8\u00e9\5\24\13\2\u00e9\23\3\2\2\2") + buf.write("\u00ea\u00eb\7 \2\2\u00eb\25\3\2\2\2*\31\"&).\65:?DHL") + buf.write("SV[^choty~\u0083\u0088\u008d\u0092\u0097\u009c\u00a1\u00a6") + buf.write("\u00ab\u00b0\u00b5\u00ba\u00c1\u00c6\u00cb\u00cd\u00d1") + buf.write("\u00dd\u00e3") + return buf.getvalue() + + +class CommentMacroParser ( Parser ): + + grammarFileName = "CommentMacro.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + sharedContextCache = PredictionContextCache() + + literalNames = [ "", "':'", "'GM'", "'HM'", "'AM'", "'RM'", + "'RA'", "'RO'", "'FM'", "'FGM'", "'CM'", "'GL'", "'HL'", + "'AL'", "'RL'", "'GB'", "'HB'", "'AB'", "'RB'", "'GS'", + "'HS'", "'AS'", "'RS'", "'CP'", "'RV'", "'RN'", "'GK'", + "'HK'", "'RK'", "','", "", "'/'", "'>'", "'+'", + "'-'", "'*'", "'t'", "", "", "'IOP'" ] + + symbolicNames = [ "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "NUMBER", "SLASH", "THRU", + "NEXT", "PREV", "CURRENT", "TIME", "WHOLEHOG", "DP8K", + "IOP", "NEWLINE", "WS", "COMMENT", "LINE_COMMENT" ] + + RULE_prog = 0 + RULE_statement = 1 + RULE_macro = 2 + RULE_master = 3 + RULE_time = 4 + RULE_device = 5 + RULE_nodeType = 6 + RULE_target = 7 + RULE_span = 8 + RULE_number = 9 + + ruleNames = [ "prog", "statement", "macro", "master", "time", "device", + "nodeType", "target", "span", "number" ] + + EOF = Token.EOF + 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 + T__11=12 + T__12=13 + T__13=14 + T__14=15 + T__15=16 + T__16=17 + T__17=18 + T__18=19 + T__19=20 + T__20=21 + T__21=22 + T__22=23 + T__23=24 + T__24=25 + T__25=26 + T__26=27 + T__27=28 + T__28=29 + NUMBER=30 + SLASH=31 + THRU=32 + NEXT=33 + PREV=34 + CURRENT=35 + TIME=36 + WHOLEHOG=37 + DP8K=38 + IOP=39 + NEWLINE=40 + WS=41 + COMMENT=42 + LINE_COMMENT=43 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.7.1") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + class ProgContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EOF(self): + return self.getToken(CommentMacroParser.EOF, 0) + + def statement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CommentMacroParser.StatementContext) + else: + return self.getTypedRuleContext(CommentMacroParser.StatementContext,i) + + + def getRuleIndex(self): + return CommentMacroParser.RULE_prog + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProg" ): + listener.enterProg(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProg" ): + listener.exitProg(self) + + + + + def prog(self): + + localctx = CommentMacroParser.ProgContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_prog) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 21 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 20 + self.statement() + self.state = 23 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.T__1) | (1 << CommentMacroParser.T__2) | (1 << CommentMacroParser.T__3) | (1 << CommentMacroParser.T__4) | (1 << CommentMacroParser.T__5) | (1 << CommentMacroParser.T__6) | (1 << CommentMacroParser.T__7) | (1 << CommentMacroParser.T__8) | (1 << CommentMacroParser.T__9) | (1 << CommentMacroParser.T__10) | (1 << CommentMacroParser.T__11) | (1 << CommentMacroParser.T__12) | (1 << CommentMacroParser.T__13) | (1 << CommentMacroParser.T__14) | (1 << CommentMacroParser.T__15) | (1 << CommentMacroParser.T__16) | (1 << CommentMacroParser.T__17) | (1 << CommentMacroParser.T__18) | (1 << CommentMacroParser.T__19) | (1 << CommentMacroParser.T__20) | (1 << CommentMacroParser.T__21) | (1 << CommentMacroParser.T__22) | (1 << CommentMacroParser.T__23) | (1 << CommentMacroParser.T__24) | (1 << CommentMacroParser.T__25) | (1 << CommentMacroParser.T__26) | (1 << CommentMacroParser.T__27) | (1 << CommentMacroParser.NEWLINE))) != 0)): + break + + self.state = 25 + self.match(CommentMacroParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StatementContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def macro(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CommentMacroParser.MacroContext) + else: + return self.getTypedRuleContext(CommentMacroParser.MacroContext,i) + + + def NEWLINE(self): + return self.getToken(CommentMacroParser.NEWLINE, 0) + + def getRuleIndex(self): + return CommentMacroParser.RULE_statement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStatement" ): + listener.enterStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStatement" ): + listener.exitStatement(self) + + + + + def statement(self): + + localctx = CommentMacroParser.StatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_statement) + self._la = 0 # Token type + try: + self.state = 39 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [CommentMacroParser.T__1, CommentMacroParser.T__2, CommentMacroParser.T__3, CommentMacroParser.T__4, CommentMacroParser.T__5, CommentMacroParser.T__6, CommentMacroParser.T__7, CommentMacroParser.T__8, CommentMacroParser.T__9, CommentMacroParser.T__10, CommentMacroParser.T__11, CommentMacroParser.T__12, CommentMacroParser.T__13, CommentMacroParser.T__14, CommentMacroParser.T__15, CommentMacroParser.T__16, CommentMacroParser.T__17, CommentMacroParser.T__18, CommentMacroParser.T__19, CommentMacroParser.T__20, CommentMacroParser.T__21, CommentMacroParser.T__22, CommentMacroParser.T__23, CommentMacroParser.T__24, CommentMacroParser.T__25, CommentMacroParser.T__26, CommentMacroParser.T__27]: + self.enterOuterAlt(localctx, 1) + self.state = 27 + self.macro() + self.state = 32 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==CommentMacroParser.T__0: + self.state = 28 + self.match(CommentMacroParser.T__0) + self.state = 29 + self.macro() + self.state = 34 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 36 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,2,self._ctx) + if la_ == 1: + self.state = 35 + self.match(CommentMacroParser.NEWLINE) + + + pass + elif token in [CommentMacroParser.NEWLINE]: + self.enterOuterAlt(localctx, 2) + self.state = 38 + self.match(CommentMacroParser.NEWLINE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MacroContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def master(self): + return self.getTypedRuleContext(CommentMacroParser.MasterContext,0) + + + def device(self): + return self.getTypedRuleContext(CommentMacroParser.DeviceContext,0) + + + def SLASH(self): + return self.getToken(CommentMacroParser.SLASH, 0) + + def number(self): + return self.getTypedRuleContext(CommentMacroParser.NumberContext,0) + + + def time(self): + return self.getTypedRuleContext(CommentMacroParser.TimeContext,0) + + + def target(self): + return self.getTypedRuleContext(CommentMacroParser.TargetContext,0) + + + def NEXT(self): + return self.getToken(CommentMacroParser.NEXT, 0) + + def PREV(self): + return self.getToken(CommentMacroParser.PREV, 0) + + def getRuleIndex(self): + return CommentMacroParser.RULE_macro + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMacro" ): + listener.enterMacro(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMacro" ): + listener.exitMacro(self) + + + + + def macro(self): + + localctx = CommentMacroParser.MacroContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_macro) + self._la = 0 # Token type + try: + self.state = 203 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,36,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 41 + self.match(CommentMacroParser.T__1) + self.state = 42 + self.master() + self.state = 44 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 43 + self.device() + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 46 + self.match(CommentMacroParser.T__1) + self.state = 47 + self.master() + self.state = 48 + self.match(CommentMacroParser.SLASH) + self.state = 49 + self.number() + self.state = 51 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 50 + self.device() + + + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 53 + self.match(CommentMacroParser.T__2) + self.state = 54 + self.master() + self.state = 56 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 55 + self.device() + + + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 58 + self.match(CommentMacroParser.T__3) + self.state = 59 + self.master() + self.state = 61 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 60 + self.device() + + + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 63 + self.match(CommentMacroParser.T__4) + self.state = 64 + self.master() + self.state = 66 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 65 + self.device() + + + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 68 + self.match(CommentMacroParser.T__5) + self.state = 70 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 69 + self.device() + + + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 72 + self.match(CommentMacroParser.T__6) + self.state = 74 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 73 + self.device() + + + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 76 + self.match(CommentMacroParser.T__7) + self.state = 77 + self.master() + self.state = 78 + self.match(CommentMacroParser.SLASH) + self.state = 79 + self.number() + self.state = 81 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==CommentMacroParser.TIME: + self.state = 80 + self.time() + + + self.state = 84 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 83 + self.device() + + + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 86 + self.match(CommentMacroParser.T__8) + self.state = 87 + self.number() + self.state = 89 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==CommentMacroParser.TIME: + self.state = 88 + self.time() + + + self.state = 92 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 91 + self.device() + + + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 94 + self.match(CommentMacroParser.T__9) + self.state = 95 + self.number() + self.state = 97 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 96 + self.device() + + + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 99 + self.match(CommentMacroParser.T__10) + self.state = 100 + self.target() + self.state = 102 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 101 + self.device() + + + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 104 + self.match(CommentMacroParser.T__10) + self.state = 105 + self.target() + self.state = 106 + self.match(CommentMacroParser.SLASH) + self.state = 107 + self.number() + self.state = 109 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 108 + self.device() + + + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 111 + self.match(CommentMacroParser.T__11) + self.state = 112 + self.target() + self.state = 114 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 113 + self.device() + + + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 116 + self.match(CommentMacroParser.T__12) + self.state = 117 + self.target() + self.state = 119 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 118 + self.device() + + + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 121 + self.match(CommentMacroParser.T__13) + self.state = 122 + self.target() + self.state = 124 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 123 + self.device() + + + pass + + elif la_ == 16: + self.enterOuterAlt(localctx, 16) + self.state = 126 + self.match(CommentMacroParser.T__14) + self.state = 127 + self.target() + self.state = 129 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 128 + self.device() + + + pass + + elif la_ == 17: + self.enterOuterAlt(localctx, 17) + self.state = 131 + self.match(CommentMacroParser.T__15) + self.state = 132 + self.target() + self.state = 134 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 133 + self.device() + + + pass + + elif la_ == 18: + self.enterOuterAlt(localctx, 18) + self.state = 136 + self.match(CommentMacroParser.T__16) + self.state = 137 + self.target() + self.state = 139 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 138 + self.device() + + + pass + + elif la_ == 19: + self.enterOuterAlt(localctx, 19) + self.state = 141 + self.match(CommentMacroParser.T__17) + self.state = 142 + self.target() + self.state = 144 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 143 + self.device() + + + pass + + elif la_ == 20: + self.enterOuterAlt(localctx, 20) + self.state = 146 + self.match(CommentMacroParser.T__18) + self.state = 147 + self.target() + self.state = 149 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 148 + self.device() + + + pass + + elif la_ == 21: + self.enterOuterAlt(localctx, 21) + self.state = 151 + self.match(CommentMacroParser.T__19) + self.state = 152 + self.target() + self.state = 154 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 153 + self.device() + + + pass + + elif la_ == 22: + self.enterOuterAlt(localctx, 22) + self.state = 156 + self.match(CommentMacroParser.T__20) + self.state = 157 + self.target() + self.state = 159 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 158 + self.device() + + + pass + + elif la_ == 23: + self.enterOuterAlt(localctx, 23) + self.state = 161 + self.match(CommentMacroParser.T__21) + self.state = 162 + self.target() + self.state = 164 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 163 + self.device() + + + pass + + elif la_ == 24: + self.enterOuterAlt(localctx, 24) + self.state = 166 + self.match(CommentMacroParser.T__22) + self.state = 167 + self.number() + self.state = 169 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 168 + self.device() + + + pass + + elif la_ == 25: + self.enterOuterAlt(localctx, 25) + self.state = 171 + self.match(CommentMacroParser.T__22) + self.state = 172 + self.match(CommentMacroParser.NEXT) + self.state = 174 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 173 + self.device() + + + pass + + elif la_ == 26: + self.enterOuterAlt(localctx, 26) + self.state = 176 + self.match(CommentMacroParser.T__22) + self.state = 177 + self.match(CommentMacroParser.PREV) + self.state = 179 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 178 + self.device() + + + pass + + elif la_ == 27: + self.enterOuterAlt(localctx, 27) + self.state = 181 + self.match(CommentMacroParser.T__23) + self.state = 182 + self.number() + self.state = 184 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 183 + self.device() + + + pass + + elif la_ == 28: + self.enterOuterAlt(localctx, 28) + self.state = 186 + self.match(CommentMacroParser.T__24) + self.state = 187 + self.device() + pass + + elif la_ == 29: + self.enterOuterAlt(localctx, 29) + self.state = 188 + self.match(CommentMacroParser.T__25) + self.state = 189 + self.number() + self.state = 191 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 190 + self.device() + + + pass + + elif la_ == 30: + self.enterOuterAlt(localctx, 30) + self.state = 193 + self.match(CommentMacroParser.T__26) + self.state = 194 + self.number() + self.state = 196 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 195 + self.device() + + + pass + + elif la_ == 31: + self.enterOuterAlt(localctx, 31) + self.state = 198 + self.match(CommentMacroParser.T__27) + self.state = 199 + self.number() + self.state = 201 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0): + self.state = 200 + self.device() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MasterContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def target(self): + return self.getTypedRuleContext(CommentMacroParser.TargetContext,0) + + + def CURRENT(self): + return self.getToken(CommentMacroParser.CURRENT, 0) + + def getRuleIndex(self): + return CommentMacroParser.RULE_master + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMaster" ): + listener.enterMaster(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMaster" ): + listener.exitMaster(self) + + + + + def master(self): + + localctx = CommentMacroParser.MasterContext(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_master) + try: + self.enterOuterAlt(localctx, 1) + self.state = 207 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [CommentMacroParser.NUMBER]: + self.state = 205 + self.target() + pass + elif token in [CommentMacroParser.CURRENT]: + self.state = 206 + self.match(CommentMacroParser.CURRENT) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TimeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TIME(self): + return self.getToken(CommentMacroParser.TIME, 0) + + def number(self): + return self.getTypedRuleContext(CommentMacroParser.NumberContext,0) + + + def getRuleIndex(self): + return CommentMacroParser.RULE_time + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTime" ): + listener.enterTime(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTime" ): + listener.exitTime(self) + + + + + def time(self): + + localctx = CommentMacroParser.TimeContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_time) + try: + self.enterOuterAlt(localctx, 1) + self.state = 209 + self.match(CommentMacroParser.TIME) + self.state = 210 + self.number() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DeviceContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def nodeType(self): + return self.getTypedRuleContext(CommentMacroParser.NodeTypeContext,0) + + + def number(self): + return self.getTypedRuleContext(CommentMacroParser.NumberContext,0) + + + def getRuleIndex(self): + return CommentMacroParser.RULE_device + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDevice" ): + listener.enterDevice(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDevice" ): + listener.exitDevice(self) + + + + + def device(self): + + localctx = CommentMacroParser.DeviceContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_device) + try: + self.enterOuterAlt(localctx, 1) + self.state = 212 + self.nodeType() + self.state = 213 + self.number() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NodeTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WHOLEHOG(self): + return self.getToken(CommentMacroParser.WHOLEHOG, 0) + + def DP8K(self): + return self.getToken(CommentMacroParser.DP8K, 0) + + def IOP(self): + return self.getToken(CommentMacroParser.IOP, 0) + + def getRuleIndex(self): + return CommentMacroParser.RULE_nodeType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNodeType" ): + listener.enterNodeType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNodeType" ): + listener.exitNodeType(self) + + + + + def nodeType(self): + + localctx = CommentMacroParser.NodeTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_nodeType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 215 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CommentMacroParser.WHOLEHOG) | (1 << CommentMacroParser.DP8K) | (1 << CommentMacroParser.IOP))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TargetContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def number(self): + return self.getTypedRuleContext(CommentMacroParser.NumberContext,0) + + + def span(self): + return self.getTypedRuleContext(CommentMacroParser.SpanContext,0) + + + def target(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CommentMacroParser.TargetContext) + else: + return self.getTypedRuleContext(CommentMacroParser.TargetContext,i) + + + def getRuleIndex(self): + return CommentMacroParser.RULE_target + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTarget" ): + listener.enterTarget(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTarget" ): + listener.exitTarget(self) + + + + + def target(self): + + localctx = CommentMacroParser.TargetContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_target) + try: + self.enterOuterAlt(localctx, 1) + self.state = 219 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,38,self._ctx) + if la_ == 1: + self.state = 217 + self.number() + pass + + elif la_ == 2: + self.state = 218 + self.span() + pass + + + self.state = 225 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,39,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 221 + self.match(CommentMacroParser.T__28) + self.state = 222 + self.target() + self.state = 227 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,39,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SpanContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def number(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CommentMacroParser.NumberContext) + else: + return self.getTypedRuleContext(CommentMacroParser.NumberContext,i) + + + def THRU(self): + return self.getToken(CommentMacroParser.THRU, 0) + + def getRuleIndex(self): + return CommentMacroParser.RULE_span + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSpan" ): + listener.enterSpan(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSpan" ): + listener.exitSpan(self) + + + + + def span(self): + + localctx = CommentMacroParser.SpanContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_span) + try: + self.enterOuterAlt(localctx, 1) + self.state = 228 + self.number() + self.state = 229 + self.match(CommentMacroParser.THRU) + self.state = 230 + self.number() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NumberContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def NUMBER(self): + return self.getToken(CommentMacroParser.NUMBER, 0) + + def getRuleIndex(self): + return CommentMacroParser.RULE_number + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNumber" ): + listener.enterNumber(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNumber" ): + listener.exitNumber(self) + + + + + def number(self): + + localctx = CommentMacroParser.NumberContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_number) + try: + self.enterOuterAlt(localctx, 1) + self.state = 232 + self.match(CommentMacroParser.NUMBER) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + + + diff --git a/MANIFEST.in b/MANIFEST.in index d19a3be..8009042 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,7 @@ include comment.py -include CommentMacro.g4 +include CommentMacroLexer.py +include CommentMacroListener.py +include CommentMacroParser.py +include OscCommentMacroListener.py include LICENSE.md include README.md