2023-03-16 05:53:40 +03:00
|
|
|
// Code generated from SLQ.g4 by ANTLR 4.12.0. DO NOT EDIT.
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
package slq // SLQ
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"strconv"
|
2022-12-24 07:43:20 +03:00
|
|
|
"sync"
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
"github.com/antlr/antlr4/runtime/Go/antlr/v4"
|
2016-10-17 07:14:01 +03:00
|
|
|
)
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
// Suppress unused import errors
|
2016-10-17 07:14:01 +03:00
|
|
|
var _ = fmt.Printf
|
|
|
|
var _ = strconv.Itoa
|
2022-12-24 07:43:20 +03:00
|
|
|
var _ = sync.Once{}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
type SLQParser struct {
|
|
|
|
*antlr.BaseParser
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
var slqParserStaticData struct {
|
|
|
|
once sync.Once
|
|
|
|
serializedATN []int32
|
|
|
|
literalNames []string
|
|
|
|
symbolicNames []string
|
|
|
|
ruleNames []string
|
|
|
|
predictionContextCache *antlr.PredictionContextCache
|
|
|
|
atn *antlr.ATN
|
|
|
|
decisionToDFA []*antlr.DFA
|
|
|
|
}
|
|
|
|
|
|
|
|
func slqParserInit() {
|
|
|
|
staticData := &slqParserStaticData
|
|
|
|
staticData.literalNames = []string{
|
2023-03-27 05:03:40 +03:00
|
|
|
"", "';'", "'*'", "'join'", "'.['", "'||'", "'/'", "'%'", "'<<'", "'>>'",
|
|
|
|
"'&'", "'&&'", "'~'", "'!'", "'group_by'", "'+'", "'-'", "", "", "",
|
|
|
|
"'('", "')'", "'['", "']'", "','", "'|'", "':'", "", "", "", "'<='",
|
|
|
|
"'<'", "'>='", "'>'", "'!='", "'=='",
|
2022-12-24 07:43:20 +03:00
|
|
|
}
|
|
|
|
staticData.symbolicNames = []string{
|
2023-03-27 05:03:40 +03:00
|
|
|
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "GROUP_BY",
|
|
|
|
"ORDER_ASC", "ORDER_DESC", "ORDER_BY", "ID", "WS", "LPAR", "RPAR", "LBRA",
|
|
|
|
"RBRA", "COMMA", "PIPE", "COLON", "NULL", "NN", "NUMBER", "LT_EQ", "LT",
|
|
|
|
"GT_EQ", "GT", "NEQ", "EQ", "NAME", "HANDLE", "STRING", "LINECOMMENT",
|
2022-12-24 07:43:20 +03:00
|
|
|
}
|
|
|
|
staticData.ruleNames = []string{
|
2023-03-27 05:03:40 +03:00
|
|
|
"stmtList", "query", "segment", "element", "cmpr", "funcElement", "func",
|
|
|
|
"funcName", "join", "joinConstraint", "groupByTerm", "groupBy", "orderByTerm",
|
|
|
|
"orderBy", "selector", "selectorElement", "alias", "handleTable", "handle",
|
|
|
|
"rowRange", "expr", "literal", "unaryOperator",
|
2022-12-24 07:43:20 +03:00
|
|
|
}
|
|
|
|
staticData.predictionContextCache = antlr.NewPredictionContextCache()
|
|
|
|
staticData.serializedATN = []int32{
|
2023-03-27 05:03:40 +03:00
|
|
|
4, 1, 39, 237, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7,
|
2022-12-24 07:43:20 +03:00
|
|
|
4, 2, 5, 7, 5, 2, 6, 7, 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, 2, 14, 7, 14, 2, 15, 7, 15,
|
2023-03-26 04:20:53 +03:00
|
|
|
2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2,
|
2023-03-27 05:03:40 +03:00
|
|
|
21, 7, 21, 2, 22, 7, 22, 1, 0, 5, 0, 48, 8, 0, 10, 0, 12, 0, 51, 9, 0,
|
|
|
|
1, 0, 1, 0, 4, 0, 55, 8, 0, 11, 0, 12, 0, 56, 1, 0, 5, 0, 60, 8, 0, 10,
|
|
|
|
0, 12, 0, 63, 9, 0, 1, 0, 5, 0, 66, 8, 0, 10, 0, 12, 0, 69, 9, 0, 1, 1,
|
|
|
|
1, 1, 1, 1, 5, 1, 74, 8, 1, 10, 1, 12, 1, 77, 9, 1, 1, 2, 1, 2, 1, 2, 5,
|
|
|
|
2, 82, 8, 2, 10, 2, 12, 2, 85, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
|
|
|
|
1, 3, 1, 3, 1, 3, 3, 3, 96, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 3, 5, 102, 8,
|
|
|
|
5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 109, 8, 6, 10, 6, 12, 6, 112, 9,
|
|
|
|
6, 1, 6, 3, 6, 115, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1,
|
|
|
|
8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 131, 8, 9, 1, 10, 1, 10, 3,
|
|
|
|
10, 135, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 142, 8, 11, 10,
|
|
|
|
11, 12, 11, 145, 9, 11, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 151, 8, 12,
|
|
|
|
1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 158, 8, 13, 10, 13, 12, 13, 161,
|
|
|
|
9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 167, 8, 14, 1, 15, 1, 15, 3,
|
|
|
|
15, 171, 8, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18,
|
|
|
|
1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 190,
|
|
|
|
8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3,
|
|
|
|
20, 201, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20,
|
|
|
|
1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1,
|
|
|
|
20, 3, 20, 222, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 228, 8, 20, 10,
|
|
|
|
20, 12, 20, 231, 9, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 0, 1, 40, 23,
|
|
|
|
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36,
|
|
|
|
38, 40, 42, 44, 0, 7, 1, 0, 30, 35, 1, 0, 15, 16, 2, 0, 2, 2, 6, 7, 1,
|
|
|
|
0, 8, 10, 1, 0, 30, 33, 2, 0, 27, 29, 38, 38, 2, 0, 12, 13, 15, 16, 254,
|
|
|
|
0, 49, 1, 0, 0, 0, 2, 70, 1, 0, 0, 0, 4, 78, 1, 0, 0, 0, 6, 95, 1, 0, 0,
|
|
|
|
0, 8, 97, 1, 0, 0, 0, 10, 99, 1, 0, 0, 0, 12, 103, 1, 0, 0, 0, 14, 118,
|
|
|
|
1, 0, 0, 0, 16, 120, 1, 0, 0, 0, 18, 130, 1, 0, 0, 0, 20, 134, 1, 0, 0,
|
|
|
|
0, 22, 136, 1, 0, 0, 0, 24, 148, 1, 0, 0, 0, 26, 152, 1, 0, 0, 0, 28, 164,
|
|
|
|
1, 0, 0, 0, 30, 168, 1, 0, 0, 0, 32, 172, 1, 0, 0, 0, 34, 175, 1, 0, 0,
|
|
|
|
0, 36, 178, 1, 0, 0, 0, 38, 180, 1, 0, 0, 0, 40, 200, 1, 0, 0, 0, 42, 232,
|
|
|
|
1, 0, 0, 0, 44, 234, 1, 0, 0, 0, 46, 48, 5, 1, 0, 0, 47, 46, 1, 0, 0, 0,
|
|
|
|
48, 51, 1, 0, 0, 0, 49, 47, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 52, 1,
|
|
|
|
0, 0, 0, 51, 49, 1, 0, 0, 0, 52, 61, 3, 2, 1, 0, 53, 55, 5, 1, 0, 0, 54,
|
|
|
|
53, 1, 0, 0, 0, 55, 56, 1, 0, 0, 0, 56, 54, 1, 0, 0, 0, 56, 57, 1, 0, 0,
|
|
|
|
0, 57, 58, 1, 0, 0, 0, 58, 60, 3, 2, 1, 0, 59, 54, 1, 0, 0, 0, 60, 63,
|
|
|
|
1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 67, 1, 0, 0, 0,
|
|
|
|
63, 61, 1, 0, 0, 0, 64, 66, 5, 1, 0, 0, 65, 64, 1, 0, 0, 0, 66, 69, 1,
|
|
|
|
0, 0, 0, 67, 65, 1, 0, 0, 0, 67, 68, 1, 0, 0, 0, 68, 1, 1, 0, 0, 0, 69,
|
|
|
|
67, 1, 0, 0, 0, 70, 75, 3, 4, 2, 0, 71, 72, 5, 25, 0, 0, 72, 74, 3, 4,
|
|
|
|
2, 0, 73, 71, 1, 0, 0, 0, 74, 77, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 75, 76,
|
|
|
|
1, 0, 0, 0, 76, 3, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 83, 3, 6, 3, 0,
|
|
|
|
79, 80, 5, 24, 0, 0, 80, 82, 3, 6, 3, 0, 81, 79, 1, 0, 0, 0, 82, 85, 1,
|
|
|
|
0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 5, 1, 0, 0, 0, 85,
|
|
|
|
83, 1, 0, 0, 0, 86, 96, 3, 34, 17, 0, 87, 96, 3, 36, 18, 0, 88, 96, 3,
|
|
|
|
30, 15, 0, 89, 96, 3, 16, 8, 0, 90, 96, 3, 22, 11, 0, 91, 96, 3, 26, 13,
|
|
|
|
0, 92, 96, 3, 38, 19, 0, 93, 96, 3, 10, 5, 0, 94, 96, 3, 40, 20, 0, 95,
|
|
|
|
86, 1, 0, 0, 0, 95, 87, 1, 0, 0, 0, 95, 88, 1, 0, 0, 0, 95, 89, 1, 0, 0,
|
|
|
|
0, 95, 90, 1, 0, 0, 0, 95, 91, 1, 0, 0, 0, 95, 92, 1, 0, 0, 0, 95, 93,
|
|
|
|
1, 0, 0, 0, 95, 94, 1, 0, 0, 0, 96, 7, 1, 0, 0, 0, 97, 98, 7, 0, 0, 0,
|
|
|
|
98, 9, 1, 0, 0, 0, 99, 101, 3, 12, 6, 0, 100, 102, 3, 32, 16, 0, 101, 100,
|
|
|
|
1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 11, 1, 0, 0, 0, 103, 104, 3, 14,
|
|
|
|
7, 0, 104, 114, 5, 20, 0, 0, 105, 110, 3, 40, 20, 0, 106, 107, 5, 24, 0,
|
|
|
|
0, 107, 109, 3, 40, 20, 0, 108, 106, 1, 0, 0, 0, 109, 112, 1, 0, 0, 0,
|
|
|
|
110, 108, 1, 0, 0, 0, 110, 111, 1, 0, 0, 0, 111, 115, 1, 0, 0, 0, 112,
|
|
|
|
110, 1, 0, 0, 0, 113, 115, 5, 2, 0, 0, 114, 105, 1, 0, 0, 0, 114, 113,
|
|
|
|
1, 0, 0, 0, 114, 115, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 117, 5, 21,
|
|
|
|
0, 0, 117, 13, 1, 0, 0, 0, 118, 119, 5, 18, 0, 0, 119, 15, 1, 0, 0, 0,
|
|
|
|
120, 121, 5, 3, 0, 0, 121, 122, 5, 20, 0, 0, 122, 123, 3, 18, 9, 0, 123,
|
|
|
|
124, 5, 21, 0, 0, 124, 17, 1, 0, 0, 0, 125, 126, 3, 28, 14, 0, 126, 127,
|
|
|
|
3, 8, 4, 0, 127, 128, 3, 28, 14, 0, 128, 131, 1, 0, 0, 0, 129, 131, 3,
|
|
|
|
28, 14, 0, 130, 125, 1, 0, 0, 0, 130, 129, 1, 0, 0, 0, 131, 19, 1, 0, 0,
|
|
|
|
0, 132, 135, 3, 28, 14, 0, 133, 135, 3, 12, 6, 0, 134, 132, 1, 0, 0, 0,
|
|
|
|
134, 133, 1, 0, 0, 0, 135, 21, 1, 0, 0, 0, 136, 137, 5, 14, 0, 0, 137,
|
|
|
|
138, 5, 20, 0, 0, 138, 143, 3, 20, 10, 0, 139, 140, 5, 24, 0, 0, 140, 142,
|
|
|
|
3, 20, 10, 0, 141, 139, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1,
|
|
|
|
0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0,
|
|
|
|
0, 146, 147, 5, 21, 0, 0, 147, 23, 1, 0, 0, 0, 148, 150, 3, 28, 14, 0,
|
|
|
|
149, 151, 7, 1, 0, 0, 150, 149, 1, 0, 0, 0, 150, 151, 1, 0, 0, 0, 151,
|
|
|
|
25, 1, 0, 0, 0, 152, 153, 5, 17, 0, 0, 153, 154, 5, 20, 0, 0, 154, 159,
|
|
|
|
3, 24, 12, 0, 155, 156, 5, 24, 0, 0, 156, 158, 3, 24, 12, 0, 157, 155,
|
|
|
|
1, 0, 0, 0, 158, 161, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0,
|
|
|
|
0, 0, 160, 162, 1, 0, 0, 0, 161, 159, 1, 0, 0, 0, 162, 163, 5, 21, 0, 0,
|
|
|
|
163, 27, 1, 0, 0, 0, 164, 166, 5, 36, 0, 0, 165, 167, 5, 36, 0, 0, 166,
|
|
|
|
165, 1, 0, 0, 0, 166, 167, 1, 0, 0, 0, 167, 29, 1, 0, 0, 0, 168, 170, 3,
|
|
|
|
28, 14, 0, 169, 171, 3, 32, 16, 0, 170, 169, 1, 0, 0, 0, 170, 171, 1, 0,
|
|
|
|
0, 0, 171, 31, 1, 0, 0, 0, 172, 173, 5, 26, 0, 0, 173, 174, 5, 18, 0, 0,
|
|
|
|
174, 33, 1, 0, 0, 0, 175, 176, 5, 37, 0, 0, 176, 177, 5, 36, 0, 0, 177,
|
|
|
|
35, 1, 0, 0, 0, 178, 179, 5, 37, 0, 0, 179, 37, 1, 0, 0, 0, 180, 189, 5,
|
|
|
|
4, 0, 0, 181, 182, 5, 28, 0, 0, 182, 183, 5, 26, 0, 0, 183, 190, 5, 28,
|
|
|
|
0, 0, 184, 185, 5, 28, 0, 0, 185, 190, 5, 26, 0, 0, 186, 187, 5, 26, 0,
|
|
|
|
0, 187, 190, 5, 28, 0, 0, 188, 190, 5, 28, 0, 0, 189, 181, 1, 0, 0, 0,
|
|
|
|
189, 184, 1, 0, 0, 0, 189, 186, 1, 0, 0, 0, 189, 188, 1, 0, 0, 0, 189,
|
|
|
|
190, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 5, 23, 0, 0, 192, 39,
|
|
|
|
1, 0, 0, 0, 193, 194, 6, 20, -1, 0, 194, 201, 3, 28, 14, 0, 195, 201, 3,
|
|
|
|
42, 21, 0, 196, 197, 3, 44, 22, 0, 197, 198, 3, 40, 20, 9, 198, 201, 1,
|
|
|
|
0, 0, 0, 199, 201, 3, 12, 6, 0, 200, 193, 1, 0, 0, 0, 200, 195, 1, 0, 0,
|
|
|
|
0, 200, 196, 1, 0, 0, 0, 200, 199, 1, 0, 0, 0, 201, 229, 1, 0, 0, 0, 202,
|
|
|
|
203, 10, 8, 0, 0, 203, 204, 5, 5, 0, 0, 204, 228, 3, 40, 20, 9, 205, 206,
|
|
|
|
10, 7, 0, 0, 206, 207, 7, 2, 0, 0, 207, 228, 3, 40, 20, 8, 208, 209, 10,
|
|
|
|
6, 0, 0, 209, 210, 7, 1, 0, 0, 210, 228, 3, 40, 20, 7, 211, 212, 10, 5,
|
|
|
|
0, 0, 212, 213, 7, 3, 0, 0, 213, 228, 3, 40, 20, 6, 214, 215, 10, 4, 0,
|
|
|
|
0, 215, 216, 7, 4, 0, 0, 216, 228, 3, 40, 20, 5, 217, 221, 10, 3, 0, 0,
|
|
|
|
218, 222, 5, 35, 0, 0, 219, 222, 5, 34, 0, 0, 220, 222, 1, 0, 0, 0, 221,
|
|
|
|
218, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 221, 220, 1, 0, 0, 0, 222, 223,
|
|
|
|
1, 0, 0, 0, 223, 228, 3, 40, 20, 4, 224, 225, 10, 2, 0, 0, 225, 226, 5,
|
|
|
|
11, 0, 0, 226, 228, 3, 40, 20, 3, 227, 202, 1, 0, 0, 0, 227, 205, 1, 0,
|
|
|
|
0, 0, 227, 208, 1, 0, 0, 0, 227, 211, 1, 0, 0, 0, 227, 214, 1, 0, 0, 0,
|
|
|
|
227, 217, 1, 0, 0, 0, 227, 224, 1, 0, 0, 0, 228, 231, 1, 0, 0, 0, 229,
|
|
|
|
227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 41, 1, 0, 0, 0, 231, 229, 1,
|
|
|
|
0, 0, 0, 232, 233, 7, 5, 0, 0, 233, 43, 1, 0, 0, 0, 234, 235, 7, 6, 0,
|
|
|
|
0, 235, 45, 1, 0, 0, 0, 22, 49, 56, 61, 67, 75, 83, 95, 101, 110, 114,
|
|
|
|
130, 134, 143, 150, 159, 166, 170, 189, 200, 221, 227, 229,
|
2022-12-24 07:43:20 +03:00
|
|
|
}
|
|
|
|
deserializer := antlr.NewATNDeserializer(nil)
|
|
|
|
staticData.atn = deserializer.Deserialize(staticData.serializedATN)
|
|
|
|
atn := staticData.atn
|
|
|
|
staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState))
|
|
|
|
decisionToDFA := staticData.decisionToDFA
|
|
|
|
for index, state := range atn.DecisionToState {
|
|
|
|
decisionToDFA[index] = antlr.NewDFA(state, index)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// SLQParserInit initializes any static state used to implement SLQParser. By default the
|
|
|
|
// static state used to implement the parser is lazily initialized during the first call to
|
|
|
|
// NewSLQParser(). You can call this function if you wish to initialize the static state ahead
|
|
|
|
// of time.
|
|
|
|
func SLQParserInit() {
|
|
|
|
staticData := &slqParserStaticData
|
|
|
|
staticData.once.Do(slqParserInit)
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewSLQParser produces a new parser instance for the optional input antlr.TokenStream.
|
2016-10-17 07:14:01 +03:00
|
|
|
func NewSLQParser(input antlr.TokenStream) *SLQParser {
|
2022-12-24 07:43:20 +03:00
|
|
|
SLQParserInit()
|
2016-10-17 07:14:01 +03:00
|
|
|
this := new(SLQParser)
|
|
|
|
this.BaseParser = antlr.NewBaseParser(input)
|
2022-12-24 07:43:20 +03:00
|
|
|
staticData := &slqParserStaticData
|
|
|
|
this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache)
|
|
|
|
this.RuleNames = staticData.ruleNames
|
|
|
|
this.LiteralNames = staticData.literalNames
|
|
|
|
this.SymbolicNames = staticData.symbolicNames
|
2023-03-16 05:53:40 +03:00
|
|
|
this.GrammarFileName = "SLQ.g4"
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return this
|
|
|
|
}
|
|
|
|
|
|
|
|
// SLQParser tokens.
|
|
|
|
const (
|
|
|
|
SLQParserEOF = antlr.TokenEOF
|
|
|
|
SLQParserT__0 = 1
|
|
|
|
SLQParserT__1 = 2
|
|
|
|
SLQParserT__2 = 3
|
|
|
|
SLQParserT__3 = 4
|
2020-08-06 20:58:47 +03:00
|
|
|
SLQParserT__4 = 5
|
|
|
|
SLQParserT__5 = 6
|
|
|
|
SLQParserT__6 = 7
|
|
|
|
SLQParserT__7 = 8
|
|
|
|
SLQParserT__8 = 9
|
|
|
|
SLQParserT__9 = 10
|
|
|
|
SLQParserT__10 = 11
|
|
|
|
SLQParserT__11 = 12
|
|
|
|
SLQParserT__12 = 13
|
2023-03-27 05:03:40 +03:00
|
|
|
SLQParserGROUP_BY = 14
|
|
|
|
SLQParserORDER_ASC = 15
|
|
|
|
SLQParserORDER_DESC = 16
|
|
|
|
SLQParserORDER_BY = 17
|
|
|
|
SLQParserID = 18
|
|
|
|
SLQParserWS = 19
|
|
|
|
SLQParserLPAR = 20
|
|
|
|
SLQParserRPAR = 21
|
|
|
|
SLQParserLBRA = 22
|
|
|
|
SLQParserRBRA = 23
|
|
|
|
SLQParserCOMMA = 24
|
|
|
|
SLQParserPIPE = 25
|
|
|
|
SLQParserCOLON = 26
|
|
|
|
SLQParserNULL = 27
|
|
|
|
SLQParserNN = 28
|
|
|
|
SLQParserNUMBER = 29
|
|
|
|
SLQParserLT_EQ = 30
|
|
|
|
SLQParserLT = 31
|
|
|
|
SLQParserGT_EQ = 32
|
|
|
|
SLQParserGT = 33
|
|
|
|
SLQParserNEQ = 34
|
|
|
|
SLQParserEQ = 35
|
|
|
|
SLQParserNAME = 36
|
|
|
|
SLQParserHANDLE = 37
|
|
|
|
SLQParserSTRING = 38
|
|
|
|
SLQParserLINECOMMENT = 39
|
2016-10-17 07:14:01 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
// SLQParser rules.
|
|
|
|
const (
|
2023-03-22 09:17:34 +03:00
|
|
|
SLQParserRULE_stmtList = 0
|
|
|
|
SLQParserRULE_query = 1
|
|
|
|
SLQParserRULE_segment = 2
|
|
|
|
SLQParserRULE_element = 3
|
|
|
|
SLQParserRULE_cmpr = 4
|
2023-03-27 05:03:40 +03:00
|
|
|
SLQParserRULE_funcElement = 5
|
|
|
|
SLQParserRULE_func = 6
|
|
|
|
SLQParserRULE_funcName = 7
|
|
|
|
SLQParserRULE_join = 8
|
|
|
|
SLQParserRULE_joinConstraint = 9
|
|
|
|
SLQParserRULE_groupByTerm = 10
|
|
|
|
SLQParserRULE_groupBy = 11
|
|
|
|
SLQParserRULE_orderByTerm = 12
|
|
|
|
SLQParserRULE_orderBy = 13
|
|
|
|
SLQParserRULE_selector = 14
|
|
|
|
SLQParserRULE_selectorElement = 15
|
|
|
|
SLQParserRULE_alias = 16
|
|
|
|
SLQParserRULE_handleTable = 17
|
|
|
|
SLQParserRULE_handle = 18
|
|
|
|
SLQParserRULE_rowRange = 19
|
|
|
|
SLQParserRULE_expr = 20
|
|
|
|
SLQParserRULE_literal = 21
|
|
|
|
SLQParserRULE_unaryOperator = 22
|
2016-10-17 07:14:01 +03:00
|
|
|
)
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IStmtListContext is an interface to support dynamic dispatch.
|
|
|
|
type IStmtListContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
|
|
|
AllQuery() []IQueryContext
|
|
|
|
Query(i int) IQueryContext
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IsStmtListContext differentiates from other interfaces.
|
|
|
|
IsStmtListContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type StmtListContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyStmtListContext() *StmtListContext {
|
|
|
|
var p = new(StmtListContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_stmtList
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*StmtListContext) IsStmtListContext() {}
|
|
|
|
|
|
|
|
func NewStmtListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StmtListContext {
|
|
|
|
var p = new(StmtListContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_stmtList
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *StmtListContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *StmtListContext) AllQuery() []IQueryContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
children := s.GetChildren()
|
|
|
|
len := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if _, ok := ctx.(IQueryContext); ok {
|
|
|
|
len++
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
tst := make([]IQueryContext, len)
|
|
|
|
i := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if t, ok := ctx.(IQueryContext); ok {
|
2020-08-06 20:58:47 +03:00
|
|
|
tst[i] = t.(IQueryContext)
|
2022-12-24 07:43:20 +03:00
|
|
|
i++
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return tst
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *StmtListContext) Query(i int) IQueryContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
j := 0
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IQueryContext); ok {
|
|
|
|
if j == i {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IQueryContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *StmtListContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *StmtListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *StmtListContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterStmtList(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *StmtListContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitStmtList(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *StmtListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2020-08-06 20:58:47 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitStmtList(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) StmtList() (localctx IStmtListContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
localctx = NewStmtListContext(p, p.GetParserRuleContext(), p.GetState())
|
|
|
|
p.EnterRule(localctx, 0, SLQParserRULE_stmtList)
|
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
var _alt int
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(49)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
for _la == SLQParserT__0 {
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(46)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserT__0)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(51)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(52)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Query()
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(61)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 2, p.GetParserRuleContext())
|
|
|
|
|
|
|
|
for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
|
|
|
|
if _alt == 1 {
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(54)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
for ok := true; ok; ok = _la == SLQParserT__0 {
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(53)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserT__0)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(56)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(58)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Query()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(63)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 2, p.GetParserRuleContext())
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(67)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
for _la == SLQParserT__0 {
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(64)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserT__0)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(69)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
// IQueryContext is an interface to support dynamic dispatch.
|
|
|
|
type IQueryContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
|
|
|
AllSegment() []ISegmentContext
|
|
|
|
Segment(i int) ISegmentContext
|
|
|
|
AllPIPE() []antlr.TerminalNode
|
|
|
|
PIPE(i int) antlr.TerminalNode
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
// IsQueryContext differentiates from other interfaces.
|
|
|
|
IsQueryContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
type QueryContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyQueryContext() *QueryContext {
|
|
|
|
var p = new(QueryContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_query
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (*QueryContext) IsQueryContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
func NewQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *QueryContext {
|
|
|
|
var p = new(QueryContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_query
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *QueryContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *QueryContext) AllSegment() []ISegmentContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
children := s.GetChildren()
|
|
|
|
len := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if _, ok := ctx.(ISegmentContext); ok {
|
|
|
|
len++
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
tst := make([]ISegmentContext, len)
|
|
|
|
i := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if t, ok := ctx.(ISegmentContext); ok {
|
2016-10-17 07:14:01 +03:00
|
|
|
tst[i] = t.(ISegmentContext)
|
2022-12-24 07:43:20 +03:00
|
|
|
i++
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return tst
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *QueryContext) Segment(i int) ISegmentContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
j := 0
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(ISegmentContext); ok {
|
|
|
|
if j == i {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(ISegmentContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *QueryContext) AllPIPE() []antlr.TerminalNode {
|
|
|
|
return s.GetTokens(SLQParserPIPE)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *QueryContext) PIPE(i int) antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserPIPE, i)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *QueryContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (s *QueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
func (s *QueryContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterQuery(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *QueryContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitQuery(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *QueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitQuery(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Query() (localctx IQueryContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
localctx = NewQueryContext(p, p.GetParserRuleContext(), p.GetState())
|
2020-08-06 20:58:47 +03:00
|
|
|
p.EnterRule(localctx, 2, SLQParserRULE_query)
|
2016-10-17 07:14:01 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(70)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Segment()
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(75)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
for _la == SLQParserPIPE {
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(71)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserPIPE)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(72)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Segment()
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(77)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// ISegmentContext is an interface to support dynamic dispatch.
|
|
|
|
type ISegmentContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
|
|
|
AllElement() []IElementContext
|
|
|
|
Element(i int) IElementContext
|
|
|
|
AllCOMMA() []antlr.TerminalNode
|
|
|
|
COMMA(i int) antlr.TerminalNode
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
// IsSegmentContext differentiates from other interfaces.
|
|
|
|
IsSegmentContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
type SegmentContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptySegmentContext() *SegmentContext {
|
|
|
|
var p = new(SegmentContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_segment
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (*SegmentContext) IsSegmentContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
func NewSegmentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SegmentContext {
|
|
|
|
var p = new(SegmentContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_segment
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SegmentContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *SegmentContext) AllElement() []IElementContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
children := s.GetChildren()
|
|
|
|
len := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if _, ok := ctx.(IElementContext); ok {
|
|
|
|
len++
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
tst := make([]IElementContext, len)
|
|
|
|
i := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if t, ok := ctx.(IElementContext); ok {
|
2016-10-17 07:14:01 +03:00
|
|
|
tst[i] = t.(IElementContext)
|
2022-12-24 07:43:20 +03:00
|
|
|
i++
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return tst
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SegmentContext) Element(i int) IElementContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
j := 0
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IElementContext); ok {
|
|
|
|
if j == i {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IElementContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SegmentContext) AllCOMMA() []antlr.TerminalNode {
|
|
|
|
return s.GetTokens(SLQParserCOMMA)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SegmentContext) COMMA(i int) antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserCOMMA, i)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SegmentContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (s *SegmentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
func (s *SegmentContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterSegment(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SegmentContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitSegment(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *SegmentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitSegment(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Segment() (localctx ISegmentContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
localctx = NewSegmentContext(p, p.GetParserRuleContext(), p.GetState())
|
2020-08-06 20:58:47 +03:00
|
|
|
p.EnterRule(localctx, 4, SLQParserRULE_segment)
|
2016-10-17 07:14:01 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(78)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Element()
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(83)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
for _la == SLQParserCOMMA {
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(79)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserCOMMA)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(80)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Element()
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(85)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// IElementContext is an interface to support dynamic dispatch.
|
|
|
|
type IElementContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
2023-03-22 09:17:34 +03:00
|
|
|
HandleTable() IHandleTableContext
|
|
|
|
Handle() IHandleContext
|
|
|
|
SelectorElement() ISelectorElementContext
|
2023-03-16 05:53:40 +03:00
|
|
|
Join() IJoinContext
|
2023-03-27 05:03:40 +03:00
|
|
|
GroupBy() IGroupByContext
|
2023-03-26 04:20:53 +03:00
|
|
|
OrderBy() IOrderByContext
|
2023-03-16 05:53:40 +03:00
|
|
|
RowRange() IRowRangeContext
|
2023-03-27 05:03:40 +03:00
|
|
|
FuncElement() IFuncElementContext
|
2023-03-16 05:53:40 +03:00
|
|
|
Expr() IExprContext
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
// IsElementContext differentiates from other interfaces.
|
|
|
|
IsElementContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
type ElementContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyElementContext() *ElementContext {
|
|
|
|
var p = new(ElementContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_element
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (*ElementContext) IsElementContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
func NewElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementContext {
|
|
|
|
var p = new(ElementContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_element
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ElementContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *ElementContext) HandleTable() IHandleTableContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
2023-03-22 09:17:34 +03:00
|
|
|
if _, ok := ctx.(IHandleTableContext); ok {
|
2022-12-24 07:43:20 +03:00
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
return t.(IHandleTableContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *ElementContext) Handle() IHandleContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
2023-03-22 09:17:34 +03:00
|
|
|
if _, ok := ctx.(IHandleContext); ok {
|
2022-12-24 07:43:20 +03:00
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
return t.(IHandleContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *ElementContext) SelectorElement() ISelectorElementContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
2023-03-22 09:17:34 +03:00
|
|
|
if _, ok := ctx.(ISelectorElementContext); ok {
|
2022-12-24 07:43:20 +03:00
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
return t.(ISelectorElementContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (s *ElementContext) Join() IJoinContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IJoinContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
return t.(IJoinContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *ElementContext) GroupBy() IGroupByContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
2023-03-27 05:03:40 +03:00
|
|
|
if _, ok := ctx.(IGroupByContext); ok {
|
2022-12-24 07:43:20 +03:00
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
return t.(IGroupByContext)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
2023-03-26 04:20:53 +03:00
|
|
|
func (s *ElementContext) OrderBy() IOrderByContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IOrderByContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IOrderByContext)
|
|
|
|
}
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
func (s *ElementContext) RowRange() IRowRangeContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IRowRangeContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IRowRangeContext)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *ElementContext) FuncElement() IFuncElementContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
2023-03-27 05:03:40 +03:00
|
|
|
if _, ok := ctx.(IFuncElementContext); ok {
|
2022-12-24 07:43:20 +03:00
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
return t.(IFuncElementContext)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ElementContext) Expr() IExprContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IExprContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IExprContext)
|
|
|
|
}
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
func (s *ElementContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (s *ElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
func (s *ElementContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterElement(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ElementContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitElement(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *ElementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitElement(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Element() (localctx IElementContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
localctx = NewElementContext(p, p.GetParserRuleContext(), p.GetState())
|
2020-08-06 20:58:47 +03:00
|
|
|
p.EnterRule(localctx, 6, SLQParserRULE_element)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(95)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
2020-08-06 20:58:47 +03:00
|
|
|
switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 6, p.GetParserRuleContext()) {
|
2016-10-17 07:14:01 +03:00
|
|
|
case 1:
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(86)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.HandleTable()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
case 2:
|
|
|
|
p.EnterOuterAlt(localctx, 2)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(87)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Handle()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
case 3:
|
|
|
|
p.EnterOuterAlt(localctx, 3)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(88)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.SelectorElement()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
case 4:
|
|
|
|
p.EnterOuterAlt(localctx, 4)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(89)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Join()
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
case 5:
|
|
|
|
p.EnterOuterAlt(localctx, 5)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(90)
|
|
|
|
p.GroupBy()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
case 6:
|
|
|
|
p.EnterOuterAlt(localctx, 6)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(91)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.OrderBy()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
case 7:
|
|
|
|
p.EnterOuterAlt(localctx, 7)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(92)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.RowRange()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
case 8:
|
|
|
|
p.EnterOuterAlt(localctx, 8)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(93)
|
|
|
|
p.FuncElement()
|
2023-03-26 04:20:53 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
case 9:
|
|
|
|
p.EnterOuterAlt(localctx, 9)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(94)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(0)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// ICmprContext is an interface to support dynamic dispatch.
|
|
|
|
type ICmprContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
|
|
|
LT_EQ() antlr.TerminalNode
|
|
|
|
LT() antlr.TerminalNode
|
|
|
|
GT_EQ() antlr.TerminalNode
|
|
|
|
GT() antlr.TerminalNode
|
|
|
|
EQ() antlr.TerminalNode
|
|
|
|
NEQ() antlr.TerminalNode
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
// IsCmprContext differentiates from other interfaces.
|
|
|
|
IsCmprContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
type CmprContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyCmprContext() *CmprContext {
|
|
|
|
var p = new(CmprContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_cmpr
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (*CmprContext) IsCmprContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
func NewCmprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CmprContext {
|
|
|
|
var p = new(CmprContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_cmpr
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *CmprContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *CmprContext) LT_EQ() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserLT_EQ, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *CmprContext) LT() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserLT, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *CmprContext) GT_EQ() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserGT_EQ, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *CmprContext) GT() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserGT, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *CmprContext) EQ() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserEQ, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *CmprContext) NEQ() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserNEQ, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *CmprContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (s *CmprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
func (s *CmprContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterCmpr(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *CmprContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitCmpr(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *CmprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitCmpr(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Cmpr() (localctx ICmprContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
localctx = NewCmprContext(p, p.GetParserRuleContext(), p.GetState())
|
2020-08-06 20:58:47 +03:00
|
|
|
p.EnterRule(localctx, 8, SLQParserRULE_cmpr)
|
2016-10-17 07:14:01 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(97)
|
2020-08-06 20:58:47 +03:00
|
|
|
_la = p.GetTokenStream().LA(1)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&67645734912) != 0) {
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().RecoverInline(p)
|
|
|
|
} else {
|
|
|
|
p.GetErrorHandler().ReportMatch(p)
|
|
|
|
p.Consume()
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
// IFuncElementContext is an interface to support dynamic dispatch.
|
|
|
|
type IFuncElementContext interface {
|
2016-10-17 07:14:01 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
2023-03-27 05:03:40 +03:00
|
|
|
Func_() IFuncContext
|
|
|
|
Alias() IAliasContext
|
|
|
|
|
|
|
|
// IsFuncElementContext differentiates from other interfaces.
|
|
|
|
IsFuncElementContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type FuncElementContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyFuncElementContext() *FuncElementContext {
|
|
|
|
var p = new(FuncElementContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_funcElement
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*FuncElementContext) IsFuncElementContext() {}
|
|
|
|
|
|
|
|
func NewFuncElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FuncElementContext {
|
|
|
|
var p = new(FuncElementContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_funcElement
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FuncElementContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *FuncElementContext) Func_() IFuncContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IFuncContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IFuncContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FuncElementContext) Alias() IAliasContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IAliasContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IAliasContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FuncElementContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FuncElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FuncElementContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterFuncElement(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FuncElementContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitFuncElement(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FuncElementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitFuncElement(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) FuncElement() (localctx IFuncElementContext) {
|
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
|
|
|
localctx = NewFuncElementContext(p, p.GetParserRuleContext(), p.GetState())
|
|
|
|
p.EnterRule(localctx, 10, SLQParserRULE_funcElement)
|
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
|
|
|
p.SetState(99)
|
|
|
|
p.Func_()
|
|
|
|
}
|
|
|
|
p.SetState(101)
|
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
if _la == SLQParserCOLON {
|
|
|
|
{
|
|
|
|
p.SetState(100)
|
|
|
|
p.Alias()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// IFuncContext is an interface to support dynamic dispatch.
|
|
|
|
type IFuncContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
|
|
|
// Getter signatures
|
|
|
|
FuncName() IFuncNameContext
|
2023-03-16 05:53:40 +03:00
|
|
|
LPAR() antlr.TerminalNode
|
|
|
|
RPAR() antlr.TerminalNode
|
|
|
|
AllExpr() []IExprContext
|
|
|
|
Expr(i int) IExprContext
|
|
|
|
AllCOMMA() []antlr.TerminalNode
|
|
|
|
COMMA(i int) antlr.TerminalNode
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
// IsFuncContext differentiates from other interfaces.
|
|
|
|
IsFuncContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
type FuncContext struct {
|
2016-10-17 07:14:01 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func NewEmptyFuncContext() *FuncContext {
|
|
|
|
var p = new(FuncContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_func
|
2016-10-17 07:14:01 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (*FuncContext) IsFuncContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func NewFuncContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FuncContext {
|
|
|
|
var p = new(FuncContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2023-03-27 05:03:40 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_func
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) GetParser() antlr.Parser { return s.parser }
|
2020-08-06 20:58:47 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) FuncName() IFuncNameContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
2023-03-27 05:03:40 +03:00
|
|
|
if _, ok := ctx.(IFuncNameContext); ok {
|
2022-12-24 07:43:20 +03:00
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
return t.(IFuncNameContext)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) LPAR() antlr.TerminalNode {
|
2020-08-06 20:58:47 +03:00
|
|
|
return s.GetToken(SLQParserLPAR, 0)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) RPAR() antlr.TerminalNode {
|
2020-08-06 20:58:47 +03:00
|
|
|
return s.GetToken(SLQParserRPAR, 0)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) AllExpr() []IExprContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
children := s.GetChildren()
|
|
|
|
len := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if _, ok := ctx.(IExprContext); ok {
|
|
|
|
len++
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
tst := make([]IExprContext, len)
|
|
|
|
i := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if t, ok := ctx.(IExprContext); ok {
|
2020-08-06 20:58:47 +03:00
|
|
|
tst[i] = t.(IExprContext)
|
2022-12-24 07:43:20 +03:00
|
|
|
i++
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return tst
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) Expr(i int) IExprContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
j := 0
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IExprContext); ok {
|
|
|
|
if j == i {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
return t.(IExprContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) AllCOMMA() []antlr.TerminalNode {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s.GetTokens(SLQParserCOMMA)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) COMMA(i int) antlr.TerminalNode {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s.GetToken(SLQParserCOMMA, i)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) GetRuleContext() antlr.RuleContext {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2016-10-31 01:35:56 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) EnterRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-27 05:03:40 +03:00
|
|
|
listenerT.EnterFunc(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) ExitRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-27 05:03:40 +03:00
|
|
|
listenerT.ExitFunc(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2023-03-27 05:03:40 +03:00
|
|
|
return t.VisitFunc(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (p *SLQParser) Func_() (localctx IFuncContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
localctx = NewFuncContext(p, p.GetParserRuleContext(), p.GetState())
|
|
|
|
p.EnterRule(localctx, 12, SLQParserRULE_func)
|
2016-10-17 07:14:01 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(103)
|
|
|
|
p.FuncName()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(104)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserLPAR)
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(114)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
switch p.GetTokenStream().LA(1) {
|
2023-03-27 05:03:40 +03:00
|
|
|
case SLQParserT__11, SLQParserT__12, SLQParserORDER_ASC, SLQParserORDER_DESC, SLQParserID, SLQParserNULL, SLQParserNN, SLQParserNUMBER, SLQParserNAME, SLQParserSTRING:
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(105)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(0)
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(110)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
for _la == SLQParserCOMMA {
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(106)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserCOMMA)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(107)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(0)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(112)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
case SLQParserT__1:
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(113)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserT__1)
|
|
|
|
}
|
|
|
|
|
|
|
|
case SLQParserRPAR:
|
|
|
|
|
|
|
|
default:
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(116)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserRPAR)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
// IFuncNameContext is an interface to support dynamic dispatch.
|
|
|
|
type IFuncNameContext interface {
|
2023-03-19 07:58:00 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
|
|
|
// Getter signatures
|
2023-03-27 05:03:40 +03:00
|
|
|
ID() antlr.TerminalNode
|
2023-03-19 07:58:00 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
// IsFuncNameContext differentiates from other interfaces.
|
|
|
|
IsFuncNameContext()
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
type FuncNameContext struct {
|
2023-03-19 07:58:00 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func NewEmptyFuncNameContext() *FuncNameContext {
|
|
|
|
var p = new(FuncNameContext)
|
2023-03-19 07:58:00 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_funcName
|
2023-03-19 07:58:00 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (*FuncNameContext) IsFuncNameContext() {}
|
2023-03-19 07:58:00 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func NewFuncNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FuncNameContext {
|
|
|
|
var p = new(FuncNameContext)
|
2023-03-19 07:58:00 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2023-03-27 05:03:40 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_funcName
|
2023-03-19 07:58:00 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncNameContext) GetParser() antlr.Parser { return s.parser }
|
2023-03-19 07:58:00 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncNameContext) ID() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserID, 0)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncNameContext) GetRuleContext() antlr.RuleContext {
|
2023-03-19 07:58:00 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2023-03-19 07:58:00 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncNameContext) EnterRule(listener antlr.ParseTreeListener) {
|
2023-03-19 07:58:00 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-27 05:03:40 +03:00
|
|
|
listenerT.EnterFuncName(s)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncNameContext) ExitRule(listener antlr.ParseTreeListener) {
|
2023-03-19 07:58:00 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-27 05:03:40 +03:00
|
|
|
listenerT.ExitFuncName(s)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *FuncNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2023-03-19 07:58:00 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2023-03-27 05:03:40 +03:00
|
|
|
return t.VisitFuncName(s)
|
2023-03-19 07:58:00 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (p *SLQParser) FuncName() (localctx IFuncNameContext) {
|
2023-03-19 07:58:00 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
localctx = NewFuncNameContext(p, p.GetParserRuleContext(), p.GetState())
|
|
|
|
p.EnterRule(localctx, 14, SLQParserRULE_funcName)
|
2023-03-19 07:58:00 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(118)
|
|
|
|
p.Match(SLQParserID)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IJoinContext is an interface to support dynamic dispatch.
|
|
|
|
type IJoinContext interface {
|
2016-10-17 07:14:01 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
|
|
|
LPAR() antlr.TerminalNode
|
|
|
|
JoinConstraint() IJoinConstraintContext
|
|
|
|
RPAR() antlr.TerminalNode
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IsJoinContext differentiates from other interfaces.
|
|
|
|
IsJoinContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
type JoinContext struct {
|
2016-10-17 07:14:01 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func NewEmptyJoinContext() *JoinContext {
|
|
|
|
var p = new(JoinContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_join
|
2016-10-17 07:14:01 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (*JoinContext) IsJoinContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func NewJoinContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *JoinContext {
|
|
|
|
var p = new(JoinContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2020-08-06 20:58:47 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_join
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinContext) GetParser() antlr.Parser { return s.parser }
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinContext) LPAR() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserLPAR, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *JoinContext) JoinConstraint() IJoinConstraintContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IJoinConstraintContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IJoinConstraintContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinContext) RPAR() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserRPAR, 0)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinContext) GetRuleContext() antlr.RuleContext {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2016-10-31 01:35:56 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinContext) EnterRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2020-08-06 20:58:47 +03:00
|
|
|
listenerT.EnterJoin(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinContext) ExitRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2020-08-06 20:58:47 +03:00
|
|
|
listenerT.ExitJoin(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *JoinContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2020-08-06 20:58:47 +03:00
|
|
|
return t.VisitJoin(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (p *SLQParser) Join() (localctx IJoinContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
localctx = NewJoinContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 16, SLQParserRULE_join)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(120)
|
|
|
|
p.Match(SLQParserT__2)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(121)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserLPAR)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(122)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.JoinConstraint()
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(123)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserRPAR)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IJoinConstraintContext is an interface to support dynamic dispatch.
|
|
|
|
type IJoinConstraintContext interface {
|
2016-10-17 07:14:01 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
2023-03-22 09:17:34 +03:00
|
|
|
AllSelector() []ISelectorContext
|
|
|
|
Selector(i int) ISelectorContext
|
2023-03-16 05:53:40 +03:00
|
|
|
Cmpr() ICmprContext
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IsJoinConstraintContext differentiates from other interfaces.
|
|
|
|
IsJoinConstraintContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
type JoinConstraintContext struct {
|
2016-10-17 07:14:01 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func NewEmptyJoinConstraintContext() *JoinConstraintContext {
|
|
|
|
var p = new(JoinConstraintContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_joinConstraint
|
2016-10-17 07:14:01 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (*JoinConstraintContext) IsJoinConstraintContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func NewJoinConstraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *JoinConstraintContext {
|
|
|
|
var p = new(JoinConstraintContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2020-08-06 20:58:47 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_joinConstraint
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinConstraintContext) GetParser() antlr.Parser { return s.parser }
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *JoinConstraintContext) AllSelector() []ISelectorContext {
|
|
|
|
children := s.GetChildren()
|
|
|
|
len := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if _, ok := ctx.(ISelectorContext); ok {
|
|
|
|
len++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tst := make([]ISelectorContext, len)
|
|
|
|
i := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if t, ok := ctx.(ISelectorContext); ok {
|
|
|
|
tst[i] = t.(ISelectorContext)
|
|
|
|
i++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return tst
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *JoinConstraintContext) Selector(i int) ISelectorContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
j := 0
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(ISelectorContext); ok {
|
|
|
|
if j == i {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(ISelectorContext)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *JoinConstraintContext) Cmpr() ICmprContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(ICmprContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
return t.(ICmprContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinConstraintContext) GetRuleContext() antlr.RuleContext {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinConstraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2016-10-31 01:35:56 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinConstraintContext) EnterRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2020-08-06 20:58:47 +03:00
|
|
|
listenerT.EnterJoinConstraint(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *JoinConstraintContext) ExitRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2020-08-06 20:58:47 +03:00
|
|
|
listenerT.ExitJoinConstraint(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *JoinConstraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2020-08-06 20:58:47 +03:00
|
|
|
return t.VisitJoinConstraint(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (p *SLQParser) JoinConstraint() (localctx IJoinConstraintContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
localctx = NewJoinConstraintContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 18, SLQParserRULE_joinConstraint)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(130)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
2023-03-19 07:58:00 +03:00
|
|
|
switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) {
|
2020-08-06 20:58:47 +03:00
|
|
|
case 1:
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(125)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Selector()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(126)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Cmpr()
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(127)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Selector()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
case 2:
|
|
|
|
p.EnterOuterAlt(localctx, 2)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(129)
|
|
|
|
p.Selector()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// IGroupByTermContext is an interface to support dynamic dispatch.
|
|
|
|
type IGroupByTermContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
|
|
|
// Getter signatures
|
|
|
|
Selector() ISelectorContext
|
|
|
|
Func_() IFuncContext
|
|
|
|
|
|
|
|
// IsGroupByTermContext differentiates from other interfaces.
|
|
|
|
IsGroupByTermContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type GroupByTermContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyGroupByTermContext() *GroupByTermContext {
|
|
|
|
var p = new(GroupByTermContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_groupByTerm
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*GroupByTermContext) IsGroupByTermContext() {}
|
|
|
|
|
|
|
|
func NewGroupByTermContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByTermContext {
|
|
|
|
var p = new(GroupByTermContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_groupByTerm
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *GroupByTermContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *GroupByTermContext) Selector() ISelectorContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(ISelectorContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(ISelectorContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *GroupByTermContext) Func_() IFuncContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IFuncContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IFuncContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *GroupByTermContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *GroupByTermContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *GroupByTermContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterGroupByTerm(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *GroupByTermContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitGroupByTerm(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *GroupByTermContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitGroupByTerm(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) GroupByTerm() (localctx IGroupByTermContext) {
|
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
|
|
|
localctx = NewGroupByTermContext(p, p.GetParserRuleContext(), p.GetState())
|
|
|
|
p.EnterRule(localctx, 20, SLQParserRULE_groupByTerm)
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.SetState(134)
|
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
|
|
|
|
switch p.GetTokenStream().LA(1) {
|
|
|
|
case SLQParserNAME:
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
|
|
|
p.SetState(132)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Selector()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
case SLQParserID:
|
|
|
|
p.EnterOuterAlt(localctx, 2)
|
|
|
|
{
|
|
|
|
p.SetState(133)
|
|
|
|
p.Func_()
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
// IGroupByContext is an interface to support dynamic dispatch.
|
|
|
|
type IGroupByContext interface {
|
2016-10-17 07:14:01 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
2023-03-26 11:01:41 +03:00
|
|
|
GROUP_BY() antlr.TerminalNode
|
2023-03-16 05:53:40 +03:00
|
|
|
LPAR() antlr.TerminalNode
|
2023-03-27 05:03:40 +03:00
|
|
|
AllGroupByTerm() []IGroupByTermContext
|
|
|
|
GroupByTerm(i int) IGroupByTermContext
|
2023-03-16 05:53:40 +03:00
|
|
|
RPAR() antlr.TerminalNode
|
|
|
|
AllCOMMA() []antlr.TerminalNode
|
|
|
|
COMMA(i int) antlr.TerminalNode
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
// IsGroupByContext differentiates from other interfaces.
|
|
|
|
IsGroupByContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
type GroupByContext struct {
|
2016-10-17 07:14:01 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func NewEmptyGroupByContext() *GroupByContext {
|
|
|
|
var p = new(GroupByContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_groupBy
|
2016-10-17 07:14:01 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (*GroupByContext) IsGroupByContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func NewGroupByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByContext {
|
|
|
|
var p = new(GroupByContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2023-03-27 05:03:40 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_groupBy
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) GetParser() antlr.Parser { return s.parser }
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) GROUP_BY() antlr.TerminalNode {
|
2023-03-26 11:01:41 +03:00
|
|
|
return s.GetToken(SLQParserGROUP_BY, 0)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) LPAR() antlr.TerminalNode {
|
2020-08-06 20:58:47 +03:00
|
|
|
return s.GetToken(SLQParserLPAR, 0)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) AllGroupByTerm() []IGroupByTermContext {
|
2023-03-22 09:17:34 +03:00
|
|
|
children := s.GetChildren()
|
|
|
|
len := 0
|
|
|
|
for _, ctx := range children {
|
2023-03-27 05:03:40 +03:00
|
|
|
if _, ok := ctx.(IGroupByTermContext); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
len++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
tst := make([]IGroupByTermContext, len)
|
2023-03-22 09:17:34 +03:00
|
|
|
i := 0
|
|
|
|
for _, ctx := range children {
|
2023-03-27 05:03:40 +03:00
|
|
|
if t, ok := ctx.(IGroupByTermContext); ok {
|
|
|
|
tst[i] = t.(IGroupByTermContext)
|
2023-03-22 09:17:34 +03:00
|
|
|
i++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return tst
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) GroupByTerm(i int) IGroupByTermContext {
|
2023-03-22 09:17:34 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
j := 0
|
|
|
|
for _, ctx := range s.GetChildren() {
|
2023-03-27 05:03:40 +03:00
|
|
|
if _, ok := ctx.(IGroupByTermContext); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
if j == i {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
return t.(IGroupByTermContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) RPAR() antlr.TerminalNode {
|
2020-08-06 20:58:47 +03:00
|
|
|
return s.GetToken(SLQParserRPAR, 0)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) AllCOMMA() []antlr.TerminalNode {
|
2020-08-06 20:58:47 +03:00
|
|
|
return s.GetTokens(SLQParserCOMMA)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) COMMA(i int) antlr.TerminalNode {
|
2020-08-06 20:58:47 +03:00
|
|
|
return s.GetToken(SLQParserCOMMA, i)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) GetRuleContext() antlr.RuleContext {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2016-10-31 01:35:56 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) EnterRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-27 05:03:40 +03:00
|
|
|
listenerT.EnterGroupBy(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) ExitRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-27 05:03:40 +03:00
|
|
|
listenerT.ExitGroupBy(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *GroupByContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2023-03-27 05:03:40 +03:00
|
|
|
return t.VisitGroupBy(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (p *SLQParser) GroupBy() (localctx IGroupByContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
localctx = NewGroupByContext(p, p.GetParserRuleContext(), p.GetState())
|
|
|
|
p.EnterRule(localctx, 22, SLQParserRULE_groupBy)
|
2020-08-06 20:58:47 +03:00
|
|
|
var _la int
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(136)
|
2023-03-26 11:01:41 +03:00
|
|
|
p.Match(SLQParserGROUP_BY)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(137)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserLPAR)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(138)
|
|
|
|
p.GroupByTerm()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(143)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
for _la == SLQParserCOMMA {
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(139)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserCOMMA)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(140)
|
|
|
|
p.GroupByTerm()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(145)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(146)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.Match(SLQParserRPAR)
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// IOrderByTermContext is an interface to support dynamic dispatch.
|
|
|
|
type IOrderByTermContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
|
|
|
// Getter signatures
|
|
|
|
Selector() ISelectorContext
|
|
|
|
ORDER_ASC() antlr.TerminalNode
|
|
|
|
ORDER_DESC() antlr.TerminalNode
|
|
|
|
|
|
|
|
// IsOrderByTermContext differentiates from other interfaces.
|
|
|
|
IsOrderByTermContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type OrderByTermContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyOrderByTermContext() *OrderByTermContext {
|
|
|
|
var p = new(OrderByTermContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_orderByTerm
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*OrderByTermContext) IsOrderByTermContext() {}
|
|
|
|
|
|
|
|
func NewOrderByTermContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OrderByTermContext {
|
|
|
|
var p = new(OrderByTermContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_orderByTerm
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) Selector() ISelectorContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(ISelectorContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(ISelectorContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) ORDER_ASC() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserORDER_ASC, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) ORDER_DESC() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserORDER_DESC, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterOrderByTerm(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitOrderByTerm(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByTermContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitOrderByTerm(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) OrderByTerm() (localctx IOrderByTermContext) {
|
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
|
|
|
localctx = NewOrderByTermContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 24, SLQParserRULE_orderByTerm)
|
2023-03-26 04:20:53 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(148)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.Selector()
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(150)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
if _la == SLQParserORDER_ASC || _la == SLQParserORDER_DESC {
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(149)
|
2023-03-26 04:20:53 +03:00
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
if !(_la == SLQParserORDER_ASC || _la == SLQParserORDER_DESC) {
|
|
|
|
p.GetErrorHandler().RecoverInline(p)
|
|
|
|
} else {
|
|
|
|
p.GetErrorHandler().ReportMatch(p)
|
|
|
|
p.Consume()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// IOrderByContext is an interface to support dynamic dispatch.
|
|
|
|
type IOrderByContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
|
|
|
// Getter signatures
|
|
|
|
ORDER_BY() antlr.TerminalNode
|
|
|
|
LPAR() antlr.TerminalNode
|
|
|
|
AllOrderByTerm() []IOrderByTermContext
|
|
|
|
OrderByTerm(i int) IOrderByTermContext
|
|
|
|
RPAR() antlr.TerminalNode
|
|
|
|
AllCOMMA() []antlr.TerminalNode
|
|
|
|
COMMA(i int) antlr.TerminalNode
|
|
|
|
|
|
|
|
// IsOrderByContext differentiates from other interfaces.
|
|
|
|
IsOrderByContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type OrderByContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyOrderByContext() *OrderByContext {
|
|
|
|
var p = new(OrderByContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_orderBy
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*OrderByContext) IsOrderByContext() {}
|
|
|
|
|
|
|
|
func NewOrderByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OrderByContext {
|
|
|
|
var p = new(OrderByContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_orderBy
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *OrderByContext) ORDER_BY() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserORDER_BY, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) LPAR() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserLPAR, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) AllOrderByTerm() []IOrderByTermContext {
|
|
|
|
children := s.GetChildren()
|
|
|
|
len := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if _, ok := ctx.(IOrderByTermContext); ok {
|
|
|
|
len++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tst := make([]IOrderByTermContext, len)
|
|
|
|
i := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if t, ok := ctx.(IOrderByTermContext); ok {
|
|
|
|
tst[i] = t.(IOrderByTermContext)
|
|
|
|
i++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return tst
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) OrderByTerm(i int) IOrderByTermContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
j := 0
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IOrderByTermContext); ok {
|
|
|
|
if j == i {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IOrderByTermContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) RPAR() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserRPAR, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) AllCOMMA() []antlr.TerminalNode {
|
|
|
|
return s.GetTokens(SLQParserCOMMA)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) COMMA(i int) antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserCOMMA, i)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterOrderBy(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitOrderBy(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *OrderByContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitOrderBy(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) OrderBy() (localctx IOrderByContext) {
|
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
|
|
|
localctx = NewOrderByContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 26, SLQParserRULE_orderBy)
|
2023-03-26 04:20:53 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(152)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.Match(SLQParserORDER_BY)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(153)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.Match(SLQParserLPAR)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(154)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.OrderByTerm()
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(159)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
for _la == SLQParserCOMMA {
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(155)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.Match(SLQParserCOMMA)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(156)
|
2023-03-26 04:20:53 +03:00
|
|
|
p.OrderByTerm()
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(161)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(162)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserRPAR)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
// ISelectorContext is an interface to support dynamic dispatch.
|
|
|
|
type ISelectorContext interface {
|
2023-03-19 07:58:00 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
|
|
|
// Getter signatures
|
2023-03-22 09:17:34 +03:00
|
|
|
AllNAME() []antlr.TerminalNode
|
|
|
|
NAME(i int) antlr.TerminalNode
|
2023-03-19 07:58:00 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
// IsSelectorContext differentiates from other interfaces.
|
|
|
|
IsSelectorContext()
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
type SelectorContext struct {
|
2023-03-19 07:58:00 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func NewEmptySelectorContext() *SelectorContext {
|
|
|
|
var p = new(SelectorContext)
|
2023-03-19 07:58:00 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_selector
|
2023-03-19 07:58:00 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (*SelectorContext) IsSelectorContext() {}
|
2023-03-19 07:58:00 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func NewSelectorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectorContext {
|
|
|
|
var p = new(SelectorContext)
|
2023-03-19 07:58:00 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2023-03-22 09:17:34 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_selector
|
2023-03-19 07:58:00 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorContext) GetParser() antlr.Parser { return s.parser }
|
2023-03-19 07:58:00 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorContext) AllNAME() []antlr.TerminalNode {
|
|
|
|
return s.GetTokens(SLQParserNAME)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorContext) NAME(i int) antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserNAME, i)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorContext) GetRuleContext() antlr.RuleContext {
|
2023-03-19 07:58:00 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2023-03-19 07:58:00 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorContext) EnterRule(listener antlr.ParseTreeListener) {
|
2023-03-19 07:58:00 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
listenerT.EnterSelector(s)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorContext) ExitRule(listener antlr.ParseTreeListener) {
|
2023-03-19 07:58:00 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
listenerT.ExitSelector(s)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2023-03-19 07:58:00 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2023-03-22 09:17:34 +03:00
|
|
|
return t.VisitSelector(s)
|
2023-03-19 07:58:00 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (p *SLQParser) Selector() (localctx ISelectorContext) {
|
2023-03-19 07:58:00 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
localctx = NewSelectorContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 28, SLQParserRULE_selector)
|
2023-03-19 07:58:00 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(164)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Match(SLQParserNAME)
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(166)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 1 {
|
2023-03-22 09:17:34 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(165)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Match(SLQParserNAME)
|
|
|
|
}
|
|
|
|
|
2023-03-19 07:58:00 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
// ISelectorElementContext is an interface to support dynamic dispatch.
|
|
|
|
type ISelectorElementContext interface {
|
2016-10-17 07:14:01 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
2023-03-22 09:17:34 +03:00
|
|
|
Selector() ISelectorContext
|
2023-03-19 07:58:00 +03:00
|
|
|
Alias() IAliasContext
|
2023-03-16 05:53:40 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
// IsSelectorElementContext differentiates from other interfaces.
|
|
|
|
IsSelectorElementContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
type SelectorElementContext struct {
|
2016-10-17 07:14:01 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func NewEmptySelectorElementContext() *SelectorElementContext {
|
|
|
|
var p = new(SelectorElementContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_selectorElement
|
2016-10-17 07:14:01 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (*SelectorElementContext) IsSelectorElementContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func NewSelectorElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectorElementContext {
|
|
|
|
var p = new(SelectorElementContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2023-03-22 09:17:34 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_selectorElement
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorElementContext) GetParser() antlr.Parser { return s.parser }
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorElementContext) Selector() ISelectorContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(ISelectorContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(ISelectorContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorElementContext) Alias() IAliasContext {
|
2023-03-19 07:58:00 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IAliasContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IAliasContext)
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorElementContext) GetRuleContext() antlr.RuleContext {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2016-10-31 01:35:56 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorElementContext) EnterRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
listenerT.EnterSelectorElement(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorElementContext) ExitRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
listenerT.ExitSelectorElement(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *SelectorElementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2023-03-22 09:17:34 +03:00
|
|
|
return t.VisitSelectorElement(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (p *SLQParser) SelectorElement() (localctx ISelectorElementContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
localctx = NewSelectorElementContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 30, SLQParserRULE_selectorElement)
|
2023-03-19 07:58:00 +03:00
|
|
|
var _la int
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(168)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Selector()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(170)
|
2023-03-19 07:58:00 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
|
|
|
if _la == SLQParserCOLON {
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(169)
|
2023-03-19 07:58:00 +03:00
|
|
|
p.Alias()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
// IAliasContext is an interface to support dynamic dispatch.
|
|
|
|
type IAliasContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
|
|
|
// Getter signatures
|
|
|
|
COLON() antlr.TerminalNode
|
|
|
|
ID() antlr.TerminalNode
|
|
|
|
|
|
|
|
// IsAliasContext differentiates from other interfaces.
|
|
|
|
IsAliasContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type AliasContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyAliasContext() *AliasContext {
|
|
|
|
var p = new(AliasContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_alias
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*AliasContext) IsAliasContext() {}
|
|
|
|
|
|
|
|
func NewAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AliasContext {
|
|
|
|
var p = new(AliasContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_alias
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *AliasContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *AliasContext) COLON() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserCOLON, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *AliasContext) ID() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserID, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *AliasContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *AliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *AliasContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterAlias(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *AliasContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitAlias(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *AliasContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitAlias(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Alias() (localctx IAliasContext) {
|
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
|
|
|
localctx = NewAliasContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 32, SLQParserRULE_alias)
|
2023-03-22 09:17:34 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(172)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Match(SLQParserCOLON)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(173)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Match(SLQParserID)
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// IHandleTableContext is an interface to support dynamic dispatch.
|
|
|
|
type IHandleTableContext interface {
|
2016-10-17 07:14:01 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
2023-03-22 09:17:34 +03:00
|
|
|
HANDLE() antlr.TerminalNode
|
|
|
|
NAME() antlr.TerminalNode
|
2023-03-16 05:53:40 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
// IsHandleTableContext differentiates from other interfaces.
|
|
|
|
IsHandleTableContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
type HandleTableContext struct {
|
2016-10-17 07:14:01 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func NewEmptyHandleTableContext() *HandleTableContext {
|
|
|
|
var p = new(HandleTableContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_handleTable
|
2016-10-17 07:14:01 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (*HandleTableContext) IsHandleTableContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func NewHandleTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HandleTableContext {
|
|
|
|
var p = new(HandleTableContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2023-03-22 09:17:34 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_handleTable
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleTableContext) GetParser() antlr.Parser { return s.parser }
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleTableContext) HANDLE() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserHANDLE, 0)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleTableContext) NAME() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserNAME, 0)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleTableContext) GetRuleContext() antlr.RuleContext {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2016-10-31 01:35:56 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleTableContext) EnterRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
listenerT.EnterHandleTable(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleTableContext) ExitRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
listenerT.ExitHandleTable(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleTableContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2023-03-22 09:17:34 +03:00
|
|
|
return t.VisitHandleTable(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (p *SLQParser) HandleTable() (localctx IHandleTableContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
localctx = NewHandleTableContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 34, SLQParserRULE_handleTable)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(175)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Match(SLQParserHANDLE)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(176)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Match(SLQParserNAME)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
// IHandleContext is an interface to support dynamic dispatch.
|
|
|
|
type IHandleContext interface {
|
2016-10-17 07:14:01 +03:00
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
2023-03-22 09:17:34 +03:00
|
|
|
HANDLE() antlr.TerminalNode
|
2023-03-16 05:53:40 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
// IsHandleContext differentiates from other interfaces.
|
|
|
|
IsHandleContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
type HandleContext struct {
|
2016-10-17 07:14:01 +03:00
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func NewEmptyHandleContext() *HandleContext {
|
|
|
|
var p = new(HandleContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_handle
|
2016-10-17 07:14:01 +03:00
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (*HandleContext) IsHandleContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func NewHandleContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HandleContext {
|
|
|
|
var p = new(HandleContext)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
2023-03-22 09:17:34 +03:00
|
|
|
p.RuleIndex = SLQParserRULE_handle
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleContext) GetParser() antlr.Parser { return s.parser }
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleContext) HANDLE() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserHANDLE, 0)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleContext) GetRuleContext() antlr.RuleContext {
|
2016-10-17 07:14:01 +03:00
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
2016-10-31 01:35:56 +03:00
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleContext) EnterRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
listenerT.EnterHandle(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleContext) ExitRule(listener antlr.ParseTreeListener) {
|
2016-10-17 07:14:01 +03:00
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
2023-03-22 09:17:34 +03:00
|
|
|
listenerT.ExitHandle(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *HandleContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
2023-03-22 09:17:34 +03:00
|
|
|
return t.VisitHandle(s)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (p *SLQParser) Handle() (localctx IHandleContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
localctx = NewHandleContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 36, SLQParserRULE_handle)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(178)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Match(SLQParserHANDLE)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// IRowRangeContext is an interface to support dynamic dispatch.
|
|
|
|
type IRowRangeContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
|
|
|
RBRA() antlr.TerminalNode
|
|
|
|
AllNN() []antlr.TerminalNode
|
|
|
|
NN(i int) antlr.TerminalNode
|
|
|
|
COLON() antlr.TerminalNode
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
// IsRowRangeContext differentiates from other interfaces.
|
|
|
|
IsRowRangeContext()
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
type RowRangeContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyRowRangeContext() *RowRangeContext {
|
|
|
|
var p = new(RowRangeContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_rowRange
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (*RowRangeContext) IsRowRangeContext() {}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
func NewRowRangeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RowRangeContext {
|
|
|
|
var p = new(RowRangeContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_rowRange
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *RowRangeContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *RowRangeContext) RBRA() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserRBRA, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *RowRangeContext) AllNN() []antlr.TerminalNode {
|
|
|
|
return s.GetTokens(SLQParserNN)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *RowRangeContext) NN(i int) antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserNN, i)
|
2016-10-17 07:14:01 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *RowRangeContext) COLON() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserCOLON, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *RowRangeContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2016-10-31 01:35:56 +03:00
|
|
|
func (s *RowRangeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
func (s *RowRangeContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterRowRange(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *RowRangeContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitRowRange(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *RowRangeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2016-10-17 07:14:01 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitRowRange(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) RowRange() (localctx IRowRangeContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2016-10-17 07:14:01 +03:00
|
|
|
localctx = NewRowRangeContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 38, SLQParserRULE_rowRange)
|
2016-10-17 07:14:01 +03:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(180)
|
|
|
|
p.Match(SLQParserT__3)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(189)
|
2016-10-17 07:14:01 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 17, p.GetParserRuleContext()) == 1 {
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(181)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserNN)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(182)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserCOLON)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(183)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserNN)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 17, p.GetParserRuleContext()) == 2 {
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(184)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserNN)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(185)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserCOLON)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 17, p.GetParserRuleContext()) == 3 {
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(186)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserCOLON)
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(187)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserNN)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
} else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 17, p.GetParserRuleContext()) == 4 {
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(188)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserNN)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(191)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserRBRA)
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
return localctx
|
|
|
|
}
|
2016-10-17 07:14:01 +03:00
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IExprContext is an interface to support dynamic dispatch.
|
|
|
|
type IExprContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
2023-03-22 09:17:34 +03:00
|
|
|
Selector() ISelectorContext
|
2023-03-16 05:53:40 +03:00
|
|
|
Literal() ILiteralContext
|
|
|
|
UnaryOperator() IUnaryOperatorContext
|
|
|
|
AllExpr() []IExprContext
|
|
|
|
Expr(i int) IExprContext
|
2023-03-27 05:03:40 +03:00
|
|
|
Func_() IFuncContext
|
2023-03-26 04:20:53 +03:00
|
|
|
ORDER_ASC() antlr.TerminalNode
|
|
|
|
ORDER_DESC() antlr.TerminalNode
|
2023-03-16 05:53:40 +03:00
|
|
|
LT() antlr.TerminalNode
|
|
|
|
LT_EQ() antlr.TerminalNode
|
|
|
|
GT() antlr.TerminalNode
|
|
|
|
GT_EQ() antlr.TerminalNode
|
|
|
|
EQ() antlr.TerminalNode
|
|
|
|
NEQ() antlr.TerminalNode
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IsExprContext differentiates from other interfaces.
|
|
|
|
IsExprContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type ExprContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyExprContext() *ExprContext {
|
|
|
|
var p = new(ExprContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_expr
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*ExprContext) IsExprContext() {}
|
|
|
|
|
|
|
|
func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext {
|
|
|
|
var p = new(ExprContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_expr
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
2023-03-22 09:17:34 +03:00
|
|
|
func (s *ExprContext) Selector() ISelectorContext {
|
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(ISelectorContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(ISelectorContext)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) Literal() ILiteralContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(ILiteralContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(ILiteralContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) UnaryOperator() IUnaryOperatorContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IUnaryOperatorContext); ok {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IUnaryOperatorContext)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) AllExpr() []IExprContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
children := s.GetChildren()
|
|
|
|
len := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if _, ok := ctx.(IExprContext); ok {
|
|
|
|
len++
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
tst := make([]IExprContext, len)
|
|
|
|
i := 0
|
|
|
|
for _, ctx := range children {
|
|
|
|
if t, ok := ctx.(IExprContext); ok {
|
2020-08-06 20:58:47 +03:00
|
|
|
tst[i] = t.(IExprContext)
|
2022-12-24 07:43:20 +03:00
|
|
|
i++
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return tst
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) Expr(i int) IExprContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
j := 0
|
|
|
|
for _, ctx := range s.GetChildren() {
|
|
|
|
if _, ok := ctx.(IExprContext); ok {
|
|
|
|
if j == i {
|
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return t.(IExprContext)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
func (s *ExprContext) Func_() IFuncContext {
|
2022-12-24 07:43:20 +03:00
|
|
|
var t antlr.RuleContext
|
|
|
|
for _, ctx := range s.GetChildren() {
|
2023-03-27 05:03:40 +03:00
|
|
|
if _, ok := ctx.(IFuncContext); ok {
|
2022-12-24 07:43:20 +03:00
|
|
|
t = ctx.(antlr.RuleContext)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if t == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
return t.(IFuncContext)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
2023-03-26 04:20:53 +03:00
|
|
|
func (s *ExprContext) ORDER_ASC() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserORDER_ASC, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) ORDER_DESC() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserORDER_DESC, 0)
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *ExprContext) LT() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserLT, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) LT_EQ() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserLT_EQ, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) GT() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserGT, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) GT_EQ() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserGT_EQ, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) EQ() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserEQ, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) NEQ() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserNEQ, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterExpr(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *ExprContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitExpr(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *ExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2020-08-06 20:58:47 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitExpr(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Expr() (localctx IExprContext) {
|
|
|
|
return p.expr(0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) expr(_p int) (localctx IExprContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext()
|
|
|
|
_parentState := p.GetState()
|
|
|
|
localctx = NewExprContext(p, p.GetParserRuleContext(), _parentState)
|
|
|
|
var _prevctx IExprContext = localctx
|
|
|
|
var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning.
|
2023-03-27 05:03:40 +03:00
|
|
|
_startState := 40
|
|
|
|
p.EnterRecursionRule(localctx, 40, SLQParserRULE_expr, _p)
|
2020-08-06 20:58:47 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.UnrollRecursionContexts(_parentctx)
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
var _alt int
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(200)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
|
|
|
|
switch p.GetTokenStream().LA(1) {
|
2023-03-22 09:17:34 +03:00
|
|
|
case SLQParserNAME:
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(194)
|
2023-03-22 09:17:34 +03:00
|
|
|
p.Selector()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
case SLQParserNULL, SLQParserNN, SLQParserNUMBER, SLQParserSTRING:
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(195)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Literal()
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
case SLQParserT__11, SLQParserT__12, SLQParserORDER_ASC, SLQParserORDER_DESC:
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(196)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.UnaryOperator()
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(197)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(9)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
case SLQParserID:
|
2020-08-06 20:58:47 +03:00
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(199)
|
|
|
|
p.Func_()
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
|
|
|
|
}
|
|
|
|
p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1))
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(229)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
2023-03-27 05:03:40 +03:00
|
|
|
_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 21, p.GetParserRuleContext())
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
|
|
|
|
if _alt == 1 {
|
|
|
|
if p.GetParseListeners() != nil {
|
|
|
|
p.TriggerExitRuleEvent()
|
|
|
|
}
|
|
|
|
_prevctx = localctx
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(227)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
2023-03-27 05:03:40 +03:00
|
|
|
switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 20, p.GetParserRuleContext()) {
|
2020-08-06 20:58:47 +03:00
|
|
|
case 1:
|
|
|
|
localctx = NewExprContext(p, _parentctx, _parentState)
|
|
|
|
p.PushNewRecursionContext(localctx, _startState, SLQParserRULE_expr)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(202)
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if !(p.Precpred(p.GetParserRuleContext(), 8)) {
|
|
|
|
panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", ""))
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(203)
|
|
|
|
p.Match(SLQParserT__4)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(204)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(9)
|
|
|
|
}
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
localctx = NewExprContext(p, _parentctx, _parentState)
|
|
|
|
p.PushNewRecursionContext(localctx, _startState, SLQParserRULE_expr)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(205)
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if !(p.Precpred(p.GetParserRuleContext(), 7)) {
|
|
|
|
panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", ""))
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(206)
|
2020-08-06 20:58:47 +03:00
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&196) != 0) {
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().RecoverInline(p)
|
|
|
|
} else {
|
|
|
|
p.GetErrorHandler().ReportMatch(p)
|
|
|
|
p.Consume()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(207)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(8)
|
|
|
|
}
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
localctx = NewExprContext(p, _parentctx, _parentState)
|
|
|
|
p.PushNewRecursionContext(localctx, _startState, SLQParserRULE_expr)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(208)
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if !(p.Precpred(p.GetParserRuleContext(), 6)) {
|
|
|
|
panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", ""))
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(209)
|
2020-08-06 20:58:47 +03:00
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
2023-03-26 04:20:53 +03:00
|
|
|
if !(_la == SLQParserORDER_ASC || _la == SLQParserORDER_DESC) {
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().RecoverInline(p)
|
|
|
|
} else {
|
|
|
|
p.GetErrorHandler().ReportMatch(p)
|
|
|
|
p.Consume()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(210)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(7)
|
|
|
|
}
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
localctx = NewExprContext(p, _parentctx, _parentState)
|
|
|
|
p.PushNewRecursionContext(localctx, _startState, SLQParserRULE_expr)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(211)
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if !(p.Precpred(p.GetParserRuleContext(), 5)) {
|
|
|
|
panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", ""))
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(212)
|
2020-08-06 20:58:47 +03:00
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1792) != 0) {
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().RecoverInline(p)
|
|
|
|
} else {
|
|
|
|
p.GetErrorHandler().ReportMatch(p)
|
|
|
|
p.Consume()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(213)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(6)
|
|
|
|
}
|
|
|
|
|
|
|
|
case 5:
|
|
|
|
localctx = NewExprContext(p, _parentctx, _parentState)
|
|
|
|
p.PushNewRecursionContext(localctx, _startState, SLQParserRULE_expr)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(214)
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if !(p.Precpred(p.GetParserRuleContext(), 4)) {
|
|
|
|
panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", ""))
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(215)
|
2020-08-06 20:58:47 +03:00
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&16106127360) != 0) {
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().RecoverInline(p)
|
|
|
|
} else {
|
|
|
|
p.GetErrorHandler().ReportMatch(p)
|
|
|
|
p.Consume()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(216)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(5)
|
|
|
|
}
|
|
|
|
|
|
|
|
case 6:
|
|
|
|
localctx = NewExprContext(p, _parentctx, _parentState)
|
|
|
|
p.PushNewRecursionContext(localctx, _startState, SLQParserRULE_expr)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(217)
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if !(p.Precpred(p.GetParserRuleContext(), 3)) {
|
|
|
|
panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 3)", ""))
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(221)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
|
|
|
|
|
|
|
switch p.GetTokenStream().LA(1) {
|
|
|
|
case SLQParserEQ:
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(218)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserEQ)
|
|
|
|
}
|
|
|
|
|
|
|
|
case SLQParserNEQ:
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(219)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.Match(SLQParserNEQ)
|
|
|
|
}
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
case SLQParserT__11, SLQParserT__12, SLQParserORDER_ASC, SLQParserORDER_DESC, SLQParserID, SLQParserNULL, SLQParserNN, SLQParserNUMBER, SLQParserNAME, SLQParserSTRING:
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
default:
|
|
|
|
panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(223)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(4)
|
|
|
|
}
|
|
|
|
|
|
|
|
case 7:
|
|
|
|
localctx = NewExprContext(p, _parentctx, _parentState)
|
|
|
|
p.PushNewRecursionContext(localctx, _startState, SLQParserRULE_expr)
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(224)
|
2020-08-06 20:58:47 +03:00
|
|
|
|
|
|
|
if !(p.Precpred(p.GetParserRuleContext(), 2)) {
|
|
|
|
panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", ""))
|
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(225)
|
|
|
|
p.Match(SLQParserT__10)
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(226)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.expr(3)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(231)
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().Sync(p)
|
2023-03-27 05:03:40 +03:00
|
|
|
_alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 21, p.GetParserRuleContext())
|
2020-08-06 20:58:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// ILiteralContext is an interface to support dynamic dispatch.
|
|
|
|
type ILiteralContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
|
|
|
|
2023-03-16 05:53:40 +03:00
|
|
|
// Getter signatures
|
|
|
|
NN() antlr.TerminalNode
|
|
|
|
NUMBER() antlr.TerminalNode
|
|
|
|
STRING() antlr.TerminalNode
|
|
|
|
NULL() antlr.TerminalNode
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IsLiteralContext differentiates from other interfaces.
|
|
|
|
IsLiteralContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type LiteralContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyLiteralContext() *LiteralContext {
|
|
|
|
var p = new(LiteralContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_literal
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*LiteralContext) IsLiteralContext() {}
|
|
|
|
|
|
|
|
func NewLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LiteralContext {
|
|
|
|
var p = new(LiteralContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_literal
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *LiteralContext) GetParser() antlr.Parser { return s.parser }
|
|
|
|
|
|
|
|
func (s *LiteralContext) NN() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserNN, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *LiteralContext) NUMBER() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserNUMBER, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *LiteralContext) STRING() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserSTRING, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *LiteralContext) NULL() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserNULL, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *LiteralContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *LiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *LiteralContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterLiteral(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *LiteralContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitLiteral(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *LiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2020-08-06 20:58:47 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitLiteral(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Literal() (localctx ILiteralContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
localctx = NewLiteralContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 42, SLQParserRULE_literal)
|
2020-08-06 20:58:47 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(232)
|
2020-08-06 20:58:47 +03:00
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&275817431040) != 0) {
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().RecoverInline(p)
|
|
|
|
} else {
|
|
|
|
p.GetErrorHandler().ReportMatch(p)
|
|
|
|
p.Consume()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
// IUnaryOperatorContext is an interface to support dynamic dispatch.
|
|
|
|
type IUnaryOperatorContext interface {
|
|
|
|
antlr.ParserRuleContext
|
|
|
|
|
|
|
|
// GetParser returns the parser.
|
|
|
|
GetParser() antlr.Parser
|
2023-03-26 04:20:53 +03:00
|
|
|
|
|
|
|
// Getter signatures
|
|
|
|
ORDER_DESC() antlr.TerminalNode
|
|
|
|
ORDER_ASC() antlr.TerminalNode
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
// IsUnaryOperatorContext differentiates from other interfaces.
|
|
|
|
IsUnaryOperatorContext()
|
|
|
|
}
|
|
|
|
|
|
|
|
type UnaryOperatorContext struct {
|
|
|
|
*antlr.BaseParserRuleContext
|
|
|
|
parser antlr.Parser
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEmptyUnaryOperatorContext() *UnaryOperatorContext {
|
|
|
|
var p = new(UnaryOperatorContext)
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1)
|
|
|
|
p.RuleIndex = SLQParserRULE_unaryOperator
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (*UnaryOperatorContext) IsUnaryOperatorContext() {}
|
|
|
|
|
|
|
|
func NewUnaryOperatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnaryOperatorContext {
|
|
|
|
var p = new(UnaryOperatorContext)
|
|
|
|
|
|
|
|
p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState)
|
|
|
|
|
|
|
|
p.parser = parser
|
|
|
|
p.RuleIndex = SLQParserRULE_unaryOperator
|
|
|
|
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *UnaryOperatorContext) GetParser() antlr.Parser { return s.parser }
|
2023-03-26 04:20:53 +03:00
|
|
|
|
|
|
|
func (s *UnaryOperatorContext) ORDER_DESC() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserORDER_DESC, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *UnaryOperatorContext) ORDER_ASC() antlr.TerminalNode {
|
|
|
|
return s.GetToken(SLQParserORDER_ASC, 0)
|
|
|
|
}
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
func (s *UnaryOperatorContext) GetRuleContext() antlr.RuleContext {
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *UnaryOperatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
|
|
|
|
return antlr.TreesStringTree(s, ruleNames, recog)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *UnaryOperatorContext) EnterRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.EnterUnaryOperator(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *UnaryOperatorContext) ExitRule(listener antlr.ParseTreeListener) {
|
|
|
|
if listenerT, ok := listener.(SLQListener); ok {
|
|
|
|
listenerT.ExitUnaryOperator(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-24 07:43:20 +03:00
|
|
|
func (s *UnaryOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
|
2020-08-06 20:58:47 +03:00
|
|
|
switch t := visitor.(type) {
|
|
|
|
case SLQVisitor:
|
|
|
|
return t.VisitUnaryOperator(s)
|
|
|
|
|
|
|
|
default:
|
|
|
|
return t.VisitChildren(s)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) UnaryOperator() (localctx IUnaryOperatorContext) {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
localctx = NewUnaryOperatorContext(p, p.GetParserRuleContext(), p.GetState())
|
2023-03-27 05:03:40 +03:00
|
|
|
p.EnterRule(localctx, 44, SLQParserRULE_unaryOperator)
|
2020-08-06 20:58:47 +03:00
|
|
|
var _la int
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
p.ExitRule()
|
|
|
|
}()
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
if err := recover(); err != nil {
|
|
|
|
if v, ok := err.(antlr.RecognitionException); ok {
|
|
|
|
localctx.SetException(v)
|
|
|
|
p.GetErrorHandler().ReportError(p, v)
|
|
|
|
p.GetErrorHandler().Recover(p, v)
|
|
|
|
} else {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
p.EnterOuterAlt(localctx, 1)
|
|
|
|
{
|
2023-03-27 05:03:40 +03:00
|
|
|
p.SetState(234)
|
2020-08-06 20:58:47 +03:00
|
|
|
_la = p.GetTokenStream().LA(1)
|
|
|
|
|
2023-03-27 05:03:40 +03:00
|
|
|
if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&110592) != 0) {
|
2020-08-06 20:58:47 +03:00
|
|
|
p.GetErrorHandler().RecoverInline(p)
|
|
|
|
} else {
|
|
|
|
p.GetErrorHandler().ReportMatch(p)
|
|
|
|
p.Consume()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return localctx
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool {
|
|
|
|
switch ruleIndex {
|
2023-03-27 05:03:40 +03:00
|
|
|
case 20:
|
2020-08-06 20:58:47 +03:00
|
|
|
var t *ExprContext = nil
|
|
|
|
if localctx != nil {
|
|
|
|
t = localctx.(*ExprContext)
|
|
|
|
}
|
|
|
|
return p.Expr_Sempred(t, predIndex)
|
|
|
|
|
|
|
|
default:
|
|
|
|
panic("No predicate with index: " + fmt.Sprint(ruleIndex))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *SLQParser) Expr_Sempred(localctx antlr.RuleContext, predIndex int) bool {
|
2022-12-24 07:43:20 +03:00
|
|
|
this := p
|
|
|
|
_ = this
|
|
|
|
|
2020-08-06 20:58:47 +03:00
|
|
|
switch predIndex {
|
|
|
|
case 0:
|
|
|
|
return p.Precpred(p.GetParserRuleContext(), 8)
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
return p.Precpred(p.GetParserRuleContext(), 7)
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
return p.Precpred(p.GetParserRuleContext(), 6)
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
return p.Precpred(p.GetParserRuleContext(), 5)
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
return p.Precpred(p.GetParserRuleContext(), 4)
|
|
|
|
|
|
|
|
case 5:
|
|
|
|
return p.Precpred(p.GetParserRuleContext(), 3)
|
|
|
|
|
|
|
|
case 6:
|
|
|
|
return p.Precpred(p.GetParserRuleContext(), 2)
|
|
|
|
|
|
|
|
default:
|
|
|
|
panic("No predicate with index: " + fmt.Sprint(predIndex))
|
|
|
|
}
|
|
|
|
}
|