omextra 0.0.0.dev423__py3-none-any.whl → 0.0.0.dev425__py3-none-any.whl

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