omlish 0.0.0.dev252__py3-none-any.whl → 0.0.0.dev253__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.
@@ -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
+