Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# Generated from \DOT.g4 by ANTLR 4.9 

2from antlr4 import * 

3from io import StringIO 

4from typing.io import TextIO 

5import sys 

6 

7 

8def serializedATN(): 

9 with StringIO() as buf: 

10 buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\35") 

11 buf.write("\u00f5\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") 

12 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") 

13 buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") 

14 buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") 

15 buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") 

16 buf.write("\t\36\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7") 

17 buf.write("\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\13\3\13\3\f\3\f\3\r") 

18 buf.write("\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16") 

19 buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20") 

20 buf.write("\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22") 

21 buf.write("\3\22\3\22\3\22\3\22\3\22\3\23\5\23\177\n\23\3\23\3\23") 

22 buf.write("\6\23\u0083\n\23\r\23\16\23\u0084\3\23\6\23\u0088\n\23") 

23 buf.write("\r\23\16\23\u0089\3\23\3\23\7\23\u008e\n\23\f\23\16\23") 

24 buf.write("\u0091\13\23\5\23\u0093\n\23\5\23\u0095\n\23\3\24\3\24") 

25 buf.write("\3\25\3\25\3\25\3\25\7\25\u009d\n\25\f\25\16\25\u00a0") 

26 buf.write("\13\25\3\25\3\25\3\26\3\26\3\26\3\26\7\26\u00a8\n\26\f") 

27 buf.write("\26\16\26\u00ab\13\26\3\26\3\26\3\27\3\27\7\27\u00b1\n") 

28 buf.write("\27\f\27\16\27\u00b4\13\27\3\27\3\27\3\30\3\30\6\30\u00ba") 

29 buf.write("\n\30\r\30\16\30\u00bb\3\30\3\30\3\31\3\31\3\31\7\31\u00c3") 

30 buf.write("\n\31\f\31\16\31\u00c6\13\31\3\32\3\32\3\33\3\33\3\33") 

31 buf.write("\3\33\7\33\u00ce\n\33\f\33\16\33\u00d1\13\33\3\33\3\33") 

32 buf.write("\3\33\3\33\3\33\3\34\3\34\3\34\3\34\7\34\u00dc\n\34\f") 

33 buf.write("\34\16\34\u00df\13\34\3\34\5\34\u00e2\n\34\3\34\3\34\3") 

34 buf.write("\34\3\35\3\35\7\35\u00e9\n\35\f\35\16\35\u00ec\13\35\3") 

35 buf.write("\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\b\u009e\u00a9\u00b2") 

36 buf.write("\u00cf\u00dd\u00ea\2\37\3\3\5\4\7\5\t\6\13\7\r\b\17\t") 

37 buf.write("\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23") 

38 buf.write("%\24\'\2)\25+\26-\27/\30\61\31\63\2\65\32\67\339\34;\35") 

39 buf.write("\3\2\23\4\2UUuu\4\2VVvv\4\2TTtt\4\2KKkk\4\2EEee\4\2II") 

40 buf.write("ii\4\2CCcc\4\2RRrr\4\2JJjj\4\2FFff\4\2PPpp\4\2QQqq\4\2") 

41 buf.write("GGgg\4\2WWww\4\2DDdd\6\2C\\aac|\u0082\u0101\5\2\13\f\17") 

42 buf.write("\17\"\"\2\u0105\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2") 

43 buf.write("\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21") 

44 buf.write("\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3") 

45 buf.write("\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2") 

46 buf.write("\2\2#\3\2\2\2\2%\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2") 

47 buf.write("\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2") 

48 buf.write("\29\3\2\2\2\2;\3\2\2\2\3=\3\2\2\2\5?\3\2\2\2\7A\3\2\2") 

49 buf.write("\2\tC\3\2\2\2\13E\3\2\2\2\rG\3\2\2\2\17I\3\2\2\2\21K\3") 

50 buf.write("\2\2\2\23N\3\2\2\2\25Q\3\2\2\2\27S\3\2\2\2\31U\3\2\2\2") 

51 buf.write("\33\\\3\2\2\2\35b\3\2\2\2\37j\3\2\2\2!o\3\2\2\2#t\3\2") 

52 buf.write("\2\2%~\3\2\2\2\'\u0096\3\2\2\2)\u0098\3\2\2\2+\u00a3\3") 

