kodexa 7.4.414781565138__py3-none-any.whl → 8.0.14958192442__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. kodexa/dataclasses/__init__.py +1 -1
  2. kodexa/model/__init__.py +2 -2
  3. kodexa/model/utils.py +1 -1
  4. kodexa/pipeline/pipeline.py +1 -1
  5. kodexa/platform/client.py +1 -2
  6. kodexa/selectors/__init__.py +1 -1
  7. kodexa/selectors/ast.py +371 -98
  8. kodexa/selectors/error.py +29 -0
  9. kodexa/selectors/kodexa-ast-visitor.py +268 -0
  10. kodexa/selectors/parser.py +91 -0
  11. kodexa/selectors/resources/KodexaSelector.interp +99 -0
  12. kodexa/selectors/resources/KodexaSelector.tokens +56 -0
  13. kodexa/selectors/resources/KodexaSelectorLexer.interp +119 -0
  14. kodexa/selectors/resources/KodexaSelectorLexer.py +204 -0
  15. kodexa/selectors/resources/KodexaSelectorLexer.tokens +56 -0
  16. kodexa/selectors/resources/KodexaSelectorListener.py +570 -0
  17. kodexa/selectors/resources/KodexaSelectorParser.py +3246 -0
  18. kodexa/selectors/resources/KodexaSelectorVisitor.py +323 -0
  19. kodexa/selectors/visitor.py +265 -0
  20. kodexa/steps/__init__.py +4 -2
  21. kodexa/steps/common.py +0 -68
  22. kodexa/testing/test_utils.py +1 -1
  23. {kodexa-7.4.414781565138.dist-info → kodexa-8.0.14958192442.dist-info}/METADATA +3 -1
  24. kodexa-8.0.14958192442.dist-info/RECORD +53 -0
  25. {kodexa-7.4.414781565138.dist-info → kodexa-8.0.14958192442.dist-info}/WHEEL +1 -1
  26. kodexa/model/model.py +0 -3259
  27. kodexa/model/persistence.py +0 -2017
  28. kodexa/selectors/core.py +0 -124
  29. kodexa/selectors/lexrules.py +0 -137
  30. kodexa/selectors/lextab.py +0 -83
  31. kodexa/selectors/lextab.pyi +0 -1
  32. kodexa/selectors/parserules.py +0 -414
  33. kodexa/selectors/parserules.pyi +0 -1
  34. kodexa/selectors/parsetab.py +0 -90
  35. kodexa/selectors/parsetab.pyi +0 -1
  36. kodexa-7.4.414781565138.dist-info/RECORD +0 -51
  37. {kodexa-7.4.414781565138.dist-info → kodexa-8.0.14958192442.dist-info}/LICENSE +0 -0
