// Code generated from CAQLParser.g4 by ANTLR 4.9.3. DO NOT EDIT. package parser // CAQLParser import ( "fmt" "reflect" "strconv" "github.com/antlr/antlr4/runtime/Go/antlr" ) // Suppress unused import errors var _ = fmt.Printf var _ = reflect.Copy var _ = strconv.Itoa var parserATN = []uint16{ 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 80, 192, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 32, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 48, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 66, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 86, 10, 3, 12, 3, 14, 3, 89, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 97, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 107, 10, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 7, 5, 117, 10, 5, 12, 5, 14, 5, 120, 11, 5, 3, 6, 3, 6, 5, 6, 124, 10, 6, 3, 7, 3, 7, 3, 7, 5, 7, 129, 10, 7, 3, 7, 3, 7, 7, 7, 133, 10, 7, 12, 7, 14, 7, 136, 11, 7, 3, 7, 5, 7, 139, 10, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 5, 9, 147, 10, 9, 3, 9, 3, 9, 7, 9, 151, 10, 9, 12, 9, 14, 9, 154, 11, 9, 3, 9, 5, 9, 157, 10, 9, 3, 9, 3, 9, 3, 10, 3, 10, 5, 10, 163, 10, 10, 3, 10, 3, 10, 7, 10, 167, 10, 10, 12, 10, 14, 10, 170, 11, 10, 3, 10, 5, 10, 173, 10, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 188, 10, 11, 3, 12, 3, 12, 3, 12, 4, 134, 152, 4, 4, 8, 13, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 2, 11, 3, 2, 12, 13, 3, 2, 14, 16, 3, 2, 8, 11, 3, 2, 6, 7, 5, 2, 29, 29, 31, 31, 48, 48, 4, 2, 6, 11, 40, 40, 4, 2, 4, 5, 46, 46, 7, 2, 36, 36, 50, 50, 58, 58, 72, 73, 75, 75, 4, 2, 71, 71, 75, 75, 2, 216, 2, 24, 3, 2, 2, 2, 4, 31, 3, 2, 2, 2, 6, 96, 3, 2, 2, 2, 8, 106, 3, 2, 2, 2, 10, 123, 3, 2, 2, 2, 12, 125, 3, 2, 2, 2, 14, 142, 3, 2, 2, 2, 16, 144, 3, 2, 2, 2, 18, 160, 3, 2, 2, 2, 20, 187, 3, 2, 2, 2, 22, 189, 3, 2, 2, 2, 24, 25, 5, 4, 3, 2, 25, 26, 7, 2, 2, 3, 26, 3, 3, 2, 2, 2, 27, 28, 8, 3, 1, 2, 28, 32, 5, 14, 8, 2, 29, 32, 5, 8, 5, 2, 30, 32, 5, 6, 4, 2, 31, 27, 3, 2, 2, 2, 31, 29, 3, 2, 2, 2, 31, 30, 3, 2, 2, 2, 32, 87, 3, 2, 2, 2, 33, 34, 12, 15, 2, 2, 34, 35, 9, 2, 2, 2, 35, 86, 5, 4, 3, 16, 36, 37, 12, 14, 2, 2, 37, 38, 9, 3, 2, 2, 38, 86, 5, 4, 3, 15, 39, 40, 12, 13, 2, 2, 40, 41, 7, 20, 2, 2, 41, 86, 5, 4, 3, 14, 42, 43, 12, 12, 2, 2, 43, 44, 9, 4, 2, 2, 44, 86, 5, 4, 3, 13, 45, 47, 12, 11, 2, 2, 46, 48, 7, 49, 2, 2, 47, 46, 3, 2, 2, 2, 47, 48, 3, 2, 2, 2, 48, 49, 3, 2, 2, 2, 49, 50, 7, 40, 2, 2, 50, 86, 5, 4, 3, 12, 51, 52, 12, 10, 2, 2, 52, 53, 9, 5, 2, 2, 53, 86, 5, 4, 3, 11, 54, 55, 12, 9, 2, 2, 55, 56, 9, 6, 2, 2, 56, 57, 9, 7, 2, 2, 57, 86, 5, 4, 3, 10, 58, 59, 12, 8, 2, 2, 59, 60, 9, 6, 2, 2, 60, 61, 7, 49, 2, 2, 61, 62, 7, 40, 2, 2, 62, 86, 5, 4, 3, 9, 63, 65, 12, 7, 2, 2, 64, 66, 7, 49, 2, 2, 65, 64, 3, 2, 2, 2, 65, 66, 3, 2, 2, 2, 66, 67, 3, 2, 2, 2, 67, 68, 9, 8, 2, 2, 68, 86, 5, 4, 3, 8, 69, 70, 12, 6, 2, 2, 70, 71, 7, 30, 2, 2, 71, 86, 5, 4, 3, 7, 72, 73, 12, 5, 2, 2, 73, 74, 7, 51, 2, 2, 74, 86, 5, 4, 3, 6, 75, 76, 12, 4, 2, 2, 76, 77, 7, 17, 2, 2, 77, 78, 5, 4, 3, 2, 78, 79, 7, 18, 2, 2, 79, 80, 5, 4, 3, 5, 80, 86, 3, 2, 2, 2, 81, 82, 12, 3, 2, 2, 82, 83, 7, 17, 2, 2, 83, 84, 7, 18, 2, 2, 84, 86, 5, 4, 3, 4, 85, 33, 3, 2, 2, 2, 85, 36, 3, 2, 2, 2, 85, 39, 3, 2, 2, 2, 85, 42, 3, 2, 2, 2, 85, 45, 3, 2, 2, 2, 85, 51, 3, 2, 2, 2, 85, 54, 3, 2, 2, 2, 85, 58, 3, 2, 2, 2, 85, 63, 3, 2, 2, 2, 85, 69, 3, 2, 2, 2, 85, 72, 3, 2, 2, 2, 85, 75, 3, 2, 2, 2, 85, 81, 3, 2, 2, 2, 86, 89, 3, 2, 2, 2, 87, 85, 3, 2, 2, 2, 87, 88, 3, 2, 2, 2, 88, 5, 3, 2, 2, 2, 89, 87, 3, 2, 2, 2, 90, 91, 7, 12, 2, 2, 91, 97, 5, 4, 3, 2, 92, 93, 7, 13, 2, 2, 93, 97, 5, 4, 3, 2, 94, 95, 7, 49, 2, 2, 95, 97, 5, 4, 3, 2, 96, 90, 3, 2, 2, 2, 96, 92, 3, 2, 2, 2, 96, 94, 3, 2, 2, 2, 97, 7, 3, 2, 2, 2, 98, 99, 8, 5, 1, 2, 99, 107, 7, 71, 2, 2, 100, 107, 5, 10, 6, 2, 101, 107, 5, 12, 7, 2, 102, 103, 7, 22, 2, 2, 103, 104, 5, 4, 3, 2, 104, 105, 7, 23, 2, 2, 105, 107, 3, 2, 2, 2, 106, 98, 3, 2, 2, 2, 106, 100, 3, 2, 2, 2, 106, 101, 3, 2, 2, 2, 106, 102, 3, 2, 2, 2, 107, 118, 3, 2, 2, 2, 108, 109, 12, 4, 2, 2, 109, 110, 7, 3, 2, 2, 110, 117, 7, 71, 2, 2, 111, 112, 12, 3, 2, 2, 112, 113, 7, 26, 2, 2, 113, 114, 5, 4, 3, 2, 114, 115, 7, 27, 2, 2, 115, 117, 3, 2, 2, 2, 116, 108, 3, 2, 2, 2, 116, 111, 3, 2, 2, 2, 117, 120, 3, 2, 2, 2, 118, 116, 3, 2, 2, 2, 118, 119, 3, 2, 2, 2, 119, 9, 3, 2, 2, 2, 120, 118, 3, 2, 2, 2, 121, 124, 5, 16, 9, 2, 122, 124, 5, 18, 10, 2, 123, 121, 3, 2, 2, 2, 123, 122, 3, 2, 2, 2, 124, 11, 3, 2, 2, 2, 125, 126, 7, 71, 2, 2, 126, 128, 7, 22, 2, 2, 127, 129, 5, 4, 3, 2, 128, 127, 3, 2, 2, 2, 128, 129, 3, 2, 2, 2, 129, 134, 3, 2, 2, 2, 130, 131, 7, 21, 2, 2, 131, 133, 5, 4, 3, 2, 132, 130, 3, 2, 2, 2, 133, 136, 3, 2, 2, 2, 134, 135, 3, 2, 2, 2, 134, 132, 3, 2, 2, 2, 135, 138, 3, 2, 2, 2, 136, 134, 3, 2, 2, 2, 137, 139, 7, 21, 2, 2, 138, 137, 3, 2, 2, 2, 138, 139, 3, 2, 2, 2, 139, 140, 3, 2, 2, 2, 140, 141, 7, 23, 2, 2, 141, 13, 3, 2, 2, 2, 142, 143, 9, 9, 2, 2, 143, 15, 3, 2, 2, 2, 144, 146, 7, 26, 2, 2, 145, 147, 5, 4, 3, 2, 146, 145, 3, 2, 2, 2, 146, 147, 3, 2, 2, 2, 147, 152, 3, 2, 2, 2, 148, 149, 7, 21, 2, 2, 149, 151, 5, 4, 3, 2, 150, 148, 3, 2, 2, 2, 151, 154, 3, 2, 2, 2, 152, 153, 3, 2, 2, 2, 152, 150, 3, 2, 2, 2, 153, 156, 3, 2, 2, 2, 154, 152, 3, 2, 2, 2, 155, 157, 7, 21, 2, 2, 156, 155, 3, 2, 2, 2, 156, 157, 3, 2, 2, 2, 157, 158, 3, 2, 2, 2, 158, 159, 7, 27, 2, 2, 159, 17, 3, 2, 2, 2, 160, 162, 7, 24, 2, 2, 161, 163, 5, 20, 11, 2, 162, 161, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 168, 3, 2, 2, 2, 164, 165, 7, 21, 2, 2, 165, 167, 5, 20, 11, 2, 166, 164, 3, 2, 2, 2, 167, 170, 3, 2, 2, 2, 168, 166, 3, 2, 2, 2, 168, 169, 3, 2, 2, 2, 169, 172, 3, 2, 2, 2, 170, 168, 3, 2, 2, 2, 171, 173, 7, 21, 2, 2, 172, 171, 3, 2, 2, 2, 172, 173, 3, 2, 2, 2, 173, 174, 3, 2, 2, 2, 174, 175, 7, 25, 2, 2, 175, 19, 3, 2, 2, 2, 176, 188, 7, 71, 2, 2, 177, 178, 5, 22, 12, 2, 178, 179, 7, 18, 2, 2, 179, 180, 5, 4, 3, 2, 180, 188, 3, 2, 2, 2, 181, 182, 7, 26, 2, 2, 182, 183, 5, 4, 3, 2, 183, 184, 7, 27, 2, 2, 184, 185, 7, 18, 2, 2, 185, 186, 5, 4, 3, 2, 186, 188, 3, 2, 2, 2, 187, 176, 3, 2, 2, 2, 187, 177, 3, 2, 2, 2, 187, 181, 3, 2, 2, 2, 188, 21, 3, 2, 2, 2, 189, 190, 9, 10, 2, 2, 190, 23, 3, 2, 2, 2, 22, 31, 47, 65, 85, 87, 96, 106, 116, 118, 123, 128, 134, 138, 146, 152, 156, 162, 168, 172, 187, } var literalNames = []string{ "", "'.'", "'=~'", "'!~'", "'=='", "'!='", "'<'", "'>'", "'<='", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'?'", "':'", "'::'", "'..'", "','", "'('", "')'", "'{'", "'}'", "'['", "']'", } var symbolicNames = []string{ "", "DOT", "T_REGEX_MATCH", "T_REGEX_NON_MATCH", "T_EQ", "T_NE", "T_LT", "T_GT", "T_LE", "T_GE", "T_PLUS", "T_MINUS", "T_TIMES", "T_DIV", "T_MOD", "T_QUESTION", "T_COLON", "T_SCOPE", "T_RANGE", "T_COMMA", "T_OPEN", "T_CLOSE", "T_OBJECT_OPEN", "T_OBJECT_CLOSE", "T_ARRAY_OPEN", "T_ARRAY_CLOSE", "T_AGGREGATE", "T_ALL", "T_AND", "T_ANY", "T_ASC", "T_COLLECT", "T_DESC", "T_DISTINCT", "T_FALSE", "T_FILTER", "T_FOR", "T_GRAPH", "T_IN", "T_INBOUND", "T_INSERT", "T_INTO", "T_K_SHORTEST_PATHS", "T_LET", "T_LIKE", "T_LIMIT", "T_NONE", "T_NOT", "T_NULL", "T_OR", "T_OUTBOUND", "T_REMOVE", "T_REPLACE", "T_RETURN", "T_SHORTEST_PATH", "T_SORT", "T_TRUE", "T_UPDATE", "T_UPSERT", "T_WITH", "T_KEEP", "T_COUNT", "T_OPTIONS", "T_PRUNE", "T_SEARCH", "T_TO", "T_CURRENT", "T_NEW", "T_OLD", "T_STRING", "T_INT", "T_FLOAT", "T_PARAMETER", "T_QUOTED_STRING", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", "UNEXPECTED_CHAR", "ERROR_RECONGNIGION", } var ruleNames = []string{ "parse", "expression", "operator_unary", "reference", "compound_value", "function_call", "value_literal", "array", "object", "object_element", "object_element_name", } type CAQLParser struct { *antlr.BaseParser } // NewCAQLParser produces a new parser instance for the optional input antlr.TokenStream. // // The *CAQLParser instance produced may be reused by calling the SetInputStream method. // The initial parser configuration is expensive to construct, and the object is not thread-safe; // however, if used within a Golang sync.Pool, the construction cost amortizes well and the // objects can be used in a thread-safe manner. func NewCAQLParser(input antlr.TokenStream) *CAQLParser { this := new(CAQLParser) deserializer := antlr.NewATNDeserializer(nil) deserializedATN := deserializer.DeserializeFromUInt16(parserATN) decisionToDFA := make([]*antlr.DFA, len(deserializedATN.DecisionToState)) for index, ds := range deserializedATN.DecisionToState { decisionToDFA[index] = antlr.NewDFA(ds, index) } this.BaseParser = antlr.NewBaseParser(input) this.Interpreter = antlr.NewParserATNSimulator(this, deserializedATN, decisionToDFA, antlr.NewPredictionContextCache()) this.RuleNames = ruleNames this.LiteralNames = literalNames this.SymbolicNames = symbolicNames this.GrammarFileName = "CAQLParser.g4" return this } // CAQLParser tokens. const ( CAQLParserEOF = antlr.TokenEOF CAQLParserDOT = 1 CAQLParserT_REGEX_MATCH = 2 CAQLParserT_REGEX_NON_MATCH = 3 CAQLParserT_EQ = 4 CAQLParserT_NE = 5 CAQLParserT_LT = 6 CAQLParserT_GT = 7 CAQLParserT_LE = 8 CAQLParserT_GE = 9 CAQLParserT_PLUS = 10 CAQLParserT_MINUS = 11 CAQLParserT_TIMES = 12 CAQLParserT_DIV = 13 CAQLParserT_MOD = 14 CAQLParserT_QUESTION = 15 CAQLParserT_COLON = 16 CAQLParserT_SCOPE = 17 CAQLParserT_RANGE = 18 CAQLParserT_COMMA = 19 CAQLParserT_OPEN = 20 CAQLParserT_CLOSE = 21 CAQLParserT_OBJECT_OPEN = 22 CAQLParserT_OBJECT_CLOSE = 23 CAQLParserT_ARRAY_OPEN = 24 CAQLParserT_ARRAY_CLOSE = 25 CAQLParserT_AGGREGATE = 26 CAQLParserT_ALL = 27 CAQLParserT_AND = 28 CAQLParserT_ANY = 29 CAQLParserT_ASC = 30 CAQLParserT_COLLECT = 31 CAQLParserT_DESC = 32 CAQLParserT_DISTINCT = 33 CAQLParserT_FALSE = 34 CAQLParserT_FILTER = 35 CAQLParserT_FOR = 36 CAQLParserT_GRAPH = 37 CAQLParserT_IN = 38 CAQLParserT_INBOUND = 39 CAQLParserT_INSERT = 40 CAQLParserT_INTO = 41 CAQLParserT_K_SHORTEST_PATHS = 42 CAQLParserT_LET = 43 CAQLParserT_LIKE = 44 CAQLParserT_LIMIT = 45 CAQLParserT_NONE = 46 CAQLParserT_NOT = 47 CAQLParserT_NULL = 48 CAQLParserT_OR = 49 CAQLParserT_OUTBOUND = 50 CAQLParserT_REMOVE = 51 CAQLParserT_REPLACE = 52 CAQLParserT_RETURN = 53 CAQLParserT_SHORTEST_PATH = 54 CAQLParserT_SORT = 55 CAQLParserT_TRUE = 56 CAQLParserT_UPDATE = 57 CAQLParserT_UPSERT = 58 CAQLParserT_WITH = 59 CAQLParserT_KEEP = 60 CAQLParserT_COUNT = 61 CAQLParserT_OPTIONS = 62 CAQLParserT_PRUNE = 63 CAQLParserT_SEARCH = 64 CAQLParserT_TO = 65 CAQLParserT_CURRENT = 66 CAQLParserT_NEW = 67 CAQLParserT_OLD = 68 CAQLParserT_STRING = 69 CAQLParserT_INT = 70 CAQLParserT_FLOAT = 71 CAQLParserT_PARAMETER = 72 CAQLParserT_QUOTED_STRING = 73 CAQLParserSINGLE_LINE_COMMENT = 74 CAQLParserMULTILINE_COMMENT = 75 CAQLParserSPACES = 76 CAQLParserUNEXPECTED_CHAR = 77 CAQLParserERROR_RECONGNIGION = 78 ) // CAQLParser rules. const ( CAQLParserRULE_parse = 0 CAQLParserRULE_expression = 1 CAQLParserRULE_operator_unary = 2 CAQLParserRULE_reference = 3 CAQLParserRULE_compound_value = 4 CAQLParserRULE_function_call = 5 CAQLParserRULE_value_literal = 6 CAQLParserRULE_array = 7 CAQLParserRULE_object = 8 CAQLParserRULE_object_element = 9 CAQLParserRULE_object_element_name = 10 ) // IParseContext is an interface to support dynamic dispatch. type IParseContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsParseContext differentiates from other interfaces. IsParseContext() } type ParseContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyParseContext() *ParseContext { var p = new(ParseContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = CAQLParserRULE_parse return p } func (*ParseContext) IsParseContext() {} func NewParseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParseContext { var p = new(ParseContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = CAQLParserRULE_parse return p } func (s *ParseContext) GetParser() antlr.Parser { return s.parser } func (s *ParseContext) Expression() IExpressionContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0) if t == nil { return nil } return t.(IExpressionContext) } func (s *ParseContext) EOF() antlr.TerminalNode { return s.GetToken(CAQLParserEOF, 0) } func (s *ParseContext) GetRuleContext() antlr.RuleContext { return s } func (s *ParseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *ParseContext) EnterRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(CAQLParserListener); ok { listenerT.EnterParse(s) } } func (s *ParseContext) ExitRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(CAQLParserListener); ok { listenerT.ExitParse(s) } } func (p *CAQLParser) Parse() (localctx IParseContext) { this := p _ = this localctx = NewParseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 0, CAQLParserRULE_parse) 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(22) p.expression(0) } { p.SetState(23) p.Match(CAQLParserEOF) } return localctx } // IExpressionContext is an interface to support dynamic dispatch. type IExpressionContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // GetEq_op returns the eq_op token. GetEq_op() antlr.Token // SetEq_op sets the eq_op token. SetEq_op(antlr.Token) // IsExpressionContext differentiates from other interfaces. IsExpressionContext() } type ExpressionContext struct { *antlr.BaseParserRuleContext parser antlr.Parser eq_op antlr.Token } func NewEmptyExpressionContext() *ExpressionContext { var p = new(ExpressionContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = CAQLParserRULE_expression return p } func (*ExpressionContext) IsExpressionContext() {} func NewExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExpressionContext { var p = new(ExpressionContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = CAQLParserRULE_expression return p } func (s *ExpressionContext) GetParser() antlr.Parser { return s.parser } func (s *ExpressionContext) GetEq_op() antlr.Token { return s.eq_op } func (s *ExpressionContext) SetEq_op(v antlr.Token) { s.eq_op = v } func (s *ExpressionContext) Value_literal() IValue_literalContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IValue_literalContext)(nil)).Elem(), 0) if t == nil { return nil } return t.(IValue_literalContext) } func (s *ExpressionContext) Reference() IReferenceContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IReferenceContext)(nil)).Elem(), 0) if t == nil { return nil } return t.(IReferenceContext) } func (s *ExpressionContext) Operator_unary() IOperator_unaryContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IOperator_unaryContext)(nil)).Elem(), 0) if t == nil { return nil } return t.(IOperator_unaryContext) } func (s *ExpressionContext) AllExpression() []IExpressionContext { var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExpressionContext)(nil)).Elem()) var tst = make([]IExpressionContext, len(ts)) for i, t := range ts { if t != nil { tst[i] = t.(IExpressionContext) } } return tst } func (s *ExpressionContext) Expression(i int) IExpressionContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), i) if t == nil { return nil } return t.(IExpressionContext) } func (s *ExpressionContext) T_PLUS() antlr.TerminalNode { return s.GetToken(CAQLParserT_PLUS, 0) } func (s *ExpressionContext) T_MINUS() antlr.TerminalNode { return s.GetToken(CAQLParserT_MINUS, 0) } func (s *ExpressionContext) T_TIMES() antlr.TerminalNode { return s.GetToken(CAQLParserT_TIMES, 0) } func (s *ExpressionContext) T_DIV() antlr.TerminalNode { return s.GetToken(CAQLParserT_DIV, 0) } func (s *ExpressionContext) T_MOD() antlr.TerminalNode { return s.GetToken(CAQLParserT_MOD, 0) } func (s *ExpressionContext) T_RANGE() antlr.TerminalNode { return s.GetToken(CAQLParserT_RANGE, 0) } func (s *ExpressionContext) T_LT() antlr.TerminalNode { return s.GetToken(CAQLParserT_LT, 0) } func (s *ExpressionContext) T_GT() antlr.TerminalNode { return s.GetToken(CAQLParserT_GT, 0) } func (s *ExpressionContext) T_LE() antlr.TerminalNode { return s.GetToken(CAQLParserT_LE, 0) } func (s *ExpressionContext) T_GE() antlr.TerminalNode { return s.GetToken(CAQLParserT_GE, 0) } func (s *ExpressionContext) T_IN() antlr.TerminalNode { return s.GetToken(CAQLParserT_IN, 0) } func (s *ExpressionContext) T_NOT() antlr.TerminalNode { return s.GetToken(CAQLParserT_NOT, 0) } func (s *ExpressionContext) T_EQ() antlr.TerminalNode { return s.GetToken(CAQLParserT_EQ, 0) } func (s *ExpressionContext) T_NE() antlr.TerminalNode { return s.GetToken(CAQLParserT_NE, 0) } func (s *ExpressionContext) T_ALL() antlr.TerminalNode { return s.GetToken(CAQLParserT_ALL, 0) } func (s *ExpressionContext) T_ANY() antlr.TerminalNode { return s.GetToken(CAQLParserT_ANY, 0) } func (s *ExpressionContext) T_NONE() antlr.TerminalNode { return s.GetToken(CAQLParserT_NONE, 0) } func (s *ExpressionContext) T_LIKE() antlr.TerminalNode { return s.GetToken(CAQLParserT_LIKE, 0) } func (s *ExpressionContext) T_REGEX_MATCH() antlr.TerminalNode { return s.GetToken(CAQLParserT_REGEX_MATCH, 0) } func (s *ExpressionContext) T_REGEX_NON_MATCH() antlr.TerminalNode { return s.GetToken(CAQLParserT_REGEX_NON_MATCH, 0) } func (s *ExpressionContext) T_AND() antlr.TerminalNode { return s.GetToken(CAQLParserT_AND, 0) } func (s *ExpressionContext) T_OR() antlr.TerminalNode { return s.GetToken(CAQLParserT_OR, 0) } func (s *ExpressionContext) T_QUESTION() antlr.TerminalNode { return s.GetToken(CAQLParserT_QUESTION, 0) } func (s *ExpressionContext) T_COLON() antlr.TerminalNode { return s.GetToken(CAQLParserT_COLON, 0) } func (s *ExpressionContext) GetRuleContext() antlr.RuleContext { return s } func (s *ExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *ExpressionContext) EnterRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(CAQLParserListener); ok { listenerT.EnterExpression(s) } } func (s *ExpressionContext) ExitRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(CAQLParserListener); ok { listenerT.ExitExpression(s) } } func (p *CAQLParser) Expression() (localctx IExpressionContext) { return p.expression(0) } func (p *CAQLParser) expression(_p int) (localctx IExpressionContext) { this := p _ = this var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() _parentState := p.GetState() localctx = NewExpressionContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IExpressionContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. _startState := 2 p.EnterRecursionRule(localctx, 2, CAQLParserRULE_expression, _p) 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) p.SetState(29) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { case CAQLParserT_FALSE, CAQLParserT_NULL, CAQLParserT_TRUE, CAQLParserT_INT, CAQLParserT_FLOAT, CAQLParserT_QUOTED_STRING: { p.SetState(26) p.Value_literal() } case CAQLParserT_OPEN, CAQLParserT_OBJECT_OPEN, CAQLParserT_ARRAY_OPEN, CAQLParserT_STRING: { p.SetState(27) p.reference(0) } case CAQLParserT_PLUS, CAQLParserT_MINUS, CAQLParserT_NOT: { p.SetState(28) p.Operator_unary() } default: panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) p.SetState(85) p.GetErrorHandler().Sync(p) _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { if p.GetParseListeners() != nil { p.TriggerExitRuleEvent() } _prevctx = localctx p.SetState(83) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: localctx = NewExpressionContext(p, _parentctx, _parentState) p.PushNewRecursionContext(localctx, _startState, CAQLParserRULE_expression) p.SetState(31) if !(p.Precpred(p.GetParserRuleContext(), 13)) { panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 13)", "")) } { p.SetState(32) _la = p.GetTokenStream().LA(1) if !(_la == CAQLParserT_PLUS || _la == CAQLParserT_MINUS) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) p.Consume() } } { p.SetState(33) p.expression(14) } case 2: localctx = NewExpressionContext(p, _parentctx, _parentState) p.PushNewRecursionContext(localctx, _startState, CAQLParserRULE_expression) p.SetState(34) if !(p.Precpred(p.GetParserRuleContext(), 12)) { panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", "")) } { p.SetState(35) _la = p.GetTokenStream().LA(1) if !(((_la)&-(0x1f+1)) == 0 && ((1<