53 buf.write("\2\2\2-\u00ae\3\2\2\2/\u00b7\3\2\2\2\61\u00bf\3\2\2\2") 

54 buf.write("\63\u00c7\3\2\2\2\65\u00c9\3\2\2\2\67\u00d7\3\2\2\29\u00e6") 

55 buf.write("\3\2\2\2;\u00f1\3\2\2\2=>\7}\2\2>\4\3\2\2\2?@\7\177\2") 

56 buf.write("\2@\6\3\2\2\2AB\7=\2\2B\b\3\2\2\2CD\7?\2\2D\n\3\2\2\2") 

57 buf.write("EF\7]\2\2F\f\3\2\2\2GH\7_\2\2H\16\3\2\2\2IJ\7.\2\2J\20") 

58 buf.write("\3\2\2\2KL\7/\2\2LM\7@\2\2M\22\3\2\2\2NO\7/\2\2OP\7/\2") 

59 buf.write("\2P\24\3\2\2\2QR\7<\2\2R\26\3\2\2\2ST\7a\2\2T\30\3\2\2") 

60 buf.write("\2UV\t\2\2\2VW\t\3\2\2WX\t\4\2\2XY\t\5\2\2YZ\t\6\2\2Z") 

61 buf.write("[\t\3\2\2[\32\3\2\2\2\\]\t\7\2\2]^\t\4\2\2^_\t\b\2\2_") 

62 buf.write("`\t\t\2\2`a\t\n\2\2a\34\3\2\2\2bc\t\13\2\2cd\t\5\2\2d") 

63 buf.write("e\t\7\2\2ef\t\4\2\2fg\t\b\2\2gh\t\t\2\2hi\t\n\2\2i\36") 

64 buf.write("\3\2\2\2jk\t\f\2\2kl\t\r\2\2lm\t\13\2\2mn\t\16\2\2n \3") 

65 buf.write("\2\2\2op\t\16\2\2pq\t\13\2\2qr\t\7\2\2rs\t\16\2\2s\"\3") 

66 buf.write("\2\2\2tu\t\2\2\2uv\t\17\2\2vw\t\20\2\2wx\t\7\2\2xy\t\4") 

67 buf.write("\2\2yz\t\b\2\2z{\t\t\2\2{|\t\n\2\2|$\3\2\2\2}\177\7/\2") 

68 buf.write("\2~}\3\2\2\2~\177\3\2\2\2\177\u0094\3\2\2\2\u0080\u0082") 

69 buf.write("\7\60\2\2\u0081\u0083\5\'\24\2\u0082\u0081\3\2\2\2\u0083") 

70 buf.write("\u0084\3\2\2\2\u0084\u0082\3\2\2\2\u0084\u0085\3\2\2\2") 

71 buf.write("\u0085\u0095\3\2\2\2\u0086\u0088\5\'\24\2\u0087\u0086") 

72 buf.write("\3\2\2\2\u0088\u0089\3\2\2\2\u0089\u0087\3\2\2\2\u0089") 

73 buf.write("\u008a\3\2\2\2\u008a\u0092\3\2\2\2\u008b\u008f\7\60\2") 

74 buf.write("\2\u008c\u008e\5\'\24\2\u008d\u008c\3\2\2\2\u008e\u0091") 

75 buf.write("\3\2\2\2\u008f\u008d\3\2\2\2\u008f\u0090\3\2\2\2\u0090") 

76 buf.write("\u0093\3\2\2\2\u0091\u008f\3\2\2\2\u0092\u008b\3\2\2\2") 

77 buf.write("\u0092\u0093\3\2\2\2\u0093\u0095\3\2\2\2\u0094\u0080\3") 

78 buf.write("\2\2\2\u0094\u0087\3\2\2\2\u0095&\3\2\2\2\u0096\u0097") 

79 buf.write("\4\62;\2\u0097(\3\2\2\2\u0098\u009e\7$\2\2\u0099\u009a") 

80 buf.write("\7^\2\2\u009a\u009d\7$\2\2\u009b\u009d\13\2\2\2\u009c") 

81 buf.write("\u0099\3\2\2\2\u009c\u009b\3\2\2\2\u009d\u00a0\3\2\2\2") 

82 buf.write("\u009e\u009f\3\2\2\2\u009e\u009c\3\2\2\2\u009f\u00a1\3") 