@@ -0,0 +1,3246 @@
1
+ # Generated from resources/KodexaSelector.g4 by ANTLR 4.13.1
2
+ # encoding: utf-8
3
+ from antlr4 import *
4
+ from io import StringIO
5
+ import sys
6
+ if sys.version_info[1] > 5:
7
+ from typing import TextIO
8
+ else:
9
+ from typing.io import TextIO
10
+
11
+ def serializedATN():
12
+ return [
13
+ 4,1,33,229,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,
14
+ 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,
15
+ 2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,
16
+ 7,20,2,21,7,21,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
17
+ 1,1,1,1,1,1,1,1,1,1,1,3,1,63,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
18
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
19
+ 1,1,1,1,1,1,5,1,92,8,1,10,1,12,1,95,9,1,1,2,1,2,1,2,3,2,100,8,2,
20
+ 1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,5,4,114,8,4,10,4,
21
+ 12,4,117,9,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,
22
+ 3,5,132,8,5,1,6,1,6,1,6,3,6,137,8,6,1,7,1,7,1,8,1,8,1,8,1,8,1,8,
23
+ 3,8,146,8,8,1,9,1,9,1,9,1,9,3,9,152,8,9,1,10,1,10,1,10,1,10,1,10,
24
+ 1,10,1,10,1,10,1,10,1,10,3,10,164,8,10,1,10,1,10,5,10,168,8,10,10,
25
+ 10,12,10,171,9,10,1,11,1,11,1,11,1,11,1,11,5,11,178,8,11,10,11,12,
26
+ 11,181,9,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,15,1,
27
+ 15,1,16,1,16,1,16,1,16,3,16,198,8,16,1,17,1,17,1,17,1,17,3,17,204,
28
+ 8,17,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,3,19,214,8,19,1,20,
29
+ 1,20,1,20,1,20,1,20,1,20,5,20,222,8,20,10,20,12,20,225,9,20,1,21,
30
+ 1,21,1,21,0,5,2,8,20,22,40,22,0,2,4,6,8,10,12,14,16,18,20,22,24,
31
+ 26,28,30,32,34,36,38,40,42,0,3,1,0,28,29,1,0,24,25,1,0,5,6,247,0,
32
+ 44,1,0,0,0,2,62,1,0,0,0,4,99,1,0,0,0,6,101,1,0,0,0,8,104,1,0,0,0,
33
+ 10,131,1,0,0,0,12,136,1,0,0,0,14,138,1,0,0,0,16,145,1,0,0,0,18,151,
34
+ 1,0,0,0,20,163,1,0,0,0,22,172,1,0,0,0,24,182,1,0,0,0,26,186,1,0,
35
+ 0,0,28,189,1,0,0,0,30,191,1,0,0,0,32,197,1,0,0,0,34,203,1,0,0,0,
36
+ 36,205,1,0,0,0,38,213,1,0,0,0,40,215,1,0,0,0,42,226,1,0,0,0,44,45,
37
+ 3,2,1,0,45,1,1,0,0,0,46,47,6,1,-1,0,47,48,5,19,0,0,48,63,3,2,1,11,
38
+ 49,63,3,32,16,0,50,51,3,20,10,0,51,52,3,42,21,0,52,53,3,8,4,0,53,
39
+ 63,1,0,0,0,54,63,3,8,4,0,55,63,3,4,2,0,56,63,3,6,3,0,57,63,3,20,
40
+ 10,0,58,63,3,16,8,0,59,60,5,5,0,0,60,63,3,16,8,0,61,63,3,30,15,0,
41
+ 62,46,1,0,0,0,62,49,1,0,0,0,62,50,1,0,0,0,62,54,1,0,0,0,62,55,1,
42
+ 0,0,0,62,56,1,0,0,0,62,57,1,0,0,0,62,58,1,0,0,0,62,59,1,0,0,0,62,
43
+ 61,1,0,0,0,63,93,1,0,0,0,64,65,10,19,0,0,65,66,5,1,0,0,66,92,3,2,
44
+ 1,20,67,68,10,18,0,0,68,69,5,2,0,0,69,92,3,2,1,19,70,71,10,17,0,
45
+ 0,71,72,5,16,0,0,72,92,3,2,1,18,73,74,10,16,0,0,74,75,5,17,0,0,75,
46
+ 92,3,2,1,17,76,77,10,15,0,0,77,78,5,18,0,0,78,92,3,2,1,16,79,80,
47
+ 10,14,0,0,80,81,5,19,0,0,81,92,3,2,1,15,82,83,10,13,0,0,83,84,5,
48
+ 15,0,0,84,92,3,2,1,14,85,86,10,12,0,0,86,87,5,3,0,0,87,92,3,2,1,
49
+ 13,88,89,10,10,0,0,89,90,5,4,0,0,90,92,3,2,1,11,91,64,1,0,0,0,91,
50
+ 67,1,0,0,0,91,70,1,0,0,0,91,73,1,0,0,0,91,76,1,0,0,0,91,79,1,0,0,
51
+ 0,91,82,1,0,0,0,91,85,1,0,0,0,91,88,1,0,0,0,92,95,1,0,0,0,93,91,
52
+ 1,0,0,0,93,94,1,0,0,0,94,3,1,0,0,0,95,93,1,0,0,0,96,100,5,5,0,0,
53
+ 97,98,5,5,0,0,98,100,3,8,4,0,99,96,1,0,0,0,99,97,1,0,0,0,100,5,1,
54
+ 0,0,0,101,102,5,6,0,0,102,103,3,8,4,0,103,7,1,0,0,0,104,105,6,4,
55
+ -1,0,105,106,3,10,5,0,106,115,1,0,0,0,107,108,10,2,0,0,108,109,5,
56
+ 5,0,0,109,114,3,10,5,0,110,111,10,1,0,0,111,112,5,6,0,0,112,114,
57
+ 3,10,5,0,113,107,1,0,0,0,113,110,1,0,0,0,114,117,1,0,0,0,115,113,
58
+ 1,0,0,0,115,116,1,0,0,0,116,9,1,0,0,0,117,115,1,0,0,0,118,132,3,
59
+ 14,7,0,119,120,3,14,7,0,120,121,3,22,11,0,121,132,1,0,0,0,122,123,
60
+ 3,12,6,0,123,124,3,14,7,0,124,132,1,0,0,0,125,126,3,12,6,0,126,127,
61
+ 3,14,7,0,127,128,3,22,11,0,128,132,1,0,0,0,129,132,5,7,0,0,130,132,
62
+ 5,8,0,0,131,118,1,0,0,0,131,119,1,0,0,0,131,122,1,0,0,0,131,125,
63
+ 1,0,0,0,131,129,1,0,0,0,131,130,1,0,0,0,132,11,1,0,0,0,133,134,5,
64
+ 32,0,0,134,137,5,9,0,0,135,137,5,10,0,0,136,133,1,0,0,0,136,135,
65
+ 1,0,0,0,137,13,1,0,0,0,138,139,3,16,8,0,139,15,1,0,0,0,140,146,5,
66
+ 20,0,0,141,142,5,30,0,0,142,143,5,22,0,0,143,146,5,20,0,0,144,146,
67
+ 3,18,9,0,145,140,1,0,0,0,145,141,1,0,0,0,145,144,1,0,0,0,146,17,
68
+ 1,0,0,0,147,148,5,30,0,0,148,149,5,22,0,0,149,152,5,30,0,0,150,152,
69
+ 5,30,0,0,151,147,1,0,0,0,151,150,1,0,0,0,152,19,1,0,0,0,153,154,
70
+ 6,10,-1,0,154,164,3,26,13,0,155,164,5,27,0,0,156,164,3,28,14,0,157,
71
+ 164,3,30,15,0,158,164,3,32,16,0,159,160,5,11,0,0,160,161,3,2,1,0,
72
+ 161,162,5,12,0,0,162,164,1,0,0,0,163,153,1,0,0,0,163,155,1,0,0,0,
73
+ 163,156,1,0,0,0,163,157,1,0,0,0,163,158,1,0,0,0,163,159,1,0,0,0,
74
+ 164,169,1,0,0,0,165,166,10,1,0,0,166,168,3,24,12,0,167,165,1,0,0,
75
+ 0,168,171,1,0,0,0,169,167,1,0,0,0,169,170,1,0,0,0,170,21,1,0,0,0,
76
+ 171,169,1,0,0,0,172,173,6,11,-1,0,173,174,3,24,12,0,174,179,1,0,
77
+ 0,0,175,176,10,1,0,0,176,178,3,24,12,0,177,175,1,0,0,0,178,181,1,
78
+ 0,0,0,179,177,1,0,0,0,179,180,1,0,0,0,180,23,1,0,0,0,181,179,1,0,
79
+ 0,0,182,183,5,13,0,0,183,184,3,2,1,0,184,185,5,14,0,0,185,25,1,0,
80
+ 0,0,186,187,5,23,0,0,187,188,3,18,9,0,188,27,1,0,0,0,189,190,7,0,
81
+ 0,0,190,29,1,0,0,0,191,192,7,1,0,0,192,31,1,0,0,0,193,194,3,36,18,
82
+ 0,194,195,3,38,19,0,195,198,1,0,0,0,196,198,3,34,17,0,197,193,1,
83
+ 0,0,0,197,196,1,0,0,0,198,33,1,0,0,0,199,200,5,24,0,0,200,204,3,
84
+ 38,19,0,201,202,5,25,0,0,202,204,3,38,19,0,203,199,1,0,0,0,203,201,
85
+ 1,0,0,0,204,35,1,0,0,0,205,206,5,26,0,0,206,37,1,0,0,0,207,208,5,
86
+ 11,0,0,208,214,5,12,0,0,209,210,5,11,0,0,210,211,3,40,20,0,211,212,
87
+ 5,12,0,0,212,214,1,0,0,0,213,207,1,0,0,0,213,209,1,0,0,0,214,39,
88
+ 1,0,0,0,215,216,6,20,-1,0,216,217,3,2,1,0,217,223,1,0,0,0,218,219,
89
+ 10,1,0,0,219,220,5,21,0,0,220,222,3,2,1,0,221,218,1,0,0,0,222,225,
90
+ 1,0,0,0,223,221,1,0,0,0,223,224,1,0,0,0,224,41,1,0,0,0,225,223,1,
91
+ 0,0,0,226,227,7,2,0,0,227,43,1,0,0,0,17,62,91,93,99,113,115,131,
92
+ 136,145,151,163,169,179,197,203,213,223
93
+ ]
94
+
95
+ class KodexaSelectorParser ( Parser ):
96
+
97
+ grammarFileName = "KodexaSelector.g4"
98
+
99
+ atn = ATNDeserializer().deserialize(serializedATN())
100
+
101
+ decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
102
+
103
+ sharedContextCache = PredictionContextCache()
104
+
105
+ literalNames = [ "<INVALID>", "'or'", "'and'", "'intersect'", "'stream'",
106
+ "'/'", "'//'", "'.'", "'..'", "'::'", "'@'", "'('",
107
+ "')'", "'['", "']'", "'|'", "<INVALID>", "<INVALID>",
108
+ "'+'", "'-'", "'*'", "','", "':'", "'$'", "'true'",
109
+ "'false'" ]
110
+
111
+ symbolicNames = [ "<INVALID>", "OR", "AND", "INTERSECT", "PIPELINE",
112
+ "PATH_SEP", "ABBREV_PATH_SEP", "ABBREV_STEP_SELF",
113
+ "ABBREV_STEP_PARENT", "AXIS_SEP", "ABBREV_AXIS_AT",
114
+ "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", "UNION",
115
+ "EQUALS", "REL_OP", "PLUS", "MINUS", "STAR", "COMMA",
116
+ "COLON", "DOLLAR", "TRUE", "FALSE", "FUNCTION_NAME",
117
+ "LITERAL", "FLOAT", "INTEGER", "NCNAME", "FUNCNAME",
118
+ "AXISNAME", "WS" ]
119
+
120
+ RULE_xpath = 0
121
+ RULE_expr = 1
122
+ RULE_absoluteLocationPath = 2
123
+ RULE_abbreviatedAbsoluteLocationPath = 3
124
+ RULE_relativeLocationPath = 4
125
+ RULE_step = 5
126
+ RULE_axisSpecifier = 6
127
+ RULE_nodeTest = 7
128
+ RULE_nameTest = 8
129
+ RULE_qName = 9
130
+ RULE_filterExpr = 10
131
+ RULE_predicateList = 11
132
+ RULE_predicate = 12
133
+ RULE_variableReference = 13
134
+ RULE_number = 14
135
+ RULE_booleanLiteral = 15
136
+ RULE_functionCall = 16
137
+ RULE_builtInFunctionCall = 17
138
+ RULE_funcQName = 18
139
+ RULE_formalArguments = 19
140
+ RULE_argumentList = 20
141
+ RULE_pathSep = 21
142
+
143
+ ruleNames = [ "xpath", "expr", "absoluteLocationPath", "abbreviatedAbsoluteLocationPath",
144
+ "relativeLocationPath", "step", "axisSpecifier", "nodeTest",
145
+ "nameTest", "qName", "filterExpr", "predicateList", "predicate",
146
+ "variableReference", "number", "booleanLiteral", "functionCall",
147
+ "builtInFunctionCall", "funcQName", "formalArguments",
148
+ "argumentList", "pathSep" ]
149
+
150
+ EOF = Token.EOF
151
+ OR=1
152
+ AND=2
153
+ INTERSECT=3
154
+ PIPELINE=4
155
+ PATH_SEP=5
156
+ ABBREV_PATH_SEP=6
157
+ ABBREV_STEP_SELF=7
158
+ ABBREV_STEP_PARENT=8
159
+ AXIS_SEP=9
160
+ ABBREV_AXIS_AT=10
161
+ LPAREN=11
162
+ RPAREN=12
163
+ LBRACKET=13
164
+ RBRACKET=14
165
+ UNION=15
166
+ EQUALS=16
167
+ REL_OP=17
168
+ PLUS=18
169
+ MINUS=19
170
+ STAR=20
171
+ COMMA=21
172
+ COLON=22
173
+ DOLLAR=23
174
+ TRUE=24
175
+ FALSE=25
176
+ FUNCTION_NAME=26
177
+ LITERAL=27
178
+ FLOAT=28
179
+ INTEGER=29
180
+ NCNAME=30
181
+ FUNCNAME=31
182
+ AXISNAME=32
183
+ WS=33
184
+
185
+ def __init__(self, input:TokenStream, output:TextIO = sys.stdout):
186
+ super().__init__(input, output)
187
+ self.checkVersion("4.13.1")
188
+ self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
189
+ self._predicates = None
190
+
191
+
192
+
193
+
194
+ class XpathContext(ParserRuleContext):
195
+ __slots__ = 'parser'
196
+
197
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
198
+ super().__init__(parent, invokingState)
199
+ self.parser = parser
200
+
201
+ def expr(self):
202
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,0)
203
+
204
+
205
+ def getRuleIndex(self):
206
+ return KodexaSelectorParser.RULE_xpath
207
+
208
+ def enterRule(self, listener:ParseTreeListener):
209
+ if hasattr( listener, "enterXpath" ):
210
+ listener.enterXpath(self)
211
+
212
+ def exitRule(self, listener:ParseTreeListener):
213
+ if hasattr( listener, "exitXpath" ):
214
+ listener.exitXpath(self)
215
+
216
+ def accept(self, visitor:ParseTreeVisitor):
217
+ if hasattr( visitor, "visitXpath" ):
218
+ return visitor.visitXpath(self)
219
+ else:
220
+ return visitor.visitChildren(self)
221
+
222
+
223
+
224
+
225
+ def xpath(self):
226
+
227
+ localctx = KodexaSelectorParser.XpathContext(self, self._ctx, self.state)
228
+ self.enterRule(localctx, 0, self.RULE_xpath)
229
+ try:
230
+ self.enterOuterAlt(localctx, 1)
231
+ self.state = 44
232
+ self.expr(0)
233
+ except RecognitionException as re:
234
+ localctx.exception = re
235
+ self._errHandler.reportError(self, re)
236
+ self._errHandler.recover(self, re)
237
+ finally:
238
+ self.exitRule()
239
+ return localctx
240
+
241
+
242
+ class ExprContext(ParserRuleContext):
243
+ __slots__ = 'parser'
244
+
245
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
246
+ super().__init__(parent, invokingState)
247
+ self.parser = parser
248
+
249
+
250
+ def getRuleIndex(self):
251
+ return KodexaSelectorParser.RULE_expr
252
+
253
+
254
+ def copyFrom(self, ctx:ParserRuleContext):
255
+ super().copyFrom(ctx)
256
+
257
+
258
+ class EqualsExprContext(ExprContext):
259
+
260
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
261
+ super().__init__(parser)
262
+ self.copyFrom(ctx)
263
+
264
+ def expr(self, i:int=None):
265
+ if i is None:
266
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
267
+ else:
268
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
269
+
270
+ def EQUALS(self):
271
+ return self.getToken(KodexaSelectorParser.EQUALS, 0)
272
+
273
+ def enterRule(self, listener:ParseTreeListener):
274
+ if hasattr( listener, "enterEqualsExpr" ):
275
+ listener.enterEqualsExpr(self)
276
+
277
+ def exitRule(self, listener:ParseTreeListener):
278
+ if hasattr( listener, "exitEqualsExpr" ):
279
+ listener.exitEqualsExpr(self)
280
+
281
+ def accept(self, visitor:ParseTreeVisitor):
282
+ if hasattr( visitor, "visitEqualsExpr" ):
283
+ return visitor.visitEqualsExpr(self)
284
+ else:
285
+ return visitor.visitChildren(self)
286
+
287
+
288
+ class SubtractExprContext(ExprContext):
289
+
290
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
291
+ super().__init__(parser)
292
+ self.copyFrom(ctx)
293
+
294
+ def expr(self, i:int=None):
295
+ if i is None:
296
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
297
+ else:
298
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
299
+
300
+ def MINUS(self):
301
+ return self.getToken(KodexaSelectorParser.MINUS, 0)
302
+
303
+ def enterRule(self, listener:ParseTreeListener):
304
+ if hasattr( listener, "enterSubtractExpr" ):
305
+ listener.enterSubtractExpr(self)
306
+
307
+ def exitRule(self, listener:ParseTreeListener):
308
+ if hasattr( listener, "exitSubtractExpr" ):
309
+ listener.exitSubtractExpr(self)
310
+
311
+ def accept(self, visitor:ParseTreeVisitor):
312
+ if hasattr( visitor, "visitSubtractExpr" ):
313
+ return visitor.visitSubtractExpr(self)
314
+ else:
315
+ return visitor.visitChildren(self)
316
+
317
+
318
+ class IntersectExprContext(ExprContext):
319
+
320
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
321
+ super().__init__(parser)
322
+ self.copyFrom(ctx)
323
+
324
+ def expr(self, i:int=None):
325
+ if i is None:
326
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
327
+ else:
328
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
329
+
330
+ def INTERSECT(self):
331
+ return self.getToken(KodexaSelectorParser.INTERSECT, 0)
332
+
333
+ def enterRule(self, listener:ParseTreeListener):
334
+ if hasattr( listener, "enterIntersectExpr" ):
335
+ listener.enterIntersectExpr(self)
336
+
337
+ def exitRule(self, listener:ParseTreeListener):
338
+ if hasattr( listener, "exitIntersectExpr" ):
339
+ listener.exitIntersectExpr(self)
340
+
341
+ def accept(self, visitor:ParseTreeVisitor):
342
+ if hasattr( visitor, "visitIntersectExpr" ):
343
+ return visitor.visitIntersectExpr(self)
344
+ else:
345
+ return visitor.visitChildren(self)
346
+
347
+
348
+ class DirectNameTestContext(ExprContext):
349
+
350
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
351
+ super().__init__(parser)
352
+ self.copyFrom(ctx)
353
+
354
+ def nameTest(self):
355
+ return self.getTypedRuleContext(KodexaSelectorParser.NameTestContext,0)
356
+
357
+
358
+ def enterRule(self, listener:ParseTreeListener):
359
+ if hasattr( listener, "enterDirectNameTest" ):
360
+ listener.enterDirectNameTest(self)
361
+
362
+ def exitRule(self, listener:ParseTreeListener):
363
+ if hasattr( listener, "exitDirectNameTest" ):
364
+ listener.exitDirectNameTest(self)
365
+
366
+ def accept(self, visitor:ParseTreeVisitor):
367
+ if hasattr( visitor, "visitDirectNameTest" ):
368
+ return visitor.visitDirectNameTest(self)
369
+ else:
370
+ return visitor.visitChildren(self)
371
+
372
+
373
+ class OrExprContext(ExprContext):
374
+
375
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
376
+ super().__init__(parser)
377
+ self.copyFrom(ctx)
378
+
379
+ def expr(self, i:int=None):
380
+ if i is None:
381
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
382
+ else:
383
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
384
+
385
+ def OR(self):
386
+ return self.getToken(KodexaSelectorParser.OR, 0)
387
+
388
+ def enterRule(self, listener:ParseTreeListener):
389
+ if hasattr( listener, "enterOrExpr" ):
390
+ listener.enterOrExpr(self)
391
+
392
+ def exitRule(self, listener:ParseTreeListener):
393
+ if hasattr( listener, "exitOrExpr" ):
394
+ listener.exitOrExpr(self)
395
+
396
+ def accept(self, visitor:ParseTreeVisitor):
397
+ if hasattr( visitor, "visitOrExpr" ):
398
+ return visitor.visitOrExpr(self)
399
+ else:
400
+ return visitor.visitChildren(self)
401
+
402
+
403
+ class AbsolutePathExprContext(ExprContext):
404
+
405
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
406
+ super().__init__(parser)
407
+ self.copyFrom(ctx)
408
+
409
+ def absoluteLocationPath(self):
410
+ return self.getTypedRuleContext(KodexaSelectorParser.AbsoluteLocationPathContext,0)
411
+
412
+
413
+ def enterRule(self, listener:ParseTreeListener):
414
+ if hasattr( listener, "enterAbsolutePathExpr" ):
415
+ listener.enterAbsolutePathExpr(self)
416
+
417
+ def exitRule(self, listener:ParseTreeListener):
418
+ if hasattr( listener, "exitAbsolutePathExpr" ):
419
+ listener.exitAbsolutePathExpr(self)
420
+
421
+ def accept(self, visitor:ParseTreeVisitor):
422
+ if hasattr( visitor, "visitAbsolutePathExpr" ):
423
+ return visitor.visitAbsolutePathExpr(self)
424
+ else:
425
+ return visitor.visitChildren(self)
426
+
427
+
428
+ class FuncCallExprContext(ExprContext):
429
+
430
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
431
+ super().__init__(parser)
432
+ self.copyFrom(ctx)
433
+
434
+ def functionCall(self):
435
+ return self.getTypedRuleContext(KodexaSelectorParser.FunctionCallContext,0)
436
+
437
+
438
+ def enterRule(self, listener:ParseTreeListener):
439
+ if hasattr( listener, "enterFuncCallExpr" ):
440
+ listener.enterFuncCallExpr(self)
441
+
442
+ def exitRule(self, listener:ParseTreeListener):
443
+ if hasattr( listener, "exitFuncCallExpr" ):
444
+ listener.exitFuncCallExpr(self)
445
+
446
+ def accept(self, visitor:ParseTreeVisitor):
447
+ if hasattr( visitor, "visitFuncCallExpr" ):
448
+ return visitor.visitFuncCallExpr(self)
449
+ else:
450
+ return visitor.visitChildren(self)
451
+
452
+
453
+ class UnionExprContext(ExprContext):
454
+
455
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
456
+ super().__init__(parser)
457
+ self.copyFrom(ctx)
458
+
459
+ def expr(self, i:int=None):
460
+ if i is None:
461
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
462
+ else:
463
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
464
+
465
+ def UNION(self):
466
+ return self.getToken(KodexaSelectorParser.UNION, 0)
467
+
468
+ def enterRule(self, listener:ParseTreeListener):
469
+ if hasattr( listener, "enterUnionExpr" ):
470
+ listener.enterUnionExpr(self)
471
+
472
+ def exitRule(self, listener:ParseTreeListener):
473
+ if hasattr( listener, "exitUnionExpr" ):
474
+ listener.exitUnionExpr(self)
475
+
476
+ def accept(self, visitor:ParseTreeVisitor):
477
+ if hasattr( visitor, "visitUnionExpr" ):
478
+ return visitor.visitUnionExpr(self)
479
+ else:
480
+ return visitor.visitChildren(self)
481
+
482
+
483
+ class RelationalExprContext(ExprContext):
484
+
485
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
486
+ super().__init__(parser)
487
+ self.copyFrom(ctx)
488
+
489
+ def expr(self, i:int=None):
490
+ if i is None:
491
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
492
+ else:
493
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
494
+
495
+ def REL_OP(self):
496
+ return self.getToken(KodexaSelectorParser.REL_OP, 0)
497
+
498
+ def enterRule(self, listener:ParseTreeListener):
499
+ if hasattr( listener, "enterRelationalExpr" ):
500
+ listener.enterRelationalExpr(self)
501
+
502
+ def exitRule(self, listener:ParseTreeListener):
503
+ if hasattr( listener, "exitRelationalExpr" ):
504
+ listener.exitRelationalExpr(self)
505
+
506
+ def accept(self, visitor:ParseTreeVisitor):
507
+ if hasattr( visitor, "visitRelationalExpr" ):
508
+ return visitor.visitRelationalExpr(self)
509
+ else:
510
+ return visitor.visitChildren(self)
511
+
512
+
513
+ class PipelineExprContext(ExprContext):
514
+
515
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
516
+ super().__init__(parser)
517
+ self.copyFrom(ctx)
518
+
519
+ def expr(self, i:int=None):
520
+ if i is None:
521
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
522
+ else:
523
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
524
+
525
+ def PIPELINE(self):
526
+ return self.getToken(KodexaSelectorParser.PIPELINE, 0)
527
+
528
+ def enterRule(self, listener:ParseTreeListener):
529
+ if hasattr( listener, "enterPipelineExpr" ):
530
+ listener.enterPipelineExpr(self)
531
+
532
+ def exitRule(self, listener:ParseTreeListener):
533
+ if hasattr( listener, "exitPipelineExpr" ):
534
+ listener.exitPipelineExpr(self)
535
+
536
+ def accept(self, visitor:ParseTreeVisitor):
537
+ if hasattr( visitor, "visitPipelineExpr" ):
538
+ return visitor.visitPipelineExpr(self)
539
+ else:
540
+ return visitor.visitChildren(self)
541
+
542
+
543
+ class RelativePathExprContext(ExprContext):
544
+
545
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
546
+ super().__init__(parser)
547
+ self.copyFrom(ctx)
548
+
549
+ def relativeLocationPath(self):
550
+ return self.getTypedRuleContext(KodexaSelectorParser.RelativeLocationPathContext,0)
551
+
552
+
553
+ def enterRule(self, listener:ParseTreeListener):
554
+ if hasattr( listener, "enterRelativePathExpr" ):
555
+ listener.enterRelativePathExpr(self)
556
+
557
+ def exitRule(self, listener:ParseTreeListener):
558
+ if hasattr( listener, "exitRelativePathExpr" ):
559
+ listener.exitRelativePathExpr(self)
560
+
561
+ def accept(self, visitor:ParseTreeVisitor):
562
+ if hasattr( visitor, "visitRelativePathExpr" ):
563
+ return visitor.visitRelativePathExpr(self)
564
+ else:
565
+ return visitor.visitChildren(self)
566
+
567
+
568
+ class RootNameTestContext(ExprContext):
569
+
570
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
571
+ super().__init__(parser)
572
+ self.copyFrom(ctx)
573
+
574
+ def PATH_SEP(self):
575
+ return self.getToken(KodexaSelectorParser.PATH_SEP, 0)
576
+ def nameTest(self):
577
+ return self.getTypedRuleContext(KodexaSelectorParser.NameTestContext,0)
578
+
579
+
580
+ def enterRule(self, listener:ParseTreeListener):
581
+ if hasattr( listener, "enterRootNameTest" ):
582
+ listener.enterRootNameTest(self)
583
+
584
+ def exitRule(self, listener:ParseTreeListener):
585
+ if hasattr( listener, "exitRootNameTest" ):
586
+ listener.exitRootNameTest(self)
587
+
588
+ def accept(self, visitor:ParseTreeVisitor):
589
+ if hasattr( visitor, "visitRootNameTest" ):
590
+ return visitor.visitRootNameTest(self)
591
+ else:
592
+ return visitor.visitChildren(self)
593
+
594
+
595
+ class UnaryMinusExprContext(ExprContext):
596
+
597
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
598
+ super().__init__(parser)
599
+ self.copyFrom(ctx)
600
+
601
+ def MINUS(self):
602
+ return self.getToken(KodexaSelectorParser.MINUS, 0)
603
+ def expr(self):
604
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,0)
605
+
606
+
607
+ def enterRule(self, listener:ParseTreeListener):
608
+ if hasattr( listener, "enterUnaryMinusExpr" ):
609
+ listener.enterUnaryMinusExpr(self)
610
+
611
+ def exitRule(self, listener:ParseTreeListener):
612
+ if hasattr( listener, "exitUnaryMinusExpr" ):
613
+ listener.exitUnaryMinusExpr(self)
614
+
615
+ def accept(self, visitor:ParseTreeVisitor):
616
+ if hasattr( visitor, "visitUnaryMinusExpr" ):
617
+ return visitor.visitUnaryMinusExpr(self)
618
+ else:
619
+ return visitor.visitChildren(self)
620
+
621
+
622
+ class AbbrevAbsPathExprContext(ExprContext):
623
+
624
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
625
+ super().__init__(parser)
626
+ self.copyFrom(ctx)
627
+
628
+ def abbreviatedAbsoluteLocationPath(self):
629
+ return self.getTypedRuleContext(KodexaSelectorParser.AbbreviatedAbsoluteLocationPathContext,0)
630
+
631
+
632
+ def enterRule(self, listener:ParseTreeListener):
633
+ if hasattr( listener, "enterAbbrevAbsPathExpr" ):
634
+ listener.enterAbbrevAbsPathExpr(self)
635
+
636
+ def exitRule(self, listener:ParseTreeListener):
637
+ if hasattr( listener, "exitAbbrevAbsPathExpr" ):
638
+ listener.exitAbbrevAbsPathExpr(self)
639
+
640
+ def accept(self, visitor:ParseTreeVisitor):
641
+ if hasattr( visitor, "visitAbbrevAbsPathExpr" ):
642
+ return visitor.visitAbbrevAbsPathExpr(self)
643
+ else:
644
+ return visitor.visitChildren(self)
645
+
646
+
647
+ class AddExprContext(ExprContext):
648
+
649
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
650
+ super().__init__(parser)
651
+ self.copyFrom(ctx)
652
+
653
+ def expr(self, i:int=None):
654
+ if i is None:
655
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
656
+ else:
657
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
658
+
659
+ def PLUS(self):
660
+ return self.getToken(KodexaSelectorParser.PLUS, 0)
661
+
662
+ def enterRule(self, listener:ParseTreeListener):
663
+ if hasattr( listener, "enterAddExpr" ):
664
+ listener.enterAddExpr(self)
665
+
666
+ def exitRule(self, listener:ParseTreeListener):
667
+ if hasattr( listener, "exitAddExpr" ):
668
+ listener.exitAddExpr(self)
669
+
670
+ def accept(self, visitor:ParseTreeVisitor):
671
+ if hasattr( visitor, "visitAddExpr" ):
672
+ return visitor.visitAddExpr(self)
673
+ else:
674
+ return visitor.visitChildren(self)
675
+
676
+
677
+ class FilterExpressionContext(ExprContext):
678
+
679
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
680
+ super().__init__(parser)
681
+ self.copyFrom(ctx)
682
+
683
+ def filterExpr(self):
684
+ return self.getTypedRuleContext(KodexaSelectorParser.FilterExprContext,0)
685
+
686
+
687
+ def enterRule(self, listener:ParseTreeListener):
688
+ if hasattr( listener, "enterFilterExpression" ):
689
+ listener.enterFilterExpression(self)
690
+
691
+ def exitRule(self, listener:ParseTreeListener):
692
+ if hasattr( listener, "exitFilterExpression" ):
693
+ listener.exitFilterExpression(self)
694
+
695
+ def accept(self, visitor:ParseTreeVisitor):
696
+ if hasattr( visitor, "visitFilterExpression" ):
697
+ return visitor.visitFilterExpression(self)
698
+ else:
699
+ return visitor.visitChildren(self)
700
+
701
+
702
+ class BooleanLiteralExprContext(ExprContext):
703
+
704
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
705
+ super().__init__(parser)
706
+ self.copyFrom(ctx)
707
+
708
+ def booleanLiteral(self):
709
+ return self.getTypedRuleContext(KodexaSelectorParser.BooleanLiteralContext,0)
710
+
711
+
712
+ def enterRule(self, listener:ParseTreeListener):
713
+ if hasattr( listener, "enterBooleanLiteralExpr" ):
714
+ listener.enterBooleanLiteralExpr(self)
715
+
716
+ def exitRule(self, listener:ParseTreeListener):
717
+ if hasattr( listener, "exitBooleanLiteralExpr" ):
718
+ listener.exitBooleanLiteralExpr(self)
719
+
720
+ def accept(self, visitor:ParseTreeVisitor):
721
+ if hasattr( visitor, "visitBooleanLiteralExpr" ):
722
+ return visitor.visitBooleanLiteralExpr(self)
723
+ else:
724
+ return visitor.visitChildren(self)
725
+
726
+
727
+ class PathBinaryExprContext(ExprContext):
728
+
729
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
730
+ super().__init__(parser)
731
+ self.copyFrom(ctx)
732
+
733
+ def filterExpr(self):
734
+ return self.getTypedRuleContext(KodexaSelectorParser.FilterExprContext,0)
735
+
736
+ def pathSep(self):
737
+ return self.getTypedRuleContext(KodexaSelectorParser.PathSepContext,0)
738
+
739
+ def relativeLocationPath(self):
740
+ return self.getTypedRuleContext(KodexaSelectorParser.RelativeLocationPathContext,0)
741
+
742
+
743
+ def enterRule(self, listener:ParseTreeListener):
744
+ if hasattr( listener, "enterPathBinaryExpr" ):
745
+ listener.enterPathBinaryExpr(self)
746
+
747
+ def exitRule(self, listener:ParseTreeListener):
748
+ if hasattr( listener, "exitPathBinaryExpr" ):
749
+ listener.exitPathBinaryExpr(self)
750
+
751
+ def accept(self, visitor:ParseTreeVisitor):
752
+ if hasattr( visitor, "visitPathBinaryExpr" ):
753
+ return visitor.visitPathBinaryExpr(self)
754
+ else:
755
+ return visitor.visitChildren(self)
756
+
757
+
758
+ class AndExprContext(ExprContext):
759
+
760
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ExprContext
761
+ super().__init__(parser)
762
+ self.copyFrom(ctx)
763
+
764
+ def expr(self, i:int=None):
765
+ if i is None:
766
+ return self.getTypedRuleContexts(KodexaSelectorParser.ExprContext)
767
+ else:
768
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,i)
769
+
770
+ def AND(self):
771
+ return self.getToken(KodexaSelectorParser.AND, 0)
772
+
773
+ def enterRule(self, listener:ParseTreeListener):
774
+ if hasattr( listener, "enterAndExpr" ):
775
+ listener.enterAndExpr(self)
776
+
777
+ def exitRule(self, listener:ParseTreeListener):
778
+ if hasattr( listener, "exitAndExpr" ):
779
+ listener.exitAndExpr(self)
780
+
781
+ def accept(self, visitor:ParseTreeVisitor):
782
+ if hasattr( visitor, "visitAndExpr" ):
783
+ return visitor.visitAndExpr(self)
784
+ else:
785
+ return visitor.visitChildren(self)
786
+
787
+
788
+
789
+ def expr(self, _p:int=0):
790
+ _parentctx = self._ctx
791
+ _parentState = self.state
792
+ localctx = KodexaSelectorParser.ExprContext(self, self._ctx, _parentState)
793
+ _prevctx = localctx
794
+ _startState = 2
795
+ self.enterRecursionRule(localctx, 2, self.RULE_expr, _p)
796
+ try:
797
+ self.enterOuterAlt(localctx, 1)
798
+ self.state = 62
799
+ self._errHandler.sync(self)
800
+ la_ = self._interp.adaptivePredict(self._input,0,self._ctx)
801
+ if la_ == 1:
802
+ localctx = KodexaSelectorParser.UnaryMinusExprContext(self, localctx)
803
+ self._ctx = localctx
804
+ _prevctx = localctx
805
+
806
+ self.state = 47
807
+ self.match(KodexaSelectorParser.MINUS)
808
+ self.state = 48
809
+ self.expr(11)
810
+ pass
811
+
812
+ elif la_ == 2:
813
+ localctx = KodexaSelectorParser.FuncCallExprContext(self, localctx)
814
+ self._ctx = localctx
815
+ _prevctx = localctx
816
+ self.state = 49
817
+ self.functionCall()
818
+ pass
819
+
820
+ elif la_ == 3:
821
+ localctx = KodexaSelectorParser.PathBinaryExprContext(self, localctx)
822
+ self._ctx = localctx
823
+ _prevctx = localctx
824
+ self.state = 50
825
+ self.filterExpr(0)
826
+ self.state = 51
827
+ self.pathSep()
828
+ self.state = 52
829
+ self.relativeLocationPath(0)
830
+ pass
831
+
832
+ elif la_ == 4:
833
+ localctx = KodexaSelectorParser.RelativePathExprContext(self, localctx)
834
+ self._ctx = localctx
835
+ _prevctx = localctx
836
+ self.state = 54
837
+ self.relativeLocationPath(0)
838
+ pass
839
+
840
+ elif la_ == 5:
841
+ localctx = KodexaSelectorParser.AbsolutePathExprContext(self, localctx)
842
+ self._ctx = localctx
843
+ _prevctx = localctx
844
+ self.state = 55
845
+ self.absoluteLocationPath()
846
+ pass
847
+
848
+ elif la_ == 6:
849
+ localctx = KodexaSelectorParser.AbbrevAbsPathExprContext(self, localctx)
850
+ self._ctx = localctx
851
+ _prevctx = localctx
852
+ self.state = 56
853
+ self.abbreviatedAbsoluteLocationPath()
854
+ pass
855
+
856
+ elif la_ == 7:
857
+ localctx = KodexaSelectorParser.FilterExpressionContext(self, localctx)
858
+ self._ctx = localctx
859
+ _prevctx = localctx
860
+ self.state = 57
861
+ self.filterExpr(0)
862
+ pass
863
+
864
+ elif la_ == 8:
865
+ localctx = KodexaSelectorParser.DirectNameTestContext(self, localctx)
866
+ self._ctx = localctx
867
+ _prevctx = localctx
868
+ self.state = 58
869
+ self.nameTest()
870
+ pass
871
+
872
+ elif la_ == 9:
873
+ localctx = KodexaSelectorParser.RootNameTestContext(self, localctx)
874
+ self._ctx = localctx
875
+ _prevctx = localctx
876
+ self.state = 59
877
+ self.match(KodexaSelectorParser.PATH_SEP)
878
+ self.state = 60
879
+ self.nameTest()
880
+ pass
881
+
882
+ elif la_ == 10:
883
+ localctx = KodexaSelectorParser.BooleanLiteralExprContext(self, localctx)
884
+ self._ctx = localctx
885
+ _prevctx = localctx
886
+ self.state = 61
887
+ self.booleanLiteral()
888
+ pass
889
+
890
+
891
+ self._ctx.stop = self._input.LT(-1)
892
+ self.state = 93
893
+ self._errHandler.sync(self)
894
+ _alt = self._interp.adaptivePredict(self._input,2,self._ctx)
895
+ while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
896
+ if _alt==1:
897
+ if self._parseListeners is not None:
898
+ self.triggerExitRuleEvent()
899
+ _prevctx = localctx
900
+ self.state = 91
901
+ self._errHandler.sync(self)
902
+ la_ = self._interp.adaptivePredict(self._input,1,self._ctx)
903
+ if la_ == 1:
904
+ localctx = KodexaSelectorParser.OrExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
905
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
906
+ self.state = 64
907
+ if not self.precpred(self._ctx, 19):
908
+ from antlr4.error.Errors import FailedPredicateException
909
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 19)")
910
+ self.state = 65
911
+ self.match(KodexaSelectorParser.OR)
912
+ self.state = 66
913
+ self.expr(20)
914
+ pass
915
+
916
+ elif la_ == 2:
917
+ localctx = KodexaSelectorParser.AndExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
918
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
919
+ self.state = 67
920
+ if not self.precpred(self._ctx, 18):
921
+ from antlr4.error.Errors import FailedPredicateException
922
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 18)")
923
+ self.state = 68
924
+ self.match(KodexaSelectorParser.AND)
925
+ self.state = 69
926
+ self.expr(19)
927
+ pass
928
+
929
+ elif la_ == 3:
930
+ localctx = KodexaSelectorParser.EqualsExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
931
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
932
+ self.state = 70
933
+ if not self.precpred(self._ctx, 17):
934
+ from antlr4.error.Errors import FailedPredicateException
935
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 17)")
936
+ self.state = 71
937
+ self.match(KodexaSelectorParser.EQUALS)
938
+ self.state = 72
939
+ self.expr(18)
940
+ pass
941
+
942
+ elif la_ == 4:
943
+ localctx = KodexaSelectorParser.RelationalExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
944
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
945
+ self.state = 73
946
+ if not self.precpred(self._ctx, 16):
947
+ from antlr4.error.Errors import FailedPredicateException
948
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 16)")
949
+ self.state = 74
950
+ self.match(KodexaSelectorParser.REL_OP)
951
+ self.state = 75
952
+ self.expr(17)
953
+ pass
954
+
955
+ elif la_ == 5:
956
+ localctx = KodexaSelectorParser.AddExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
957
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
958
+ self.state = 76
959
+ if not self.precpred(self._ctx, 15):
960
+ from antlr4.error.Errors import FailedPredicateException
961
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 15)")
962
+ self.state = 77
963
+ self.match(KodexaSelectorParser.PLUS)
964
+ self.state = 78
965
+ self.expr(16)
966
+ pass
967
+
968
+ elif la_ == 6:
969
+ localctx = KodexaSelectorParser.SubtractExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
970
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
971
+ self.state = 79
972
+ if not self.precpred(self._ctx, 14):
973
+ from antlr4.error.Errors import FailedPredicateException
974
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 14)")
975
+ self.state = 80
976
+ self.match(KodexaSelectorParser.MINUS)
977
+ self.state = 81
978
+ self.expr(15)
979
+ pass
980
+
981
+ elif la_ == 7:
982
+ localctx = KodexaSelectorParser.UnionExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
983
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
984
+ self.state = 82
985
+ if not self.precpred(self._ctx, 13):
986
+ from antlr4.error.Errors import FailedPredicateException
987
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 13)")
988
+ self.state = 83
989
+ self.match(KodexaSelectorParser.UNION)
990
+ self.state = 84
991
+ self.expr(14)
992
+ pass
993
+
994
+ elif la_ == 8:
995
+ localctx = KodexaSelectorParser.IntersectExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
996
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
997
+ self.state = 85
998
+ if not self.precpred(self._ctx, 12):
999
+ from antlr4.error.Errors import FailedPredicateException
1000
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 12)")
1001
+ self.state = 86
1002
+ self.match(KodexaSelectorParser.INTERSECT)
1003
+ self.state = 87
1004
+ self.expr(13)
1005
+ pass
1006
+
1007
+ elif la_ == 9:
1008
+ localctx = KodexaSelectorParser.PipelineExprContext(self, KodexaSelectorParser.ExprContext(self, _parentctx, _parentState))
1009
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
1010
+ self.state = 88
1011
+ if not self.precpred(self._ctx, 10):
1012
+ from antlr4.error.Errors import FailedPredicateException
1013
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 10)")
1014
+ self.state = 89
1015
+ self.match(KodexaSelectorParser.PIPELINE)
1016
+ self.state = 90
1017
+ self.expr(11)
1018
+ pass
1019
+
1020
+
1021
+ self.state = 95
1022
+ self._errHandler.sync(self)
1023
+ _alt = self._interp.adaptivePredict(self._input,2,self._ctx)
1024
+
1025
+ except RecognitionException as re:
1026
+ localctx.exception = re
1027
+ self._errHandler.reportError(self, re)
1028
+ self._errHandler.recover(self, re)
1029
+ finally:
1030
+ self.unrollRecursionContexts(_parentctx)
1031
+ return localctx
1032
+
1033
+
1034
+ class AbsoluteLocationPathContext(ParserRuleContext):
1035
+ __slots__ = 'parser'
1036
+
1037
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
1038
+ super().__init__(parent, invokingState)
1039
+ self.parser = parser
1040
+
1041
+
1042
+ def getRuleIndex(self):
1043
+ return KodexaSelectorParser.RULE_absoluteLocationPath
1044
+
1045
+
1046
+ def copyFrom(self, ctx:ParserRuleContext):
1047
+ super().copyFrom(ctx)
1048
+
1049
+
1050
+
1051
+ class RootOnlyContext(AbsoluteLocationPathContext):
1052
+
1053
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.AbsoluteLocationPathContext
1054
+ super().__init__(parser)
1055
+ self.copyFrom(ctx)
1056
+
1057
+ def PATH_SEP(self):
1058
+ return self.getToken(KodexaSelectorParser.PATH_SEP, 0)
1059
+
1060
+ def enterRule(self, listener:ParseTreeListener):
1061
+ if hasattr( listener, "enterRootOnly" ):
1062
+ listener.enterRootOnly(self)
1063
+
1064
+ def exitRule(self, listener:ParseTreeListener):
1065
+ if hasattr( listener, "exitRootOnly" ):
1066
+ listener.exitRootOnly(self)
1067
+
1068
+ def accept(self, visitor:ParseTreeVisitor):
1069
+ if hasattr( visitor, "visitRootOnly" ):
1070
+ return visitor.visitRootOnly(self)
1071
+ else:
1072
+ return visitor.visitChildren(self)
1073
+
1074
+
1075
+ class RootPathContext(AbsoluteLocationPathContext):
1076
+
1077
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.AbsoluteLocationPathContext
1078
+ super().__init__(parser)
1079
+ self.copyFrom(ctx)
1080
+
1081
+ def PATH_SEP(self):
1082
+ return self.getToken(KodexaSelectorParser.PATH_SEP, 0)
1083
+ def relativeLocationPath(self):
1084
+ return self.getTypedRuleContext(KodexaSelectorParser.RelativeLocationPathContext,0)
1085
+
1086
+
1087
+ def enterRule(self, listener:ParseTreeListener):
1088
+ if hasattr( listener, "enterRootPath" ):
1089
+ listener.enterRootPath(self)
1090
+
1091
+ def exitRule(self, listener:ParseTreeListener):
1092
+ if hasattr( listener, "exitRootPath" ):
1093
+ listener.exitRootPath(self)
1094
+
1095
+ def accept(self, visitor:ParseTreeVisitor):
1096
+ if hasattr( visitor, "visitRootPath" ):
1097
+ return visitor.visitRootPath(self)
1098
+ else:
1099
+ return visitor.visitChildren(self)
1100
+
1101
+
1102
+
1103
+ def absoluteLocationPath(self):
1104
+
1105
+ localctx = KodexaSelectorParser.AbsoluteLocationPathContext(self, self._ctx, self.state)
1106
+ self.enterRule(localctx, 4, self.RULE_absoluteLocationPath)
1107
+ try:
1108
+ self.state = 99
1109
+ self._errHandler.sync(self)
1110
+ la_ = self._interp.adaptivePredict(self._input,3,self._ctx)
1111
+ if la_ == 1:
1112
+ localctx = KodexaSelectorParser.RootOnlyContext(self, localctx)
1113
+ self.enterOuterAlt(localctx, 1)
1114
+ self.state = 96
1115
+ self.match(KodexaSelectorParser.PATH_SEP)
1116
+ pass
1117
+
1118
+ elif la_ == 2:
1119
+ localctx = KodexaSelectorParser.RootPathContext(self, localctx)
1120
+ self.enterOuterAlt(localctx, 2)
1121
+ self.state = 97
1122
+ self.match(KodexaSelectorParser.PATH_SEP)
1123
+ self.state = 98
1124
+ self.relativeLocationPath(0)
1125
+ pass
1126
+
1127
+
1128
+ except RecognitionException as re:
1129
+ localctx.exception = re
1130
+ self._errHandler.reportError(self, re)
1131
+ self._errHandler.recover(self, re)
1132
+ finally:
1133
+ self.exitRule()
1134
+ return localctx
1135
+
1136
+
1137
+ class AbbreviatedAbsoluteLocationPathContext(ParserRuleContext):
1138
+ __slots__ = 'parser'
1139
+
1140
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
1141
+ super().__init__(parent, invokingState)
1142
+ self.parser = parser
1143
+
1144
+ def ABBREV_PATH_SEP(self):
1145
+ return self.getToken(KodexaSelectorParser.ABBREV_PATH_SEP, 0)
1146
+
1147
+ def relativeLocationPath(self):
1148
+ return self.getTypedRuleContext(KodexaSelectorParser.RelativeLocationPathContext,0)
1149
+
1150
+
1151
+ def getRuleIndex(self):
1152
+ return KodexaSelectorParser.RULE_abbreviatedAbsoluteLocationPath
1153
+
1154
+ def enterRule(self, listener:ParseTreeListener):
1155
+ if hasattr( listener, "enterAbbreviatedAbsoluteLocationPath" ):
1156
+ listener.enterAbbreviatedAbsoluteLocationPath(self)
1157
+
1158
+ def exitRule(self, listener:ParseTreeListener):
1159
+ if hasattr( listener, "exitAbbreviatedAbsoluteLocationPath" ):
1160
+ listener.exitAbbreviatedAbsoluteLocationPath(self)
1161
+
1162
+ def accept(self, visitor:ParseTreeVisitor):
1163
+ if hasattr( visitor, "visitAbbreviatedAbsoluteLocationPath" ):
1164
+ return visitor.visitAbbreviatedAbsoluteLocationPath(self)
1165
+ else:
1166
+ return visitor.visitChildren(self)
1167
+
1168
+
1169
+
1170
+
1171
+ def abbreviatedAbsoluteLocationPath(self):
1172
+
1173
+ localctx = KodexaSelectorParser.AbbreviatedAbsoluteLocationPathContext(self, self._ctx, self.state)
1174
+ self.enterRule(localctx, 6, self.RULE_abbreviatedAbsoluteLocationPath)
1175
+ try:
1176
+ self.enterOuterAlt(localctx, 1)
1177
+ self.state = 101
1178
+ self.match(KodexaSelectorParser.ABBREV_PATH_SEP)
1179
+ self.state = 102
1180
+ self.relativeLocationPath(0)
1181
+ except RecognitionException as re:
1182
+ localctx.exception = re
1183
+ self._errHandler.reportError(self, re)
1184
+ self._errHandler.recover(self, re)
1185
+ finally:
1186
+ self.exitRule()
1187
+ return localctx
1188
+
1189
+
1190
+ class RelativeLocationPathContext(ParserRuleContext):
1191
+ __slots__ = 'parser'
1192
+
1193
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
1194
+ super().__init__(parent, invokingState)
1195
+ self.parser = parser
1196
+
1197
+
1198
+ def getRuleIndex(self):
1199
+ return KodexaSelectorParser.RULE_relativeLocationPath
1200
+
1201
+
1202
+ def copyFrom(self, ctx:ParserRuleContext):
1203
+ super().copyFrom(ctx)
1204
+
1205
+
1206
+ class SingleStepContext(RelativeLocationPathContext):
1207
+
1208
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.RelativeLocationPathContext
1209
+ super().__init__(parser)
1210
+ self.copyFrom(ctx)
1211
+
1212
+ def step(self):
1213
+ return self.getTypedRuleContext(KodexaSelectorParser.StepContext,0)
1214
+
1215
+
1216
+ def enterRule(self, listener:ParseTreeListener):
1217
+ if hasattr( listener, "enterSingleStep" ):
1218
+ listener.enterSingleStep(self)
1219
+
1220
+ def exitRule(self, listener:ParseTreeListener):
1221
+ if hasattr( listener, "exitSingleStep" ):
1222
+ listener.exitSingleStep(self)
1223
+
1224
+ def accept(self, visitor:ParseTreeVisitor):
1225
+ if hasattr( visitor, "visitSingleStep" ):
1226
+ return visitor.visitSingleStep(self)
1227
+ else:
1228
+ return visitor.visitChildren(self)
1229
+
1230
+
1231
+ class PathStepContext(RelativeLocationPathContext):
1232
+
1233
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.RelativeLocationPathContext
1234
+ super().__init__(parser)
1235
+ self.copyFrom(ctx)
1236
+
1237
+ def relativeLocationPath(self):
1238
+ return self.getTypedRuleContext(KodexaSelectorParser.RelativeLocationPathContext,0)
1239
+
1240
+ def PATH_SEP(self):
1241
+ return self.getToken(KodexaSelectorParser.PATH_SEP, 0)
1242
+ def step(self):
1243
+ return self.getTypedRuleContext(KodexaSelectorParser.StepContext,0)
1244
+
1245
+
1246
+ def enterRule(self, listener:ParseTreeListener):
1247
+ if hasattr( listener, "enterPathStep" ):
1248
+ listener.enterPathStep(self)
1249
+
1250
+ def exitRule(self, listener:ParseTreeListener):
1251
+ if hasattr( listener, "exitPathStep" ):
1252
+ listener.exitPathStep(self)
1253
+
1254
+ def accept(self, visitor:ParseTreeVisitor):
1255
+ if hasattr( visitor, "visitPathStep" ):
1256
+ return visitor.visitPathStep(self)
1257
+ else:
1258
+ return visitor.visitChildren(self)
1259
+
1260
+
1261
+ class AbbrevPathStepContext(RelativeLocationPathContext):
1262
+
1263
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.RelativeLocationPathContext
1264
+ super().__init__(parser)
1265
+ self.copyFrom(ctx)
1266
+
1267
+ def relativeLocationPath(self):
1268
+ return self.getTypedRuleContext(KodexaSelectorParser.RelativeLocationPathContext,0)
1269
+
1270
+ def ABBREV_PATH_SEP(self):
1271
+ return self.getToken(KodexaSelectorParser.ABBREV_PATH_SEP, 0)
1272
+ def step(self):
1273
+ return self.getTypedRuleContext(KodexaSelectorParser.StepContext,0)
1274
+
1275
+
1276
+ def enterRule(self, listener:ParseTreeListener):
1277
+ if hasattr( listener, "enterAbbrevPathStep" ):
1278
+ listener.enterAbbrevPathStep(self)
1279
+
1280
+ def exitRule(self, listener:ParseTreeListener):
1281
+ if hasattr( listener, "exitAbbrevPathStep" ):
1282
+ listener.exitAbbrevPathStep(self)
1283
+
1284
+ def accept(self, visitor:ParseTreeVisitor):
1285
+ if hasattr( visitor, "visitAbbrevPathStep" ):
1286
+ return visitor.visitAbbrevPathStep(self)
1287
+ else:
1288
+ return visitor.visitChildren(self)
1289
+
1290
+
1291
+
1292
+ def relativeLocationPath(self, _p:int=0):
1293
+ _parentctx = self._ctx
1294
+ _parentState = self.state
1295
+ localctx = KodexaSelectorParser.RelativeLocationPathContext(self, self._ctx, _parentState)
1296
+ _prevctx = localctx
1297
+ _startState = 8
1298
+ self.enterRecursionRule(localctx, 8, self.RULE_relativeLocationPath, _p)
1299
+ try:
1300
+ self.enterOuterAlt(localctx, 1)
1301
+ localctx = KodexaSelectorParser.SingleStepContext(self, localctx)
1302
+ self._ctx = localctx
1303
+ _prevctx = localctx
1304
+
1305
+ self.state = 105
1306
+ self.step()
1307
+ self._ctx.stop = self._input.LT(-1)
1308
+ self.state = 115
1309
+ self._errHandler.sync(self)
1310
+ _alt = self._interp.adaptivePredict(self._input,5,self._ctx)
1311
+ while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
1312
+ if _alt==1:
1313
+ if self._parseListeners is not None:
1314
+ self.triggerExitRuleEvent()
1315
+ _prevctx = localctx
1316
+ self.state = 113
1317
+ self._errHandler.sync(self)
1318
+ la_ = self._interp.adaptivePredict(self._input,4,self._ctx)
1319
+ if la_ == 1:
1320
+ localctx = KodexaSelectorParser.PathStepContext(self, KodexaSelectorParser.RelativeLocationPathContext(self, _parentctx, _parentState))
1321
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relativeLocationPath)
1322
+ self.state = 107
1323
+ if not self.precpred(self._ctx, 2):
1324
+ from antlr4.error.Errors import FailedPredicateException
1325
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
1326
+ self.state = 108
1327
+ self.match(KodexaSelectorParser.PATH_SEP)
1328
+ self.state = 109
1329
+ self.step()
1330
+ pass
1331
+
1332
+ elif la_ == 2:
1333
+ localctx = KodexaSelectorParser.AbbrevPathStepContext(self, KodexaSelectorParser.RelativeLocationPathContext(self, _parentctx, _parentState))
1334
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relativeLocationPath)
1335
+ self.state = 110
1336
+ if not self.precpred(self._ctx, 1):
1337
+ from antlr4.error.Errors import FailedPredicateException
1338
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
1339
+ self.state = 111
1340
+ self.match(KodexaSelectorParser.ABBREV_PATH_SEP)
1341
+ self.state = 112
1342
+ self.step()
1343
+ pass
1344
+
1345
+
1346
+ self.state = 117
1347
+ self._errHandler.sync(self)
1348
+ _alt = self._interp.adaptivePredict(self._input,5,self._ctx)
1349
+
1350
+ except RecognitionException as re:
1351
+ localctx.exception = re
1352
+ self._errHandler.reportError(self, re)
1353
+ self._errHandler.recover(self, re)
1354
+ finally:
1355
+ self.unrollRecursionContexts(_parentctx)
1356
+ return localctx
1357
+
1358
+
1359
+ class StepContext(ParserRuleContext):
1360
+ __slots__ = 'parser'
1361
+
1362
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
1363
+ super().__init__(parent, invokingState)
1364
+ self.parser = parser
1365
+
1366
+
1367
+ def getRuleIndex(self):
1368
+ return KodexaSelectorParser.RULE_step
1369
+
1370
+
1371
+ def copyFrom(self, ctx:ParserRuleContext):
1372
+ super().copyFrom(ctx)
1373
+
1374
+
1375
+
1376
+ class NodeTestPredStepContext(StepContext):
1377
+
1378
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.StepContext
1379
+ super().__init__(parser)
1380
+ self.copyFrom(ctx)
1381
+
1382
+ def nodeTest(self):
1383
+ return self.getTypedRuleContext(KodexaSelectorParser.NodeTestContext,0)
1384
+
1385
+ def predicateList(self):
1386
+ return self.getTypedRuleContext(KodexaSelectorParser.PredicateListContext,0)
1387
+
1388
+
1389
+ def enterRule(self, listener:ParseTreeListener):
1390
+ if hasattr( listener, "enterNodeTestPredStep" ):
1391
+ listener.enterNodeTestPredStep(self)
1392
+
1393
+ def exitRule(self, listener:ParseTreeListener):
1394
+ if hasattr( listener, "exitNodeTestPredStep" ):
1395
+ listener.exitNodeTestPredStep(self)
1396
+
1397
+ def accept(self, visitor:ParseTreeVisitor):
1398
+ if hasattr( visitor, "visitNodeTestPredStep" ):
1399
+ return visitor.visitNodeTestPredStep(self)
1400
+ else:
1401
+ return visitor.visitChildren(self)
1402
+
1403
+
1404
+ class SelfStepContext(StepContext):
1405
+
1406
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.StepContext
1407
+ super().__init__(parser)
1408
+ self.copyFrom(ctx)
1409
+
1410
+ def ABBREV_STEP_SELF(self):
1411
+ return self.getToken(KodexaSelectorParser.ABBREV_STEP_SELF, 0)
1412
+
1413
+ def enterRule(self, listener:ParseTreeListener):
1414
+ if hasattr( listener, "enterSelfStep" ):
1415
+ listener.enterSelfStep(self)
1416
+
1417
+ def exitRule(self, listener:ParseTreeListener):
1418
+ if hasattr( listener, "exitSelfStep" ):
1419
+ listener.exitSelfStep(self)
1420
+
1421
+ def accept(self, visitor:ParseTreeVisitor):
1422
+ if hasattr( visitor, "visitSelfStep" ):
1423
+ return visitor.visitSelfStep(self)
1424
+ else:
1425
+ return visitor.visitChildren(self)
1426
+
1427
+
1428
+ class AxisNodeTestStepContext(StepContext):
1429
+
1430
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.StepContext
1431
+ super().__init__(parser)
1432
+ self.copyFrom(ctx)
1433
+
1434
+ def axisSpecifier(self):
1435
+ return self.getTypedRuleContext(KodexaSelectorParser.AxisSpecifierContext,0)
1436
+
1437
+ def nodeTest(self):
1438
+ return self.getTypedRuleContext(KodexaSelectorParser.NodeTestContext,0)
1439
+
1440
+
1441
+ def enterRule(self, listener:ParseTreeListener):
1442
+ if hasattr( listener, "enterAxisNodeTestStep" ):
1443
+ listener.enterAxisNodeTestStep(self)
1444
+
1445
+ def exitRule(self, listener:ParseTreeListener):
1446
+ if hasattr( listener, "exitAxisNodeTestStep" ):
1447
+ listener.exitAxisNodeTestStep(self)
1448
+
1449
+ def accept(self, visitor:ParseTreeVisitor):
1450
+ if hasattr( visitor, "visitAxisNodeTestStep" ):
1451
+ return visitor.visitAxisNodeTestStep(self)
1452
+ else:
1453
+ return visitor.visitChildren(self)
1454
+
1455
+
1456
+ class AxisNodeTestPredStepContext(StepContext):
1457
+
1458
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.StepContext
1459
+ super().__init__(parser)
1460
+ self.copyFrom(ctx)
1461
+
1462
+ def axisSpecifier(self):
1463
+ return self.getTypedRuleContext(KodexaSelectorParser.AxisSpecifierContext,0)
1464
+
1465
+ def nodeTest(self):
1466
+ return self.getTypedRuleContext(KodexaSelectorParser.NodeTestContext,0)
1467
+
1468
+ def predicateList(self):
1469
+ return self.getTypedRuleContext(KodexaSelectorParser.PredicateListContext,0)
1470
+
1471
+
1472
+ def enterRule(self, listener:ParseTreeListener):
1473
+ if hasattr( listener, "enterAxisNodeTestPredStep" ):
1474
+ listener.enterAxisNodeTestPredStep(self)
1475
+
1476
+ def exitRule(self, listener:ParseTreeListener):
1477
+ if hasattr( listener, "exitAxisNodeTestPredStep" ):
1478
+ listener.exitAxisNodeTestPredStep(self)
1479
+
1480
+ def accept(self, visitor:ParseTreeVisitor):
1481
+ if hasattr( visitor, "visitAxisNodeTestPredStep" ):
1482
+ return visitor.visitAxisNodeTestPredStep(self)
1483
+ else:
1484
+ return visitor.visitChildren(self)
1485
+
1486
+
1487
+ class ParentStepContext(StepContext):
1488
+
1489
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.StepContext
1490
+ super().__init__(parser)
1491
+ self.copyFrom(ctx)
1492
+
1493
+ def ABBREV_STEP_PARENT(self):
1494
+ return self.getToken(KodexaSelectorParser.ABBREV_STEP_PARENT, 0)
1495
+
1496
+ def enterRule(self, listener:ParseTreeListener):
1497
+ if hasattr( listener, "enterParentStep" ):
1498
+ listener.enterParentStep(self)
1499
+
1500
+ def exitRule(self, listener:ParseTreeListener):
1501
+ if hasattr( listener, "exitParentStep" ):
1502
+ listener.exitParentStep(self)
1503
+
1504
+ def accept(self, visitor:ParseTreeVisitor):
1505
+ if hasattr( visitor, "visitParentStep" ):
1506
+ return visitor.visitParentStep(self)
1507
+ else:
1508
+ return visitor.visitChildren(self)
1509
+
1510
+
1511
+ class NodeTestStepContext(StepContext):
1512
+
1513
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.StepContext
1514
+ super().__init__(parser)
1515
+ self.copyFrom(ctx)
1516
+
1517
+ def nodeTest(self):
1518
+ return self.getTypedRuleContext(KodexaSelectorParser.NodeTestContext,0)
1519
+
1520
+
1521
+ def enterRule(self, listener:ParseTreeListener):
1522
+ if hasattr( listener, "enterNodeTestStep" ):
1523
+ listener.enterNodeTestStep(self)
1524
+
1525
+ def exitRule(self, listener:ParseTreeListener):
1526
+ if hasattr( listener, "exitNodeTestStep" ):
1527
+ listener.exitNodeTestStep(self)
1528
+
1529
+ def accept(self, visitor:ParseTreeVisitor):
1530
+ if hasattr( visitor, "visitNodeTestStep" ):
1531
+ return visitor.visitNodeTestStep(self)
1532
+ else:
1533
+ return visitor.visitChildren(self)
1534
+
1535
+
1536
+
1537
+ def step(self):
1538
+
1539
+ localctx = KodexaSelectorParser.StepContext(self, self._ctx, self.state)
1540
+ self.enterRule(localctx, 10, self.RULE_step)
1541
+ try:
1542
+ self.state = 131
1543
+ self._errHandler.sync(self)
1544
+ la_ = self._interp.adaptivePredict(self._input,6,self._ctx)
1545
+ if la_ == 1:
1546
+ localctx = KodexaSelectorParser.NodeTestStepContext(self, localctx)
1547
+ self.enterOuterAlt(localctx, 1)
1548
+ self.state = 118
1549
+ self.nodeTest()
1550
+ pass
1551
+
1552
+ elif la_ == 2:
1553
+ localctx = KodexaSelectorParser.NodeTestPredStepContext(self, localctx)
1554
+ self.enterOuterAlt(localctx, 2)
1555
+ self.state = 119
1556
+ self.nodeTest()
1557
+ self.state = 120
1558
+ self.predicateList(0)
1559
+ pass
1560
+
1561
+ elif la_ == 3:
1562
+ localctx = KodexaSelectorParser.AxisNodeTestStepContext(self, localctx)
1563
+ self.enterOuterAlt(localctx, 3)
1564
+ self.state = 122
1565
+ self.axisSpecifier()
1566
+ self.state = 123
1567
+ self.nodeTest()
1568
+ pass
1569
+
1570
+ elif la_ == 4:
1571
+ localctx = KodexaSelectorParser.AxisNodeTestPredStepContext(self, localctx)
1572
+ self.enterOuterAlt(localctx, 4)
1573
+ self.state = 125
1574
+ self.axisSpecifier()
1575
+ self.state = 126
1576
+ self.nodeTest()
1577
+ self.state = 127
1578
+ self.predicateList(0)
1579
+ pass
1580
+
1581
+ elif la_ == 5:
1582
+ localctx = KodexaSelectorParser.SelfStepContext(self, localctx)
1583
+ self.enterOuterAlt(localctx, 5)
1584
+ self.state = 129
1585
+ self.match(KodexaSelectorParser.ABBREV_STEP_SELF)
1586
+ pass
1587
+
1588
+ elif la_ == 6:
1589
+ localctx = KodexaSelectorParser.ParentStepContext(self, localctx)
1590
+ self.enterOuterAlt(localctx, 6)
1591
+ self.state = 130
1592
+ self.match(KodexaSelectorParser.ABBREV_STEP_PARENT)
1593
+ pass
1594
+
1595
+
1596
+ except RecognitionException as re:
1597
+ localctx.exception = re
1598
+ self._errHandler.reportError(self, re)
1599
+ self._errHandler.recover(self, re)
1600
+ finally:
1601
+ self.exitRule()
1602
+ return localctx
1603
+
1604
+
1605
+ class AxisSpecifierContext(ParserRuleContext):
1606
+ __slots__ = 'parser'
1607
+
1608
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
1609
+ super().__init__(parent, invokingState)
1610
+ self.parser = parser
1611
+
1612
+
1613
+ def getRuleIndex(self):
1614
+ return KodexaSelectorParser.RULE_axisSpecifier
1615
+
1616
+
1617
+ def copyFrom(self, ctx:ParserRuleContext):
1618
+ super().copyFrom(ctx)
1619
+
1620
+
1621
+
1622
+ class FullAxisContext(AxisSpecifierContext):
1623
+
1624
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.AxisSpecifierContext
1625
+ super().__init__(parser)
1626
+ self.copyFrom(ctx)
1627
+
1628
+ def AXISNAME(self):
1629
+ return self.getToken(KodexaSelectorParser.AXISNAME, 0)
1630
+ def AXIS_SEP(self):
1631
+ return self.getToken(KodexaSelectorParser.AXIS_SEP, 0)
1632
+
1633
+ def enterRule(self, listener:ParseTreeListener):
1634
+ if hasattr( listener, "enterFullAxis" ):
1635
+ listener.enterFullAxis(self)
1636
+
1637
+ def exitRule(self, listener:ParseTreeListener):
1638
+ if hasattr( listener, "exitFullAxis" ):
1639
+ listener.exitFullAxis(self)
1640
+
1641
+ def accept(self, visitor:ParseTreeVisitor):
1642
+ if hasattr( visitor, "visitFullAxis" ):
1643
+ return visitor.visitFullAxis(self)
1644
+ else:
1645
+ return visitor.visitChildren(self)
1646
+
1647
+
1648
+ class AttrAxisContext(AxisSpecifierContext):
1649
+
1650
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.AxisSpecifierContext
1651
+ super().__init__(parser)
1652
+ self.copyFrom(ctx)
1653
+
1654
+ def ABBREV_AXIS_AT(self):
1655
+ return self.getToken(KodexaSelectorParser.ABBREV_AXIS_AT, 0)
1656
+
1657
+ def enterRule(self, listener:ParseTreeListener):
1658
+ if hasattr( listener, "enterAttrAxis" ):
1659
+ listener.enterAttrAxis(self)
1660
+
1661
+ def exitRule(self, listener:ParseTreeListener):
1662
+ if hasattr( listener, "exitAttrAxis" ):
1663
+ listener.exitAttrAxis(self)
1664
+
1665
+ def accept(self, visitor:ParseTreeVisitor):
1666
+ if hasattr( visitor, "visitAttrAxis" ):
1667
+ return visitor.visitAttrAxis(self)
1668
+ else:
1669
+ return visitor.visitChildren(self)
1670
+
1671
+
1672
+
1673
+ def axisSpecifier(self):
1674
+
1675
+ localctx = KodexaSelectorParser.AxisSpecifierContext(self, self._ctx, self.state)
1676
+ self.enterRule(localctx, 12, self.RULE_axisSpecifier)
1677
+ try:
1678
+ self.state = 136
1679
+ self._errHandler.sync(self)
1680
+ token = self._input.LA(1)
1681
+ if token in [32]:
1682
+ localctx = KodexaSelectorParser.FullAxisContext(self, localctx)
1683
+ self.enterOuterAlt(localctx, 1)
1684
+ self.state = 133
1685
+ self.match(KodexaSelectorParser.AXISNAME)
1686
+ self.state = 134
1687
+ self.match(KodexaSelectorParser.AXIS_SEP)
1688
+ pass
1689
+ elif token in [10]:
1690
+ localctx = KodexaSelectorParser.AttrAxisContext(self, localctx)
1691
+ self.enterOuterAlt(localctx, 2)
1692
+ self.state = 135
1693
+ self.match(KodexaSelectorParser.ABBREV_AXIS_AT)
1694
+ pass
1695
+ else:
1696
+ raise NoViableAltException(self)
1697
+
1698
+ except RecognitionException as re:
1699
+ localctx.exception = re
1700
+ self._errHandler.reportError(self, re)
1701
+ self._errHandler.recover(self, re)
1702
+ finally:
1703
+ self.exitRule()
1704
+ return localctx
1705
+
1706
+
1707
+ class NodeTestContext(ParserRuleContext):
1708
+ __slots__ = 'parser'
1709
+
1710
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
1711
+ super().__init__(parent, invokingState)
1712
+ self.parser = parser
1713
+
1714
+
1715
+ def getRuleIndex(self):
1716
+ return KodexaSelectorParser.RULE_nodeTest
1717
+
1718
+
1719
+ def copyFrom(self, ctx:ParserRuleContext):
1720
+ super().copyFrom(ctx)
1721
+
1722
+
1723
+
1724
+ class NameTestNodeContext(NodeTestContext):
1725
+
1726
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.NodeTestContext
1727
+ super().__init__(parser)
1728
+ self.copyFrom(ctx)
1729
+
1730
+ def nameTest(self):
1731
+ return self.getTypedRuleContext(KodexaSelectorParser.NameTestContext,0)
1732
+
1733
+
1734
+ def enterRule(self, listener:ParseTreeListener):
1735
+ if hasattr( listener, "enterNameTestNode" ):
1736
+ listener.enterNameTestNode(self)
1737
+
1738
+ def exitRule(self, listener:ParseTreeListener):
1739
+ if hasattr( listener, "exitNameTestNode" ):
1740
+ listener.exitNameTestNode(self)
1741
+
1742
+ def accept(self, visitor:ParseTreeVisitor):
1743
+ if hasattr( visitor, "visitNameTestNode" ):
1744
+ return visitor.visitNameTestNode(self)
1745
+ else:
1746
+ return visitor.visitChildren(self)
1747
+
1748
+
1749
+
1750
+ def nodeTest(self):
1751
+
1752
+ localctx = KodexaSelectorParser.NodeTestContext(self, self._ctx, self.state)
1753
+ self.enterRule(localctx, 14, self.RULE_nodeTest)
1754
+ try:
1755
+ localctx = KodexaSelectorParser.NameTestNodeContext(self, localctx)
1756
+ self.enterOuterAlt(localctx, 1)
1757
+ self.state = 138
1758
+ self.nameTest()
1759
+ except RecognitionException as re:
1760
+ localctx.exception = re
1761
+ self._errHandler.reportError(self, re)
1762
+ self._errHandler.recover(self, re)
1763
+ finally:
1764
+ self.exitRule()
1765
+ return localctx
1766
+
1767
+
1768
+ class NameTestContext(ParserRuleContext):
1769
+ __slots__ = 'parser'
1770
+
1771
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
1772
+ super().__init__(parent, invokingState)
1773
+ self.parser = parser
1774
+
1775
+
1776
+ def getRuleIndex(self):
1777
+ return KodexaSelectorParser.RULE_nameTest
1778
+
1779
+
1780
+ def copyFrom(self, ctx:ParserRuleContext):
1781
+ super().copyFrom(ctx)
1782
+
1783
+
1784
+
1785
+ class AnyNameTestContext(NameTestContext):
1786
+
1787
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.NameTestContext
1788
+ super().__init__(parser)
1789
+ self.copyFrom(ctx)
1790
+
1791
+ def STAR(self):
1792
+ return self.getToken(KodexaSelectorParser.STAR, 0)
1793
+
1794
+ def enterRule(self, listener:ParseTreeListener):
1795
+ if hasattr( listener, "enterAnyNameTest" ):
1796
+ listener.enterAnyNameTest(self)
1797
+
1798
+ def exitRule(self, listener:ParseTreeListener):
1799
+ if hasattr( listener, "exitAnyNameTest" ):
1800
+ listener.exitAnyNameTest(self)
1801
+
1802
+ def accept(self, visitor:ParseTreeVisitor):
1803
+ if hasattr( visitor, "visitAnyNameTest" ):
1804
+ return visitor.visitAnyNameTest(self)
1805
+ else:
1806
+ return visitor.visitChildren(self)
1807
+
1808
+
1809
+ class QNameTestContext(NameTestContext):
1810
+
1811
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.NameTestContext
1812
+ super().__init__(parser)
1813
+ self.copyFrom(ctx)
1814
+
1815
+ def qName(self):
1816
+ return self.getTypedRuleContext(KodexaSelectorParser.QNameContext,0)
1817
+
1818
+
1819
+ def enterRule(self, listener:ParseTreeListener):
1820
+ if hasattr( listener, "enterQNameTest" ):
1821
+ listener.enterQNameTest(self)
1822
+
1823
+ def exitRule(self, listener:ParseTreeListener):
1824
+ if hasattr( listener, "exitQNameTest" ):
1825
+ listener.exitQNameTest(self)
1826
+
1827
+ def accept(self, visitor:ParseTreeVisitor):
1828
+ if hasattr( visitor, "visitQNameTest" ):
1829
+ return visitor.visitQNameTest(self)
1830
+ else:
1831
+ return visitor.visitChildren(self)
1832
+
1833
+
1834
+ class PrefixedAnyNameTestContext(NameTestContext):
1835
+
1836
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.NameTestContext
1837
+ super().__init__(parser)
1838
+ self.copyFrom(ctx)
1839
+
1840
+ def NCNAME(self):
1841
+ return self.getToken(KodexaSelectorParser.NCNAME, 0)
1842
+ def COLON(self):
1843
+ return self.getToken(KodexaSelectorParser.COLON, 0)
1844
+ def STAR(self):
1845
+ return self.getToken(KodexaSelectorParser.STAR, 0)
1846
+
1847
+ def enterRule(self, listener:ParseTreeListener):
1848
+ if hasattr( listener, "enterPrefixedAnyNameTest" ):
1849
+ listener.enterPrefixedAnyNameTest(self)
1850
+
1851
+ def exitRule(self, listener:ParseTreeListener):
1852
+ if hasattr( listener, "exitPrefixedAnyNameTest" ):
1853
+ listener.exitPrefixedAnyNameTest(self)
1854
+
1855
+ def accept(self, visitor:ParseTreeVisitor):
1856
+ if hasattr( visitor, "visitPrefixedAnyNameTest" ):
1857
+ return visitor.visitPrefixedAnyNameTest(self)
1858
+ else:
1859
+ return visitor.visitChildren(self)
1860
+
1861
+
1862
+
1863
+ def nameTest(self):
1864
+
1865
+ localctx = KodexaSelectorParser.NameTestContext(self, self._ctx, self.state)
1866
+ self.enterRule(localctx, 16, self.RULE_nameTest)
1867
+ try:
1868
+ self.state = 145
1869
+ self._errHandler.sync(self)
1870
+ la_ = self._interp.adaptivePredict(self._input,8,self._ctx)
1871
+ if la_ == 1:
1872
+ localctx = KodexaSelectorParser.AnyNameTestContext(self, localctx)
1873
+ self.enterOuterAlt(localctx, 1)
1874
+ self.state = 140
1875
+ self.match(KodexaSelectorParser.STAR)
1876
+ pass
1877
+
1878
+ elif la_ == 2:
1879
+ localctx = KodexaSelectorParser.PrefixedAnyNameTestContext(self, localctx)
1880
+ self.enterOuterAlt(localctx, 2)
1881
+ self.state = 141
1882
+ self.match(KodexaSelectorParser.NCNAME)
1883
+ self.state = 142
1884
+ self.match(KodexaSelectorParser.COLON)
1885
+ self.state = 143
1886
+ self.match(KodexaSelectorParser.STAR)
1887
+ pass
1888
+
1889
+ elif la_ == 3:
1890
+ localctx = KodexaSelectorParser.QNameTestContext(self, localctx)
1891
+ self.enterOuterAlt(localctx, 3)
1892
+ self.state = 144
1893
+ self.qName()
1894
+ pass
1895
+
1896
+
1897
+ except RecognitionException as re:
1898
+ localctx.exception = re
1899
+ self._errHandler.reportError(self, re)
1900
+ self._errHandler.recover(self, re)
1901
+ finally:
1902
+ self.exitRule()
1903
+ return localctx
1904
+
1905
+
1906
+ class QNameContext(ParserRuleContext):
1907
+ __slots__ = 'parser'
1908
+
1909
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
1910
+ super().__init__(parent, invokingState)
1911
+ self.parser = parser
1912
+
1913
+
1914
+ def getRuleIndex(self):
1915
+ return KodexaSelectorParser.RULE_qName
1916
+
1917
+
1918
+ def copyFrom(self, ctx:ParserRuleContext):
1919
+ super().copyFrom(ctx)
1920
+
1921
+
1922
+
1923
+ class SimpleNameContext(QNameContext):
1924
+
1925
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.QNameContext
1926
+ super().__init__(parser)
1927
+ self.copyFrom(ctx)
1928
+
1929
+ def NCNAME(self):
1930
+ return self.getToken(KodexaSelectorParser.NCNAME, 0)
1931
+
1932
+ def enterRule(self, listener:ParseTreeListener):
1933
+ if hasattr( listener, "enterSimpleName" ):
1934
+ listener.enterSimpleName(self)
1935
+
1936
+ def exitRule(self, listener:ParseTreeListener):
1937
+ if hasattr( listener, "exitSimpleName" ):
1938
+ listener.exitSimpleName(self)
1939
+
1940
+ def accept(self, visitor:ParseTreeVisitor):
1941
+ if hasattr( visitor, "visitSimpleName" ):
1942
+ return visitor.visitSimpleName(self)
1943
+ else:
1944
+ return visitor.visitChildren(self)
1945
+
1946
+
1947
+ class PrefixedNameContext(QNameContext):
1948
+
1949
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.QNameContext
1950
+ super().__init__(parser)
1951
+ self.copyFrom(ctx)
1952
+
1953
+ def NCNAME(self, i:int=None):
1954
+ if i is None:
1955
+ return self.getTokens(KodexaSelectorParser.NCNAME)
1956
+ else:
1957
+ return self.getToken(KodexaSelectorParser.NCNAME, i)
1958
+ def COLON(self):
1959
+ return self.getToken(KodexaSelectorParser.COLON, 0)
1960
+
1961
+ def enterRule(self, listener:ParseTreeListener):
1962
+ if hasattr( listener, "enterPrefixedName" ):
1963
+ listener.enterPrefixedName(self)
1964
+
1965
+ def exitRule(self, listener:ParseTreeListener):
1966
+ if hasattr( listener, "exitPrefixedName" ):
1967
+ listener.exitPrefixedName(self)
1968
+
1969
+ def accept(self, visitor:ParseTreeVisitor):
1970
+ if hasattr( visitor, "visitPrefixedName" ):
1971
+ return visitor.visitPrefixedName(self)
1972
+ else:
1973
+ return visitor.visitChildren(self)
1974
+
1975
+
1976
+
1977
+ def qName(self):
1978
+
1979
+ localctx = KodexaSelectorParser.QNameContext(self, self._ctx, self.state)
1980
+ self.enterRule(localctx, 18, self.RULE_qName)
1981
+ try:
1982
+ self.state = 151
1983
+ self._errHandler.sync(self)
1984
+ la_ = self._interp.adaptivePredict(self._input,9,self._ctx)
1985
+ if la_ == 1:
1986
+ localctx = KodexaSelectorParser.PrefixedNameContext(self, localctx)
1987
+ self.enterOuterAlt(localctx, 1)
1988
+ self.state = 147
1989
+ self.match(KodexaSelectorParser.NCNAME)
1990
+ self.state = 148
1991
+ self.match(KodexaSelectorParser.COLON)
1992
+ self.state = 149
1993
+ self.match(KodexaSelectorParser.NCNAME)
1994
+ pass
1995
+
1996
+ elif la_ == 2:
1997
+ localctx = KodexaSelectorParser.SimpleNameContext(self, localctx)
1998
+ self.enterOuterAlt(localctx, 2)
1999
+ self.state = 150
2000
+ self.match(KodexaSelectorParser.NCNAME)
2001
+ pass
2002
+
2003
+
2004
+ except RecognitionException as re:
2005
+ localctx.exception = re
2006
+ self._errHandler.reportError(self, re)
2007
+ self._errHandler.recover(self, re)
2008
+ finally:
2009
+ self.exitRule()
2010
+ return localctx
2011
+
2012
+
2013
+ class FilterExprContext(ParserRuleContext):
2014
+ __slots__ = 'parser'
2015
+
2016
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2017
+ super().__init__(parent, invokingState)
2018
+ self.parser = parser
2019
+
2020
+
2021
+ def getRuleIndex(self):
2022
+ return KodexaSelectorParser.RULE_filterExpr
2023
+
2024
+
2025
+ def copyFrom(self, ctx:ParserRuleContext):
2026
+ super().copyFrom(ctx)
2027
+
2028
+
2029
+ class FuncCallFilterContext(FilterExprContext):
2030
+
2031
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FilterExprContext
2032
+ super().__init__(parser)
2033
+ self.copyFrom(ctx)
2034
+
2035
+ def functionCall(self):
2036
+ return self.getTypedRuleContext(KodexaSelectorParser.FunctionCallContext,0)
2037
+
2038
+
2039
+ def enterRule(self, listener:ParseTreeListener):
2040
+ if hasattr( listener, "enterFuncCallFilter" ):
2041
+ listener.enterFuncCallFilter(self)
2042
+
2043
+ def exitRule(self, listener:ParseTreeListener):
2044
+ if hasattr( listener, "exitFuncCallFilter" ):
2045
+ listener.exitFuncCallFilter(self)
2046
+
2047
+ def accept(self, visitor:ParseTreeVisitor):
2048
+ if hasattr( visitor, "visitFuncCallFilter" ):
2049
+ return visitor.visitFuncCallFilter(self)
2050
+ else:
2051
+ return visitor.visitChildren(self)
2052
+
2053
+
2054
+ class BooleanFilterContext(FilterExprContext):
2055
+
2056
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FilterExprContext
2057
+ super().__init__(parser)
2058
+ self.copyFrom(ctx)
2059
+
2060
+ def booleanLiteral(self):
2061
+ return self.getTypedRuleContext(KodexaSelectorParser.BooleanLiteralContext,0)
2062
+
2063
+
2064
+ def enterRule(self, listener:ParseTreeListener):
2065
+ if hasattr( listener, "enterBooleanFilter" ):
2066
+ listener.enterBooleanFilter(self)
2067
+
2068
+ def exitRule(self, listener:ParseTreeListener):
2069
+ if hasattr( listener, "exitBooleanFilter" ):
2070
+ listener.exitBooleanFilter(self)
2071
+
2072
+ def accept(self, visitor:ParseTreeVisitor):
2073
+ if hasattr( visitor, "visitBooleanFilter" ):
2074
+ return visitor.visitBooleanFilter(self)
2075
+ else:
2076
+ return visitor.visitChildren(self)
2077
+
2078
+
2079
+ class GroupedFilterContext(FilterExprContext):
2080
+
2081
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FilterExprContext
2082
+ super().__init__(parser)
2083
+ self.copyFrom(ctx)
2084
+
2085
+ def LPAREN(self):
2086
+ return self.getToken(KodexaSelectorParser.LPAREN, 0)
2087
+ def expr(self):
2088
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,0)
2089
+
2090
+ def RPAREN(self):
2091
+ return self.getToken(KodexaSelectorParser.RPAREN, 0)
2092
+
2093
+ def enterRule(self, listener:ParseTreeListener):
2094
+ if hasattr( listener, "enterGroupedFilter" ):
2095
+ listener.enterGroupedFilter(self)
2096
+
2097
+ def exitRule(self, listener:ParseTreeListener):
2098
+ if hasattr( listener, "exitGroupedFilter" ):
2099
+ listener.exitGroupedFilter(self)
2100
+
2101
+ def accept(self, visitor:ParseTreeVisitor):
2102
+ if hasattr( visitor, "visitGroupedFilter" ):
2103
+ return visitor.visitGroupedFilter(self)
2104
+ else:
2105
+ return visitor.visitChildren(self)
2106
+
2107
+
2108
+ class PredicatedFilterContext(FilterExprContext):
2109
+
2110
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FilterExprContext
2111
+ super().__init__(parser)
2112
+ self.copyFrom(ctx)
2113
+
2114
+ def filterExpr(self):
2115
+ return self.getTypedRuleContext(KodexaSelectorParser.FilterExprContext,0)
2116
+
2117
+ def predicate(self):
2118
+ return self.getTypedRuleContext(KodexaSelectorParser.PredicateContext,0)
2119
+
2120
+
2121
+ def enterRule(self, listener:ParseTreeListener):
2122
+ if hasattr( listener, "enterPredicatedFilter" ):
2123
+ listener.enterPredicatedFilter(self)
2124
+
2125
+ def exitRule(self, listener:ParseTreeListener):
2126
+ if hasattr( listener, "exitPredicatedFilter" ):
2127
+ listener.exitPredicatedFilter(self)
2128
+
2129
+ def accept(self, visitor:ParseTreeVisitor):
2130
+ if hasattr( visitor, "visitPredicatedFilter" ):
2131
+ return visitor.visitPredicatedFilter(self)
2132
+ else:
2133
+ return visitor.visitChildren(self)
2134
+
2135
+
2136
+ class NumberFilterContext(FilterExprContext):
2137
+
2138
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FilterExprContext
2139
+ super().__init__(parser)
2140
+ self.copyFrom(ctx)
2141
+
2142
+ def number(self):
2143
+ return self.getTypedRuleContext(KodexaSelectorParser.NumberContext,0)
2144
+
2145
+
2146
+ def enterRule(self, listener:ParseTreeListener):
2147
+ if hasattr( listener, "enterNumberFilter" ):
2148
+ listener.enterNumberFilter(self)
2149
+
2150
+ def exitRule(self, listener:ParseTreeListener):
2151
+ if hasattr( listener, "exitNumberFilter" ):
2152
+ listener.exitNumberFilter(self)
2153
+
2154
+ def accept(self, visitor:ParseTreeVisitor):
2155
+ if hasattr( visitor, "visitNumberFilter" ):
2156
+ return visitor.visitNumberFilter(self)
2157
+ else:
2158
+ return visitor.visitChildren(self)
2159
+
2160
+
2161
+ class VarRefFilterContext(FilterExprContext):
2162
+
2163
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FilterExprContext
2164
+ super().__init__(parser)
2165
+ self.copyFrom(ctx)
2166
+
2167
+ def variableReference(self):
2168
+ return self.getTypedRuleContext(KodexaSelectorParser.VariableReferenceContext,0)
2169
+
2170
+
2171
+ def enterRule(self, listener:ParseTreeListener):
2172
+ if hasattr( listener, "enterVarRefFilter" ):
2173
+ listener.enterVarRefFilter(self)
2174
+
2175
+ def exitRule(self, listener:ParseTreeListener):
2176
+ if hasattr( listener, "exitVarRefFilter" ):
2177
+ listener.exitVarRefFilter(self)
2178
+
2179
+ def accept(self, visitor:ParseTreeVisitor):
2180
+ if hasattr( visitor, "visitVarRefFilter" ):
2181
+ return visitor.visitVarRefFilter(self)
2182
+ else:
2183
+ return visitor.visitChildren(self)
2184
+
2185
+
2186
+ class LiteralFilterContext(FilterExprContext):
2187
+
2188
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FilterExprContext
2189
+ super().__init__(parser)
2190
+ self.copyFrom(ctx)
2191
+
2192
+ def LITERAL(self):
2193
+ return self.getToken(KodexaSelectorParser.LITERAL, 0)
2194
+
2195
+ def enterRule(self, listener:ParseTreeListener):
2196
+ if hasattr( listener, "enterLiteralFilter" ):
2197
+ listener.enterLiteralFilter(self)
2198
+
2199
+ def exitRule(self, listener:ParseTreeListener):
2200
+ if hasattr( listener, "exitLiteralFilter" ):
2201
+ listener.exitLiteralFilter(self)
2202
+
2203
+ def accept(self, visitor:ParseTreeVisitor):
2204
+ if hasattr( visitor, "visitLiteralFilter" ):
2205
+ return visitor.visitLiteralFilter(self)
2206
+ else:
2207
+ return visitor.visitChildren(self)
2208
+
2209
+
2210
+
2211
+ def filterExpr(self, _p:int=0):
2212
+ _parentctx = self._ctx
2213
+ _parentState = self.state
2214
+ localctx = KodexaSelectorParser.FilterExprContext(self, self._ctx, _parentState)
2215
+ _prevctx = localctx
2216
+ _startState = 20
2217
+ self.enterRecursionRule(localctx, 20, self.RULE_filterExpr, _p)
2218
+ try:
2219
+ self.enterOuterAlt(localctx, 1)
2220
+ self.state = 163
2221
+ self._errHandler.sync(self)
2222
+ la_ = self._interp.adaptivePredict(self._input,10,self._ctx)
2223
+ if la_ == 1:
2224
+ localctx = KodexaSelectorParser.VarRefFilterContext(self, localctx)
2225
+ self._ctx = localctx
2226
+ _prevctx = localctx
2227
+
2228
+ self.state = 154
2229
+ self.variableReference()
2230
+ pass
2231
+
2232
+ elif la_ == 2:
2233
+ localctx = KodexaSelectorParser.LiteralFilterContext(self, localctx)
2234
+ self._ctx = localctx
2235
+ _prevctx = localctx
2236
+ self.state = 155
2237
+ self.match(KodexaSelectorParser.LITERAL)
2238
+ pass
2239
+
2240
+ elif la_ == 3:
2241
+ localctx = KodexaSelectorParser.NumberFilterContext(self, localctx)
2242
+ self._ctx = localctx
2243
+ _prevctx = localctx
2244
+ self.state = 156
2245
+ self.number()
2246
+ pass
2247
+
2248
+ elif la_ == 4:
2249
+ localctx = KodexaSelectorParser.BooleanFilterContext(self, localctx)
2250
+ self._ctx = localctx
2251
+ _prevctx = localctx
2252
+ self.state = 157
2253
+ self.booleanLiteral()
2254
+ pass
2255
+
2256
+ elif la_ == 5:
2257
+ localctx = KodexaSelectorParser.FuncCallFilterContext(self, localctx)
2258
+ self._ctx = localctx
2259
+ _prevctx = localctx
2260
+ self.state = 158
2261
+ self.functionCall()
2262
+ pass
2263
+
2264
+ elif la_ == 6:
2265
+ localctx = KodexaSelectorParser.GroupedFilterContext(self, localctx)
2266
+ self._ctx = localctx
2267
+ _prevctx = localctx
2268
+ self.state = 159
2269
+ self.match(KodexaSelectorParser.LPAREN)
2270
+ self.state = 160
2271
+ self.expr(0)
2272
+ self.state = 161
2273
+ self.match(KodexaSelectorParser.RPAREN)
2274
+ pass
2275
+
2276
+
2277
+ self._ctx.stop = self._input.LT(-1)
2278
+ self.state = 169
2279
+ self._errHandler.sync(self)
2280
+ _alt = self._interp.adaptivePredict(self._input,11,self._ctx)
2281
+ while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
2282
+ if _alt==1:
2283
+ if self._parseListeners is not None:
2284
+ self.triggerExitRuleEvent()
2285
+ _prevctx = localctx
2286
+ localctx = KodexaSelectorParser.PredicatedFilterContext(self, KodexaSelectorParser.FilterExprContext(self, _parentctx, _parentState))
2287
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_filterExpr)
2288
+ self.state = 165
2289
+ if not self.precpred(self._ctx, 1):
2290
+ from antlr4.error.Errors import FailedPredicateException
2291
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
2292
+ self.state = 166
2293
+ self.predicate()
2294
+ self.state = 171
2295
+ self._errHandler.sync(self)
2296
+ _alt = self._interp.adaptivePredict(self._input,11,self._ctx)
2297
+
2298
+ except RecognitionException as re:
2299
+ localctx.exception = re
2300
+ self._errHandler.reportError(self, re)
2301
+ self._errHandler.recover(self, re)
2302
+ finally:
2303
+ self.unrollRecursionContexts(_parentctx)
2304
+ return localctx
2305
+
2306
+
2307
+ class PredicateListContext(ParserRuleContext):
2308
+ __slots__ = 'parser'
2309
+
2310
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2311
+ super().__init__(parent, invokingState)
2312
+ self.parser = parser
2313
+
2314
+
2315
+ def getRuleIndex(self):
2316
+ return KodexaSelectorParser.RULE_predicateList
2317
+
2318
+
2319
+ def copyFrom(self, ctx:ParserRuleContext):
2320
+ super().copyFrom(ctx)
2321
+
2322
+
2323
+ class SinglePredicateContext(PredicateListContext):
2324
+
2325
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.PredicateListContext
2326
+ super().__init__(parser)
2327
+ self.copyFrom(ctx)
2328
+
2329
+ def predicate(self):
2330
+ return self.getTypedRuleContext(KodexaSelectorParser.PredicateContext,0)
2331
+
2332
+
2333
+ def enterRule(self, listener:ParseTreeListener):
2334
+ if hasattr( listener, "enterSinglePredicate" ):
2335
+ listener.enterSinglePredicate(self)
2336
+
2337
+ def exitRule(self, listener:ParseTreeListener):
2338
+ if hasattr( listener, "exitSinglePredicate" ):
2339
+ listener.exitSinglePredicate(self)
2340
+
2341
+ def accept(self, visitor:ParseTreeVisitor):
2342
+ if hasattr( visitor, "visitSinglePredicate" ):
2343
+ return visitor.visitSinglePredicate(self)
2344
+ else:
2345
+ return visitor.visitChildren(self)
2346
+
2347
+
2348
+ class MultiplePredicateContext(PredicateListContext):
2349
+
2350
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.PredicateListContext
2351
+ super().__init__(parser)
2352
+ self.copyFrom(ctx)
2353
+
2354
+ def predicateList(self):
2355
+ return self.getTypedRuleContext(KodexaSelectorParser.PredicateListContext,0)
2356
+
2357
+ def predicate(self):
2358
+ return self.getTypedRuleContext(KodexaSelectorParser.PredicateContext,0)
2359
+
2360
+
2361
+ def enterRule(self, listener:ParseTreeListener):
2362
+ if hasattr( listener, "enterMultiplePredicate" ):
2363
+ listener.enterMultiplePredicate(self)
2364
+
2365
+ def exitRule(self, listener:ParseTreeListener):
2366
+ if hasattr( listener, "exitMultiplePredicate" ):
2367
+ listener.exitMultiplePredicate(self)
2368
+
2369
+ def accept(self, visitor:ParseTreeVisitor):
2370
+ if hasattr( visitor, "visitMultiplePredicate" ):
2371
+ return visitor.visitMultiplePredicate(self)
2372
+ else:
2373
+ return visitor.visitChildren(self)
2374
+
2375
+
2376
+
2377
+ def predicateList(self, _p:int=0):
2378
+ _parentctx = self._ctx
2379
+ _parentState = self.state
2380
+ localctx = KodexaSelectorParser.PredicateListContext(self, self._ctx, _parentState)
2381
+ _prevctx = localctx
2382
+ _startState = 22
2383
+ self.enterRecursionRule(localctx, 22, self.RULE_predicateList, _p)
2384
+ try:
2385
+ self.enterOuterAlt(localctx, 1)
2386
+ localctx = KodexaSelectorParser.SinglePredicateContext(self, localctx)
2387
+ self._ctx = localctx
2388
+ _prevctx = localctx
2389
+
2390
+ self.state = 173
2391
+ self.predicate()
2392
+ self._ctx.stop = self._input.LT(-1)
2393
+ self.state = 179
2394
+ self._errHandler.sync(self)
2395
+ _alt = self._interp.adaptivePredict(self._input,12,self._ctx)
2396
+ while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
2397
+ if _alt==1:
2398
+ if self._parseListeners is not None:
2399
+ self.triggerExitRuleEvent()
2400
+ _prevctx = localctx
2401
+ localctx = KodexaSelectorParser.MultiplePredicateContext(self, KodexaSelectorParser.PredicateListContext(self, _parentctx, _parentState))
2402
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_predicateList)
2403
+ self.state = 175
2404
+ if not self.precpred(self._ctx, 1):
2405
+ from antlr4.error.Errors import FailedPredicateException
2406
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
2407
+ self.state = 176
2408
+ self.predicate()
2409
+ self.state = 181
2410
+ self._errHandler.sync(self)
2411
+ _alt = self._interp.adaptivePredict(self._input,12,self._ctx)
2412
+
2413
+ except RecognitionException as re:
2414
+ localctx.exception = re
2415
+ self._errHandler.reportError(self, re)
2416
+ self._errHandler.recover(self, re)
2417
+ finally:
2418
+ self.unrollRecursionContexts(_parentctx)
2419
+ return localctx
2420
+
2421
+
2422
+ class PredicateContext(ParserRuleContext):
2423
+ __slots__ = 'parser'
2424
+
2425
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2426
+ super().__init__(parent, invokingState)
2427
+ self.parser = parser
2428
+
2429
+
2430
+ def getRuleIndex(self):
2431
+ return KodexaSelectorParser.RULE_predicate
2432
+
2433
+
2434
+ def copyFrom(self, ctx:ParserRuleContext):
2435
+ super().copyFrom(ctx)
2436
+
2437
+
2438
+
2439
+ class ExprPredicateContext(PredicateContext):
2440
+
2441
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.PredicateContext
2442
+ super().__init__(parser)
2443
+ self.copyFrom(ctx)
2444
+
2445
+ def LBRACKET(self):
2446
+ return self.getToken(KodexaSelectorParser.LBRACKET, 0)
2447
+ def expr(self):
2448
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,0)
2449
+
2450
+ def RBRACKET(self):
2451
+ return self.getToken(KodexaSelectorParser.RBRACKET, 0)
2452
+
2453
+ def enterRule(self, listener:ParseTreeListener):
2454
+ if hasattr( listener, "enterExprPredicate" ):
2455
+ listener.enterExprPredicate(self)
2456
+
2457
+ def exitRule(self, listener:ParseTreeListener):
2458
+ if hasattr( listener, "exitExprPredicate" ):
2459
+ listener.exitExprPredicate(self)
2460
+
2461
+ def accept(self, visitor:ParseTreeVisitor):
2462
+ if hasattr( visitor, "visitExprPredicate" ):
2463
+ return visitor.visitExprPredicate(self)
2464
+ else:
2465
+ return visitor.visitChildren(self)
2466
+
2467
+
2468
+
2469
+ def predicate(self):
2470
+
2471
+ localctx = KodexaSelectorParser.PredicateContext(self, self._ctx, self.state)
2472
+ self.enterRule(localctx, 24, self.RULE_predicate)
2473
+ try:
2474
+ localctx = KodexaSelectorParser.ExprPredicateContext(self, localctx)
2475
+ self.enterOuterAlt(localctx, 1)
2476
+ self.state = 182
2477
+ self.match(KodexaSelectorParser.LBRACKET)
2478
+ self.state = 183
2479
+ self.expr(0)
2480
+ self.state = 184
2481
+ self.match(KodexaSelectorParser.RBRACKET)
2482
+ except RecognitionException as re:
2483
+ localctx.exception = re
2484
+ self._errHandler.reportError(self, re)
2485
+ self._errHandler.recover(self, re)
2486
+ finally:
2487
+ self.exitRule()
2488
+ return localctx
2489
+
2490
+
2491
+ class VariableReferenceContext(ParserRuleContext):
2492
+ __slots__ = 'parser'
2493
+
2494
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2495
+ super().__init__(parent, invokingState)
2496
+ self.parser = parser
2497
+
2498
+ def DOLLAR(self):
2499
+ return self.getToken(KodexaSelectorParser.DOLLAR, 0)
2500
+
2501
+ def qName(self):
2502
+ return self.getTypedRuleContext(KodexaSelectorParser.QNameContext,0)
2503
+
2504
+
2505
+ def getRuleIndex(self):
2506
+ return KodexaSelectorParser.RULE_variableReference
2507
+
2508
+ def enterRule(self, listener:ParseTreeListener):
2509
+ if hasattr( listener, "enterVariableReference" ):
2510
+ listener.enterVariableReference(self)
2511
+
2512
+ def exitRule(self, listener:ParseTreeListener):
2513
+ if hasattr( listener, "exitVariableReference" ):
2514
+ listener.exitVariableReference(self)
2515
+
2516
+ def accept(self, visitor:ParseTreeVisitor):
2517
+ if hasattr( visitor, "visitVariableReference" ):
2518
+ return visitor.visitVariableReference(self)
2519
+ else:
2520
+ return visitor.visitChildren(self)
2521
+
2522
+
2523
+
2524
+
2525
+ def variableReference(self):
2526
+
2527
+ localctx = KodexaSelectorParser.VariableReferenceContext(self, self._ctx, self.state)
2528
+ self.enterRule(localctx, 26, self.RULE_variableReference)
2529
+ try:
2530
+ self.enterOuterAlt(localctx, 1)
2531
+ self.state = 186
2532
+ self.match(KodexaSelectorParser.DOLLAR)
2533
+ self.state = 187
2534
+ self.qName()
2535
+ except RecognitionException as re:
2536
+ localctx.exception = re
2537
+ self._errHandler.reportError(self, re)
2538
+ self._errHandler.recover(self, re)
2539
+ finally:
2540
+ self.exitRule()
2541
+ return localctx
2542
+
2543
+
2544
+ class NumberContext(ParserRuleContext):
2545
+ __slots__ = 'parser'
2546
+
2547
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2548
+ super().__init__(parent, invokingState)
2549
+ self.parser = parser
2550
+
2551
+ def FLOAT(self):
2552
+ return self.getToken(KodexaSelectorParser.FLOAT, 0)
2553
+
2554
+ def INTEGER(self):
2555
+ return self.getToken(KodexaSelectorParser.INTEGER, 0)
2556
+
2557
+ def getRuleIndex(self):
2558
+ return KodexaSelectorParser.RULE_number
2559
+
2560
+ def enterRule(self, listener:ParseTreeListener):
2561
+ if hasattr( listener, "enterNumber" ):
2562
+ listener.enterNumber(self)
2563
+
2564
+ def exitRule(self, listener:ParseTreeListener):
2565
+ if hasattr( listener, "exitNumber" ):
2566
+ listener.exitNumber(self)
2567
+
2568
+ def accept(self, visitor:ParseTreeVisitor):
2569
+ if hasattr( visitor, "visitNumber" ):
2570
+ return visitor.visitNumber(self)
2571
+ else:
2572
+ return visitor.visitChildren(self)
2573
+
2574
+
2575
+
2576
+
2577
+ def number(self):
2578
+
2579
+ localctx = KodexaSelectorParser.NumberContext(self, self._ctx, self.state)
2580
+ self.enterRule(localctx, 28, self.RULE_number)
2581
+ self._la = 0 # Token type
2582
+ try:
2583
+ self.enterOuterAlt(localctx, 1)
2584
+ self.state = 189
2585
+ _la = self._input.LA(1)
2586
+ if not(_la==28 or _la==29):
2587
+ self._errHandler.recoverInline(self)
2588
+ else:
2589
+ self._errHandler.reportMatch(self)
2590
+ self.consume()
2591
+ except RecognitionException as re:
2592
+ localctx.exception = re
2593
+ self._errHandler.reportError(self, re)
2594
+ self._errHandler.recover(self, re)
2595
+ finally:
2596
+ self.exitRule()
2597
+ return localctx
2598
+
2599
+
2600
+ class BooleanLiteralContext(ParserRuleContext):
2601
+ __slots__ = 'parser'
2602
+
2603
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2604
+ super().__init__(parent, invokingState)
2605
+ self.parser = parser
2606
+
2607
+ def TRUE(self):
2608
+ return self.getToken(KodexaSelectorParser.TRUE, 0)
2609
+
2610
+ def FALSE(self):
2611
+ return self.getToken(KodexaSelectorParser.FALSE, 0)
2612
+
2613
+ def getRuleIndex(self):
2614
+ return KodexaSelectorParser.RULE_booleanLiteral
2615
+
2616
+ def enterRule(self, listener:ParseTreeListener):
2617
+ if hasattr( listener, "enterBooleanLiteral" ):
2618
+ listener.enterBooleanLiteral(self)
2619
+
2620
+ def exitRule(self, listener:ParseTreeListener):
2621
+ if hasattr( listener, "exitBooleanLiteral" ):
2622
+ listener.exitBooleanLiteral(self)
2623
+
2624
+ def accept(self, visitor:ParseTreeVisitor):
2625
+ if hasattr( visitor, "visitBooleanLiteral" ):
2626
+ return visitor.visitBooleanLiteral(self)
2627
+ else:
2628
+ return visitor.visitChildren(self)
2629
+
2630
+
2631
+
2632
+
2633
+ def booleanLiteral(self):
2634
+
2635
+ localctx = KodexaSelectorParser.BooleanLiteralContext(self, self._ctx, self.state)
2636
+ self.enterRule(localctx, 30, self.RULE_booleanLiteral)
2637
+ self._la = 0 # Token type
2638
+ try:
2639
+ self.enterOuterAlt(localctx, 1)
2640
+ self.state = 191
2641
+ _la = self._input.LA(1)
2642
+ if not(_la==24 or _la==25):
2643
+ self._errHandler.recoverInline(self)
2644
+ else:
2645
+ self._errHandler.reportMatch(self)
2646
+ self.consume()
2647
+ except RecognitionException as re:
2648
+ localctx.exception = re
2649
+ self._errHandler.reportError(self, re)
2650
+ self._errHandler.recover(self, re)
2651
+ finally:
2652
+ self.exitRule()
2653
+ return localctx
2654
+
2655
+
2656
+ class FunctionCallContext(ParserRuleContext):
2657
+ __slots__ = 'parser'
2658
+
2659
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2660
+ super().__init__(parent, invokingState)
2661
+ self.parser = parser
2662
+
2663
+ def funcQName(self):
2664
+ return self.getTypedRuleContext(KodexaSelectorParser.FuncQNameContext,0)
2665
+
2666
+
2667
+ def formalArguments(self):
2668
+ return self.getTypedRuleContext(KodexaSelectorParser.FormalArgumentsContext,0)
2669
+
2670
+
2671
+ def builtInFunctionCall(self):
2672
+ return self.getTypedRuleContext(KodexaSelectorParser.BuiltInFunctionCallContext,0)
2673
+
2674
+
2675
+ def getRuleIndex(self):
2676
+ return KodexaSelectorParser.RULE_functionCall
2677
+
2678
+ def enterRule(self, listener:ParseTreeListener):
2679
+ if hasattr( listener, "enterFunctionCall" ):
2680
+ listener.enterFunctionCall(self)
2681
+
2682
+ def exitRule(self, listener:ParseTreeListener):
2683
+ if hasattr( listener, "exitFunctionCall" ):
2684
+ listener.exitFunctionCall(self)
2685
+
2686
+ def accept(self, visitor:ParseTreeVisitor):
2687
+ if hasattr( visitor, "visitFunctionCall" ):
2688
+ return visitor.visitFunctionCall(self)
2689
+ else:
2690
+ return visitor.visitChildren(self)
2691
+
2692
+
2693
+
2694
+
2695
+ def functionCall(self):
2696
+
2697
+ localctx = KodexaSelectorParser.FunctionCallContext(self, self._ctx, self.state)
2698
+ self.enterRule(localctx, 32, self.RULE_functionCall)
2699
+ try:
2700
+ self.state = 197
2701
+ self._errHandler.sync(self)
2702
+ token = self._input.LA(1)
2703
+ if token in [26]:
2704
+ self.enterOuterAlt(localctx, 1)
2705
+ self.state = 193
2706
+ self.funcQName()
2707
+ self.state = 194
2708
+ self.formalArguments()
2709
+ pass
2710
+ elif token in [24, 25]:
2711
+ self.enterOuterAlt(localctx, 2)
2712
+ self.state = 196
2713
+ self.builtInFunctionCall()
2714
+ pass
2715
+ else:
2716
+ raise NoViableAltException(self)
2717
+
2718
+ except RecognitionException as re:
2719
+ localctx.exception = re
2720
+ self._errHandler.reportError(self, re)
2721
+ self._errHandler.recover(self, re)
2722
+ finally:
2723
+ self.exitRule()
2724
+ return localctx
2725
+
2726
+
2727
+ class BuiltInFunctionCallContext(ParserRuleContext):
2728
+ __slots__ = 'parser'
2729
+
2730
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2731
+ super().__init__(parent, invokingState)
2732
+ self.parser = parser
2733
+
2734
+
2735
+ def getRuleIndex(self):
2736
+ return KodexaSelectorParser.RULE_builtInFunctionCall
2737
+
2738
+
2739
+ def copyFrom(self, ctx:ParserRuleContext):
2740
+ super().copyFrom(ctx)
2741
+
2742
+
2743
+
2744
+ class TrueFunctionContext(BuiltInFunctionCallContext):
2745
+
2746
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.BuiltInFunctionCallContext
2747
+ super().__init__(parser)
2748
+ self.copyFrom(ctx)
2749
+
2750
+ def TRUE(self):
2751
+ return self.getToken(KodexaSelectorParser.TRUE, 0)
2752
+ def formalArguments(self):
2753
+ return self.getTypedRuleContext(KodexaSelectorParser.FormalArgumentsContext,0)
2754
+
2755
+
2756
+ def enterRule(self, listener:ParseTreeListener):
2757
+ if hasattr( listener, "enterTrueFunction" ):
2758
+ listener.enterTrueFunction(self)
2759
+
2760
+ def exitRule(self, listener:ParseTreeListener):
2761
+ if hasattr( listener, "exitTrueFunction" ):
2762
+ listener.exitTrueFunction(self)
2763
+
2764
+ def accept(self, visitor:ParseTreeVisitor):
2765
+ if hasattr( visitor, "visitTrueFunction" ):
2766
+ return visitor.visitTrueFunction(self)
2767
+ else:
2768
+ return visitor.visitChildren(self)
2769
+
2770
+
2771
+ class FalseFunctionContext(BuiltInFunctionCallContext):
2772
+
2773
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.BuiltInFunctionCallContext
2774
+ super().__init__(parser)
2775
+ self.copyFrom(ctx)
2776
+
2777
+ def FALSE(self):
2778
+ return self.getToken(KodexaSelectorParser.FALSE, 0)
2779
+ def formalArguments(self):
2780
+ return self.getTypedRuleContext(KodexaSelectorParser.FormalArgumentsContext,0)
2781
+
2782
+
2783
+ def enterRule(self, listener:ParseTreeListener):
2784
+ if hasattr( listener, "enterFalseFunction" ):
2785
+ listener.enterFalseFunction(self)
2786
+
2787
+ def exitRule(self, listener:ParseTreeListener):
2788
+ if hasattr( listener, "exitFalseFunction" ):
2789
+ listener.exitFalseFunction(self)
2790
+
2791
+ def accept(self, visitor:ParseTreeVisitor):
2792
+ if hasattr( visitor, "visitFalseFunction" ):
2793
+ return visitor.visitFalseFunction(self)
2794
+ else:
2795
+ return visitor.visitChildren(self)
2796
+
2797
+
2798
+
2799
+ def builtInFunctionCall(self):
2800
+
2801
+ localctx = KodexaSelectorParser.BuiltInFunctionCallContext(self, self._ctx, self.state)
2802
+ self.enterRule(localctx, 34, self.RULE_builtInFunctionCall)
2803
+ try:
2804
+ self.state = 203
2805
+ self._errHandler.sync(self)
2806
+ token = self._input.LA(1)
2807
+ if token in [24]:
2808
+ localctx = KodexaSelectorParser.TrueFunctionContext(self, localctx)
2809
+ self.enterOuterAlt(localctx, 1)
2810
+ self.state = 199
2811
+ self.match(KodexaSelectorParser.TRUE)
2812
+ self.state = 200
2813
+ self.formalArguments()
2814
+ pass
2815
+ elif token in [25]:
2816
+ localctx = KodexaSelectorParser.FalseFunctionContext(self, localctx)
2817
+ self.enterOuterAlt(localctx, 2)
2818
+ self.state = 201
2819
+ self.match(KodexaSelectorParser.FALSE)
2820
+ self.state = 202
2821
+ self.formalArguments()
2822
+ pass
2823
+ else:
2824
+ raise NoViableAltException(self)
2825
+
2826
+ except RecognitionException as re:
2827
+ localctx.exception = re
2828
+ self._errHandler.reportError(self, re)
2829
+ self._errHandler.recover(self, re)
2830
+ finally:
2831
+ self.exitRule()
2832
+ return localctx
2833
+
2834
+
2835
+ class FuncQNameContext(ParserRuleContext):
2836
+ __slots__ = 'parser'
2837
+
2838
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2839
+ super().__init__(parent, invokingState)
2840
+ self.parser = parser
2841
+
2842
+ def FUNCTION_NAME(self):
2843
+ return self.getToken(KodexaSelectorParser.FUNCTION_NAME, 0)
2844
+
2845
+ def getRuleIndex(self):
2846
+ return KodexaSelectorParser.RULE_funcQName
2847
+
2848
+ def enterRule(self, listener:ParseTreeListener):
2849
+ if hasattr( listener, "enterFuncQName" ):
2850
+ listener.enterFuncQName(self)
2851
+
2852
+ def exitRule(self, listener:ParseTreeListener):
2853
+ if hasattr( listener, "exitFuncQName" ):
2854
+ listener.exitFuncQName(self)
2855
+
2856
+ def accept(self, visitor:ParseTreeVisitor):
2857
+ if hasattr( visitor, "visitFuncQName" ):
2858
+ return visitor.visitFuncQName(self)
2859
+ else:
2860
+ return visitor.visitChildren(self)
2861
+
2862
+
2863
+
2864
+
2865
+ def funcQName(self):
2866
+
2867
+ localctx = KodexaSelectorParser.FuncQNameContext(self, self._ctx, self.state)
2868
+ self.enterRule(localctx, 36, self.RULE_funcQName)
2869
+ try:
2870
+ self.enterOuterAlt(localctx, 1)
2871
+ self.state = 205
2872
+ self.match(KodexaSelectorParser.FUNCTION_NAME)
2873
+ except RecognitionException as re:
2874
+ localctx.exception = re
2875
+ self._errHandler.reportError(self, re)
2876
+ self._errHandler.recover(self, re)
2877
+ finally:
2878
+ self.exitRule()
2879
+ return localctx
2880
+
2881
+
2882
+ class FormalArgumentsContext(ParserRuleContext):
2883
+ __slots__ = 'parser'
2884
+
2885
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2886
+ super().__init__(parent, invokingState)
2887
+ self.parser = parser
2888
+
2889
+
2890
+ def getRuleIndex(self):
2891
+ return KodexaSelectorParser.RULE_formalArguments
2892
+
2893
+
2894
+ def copyFrom(self, ctx:ParserRuleContext):
2895
+ super().copyFrom(ctx)
2896
+
2897
+
2898
+
2899
+ class EmptyArgsContext(FormalArgumentsContext):
2900
+
2901
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FormalArgumentsContext
2902
+ super().__init__(parser)
2903
+ self.copyFrom(ctx)
2904
+
2905
+ def LPAREN(self):
2906
+ return self.getToken(KodexaSelectorParser.LPAREN, 0)
2907
+ def RPAREN(self):
2908
+ return self.getToken(KodexaSelectorParser.RPAREN, 0)
2909
+
2910
+ def enterRule(self, listener:ParseTreeListener):
2911
+ if hasattr( listener, "enterEmptyArgs" ):
2912
+ listener.enterEmptyArgs(self)
2913
+
2914
+ def exitRule(self, listener:ParseTreeListener):
2915
+ if hasattr( listener, "exitEmptyArgs" ):
2916
+ listener.exitEmptyArgs(self)
2917
+
2918
+ def accept(self, visitor:ParseTreeVisitor):
2919
+ if hasattr( visitor, "visitEmptyArgs" ):
2920
+ return visitor.visitEmptyArgs(self)
2921
+ else:
2922
+ return visitor.visitChildren(self)
2923
+
2924
+
2925
+ class ArgsListContext(FormalArgumentsContext):
2926
+
2927
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.FormalArgumentsContext
2928
+ super().__init__(parser)
2929
+ self.copyFrom(ctx)
2930
+
2931
+ def LPAREN(self):
2932
+ return self.getToken(KodexaSelectorParser.LPAREN, 0)
2933
+ def argumentList(self):
2934
+ return self.getTypedRuleContext(KodexaSelectorParser.ArgumentListContext,0)
2935
+
2936
+ def RPAREN(self):
2937
+ return self.getToken(KodexaSelectorParser.RPAREN, 0)
2938
+
2939
+ def enterRule(self, listener:ParseTreeListener):
2940
+ if hasattr( listener, "enterArgsList" ):
2941
+ listener.enterArgsList(self)
2942
+
2943
+ def exitRule(self, listener:ParseTreeListener):
2944
+ if hasattr( listener, "exitArgsList" ):
2945
+ listener.exitArgsList(self)
2946
+
2947
+ def accept(self, visitor:ParseTreeVisitor):
2948
+ if hasattr( visitor, "visitArgsList" ):
2949
+ return visitor.visitArgsList(self)
2950
+ else:
2951
+ return visitor.visitChildren(self)
2952
+
2953
+
2954
+
2955
+ def formalArguments(self):
2956
+
2957
+ localctx = KodexaSelectorParser.FormalArgumentsContext(self, self._ctx, self.state)
2958
+ self.enterRule(localctx, 38, self.RULE_formalArguments)
2959
+ try:
2960
+ self.state = 213
2961
+ self._errHandler.sync(self)
2962
+ la_ = self._interp.adaptivePredict(self._input,15,self._ctx)
2963
+ if la_ == 1:
2964
+ localctx = KodexaSelectorParser.EmptyArgsContext(self, localctx)
2965
+ self.enterOuterAlt(localctx, 1)
2966
+ self.state = 207
2967
+ self.match(KodexaSelectorParser.LPAREN)
2968
+ self.state = 208
2969
+ self.match(KodexaSelectorParser.RPAREN)
2970
+ pass
2971
+
2972
+ elif la_ == 2:
2973
+ localctx = KodexaSelectorParser.ArgsListContext(self, localctx)
2974
+ self.enterOuterAlt(localctx, 2)
2975
+ self.state = 209
2976
+ self.match(KodexaSelectorParser.LPAREN)
2977
+ self.state = 210
2978
+ self.argumentList(0)
2979
+ self.state = 211
2980
+ self.match(KodexaSelectorParser.RPAREN)
2981
+ pass
2982
+
2983
+
2984
+ except RecognitionException as re:
2985
+ localctx.exception = re
2986
+ self._errHandler.reportError(self, re)
2987
+ self._errHandler.recover(self, re)
2988
+ finally:
2989
+ self.exitRule()
2990
+ return localctx
2991
+
2992
+
2993
+ class ArgumentListContext(ParserRuleContext):
2994
+ __slots__ = 'parser'
2995
+
2996
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
2997
+ super().__init__(parent, invokingState)
2998
+ self.parser = parser
2999
+
3000
+
3001
+ def getRuleIndex(self):
3002
+ return KodexaSelectorParser.RULE_argumentList
3003
+
3004
+
3005
+ def copyFrom(self, ctx:ParserRuleContext):
3006
+ super().copyFrom(ctx)
3007
+
3008
+
3009
+ class SingleArgContext(ArgumentListContext):
3010
+
3011
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ArgumentListContext
3012
+ super().__init__(parser)
3013
+ self.copyFrom(ctx)
3014
+
3015
+ def expr(self):
3016
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,0)
3017
+
3018
+
3019
+ def enterRule(self, listener:ParseTreeListener):
3020
+ if hasattr( listener, "enterSingleArg" ):
3021
+ listener.enterSingleArg(self)
3022
+
3023
+ def exitRule(self, listener:ParseTreeListener):
3024
+ if hasattr( listener, "exitSingleArg" ):
3025
+ listener.exitSingleArg(self)
3026
+
3027
+ def accept(self, visitor:ParseTreeVisitor):
3028
+ if hasattr( visitor, "visitSingleArg" ):
3029
+ return visitor.visitSingleArg(self)
3030
+ else:
3031
+ return visitor.visitChildren(self)
3032
+
3033
+
3034
+ class MultipleArgsContext(ArgumentListContext):
3035
+
3036
+ def __init__(self, parser, ctx:ParserRuleContext): # actually a KodexaSelectorParser.ArgumentListContext
3037
+ super().__init__(parser)
3038
+ self.copyFrom(ctx)
3039
+
3040
+ def argumentList(self):
3041
+ return self.getTypedRuleContext(KodexaSelectorParser.ArgumentListContext,0)
3042
+
3043
+ def COMMA(self):
3044
+ return self.getToken(KodexaSelectorParser.COMMA, 0)
3045
+ def expr(self):
3046
+ return self.getTypedRuleContext(KodexaSelectorParser.ExprContext,0)
3047
+
3048
+
3049
+ def enterRule(self, listener:ParseTreeListener):
3050
+ if hasattr( listener, "enterMultipleArgs" ):
3051
+ listener.enterMultipleArgs(self)
3052
+
3053
+ def exitRule(self, listener:ParseTreeListener):
3054
+ if hasattr( listener, "exitMultipleArgs" ):
3055
+ listener.exitMultipleArgs(self)
3056
+
3057
+ def accept(self, visitor:ParseTreeVisitor):
3058
+ if hasattr( visitor, "visitMultipleArgs" ):
3059
+ return visitor.visitMultipleArgs(self)
3060
+ else:
3061
+ return visitor.visitChildren(self)
3062
+
3063
+
3064
+
3065
+ def argumentList(self, _p:int=0):
3066
+ _parentctx = self._ctx
3067
+ _parentState = self.state
3068
+ localctx = KodexaSelectorParser.ArgumentListContext(self, self._ctx, _parentState)
3069
+ _prevctx = localctx
3070
+ _startState = 40
3071
+ self.enterRecursionRule(localctx, 40, self.RULE_argumentList, _p)
3072
+ try:
3073
+ self.enterOuterAlt(localctx, 1)
3074
+ localctx = KodexaSelectorParser.SingleArgContext(self, localctx)
3075
+ self._ctx = localctx
3076
+ _prevctx = localctx
3077
+
3078
+ self.state = 216
3079
+ self.expr(0)
3080
+ self._ctx.stop = self._input.LT(-1)
3081
+ self.state = 223
3082
+ self._errHandler.sync(self)
3083
+ _alt = self._interp.adaptivePredict(self._input,16,self._ctx)
3084
+ while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
3085
+ if _alt==1:
3086
+ if self._parseListeners is not None:
3087
+ self.triggerExitRuleEvent()
3088
+ _prevctx = localctx
3089
+ localctx = KodexaSelectorParser.MultipleArgsContext(self, KodexaSelectorParser.ArgumentListContext(self, _parentctx, _parentState))
3090
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_argumentList)
3091
+ self.state = 218
3092
+ if not self.precpred(self._ctx, 1):
3093
+ from antlr4.error.Errors import FailedPredicateException
3094
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
3095
+ self.state = 219
3096
+ self.match(KodexaSelectorParser.COMMA)
3097
+ self.state = 220
3098
+ self.expr(0)
3099
+ self.state = 225
3100
+ self._errHandler.sync(self)
3101
+ _alt = self._interp.adaptivePredict(self._input,16,self._ctx)
3102
+
3103
+ except RecognitionException as re:
3104
+ localctx.exception = re
3105
+ self._errHandler.reportError(self, re)
3106
+ self._errHandler.recover(self, re)
3107
+ finally:
3108
+ self.unrollRecursionContexts(_parentctx)
3109
+ return localctx
3110
+
3111
+
3112
+ class PathSepContext(ParserRuleContext):
3113
+ __slots__ = 'parser'
3114
+
3115
+ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
3116
+ super().__init__(parent, invokingState)
3117
+ self.parser = parser
3118
+
3119
+ def PATH_SEP(self):
3120
+ return self.getToken(KodexaSelectorParser.PATH_SEP, 0)
3121
+
3122
+ def ABBREV_PATH_SEP(self):
3123
+ return self.getToken(KodexaSelectorParser.ABBREV_PATH_SEP, 0)
3124
+
3125
+ def getRuleIndex(self):
3126
+ return KodexaSelectorParser.RULE_pathSep
3127
+
3128
+ def enterRule(self, listener:ParseTreeListener):
3129
+ if hasattr( listener, "enterPathSep" ):
3130
+ listener.enterPathSep(self)
3131
+
3132
+ def exitRule(self, listener:ParseTreeListener):
3133
+ if hasattr( listener, "exitPathSep" ):
3134
+ listener.exitPathSep(self)
3135
+
3136
+ def accept(self, visitor:ParseTreeVisitor):
3137
+ if hasattr( visitor, "visitPathSep" ):
3138
+ return visitor.visitPathSep(self)
3139
+ else:
3140
+ return visitor.visitChildren(self)
3141
+
3142
+
3143
+
3144
+
3145
+ def pathSep(self):
3146
+
3147
+ localctx = KodexaSelectorParser.PathSepContext(self, self._ctx, self.state)
3148
+ self.enterRule(localctx, 42, self.RULE_pathSep)
3149
+ self._la = 0 # Token type
3150
+ try:
3151
+ self.enterOuterAlt(localctx, 1)
3152
+ self.state = 226
3153
+ _la = self._input.LA(1)
3154
+ if not(_la==5 or _la==6):
3155
+ self._errHandler.recoverInline(self)
3156
+ else:
3157
+ self._errHandler.reportMatch(self)
3158
+ self.consume()
3159
+ except RecognitionException as re:
3160
+ localctx.exception = re
3161
+ self._errHandler.reportError(self, re)
3162
+ self._errHandler.recover(self, re)
3163
+ finally:
3164
+ self.exitRule()
3165
+ return localctx
3166
+
3167
+
3168
+
3169
+ def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int):
3170
+ if self._predicates == None:
3171
+ self._predicates = dict()
3172
+ self._predicates[1] = self.expr_sempred
3173
+ self._predicates[4] = self.relativeLocationPath_sempred
3174
+ self._predicates[10] = self.filterExpr_sempred
3175
+ self._predicates[11] = self.predicateList_sempred
3176
+ self._predicates[20] = self.argumentList_sempred
3177
+ pred = self._predicates.get(ruleIndex, None)
3178
+ if pred is None:
3179
+ raise Exception("No predicate with index:" + str(ruleIndex))
3180
+ else:
3181
+ return pred(localctx, predIndex)
3182
+
3183
+ def expr_sempred(self, localctx:ExprContext, predIndex:int):
3184
+ if predIndex == 0:
3185
+ return self.precpred(self._ctx, 19)
3186
+
3187
+
3188
+ if predIndex == 1:
3189
+ return self.precpred(self._ctx, 18)
3190
+
3191
+
3192
+ if predIndex == 2:
3193
+ return self.precpred(self._ctx, 17)
3194
+
3195
+
3196
+ if predIndex == 3:
3197
+ return self.precpred(self._ctx, 16)
3198
+
3199
+
3200
+ if predIndex == 4:
3201
+ return self.precpred(self._ctx, 15)
3202
+
3203
+
3204
+ if predIndex == 5:
3205
+ return self.precpred(self._ctx, 14)
3206
+
3207
+
3208
+ if predIndex == 6:
3209
+ return self.precpred(self._ctx, 13)
3210
+
3211
+
3212
+ if predIndex == 7:
3213
+ return self.precpred(self._ctx, 12)
3214
+
3215
+
3216
+ if predIndex == 8:
3217
+ return self.precpred(self._ctx, 10)
3218
+
3219
+
3220
+ def relativeLocationPath_sempred(self, localctx:RelativeLocationPathContext, predIndex:int):
3221
+ if predIndex == 9:
3222
+ return self.precpred(self._ctx, 2)
3223
+
3224
+
3225
+ if predIndex == 10:
3226
+ return self.precpred(self._ctx, 1)
3227
+
3228
+
3229
+ def filterExpr_sempred(self, localctx:FilterExprContext, predIndex:int):
3230
+ if predIndex == 11:
3231
+ return self.precpred(self._ctx, 1)
3232
+
3233
+
3234
+ def predicateList_sempred(self, localctx:PredicateListContext, predIndex:int):
3235
+ if predIndex == 12:
3236
+ return self.precpred(self._ctx, 1)
3237
+
3238
+
3239
+ def argumentList_sempred(self, localctx:ArgumentListContext, predIndex:int):
3240
+ if predIndex == 13:
3241
+ return self.precpred(self._ctx, 1)
3242
+
3243
+
3244
+
3245
+
3246
+