omlish 0.0.0.dev252__py3-none-any.whl → 0.0.0.dev254__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.
- omlish/__about__.py +2 -2
- omlish/_antlr/__init__.py +0 -0
- omlish/lang/objects.py +23 -6
- omlish/sql/parsing/Minisql.g4 +289 -0
- omlish/sql/parsing/__init__.py +0 -0
- omlish/sql/parsing/_antlr/MinisqlLexer.py +321 -0
- omlish/sql/parsing/_antlr/MinisqlListener.py +510 -0
- omlish/sql/parsing/_antlr/MinisqlParser.py +3762 -0
- omlish/sql/parsing/_antlr/MinisqlVisitor.py +291 -0
- omlish/sql/parsing/_antlr/__init__.py +0 -0
- omlish/sql/parsing/parsing.py +119 -0
- omlish/subprocesses/wrap.py +5 -0
- omlish/text/decoding.py +73 -0
- omlish/text/filecache.py +235 -0
- omlish/text/linecache.py +80 -0
- {omlish-0.0.0.dev252.dist-info → omlish-0.0.0.dev254.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev252.dist-info → omlish-0.0.0.dev254.dist-info}/RECORD +21 -9
- {omlish-0.0.0.dev252.dist-info → omlish-0.0.0.dev254.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev252.dist-info → omlish-0.0.0.dev254.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev252.dist-info → omlish-0.0.0.dev254.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev252.dist-info → omlish-0.0.0.dev254.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,3762 @@
|
|
1
|
+
# type: ignore
|
2
|
+
# ruff: noqa
|
3
|
+
# flake8: noqa
|
4
|
+
# Generated from Minisql.g4 by ANTLR 4.13.2
|
5
|
+
# encoding: utf-8
|
6
|
+
from omlish.antlr._runtime._all import *
|
7
|
+
from io import StringIO
|
8
|
+
import sys
|
9
|
+
if sys.version_info[1] > 5:
|
10
|
+
from typing import TextIO
|
11
|
+
else:
|
12
|
+
from typing.io import TextIO
|
13
|
+
|
14
|
+
def serializedATN():
|
15
|
+
return [
|
16
|
+
4,1,67,419,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,
|
17
|
+
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,
|
18
|
+
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,
|
19
|
+
7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,
|
20
|
+
2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,
|
21
|
+
7,33,1,0,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,2,1,2,5,2,79,8,2,10,2,12,
|
22
|
+
2,82,9,2,3,2,84,8,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,5,4,
|
23
|
+
96,8,4,10,4,12,4,99,9,4,1,5,1,5,3,5,103,8,5,1,5,1,5,1,6,1,6,3,6,
|
24
|
+
109,8,6,1,6,1,6,1,6,5,6,114,8,6,10,6,12,6,117,9,6,1,6,1,6,1,6,1,
|
25
|
+
6,5,6,123,8,6,10,6,12,6,126,9,6,3,6,128,8,6,1,6,1,6,3,6,132,8,6,
|
26
|
+
1,6,1,6,1,6,3,6,137,8,6,1,6,1,6,3,6,141,8,6,1,6,1,6,1,6,1,6,1,6,
|
27
|
+
5,6,148,8,6,10,6,12,6,151,9,6,3,6,153,8,6,1,7,1,7,1,7,3,7,158,8,
|
28
|
+
7,1,7,3,7,161,8,7,3,7,163,8,7,1,8,1,8,1,9,1,9,1,9,3,9,170,8,9,1,
|
29
|
+
9,1,9,3,9,174,8,9,1,9,1,9,1,9,1,9,1,9,1,9,5,9,182,8,9,10,9,12,9,
|
30
|
+
185,9,9,1,10,1,10,1,10,1,10,1,10,3,10,192,8,10,1,10,1,10,3,10,196,
|
31
|
+
8,10,1,10,1,10,1,10,1,10,1,10,5,10,203,8,10,10,10,12,10,206,9,10,
|
32
|
+
1,10,1,10,1,10,3,10,211,8,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,
|
33
|
+
219,8,10,1,10,1,10,3,10,223,8,10,1,11,1,11,1,11,1,11,1,11,3,11,230,
|
34
|
+
8,11,1,11,1,11,1,11,1,11,5,11,236,8,11,10,11,12,11,239,9,11,1,12,
|
35
|
+
1,12,1,12,1,12,1,12,5,12,246,8,12,10,12,12,12,249,9,12,3,12,251,
|
36
|
+
8,12,1,12,1,12,3,12,255,8,12,1,12,1,12,1,12,1,12,1,12,3,12,262,8,
|
37
|
+
12,1,12,1,12,5,12,266,8,12,10,12,12,12,269,9,12,1,12,1,12,3,12,273,
|
38
|
+
8,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,285,
|
39
|
+
8,12,1,13,1,13,1,13,1,13,1,13,1,13,3,13,293,8,13,1,14,1,14,1,14,
|
40
|
+
1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5,15,307,8,15,10,15,
|
41
|
+
12,15,310,9,15,3,15,312,8,15,1,15,1,15,1,16,1,16,3,16,318,8,16,1,
|
42
|
+
17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,330,8,17,1,
|
43
|
+
17,1,17,3,17,334,8,17,1,17,1,17,1,17,3,17,339,8,17,1,17,1,17,1,17,
|
44
|
+
1,17,3,17,345,8,17,5,17,347,8,17,10,17,12,17,350,9,17,1,18,1,18,
|
45
|
+
1,18,5,18,355,8,18,10,18,12,18,358,9,18,1,19,1,19,1,19,5,19,363,
|
46
|
+
8,19,10,19,12,19,366,9,19,1,20,1,20,1,20,5,20,371,8,20,10,20,12,
|
47
|
+
20,374,9,20,1,21,1,21,3,21,378,8,21,1,22,1,22,1,23,1,23,1,23,3,23,
|
48
|
+
385,8,23,1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29,
|
49
|
+
1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,409,
|
50
|
+
8,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,33,0,3,18,22,34,34,
|
51
|
+
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,
|
52
|
+
46,48,50,52,54,56,58,60,62,64,66,0,7,2,0,21,21,46,46,2,0,23,23,27,
|
53
|
+
27,2,0,20,20,28,28,1,0,8,14,2,0,5,5,15,19,1,0,15,16,3,0,40,40,50,
|
54
|
+
50,62,62,455,0,68,1,0,0,0,2,72,1,0,0,0,4,83,1,0,0,0,6,87,1,0,0,0,
|
55
|
+
8,93,1,0,0,0,10,100,1,0,0,0,12,106,1,0,0,0,14,162,1,0,0,0,16,164,
|
56
|
+
1,0,0,0,18,173,1,0,0,0,20,222,1,0,0,0,22,229,1,0,0,0,24,284,1,0,
|
57
|
+
0,0,26,292,1,0,0,0,28,294,1,0,0,0,30,299,1,0,0,0,32,315,1,0,0,0,
|
58
|
+
34,329,1,0,0,0,36,351,1,0,0,0,38,359,1,0,0,0,40,367,1,0,0,0,42,377,
|
59
|
+
1,0,0,0,44,379,1,0,0,0,46,384,1,0,0,0,48,386,1,0,0,0,50,388,1,0,
|
60
|
+
0,0,52,390,1,0,0,0,54,392,1,0,0,0,56,394,1,0,0,0,58,408,1,0,0,0,
|
61
|
+
60,410,1,0,0,0,62,412,1,0,0,0,64,414,1,0,0,0,66,416,1,0,0,0,68,69,
|
62
|
+
3,2,1,0,69,70,5,1,0,0,70,71,5,0,0,1,71,1,1,0,0,0,72,73,3,4,2,0,73,
|
63
|
+
3,1,0,0,0,74,75,5,57,0,0,75,80,3,6,3,0,76,77,5,2,0,0,77,79,3,6,3,
|
64
|
+
0,78,76,1,0,0,0,79,82,1,0,0,0,80,78,1,0,0,0,80,81,1,0,0,0,81,84,
|
65
|
+
1,0,0,0,82,80,1,0,0,0,83,74,1,0,0,0,83,84,1,0,0,0,84,85,1,0,0,0,
|
66
|
+
85,86,3,8,4,0,86,5,1,0,0,0,87,88,3,42,21,0,88,89,5,22,0,0,89,90,
|
67
|
+
5,3,0,0,90,91,3,2,1,0,91,92,5,4,0,0,92,7,1,0,0,0,93,97,3,12,6,0,
|
68
|
+
94,96,3,10,5,0,95,94,1,0,0,0,96,99,1,0,0,0,97,95,1,0,0,0,97,98,1,
|
69
|
+
0,0,0,98,9,1,0,0,0,99,97,1,0,0,0,100,102,5,54,0,0,101,103,3,56,28,
|
70
|
+
0,102,101,1,0,0,0,102,103,1,0,0,0,103,104,1,0,0,0,104,105,3,12,6,
|
71
|
+
0,105,11,1,0,0,0,106,108,5,51,0,0,107,109,3,56,28,0,108,107,1,0,
|
72
|
+
0,0,108,109,1,0,0,0,109,110,1,0,0,0,110,115,3,14,7,0,111,112,5,2,
|
73
|
+
0,0,112,114,3,14,7,0,113,111,1,0,0,0,114,117,1,0,0,0,115,113,1,0,
|
74
|
+
0,0,115,116,1,0,0,0,116,127,1,0,0,0,117,115,1,0,0,0,118,119,5,32,
|
75
|
+
0,0,119,124,3,34,17,0,120,121,5,2,0,0,121,123,3,34,17,0,122,120,
|
76
|
+
1,0,0,0,123,126,1,0,0,0,124,122,1,0,0,0,124,125,1,0,0,0,125,128,
|
77
|
+
1,0,0,0,126,124,1,0,0,0,127,118,1,0,0,0,127,128,1,0,0,0,128,131,
|
78
|
+
1,0,0,0,129,130,5,56,0,0,130,132,3,18,9,0,131,129,1,0,0,0,131,132,
|
79
|
+
1,0,0,0,132,136,1,0,0,0,133,134,5,34,0,0,134,135,5,24,0,0,135,137,
|
80
|
+
3,36,18,0,136,133,1,0,0,0,136,137,1,0,0,0,137,140,1,0,0,0,138,139,
|
81
|
+
5,35,0,0,139,141,3,18,9,0,140,138,1,0,0,0,140,141,1,0,0,0,141,152,
|
82
|
+
1,0,0,0,142,143,5,47,0,0,143,144,5,24,0,0,144,149,3,32,16,0,145,
|
83
|
+
146,5,2,0,0,146,148,3,32,16,0,147,145,1,0,0,0,148,151,1,0,0,0,149,
|
84
|
+
147,1,0,0,0,149,150,1,0,0,0,150,153,1,0,0,0,151,149,1,0,0,0,152,
|
85
|
+
142,1,0,0,0,152,153,1,0,0,0,153,13,1,0,0,0,154,163,5,5,0,0,155,160,
|
86
|
+
3,16,8,0,156,158,5,22,0,0,157,156,1,0,0,0,157,158,1,0,0,0,158,159,
|
87
|
+
1,0,0,0,159,161,3,42,21,0,160,157,1,0,0,0,160,161,1,0,0,0,161,163,
|
88
|
+
1,0,0,0,162,154,1,0,0,0,162,155,1,0,0,0,163,15,1,0,0,0,164,165,3,
|
89
|
+
18,9,0,165,17,1,0,0,0,166,167,6,9,-1,0,167,169,3,22,11,0,168,170,
|
90
|
+
3,20,10,0,169,168,1,0,0,0,169,170,1,0,0,0,170,174,1,0,0,0,171,172,
|
91
|
+
5,43,0,0,172,174,3,18,9,3,173,166,1,0,0,0,173,171,1,0,0,0,174,183,
|
92
|
+
1,0,0,0,175,176,10,2,0,0,176,177,7,0,0,0,177,182,3,18,9,3,178,179,
|
93
|
+
10,1,0,0,179,180,5,6,0,0,180,182,3,42,21,0,181,175,1,0,0,0,181,178,
|
94
|
+
1,0,0,0,182,185,1,0,0,0,183,181,1,0,0,0,183,184,1,0,0,0,184,19,1,
|
95
|
+
0,0,0,185,183,1,0,0,0,186,187,3,60,30,0,187,188,3,22,11,0,188,223,
|
96
|
+
1,0,0,0,189,191,5,38,0,0,190,192,5,43,0,0,191,190,1,0,0,0,191,192,
|
97
|
+
1,0,0,0,192,193,1,0,0,0,193,223,5,44,0,0,194,196,5,43,0,0,195,194,
|
98
|
+
1,0,0,0,195,196,1,0,0,0,196,197,1,0,0,0,197,198,5,36,0,0,198,199,
|
99
|
+
5,3,0,0,199,204,3,16,8,0,200,201,5,2,0,0,201,203,3,16,8,0,202,200,
|
100
|
+
1,0,0,0,203,206,1,0,0,0,204,202,1,0,0,0,204,205,1,0,0,0,205,207,
|
101
|
+
1,0,0,0,206,204,1,0,0,0,207,208,5,4,0,0,208,223,1,0,0,0,209,211,
|
102
|
+
5,43,0,0,210,209,1,0,0,0,210,211,1,0,0,0,211,212,1,0,0,0,212,213,
|
103
|
+
5,36,0,0,213,214,5,3,0,0,214,215,3,2,1,0,215,216,5,4,0,0,216,223,
|
104
|
+
1,0,0,0,217,219,5,43,0,0,218,217,1,0,0,0,218,219,1,0,0,0,219,220,
|
105
|
+
1,0,0,0,220,221,5,41,0,0,221,223,3,16,8,0,222,186,1,0,0,0,222,189,
|
106
|
+
1,0,0,0,222,195,1,0,0,0,222,210,1,0,0,0,222,218,1,0,0,0,223,21,1,
|
107
|
+
0,0,0,224,225,6,11,-1,0,225,230,3,24,12,0,226,227,3,64,32,0,227,
|
108
|
+
228,3,22,11,2,228,230,1,0,0,0,229,224,1,0,0,0,229,226,1,0,0,0,230,
|
109
|
+
237,1,0,0,0,231,232,10,1,0,0,232,233,3,62,31,0,233,234,3,22,11,2,
|
110
|
+
234,236,1,0,0,0,235,231,1,0,0,0,236,239,1,0,0,0,237,235,1,0,0,0,
|
111
|
+
237,238,1,0,0,0,238,23,1,0,0,0,239,237,1,0,0,0,240,241,3,38,19,0,
|
112
|
+
241,250,5,3,0,0,242,247,3,16,8,0,243,244,5,2,0,0,244,246,3,16,8,
|
113
|
+
0,245,243,1,0,0,0,246,249,1,0,0,0,247,245,1,0,0,0,247,248,1,0,0,
|
114
|
+
0,248,251,1,0,0,0,249,247,1,0,0,0,250,242,1,0,0,0,250,251,1,0,0,
|
115
|
+
0,251,252,1,0,0,0,252,254,5,4,0,0,253,255,3,30,15,0,254,253,1,0,
|
116
|
+
0,0,254,255,1,0,0,0,255,285,1,0,0,0,256,257,3,38,19,0,257,258,5,
|
117
|
+
3,0,0,258,259,5,5,0,0,259,261,5,4,0,0,260,262,3,30,15,0,261,260,
|
118
|
+
1,0,0,0,261,262,1,0,0,0,262,285,1,0,0,0,263,267,5,25,0,0,264,266,
|
119
|
+
3,28,14,0,265,264,1,0,0,0,266,269,1,0,0,0,267,265,1,0,0,0,267,268,
|
120
|
+
1,0,0,0,268,272,1,0,0,0,269,267,1,0,0,0,270,271,5,29,0,0,271,273,
|
121
|
+
3,16,8,0,272,270,1,0,0,0,272,273,1,0,0,0,273,274,1,0,0,0,274,285,
|
122
|
+
5,30,0,0,275,276,5,3,0,0,276,277,3,2,1,0,277,278,5,4,0,0,278,285,
|
123
|
+
1,0,0,0,279,280,5,3,0,0,280,281,3,16,8,0,281,282,5,4,0,0,282,285,
|
124
|
+
1,0,0,0,283,285,3,26,13,0,284,240,1,0,0,0,284,256,1,0,0,0,284,263,
|
125
|
+
1,0,0,0,284,275,1,0,0,0,284,279,1,0,0,0,284,283,1,0,0,0,285,25,1,
|
126
|
+
0,0,0,286,293,3,38,19,0,287,293,3,46,23,0,288,293,3,48,24,0,289,
|
127
|
+
293,3,50,25,0,290,293,3,52,26,0,291,293,3,54,27,0,292,286,1,0,0,
|
128
|
+
0,292,287,1,0,0,0,292,288,1,0,0,0,292,289,1,0,0,0,292,290,1,0,0,
|
129
|
+
0,292,291,1,0,0,0,293,27,1,0,0,0,294,295,5,55,0,0,295,296,3,16,8,
|
130
|
+
0,296,297,5,52,0,0,297,298,3,16,8,0,298,29,1,0,0,0,299,300,5,49,
|
131
|
+
0,0,300,311,5,3,0,0,301,302,5,47,0,0,302,303,5,24,0,0,303,308,3,
|
132
|
+
32,16,0,304,305,5,2,0,0,305,307,3,32,16,0,306,304,1,0,0,0,307,310,
|
133
|
+
1,0,0,0,308,306,1,0,0,0,308,309,1,0,0,0,309,312,1,0,0,0,310,308,
|
134
|
+
1,0,0,0,311,301,1,0,0,0,311,312,1,0,0,0,312,313,1,0,0,0,313,314,
|
135
|
+
5,4,0,0,314,31,1,0,0,0,315,317,3,16,8,0,316,318,7,1,0,0,317,316,
|
136
|
+
1,0,0,0,317,318,1,0,0,0,318,33,1,0,0,0,319,320,6,17,-1,0,320,321,
|
137
|
+
5,3,0,0,321,322,3,2,1,0,322,323,5,4,0,0,323,330,1,0,0,0,324,325,
|
138
|
+
5,3,0,0,325,326,3,34,17,0,326,327,5,4,0,0,327,330,1,0,0,0,328,330,
|
139
|
+
3,38,19,0,329,319,1,0,0,0,329,324,1,0,0,0,329,328,1,0,0,0,330,348,
|
140
|
+
1,0,0,0,331,333,10,5,0,0,332,334,5,22,0,0,333,332,1,0,0,0,333,334,
|
141
|
+
1,0,0,0,334,335,1,0,0,0,335,347,3,42,21,0,336,338,10,4,0,0,337,339,
|
142
|
+
3,58,29,0,338,337,1,0,0,0,338,339,1,0,0,0,339,340,1,0,0,0,340,341,
|
143
|
+
5,39,0,0,341,344,3,34,17,0,342,343,5,45,0,0,343,345,3,18,9,0,344,
|
144
|
+
342,1,0,0,0,344,345,1,0,0,0,345,347,1,0,0,0,346,331,1,0,0,0,346,
|
145
|
+
336,1,0,0,0,347,350,1,0,0,0,348,346,1,0,0,0,348,349,1,0,0,0,349,
|
146
|
+
35,1,0,0,0,350,348,1,0,0,0,351,356,3,16,8,0,352,353,5,2,0,0,353,
|
147
|
+
355,3,16,8,0,354,352,1,0,0,0,355,358,1,0,0,0,356,354,1,0,0,0,356,
|
148
|
+
357,1,0,0,0,357,37,1,0,0,0,358,356,1,0,0,0,359,364,3,42,21,0,360,
|
149
|
+
361,5,7,0,0,361,363,3,42,21,0,362,360,1,0,0,0,363,366,1,0,0,0,364,
|
150
|
+
362,1,0,0,0,364,365,1,0,0,0,365,39,1,0,0,0,366,364,1,0,0,0,367,372,
|
151
|
+
3,42,21,0,368,369,5,2,0,0,369,371,3,42,21,0,370,368,1,0,0,0,371,
|
152
|
+
374,1,0,0,0,372,370,1,0,0,0,372,373,1,0,0,0,373,41,1,0,0,0,374,372,
|
153
|
+
1,0,0,0,375,378,3,66,33,0,376,378,3,44,22,0,377,375,1,0,0,0,377,
|
154
|
+
376,1,0,0,0,378,43,1,0,0,0,379,380,5,63,0,0,380,45,1,0,0,0,381,385,
|
155
|
+
5,59,0,0,382,385,5,60,0,0,383,385,5,61,0,0,384,381,1,0,0,0,384,382,
|
156
|
+
1,0,0,0,384,383,1,0,0,0,385,47,1,0,0,0,386,387,5,58,0,0,387,49,1,
|
157
|
+
0,0,0,388,389,5,44,0,0,389,51,1,0,0,0,390,391,5,53,0,0,391,53,1,
|
158
|
+
0,0,0,392,393,5,31,0,0,393,55,1,0,0,0,394,395,7,2,0,0,395,57,1,0,
|
159
|
+
0,0,396,409,5,37,0,0,397,409,5,40,0,0,398,399,5,40,0,0,399,409,5,
|
160
|
+
48,0,0,400,409,5,50,0,0,401,402,5,50,0,0,402,409,5,48,0,0,403,409,
|
161
|
+
5,33,0,0,404,405,5,33,0,0,405,409,5,48,0,0,406,409,5,26,0,0,407,
|
162
|
+
409,5,42,0,0,408,396,1,0,0,0,408,397,1,0,0,0,408,398,1,0,0,0,408,
|
163
|
+
400,1,0,0,0,408,401,1,0,0,0,408,403,1,0,0,0,408,404,1,0,0,0,408,
|
164
|
+
406,1,0,0,0,408,407,1,0,0,0,409,59,1,0,0,0,410,411,7,3,0,0,411,61,
|
165
|
+
1,0,0,0,412,413,7,4,0,0,413,63,1,0,0,0,414,415,7,5,0,0,415,65,1,
|
166
|
+
0,0,0,416,417,7,6,0,0,417,67,1,0,0,0,51,80,83,97,102,108,115,124,
|
167
|
+
127,131,136,140,149,152,157,160,162,169,173,181,183,191,195,204,
|
168
|
+
210,218,222,229,237,247,250,254,261,267,272,284,292,308,311,317,
|
169
|
+
329,333,338,344,346,348,356,364,372,377,384,408
|
170
|
+
]
|
171
|
+
|
172
|
+
class MinisqlParser ( Parser ):
|
173
|
+
|
174
|
+
grammarFileName = "Minisql.g4"
|
175
|
+
|
176
|
+
atn = ATNDeserializer().deserialize(serializedATN())
|
177
|
+
|
178
|
+
decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
|
179
|
+
|
180
|
+
sharedContextCache = PredictionContextCache()
|
181
|
+
|
182
|
+
literalNames = [ "<INVALID>", "';'", "','", "'('", "')'", "'*'", "'::'",
|
183
|
+
"'.'", "'='", "'!='", "'<>'", "'<'", "'<='", "'>'",
|
184
|
+
"'>='", "'+'", "'-'", "'/'", "'%'", "'||'", "'all'",
|
185
|
+
"'and'", "'as'", "'asc'", "'by'", "'case'", "'cross'",
|
186
|
+
"'desc'", "'distinct'", "'else'", "'end'", "'false'",
|
187
|
+
"'from'", "'full'", "'group'", "'having'", "'in'",
|
188
|
+
"'inner'", "'is'", "'join'", "'left'", "'like'", "'natural'",
|
189
|
+
"'not'", "'null'", "'on'", "'or'", "'order'", "'outer'",
|
190
|
+
"'over'", "'right'", "'select'", "'then'", "'true'",
|
191
|
+
"'union'", "'when'", "'where'", "'with'" ]
|
192
|
+
|
193
|
+
symbolicNames = [ "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
|
194
|
+
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
|
195
|
+
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
|
196
|
+
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
|
197
|
+
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
|
198
|
+
"ALL", "AND", "AS", "ASC", "BY", "CASE", "CROSS",
|
199
|
+
"DESC", "DISTINCT", "ELSE", "END", "FALSE", "FROM",
|
200
|
+
"FULL", "GROUP", "HAVING", "IN", "INNER", "IS", "JOIN",
|
201
|
+
"LEFT", "LIKE", "NATURAL", "NOT", "NULL", "ON", "OR",
|
202
|
+
"ORDER", "OUTER", "OVER", "RIGHT", "SELECT", "THEN",
|
203
|
+
"TRUE", "UNION", "WHEN", "WHERE", "WITH", "STRING",
|
204
|
+
"INTEGER_VALUE", "DECIMAL_VALUE", "FLOAT_VALUE", "IDENT",
|
205
|
+
"QUOTED_IDENT", "COMMENT", "BLOCK_COMMENT", "WS",
|
206
|
+
"DELIMITER" ]
|
207
|
+
|
208
|
+
RULE_singleStmt = 0
|
209
|
+
RULE_select = 1
|
210
|
+
RULE_cteSelect = 2
|
211
|
+
RULE_cte = 3
|
212
|
+
RULE_unionSelect = 4
|
213
|
+
RULE_unionItem = 5
|
214
|
+
RULE_primarySelect = 6
|
215
|
+
RULE_selectItem = 7
|
216
|
+
RULE_expr = 8
|
217
|
+
RULE_booleanExpr = 9
|
218
|
+
RULE_predicate = 10
|
219
|
+
RULE_valueExpr = 11
|
220
|
+
RULE_primaryExpr = 12
|
221
|
+
RULE_simpleExpr = 13
|
222
|
+
RULE_caseItem = 14
|
223
|
+
RULE_over = 15
|
224
|
+
RULE_sortItem = 16
|
225
|
+
RULE_relation = 17
|
226
|
+
RULE_groupBy = 18
|
227
|
+
RULE_qualifiedName = 19
|
228
|
+
RULE_identList = 20
|
229
|
+
RULE_ident = 21
|
230
|
+
RULE_quotedIdent = 22
|
231
|
+
RULE_number = 23
|
232
|
+
RULE_string = 24
|
233
|
+
RULE_null = 25
|
234
|
+
RULE_true = 26
|
235
|
+
RULE_false = 27
|
236
|
+
RULE_setQuantifier = 28
|
237
|
+
RULE_joinType = 29
|
238
|
+
RULE_cmpOp = 30
|
239
|
+
RULE_arithOp = 31
|
240
|
+
RULE_unaryOp = 32
|
241
|
+
RULE_unquotedIdent = 33
|
242
|
+
|
243
|
+
ruleNames = [ "singleStmt", "select", "cteSelect", "cte", "unionSelect",
|
244
|
+
"unionItem", "primarySelect", "selectItem", "expr", "booleanExpr",
|
245
|
+
"predicate", "valueExpr", "primaryExpr", "simpleExpr",
|
246
|
+
"caseItem", "over", "sortItem", "relation", "groupBy",
|
247
|
+
"qualifiedName", "identList", "ident", "quotedIdent",
|
248
|
+
"number", "string", "null", "true", "false", "setQuantifier",
|
249
|
+
"joinType", "cmpOp", "arithOp", "unaryOp", "unquotedIdent" ]
|
250
|
+
|
251
|
+
EOF = Token.EOF
|
252
|
+
T__0=1
|
253
|
+
T__1=2
|
254
|
+
T__2=3
|
255
|
+
T__3=4
|
256
|
+
T__4=5
|
257
|
+
T__5=6
|
258
|
+
T__6=7
|
259
|
+
T__7=8
|
260
|
+
T__8=9
|
261
|
+
T__9=10
|
262
|
+
T__10=11
|
263
|
+
T__11=12
|
264
|
+
T__12=13
|
265
|
+
T__13=14
|
266
|
+
T__14=15
|
267
|
+
T__15=16
|
268
|
+
T__16=17
|
269
|
+
T__17=18
|
270
|
+
T__18=19
|
271
|
+
ALL=20
|
272
|
+
AND=21
|
273
|
+
AS=22
|
274
|
+
ASC=23
|
275
|
+
BY=24
|
276
|
+
CASE=25
|
277
|
+
CROSS=26
|
278
|
+
DESC=27
|
279
|
+
DISTINCT=28
|
280
|
+
ELSE=29
|
281
|
+
END=30
|
282
|
+
FALSE=31
|
283
|
+
FROM=32
|
284
|
+
FULL=33
|
285
|
+
GROUP=34
|
286
|
+
HAVING=35
|
287
|
+
IN=36
|
288
|
+
INNER=37
|
289
|
+
IS=38
|
290
|
+
JOIN=39
|
291
|
+
LEFT=40
|
292
|
+
LIKE=41
|
293
|
+
NATURAL=42
|
294
|
+
NOT=43
|
295
|
+
NULL=44
|
296
|
+
ON=45
|
297
|
+
OR=46
|
298
|
+
ORDER=47
|
299
|
+
OUTER=48
|
300
|
+
OVER=49
|
301
|
+
RIGHT=50
|
302
|
+
SELECT=51
|
303
|
+
THEN=52
|
304
|
+
TRUE=53
|
305
|
+
UNION=54
|
306
|
+
WHEN=55
|
307
|
+
WHERE=56
|
308
|
+
WITH=57
|
309
|
+
STRING=58
|
310
|
+
INTEGER_VALUE=59
|
311
|
+
DECIMAL_VALUE=60
|
312
|
+
FLOAT_VALUE=61
|
313
|
+
IDENT=62
|
314
|
+
QUOTED_IDENT=63
|
315
|
+
COMMENT=64
|
316
|
+
BLOCK_COMMENT=65
|
317
|
+
WS=66
|
318
|
+
DELIMITER=67
|
319
|
+
|
320
|
+
def __init__(self, input:TokenStream, output:TextIO = sys.stdout):
|
321
|
+
super().__init__(input, output)
|
322
|
+
self.checkVersion("4.13.2")
|
323
|
+
self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
|
324
|
+
self._predicates = None
|
325
|
+
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
class SingleStmtContext(ParserRuleContext):
|
330
|
+
__slots__ = 'parser'
|
331
|
+
|
332
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
333
|
+
super().__init__(parent, invokingState)
|
334
|
+
self.parser = parser
|
335
|
+
|
336
|
+
def select(self):
|
337
|
+
return self.getTypedRuleContext(MinisqlParser.SelectContext,0)
|
338
|
+
|
339
|
+
|
340
|
+
def EOF(self):
|
341
|
+
return self.getToken(MinisqlParser.EOF, 0)
|
342
|
+
|
343
|
+
def getRuleIndex(self):
|
344
|
+
return MinisqlParser.RULE_singleStmt
|
345
|
+
|
346
|
+
def enterRule(self, listener:ParseTreeListener):
|
347
|
+
if hasattr( listener, "enterSingleStmt" ):
|
348
|
+
listener.enterSingleStmt(self)
|
349
|
+
|
350
|
+
def exitRule(self, listener:ParseTreeListener):
|
351
|
+
if hasattr( listener, "exitSingleStmt" ):
|
352
|
+
listener.exitSingleStmt(self)
|
353
|
+
|
354
|
+
def accept(self, visitor:ParseTreeVisitor):
|
355
|
+
if hasattr( visitor, "visitSingleStmt" ):
|
356
|
+
return visitor.visitSingleStmt(self)
|
357
|
+
else:
|
358
|
+
return visitor.visitChildren(self)
|
359
|
+
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
def singleStmt(self):
|
364
|
+
|
365
|
+
localctx = MinisqlParser.SingleStmtContext(self, self._ctx, self.state)
|
366
|
+
self.enterRule(localctx, 0, self.RULE_singleStmt)
|
367
|
+
try:
|
368
|
+
self.enterOuterAlt(localctx, 1)
|
369
|
+
self.state = 68
|
370
|
+
self.select()
|
371
|
+
self.state = 69
|
372
|
+
self.match(MinisqlParser.T__0)
|
373
|
+
self.state = 70
|
374
|
+
self.match(MinisqlParser.EOF)
|
375
|
+
except RecognitionException as re:
|
376
|
+
localctx.exception = re
|
377
|
+
self._errHandler.reportError(self, re)
|
378
|
+
self._errHandler.recover(self, re)
|
379
|
+
finally:
|
380
|
+
self.exitRule()
|
381
|
+
return localctx
|
382
|
+
|
383
|
+
|
384
|
+
class SelectContext(ParserRuleContext):
|
385
|
+
__slots__ = 'parser'
|
386
|
+
|
387
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
388
|
+
super().__init__(parent, invokingState)
|
389
|
+
self.parser = parser
|
390
|
+
|
391
|
+
def cteSelect(self):
|
392
|
+
return self.getTypedRuleContext(MinisqlParser.CteSelectContext,0)
|
393
|
+
|
394
|
+
|
395
|
+
def getRuleIndex(self):
|
396
|
+
return MinisqlParser.RULE_select
|
397
|
+
|
398
|
+
def enterRule(self, listener:ParseTreeListener):
|
399
|
+
if hasattr( listener, "enterSelect" ):
|
400
|
+
listener.enterSelect(self)
|
401
|
+
|
402
|
+
def exitRule(self, listener:ParseTreeListener):
|
403
|
+
if hasattr( listener, "exitSelect" ):
|
404
|
+
listener.exitSelect(self)
|
405
|
+
|
406
|
+
def accept(self, visitor:ParseTreeVisitor):
|
407
|
+
if hasattr( visitor, "visitSelect" ):
|
408
|
+
return visitor.visitSelect(self)
|
409
|
+
else:
|
410
|
+
return visitor.visitChildren(self)
|
411
|
+
|
412
|
+
|
413
|
+
|
414
|
+
|
415
|
+
def select(self):
|
416
|
+
|
417
|
+
localctx = MinisqlParser.SelectContext(self, self._ctx, self.state)
|
418
|
+
self.enterRule(localctx, 2, self.RULE_select)
|
419
|
+
try:
|
420
|
+
self.enterOuterAlt(localctx, 1)
|
421
|
+
self.state = 72
|
422
|
+
self.cteSelect()
|
423
|
+
except RecognitionException as re:
|
424
|
+
localctx.exception = re
|
425
|
+
self._errHandler.reportError(self, re)
|
426
|
+
self._errHandler.recover(self, re)
|
427
|
+
finally:
|
428
|
+
self.exitRule()
|
429
|
+
return localctx
|
430
|
+
|
431
|
+
|
432
|
+
class CteSelectContext(ParserRuleContext):
|
433
|
+
__slots__ = 'parser'
|
434
|
+
|
435
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
436
|
+
super().__init__(parent, invokingState)
|
437
|
+
self.parser = parser
|
438
|
+
|
439
|
+
def unionSelect(self):
|
440
|
+
return self.getTypedRuleContext(MinisqlParser.UnionSelectContext,0)
|
441
|
+
|
442
|
+
|
443
|
+
def WITH(self):
|
444
|
+
return self.getToken(MinisqlParser.WITH, 0)
|
445
|
+
|
446
|
+
def cte(self, i:int=None):
|
447
|
+
if i is None:
|
448
|
+
return self.getTypedRuleContexts(MinisqlParser.CteContext)
|
449
|
+
else:
|
450
|
+
return self.getTypedRuleContext(MinisqlParser.CteContext,i)
|
451
|
+
|
452
|
+
|
453
|
+
def getRuleIndex(self):
|
454
|
+
return MinisqlParser.RULE_cteSelect
|
455
|
+
|
456
|
+
def enterRule(self, listener:ParseTreeListener):
|
457
|
+
if hasattr( listener, "enterCteSelect" ):
|
458
|
+
listener.enterCteSelect(self)
|
459
|
+
|
460
|
+
def exitRule(self, listener:ParseTreeListener):
|
461
|
+
if hasattr( listener, "exitCteSelect" ):
|
462
|
+
listener.exitCteSelect(self)
|
463
|
+
|
464
|
+
def accept(self, visitor:ParseTreeVisitor):
|
465
|
+
if hasattr( visitor, "visitCteSelect" ):
|
466
|
+
return visitor.visitCteSelect(self)
|
467
|
+
else:
|
468
|
+
return visitor.visitChildren(self)
|
469
|
+
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
def cteSelect(self):
|
474
|
+
|
475
|
+
localctx = MinisqlParser.CteSelectContext(self, self._ctx, self.state)
|
476
|
+
self.enterRule(localctx, 4, self.RULE_cteSelect)
|
477
|
+
self._la = 0 # Token type
|
478
|
+
try:
|
479
|
+
self.enterOuterAlt(localctx, 1)
|
480
|
+
self.state = 83
|
481
|
+
self._errHandler.sync(self)
|
482
|
+
_la = self._input.LA(1)
|
483
|
+
if _la==57:
|
484
|
+
self.state = 74
|
485
|
+
self.match(MinisqlParser.WITH)
|
486
|
+
self.state = 75
|
487
|
+
self.cte()
|
488
|
+
self.state = 80
|
489
|
+
self._errHandler.sync(self)
|
490
|
+
_la = self._input.LA(1)
|
491
|
+
while _la==2:
|
492
|
+
self.state = 76
|
493
|
+
self.match(MinisqlParser.T__1)
|
494
|
+
self.state = 77
|
495
|
+
self.cte()
|
496
|
+
self.state = 82
|
497
|
+
self._errHandler.sync(self)
|
498
|
+
_la = self._input.LA(1)
|
499
|
+
|
500
|
+
|
501
|
+
|
502
|
+
self.state = 85
|
503
|
+
self.unionSelect()
|
504
|
+
except RecognitionException as re:
|
505
|
+
localctx.exception = re
|
506
|
+
self._errHandler.reportError(self, re)
|
507
|
+
self._errHandler.recover(self, re)
|
508
|
+
finally:
|
509
|
+
self.exitRule()
|
510
|
+
return localctx
|
511
|
+
|
512
|
+
|
513
|
+
class CteContext(ParserRuleContext):
|
514
|
+
__slots__ = 'parser'
|
515
|
+
|
516
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
517
|
+
super().__init__(parent, invokingState)
|
518
|
+
self.parser = parser
|
519
|
+
|
520
|
+
def ident(self):
|
521
|
+
return self.getTypedRuleContext(MinisqlParser.IdentContext,0)
|
522
|
+
|
523
|
+
|
524
|
+
def AS(self):
|
525
|
+
return self.getToken(MinisqlParser.AS, 0)
|
526
|
+
|
527
|
+
def select(self):
|
528
|
+
return self.getTypedRuleContext(MinisqlParser.SelectContext,0)
|
529
|
+
|
530
|
+
|
531
|
+
def getRuleIndex(self):
|
532
|
+
return MinisqlParser.RULE_cte
|
533
|
+
|
534
|
+
def enterRule(self, listener:ParseTreeListener):
|
535
|
+
if hasattr( listener, "enterCte" ):
|
536
|
+
listener.enterCte(self)
|
537
|
+
|
538
|
+
def exitRule(self, listener:ParseTreeListener):
|
539
|
+
if hasattr( listener, "exitCte" ):
|
540
|
+
listener.exitCte(self)
|
541
|
+
|
542
|
+
def accept(self, visitor:ParseTreeVisitor):
|
543
|
+
if hasattr( visitor, "visitCte" ):
|
544
|
+
return visitor.visitCte(self)
|
545
|
+
else:
|
546
|
+
return visitor.visitChildren(self)
|
547
|
+
|
548
|
+
|
549
|
+
|
550
|
+
|
551
|
+
def cte(self):
|
552
|
+
|
553
|
+
localctx = MinisqlParser.CteContext(self, self._ctx, self.state)
|
554
|
+
self.enterRule(localctx, 6, self.RULE_cte)
|
555
|
+
try:
|
556
|
+
self.enterOuterAlt(localctx, 1)
|
557
|
+
self.state = 87
|
558
|
+
self.ident()
|
559
|
+
self.state = 88
|
560
|
+
self.match(MinisqlParser.AS)
|
561
|
+
self.state = 89
|
562
|
+
self.match(MinisqlParser.T__2)
|
563
|
+
self.state = 90
|
564
|
+
self.select()
|
565
|
+
self.state = 91
|
566
|
+
self.match(MinisqlParser.T__3)
|
567
|
+
except RecognitionException as re:
|
568
|
+
localctx.exception = re
|
569
|
+
self._errHandler.reportError(self, re)
|
570
|
+
self._errHandler.recover(self, re)
|
571
|
+
finally:
|
572
|
+
self.exitRule()
|
573
|
+
return localctx
|
574
|
+
|
575
|
+
|
576
|
+
class UnionSelectContext(ParserRuleContext):
|
577
|
+
__slots__ = 'parser'
|
578
|
+
|
579
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
580
|
+
super().__init__(parent, invokingState)
|
581
|
+
self.parser = parser
|
582
|
+
|
583
|
+
def primarySelect(self):
|
584
|
+
return self.getTypedRuleContext(MinisqlParser.PrimarySelectContext,0)
|
585
|
+
|
586
|
+
|
587
|
+
def unionItem(self, i:int=None):
|
588
|
+
if i is None:
|
589
|
+
return self.getTypedRuleContexts(MinisqlParser.UnionItemContext)
|
590
|
+
else:
|
591
|
+
return self.getTypedRuleContext(MinisqlParser.UnionItemContext,i)
|
592
|
+
|
593
|
+
|
594
|
+
def getRuleIndex(self):
|
595
|
+
return MinisqlParser.RULE_unionSelect
|
596
|
+
|
597
|
+
def enterRule(self, listener:ParseTreeListener):
|
598
|
+
if hasattr( listener, "enterUnionSelect" ):
|
599
|
+
listener.enterUnionSelect(self)
|
600
|
+
|
601
|
+
def exitRule(self, listener:ParseTreeListener):
|
602
|
+
if hasattr( listener, "exitUnionSelect" ):
|
603
|
+
listener.exitUnionSelect(self)
|
604
|
+
|
605
|
+
def accept(self, visitor:ParseTreeVisitor):
|
606
|
+
if hasattr( visitor, "visitUnionSelect" ):
|
607
|
+
return visitor.visitUnionSelect(self)
|
608
|
+
else:
|
609
|
+
return visitor.visitChildren(self)
|
610
|
+
|
611
|
+
|
612
|
+
|
613
|
+
|
614
|
+
def unionSelect(self):
|
615
|
+
|
616
|
+
localctx = MinisqlParser.UnionSelectContext(self, self._ctx, self.state)
|
617
|
+
self.enterRule(localctx, 8, self.RULE_unionSelect)
|
618
|
+
self._la = 0 # Token type
|
619
|
+
try:
|
620
|
+
self.enterOuterAlt(localctx, 1)
|
621
|
+
self.state = 93
|
622
|
+
self.primarySelect()
|
623
|
+
self.state = 97
|
624
|
+
self._errHandler.sync(self)
|
625
|
+
_la = self._input.LA(1)
|
626
|
+
while _la==54:
|
627
|
+
self.state = 94
|
628
|
+
self.unionItem()
|
629
|
+
self.state = 99
|
630
|
+
self._errHandler.sync(self)
|
631
|
+
_la = self._input.LA(1)
|
632
|
+
|
633
|
+
except RecognitionException as re:
|
634
|
+
localctx.exception = re
|
635
|
+
self._errHandler.reportError(self, re)
|
636
|
+
self._errHandler.recover(self, re)
|
637
|
+
finally:
|
638
|
+
self.exitRule()
|
639
|
+
return localctx
|
640
|
+
|
641
|
+
|
642
|
+
class UnionItemContext(ParserRuleContext):
|
643
|
+
__slots__ = 'parser'
|
644
|
+
|
645
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
646
|
+
super().__init__(parent, invokingState)
|
647
|
+
self.parser = parser
|
648
|
+
|
649
|
+
def UNION(self):
|
650
|
+
return self.getToken(MinisqlParser.UNION, 0)
|
651
|
+
|
652
|
+
def primarySelect(self):
|
653
|
+
return self.getTypedRuleContext(MinisqlParser.PrimarySelectContext,0)
|
654
|
+
|
655
|
+
|
656
|
+
def setQuantifier(self):
|
657
|
+
return self.getTypedRuleContext(MinisqlParser.SetQuantifierContext,0)
|
658
|
+
|
659
|
+
|
660
|
+
def getRuleIndex(self):
|
661
|
+
return MinisqlParser.RULE_unionItem
|
662
|
+
|
663
|
+
def enterRule(self, listener:ParseTreeListener):
|
664
|
+
if hasattr( listener, "enterUnionItem" ):
|
665
|
+
listener.enterUnionItem(self)
|
666
|
+
|
667
|
+
def exitRule(self, listener:ParseTreeListener):
|
668
|
+
if hasattr( listener, "exitUnionItem" ):
|
669
|
+
listener.exitUnionItem(self)
|
670
|
+
|
671
|
+
def accept(self, visitor:ParseTreeVisitor):
|
672
|
+
if hasattr( visitor, "visitUnionItem" ):
|
673
|
+
return visitor.visitUnionItem(self)
|
674
|
+
else:
|
675
|
+
return visitor.visitChildren(self)
|
676
|
+
|
677
|
+
|
678
|
+
|
679
|
+
|
680
|
+
def unionItem(self):
|
681
|
+
|
682
|
+
localctx = MinisqlParser.UnionItemContext(self, self._ctx, self.state)
|
683
|
+
self.enterRule(localctx, 10, self.RULE_unionItem)
|
684
|
+
self._la = 0 # Token type
|
685
|
+
try:
|
686
|
+
self.enterOuterAlt(localctx, 1)
|
687
|
+
self.state = 100
|
688
|
+
self.match(MinisqlParser.UNION)
|
689
|
+
self.state = 102
|
690
|
+
self._errHandler.sync(self)
|
691
|
+
_la = self._input.LA(1)
|
692
|
+
if _la==20 or _la==28:
|
693
|
+
self.state = 101
|
694
|
+
self.setQuantifier()
|
695
|
+
|
696
|
+
|
697
|
+
self.state = 104
|
698
|
+
self.primarySelect()
|
699
|
+
except RecognitionException as re:
|
700
|
+
localctx.exception = re
|
701
|
+
self._errHandler.reportError(self, re)
|
702
|
+
self._errHandler.recover(self, re)
|
703
|
+
finally:
|
704
|
+
self.exitRule()
|
705
|
+
return localctx
|
706
|
+
|
707
|
+
|
708
|
+
class PrimarySelectContext(ParserRuleContext):
|
709
|
+
__slots__ = 'parser'
|
710
|
+
|
711
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
712
|
+
super().__init__(parent, invokingState)
|
713
|
+
self.parser = parser
|
714
|
+
self.where = None # BooleanExprContext
|
715
|
+
self.having = None # BooleanExprContext
|
716
|
+
|
717
|
+
def SELECT(self):
|
718
|
+
return self.getToken(MinisqlParser.SELECT, 0)
|
719
|
+
|
720
|
+
def selectItem(self, i:int=None):
|
721
|
+
if i is None:
|
722
|
+
return self.getTypedRuleContexts(MinisqlParser.SelectItemContext)
|
723
|
+
else:
|
724
|
+
return self.getTypedRuleContext(MinisqlParser.SelectItemContext,i)
|
725
|
+
|
726
|
+
|
727
|
+
def setQuantifier(self):
|
728
|
+
return self.getTypedRuleContext(MinisqlParser.SetQuantifierContext,0)
|
729
|
+
|
730
|
+
|
731
|
+
def FROM(self):
|
732
|
+
return self.getToken(MinisqlParser.FROM, 0)
|
733
|
+
|
734
|
+
def relation(self, i:int=None):
|
735
|
+
if i is None:
|
736
|
+
return self.getTypedRuleContexts(MinisqlParser.RelationContext)
|
737
|
+
else:
|
738
|
+
return self.getTypedRuleContext(MinisqlParser.RelationContext,i)
|
739
|
+
|
740
|
+
|
741
|
+
def WHERE(self):
|
742
|
+
return self.getToken(MinisqlParser.WHERE, 0)
|
743
|
+
|
744
|
+
def GROUP(self):
|
745
|
+
return self.getToken(MinisqlParser.GROUP, 0)
|
746
|
+
|
747
|
+
def BY(self, i:int=None):
|
748
|
+
if i is None:
|
749
|
+
return self.getTokens(MinisqlParser.BY)
|
750
|
+
else:
|
751
|
+
return self.getToken(MinisqlParser.BY, i)
|
752
|
+
|
753
|
+
def groupBy(self):
|
754
|
+
return self.getTypedRuleContext(MinisqlParser.GroupByContext,0)
|
755
|
+
|
756
|
+
|
757
|
+
def HAVING(self):
|
758
|
+
return self.getToken(MinisqlParser.HAVING, 0)
|
759
|
+
|
760
|
+
def ORDER(self):
|
761
|
+
return self.getToken(MinisqlParser.ORDER, 0)
|
762
|
+
|
763
|
+
def sortItem(self, i:int=None):
|
764
|
+
if i is None:
|
765
|
+
return self.getTypedRuleContexts(MinisqlParser.SortItemContext)
|
766
|
+
else:
|
767
|
+
return self.getTypedRuleContext(MinisqlParser.SortItemContext,i)
|
768
|
+
|
769
|
+
|
770
|
+
def booleanExpr(self, i:int=None):
|
771
|
+
if i is None:
|
772
|
+
return self.getTypedRuleContexts(MinisqlParser.BooleanExprContext)
|
773
|
+
else:
|
774
|
+
return self.getTypedRuleContext(MinisqlParser.BooleanExprContext,i)
|
775
|
+
|
776
|
+
|
777
|
+
def getRuleIndex(self):
|
778
|
+
return MinisqlParser.RULE_primarySelect
|
779
|
+
|
780
|
+
def enterRule(self, listener:ParseTreeListener):
|
781
|
+
if hasattr( listener, "enterPrimarySelect" ):
|
782
|
+
listener.enterPrimarySelect(self)
|
783
|
+
|
784
|
+
def exitRule(self, listener:ParseTreeListener):
|
785
|
+
if hasattr( listener, "exitPrimarySelect" ):
|
786
|
+
listener.exitPrimarySelect(self)
|
787
|
+
|
788
|
+
def accept(self, visitor:ParseTreeVisitor):
|
789
|
+
if hasattr( visitor, "visitPrimarySelect" ):
|
790
|
+
return visitor.visitPrimarySelect(self)
|
791
|
+
else:
|
792
|
+
return visitor.visitChildren(self)
|
793
|
+
|
794
|
+
|
795
|
+
|
796
|
+
|
797
|
+
def primarySelect(self):
|
798
|
+
|
799
|
+
localctx = MinisqlParser.PrimarySelectContext(self, self._ctx, self.state)
|
800
|
+
self.enterRule(localctx, 12, self.RULE_primarySelect)
|
801
|
+
self._la = 0 # Token type
|
802
|
+
try:
|
803
|
+
self.enterOuterAlt(localctx, 1)
|
804
|
+
self.state = 106
|
805
|
+
self.match(MinisqlParser.SELECT)
|
806
|
+
self.state = 108
|
807
|
+
self._errHandler.sync(self)
|
808
|
+
_la = self._input.LA(1)
|
809
|
+
if _la==20 or _la==28:
|
810
|
+
self.state = 107
|
811
|
+
self.setQuantifier()
|
812
|
+
|
813
|
+
|
814
|
+
self.state = 110
|
815
|
+
self.selectItem()
|
816
|
+
self.state = 115
|
817
|
+
self._errHandler.sync(self)
|
818
|
+
_la = self._input.LA(1)
|
819
|
+
while _la==2:
|
820
|
+
self.state = 111
|
821
|
+
self.match(MinisqlParser.T__1)
|
822
|
+
self.state = 112
|
823
|
+
self.selectItem()
|
824
|
+
self.state = 117
|
825
|
+
self._errHandler.sync(self)
|
826
|
+
_la = self._input.LA(1)
|
827
|
+
|
828
|
+
self.state = 127
|
829
|
+
self._errHandler.sync(self)
|
830
|
+
_la = self._input.LA(1)
|
831
|
+
if _la==32:
|
832
|
+
self.state = 118
|
833
|
+
self.match(MinisqlParser.FROM)
|
834
|
+
self.state = 119
|
835
|
+
self.relation(0)
|
836
|
+
self.state = 124
|
837
|
+
self._errHandler.sync(self)
|
838
|
+
_la = self._input.LA(1)
|
839
|
+
while _la==2:
|
840
|
+
self.state = 120
|
841
|
+
self.match(MinisqlParser.T__1)
|
842
|
+
self.state = 121
|
843
|
+
self.relation(0)
|
844
|
+
self.state = 126
|
845
|
+
self._errHandler.sync(self)
|
846
|
+
_la = self._input.LA(1)
|
847
|
+
|
848
|
+
|
849
|
+
|
850
|
+
self.state = 131
|
851
|
+
self._errHandler.sync(self)
|
852
|
+
_la = self._input.LA(1)
|
853
|
+
if _la==56:
|
854
|
+
self.state = 129
|
855
|
+
self.match(MinisqlParser.WHERE)
|
856
|
+
self.state = 130
|
857
|
+
localctx.where = self.booleanExpr(0)
|
858
|
+
|
859
|
+
|
860
|
+
self.state = 136
|
861
|
+
self._errHandler.sync(self)
|
862
|
+
_la = self._input.LA(1)
|
863
|
+
if _la==34:
|
864
|
+
self.state = 133
|
865
|
+
self.match(MinisqlParser.GROUP)
|
866
|
+
self.state = 134
|
867
|
+
self.match(MinisqlParser.BY)
|
868
|
+
self.state = 135
|
869
|
+
self.groupBy()
|
870
|
+
|
871
|
+
|
872
|
+
self.state = 140
|
873
|
+
self._errHandler.sync(self)
|
874
|
+
_la = self._input.LA(1)
|
875
|
+
if _la==35:
|
876
|
+
self.state = 138
|
877
|
+
self.match(MinisqlParser.HAVING)
|
878
|
+
self.state = 139
|
879
|
+
localctx.having = self.booleanExpr(0)
|
880
|
+
|
881
|
+
|
882
|
+
self.state = 152
|
883
|
+
self._errHandler.sync(self)
|
884
|
+
_la = self._input.LA(1)
|
885
|
+
if _la==47:
|
886
|
+
self.state = 142
|
887
|
+
self.match(MinisqlParser.ORDER)
|
888
|
+
self.state = 143
|
889
|
+
self.match(MinisqlParser.BY)
|
890
|
+
self.state = 144
|
891
|
+
self.sortItem()
|
892
|
+
self.state = 149
|
893
|
+
self._errHandler.sync(self)
|
894
|
+
_la = self._input.LA(1)
|
895
|
+
while _la==2:
|
896
|
+
self.state = 145
|
897
|
+
self.match(MinisqlParser.T__1)
|
898
|
+
self.state = 146
|
899
|
+
self.sortItem()
|
900
|
+
self.state = 151
|
901
|
+
self._errHandler.sync(self)
|
902
|
+
_la = self._input.LA(1)
|
903
|
+
|
904
|
+
|
905
|
+
|
906
|
+
except RecognitionException as re:
|
907
|
+
localctx.exception = re
|
908
|
+
self._errHandler.reportError(self, re)
|
909
|
+
self._errHandler.recover(self, re)
|
910
|
+
finally:
|
911
|
+
self.exitRule()
|
912
|
+
return localctx
|
913
|
+
|
914
|
+
|
915
|
+
class SelectItemContext(ParserRuleContext):
|
916
|
+
__slots__ = 'parser'
|
917
|
+
|
918
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
919
|
+
super().__init__(parent, invokingState)
|
920
|
+
self.parser = parser
|
921
|
+
|
922
|
+
|
923
|
+
def getRuleIndex(self):
|
924
|
+
return MinisqlParser.RULE_selectItem
|
925
|
+
|
926
|
+
|
927
|
+
def copyFrom(self, ctx:ParserRuleContext):
|
928
|
+
super().copyFrom(ctx)
|
929
|
+
|
930
|
+
|
931
|
+
|
932
|
+
class ExprSelectItemContext(SelectItemContext):
|
933
|
+
|
934
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.SelectItemContext
|
935
|
+
super().__init__(parser)
|
936
|
+
self.copyFrom(ctx)
|
937
|
+
|
938
|
+
def expr(self):
|
939
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,0)
|
940
|
+
|
941
|
+
def ident(self):
|
942
|
+
return self.getTypedRuleContext(MinisqlParser.IdentContext,0)
|
943
|
+
|
944
|
+
def AS(self):
|
945
|
+
return self.getToken(MinisqlParser.AS, 0)
|
946
|
+
|
947
|
+
def enterRule(self, listener:ParseTreeListener):
|
948
|
+
if hasattr( listener, "enterExprSelectItem" ):
|
949
|
+
listener.enterExprSelectItem(self)
|
950
|
+
|
951
|
+
def exitRule(self, listener:ParseTreeListener):
|
952
|
+
if hasattr( listener, "exitExprSelectItem" ):
|
953
|
+
listener.exitExprSelectItem(self)
|
954
|
+
|
955
|
+
def accept(self, visitor:ParseTreeVisitor):
|
956
|
+
if hasattr( visitor, "visitExprSelectItem" ):
|
957
|
+
return visitor.visitExprSelectItem(self)
|
958
|
+
else:
|
959
|
+
return visitor.visitChildren(self)
|
960
|
+
|
961
|
+
|
962
|
+
class AllSelectItemContext(SelectItemContext):
|
963
|
+
|
964
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.SelectItemContext
|
965
|
+
super().__init__(parser)
|
966
|
+
self.copyFrom(ctx)
|
967
|
+
|
968
|
+
|
969
|
+
def enterRule(self, listener:ParseTreeListener):
|
970
|
+
if hasattr( listener, "enterAllSelectItem" ):
|
971
|
+
listener.enterAllSelectItem(self)
|
972
|
+
|
973
|
+
def exitRule(self, listener:ParseTreeListener):
|
974
|
+
if hasattr( listener, "exitAllSelectItem" ):
|
975
|
+
listener.exitAllSelectItem(self)
|
976
|
+
|
977
|
+
def accept(self, visitor:ParseTreeVisitor):
|
978
|
+
if hasattr( visitor, "visitAllSelectItem" ):
|
979
|
+
return visitor.visitAllSelectItem(self)
|
980
|
+
else:
|
981
|
+
return visitor.visitChildren(self)
|
982
|
+
|
983
|
+
|
984
|
+
|
985
|
+
def selectItem(self):
|
986
|
+
|
987
|
+
localctx = MinisqlParser.SelectItemContext(self, self._ctx, self.state)
|
988
|
+
self.enterRule(localctx, 14, self.RULE_selectItem)
|
989
|
+
self._la = 0 # Token type
|
990
|
+
try:
|
991
|
+
self.state = 162
|
992
|
+
self._errHandler.sync(self)
|
993
|
+
token = self._input.LA(1)
|
994
|
+
if token in [5]:
|
995
|
+
localctx = MinisqlParser.AllSelectItemContext(self, localctx)
|
996
|
+
self.enterOuterAlt(localctx, 1)
|
997
|
+
self.state = 154
|
998
|
+
self.match(MinisqlParser.T__4)
|
999
|
+
pass
|
1000
|
+
elif token in [3, 15, 16, 25, 31, 40, 43, 44, 50, 53, 58, 59, 60, 61, 62, 63]:
|
1001
|
+
localctx = MinisqlParser.ExprSelectItemContext(self, localctx)
|
1002
|
+
self.enterOuterAlt(localctx, 2)
|
1003
|
+
self.state = 155
|
1004
|
+
self.expr()
|
1005
|
+
self.state = 160
|
1006
|
+
self._errHandler.sync(self)
|
1007
|
+
_la = self._input.LA(1)
|
1008
|
+
if (((_la) & ~0x3f) == 0 and ((1 << _la) & -4610559019004723200) != 0):
|
1009
|
+
self.state = 157
|
1010
|
+
self._errHandler.sync(self)
|
1011
|
+
_la = self._input.LA(1)
|
1012
|
+
if _la==22:
|
1013
|
+
self.state = 156
|
1014
|
+
self.match(MinisqlParser.AS)
|
1015
|
+
|
1016
|
+
|
1017
|
+
self.state = 159
|
1018
|
+
self.ident()
|
1019
|
+
|
1020
|
+
|
1021
|
+
pass
|
1022
|
+
else:
|
1023
|
+
raise NoViableAltException(self)
|
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.exitRule()
|
1031
|
+
return localctx
|
1032
|
+
|
1033
|
+
|
1034
|
+
class ExprContext(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
|
+
def booleanExpr(self):
|
1042
|
+
return self.getTypedRuleContext(MinisqlParser.BooleanExprContext,0)
|
1043
|
+
|
1044
|
+
|
1045
|
+
def getRuleIndex(self):
|
1046
|
+
return MinisqlParser.RULE_expr
|
1047
|
+
|
1048
|
+
def enterRule(self, listener:ParseTreeListener):
|
1049
|
+
if hasattr( listener, "enterExpr" ):
|
1050
|
+
listener.enterExpr(self)
|
1051
|
+
|
1052
|
+
def exitRule(self, listener:ParseTreeListener):
|
1053
|
+
if hasattr( listener, "exitExpr" ):
|
1054
|
+
listener.exitExpr(self)
|
1055
|
+
|
1056
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1057
|
+
if hasattr( visitor, "visitExpr" ):
|
1058
|
+
return visitor.visitExpr(self)
|
1059
|
+
else:
|
1060
|
+
return visitor.visitChildren(self)
|
1061
|
+
|
1062
|
+
|
1063
|
+
|
1064
|
+
|
1065
|
+
def expr(self):
|
1066
|
+
|
1067
|
+
localctx = MinisqlParser.ExprContext(self, self._ctx, self.state)
|
1068
|
+
self.enterRule(localctx, 16, self.RULE_expr)
|
1069
|
+
try:
|
1070
|
+
self.enterOuterAlt(localctx, 1)
|
1071
|
+
self.state = 164
|
1072
|
+
self.booleanExpr(0)
|
1073
|
+
except RecognitionException as re:
|
1074
|
+
localctx.exception = re
|
1075
|
+
self._errHandler.reportError(self, re)
|
1076
|
+
self._errHandler.recover(self, re)
|
1077
|
+
finally:
|
1078
|
+
self.exitRule()
|
1079
|
+
return localctx
|
1080
|
+
|
1081
|
+
|
1082
|
+
class BooleanExprContext(ParserRuleContext):
|
1083
|
+
__slots__ = 'parser'
|
1084
|
+
|
1085
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
1086
|
+
super().__init__(parent, invokingState)
|
1087
|
+
self.parser = parser
|
1088
|
+
|
1089
|
+
|
1090
|
+
def getRuleIndex(self):
|
1091
|
+
return MinisqlParser.RULE_booleanExpr
|
1092
|
+
|
1093
|
+
|
1094
|
+
def copyFrom(self, ctx:ParserRuleContext):
|
1095
|
+
super().copyFrom(ctx)
|
1096
|
+
|
1097
|
+
|
1098
|
+
class UnaryBooleanExprContext(BooleanExprContext):
|
1099
|
+
|
1100
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.BooleanExprContext
|
1101
|
+
super().__init__(parser)
|
1102
|
+
self.op = None # Token
|
1103
|
+
self.copyFrom(ctx)
|
1104
|
+
|
1105
|
+
def booleanExpr(self):
|
1106
|
+
return self.getTypedRuleContext(MinisqlParser.BooleanExprContext,0)
|
1107
|
+
|
1108
|
+
def NOT(self):
|
1109
|
+
return self.getToken(MinisqlParser.NOT, 0)
|
1110
|
+
|
1111
|
+
def enterRule(self, listener:ParseTreeListener):
|
1112
|
+
if hasattr( listener, "enterUnaryBooleanExpr" ):
|
1113
|
+
listener.enterUnaryBooleanExpr(self)
|
1114
|
+
|
1115
|
+
def exitRule(self, listener:ParseTreeListener):
|
1116
|
+
if hasattr( listener, "exitUnaryBooleanExpr" ):
|
1117
|
+
listener.exitUnaryBooleanExpr(self)
|
1118
|
+
|
1119
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1120
|
+
if hasattr( visitor, "visitUnaryBooleanExpr" ):
|
1121
|
+
return visitor.visitUnaryBooleanExpr(self)
|
1122
|
+
else:
|
1123
|
+
return visitor.visitChildren(self)
|
1124
|
+
|
1125
|
+
|
1126
|
+
class PredicatedBooleanExprContext(BooleanExprContext):
|
1127
|
+
|
1128
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.BooleanExprContext
|
1129
|
+
super().__init__(parser)
|
1130
|
+
self._valueExpr = None # ValueExprContext
|
1131
|
+
self.copyFrom(ctx)
|
1132
|
+
|
1133
|
+
def valueExpr(self):
|
1134
|
+
return self.getTypedRuleContext(MinisqlParser.ValueExprContext,0)
|
1135
|
+
|
1136
|
+
def predicate(self):
|
1137
|
+
return self.getTypedRuleContext(MinisqlParser.PredicateContext,0)
|
1138
|
+
|
1139
|
+
|
1140
|
+
def enterRule(self, listener:ParseTreeListener):
|
1141
|
+
if hasattr( listener, "enterPredicatedBooleanExpr" ):
|
1142
|
+
listener.enterPredicatedBooleanExpr(self)
|
1143
|
+
|
1144
|
+
def exitRule(self, listener:ParseTreeListener):
|
1145
|
+
if hasattr( listener, "exitPredicatedBooleanExpr" ):
|
1146
|
+
listener.exitPredicatedBooleanExpr(self)
|
1147
|
+
|
1148
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1149
|
+
if hasattr( visitor, "visitPredicatedBooleanExpr" ):
|
1150
|
+
return visitor.visitPredicatedBooleanExpr(self)
|
1151
|
+
else:
|
1152
|
+
return visitor.visitChildren(self)
|
1153
|
+
|
1154
|
+
|
1155
|
+
class BinaryBooleanExprContext(BooleanExprContext):
|
1156
|
+
|
1157
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.BooleanExprContext
|
1158
|
+
super().__init__(parser)
|
1159
|
+
self.op = None # Token
|
1160
|
+
self.copyFrom(ctx)
|
1161
|
+
|
1162
|
+
def booleanExpr(self, i:int=None):
|
1163
|
+
if i is None:
|
1164
|
+
return self.getTypedRuleContexts(MinisqlParser.BooleanExprContext)
|
1165
|
+
else:
|
1166
|
+
return self.getTypedRuleContext(MinisqlParser.BooleanExprContext,i)
|
1167
|
+
|
1168
|
+
def AND(self):
|
1169
|
+
return self.getToken(MinisqlParser.AND, 0)
|
1170
|
+
def OR(self):
|
1171
|
+
return self.getToken(MinisqlParser.OR, 0)
|
1172
|
+
|
1173
|
+
def enterRule(self, listener:ParseTreeListener):
|
1174
|
+
if hasattr( listener, "enterBinaryBooleanExpr" ):
|
1175
|
+
listener.enterBinaryBooleanExpr(self)
|
1176
|
+
|
1177
|
+
def exitRule(self, listener:ParseTreeListener):
|
1178
|
+
if hasattr( listener, "exitBinaryBooleanExpr" ):
|
1179
|
+
listener.exitBinaryBooleanExpr(self)
|
1180
|
+
|
1181
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1182
|
+
if hasattr( visitor, "visitBinaryBooleanExpr" ):
|
1183
|
+
return visitor.visitBinaryBooleanExpr(self)
|
1184
|
+
else:
|
1185
|
+
return visitor.visitChildren(self)
|
1186
|
+
|
1187
|
+
|
1188
|
+
class CastBooleanExprContext(BooleanExprContext):
|
1189
|
+
|
1190
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.BooleanExprContext
|
1191
|
+
super().__init__(parser)
|
1192
|
+
self.copyFrom(ctx)
|
1193
|
+
|
1194
|
+
def booleanExpr(self):
|
1195
|
+
return self.getTypedRuleContext(MinisqlParser.BooleanExprContext,0)
|
1196
|
+
|
1197
|
+
def ident(self):
|
1198
|
+
return self.getTypedRuleContext(MinisqlParser.IdentContext,0)
|
1199
|
+
|
1200
|
+
|
1201
|
+
def enterRule(self, listener:ParseTreeListener):
|
1202
|
+
if hasattr( listener, "enterCastBooleanExpr" ):
|
1203
|
+
listener.enterCastBooleanExpr(self)
|
1204
|
+
|
1205
|
+
def exitRule(self, listener:ParseTreeListener):
|
1206
|
+
if hasattr( listener, "exitCastBooleanExpr" ):
|
1207
|
+
listener.exitCastBooleanExpr(self)
|
1208
|
+
|
1209
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1210
|
+
if hasattr( visitor, "visitCastBooleanExpr" ):
|
1211
|
+
return visitor.visitCastBooleanExpr(self)
|
1212
|
+
else:
|
1213
|
+
return visitor.visitChildren(self)
|
1214
|
+
|
1215
|
+
|
1216
|
+
|
1217
|
+
def booleanExpr(self, _p:int=0):
|
1218
|
+
_parentctx = self._ctx
|
1219
|
+
_parentState = self.state
|
1220
|
+
localctx = MinisqlParser.BooleanExprContext(self, self._ctx, _parentState)
|
1221
|
+
_prevctx = localctx
|
1222
|
+
_startState = 18
|
1223
|
+
self.enterRecursionRule(localctx, 18, self.RULE_booleanExpr, _p)
|
1224
|
+
self._la = 0 # Token type
|
1225
|
+
try:
|
1226
|
+
self.enterOuterAlt(localctx, 1)
|
1227
|
+
self.state = 173
|
1228
|
+
self._errHandler.sync(self)
|
1229
|
+
token = self._input.LA(1)
|
1230
|
+
if token in [3, 15, 16, 25, 31, 40, 44, 50, 53, 58, 59, 60, 61, 62, 63]:
|
1231
|
+
localctx = MinisqlParser.PredicatedBooleanExprContext(self, localctx)
|
1232
|
+
self._ctx = localctx
|
1233
|
+
_prevctx = localctx
|
1234
|
+
|
1235
|
+
self.state = 167
|
1236
|
+
localctx._valueExpr = self.valueExpr(0)
|
1237
|
+
self.state = 169
|
1238
|
+
self._errHandler.sync(self)
|
1239
|
+
la_ = self._interp.adaptivePredict(self._input,16,self._ctx)
|
1240
|
+
if la_ == 1:
|
1241
|
+
self.state = 168
|
1242
|
+
self.predicate(localctx._valueExpr)
|
1243
|
+
|
1244
|
+
|
1245
|
+
pass
|
1246
|
+
elif token in [43]:
|
1247
|
+
localctx = MinisqlParser.UnaryBooleanExprContext(self, localctx)
|
1248
|
+
self._ctx = localctx
|
1249
|
+
_prevctx = localctx
|
1250
|
+
self.state = 171
|
1251
|
+
localctx.op = self.match(MinisqlParser.NOT)
|
1252
|
+
self.state = 172
|
1253
|
+
self.booleanExpr(3)
|
1254
|
+
pass
|
1255
|
+
else:
|
1256
|
+
raise NoViableAltException(self)
|
1257
|
+
|
1258
|
+
self._ctx.stop = self._input.LT(-1)
|
1259
|
+
self.state = 183
|
1260
|
+
self._errHandler.sync(self)
|
1261
|
+
_alt = self._interp.adaptivePredict(self._input,19,self._ctx)
|
1262
|
+
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
|
1263
|
+
if _alt==1:
|
1264
|
+
if self._parseListeners is not None:
|
1265
|
+
self.triggerExitRuleEvent()
|
1266
|
+
_prevctx = localctx
|
1267
|
+
self.state = 181
|
1268
|
+
self._errHandler.sync(self)
|
1269
|
+
la_ = self._interp.adaptivePredict(self._input,18,self._ctx)
|
1270
|
+
if la_ == 1:
|
1271
|
+
localctx = MinisqlParser.BinaryBooleanExprContext(self, MinisqlParser.BooleanExprContext(self, _parentctx, _parentState))
|
1272
|
+
self.pushNewRecursionContext(localctx, _startState, self.RULE_booleanExpr)
|
1273
|
+
self.state = 175
|
1274
|
+
if not self.precpred(self._ctx, 2):
|
1275
|
+
from antlr4.error.Errors import FailedPredicateException
|
1276
|
+
raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
|
1277
|
+
self.state = 176
|
1278
|
+
localctx.op = self._input.LT(1)
|
1279
|
+
_la = self._input.LA(1)
|
1280
|
+
if not(_la==21 or _la==46):
|
1281
|
+
localctx.op = self._errHandler.recoverInline(self)
|
1282
|
+
else:
|
1283
|
+
self._errHandler.reportMatch(self)
|
1284
|
+
self.consume()
|
1285
|
+
self.state = 177
|
1286
|
+
self.booleanExpr(3)
|
1287
|
+
pass
|
1288
|
+
|
1289
|
+
elif la_ == 2:
|
1290
|
+
localctx = MinisqlParser.CastBooleanExprContext(self, MinisqlParser.BooleanExprContext(self, _parentctx, _parentState))
|
1291
|
+
self.pushNewRecursionContext(localctx, _startState, self.RULE_booleanExpr)
|
1292
|
+
self.state = 178
|
1293
|
+
if not self.precpred(self._ctx, 1):
|
1294
|
+
from antlr4.error.Errors import FailedPredicateException
|
1295
|
+
raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
|
1296
|
+
self.state = 179
|
1297
|
+
self.match(MinisqlParser.T__5)
|
1298
|
+
self.state = 180
|
1299
|
+
self.ident()
|
1300
|
+
pass
|
1301
|
+
|
1302
|
+
|
1303
|
+
self.state = 185
|
1304
|
+
self._errHandler.sync(self)
|
1305
|
+
_alt = self._interp.adaptivePredict(self._input,19,self._ctx)
|
1306
|
+
|
1307
|
+
except RecognitionException as re:
|
1308
|
+
localctx.exception = re
|
1309
|
+
self._errHandler.reportError(self, re)
|
1310
|
+
self._errHandler.recover(self, re)
|
1311
|
+
finally:
|
1312
|
+
self.unrollRecursionContexts(_parentctx)
|
1313
|
+
return localctx
|
1314
|
+
|
1315
|
+
|
1316
|
+
class PredicateContext(ParserRuleContext):
|
1317
|
+
__slots__ = 'parser'
|
1318
|
+
|
1319
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1, value:ParserRuleContext=None):
|
1320
|
+
super().__init__(parent, invokingState)
|
1321
|
+
self.parser = parser
|
1322
|
+
self.value = None
|
1323
|
+
self.value = value
|
1324
|
+
|
1325
|
+
|
1326
|
+
def getRuleIndex(self):
|
1327
|
+
return MinisqlParser.RULE_predicate
|
1328
|
+
|
1329
|
+
|
1330
|
+
def copyFrom(self, ctx:ParserRuleContext):
|
1331
|
+
super().copyFrom(ctx)
|
1332
|
+
self.value = ctx.value
|
1333
|
+
|
1334
|
+
|
1335
|
+
|
1336
|
+
class IsNullPredicateContext(PredicateContext):
|
1337
|
+
|
1338
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PredicateContext
|
1339
|
+
super().__init__(parser)
|
1340
|
+
self.copyFrom(ctx)
|
1341
|
+
|
1342
|
+
def IS(self):
|
1343
|
+
return self.getToken(MinisqlParser.IS, 0)
|
1344
|
+
def NULL(self):
|
1345
|
+
return self.getToken(MinisqlParser.NULL, 0)
|
1346
|
+
def NOT(self):
|
1347
|
+
return self.getToken(MinisqlParser.NOT, 0)
|
1348
|
+
|
1349
|
+
def enterRule(self, listener:ParseTreeListener):
|
1350
|
+
if hasattr( listener, "enterIsNullPredicate" ):
|
1351
|
+
listener.enterIsNullPredicate(self)
|
1352
|
+
|
1353
|
+
def exitRule(self, listener:ParseTreeListener):
|
1354
|
+
if hasattr( listener, "exitIsNullPredicate" ):
|
1355
|
+
listener.exitIsNullPredicate(self)
|
1356
|
+
|
1357
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1358
|
+
if hasattr( visitor, "visitIsNullPredicate" ):
|
1359
|
+
return visitor.visitIsNullPredicate(self)
|
1360
|
+
else:
|
1361
|
+
return visitor.visitChildren(self)
|
1362
|
+
|
1363
|
+
|
1364
|
+
class CmpPredicateContext(PredicateContext):
|
1365
|
+
|
1366
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PredicateContext
|
1367
|
+
super().__init__(parser)
|
1368
|
+
self.right = None # ValueExprContext
|
1369
|
+
self.copyFrom(ctx)
|
1370
|
+
|
1371
|
+
def cmpOp(self):
|
1372
|
+
return self.getTypedRuleContext(MinisqlParser.CmpOpContext,0)
|
1373
|
+
|
1374
|
+
def valueExpr(self):
|
1375
|
+
return self.getTypedRuleContext(MinisqlParser.ValueExprContext,0)
|
1376
|
+
|
1377
|
+
|
1378
|
+
def enterRule(self, listener:ParseTreeListener):
|
1379
|
+
if hasattr( listener, "enterCmpPredicate" ):
|
1380
|
+
listener.enterCmpPredicate(self)
|
1381
|
+
|
1382
|
+
def exitRule(self, listener:ParseTreeListener):
|
1383
|
+
if hasattr( listener, "exitCmpPredicate" ):
|
1384
|
+
listener.exitCmpPredicate(self)
|
1385
|
+
|
1386
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1387
|
+
if hasattr( visitor, "visitCmpPredicate" ):
|
1388
|
+
return visitor.visitCmpPredicate(self)
|
1389
|
+
else:
|
1390
|
+
return visitor.visitChildren(self)
|
1391
|
+
|
1392
|
+
|
1393
|
+
class LikePredicateContext(PredicateContext):
|
1394
|
+
|
1395
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PredicateContext
|
1396
|
+
super().__init__(parser)
|
1397
|
+
self.copyFrom(ctx)
|
1398
|
+
|
1399
|
+
def LIKE(self):
|
1400
|
+
return self.getToken(MinisqlParser.LIKE, 0)
|
1401
|
+
def expr(self):
|
1402
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,0)
|
1403
|
+
|
1404
|
+
def NOT(self):
|
1405
|
+
return self.getToken(MinisqlParser.NOT, 0)
|
1406
|
+
|
1407
|
+
def enterRule(self, listener:ParseTreeListener):
|
1408
|
+
if hasattr( listener, "enterLikePredicate" ):
|
1409
|
+
listener.enterLikePredicate(self)
|
1410
|
+
|
1411
|
+
def exitRule(self, listener:ParseTreeListener):
|
1412
|
+
if hasattr( listener, "exitLikePredicate" ):
|
1413
|
+
listener.exitLikePredicate(self)
|
1414
|
+
|
1415
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1416
|
+
if hasattr( visitor, "visitLikePredicate" ):
|
1417
|
+
return visitor.visitLikePredicate(self)
|
1418
|
+
else:
|
1419
|
+
return visitor.visitChildren(self)
|
1420
|
+
|
1421
|
+
|
1422
|
+
class InSelectPredicateContext(PredicateContext):
|
1423
|
+
|
1424
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PredicateContext
|
1425
|
+
super().__init__(parser)
|
1426
|
+
self.copyFrom(ctx)
|
1427
|
+
|
1428
|
+
def IN(self):
|
1429
|
+
return self.getToken(MinisqlParser.IN, 0)
|
1430
|
+
def select(self):
|
1431
|
+
return self.getTypedRuleContext(MinisqlParser.SelectContext,0)
|
1432
|
+
|
1433
|
+
def NOT(self):
|
1434
|
+
return self.getToken(MinisqlParser.NOT, 0)
|
1435
|
+
|
1436
|
+
def enterRule(self, listener:ParseTreeListener):
|
1437
|
+
if hasattr( listener, "enterInSelectPredicate" ):
|
1438
|
+
listener.enterInSelectPredicate(self)
|
1439
|
+
|
1440
|
+
def exitRule(self, listener:ParseTreeListener):
|
1441
|
+
if hasattr( listener, "exitInSelectPredicate" ):
|
1442
|
+
listener.exitInSelectPredicate(self)
|
1443
|
+
|
1444
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1445
|
+
if hasattr( visitor, "visitInSelectPredicate" ):
|
1446
|
+
return visitor.visitInSelectPredicate(self)
|
1447
|
+
else:
|
1448
|
+
return visitor.visitChildren(self)
|
1449
|
+
|
1450
|
+
|
1451
|
+
class InListPredicateContext(PredicateContext):
|
1452
|
+
|
1453
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PredicateContext
|
1454
|
+
super().__init__(parser)
|
1455
|
+
self.copyFrom(ctx)
|
1456
|
+
|
1457
|
+
def IN(self):
|
1458
|
+
return self.getToken(MinisqlParser.IN, 0)
|
1459
|
+
def expr(self, i:int=None):
|
1460
|
+
if i is None:
|
1461
|
+
return self.getTypedRuleContexts(MinisqlParser.ExprContext)
|
1462
|
+
else:
|
1463
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,i)
|
1464
|
+
|
1465
|
+
def NOT(self):
|
1466
|
+
return self.getToken(MinisqlParser.NOT, 0)
|
1467
|
+
|
1468
|
+
def enterRule(self, listener:ParseTreeListener):
|
1469
|
+
if hasattr( listener, "enterInListPredicate" ):
|
1470
|
+
listener.enterInListPredicate(self)
|
1471
|
+
|
1472
|
+
def exitRule(self, listener:ParseTreeListener):
|
1473
|
+
if hasattr( listener, "exitInListPredicate" ):
|
1474
|
+
listener.exitInListPredicate(self)
|
1475
|
+
|
1476
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1477
|
+
if hasattr( visitor, "visitInListPredicate" ):
|
1478
|
+
return visitor.visitInListPredicate(self)
|
1479
|
+
else:
|
1480
|
+
return visitor.visitChildren(self)
|
1481
|
+
|
1482
|
+
|
1483
|
+
|
1484
|
+
def predicate(self, value:ParserRuleContext):
|
1485
|
+
|
1486
|
+
localctx = MinisqlParser.PredicateContext(self, self._ctx, self.state, value)
|
1487
|
+
self.enterRule(localctx, 20, self.RULE_predicate)
|
1488
|
+
self._la = 0 # Token type
|
1489
|
+
try:
|
1490
|
+
self.state = 222
|
1491
|
+
self._errHandler.sync(self)
|
1492
|
+
la_ = self._interp.adaptivePredict(self._input,25,self._ctx)
|
1493
|
+
if la_ == 1:
|
1494
|
+
localctx = MinisqlParser.CmpPredicateContext(self, localctx)
|
1495
|
+
self.enterOuterAlt(localctx, 1)
|
1496
|
+
self.state = 186
|
1497
|
+
self.cmpOp()
|
1498
|
+
self.state = 187
|
1499
|
+
localctx.right = self.valueExpr(0)
|
1500
|
+
pass
|
1501
|
+
|
1502
|
+
elif la_ == 2:
|
1503
|
+
localctx = MinisqlParser.IsNullPredicateContext(self, localctx)
|
1504
|
+
self.enterOuterAlt(localctx, 2)
|
1505
|
+
self.state = 189
|
1506
|
+
self.match(MinisqlParser.IS)
|
1507
|
+
self.state = 191
|
1508
|
+
self._errHandler.sync(self)
|
1509
|
+
_la = self._input.LA(1)
|
1510
|
+
if _la==43:
|
1511
|
+
self.state = 190
|
1512
|
+
self.match(MinisqlParser.NOT)
|
1513
|
+
|
1514
|
+
|
1515
|
+
self.state = 193
|
1516
|
+
self.match(MinisqlParser.NULL)
|
1517
|
+
pass
|
1518
|
+
|
1519
|
+
elif la_ == 3:
|
1520
|
+
localctx = MinisqlParser.InListPredicateContext(self, localctx)
|
1521
|
+
self.enterOuterAlt(localctx, 3)
|
1522
|
+
self.state = 195
|
1523
|
+
self._errHandler.sync(self)
|
1524
|
+
_la = self._input.LA(1)
|
1525
|
+
if _la==43:
|
1526
|
+
self.state = 194
|
1527
|
+
self.match(MinisqlParser.NOT)
|
1528
|
+
|
1529
|
+
|
1530
|
+
self.state = 197
|
1531
|
+
self.match(MinisqlParser.IN)
|
1532
|
+
self.state = 198
|
1533
|
+
self.match(MinisqlParser.T__2)
|
1534
|
+
self.state = 199
|
1535
|
+
self.expr()
|
1536
|
+
self.state = 204
|
1537
|
+
self._errHandler.sync(self)
|
1538
|
+
_la = self._input.LA(1)
|
1539
|
+
while _la==2:
|
1540
|
+
self.state = 200
|
1541
|
+
self.match(MinisqlParser.T__1)
|
1542
|
+
self.state = 201
|
1543
|
+
self.expr()
|
1544
|
+
self.state = 206
|
1545
|
+
self._errHandler.sync(self)
|
1546
|
+
_la = self._input.LA(1)
|
1547
|
+
|
1548
|
+
self.state = 207
|
1549
|
+
self.match(MinisqlParser.T__3)
|
1550
|
+
pass
|
1551
|
+
|
1552
|
+
elif la_ == 4:
|
1553
|
+
localctx = MinisqlParser.InSelectPredicateContext(self, localctx)
|
1554
|
+
self.enterOuterAlt(localctx, 4)
|
1555
|
+
self.state = 210
|
1556
|
+
self._errHandler.sync(self)
|
1557
|
+
_la = self._input.LA(1)
|
1558
|
+
if _la==43:
|
1559
|
+
self.state = 209
|
1560
|
+
self.match(MinisqlParser.NOT)
|
1561
|
+
|
1562
|
+
|
1563
|
+
self.state = 212
|
1564
|
+
self.match(MinisqlParser.IN)
|
1565
|
+
self.state = 213
|
1566
|
+
self.match(MinisqlParser.T__2)
|
1567
|
+
self.state = 214
|
1568
|
+
self.select()
|
1569
|
+
self.state = 215
|
1570
|
+
self.match(MinisqlParser.T__3)
|
1571
|
+
pass
|
1572
|
+
|
1573
|
+
elif la_ == 5:
|
1574
|
+
localctx = MinisqlParser.LikePredicateContext(self, localctx)
|
1575
|
+
self.enterOuterAlt(localctx, 5)
|
1576
|
+
self.state = 218
|
1577
|
+
self._errHandler.sync(self)
|
1578
|
+
_la = self._input.LA(1)
|
1579
|
+
if _la==43:
|
1580
|
+
self.state = 217
|
1581
|
+
self.match(MinisqlParser.NOT)
|
1582
|
+
|
1583
|
+
|
1584
|
+
self.state = 220
|
1585
|
+
self.match(MinisqlParser.LIKE)
|
1586
|
+
self.state = 221
|
1587
|
+
self.expr()
|
1588
|
+
pass
|
1589
|
+
|
1590
|
+
|
1591
|
+
except RecognitionException as re:
|
1592
|
+
localctx.exception = re
|
1593
|
+
self._errHandler.reportError(self, re)
|
1594
|
+
self._errHandler.recover(self, re)
|
1595
|
+
finally:
|
1596
|
+
self.exitRule()
|
1597
|
+
return localctx
|
1598
|
+
|
1599
|
+
|
1600
|
+
class ValueExprContext(ParserRuleContext):
|
1601
|
+
__slots__ = 'parser'
|
1602
|
+
|
1603
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
1604
|
+
super().__init__(parent, invokingState)
|
1605
|
+
self.parser = parser
|
1606
|
+
|
1607
|
+
|
1608
|
+
def getRuleIndex(self):
|
1609
|
+
return MinisqlParser.RULE_valueExpr
|
1610
|
+
|
1611
|
+
|
1612
|
+
def copyFrom(self, ctx:ParserRuleContext):
|
1613
|
+
super().copyFrom(ctx)
|
1614
|
+
|
1615
|
+
|
1616
|
+
class ArithValueExprContext(ValueExprContext):
|
1617
|
+
|
1618
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.ValueExprContext
|
1619
|
+
super().__init__(parser)
|
1620
|
+
self.left = None # ValueExprContext
|
1621
|
+
self.op = None # ArithOpContext
|
1622
|
+
self.right = None # ValueExprContext
|
1623
|
+
self.copyFrom(ctx)
|
1624
|
+
|
1625
|
+
def valueExpr(self, i:int=None):
|
1626
|
+
if i is None:
|
1627
|
+
return self.getTypedRuleContexts(MinisqlParser.ValueExprContext)
|
1628
|
+
else:
|
1629
|
+
return self.getTypedRuleContext(MinisqlParser.ValueExprContext,i)
|
1630
|
+
|
1631
|
+
def arithOp(self):
|
1632
|
+
return self.getTypedRuleContext(MinisqlParser.ArithOpContext,0)
|
1633
|
+
|
1634
|
+
|
1635
|
+
def enterRule(self, listener:ParseTreeListener):
|
1636
|
+
if hasattr( listener, "enterArithValueExpr" ):
|
1637
|
+
listener.enterArithValueExpr(self)
|
1638
|
+
|
1639
|
+
def exitRule(self, listener:ParseTreeListener):
|
1640
|
+
if hasattr( listener, "exitArithValueExpr" ):
|
1641
|
+
listener.exitArithValueExpr(self)
|
1642
|
+
|
1643
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1644
|
+
if hasattr( visitor, "visitArithValueExpr" ):
|
1645
|
+
return visitor.visitArithValueExpr(self)
|
1646
|
+
else:
|
1647
|
+
return visitor.visitChildren(self)
|
1648
|
+
|
1649
|
+
|
1650
|
+
class UnaryValueExprContext(ValueExprContext):
|
1651
|
+
|
1652
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.ValueExprContext
|
1653
|
+
super().__init__(parser)
|
1654
|
+
self.op = None # UnaryOpContext
|
1655
|
+
self.copyFrom(ctx)
|
1656
|
+
|
1657
|
+
def valueExpr(self):
|
1658
|
+
return self.getTypedRuleContext(MinisqlParser.ValueExprContext,0)
|
1659
|
+
|
1660
|
+
def unaryOp(self):
|
1661
|
+
return self.getTypedRuleContext(MinisqlParser.UnaryOpContext,0)
|
1662
|
+
|
1663
|
+
|
1664
|
+
def enterRule(self, listener:ParseTreeListener):
|
1665
|
+
if hasattr( listener, "enterUnaryValueExpr" ):
|
1666
|
+
listener.enterUnaryValueExpr(self)
|
1667
|
+
|
1668
|
+
def exitRule(self, listener:ParseTreeListener):
|
1669
|
+
if hasattr( listener, "exitUnaryValueExpr" ):
|
1670
|
+
listener.exitUnaryValueExpr(self)
|
1671
|
+
|
1672
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1673
|
+
if hasattr( visitor, "visitUnaryValueExpr" ):
|
1674
|
+
return visitor.visitUnaryValueExpr(self)
|
1675
|
+
else:
|
1676
|
+
return visitor.visitChildren(self)
|
1677
|
+
|
1678
|
+
|
1679
|
+
class PrimaryValueExprContext(ValueExprContext):
|
1680
|
+
|
1681
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.ValueExprContext
|
1682
|
+
super().__init__(parser)
|
1683
|
+
self.copyFrom(ctx)
|
1684
|
+
|
1685
|
+
def primaryExpr(self):
|
1686
|
+
return self.getTypedRuleContext(MinisqlParser.PrimaryExprContext,0)
|
1687
|
+
|
1688
|
+
|
1689
|
+
def enterRule(self, listener:ParseTreeListener):
|
1690
|
+
if hasattr( listener, "enterPrimaryValueExpr" ):
|
1691
|
+
listener.enterPrimaryValueExpr(self)
|
1692
|
+
|
1693
|
+
def exitRule(self, listener:ParseTreeListener):
|
1694
|
+
if hasattr( listener, "exitPrimaryValueExpr" ):
|
1695
|
+
listener.exitPrimaryValueExpr(self)
|
1696
|
+
|
1697
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1698
|
+
if hasattr( visitor, "visitPrimaryValueExpr" ):
|
1699
|
+
return visitor.visitPrimaryValueExpr(self)
|
1700
|
+
else:
|
1701
|
+
return visitor.visitChildren(self)
|
1702
|
+
|
1703
|
+
|
1704
|
+
|
1705
|
+
def valueExpr(self, _p:int=0):
|
1706
|
+
_parentctx = self._ctx
|
1707
|
+
_parentState = self.state
|
1708
|
+
localctx = MinisqlParser.ValueExprContext(self, self._ctx, _parentState)
|
1709
|
+
_prevctx = localctx
|
1710
|
+
_startState = 22
|
1711
|
+
self.enterRecursionRule(localctx, 22, self.RULE_valueExpr, _p)
|
1712
|
+
try:
|
1713
|
+
self.enterOuterAlt(localctx, 1)
|
1714
|
+
self.state = 229
|
1715
|
+
self._errHandler.sync(self)
|
1716
|
+
token = self._input.LA(1)
|
1717
|
+
if token in [3, 25, 31, 40, 44, 50, 53, 58, 59, 60, 61, 62, 63]:
|
1718
|
+
localctx = MinisqlParser.PrimaryValueExprContext(self, localctx)
|
1719
|
+
self._ctx = localctx
|
1720
|
+
_prevctx = localctx
|
1721
|
+
|
1722
|
+
self.state = 225
|
1723
|
+
self.primaryExpr()
|
1724
|
+
pass
|
1725
|
+
elif token in [15, 16]:
|
1726
|
+
localctx = MinisqlParser.UnaryValueExprContext(self, localctx)
|
1727
|
+
self._ctx = localctx
|
1728
|
+
_prevctx = localctx
|
1729
|
+
self.state = 226
|
1730
|
+
localctx.op = self.unaryOp()
|
1731
|
+
self.state = 227
|
1732
|
+
self.valueExpr(2)
|
1733
|
+
pass
|
1734
|
+
else:
|
1735
|
+
raise NoViableAltException(self)
|
1736
|
+
|
1737
|
+
self._ctx.stop = self._input.LT(-1)
|
1738
|
+
self.state = 237
|
1739
|
+
self._errHandler.sync(self)
|
1740
|
+
_alt = self._interp.adaptivePredict(self._input,27,self._ctx)
|
1741
|
+
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
|
1742
|
+
if _alt==1:
|
1743
|
+
if self._parseListeners is not None:
|
1744
|
+
self.triggerExitRuleEvent()
|
1745
|
+
_prevctx = localctx
|
1746
|
+
localctx = MinisqlParser.ArithValueExprContext(self, MinisqlParser.ValueExprContext(self, _parentctx, _parentState))
|
1747
|
+
localctx.left = _prevctx
|
1748
|
+
self.pushNewRecursionContext(localctx, _startState, self.RULE_valueExpr)
|
1749
|
+
self.state = 231
|
1750
|
+
if not self.precpred(self._ctx, 1):
|
1751
|
+
from antlr4.error.Errors import FailedPredicateException
|
1752
|
+
raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
|
1753
|
+
self.state = 232
|
1754
|
+
localctx.op = self.arithOp()
|
1755
|
+
self.state = 233
|
1756
|
+
localctx.right = self.valueExpr(2)
|
1757
|
+
self.state = 239
|
1758
|
+
self._errHandler.sync(self)
|
1759
|
+
_alt = self._interp.adaptivePredict(self._input,27,self._ctx)
|
1760
|
+
|
1761
|
+
except RecognitionException as re:
|
1762
|
+
localctx.exception = re
|
1763
|
+
self._errHandler.reportError(self, re)
|
1764
|
+
self._errHandler.recover(self, re)
|
1765
|
+
finally:
|
1766
|
+
self.unrollRecursionContexts(_parentctx)
|
1767
|
+
return localctx
|
1768
|
+
|
1769
|
+
|
1770
|
+
class PrimaryExprContext(ParserRuleContext):
|
1771
|
+
__slots__ = 'parser'
|
1772
|
+
|
1773
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
1774
|
+
super().__init__(parent, invokingState)
|
1775
|
+
self.parser = parser
|
1776
|
+
|
1777
|
+
|
1778
|
+
def getRuleIndex(self):
|
1779
|
+
return MinisqlParser.RULE_primaryExpr
|
1780
|
+
|
1781
|
+
|
1782
|
+
def copyFrom(self, ctx:ParserRuleContext):
|
1783
|
+
super().copyFrom(ctx)
|
1784
|
+
|
1785
|
+
|
1786
|
+
|
1787
|
+
class SelectExprContext(PrimaryExprContext):
|
1788
|
+
|
1789
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PrimaryExprContext
|
1790
|
+
super().__init__(parser)
|
1791
|
+
self.copyFrom(ctx)
|
1792
|
+
|
1793
|
+
def select(self):
|
1794
|
+
return self.getTypedRuleContext(MinisqlParser.SelectContext,0)
|
1795
|
+
|
1796
|
+
|
1797
|
+
def enterRule(self, listener:ParseTreeListener):
|
1798
|
+
if hasattr( listener, "enterSelectExpr" ):
|
1799
|
+
listener.enterSelectExpr(self)
|
1800
|
+
|
1801
|
+
def exitRule(self, listener:ParseTreeListener):
|
1802
|
+
if hasattr( listener, "exitSelectExpr" ):
|
1803
|
+
listener.exitSelectExpr(self)
|
1804
|
+
|
1805
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1806
|
+
if hasattr( visitor, "visitSelectExpr" ):
|
1807
|
+
return visitor.visitSelectExpr(self)
|
1808
|
+
else:
|
1809
|
+
return visitor.visitChildren(self)
|
1810
|
+
|
1811
|
+
|
1812
|
+
class SimplePrimaryExprContext(PrimaryExprContext):
|
1813
|
+
|
1814
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PrimaryExprContext
|
1815
|
+
super().__init__(parser)
|
1816
|
+
self.copyFrom(ctx)
|
1817
|
+
|
1818
|
+
def simpleExpr(self):
|
1819
|
+
return self.getTypedRuleContext(MinisqlParser.SimpleExprContext,0)
|
1820
|
+
|
1821
|
+
|
1822
|
+
def enterRule(self, listener:ParseTreeListener):
|
1823
|
+
if hasattr( listener, "enterSimplePrimaryExpr" ):
|
1824
|
+
listener.enterSimplePrimaryExpr(self)
|
1825
|
+
|
1826
|
+
def exitRule(self, listener:ParseTreeListener):
|
1827
|
+
if hasattr( listener, "exitSimplePrimaryExpr" ):
|
1828
|
+
listener.exitSimplePrimaryExpr(self)
|
1829
|
+
|
1830
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1831
|
+
if hasattr( visitor, "visitSimplePrimaryExpr" ):
|
1832
|
+
return visitor.visitSimplePrimaryExpr(self)
|
1833
|
+
else:
|
1834
|
+
return visitor.visitChildren(self)
|
1835
|
+
|
1836
|
+
|
1837
|
+
class StarFunctionCallExprContext(PrimaryExprContext):
|
1838
|
+
|
1839
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PrimaryExprContext
|
1840
|
+
super().__init__(parser)
|
1841
|
+
self.copyFrom(ctx)
|
1842
|
+
|
1843
|
+
def qualifiedName(self):
|
1844
|
+
return self.getTypedRuleContext(MinisqlParser.QualifiedNameContext,0)
|
1845
|
+
|
1846
|
+
def over(self):
|
1847
|
+
return self.getTypedRuleContext(MinisqlParser.OverContext,0)
|
1848
|
+
|
1849
|
+
|
1850
|
+
def enterRule(self, listener:ParseTreeListener):
|
1851
|
+
if hasattr( listener, "enterStarFunctionCallExpr" ):
|
1852
|
+
listener.enterStarFunctionCallExpr(self)
|
1853
|
+
|
1854
|
+
def exitRule(self, listener:ParseTreeListener):
|
1855
|
+
if hasattr( listener, "exitStarFunctionCallExpr" ):
|
1856
|
+
listener.exitStarFunctionCallExpr(self)
|
1857
|
+
|
1858
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1859
|
+
if hasattr( visitor, "visitStarFunctionCallExpr" ):
|
1860
|
+
return visitor.visitStarFunctionCallExpr(self)
|
1861
|
+
else:
|
1862
|
+
return visitor.visitChildren(self)
|
1863
|
+
|
1864
|
+
|
1865
|
+
class FunctionCallExprContext(PrimaryExprContext):
|
1866
|
+
|
1867
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PrimaryExprContext
|
1868
|
+
super().__init__(parser)
|
1869
|
+
self.copyFrom(ctx)
|
1870
|
+
|
1871
|
+
def qualifiedName(self):
|
1872
|
+
return self.getTypedRuleContext(MinisqlParser.QualifiedNameContext,0)
|
1873
|
+
|
1874
|
+
def expr(self, i:int=None):
|
1875
|
+
if i is None:
|
1876
|
+
return self.getTypedRuleContexts(MinisqlParser.ExprContext)
|
1877
|
+
else:
|
1878
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,i)
|
1879
|
+
|
1880
|
+
def over(self):
|
1881
|
+
return self.getTypedRuleContext(MinisqlParser.OverContext,0)
|
1882
|
+
|
1883
|
+
|
1884
|
+
def enterRule(self, listener:ParseTreeListener):
|
1885
|
+
if hasattr( listener, "enterFunctionCallExpr" ):
|
1886
|
+
listener.enterFunctionCallExpr(self)
|
1887
|
+
|
1888
|
+
def exitRule(self, listener:ParseTreeListener):
|
1889
|
+
if hasattr( listener, "exitFunctionCallExpr" ):
|
1890
|
+
listener.exitFunctionCallExpr(self)
|
1891
|
+
|
1892
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1893
|
+
if hasattr( visitor, "visitFunctionCallExpr" ):
|
1894
|
+
return visitor.visitFunctionCallExpr(self)
|
1895
|
+
else:
|
1896
|
+
return visitor.visitChildren(self)
|
1897
|
+
|
1898
|
+
|
1899
|
+
class CaseExprContext(PrimaryExprContext):
|
1900
|
+
|
1901
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PrimaryExprContext
|
1902
|
+
super().__init__(parser)
|
1903
|
+
self.copyFrom(ctx)
|
1904
|
+
|
1905
|
+
def CASE(self):
|
1906
|
+
return self.getToken(MinisqlParser.CASE, 0)
|
1907
|
+
def END(self):
|
1908
|
+
return self.getToken(MinisqlParser.END, 0)
|
1909
|
+
def caseItem(self, i:int=None):
|
1910
|
+
if i is None:
|
1911
|
+
return self.getTypedRuleContexts(MinisqlParser.CaseItemContext)
|
1912
|
+
else:
|
1913
|
+
return self.getTypedRuleContext(MinisqlParser.CaseItemContext,i)
|
1914
|
+
|
1915
|
+
def ELSE(self):
|
1916
|
+
return self.getToken(MinisqlParser.ELSE, 0)
|
1917
|
+
def expr(self):
|
1918
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,0)
|
1919
|
+
|
1920
|
+
|
1921
|
+
def enterRule(self, listener:ParseTreeListener):
|
1922
|
+
if hasattr( listener, "enterCaseExpr" ):
|
1923
|
+
listener.enterCaseExpr(self)
|
1924
|
+
|
1925
|
+
def exitRule(self, listener:ParseTreeListener):
|
1926
|
+
if hasattr( listener, "exitCaseExpr" ):
|
1927
|
+
listener.exitCaseExpr(self)
|
1928
|
+
|
1929
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1930
|
+
if hasattr( visitor, "visitCaseExpr" ):
|
1931
|
+
return visitor.visitCaseExpr(self)
|
1932
|
+
else:
|
1933
|
+
return visitor.visitChildren(self)
|
1934
|
+
|
1935
|
+
|
1936
|
+
class ParenExprContext(PrimaryExprContext):
|
1937
|
+
|
1938
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.PrimaryExprContext
|
1939
|
+
super().__init__(parser)
|
1940
|
+
self.copyFrom(ctx)
|
1941
|
+
|
1942
|
+
def expr(self):
|
1943
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,0)
|
1944
|
+
|
1945
|
+
|
1946
|
+
def enterRule(self, listener:ParseTreeListener):
|
1947
|
+
if hasattr( listener, "enterParenExpr" ):
|
1948
|
+
listener.enterParenExpr(self)
|
1949
|
+
|
1950
|
+
def exitRule(self, listener:ParseTreeListener):
|
1951
|
+
if hasattr( listener, "exitParenExpr" ):
|
1952
|
+
listener.exitParenExpr(self)
|
1953
|
+
|
1954
|
+
def accept(self, visitor:ParseTreeVisitor):
|
1955
|
+
if hasattr( visitor, "visitParenExpr" ):
|
1956
|
+
return visitor.visitParenExpr(self)
|
1957
|
+
else:
|
1958
|
+
return visitor.visitChildren(self)
|
1959
|
+
|
1960
|
+
|
1961
|
+
|
1962
|
+
def primaryExpr(self):
|
1963
|
+
|
1964
|
+
localctx = MinisqlParser.PrimaryExprContext(self, self._ctx, self.state)
|
1965
|
+
self.enterRule(localctx, 24, self.RULE_primaryExpr)
|
1966
|
+
self._la = 0 # Token type
|
1967
|
+
try:
|
1968
|
+
self.state = 284
|
1969
|
+
self._errHandler.sync(self)
|
1970
|
+
la_ = self._interp.adaptivePredict(self._input,34,self._ctx)
|
1971
|
+
if la_ == 1:
|
1972
|
+
localctx = MinisqlParser.FunctionCallExprContext(self, localctx)
|
1973
|
+
self.enterOuterAlt(localctx, 1)
|
1974
|
+
self.state = 240
|
1975
|
+
self.qualifiedName()
|
1976
|
+
self.state = 241
|
1977
|
+
self.match(MinisqlParser.T__2)
|
1978
|
+
self.state = 250
|
1979
|
+
self._errHandler.sync(self)
|
1980
|
+
_la = self._input.LA(1)
|
1981
|
+
if (((_la) & ~0x3f) == 0 and ((1 << _la) & -278069787018297336) != 0):
|
1982
|
+
self.state = 242
|
1983
|
+
self.expr()
|
1984
|
+
self.state = 247
|
1985
|
+
self._errHandler.sync(self)
|
1986
|
+
_la = self._input.LA(1)
|
1987
|
+
while _la==2:
|
1988
|
+
self.state = 243
|
1989
|
+
self.match(MinisqlParser.T__1)
|
1990
|
+
self.state = 244
|
1991
|
+
self.expr()
|
1992
|
+
self.state = 249
|
1993
|
+
self._errHandler.sync(self)
|
1994
|
+
_la = self._input.LA(1)
|
1995
|
+
|
1996
|
+
|
1997
|
+
|
1998
|
+
self.state = 252
|
1999
|
+
self.match(MinisqlParser.T__3)
|
2000
|
+
self.state = 254
|
2001
|
+
self._errHandler.sync(self)
|
2002
|
+
la_ = self._interp.adaptivePredict(self._input,30,self._ctx)
|
2003
|
+
if la_ == 1:
|
2004
|
+
self.state = 253
|
2005
|
+
self.over()
|
2006
|
+
|
2007
|
+
|
2008
|
+
pass
|
2009
|
+
|
2010
|
+
elif la_ == 2:
|
2011
|
+
localctx = MinisqlParser.StarFunctionCallExprContext(self, localctx)
|
2012
|
+
self.enterOuterAlt(localctx, 2)
|
2013
|
+
self.state = 256
|
2014
|
+
self.qualifiedName()
|
2015
|
+
self.state = 257
|
2016
|
+
self.match(MinisqlParser.T__2)
|
2017
|
+
self.state = 258
|
2018
|
+
self.match(MinisqlParser.T__4)
|
2019
|
+
self.state = 259
|
2020
|
+
self.match(MinisqlParser.T__3)
|
2021
|
+
self.state = 261
|
2022
|
+
self._errHandler.sync(self)
|
2023
|
+
la_ = self._interp.adaptivePredict(self._input,31,self._ctx)
|
2024
|
+
if la_ == 1:
|
2025
|
+
self.state = 260
|
2026
|
+
self.over()
|
2027
|
+
|
2028
|
+
|
2029
|
+
pass
|
2030
|
+
|
2031
|
+
elif la_ == 3:
|
2032
|
+
localctx = MinisqlParser.CaseExprContext(self, localctx)
|
2033
|
+
self.enterOuterAlt(localctx, 3)
|
2034
|
+
self.state = 263
|
2035
|
+
self.match(MinisqlParser.CASE)
|
2036
|
+
self.state = 267
|
2037
|
+
self._errHandler.sync(self)
|
2038
|
+
_la = self._input.LA(1)
|
2039
|
+
while _la==55:
|
2040
|
+
self.state = 264
|
2041
|
+
self.caseItem()
|
2042
|
+
self.state = 269
|
2043
|
+
self._errHandler.sync(self)
|
2044
|
+
_la = self._input.LA(1)
|
2045
|
+
|
2046
|
+
self.state = 272
|
2047
|
+
self._errHandler.sync(self)
|
2048
|
+
_la = self._input.LA(1)
|
2049
|
+
if _la==29:
|
2050
|
+
self.state = 270
|
2051
|
+
self.match(MinisqlParser.ELSE)
|
2052
|
+
self.state = 271
|
2053
|
+
self.expr()
|
2054
|
+
|
2055
|
+
|
2056
|
+
self.state = 274
|
2057
|
+
self.match(MinisqlParser.END)
|
2058
|
+
pass
|
2059
|
+
|
2060
|
+
elif la_ == 4:
|
2061
|
+
localctx = MinisqlParser.SelectExprContext(self, localctx)
|
2062
|
+
self.enterOuterAlt(localctx, 4)
|
2063
|
+
self.state = 275
|
2064
|
+
self.match(MinisqlParser.T__2)
|
2065
|
+
self.state = 276
|
2066
|
+
self.select()
|
2067
|
+
self.state = 277
|
2068
|
+
self.match(MinisqlParser.T__3)
|
2069
|
+
pass
|
2070
|
+
|
2071
|
+
elif la_ == 5:
|
2072
|
+
localctx = MinisqlParser.ParenExprContext(self, localctx)
|
2073
|
+
self.enterOuterAlt(localctx, 5)
|
2074
|
+
self.state = 279
|
2075
|
+
self.match(MinisqlParser.T__2)
|
2076
|
+
self.state = 280
|
2077
|
+
self.expr()
|
2078
|
+
self.state = 281
|
2079
|
+
self.match(MinisqlParser.T__3)
|
2080
|
+
pass
|
2081
|
+
|
2082
|
+
elif la_ == 6:
|
2083
|
+
localctx = MinisqlParser.SimplePrimaryExprContext(self, localctx)
|
2084
|
+
self.enterOuterAlt(localctx, 6)
|
2085
|
+
self.state = 283
|
2086
|
+
self.simpleExpr()
|
2087
|
+
pass
|
2088
|
+
|
2089
|
+
|
2090
|
+
except RecognitionException as re:
|
2091
|
+
localctx.exception = re
|
2092
|
+
self._errHandler.reportError(self, re)
|
2093
|
+
self._errHandler.recover(self, re)
|
2094
|
+
finally:
|
2095
|
+
self.exitRule()
|
2096
|
+
return localctx
|
2097
|
+
|
2098
|
+
|
2099
|
+
class SimpleExprContext(ParserRuleContext):
|
2100
|
+
__slots__ = 'parser'
|
2101
|
+
|
2102
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2103
|
+
super().__init__(parent, invokingState)
|
2104
|
+
self.parser = parser
|
2105
|
+
|
2106
|
+
def qualifiedName(self):
|
2107
|
+
return self.getTypedRuleContext(MinisqlParser.QualifiedNameContext,0)
|
2108
|
+
|
2109
|
+
|
2110
|
+
def number(self):
|
2111
|
+
return self.getTypedRuleContext(MinisqlParser.NumberContext,0)
|
2112
|
+
|
2113
|
+
|
2114
|
+
def string(self):
|
2115
|
+
return self.getTypedRuleContext(MinisqlParser.StringContext,0)
|
2116
|
+
|
2117
|
+
|
2118
|
+
def null(self):
|
2119
|
+
return self.getTypedRuleContext(MinisqlParser.NullContext,0)
|
2120
|
+
|
2121
|
+
|
2122
|
+
def true(self):
|
2123
|
+
return self.getTypedRuleContext(MinisqlParser.TrueContext,0)
|
2124
|
+
|
2125
|
+
|
2126
|
+
def false(self):
|
2127
|
+
return self.getTypedRuleContext(MinisqlParser.FalseContext,0)
|
2128
|
+
|
2129
|
+
|
2130
|
+
def getRuleIndex(self):
|
2131
|
+
return MinisqlParser.RULE_simpleExpr
|
2132
|
+
|
2133
|
+
def enterRule(self, listener:ParseTreeListener):
|
2134
|
+
if hasattr( listener, "enterSimpleExpr" ):
|
2135
|
+
listener.enterSimpleExpr(self)
|
2136
|
+
|
2137
|
+
def exitRule(self, listener:ParseTreeListener):
|
2138
|
+
if hasattr( listener, "exitSimpleExpr" ):
|
2139
|
+
listener.exitSimpleExpr(self)
|
2140
|
+
|
2141
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2142
|
+
if hasattr( visitor, "visitSimpleExpr" ):
|
2143
|
+
return visitor.visitSimpleExpr(self)
|
2144
|
+
else:
|
2145
|
+
return visitor.visitChildren(self)
|
2146
|
+
|
2147
|
+
|
2148
|
+
|
2149
|
+
|
2150
|
+
def simpleExpr(self):
|
2151
|
+
|
2152
|
+
localctx = MinisqlParser.SimpleExprContext(self, self._ctx, self.state)
|
2153
|
+
self.enterRule(localctx, 26, self.RULE_simpleExpr)
|
2154
|
+
try:
|
2155
|
+
self.state = 292
|
2156
|
+
self._errHandler.sync(self)
|
2157
|
+
token = self._input.LA(1)
|
2158
|
+
if token in [40, 50, 62, 63]:
|
2159
|
+
self.enterOuterAlt(localctx, 1)
|
2160
|
+
self.state = 286
|
2161
|
+
self.qualifiedName()
|
2162
|
+
pass
|
2163
|
+
elif token in [59, 60, 61]:
|
2164
|
+
self.enterOuterAlt(localctx, 2)
|
2165
|
+
self.state = 287
|
2166
|
+
self.number()
|
2167
|
+
pass
|
2168
|
+
elif token in [58]:
|
2169
|
+
self.enterOuterAlt(localctx, 3)
|
2170
|
+
self.state = 288
|
2171
|
+
self.string()
|
2172
|
+
pass
|
2173
|
+
elif token in [44]:
|
2174
|
+
self.enterOuterAlt(localctx, 4)
|
2175
|
+
self.state = 289
|
2176
|
+
self.null()
|
2177
|
+
pass
|
2178
|
+
elif token in [53]:
|
2179
|
+
self.enterOuterAlt(localctx, 5)
|
2180
|
+
self.state = 290
|
2181
|
+
self.true()
|
2182
|
+
pass
|
2183
|
+
elif token in [31]:
|
2184
|
+
self.enterOuterAlt(localctx, 6)
|
2185
|
+
self.state = 291
|
2186
|
+
self.false()
|
2187
|
+
pass
|
2188
|
+
else:
|
2189
|
+
raise NoViableAltException(self)
|
2190
|
+
|
2191
|
+
except RecognitionException as re:
|
2192
|
+
localctx.exception = re
|
2193
|
+
self._errHandler.reportError(self, re)
|
2194
|
+
self._errHandler.recover(self, re)
|
2195
|
+
finally:
|
2196
|
+
self.exitRule()
|
2197
|
+
return localctx
|
2198
|
+
|
2199
|
+
|
2200
|
+
class CaseItemContext(ParserRuleContext):
|
2201
|
+
__slots__ = 'parser'
|
2202
|
+
|
2203
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2204
|
+
super().__init__(parent, invokingState)
|
2205
|
+
self.parser = parser
|
2206
|
+
|
2207
|
+
def WHEN(self):
|
2208
|
+
return self.getToken(MinisqlParser.WHEN, 0)
|
2209
|
+
|
2210
|
+
def expr(self, i:int=None):
|
2211
|
+
if i is None:
|
2212
|
+
return self.getTypedRuleContexts(MinisqlParser.ExprContext)
|
2213
|
+
else:
|
2214
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,i)
|
2215
|
+
|
2216
|
+
|
2217
|
+
def THEN(self):
|
2218
|
+
return self.getToken(MinisqlParser.THEN, 0)
|
2219
|
+
|
2220
|
+
def getRuleIndex(self):
|
2221
|
+
return MinisqlParser.RULE_caseItem
|
2222
|
+
|
2223
|
+
def enterRule(self, listener:ParseTreeListener):
|
2224
|
+
if hasattr( listener, "enterCaseItem" ):
|
2225
|
+
listener.enterCaseItem(self)
|
2226
|
+
|
2227
|
+
def exitRule(self, listener:ParseTreeListener):
|
2228
|
+
if hasattr( listener, "exitCaseItem" ):
|
2229
|
+
listener.exitCaseItem(self)
|
2230
|
+
|
2231
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2232
|
+
if hasattr( visitor, "visitCaseItem" ):
|
2233
|
+
return visitor.visitCaseItem(self)
|
2234
|
+
else:
|
2235
|
+
return visitor.visitChildren(self)
|
2236
|
+
|
2237
|
+
|
2238
|
+
|
2239
|
+
|
2240
|
+
def caseItem(self):
|
2241
|
+
|
2242
|
+
localctx = MinisqlParser.CaseItemContext(self, self._ctx, self.state)
|
2243
|
+
self.enterRule(localctx, 28, self.RULE_caseItem)
|
2244
|
+
try:
|
2245
|
+
self.enterOuterAlt(localctx, 1)
|
2246
|
+
self.state = 294
|
2247
|
+
self.match(MinisqlParser.WHEN)
|
2248
|
+
self.state = 295
|
2249
|
+
self.expr()
|
2250
|
+
self.state = 296
|
2251
|
+
self.match(MinisqlParser.THEN)
|
2252
|
+
self.state = 297
|
2253
|
+
self.expr()
|
2254
|
+
except RecognitionException as re:
|
2255
|
+
localctx.exception = re
|
2256
|
+
self._errHandler.reportError(self, re)
|
2257
|
+
self._errHandler.recover(self, re)
|
2258
|
+
finally:
|
2259
|
+
self.exitRule()
|
2260
|
+
return localctx
|
2261
|
+
|
2262
|
+
|
2263
|
+
class OverContext(ParserRuleContext):
|
2264
|
+
__slots__ = 'parser'
|
2265
|
+
|
2266
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2267
|
+
super().__init__(parent, invokingState)
|
2268
|
+
self.parser = parser
|
2269
|
+
|
2270
|
+
def OVER(self):
|
2271
|
+
return self.getToken(MinisqlParser.OVER, 0)
|
2272
|
+
|
2273
|
+
def ORDER(self):
|
2274
|
+
return self.getToken(MinisqlParser.ORDER, 0)
|
2275
|
+
|
2276
|
+
def BY(self):
|
2277
|
+
return self.getToken(MinisqlParser.BY, 0)
|
2278
|
+
|
2279
|
+
def sortItem(self, i:int=None):
|
2280
|
+
if i is None:
|
2281
|
+
return self.getTypedRuleContexts(MinisqlParser.SortItemContext)
|
2282
|
+
else:
|
2283
|
+
return self.getTypedRuleContext(MinisqlParser.SortItemContext,i)
|
2284
|
+
|
2285
|
+
|
2286
|
+
def getRuleIndex(self):
|
2287
|
+
return MinisqlParser.RULE_over
|
2288
|
+
|
2289
|
+
def enterRule(self, listener:ParseTreeListener):
|
2290
|
+
if hasattr( listener, "enterOver" ):
|
2291
|
+
listener.enterOver(self)
|
2292
|
+
|
2293
|
+
def exitRule(self, listener:ParseTreeListener):
|
2294
|
+
if hasattr( listener, "exitOver" ):
|
2295
|
+
listener.exitOver(self)
|
2296
|
+
|
2297
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2298
|
+
if hasattr( visitor, "visitOver" ):
|
2299
|
+
return visitor.visitOver(self)
|
2300
|
+
else:
|
2301
|
+
return visitor.visitChildren(self)
|
2302
|
+
|
2303
|
+
|
2304
|
+
|
2305
|
+
|
2306
|
+
def over(self):
|
2307
|
+
|
2308
|
+
localctx = MinisqlParser.OverContext(self, self._ctx, self.state)
|
2309
|
+
self.enterRule(localctx, 30, self.RULE_over)
|
2310
|
+
self._la = 0 # Token type
|
2311
|
+
try:
|
2312
|
+
self.enterOuterAlt(localctx, 1)
|
2313
|
+
self.state = 299
|
2314
|
+
self.match(MinisqlParser.OVER)
|
2315
|
+
self.state = 300
|
2316
|
+
self.match(MinisqlParser.T__2)
|
2317
|
+
self.state = 311
|
2318
|
+
self._errHandler.sync(self)
|
2319
|
+
_la = self._input.LA(1)
|
2320
|
+
if _la==47:
|
2321
|
+
self.state = 301
|
2322
|
+
self.match(MinisqlParser.ORDER)
|
2323
|
+
self.state = 302
|
2324
|
+
self.match(MinisqlParser.BY)
|
2325
|
+
self.state = 303
|
2326
|
+
self.sortItem()
|
2327
|
+
self.state = 308
|
2328
|
+
self._errHandler.sync(self)
|
2329
|
+
_la = self._input.LA(1)
|
2330
|
+
while _la==2:
|
2331
|
+
self.state = 304
|
2332
|
+
self.match(MinisqlParser.T__1)
|
2333
|
+
self.state = 305
|
2334
|
+
self.sortItem()
|
2335
|
+
self.state = 310
|
2336
|
+
self._errHandler.sync(self)
|
2337
|
+
_la = self._input.LA(1)
|
2338
|
+
|
2339
|
+
|
2340
|
+
|
2341
|
+
self.state = 313
|
2342
|
+
self.match(MinisqlParser.T__3)
|
2343
|
+
except RecognitionException as re:
|
2344
|
+
localctx.exception = re
|
2345
|
+
self._errHandler.reportError(self, re)
|
2346
|
+
self._errHandler.recover(self, re)
|
2347
|
+
finally:
|
2348
|
+
self.exitRule()
|
2349
|
+
return localctx
|
2350
|
+
|
2351
|
+
|
2352
|
+
class SortItemContext(ParserRuleContext):
|
2353
|
+
__slots__ = 'parser'
|
2354
|
+
|
2355
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2356
|
+
super().__init__(parent, invokingState)
|
2357
|
+
self.parser = parser
|
2358
|
+
self.direction = None # Token
|
2359
|
+
|
2360
|
+
def expr(self):
|
2361
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,0)
|
2362
|
+
|
2363
|
+
|
2364
|
+
def ASC(self):
|
2365
|
+
return self.getToken(MinisqlParser.ASC, 0)
|
2366
|
+
|
2367
|
+
def DESC(self):
|
2368
|
+
return self.getToken(MinisqlParser.DESC, 0)
|
2369
|
+
|
2370
|
+
def getRuleIndex(self):
|
2371
|
+
return MinisqlParser.RULE_sortItem
|
2372
|
+
|
2373
|
+
def enterRule(self, listener:ParseTreeListener):
|
2374
|
+
if hasattr( listener, "enterSortItem" ):
|
2375
|
+
listener.enterSortItem(self)
|
2376
|
+
|
2377
|
+
def exitRule(self, listener:ParseTreeListener):
|
2378
|
+
if hasattr( listener, "exitSortItem" ):
|
2379
|
+
listener.exitSortItem(self)
|
2380
|
+
|
2381
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2382
|
+
if hasattr( visitor, "visitSortItem" ):
|
2383
|
+
return visitor.visitSortItem(self)
|
2384
|
+
else:
|
2385
|
+
return visitor.visitChildren(self)
|
2386
|
+
|
2387
|
+
|
2388
|
+
|
2389
|
+
|
2390
|
+
def sortItem(self):
|
2391
|
+
|
2392
|
+
localctx = MinisqlParser.SortItemContext(self, self._ctx, self.state)
|
2393
|
+
self.enterRule(localctx, 32, self.RULE_sortItem)
|
2394
|
+
self._la = 0 # Token type
|
2395
|
+
try:
|
2396
|
+
self.enterOuterAlt(localctx, 1)
|
2397
|
+
self.state = 315
|
2398
|
+
self.expr()
|
2399
|
+
self.state = 317
|
2400
|
+
self._errHandler.sync(self)
|
2401
|
+
_la = self._input.LA(1)
|
2402
|
+
if _la==23 or _la==27:
|
2403
|
+
self.state = 316
|
2404
|
+
localctx.direction = self._input.LT(1)
|
2405
|
+
_la = self._input.LA(1)
|
2406
|
+
if not(_la==23 or _la==27):
|
2407
|
+
localctx.direction = self._errHandler.recoverInline(self)
|
2408
|
+
else:
|
2409
|
+
self._errHandler.reportMatch(self)
|
2410
|
+
self.consume()
|
2411
|
+
|
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.exitRule()
|
2419
|
+
return localctx
|
2420
|
+
|
2421
|
+
|
2422
|
+
class RelationContext(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 MinisqlParser.RULE_relation
|
2432
|
+
|
2433
|
+
|
2434
|
+
def copyFrom(self, ctx:ParserRuleContext):
|
2435
|
+
super().copyFrom(ctx)
|
2436
|
+
|
2437
|
+
|
2438
|
+
class AliasedRelationContext(RelationContext):
|
2439
|
+
|
2440
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.RelationContext
|
2441
|
+
super().__init__(parser)
|
2442
|
+
self.copyFrom(ctx)
|
2443
|
+
|
2444
|
+
def relation(self):
|
2445
|
+
return self.getTypedRuleContext(MinisqlParser.RelationContext,0)
|
2446
|
+
|
2447
|
+
def ident(self):
|
2448
|
+
return self.getTypedRuleContext(MinisqlParser.IdentContext,0)
|
2449
|
+
|
2450
|
+
def AS(self):
|
2451
|
+
return self.getToken(MinisqlParser.AS, 0)
|
2452
|
+
|
2453
|
+
def enterRule(self, listener:ParseTreeListener):
|
2454
|
+
if hasattr( listener, "enterAliasedRelation" ):
|
2455
|
+
listener.enterAliasedRelation(self)
|
2456
|
+
|
2457
|
+
def exitRule(self, listener:ParseTreeListener):
|
2458
|
+
if hasattr( listener, "exitAliasedRelation" ):
|
2459
|
+
listener.exitAliasedRelation(self)
|
2460
|
+
|
2461
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2462
|
+
if hasattr( visitor, "visitAliasedRelation" ):
|
2463
|
+
return visitor.visitAliasedRelation(self)
|
2464
|
+
else:
|
2465
|
+
return visitor.visitChildren(self)
|
2466
|
+
|
2467
|
+
|
2468
|
+
class JoinRelationContext(RelationContext):
|
2469
|
+
|
2470
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.RelationContext
|
2471
|
+
super().__init__(parser)
|
2472
|
+
self.left = None # RelationContext
|
2473
|
+
self.ty = None # JoinTypeContext
|
2474
|
+
self.right = None # RelationContext
|
2475
|
+
self.cond = None # BooleanExprContext
|
2476
|
+
self.copyFrom(ctx)
|
2477
|
+
|
2478
|
+
def JOIN(self):
|
2479
|
+
return self.getToken(MinisqlParser.JOIN, 0)
|
2480
|
+
def relation(self, i:int=None):
|
2481
|
+
if i is None:
|
2482
|
+
return self.getTypedRuleContexts(MinisqlParser.RelationContext)
|
2483
|
+
else:
|
2484
|
+
return self.getTypedRuleContext(MinisqlParser.RelationContext,i)
|
2485
|
+
|
2486
|
+
def ON(self):
|
2487
|
+
return self.getToken(MinisqlParser.ON, 0)
|
2488
|
+
def joinType(self):
|
2489
|
+
return self.getTypedRuleContext(MinisqlParser.JoinTypeContext,0)
|
2490
|
+
|
2491
|
+
def booleanExpr(self):
|
2492
|
+
return self.getTypedRuleContext(MinisqlParser.BooleanExprContext,0)
|
2493
|
+
|
2494
|
+
|
2495
|
+
def enterRule(self, listener:ParseTreeListener):
|
2496
|
+
if hasattr( listener, "enterJoinRelation" ):
|
2497
|
+
listener.enterJoinRelation(self)
|
2498
|
+
|
2499
|
+
def exitRule(self, listener:ParseTreeListener):
|
2500
|
+
if hasattr( listener, "exitJoinRelation" ):
|
2501
|
+
listener.exitJoinRelation(self)
|
2502
|
+
|
2503
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2504
|
+
if hasattr( visitor, "visitJoinRelation" ):
|
2505
|
+
return visitor.visitJoinRelation(self)
|
2506
|
+
else:
|
2507
|
+
return visitor.visitChildren(self)
|
2508
|
+
|
2509
|
+
|
2510
|
+
class SelectRelationContext(RelationContext):
|
2511
|
+
|
2512
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.RelationContext
|
2513
|
+
super().__init__(parser)
|
2514
|
+
self.copyFrom(ctx)
|
2515
|
+
|
2516
|
+
def select(self):
|
2517
|
+
return self.getTypedRuleContext(MinisqlParser.SelectContext,0)
|
2518
|
+
|
2519
|
+
|
2520
|
+
def enterRule(self, listener:ParseTreeListener):
|
2521
|
+
if hasattr( listener, "enterSelectRelation" ):
|
2522
|
+
listener.enterSelectRelation(self)
|
2523
|
+
|
2524
|
+
def exitRule(self, listener:ParseTreeListener):
|
2525
|
+
if hasattr( listener, "exitSelectRelation" ):
|
2526
|
+
listener.exitSelectRelation(self)
|
2527
|
+
|
2528
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2529
|
+
if hasattr( visitor, "visitSelectRelation" ):
|
2530
|
+
return visitor.visitSelectRelation(self)
|
2531
|
+
else:
|
2532
|
+
return visitor.visitChildren(self)
|
2533
|
+
|
2534
|
+
|
2535
|
+
class TableRelationContext(RelationContext):
|
2536
|
+
|
2537
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.RelationContext
|
2538
|
+
super().__init__(parser)
|
2539
|
+
self.copyFrom(ctx)
|
2540
|
+
|
2541
|
+
def qualifiedName(self):
|
2542
|
+
return self.getTypedRuleContext(MinisqlParser.QualifiedNameContext,0)
|
2543
|
+
|
2544
|
+
|
2545
|
+
def enterRule(self, listener:ParseTreeListener):
|
2546
|
+
if hasattr( listener, "enterTableRelation" ):
|
2547
|
+
listener.enterTableRelation(self)
|
2548
|
+
|
2549
|
+
def exitRule(self, listener:ParseTreeListener):
|
2550
|
+
if hasattr( listener, "exitTableRelation" ):
|
2551
|
+
listener.exitTableRelation(self)
|
2552
|
+
|
2553
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2554
|
+
if hasattr( visitor, "visitTableRelation" ):
|
2555
|
+
return visitor.visitTableRelation(self)
|
2556
|
+
else:
|
2557
|
+
return visitor.visitChildren(self)
|
2558
|
+
|
2559
|
+
|
2560
|
+
class ParenRelationContext(RelationContext):
|
2561
|
+
|
2562
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.RelationContext
|
2563
|
+
super().__init__(parser)
|
2564
|
+
self.copyFrom(ctx)
|
2565
|
+
|
2566
|
+
def relation(self):
|
2567
|
+
return self.getTypedRuleContext(MinisqlParser.RelationContext,0)
|
2568
|
+
|
2569
|
+
|
2570
|
+
def enterRule(self, listener:ParseTreeListener):
|
2571
|
+
if hasattr( listener, "enterParenRelation" ):
|
2572
|
+
listener.enterParenRelation(self)
|
2573
|
+
|
2574
|
+
def exitRule(self, listener:ParseTreeListener):
|
2575
|
+
if hasattr( listener, "exitParenRelation" ):
|
2576
|
+
listener.exitParenRelation(self)
|
2577
|
+
|
2578
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2579
|
+
if hasattr( visitor, "visitParenRelation" ):
|
2580
|
+
return visitor.visitParenRelation(self)
|
2581
|
+
else:
|
2582
|
+
return visitor.visitChildren(self)
|
2583
|
+
|
2584
|
+
|
2585
|
+
|
2586
|
+
def relation(self, _p:int=0):
|
2587
|
+
_parentctx = self._ctx
|
2588
|
+
_parentState = self.state
|
2589
|
+
localctx = MinisqlParser.RelationContext(self, self._ctx, _parentState)
|
2590
|
+
_prevctx = localctx
|
2591
|
+
_startState = 34
|
2592
|
+
self.enterRecursionRule(localctx, 34, self.RULE_relation, _p)
|
2593
|
+
self._la = 0 # Token type
|
2594
|
+
try:
|
2595
|
+
self.enterOuterAlt(localctx, 1)
|
2596
|
+
self.state = 329
|
2597
|
+
self._errHandler.sync(self)
|
2598
|
+
la_ = self._interp.adaptivePredict(self._input,39,self._ctx)
|
2599
|
+
if la_ == 1:
|
2600
|
+
localctx = MinisqlParser.SelectRelationContext(self, localctx)
|
2601
|
+
self._ctx = localctx
|
2602
|
+
_prevctx = localctx
|
2603
|
+
|
2604
|
+
self.state = 320
|
2605
|
+
self.match(MinisqlParser.T__2)
|
2606
|
+
self.state = 321
|
2607
|
+
self.select()
|
2608
|
+
self.state = 322
|
2609
|
+
self.match(MinisqlParser.T__3)
|
2610
|
+
pass
|
2611
|
+
|
2612
|
+
elif la_ == 2:
|
2613
|
+
localctx = MinisqlParser.ParenRelationContext(self, localctx)
|
2614
|
+
self._ctx = localctx
|
2615
|
+
_prevctx = localctx
|
2616
|
+
self.state = 324
|
2617
|
+
self.match(MinisqlParser.T__2)
|
2618
|
+
self.state = 325
|
2619
|
+
self.relation(0)
|
2620
|
+
self.state = 326
|
2621
|
+
self.match(MinisqlParser.T__3)
|
2622
|
+
pass
|
2623
|
+
|
2624
|
+
elif la_ == 3:
|
2625
|
+
localctx = MinisqlParser.TableRelationContext(self, localctx)
|
2626
|
+
self._ctx = localctx
|
2627
|
+
_prevctx = localctx
|
2628
|
+
self.state = 328
|
2629
|
+
self.qualifiedName()
|
2630
|
+
pass
|
2631
|
+
|
2632
|
+
|
2633
|
+
self._ctx.stop = self._input.LT(-1)
|
2634
|
+
self.state = 348
|
2635
|
+
self._errHandler.sync(self)
|
2636
|
+
_alt = self._interp.adaptivePredict(self._input,44,self._ctx)
|
2637
|
+
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
|
2638
|
+
if _alt==1:
|
2639
|
+
if self._parseListeners is not None:
|
2640
|
+
self.triggerExitRuleEvent()
|
2641
|
+
_prevctx = localctx
|
2642
|
+
self.state = 346
|
2643
|
+
self._errHandler.sync(self)
|
2644
|
+
la_ = self._interp.adaptivePredict(self._input,43,self._ctx)
|
2645
|
+
if la_ == 1:
|
2646
|
+
localctx = MinisqlParser.AliasedRelationContext(self, MinisqlParser.RelationContext(self, _parentctx, _parentState))
|
2647
|
+
self.pushNewRecursionContext(localctx, _startState, self.RULE_relation)
|
2648
|
+
self.state = 331
|
2649
|
+
if not self.precpred(self._ctx, 5):
|
2650
|
+
from antlr4.error.Errors import FailedPredicateException
|
2651
|
+
raise FailedPredicateException(self, "self.precpred(self._ctx, 5)")
|
2652
|
+
self.state = 333
|
2653
|
+
self._errHandler.sync(self)
|
2654
|
+
_la = self._input.LA(1)
|
2655
|
+
if _la==22:
|
2656
|
+
self.state = 332
|
2657
|
+
self.match(MinisqlParser.AS)
|
2658
|
+
|
2659
|
+
|
2660
|
+
self.state = 335
|
2661
|
+
self.ident()
|
2662
|
+
pass
|
2663
|
+
|
2664
|
+
elif la_ == 2:
|
2665
|
+
localctx = MinisqlParser.JoinRelationContext(self, MinisqlParser.RelationContext(self, _parentctx, _parentState))
|
2666
|
+
localctx.left = _prevctx
|
2667
|
+
self.pushNewRecursionContext(localctx, _startState, self.RULE_relation)
|
2668
|
+
self.state = 336
|
2669
|
+
if not self.precpred(self._ctx, 4):
|
2670
|
+
from antlr4.error.Errors import FailedPredicateException
|
2671
|
+
raise FailedPredicateException(self, "self.precpred(self._ctx, 4)")
|
2672
|
+
self.state = 338
|
2673
|
+
self._errHandler.sync(self)
|
2674
|
+
_la = self._input.LA(1)
|
2675
|
+
if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1131543560978432) != 0):
|
2676
|
+
self.state = 337
|
2677
|
+
localctx.ty = self.joinType()
|
2678
|
+
|
2679
|
+
|
2680
|
+
self.state = 340
|
2681
|
+
self.match(MinisqlParser.JOIN)
|
2682
|
+
self.state = 341
|
2683
|
+
localctx.right = self.relation(0)
|
2684
|
+
self.state = 344
|
2685
|
+
self._errHandler.sync(self)
|
2686
|
+
la_ = self._interp.adaptivePredict(self._input,42,self._ctx)
|
2687
|
+
if la_ == 1:
|
2688
|
+
self.state = 342
|
2689
|
+
self.match(MinisqlParser.ON)
|
2690
|
+
self.state = 343
|
2691
|
+
localctx.cond = self.booleanExpr(0)
|
2692
|
+
|
2693
|
+
|
2694
|
+
pass
|
2695
|
+
|
2696
|
+
|
2697
|
+
self.state = 350
|
2698
|
+
self._errHandler.sync(self)
|
2699
|
+
_alt = self._interp.adaptivePredict(self._input,44,self._ctx)
|
2700
|
+
|
2701
|
+
except RecognitionException as re:
|
2702
|
+
localctx.exception = re
|
2703
|
+
self._errHandler.reportError(self, re)
|
2704
|
+
self._errHandler.recover(self, re)
|
2705
|
+
finally:
|
2706
|
+
self.unrollRecursionContexts(_parentctx)
|
2707
|
+
return localctx
|
2708
|
+
|
2709
|
+
|
2710
|
+
class GroupByContext(ParserRuleContext):
|
2711
|
+
__slots__ = 'parser'
|
2712
|
+
|
2713
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2714
|
+
super().__init__(parent, invokingState)
|
2715
|
+
self.parser = parser
|
2716
|
+
|
2717
|
+
def expr(self, i:int=None):
|
2718
|
+
if i is None:
|
2719
|
+
return self.getTypedRuleContexts(MinisqlParser.ExprContext)
|
2720
|
+
else:
|
2721
|
+
return self.getTypedRuleContext(MinisqlParser.ExprContext,i)
|
2722
|
+
|
2723
|
+
|
2724
|
+
def getRuleIndex(self):
|
2725
|
+
return MinisqlParser.RULE_groupBy
|
2726
|
+
|
2727
|
+
def enterRule(self, listener:ParseTreeListener):
|
2728
|
+
if hasattr( listener, "enterGroupBy" ):
|
2729
|
+
listener.enterGroupBy(self)
|
2730
|
+
|
2731
|
+
def exitRule(self, listener:ParseTreeListener):
|
2732
|
+
if hasattr( listener, "exitGroupBy" ):
|
2733
|
+
listener.exitGroupBy(self)
|
2734
|
+
|
2735
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2736
|
+
if hasattr( visitor, "visitGroupBy" ):
|
2737
|
+
return visitor.visitGroupBy(self)
|
2738
|
+
else:
|
2739
|
+
return visitor.visitChildren(self)
|
2740
|
+
|
2741
|
+
|
2742
|
+
|
2743
|
+
|
2744
|
+
def groupBy(self):
|
2745
|
+
|
2746
|
+
localctx = MinisqlParser.GroupByContext(self, self._ctx, self.state)
|
2747
|
+
self.enterRule(localctx, 36, self.RULE_groupBy)
|
2748
|
+
self._la = 0 # Token type
|
2749
|
+
try:
|
2750
|
+
self.enterOuterAlt(localctx, 1)
|
2751
|
+
self.state = 351
|
2752
|
+
self.expr()
|
2753
|
+
self.state = 356
|
2754
|
+
self._errHandler.sync(self)
|
2755
|
+
_la = self._input.LA(1)
|
2756
|
+
while _la==2:
|
2757
|
+
self.state = 352
|
2758
|
+
self.match(MinisqlParser.T__1)
|
2759
|
+
self.state = 353
|
2760
|
+
self.expr()
|
2761
|
+
self.state = 358
|
2762
|
+
self._errHandler.sync(self)
|
2763
|
+
_la = self._input.LA(1)
|
2764
|
+
|
2765
|
+
except RecognitionException as re:
|
2766
|
+
localctx.exception = re
|
2767
|
+
self._errHandler.reportError(self, re)
|
2768
|
+
self._errHandler.recover(self, re)
|
2769
|
+
finally:
|
2770
|
+
self.exitRule()
|
2771
|
+
return localctx
|
2772
|
+
|
2773
|
+
|
2774
|
+
class QualifiedNameContext(ParserRuleContext):
|
2775
|
+
__slots__ = 'parser'
|
2776
|
+
|
2777
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2778
|
+
super().__init__(parent, invokingState)
|
2779
|
+
self.parser = parser
|
2780
|
+
|
2781
|
+
def ident(self, i:int=None):
|
2782
|
+
if i is None:
|
2783
|
+
return self.getTypedRuleContexts(MinisqlParser.IdentContext)
|
2784
|
+
else:
|
2785
|
+
return self.getTypedRuleContext(MinisqlParser.IdentContext,i)
|
2786
|
+
|
2787
|
+
|
2788
|
+
def getRuleIndex(self):
|
2789
|
+
return MinisqlParser.RULE_qualifiedName
|
2790
|
+
|
2791
|
+
def enterRule(self, listener:ParseTreeListener):
|
2792
|
+
if hasattr( listener, "enterQualifiedName" ):
|
2793
|
+
listener.enterQualifiedName(self)
|
2794
|
+
|
2795
|
+
def exitRule(self, listener:ParseTreeListener):
|
2796
|
+
if hasattr( listener, "exitQualifiedName" ):
|
2797
|
+
listener.exitQualifiedName(self)
|
2798
|
+
|
2799
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2800
|
+
if hasattr( visitor, "visitQualifiedName" ):
|
2801
|
+
return visitor.visitQualifiedName(self)
|
2802
|
+
else:
|
2803
|
+
return visitor.visitChildren(self)
|
2804
|
+
|
2805
|
+
|
2806
|
+
|
2807
|
+
|
2808
|
+
def qualifiedName(self):
|
2809
|
+
|
2810
|
+
localctx = MinisqlParser.QualifiedNameContext(self, self._ctx, self.state)
|
2811
|
+
self.enterRule(localctx, 38, self.RULE_qualifiedName)
|
2812
|
+
try:
|
2813
|
+
self.enterOuterAlt(localctx, 1)
|
2814
|
+
self.state = 359
|
2815
|
+
self.ident()
|
2816
|
+
self.state = 364
|
2817
|
+
self._errHandler.sync(self)
|
2818
|
+
_alt = self._interp.adaptivePredict(self._input,46,self._ctx)
|
2819
|
+
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
|
2820
|
+
if _alt==1:
|
2821
|
+
self.state = 360
|
2822
|
+
self.match(MinisqlParser.T__6)
|
2823
|
+
self.state = 361
|
2824
|
+
self.ident()
|
2825
|
+
self.state = 366
|
2826
|
+
self._errHandler.sync(self)
|
2827
|
+
_alt = self._interp.adaptivePredict(self._input,46,self._ctx)
|
2828
|
+
|
2829
|
+
except RecognitionException as re:
|
2830
|
+
localctx.exception = re
|
2831
|
+
self._errHandler.reportError(self, re)
|
2832
|
+
self._errHandler.recover(self, re)
|
2833
|
+
finally:
|
2834
|
+
self.exitRule()
|
2835
|
+
return localctx
|
2836
|
+
|
2837
|
+
|
2838
|
+
class IdentListContext(ParserRuleContext):
|
2839
|
+
__slots__ = 'parser'
|
2840
|
+
|
2841
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2842
|
+
super().__init__(parent, invokingState)
|
2843
|
+
self.parser = parser
|
2844
|
+
|
2845
|
+
def ident(self, i:int=None):
|
2846
|
+
if i is None:
|
2847
|
+
return self.getTypedRuleContexts(MinisqlParser.IdentContext)
|
2848
|
+
else:
|
2849
|
+
return self.getTypedRuleContext(MinisqlParser.IdentContext,i)
|
2850
|
+
|
2851
|
+
|
2852
|
+
def getRuleIndex(self):
|
2853
|
+
return MinisqlParser.RULE_identList
|
2854
|
+
|
2855
|
+
def enterRule(self, listener:ParseTreeListener):
|
2856
|
+
if hasattr( listener, "enterIdentList" ):
|
2857
|
+
listener.enterIdentList(self)
|
2858
|
+
|
2859
|
+
def exitRule(self, listener:ParseTreeListener):
|
2860
|
+
if hasattr( listener, "exitIdentList" ):
|
2861
|
+
listener.exitIdentList(self)
|
2862
|
+
|
2863
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2864
|
+
if hasattr( visitor, "visitIdentList" ):
|
2865
|
+
return visitor.visitIdentList(self)
|
2866
|
+
else:
|
2867
|
+
return visitor.visitChildren(self)
|
2868
|
+
|
2869
|
+
|
2870
|
+
|
2871
|
+
|
2872
|
+
def identList(self):
|
2873
|
+
|
2874
|
+
localctx = MinisqlParser.IdentListContext(self, self._ctx, self.state)
|
2875
|
+
self.enterRule(localctx, 40, self.RULE_identList)
|
2876
|
+
self._la = 0 # Token type
|
2877
|
+
try:
|
2878
|
+
self.enterOuterAlt(localctx, 1)
|
2879
|
+
self.state = 367
|
2880
|
+
self.ident()
|
2881
|
+
self.state = 372
|
2882
|
+
self._errHandler.sync(self)
|
2883
|
+
_la = self._input.LA(1)
|
2884
|
+
while _la==2:
|
2885
|
+
self.state = 368
|
2886
|
+
self.match(MinisqlParser.T__1)
|
2887
|
+
self.state = 369
|
2888
|
+
self.ident()
|
2889
|
+
self.state = 374
|
2890
|
+
self._errHandler.sync(self)
|
2891
|
+
_la = self._input.LA(1)
|
2892
|
+
|
2893
|
+
except RecognitionException as re:
|
2894
|
+
localctx.exception = re
|
2895
|
+
self._errHandler.reportError(self, re)
|
2896
|
+
self._errHandler.recover(self, re)
|
2897
|
+
finally:
|
2898
|
+
self.exitRule()
|
2899
|
+
return localctx
|
2900
|
+
|
2901
|
+
|
2902
|
+
class IdentContext(ParserRuleContext):
|
2903
|
+
__slots__ = 'parser'
|
2904
|
+
|
2905
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2906
|
+
super().__init__(parent, invokingState)
|
2907
|
+
self.parser = parser
|
2908
|
+
|
2909
|
+
def unquotedIdent(self):
|
2910
|
+
return self.getTypedRuleContext(MinisqlParser.UnquotedIdentContext,0)
|
2911
|
+
|
2912
|
+
|
2913
|
+
def quotedIdent(self):
|
2914
|
+
return self.getTypedRuleContext(MinisqlParser.QuotedIdentContext,0)
|
2915
|
+
|
2916
|
+
|
2917
|
+
def getRuleIndex(self):
|
2918
|
+
return MinisqlParser.RULE_ident
|
2919
|
+
|
2920
|
+
def enterRule(self, listener:ParseTreeListener):
|
2921
|
+
if hasattr( listener, "enterIdent" ):
|
2922
|
+
listener.enterIdent(self)
|
2923
|
+
|
2924
|
+
def exitRule(self, listener:ParseTreeListener):
|
2925
|
+
if hasattr( listener, "exitIdent" ):
|
2926
|
+
listener.exitIdent(self)
|
2927
|
+
|
2928
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2929
|
+
if hasattr( visitor, "visitIdent" ):
|
2930
|
+
return visitor.visitIdent(self)
|
2931
|
+
else:
|
2932
|
+
return visitor.visitChildren(self)
|
2933
|
+
|
2934
|
+
|
2935
|
+
|
2936
|
+
|
2937
|
+
def ident(self):
|
2938
|
+
|
2939
|
+
localctx = MinisqlParser.IdentContext(self, self._ctx, self.state)
|
2940
|
+
self.enterRule(localctx, 42, self.RULE_ident)
|
2941
|
+
try:
|
2942
|
+
self.state = 377
|
2943
|
+
self._errHandler.sync(self)
|
2944
|
+
token = self._input.LA(1)
|
2945
|
+
if token in [40, 50, 62]:
|
2946
|
+
self.enterOuterAlt(localctx, 1)
|
2947
|
+
self.state = 375
|
2948
|
+
self.unquotedIdent()
|
2949
|
+
pass
|
2950
|
+
elif token in [63]:
|
2951
|
+
self.enterOuterAlt(localctx, 2)
|
2952
|
+
self.state = 376
|
2953
|
+
self.quotedIdent()
|
2954
|
+
pass
|
2955
|
+
else:
|
2956
|
+
raise NoViableAltException(self)
|
2957
|
+
|
2958
|
+
except RecognitionException as re:
|
2959
|
+
localctx.exception = re
|
2960
|
+
self._errHandler.reportError(self, re)
|
2961
|
+
self._errHandler.recover(self, re)
|
2962
|
+
finally:
|
2963
|
+
self.exitRule()
|
2964
|
+
return localctx
|
2965
|
+
|
2966
|
+
|
2967
|
+
class QuotedIdentContext(ParserRuleContext):
|
2968
|
+
__slots__ = 'parser'
|
2969
|
+
|
2970
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
2971
|
+
super().__init__(parent, invokingState)
|
2972
|
+
self.parser = parser
|
2973
|
+
|
2974
|
+
def QUOTED_IDENT(self):
|
2975
|
+
return self.getToken(MinisqlParser.QUOTED_IDENT, 0)
|
2976
|
+
|
2977
|
+
def getRuleIndex(self):
|
2978
|
+
return MinisqlParser.RULE_quotedIdent
|
2979
|
+
|
2980
|
+
def enterRule(self, listener:ParseTreeListener):
|
2981
|
+
if hasattr( listener, "enterQuotedIdent" ):
|
2982
|
+
listener.enterQuotedIdent(self)
|
2983
|
+
|
2984
|
+
def exitRule(self, listener:ParseTreeListener):
|
2985
|
+
if hasattr( listener, "exitQuotedIdent" ):
|
2986
|
+
listener.exitQuotedIdent(self)
|
2987
|
+
|
2988
|
+
def accept(self, visitor:ParseTreeVisitor):
|
2989
|
+
if hasattr( visitor, "visitQuotedIdent" ):
|
2990
|
+
return visitor.visitQuotedIdent(self)
|
2991
|
+
else:
|
2992
|
+
return visitor.visitChildren(self)
|
2993
|
+
|
2994
|
+
|
2995
|
+
|
2996
|
+
|
2997
|
+
def quotedIdent(self):
|
2998
|
+
|
2999
|
+
localctx = MinisqlParser.QuotedIdentContext(self, self._ctx, self.state)
|
3000
|
+
self.enterRule(localctx, 44, self.RULE_quotedIdent)
|
3001
|
+
try:
|
3002
|
+
self.enterOuterAlt(localctx, 1)
|
3003
|
+
self.state = 379
|
3004
|
+
self.match(MinisqlParser.QUOTED_IDENT)
|
3005
|
+
except RecognitionException as re:
|
3006
|
+
localctx.exception = re
|
3007
|
+
self._errHandler.reportError(self, re)
|
3008
|
+
self._errHandler.recover(self, re)
|
3009
|
+
finally:
|
3010
|
+
self.exitRule()
|
3011
|
+
return localctx
|
3012
|
+
|
3013
|
+
|
3014
|
+
class NumberContext(ParserRuleContext):
|
3015
|
+
__slots__ = 'parser'
|
3016
|
+
|
3017
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3018
|
+
super().__init__(parent, invokingState)
|
3019
|
+
self.parser = parser
|
3020
|
+
|
3021
|
+
|
3022
|
+
def getRuleIndex(self):
|
3023
|
+
return MinisqlParser.RULE_number
|
3024
|
+
|
3025
|
+
|
3026
|
+
def copyFrom(self, ctx:ParserRuleContext):
|
3027
|
+
super().copyFrom(ctx)
|
3028
|
+
|
3029
|
+
|
3030
|
+
|
3031
|
+
class DecimalNumberContext(NumberContext):
|
3032
|
+
|
3033
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.NumberContext
|
3034
|
+
super().__init__(parser)
|
3035
|
+
self.copyFrom(ctx)
|
3036
|
+
|
3037
|
+
def DECIMAL_VALUE(self):
|
3038
|
+
return self.getToken(MinisqlParser.DECIMAL_VALUE, 0)
|
3039
|
+
|
3040
|
+
def enterRule(self, listener:ParseTreeListener):
|
3041
|
+
if hasattr( listener, "enterDecimalNumber" ):
|
3042
|
+
listener.enterDecimalNumber(self)
|
3043
|
+
|
3044
|
+
def exitRule(self, listener:ParseTreeListener):
|
3045
|
+
if hasattr( listener, "exitDecimalNumber" ):
|
3046
|
+
listener.exitDecimalNumber(self)
|
3047
|
+
|
3048
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3049
|
+
if hasattr( visitor, "visitDecimalNumber" ):
|
3050
|
+
return visitor.visitDecimalNumber(self)
|
3051
|
+
else:
|
3052
|
+
return visitor.visitChildren(self)
|
3053
|
+
|
3054
|
+
|
3055
|
+
class IntegerNumberContext(NumberContext):
|
3056
|
+
|
3057
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.NumberContext
|
3058
|
+
super().__init__(parser)
|
3059
|
+
self.copyFrom(ctx)
|
3060
|
+
|
3061
|
+
def INTEGER_VALUE(self):
|
3062
|
+
return self.getToken(MinisqlParser.INTEGER_VALUE, 0)
|
3063
|
+
|
3064
|
+
def enterRule(self, listener:ParseTreeListener):
|
3065
|
+
if hasattr( listener, "enterIntegerNumber" ):
|
3066
|
+
listener.enterIntegerNumber(self)
|
3067
|
+
|
3068
|
+
def exitRule(self, listener:ParseTreeListener):
|
3069
|
+
if hasattr( listener, "exitIntegerNumber" ):
|
3070
|
+
listener.exitIntegerNumber(self)
|
3071
|
+
|
3072
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3073
|
+
if hasattr( visitor, "visitIntegerNumber" ):
|
3074
|
+
return visitor.visitIntegerNumber(self)
|
3075
|
+
else:
|
3076
|
+
return visitor.visitChildren(self)
|
3077
|
+
|
3078
|
+
|
3079
|
+
class FloatNumberContext(NumberContext):
|
3080
|
+
|
3081
|
+
def __init__(self, parser, ctx:ParserRuleContext): # actually a MinisqlParser.NumberContext
|
3082
|
+
super().__init__(parser)
|
3083
|
+
self.copyFrom(ctx)
|
3084
|
+
|
3085
|
+
def FLOAT_VALUE(self):
|
3086
|
+
return self.getToken(MinisqlParser.FLOAT_VALUE, 0)
|
3087
|
+
|
3088
|
+
def enterRule(self, listener:ParseTreeListener):
|
3089
|
+
if hasattr( listener, "enterFloatNumber" ):
|
3090
|
+
listener.enterFloatNumber(self)
|
3091
|
+
|
3092
|
+
def exitRule(self, listener:ParseTreeListener):
|
3093
|
+
if hasattr( listener, "exitFloatNumber" ):
|
3094
|
+
listener.exitFloatNumber(self)
|
3095
|
+
|
3096
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3097
|
+
if hasattr( visitor, "visitFloatNumber" ):
|
3098
|
+
return visitor.visitFloatNumber(self)
|
3099
|
+
else:
|
3100
|
+
return visitor.visitChildren(self)
|
3101
|
+
|
3102
|
+
|
3103
|
+
|
3104
|
+
def number(self):
|
3105
|
+
|
3106
|
+
localctx = MinisqlParser.NumberContext(self, self._ctx, self.state)
|
3107
|
+
self.enterRule(localctx, 46, self.RULE_number)
|
3108
|
+
try:
|
3109
|
+
self.state = 384
|
3110
|
+
self._errHandler.sync(self)
|
3111
|
+
token = self._input.LA(1)
|
3112
|
+
if token in [59]:
|
3113
|
+
localctx = MinisqlParser.IntegerNumberContext(self, localctx)
|
3114
|
+
self.enterOuterAlt(localctx, 1)
|
3115
|
+
self.state = 381
|
3116
|
+
self.match(MinisqlParser.INTEGER_VALUE)
|
3117
|
+
pass
|
3118
|
+
elif token in [60]:
|
3119
|
+
localctx = MinisqlParser.DecimalNumberContext(self, localctx)
|
3120
|
+
self.enterOuterAlt(localctx, 2)
|
3121
|
+
self.state = 382
|
3122
|
+
self.match(MinisqlParser.DECIMAL_VALUE)
|
3123
|
+
pass
|
3124
|
+
elif token in [61]:
|
3125
|
+
localctx = MinisqlParser.FloatNumberContext(self, localctx)
|
3126
|
+
self.enterOuterAlt(localctx, 3)
|
3127
|
+
self.state = 383
|
3128
|
+
self.match(MinisqlParser.FLOAT_VALUE)
|
3129
|
+
pass
|
3130
|
+
else:
|
3131
|
+
raise NoViableAltException(self)
|
3132
|
+
|
3133
|
+
except RecognitionException as re:
|
3134
|
+
localctx.exception = re
|
3135
|
+
self._errHandler.reportError(self, re)
|
3136
|
+
self._errHandler.recover(self, re)
|
3137
|
+
finally:
|
3138
|
+
self.exitRule()
|
3139
|
+
return localctx
|
3140
|
+
|
3141
|
+
|
3142
|
+
class StringContext(ParserRuleContext):
|
3143
|
+
__slots__ = 'parser'
|
3144
|
+
|
3145
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3146
|
+
super().__init__(parent, invokingState)
|
3147
|
+
self.parser = parser
|
3148
|
+
|
3149
|
+
def STRING(self):
|
3150
|
+
return self.getToken(MinisqlParser.STRING, 0)
|
3151
|
+
|
3152
|
+
def getRuleIndex(self):
|
3153
|
+
return MinisqlParser.RULE_string
|
3154
|
+
|
3155
|
+
def enterRule(self, listener:ParseTreeListener):
|
3156
|
+
if hasattr( listener, "enterString" ):
|
3157
|
+
listener.enterString(self)
|
3158
|
+
|
3159
|
+
def exitRule(self, listener:ParseTreeListener):
|
3160
|
+
if hasattr( listener, "exitString" ):
|
3161
|
+
listener.exitString(self)
|
3162
|
+
|
3163
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3164
|
+
if hasattr( visitor, "visitString" ):
|
3165
|
+
return visitor.visitString(self)
|
3166
|
+
else:
|
3167
|
+
return visitor.visitChildren(self)
|
3168
|
+
|
3169
|
+
|
3170
|
+
|
3171
|
+
|
3172
|
+
def string(self):
|
3173
|
+
|
3174
|
+
localctx = MinisqlParser.StringContext(self, self._ctx, self.state)
|
3175
|
+
self.enterRule(localctx, 48, self.RULE_string)
|
3176
|
+
try:
|
3177
|
+
self.enterOuterAlt(localctx, 1)
|
3178
|
+
self.state = 386
|
3179
|
+
self.match(MinisqlParser.STRING)
|
3180
|
+
except RecognitionException as re:
|
3181
|
+
localctx.exception = re
|
3182
|
+
self._errHandler.reportError(self, re)
|
3183
|
+
self._errHandler.recover(self, re)
|
3184
|
+
finally:
|
3185
|
+
self.exitRule()
|
3186
|
+
return localctx
|
3187
|
+
|
3188
|
+
|
3189
|
+
class NullContext(ParserRuleContext):
|
3190
|
+
__slots__ = 'parser'
|
3191
|
+
|
3192
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3193
|
+
super().__init__(parent, invokingState)
|
3194
|
+
self.parser = parser
|
3195
|
+
|
3196
|
+
def NULL(self):
|
3197
|
+
return self.getToken(MinisqlParser.NULL, 0)
|
3198
|
+
|
3199
|
+
def getRuleIndex(self):
|
3200
|
+
return MinisqlParser.RULE_null
|
3201
|
+
|
3202
|
+
def enterRule(self, listener:ParseTreeListener):
|
3203
|
+
if hasattr( listener, "enterNull" ):
|
3204
|
+
listener.enterNull(self)
|
3205
|
+
|
3206
|
+
def exitRule(self, listener:ParseTreeListener):
|
3207
|
+
if hasattr( listener, "exitNull" ):
|
3208
|
+
listener.exitNull(self)
|
3209
|
+
|
3210
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3211
|
+
if hasattr( visitor, "visitNull" ):
|
3212
|
+
return visitor.visitNull(self)
|
3213
|
+
else:
|
3214
|
+
return visitor.visitChildren(self)
|
3215
|
+
|
3216
|
+
|
3217
|
+
|
3218
|
+
|
3219
|
+
def null(self):
|
3220
|
+
|
3221
|
+
localctx = MinisqlParser.NullContext(self, self._ctx, self.state)
|
3222
|
+
self.enterRule(localctx, 50, self.RULE_null)
|
3223
|
+
try:
|
3224
|
+
self.enterOuterAlt(localctx, 1)
|
3225
|
+
self.state = 388
|
3226
|
+
self.match(MinisqlParser.NULL)
|
3227
|
+
except RecognitionException as re:
|
3228
|
+
localctx.exception = re
|
3229
|
+
self._errHandler.reportError(self, re)
|
3230
|
+
self._errHandler.recover(self, re)
|
3231
|
+
finally:
|
3232
|
+
self.exitRule()
|
3233
|
+
return localctx
|
3234
|
+
|
3235
|
+
|
3236
|
+
class TrueContext(ParserRuleContext):
|
3237
|
+
__slots__ = 'parser'
|
3238
|
+
|
3239
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3240
|
+
super().__init__(parent, invokingState)
|
3241
|
+
self.parser = parser
|
3242
|
+
|
3243
|
+
def TRUE(self):
|
3244
|
+
return self.getToken(MinisqlParser.TRUE, 0)
|
3245
|
+
|
3246
|
+
def getRuleIndex(self):
|
3247
|
+
return MinisqlParser.RULE_true
|
3248
|
+
|
3249
|
+
def enterRule(self, listener:ParseTreeListener):
|
3250
|
+
if hasattr( listener, "enterTrue" ):
|
3251
|
+
listener.enterTrue(self)
|
3252
|
+
|
3253
|
+
def exitRule(self, listener:ParseTreeListener):
|
3254
|
+
if hasattr( listener, "exitTrue" ):
|
3255
|
+
listener.exitTrue(self)
|
3256
|
+
|
3257
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3258
|
+
if hasattr( visitor, "visitTrue" ):
|
3259
|
+
return visitor.visitTrue(self)
|
3260
|
+
else:
|
3261
|
+
return visitor.visitChildren(self)
|
3262
|
+
|
3263
|
+
|
3264
|
+
|
3265
|
+
|
3266
|
+
def true(self):
|
3267
|
+
|
3268
|
+
localctx = MinisqlParser.TrueContext(self, self._ctx, self.state)
|
3269
|
+
self.enterRule(localctx, 52, self.RULE_true)
|
3270
|
+
try:
|
3271
|
+
self.enterOuterAlt(localctx, 1)
|
3272
|
+
self.state = 390
|
3273
|
+
self.match(MinisqlParser.TRUE)
|
3274
|
+
except RecognitionException as re:
|
3275
|
+
localctx.exception = re
|
3276
|
+
self._errHandler.reportError(self, re)
|
3277
|
+
self._errHandler.recover(self, re)
|
3278
|
+
finally:
|
3279
|
+
self.exitRule()
|
3280
|
+
return localctx
|
3281
|
+
|
3282
|
+
|
3283
|
+
class FalseContext(ParserRuleContext):
|
3284
|
+
__slots__ = 'parser'
|
3285
|
+
|
3286
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3287
|
+
super().__init__(parent, invokingState)
|
3288
|
+
self.parser = parser
|
3289
|
+
|
3290
|
+
def FALSE(self):
|
3291
|
+
return self.getToken(MinisqlParser.FALSE, 0)
|
3292
|
+
|
3293
|
+
def getRuleIndex(self):
|
3294
|
+
return MinisqlParser.RULE_false
|
3295
|
+
|
3296
|
+
def enterRule(self, listener:ParseTreeListener):
|
3297
|
+
if hasattr( listener, "enterFalse" ):
|
3298
|
+
listener.enterFalse(self)
|
3299
|
+
|
3300
|
+
def exitRule(self, listener:ParseTreeListener):
|
3301
|
+
if hasattr( listener, "exitFalse" ):
|
3302
|
+
listener.exitFalse(self)
|
3303
|
+
|
3304
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3305
|
+
if hasattr( visitor, "visitFalse" ):
|
3306
|
+
return visitor.visitFalse(self)
|
3307
|
+
else:
|
3308
|
+
return visitor.visitChildren(self)
|
3309
|
+
|
3310
|
+
|
3311
|
+
|
3312
|
+
|
3313
|
+
def false(self):
|
3314
|
+
|
3315
|
+
localctx = MinisqlParser.FalseContext(self, self._ctx, self.state)
|
3316
|
+
self.enterRule(localctx, 54, self.RULE_false)
|
3317
|
+
try:
|
3318
|
+
self.enterOuterAlt(localctx, 1)
|
3319
|
+
self.state = 392
|
3320
|
+
self.match(MinisqlParser.FALSE)
|
3321
|
+
except RecognitionException as re:
|
3322
|
+
localctx.exception = re
|
3323
|
+
self._errHandler.reportError(self, re)
|
3324
|
+
self._errHandler.recover(self, re)
|
3325
|
+
finally:
|
3326
|
+
self.exitRule()
|
3327
|
+
return localctx
|
3328
|
+
|
3329
|
+
|
3330
|
+
class SetQuantifierContext(ParserRuleContext):
|
3331
|
+
__slots__ = 'parser'
|
3332
|
+
|
3333
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3334
|
+
super().__init__(parent, invokingState)
|
3335
|
+
self.parser = parser
|
3336
|
+
|
3337
|
+
def DISTINCT(self):
|
3338
|
+
return self.getToken(MinisqlParser.DISTINCT, 0)
|
3339
|
+
|
3340
|
+
def ALL(self):
|
3341
|
+
return self.getToken(MinisqlParser.ALL, 0)
|
3342
|
+
|
3343
|
+
def getRuleIndex(self):
|
3344
|
+
return MinisqlParser.RULE_setQuantifier
|
3345
|
+
|
3346
|
+
def enterRule(self, listener:ParseTreeListener):
|
3347
|
+
if hasattr( listener, "enterSetQuantifier" ):
|
3348
|
+
listener.enterSetQuantifier(self)
|
3349
|
+
|
3350
|
+
def exitRule(self, listener:ParseTreeListener):
|
3351
|
+
if hasattr( listener, "exitSetQuantifier" ):
|
3352
|
+
listener.exitSetQuantifier(self)
|
3353
|
+
|
3354
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3355
|
+
if hasattr( visitor, "visitSetQuantifier" ):
|
3356
|
+
return visitor.visitSetQuantifier(self)
|
3357
|
+
else:
|
3358
|
+
return visitor.visitChildren(self)
|
3359
|
+
|
3360
|
+
|
3361
|
+
|
3362
|
+
|
3363
|
+
def setQuantifier(self):
|
3364
|
+
|
3365
|
+
localctx = MinisqlParser.SetQuantifierContext(self, self._ctx, self.state)
|
3366
|
+
self.enterRule(localctx, 56, self.RULE_setQuantifier)
|
3367
|
+
self._la = 0 # Token type
|
3368
|
+
try:
|
3369
|
+
self.enterOuterAlt(localctx, 1)
|
3370
|
+
self.state = 394
|
3371
|
+
_la = self._input.LA(1)
|
3372
|
+
if not(_la==20 or _la==28):
|
3373
|
+
self._errHandler.recoverInline(self)
|
3374
|
+
else:
|
3375
|
+
self._errHandler.reportMatch(self)
|
3376
|
+
self.consume()
|
3377
|
+
except RecognitionException as re:
|
3378
|
+
localctx.exception = re
|
3379
|
+
self._errHandler.reportError(self, re)
|
3380
|
+
self._errHandler.recover(self, re)
|
3381
|
+
finally:
|
3382
|
+
self.exitRule()
|
3383
|
+
return localctx
|
3384
|
+
|
3385
|
+
|
3386
|
+
class JoinTypeContext(ParserRuleContext):
|
3387
|
+
__slots__ = 'parser'
|
3388
|
+
|
3389
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3390
|
+
super().__init__(parent, invokingState)
|
3391
|
+
self.parser = parser
|
3392
|
+
|
3393
|
+
def INNER(self):
|
3394
|
+
return self.getToken(MinisqlParser.INNER, 0)
|
3395
|
+
|
3396
|
+
def LEFT(self):
|
3397
|
+
return self.getToken(MinisqlParser.LEFT, 0)
|
3398
|
+
|
3399
|
+
def OUTER(self):
|
3400
|
+
return self.getToken(MinisqlParser.OUTER, 0)
|
3401
|
+
|
3402
|
+
def RIGHT(self):
|
3403
|
+
return self.getToken(MinisqlParser.RIGHT, 0)
|
3404
|
+
|
3405
|
+
def FULL(self):
|
3406
|
+
return self.getToken(MinisqlParser.FULL, 0)
|
3407
|
+
|
3408
|
+
def CROSS(self):
|
3409
|
+
return self.getToken(MinisqlParser.CROSS, 0)
|
3410
|
+
|
3411
|
+
def NATURAL(self):
|
3412
|
+
return self.getToken(MinisqlParser.NATURAL, 0)
|
3413
|
+
|
3414
|
+
def getRuleIndex(self):
|
3415
|
+
return MinisqlParser.RULE_joinType
|
3416
|
+
|
3417
|
+
def enterRule(self, listener:ParseTreeListener):
|
3418
|
+
if hasattr( listener, "enterJoinType" ):
|
3419
|
+
listener.enterJoinType(self)
|
3420
|
+
|
3421
|
+
def exitRule(self, listener:ParseTreeListener):
|
3422
|
+
if hasattr( listener, "exitJoinType" ):
|
3423
|
+
listener.exitJoinType(self)
|
3424
|
+
|
3425
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3426
|
+
if hasattr( visitor, "visitJoinType" ):
|
3427
|
+
return visitor.visitJoinType(self)
|
3428
|
+
else:
|
3429
|
+
return visitor.visitChildren(self)
|
3430
|
+
|
3431
|
+
|
3432
|
+
|
3433
|
+
|
3434
|
+
def joinType(self):
|
3435
|
+
|
3436
|
+
localctx = MinisqlParser.JoinTypeContext(self, self._ctx, self.state)
|
3437
|
+
self.enterRule(localctx, 58, self.RULE_joinType)
|
3438
|
+
try:
|
3439
|
+
self.state = 408
|
3440
|
+
self._errHandler.sync(self)
|
3441
|
+
la_ = self._interp.adaptivePredict(self._input,50,self._ctx)
|
3442
|
+
if la_ == 1:
|
3443
|
+
self.enterOuterAlt(localctx, 1)
|
3444
|
+
self.state = 396
|
3445
|
+
self.match(MinisqlParser.INNER)
|
3446
|
+
pass
|
3447
|
+
|
3448
|
+
elif la_ == 2:
|
3449
|
+
self.enterOuterAlt(localctx, 2)
|
3450
|
+
self.state = 397
|
3451
|
+
self.match(MinisqlParser.LEFT)
|
3452
|
+
pass
|
3453
|
+
|
3454
|
+
elif la_ == 3:
|
3455
|
+
self.enterOuterAlt(localctx, 3)
|
3456
|
+
self.state = 398
|
3457
|
+
self.match(MinisqlParser.LEFT)
|
3458
|
+
self.state = 399
|
3459
|
+
self.match(MinisqlParser.OUTER)
|
3460
|
+
pass
|
3461
|
+
|
3462
|
+
elif la_ == 4:
|
3463
|
+
self.enterOuterAlt(localctx, 4)
|
3464
|
+
self.state = 400
|
3465
|
+
self.match(MinisqlParser.RIGHT)
|
3466
|
+
pass
|
3467
|
+
|
3468
|
+
elif la_ == 5:
|
3469
|
+
self.enterOuterAlt(localctx, 5)
|
3470
|
+
self.state = 401
|
3471
|
+
self.match(MinisqlParser.RIGHT)
|
3472
|
+
self.state = 402
|
3473
|
+
self.match(MinisqlParser.OUTER)
|
3474
|
+
pass
|
3475
|
+
|
3476
|
+
elif la_ == 6:
|
3477
|
+
self.enterOuterAlt(localctx, 6)
|
3478
|
+
self.state = 403
|
3479
|
+
self.match(MinisqlParser.FULL)
|
3480
|
+
pass
|
3481
|
+
|
3482
|
+
elif la_ == 7:
|
3483
|
+
self.enterOuterAlt(localctx, 7)
|
3484
|
+
self.state = 404
|
3485
|
+
self.match(MinisqlParser.FULL)
|
3486
|
+
self.state = 405
|
3487
|
+
self.match(MinisqlParser.OUTER)
|
3488
|
+
pass
|
3489
|
+
|
3490
|
+
elif la_ == 8:
|
3491
|
+
self.enterOuterAlt(localctx, 8)
|
3492
|
+
self.state = 406
|
3493
|
+
self.match(MinisqlParser.CROSS)
|
3494
|
+
pass
|
3495
|
+
|
3496
|
+
elif la_ == 9:
|
3497
|
+
self.enterOuterAlt(localctx, 9)
|
3498
|
+
self.state = 407
|
3499
|
+
self.match(MinisqlParser.NATURAL)
|
3500
|
+
pass
|
3501
|
+
|
3502
|
+
|
3503
|
+
except RecognitionException as re:
|
3504
|
+
localctx.exception = re
|
3505
|
+
self._errHandler.reportError(self, re)
|
3506
|
+
self._errHandler.recover(self, re)
|
3507
|
+
finally:
|
3508
|
+
self.exitRule()
|
3509
|
+
return localctx
|
3510
|
+
|
3511
|
+
|
3512
|
+
class CmpOpContext(ParserRuleContext):
|
3513
|
+
__slots__ = 'parser'
|
3514
|
+
|
3515
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3516
|
+
super().__init__(parent, invokingState)
|
3517
|
+
self.parser = parser
|
3518
|
+
|
3519
|
+
|
3520
|
+
def getRuleIndex(self):
|
3521
|
+
return MinisqlParser.RULE_cmpOp
|
3522
|
+
|
3523
|
+
def enterRule(self, listener:ParseTreeListener):
|
3524
|
+
if hasattr( listener, "enterCmpOp" ):
|
3525
|
+
listener.enterCmpOp(self)
|
3526
|
+
|
3527
|
+
def exitRule(self, listener:ParseTreeListener):
|
3528
|
+
if hasattr( listener, "exitCmpOp" ):
|
3529
|
+
listener.exitCmpOp(self)
|
3530
|
+
|
3531
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3532
|
+
if hasattr( visitor, "visitCmpOp" ):
|
3533
|
+
return visitor.visitCmpOp(self)
|
3534
|
+
else:
|
3535
|
+
return visitor.visitChildren(self)
|
3536
|
+
|
3537
|
+
|
3538
|
+
|
3539
|
+
|
3540
|
+
def cmpOp(self):
|
3541
|
+
|
3542
|
+
localctx = MinisqlParser.CmpOpContext(self, self._ctx, self.state)
|
3543
|
+
self.enterRule(localctx, 60, self.RULE_cmpOp)
|
3544
|
+
self._la = 0 # Token type
|
3545
|
+
try:
|
3546
|
+
self.enterOuterAlt(localctx, 1)
|
3547
|
+
self.state = 410
|
3548
|
+
_la = self._input.LA(1)
|
3549
|
+
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 32512) != 0)):
|
3550
|
+
self._errHandler.recoverInline(self)
|
3551
|
+
else:
|
3552
|
+
self._errHandler.reportMatch(self)
|
3553
|
+
self.consume()
|
3554
|
+
except RecognitionException as re:
|
3555
|
+
localctx.exception = re
|
3556
|
+
self._errHandler.reportError(self, re)
|
3557
|
+
self._errHandler.recover(self, re)
|
3558
|
+
finally:
|
3559
|
+
self.exitRule()
|
3560
|
+
return localctx
|
3561
|
+
|
3562
|
+
|
3563
|
+
class ArithOpContext(ParserRuleContext):
|
3564
|
+
__slots__ = 'parser'
|
3565
|
+
|
3566
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3567
|
+
super().__init__(parent, invokingState)
|
3568
|
+
self.parser = parser
|
3569
|
+
|
3570
|
+
|
3571
|
+
def getRuleIndex(self):
|
3572
|
+
return MinisqlParser.RULE_arithOp
|
3573
|
+
|
3574
|
+
def enterRule(self, listener:ParseTreeListener):
|
3575
|
+
if hasattr( listener, "enterArithOp" ):
|
3576
|
+
listener.enterArithOp(self)
|
3577
|
+
|
3578
|
+
def exitRule(self, listener:ParseTreeListener):
|
3579
|
+
if hasattr( listener, "exitArithOp" ):
|
3580
|
+
listener.exitArithOp(self)
|
3581
|
+
|
3582
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3583
|
+
if hasattr( visitor, "visitArithOp" ):
|
3584
|
+
return visitor.visitArithOp(self)
|
3585
|
+
else:
|
3586
|
+
return visitor.visitChildren(self)
|
3587
|
+
|
3588
|
+
|
3589
|
+
|
3590
|
+
|
3591
|
+
def arithOp(self):
|
3592
|
+
|
3593
|
+
localctx = MinisqlParser.ArithOpContext(self, self._ctx, self.state)
|
3594
|
+
self.enterRule(localctx, 62, self.RULE_arithOp)
|
3595
|
+
self._la = 0 # Token type
|
3596
|
+
try:
|
3597
|
+
self.enterOuterAlt(localctx, 1)
|
3598
|
+
self.state = 412
|
3599
|
+
_la = self._input.LA(1)
|
3600
|
+
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 1015840) != 0)):
|
3601
|
+
self._errHandler.recoverInline(self)
|
3602
|
+
else:
|
3603
|
+
self._errHandler.reportMatch(self)
|
3604
|
+
self.consume()
|
3605
|
+
except RecognitionException as re:
|
3606
|
+
localctx.exception = re
|
3607
|
+
self._errHandler.reportError(self, re)
|
3608
|
+
self._errHandler.recover(self, re)
|
3609
|
+
finally:
|
3610
|
+
self.exitRule()
|
3611
|
+
return localctx
|
3612
|
+
|
3613
|
+
|
3614
|
+
class UnaryOpContext(ParserRuleContext):
|
3615
|
+
__slots__ = 'parser'
|
3616
|
+
|
3617
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3618
|
+
super().__init__(parent, invokingState)
|
3619
|
+
self.parser = parser
|
3620
|
+
|
3621
|
+
|
3622
|
+
def getRuleIndex(self):
|
3623
|
+
return MinisqlParser.RULE_unaryOp
|
3624
|
+
|
3625
|
+
def enterRule(self, listener:ParseTreeListener):
|
3626
|
+
if hasattr( listener, "enterUnaryOp" ):
|
3627
|
+
listener.enterUnaryOp(self)
|
3628
|
+
|
3629
|
+
def exitRule(self, listener:ParseTreeListener):
|
3630
|
+
if hasattr( listener, "exitUnaryOp" ):
|
3631
|
+
listener.exitUnaryOp(self)
|
3632
|
+
|
3633
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3634
|
+
if hasattr( visitor, "visitUnaryOp" ):
|
3635
|
+
return visitor.visitUnaryOp(self)
|
3636
|
+
else:
|
3637
|
+
return visitor.visitChildren(self)
|
3638
|
+
|
3639
|
+
|
3640
|
+
|
3641
|
+
|
3642
|
+
def unaryOp(self):
|
3643
|
+
|
3644
|
+
localctx = MinisqlParser.UnaryOpContext(self, self._ctx, self.state)
|
3645
|
+
self.enterRule(localctx, 64, self.RULE_unaryOp)
|
3646
|
+
self._la = 0 # Token type
|
3647
|
+
try:
|
3648
|
+
self.enterOuterAlt(localctx, 1)
|
3649
|
+
self.state = 414
|
3650
|
+
_la = self._input.LA(1)
|
3651
|
+
if not(_la==15 or _la==16):
|
3652
|
+
self._errHandler.recoverInline(self)
|
3653
|
+
else:
|
3654
|
+
self._errHandler.reportMatch(self)
|
3655
|
+
self.consume()
|
3656
|
+
except RecognitionException as re:
|
3657
|
+
localctx.exception = re
|
3658
|
+
self._errHandler.reportError(self, re)
|
3659
|
+
self._errHandler.recover(self, re)
|
3660
|
+
finally:
|
3661
|
+
self.exitRule()
|
3662
|
+
return localctx
|
3663
|
+
|
3664
|
+
|
3665
|
+
class UnquotedIdentContext(ParserRuleContext):
|
3666
|
+
__slots__ = 'parser'
|
3667
|
+
|
3668
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
3669
|
+
super().__init__(parent, invokingState)
|
3670
|
+
self.parser = parser
|
3671
|
+
|
3672
|
+
def IDENT(self):
|
3673
|
+
return self.getToken(MinisqlParser.IDENT, 0)
|
3674
|
+
|
3675
|
+
def LEFT(self):
|
3676
|
+
return self.getToken(MinisqlParser.LEFT, 0)
|
3677
|
+
|
3678
|
+
def RIGHT(self):
|
3679
|
+
return self.getToken(MinisqlParser.RIGHT, 0)
|
3680
|
+
|
3681
|
+
def getRuleIndex(self):
|
3682
|
+
return MinisqlParser.RULE_unquotedIdent
|
3683
|
+
|
3684
|
+
def enterRule(self, listener:ParseTreeListener):
|
3685
|
+
if hasattr( listener, "enterUnquotedIdent" ):
|
3686
|
+
listener.enterUnquotedIdent(self)
|
3687
|
+
|
3688
|
+
def exitRule(self, listener:ParseTreeListener):
|
3689
|
+
if hasattr( listener, "exitUnquotedIdent" ):
|
3690
|
+
listener.exitUnquotedIdent(self)
|
3691
|
+
|
3692
|
+
def accept(self, visitor:ParseTreeVisitor):
|
3693
|
+
if hasattr( visitor, "visitUnquotedIdent" ):
|
3694
|
+
return visitor.visitUnquotedIdent(self)
|
3695
|
+
else:
|
3696
|
+
return visitor.visitChildren(self)
|
3697
|
+
|
3698
|
+
|
3699
|
+
|
3700
|
+
|
3701
|
+
def unquotedIdent(self):
|
3702
|
+
|
3703
|
+
localctx = MinisqlParser.UnquotedIdentContext(self, self._ctx, self.state)
|
3704
|
+
self.enterRule(localctx, 66, self.RULE_unquotedIdent)
|
3705
|
+
self._la = 0 # Token type
|
3706
|
+
try:
|
3707
|
+
self.enterOuterAlt(localctx, 1)
|
3708
|
+
self.state = 416
|
3709
|
+
_la = self._input.LA(1)
|
3710
|
+
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4612813017845858304) != 0)):
|
3711
|
+
self._errHandler.recoverInline(self)
|
3712
|
+
else:
|
3713
|
+
self._errHandler.reportMatch(self)
|
3714
|
+
self.consume()
|
3715
|
+
except RecognitionException as re:
|
3716
|
+
localctx.exception = re
|
3717
|
+
self._errHandler.reportError(self, re)
|
3718
|
+
self._errHandler.recover(self, re)
|
3719
|
+
finally:
|
3720
|
+
self.exitRule()
|
3721
|
+
return localctx
|
3722
|
+
|
3723
|
+
|
3724
|
+
|
3725
|
+
def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int):
|
3726
|
+
if self._predicates == None:
|
3727
|
+
self._predicates = dict()
|
3728
|
+
self._predicates[9] = self.booleanExpr_sempred
|
3729
|
+
self._predicates[11] = self.valueExpr_sempred
|
3730
|
+
self._predicates[17] = self.relation_sempred
|
3731
|
+
pred = self._predicates.get(ruleIndex, None)
|
3732
|
+
if pred is None:
|
3733
|
+
raise Exception("No predicate with index:" + str(ruleIndex))
|
3734
|
+
else:
|
3735
|
+
return pred(localctx, predIndex)
|
3736
|
+
|
3737
|
+
def booleanExpr_sempred(self, localctx:BooleanExprContext, predIndex:int):
|
3738
|
+
if predIndex == 0:
|
3739
|
+
return self.precpred(self._ctx, 2)
|
3740
|
+
|
3741
|
+
|
3742
|
+
if predIndex == 1:
|
3743
|
+
return self.precpred(self._ctx, 1)
|
3744
|
+
|
3745
|
+
|
3746
|
+
def valueExpr_sempred(self, localctx:ValueExprContext, predIndex:int):
|
3747
|
+
if predIndex == 2:
|
3748
|
+
return self.precpred(self._ctx, 1)
|
3749
|
+
|
3750
|
+
|
3751
|
+
def relation_sempred(self, localctx:RelationContext, predIndex:int):
|
3752
|
+
if predIndex == 3:
|
3753
|
+
return self.precpred(self._ctx, 5)
|
3754
|
+
|
3755
|
+
|
3756
|
+
if predIndex == 4:
|
3757
|
+
return self.precpred(self._ctx, 4)
|
3758
|
+
|
3759
|
+
|
3760
|
+
|
3761
|
+
|
3762
|
+
|