83 buf.write("\2\2\2\u00a0\u009e\3\2\2\2\u00a1\u00a2\7$\2\2\u00a2*\3") 

84 buf.write("\2\2\2\u00a3\u00a9\7>\2\2\u00a4\u00a8\5-\27\2\u00a5\u00a8") 

85 buf.write("\5/\30\2\u00a6\u00a8\13\2\2\2\u00a7\u00a4\3\2\2\2\u00a7") 

86 buf.write("\u00a5\3\2\2\2\u00a7\u00a6\3\2\2\2\u00a8\u00ab\3\2\2\2") 

87 buf.write("\u00a9\u00aa\3\2\2\2\u00a9\u00a7\3\2\2\2\u00aa\u00ac\3") 

88 buf.write("\2\2\2\u00ab\u00a9\3\2\2\2\u00ac\u00ad\7@\2\2\u00ad,\3") 

89 buf.write("\2\2\2\u00ae\u00b2\7>\2\2\u00af\u00b1\13\2\2\2\u00b0\u00af") 

90 buf.write("\3\2\2\2\u00b1\u00b4\3\2\2\2\u00b2\u00b3\3\2\2\2\u00b2") 

91 buf.write("\u00b0\3\2\2\2\u00b3\u00b5\3\2\2\2\u00b4\u00b2\3\2\2\2") 

92 buf.write("\u00b5\u00b6\7@\2\2\u00b6.\3\2\2\2\u00b7\u00b9\7(\2\2") 

93 buf.write("\u00b8\u00ba\5\63\32\2\u00b9\u00b8\3\2\2\2\u00ba\u00bb") 

94 buf.write("\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bb\u00bc\3\2\2\2\u00bc") 

95 buf.write("\u00bd\3\2\2\2\u00bd\u00be\7=\2\2\u00be\60\3\2\2\2\u00bf") 

96 buf.write("\u00c4\5\63\32\2\u00c0\u00c3\5\63\32\2\u00c1\u00c3\5\'") 

97 buf.write("\24\2\u00c2\u00c0\3\2\2\2\u00c2\u00c1\3\2\2\2\u00c3\u00c6") 

98 buf.write("\3\2\2\2\u00c4\u00c2\3\2\2\2\u00c4\u00c5\3\2\2\2\u00c5") 

99 buf.write("\62\3\2\2\2\u00c6\u00c4\3\2\2\2\u00c7\u00c8\t\21\2\2\u00c8") 

100 buf.write("\64\3\2\2\2\u00c9\u00ca\7\61\2\2\u00ca\u00cb\7,\2\2\u00cb") 

101 buf.write("\u00cf\3\2\2\2\u00cc\u00ce\13\2\2\2\u00cd\u00cc\3\2\2") 

102 buf.write("\2\u00ce\u00d1\3\2\2\2\u00cf\u00d0\3\2\2\2\u00cf\u00cd") 

103 buf.write("\3\2\2\2\u00d0\u00d2\3\2\2\2\u00d1\u00cf\3\2\2\2\u00d2") 

104 buf.write("\u00d3\7,\2\2\u00d3\u00d4\7\61\2\2\u00d4\u00d5\3\2\2\2") 

105 buf.write("\u00d5\u00d6\b\33\2\2\u00d6\66\3\2\2\2\u00d7\u00d8\7\61") 

106 buf.write("\2\2\u00d8\u00d9\7\61\2\2\u00d9\u00dd\3\2\2\2\u00da\u00dc") 

107 buf.write("\13\2\2\2\u00db\u00da\3\2\2\2\u00dc\u00df\3\2\2\2\u00dd") 

108 buf.write("\u00de\3\2\2\2\u00dd\u00db\3\2\2\2\u00de\u00e1\3\2\2\2") 

109 buf.write("\u00df\u00dd\3\2\2\2\u00e0\u00e2\7\17\2\2\u00e1\u00e0") 

110 buf.write("\3\2\2\2\u00e1\u00e2\3\2\2\2\u00e2\u00e3\3\2\2\2\u00e3") 

111 buf.write("\u00e4\7\f\2\2\u00e4\u00e5\b\34\3\2\u00e58\3\2\2\2\u00e6") 

112 buf.write("\u00ea\7%\2\2\u00e7\u00e9\13\2\2\2\u00e8\u00e7\3\2\2\2") 

113 buf.write("\u00e9\u00ec\3\2\2\2\u00ea\u00eb\3\2\2\2\u00ea\u00e8\3") 

114 buf.write("\2\2\2\u00eb\u00ed\3\2\2\2\u00ec\u00ea\3\2\2\2\u00ed\u00ee") 

115 buf.write("\7\f\2\2\u00ee\u00ef\3\2\2\2\u00ef\u00f0\b\35\4\2\u00f0") 

116 buf.write(":\3\2\2\2\u00f1\u00f2\t\22\2\2\u00f2\u00f3\3\2\2\2\u00f3") 

117 buf.write("\u00f4\b\36\4\2\u00f4<\3\2\2\2\25\2~\u0084\u0089\u008f") 

118 buf.write("\u0092\u0094\u009c\u009e\u00a7\u00a9\u00b2\u00bb\u00c2") 

119 buf.write("\u00c4\u00cf\u00dd\u00e1\u00ea\5\3\33\2\3\34\3\b\2\2") 

120 return buf.getvalue() 

121 

122 

123class DOTLexer(Lexer): 

124 

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

126 

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

128 

129 T__0 = 1 

130 T__1 = 2 

131 T__2 = 3 

132 T__3 = 4 

133 T__4 = 5 

134 T__5 = 6 

135 T__6 = 7 

136 T__7 = 8 

137 T__8 = 9 

138 T__9 = 10 

139 T__10 = 11 

140 STRICT = 12 

141 GRAPH = 13 

142 DIGRAPH = 14 

143 NODE = 15 

144 EDGE = 16 

145 SUBGRAPH = 17 

146 NUMBER = 18 

147 STRING = 19 

148 HTML_STRING = 20 

149 TAG = 21 

150 EntityRef = 22 

151 ID = 23 

152 COMMENT = 24 

153 LINE_COMMENT = 25 

154 PREPROC = 26 

155 WS = 27 

156 

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

158 

159 modeNames = ["DEFAULT_MODE"] 

160 

161 literalNames = ["<INVALID>", 

162 "'{'", "'}'", "';'", "'='", "'['", "']'", "','", "'->'", "'--'", 

163 "':'", "'_'"] 

164 

165 symbolicNames = ["<INVALID>", 

166 "STRICT", "GRAPH", "DIGRAPH", "NODE", "EDGE", "SUBGRAPH", "NUMBER", 

167 "STRING", "HTML_STRING", "TAG", "EntityRef", "ID", "COMMENT", 

168 "LINE_COMMENT", "PREPROC", "WS"] 

169 

170 ruleNames = ["T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", 

171 "T__7", "T__8", "T__9", "T__10", "STRICT", "GRAPH", "DIGRAPH", 

172 "NODE", "EDGE", "SUBGRAPH", "NUMBER", "DIGIT", "STRING", 

173 "HTML_STRING", "TAG", "EntityRef", "ID", "LETTER", "COMMENT", 

174 "LINE_COMMENT", "PREPROC", "WS"] 

175 

176 grammarFileName = "DOT.g4" 

177 

178 def __init__(self, input=None, output: TextIO = sys.stdout): 

179 super().__init__(input, output) 

180 self.checkVersion("4.9") 

181 self._interp = LexerATNSimulator( 

182 self, self.atn, self.decisionsToDFA, PredictionContextCache()) 

183 self._actions = None 

184 self._predicates = None 

185 

186 def action(self, localctx: RuleContext, ruleIndex: int, actionIndex: int): 

187 if self._actions is None: 

188 actions = dict() 

189 actions[25] = self.COMMENT_action 

190 actions[26] = self.LINE_COMMENT_action 

191 self._actions = actions 

192 action = self._actions.get(ruleIndex, None) 

193 if action is not None: 

194 action(localctx, actionIndex) 

195 else: 

196 raise Exception("No registered action for:" + str(ruleIndex)) 

197 

198 def COMMENT_action(self, localctx: RuleContext, actionIndex: int): 

199 if actionIndex == 0: 

200 skip() 

201 

202 def LINE_COMMENT_action(self, localctx: RuleContext, actionIndex: int): 

203 if actionIndex == 1: 

204 skip()