git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/netmap/parser/query_parser.go (about)

     1  // Code generated from netmap/parser/Query.g4 by ANTLR 4.13.1. DO NOT EDIT.
     2  
     3  package parser // Query
     4  
     5  import (
     6  	"fmt"
     7  	"strconv"
     8  	"sync"
     9  
    10  	"github.com/antlr4-go/antlr/v4"
    11  )
    12  
    13  // Suppress unused import errors
    14  var _ = fmt.Printf
    15  var _ = strconv.Itoa
    16  var _ = sync.Once{}
    17  
    18  type Query struct {
    19  	*antlr.BaseParser
    20  }
    21  
    22  var QueryParserStaticData struct {
    23  	once                   sync.Once
    24  	serializedATN          []int32
    25  	LiteralNames           []string
    26  	SymbolicNames          []string
    27  	RuleNames              []string
    28  	PredictionContextCache *antlr.PredictionContextCache
    29  	atn                    *antlr.ATN
    30  	decisionToDFA          []*antlr.DFA
    31  }
    32  
    33  func queryParserInit() {
    34  	staticData := &QueryParserStaticData
    35  	staticData.LiteralNames = []string{
    36  		"", "'NOT'", "'AND'", "'OR'", "", "'UNIQUE'", "'REP'", "'EC'", "'IN'",
    37  		"'AS'", "'CBF'", "'SELECT'", "'FROM'", "'FILTER'", "'*'", "'.'", "'SAME'",
    38  		"'DISTINCT'", "'('", "')'", "'@'", "", "", "'0'",
    39  	}
    40  	staticData.SymbolicNames = []string{
    41  		"", "NOT_OP", "AND_OP", "OR_OP", "SIMPLE_OP", "UNIQUE", "REP", "EC",
    42  		"IN", "AS", "CBF", "SELECT", "FROM", "FILTER", "WILDCARD", "DOT", "CLAUSE_SAME",
    43  		"CLAUSE_DISTINCT", "L_PAREN", "R_PAREN", "AT", "IDENT", "NUMBER1", "ZERO",
    44  		"STRING", "WS",
    45  	}
    46  	staticData.RuleNames = []string{
    47  		"policy", "selectFilterExpr", "ecStmt", "repStmt", "cbfStmt", "selectStmt",
    48  		"clause", "filterExpr", "filterStmt", "expr", "filterKey", "filterValue",
    49  		"number", "keyword", "ident", "identWC",
    50  	}
    51  	staticData.PredictionContextCache = antlr.NewPredictionContextCache()
    52  	staticData.serializedATN = []int32{
    53  		4, 1, 25, 165, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7,
    54  		4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7,
    55  		10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15,
    56  		1, 0, 3, 0, 34, 8, 0, 1, 0, 1, 0, 4, 0, 38, 8, 0, 11, 0, 12, 0, 39, 1,
    57  		0, 3, 0, 43, 8, 0, 1, 0, 5, 0, 46, 8, 0, 10, 0, 12, 0, 49, 9, 0, 1, 0,
    58  		5, 0, 52, 8, 0, 10, 0, 12, 0, 55, 9, 0, 1, 0, 1, 0, 1, 1, 3, 1, 60, 8,
    59  		1, 1, 1, 3, 1, 63, 8, 1, 1, 1, 5, 1, 66, 8, 1, 10, 1, 12, 1, 69, 9, 1,
    60  		1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 79, 8, 2, 1, 3, 1,
    61  		3, 1, 3, 1, 3, 3, 3, 85, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5,
    62  		3, 5, 94, 8, 5, 1, 5, 3, 5, 97, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 103,
    63  		8, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7,
    64  		1, 7, 1, 7, 3, 7, 118, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7,
    65  		126, 8, 7, 10, 7, 12, 7, 129, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9,
    66  		1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 142, 8, 9, 1, 10, 1, 10, 3, 10, 146,
    67  		8, 10, 1, 11, 1, 11, 1, 11, 3, 11, 151, 8, 11, 1, 12, 1, 12, 1, 13, 1,
    68  		13, 1, 14, 1, 14, 3, 14, 159, 8, 14, 1, 15, 1, 15, 3, 15, 163, 8, 15, 1,
    69  		15, 0, 1, 14, 16, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28,
    70  		30, 0, 3, 1, 0, 16, 17, 1, 0, 22, 23, 3, 0, 6, 6, 8, 9, 11, 13, 172, 0,
    71  		33, 1, 0, 0, 0, 2, 59, 1, 0, 0, 0, 4, 72, 1, 0, 0, 0, 6, 80, 1, 0, 0, 0,
    72  		8, 86, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 104, 1, 0, 0, 0, 14, 117, 1,
    73  		0, 0, 0, 16, 130, 1, 0, 0, 0, 18, 141, 1, 0, 0, 0, 20, 145, 1, 0, 0, 0,
    74  		22, 150, 1, 0, 0, 0, 24, 152, 1, 0, 0, 0, 26, 154, 1, 0, 0, 0, 28, 158,
    75  		1, 0, 0, 0, 30, 162, 1, 0, 0, 0, 32, 34, 5, 5, 0, 0, 33, 32, 1, 0, 0, 0,
    76  		33, 34, 1, 0, 0, 0, 34, 37, 1, 0, 0, 0, 35, 38, 3, 6, 3, 0, 36, 38, 3,
    77  		4, 2, 0, 37, 35, 1, 0, 0, 0, 37, 36, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39,
    78  		37, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 42, 1, 0, 0, 0, 41, 43, 3, 8, 4,
    79  		0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 47, 1, 0, 0, 0, 44, 46,
    80  		3, 10, 5, 0, 45, 44, 1, 0, 0, 0, 46, 49, 1, 0, 0, 0, 47, 45, 1, 0, 0, 0,
    81  		47, 48, 1, 0, 0, 0, 48, 53, 1, 0, 0, 0, 49, 47, 1, 0, 0, 0, 50, 52, 3,
    82  		16, 8, 0, 51, 50, 1, 0, 0, 0, 52, 55, 1, 0, 0, 0, 53, 51, 1, 0, 0, 0, 53,
    83  		54, 1, 0, 0, 0, 54, 56, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 56, 57, 5, 0, 0,
    84  		1, 57, 1, 1, 0, 0, 0, 58, 60, 3, 8, 4, 0, 59, 58, 1, 0, 0, 0, 59, 60, 1,
    85  		0, 0, 0, 60, 62, 1, 0, 0, 0, 61, 63, 3, 10, 5, 0, 62, 61, 1, 0, 0, 0, 62,
    86  		63, 1, 0, 0, 0, 63, 67, 1, 0, 0, 0, 64, 66, 3, 16, 8, 0, 65, 64, 1, 0,
    87  		0, 0, 66, 69, 1, 0, 0, 0, 67, 65, 1, 0, 0, 0, 67, 68, 1, 0, 0, 0, 68, 70,
    88  		1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 70, 71, 5, 0, 0, 1, 71, 3, 1, 0, 0, 0,
    89  		72, 73, 5, 7, 0, 0, 73, 74, 5, 22, 0, 0, 74, 75, 5, 15, 0, 0, 75, 78, 5,
    90  		22, 0, 0, 76, 77, 5, 8, 0, 0, 77, 79, 3, 28, 14, 0, 78, 76, 1, 0, 0, 0,
    91  		78, 79, 1, 0, 0, 0, 79, 5, 1, 0, 0, 0, 80, 81, 5, 6, 0, 0, 81, 84, 5, 22,
    92  		0, 0, 82, 83, 5, 8, 0, 0, 83, 85, 3, 28, 14, 0, 84, 82, 1, 0, 0, 0, 84,
    93  		85, 1, 0, 0, 0, 85, 7, 1, 0, 0, 0, 86, 87, 5, 10, 0, 0, 87, 88, 5, 22,
    94  		0, 0, 88, 9, 1, 0, 0, 0, 89, 90, 5, 11, 0, 0, 90, 96, 5, 22, 0, 0, 91,
    95  		93, 5, 8, 0, 0, 92, 94, 3, 12, 6, 0, 93, 92, 1, 0, 0, 0, 93, 94, 1, 0,
    96  		0, 0, 94, 95, 1, 0, 0, 0, 95, 97, 3, 20, 10, 0, 96, 91, 1, 0, 0, 0, 96,
    97  		97, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 99, 5, 12, 0, 0, 99, 102, 3, 30,
    98  		15, 0, 100, 101, 5, 9, 0, 0, 101, 103, 3, 28, 14, 0, 102, 100, 1, 0, 0,
    99  		0, 102, 103, 1, 0, 0, 0, 103, 11, 1, 0, 0, 0, 104, 105, 7, 0, 0, 0, 105,
   100  		13, 1, 0, 0, 0, 106, 107, 6, 7, -1, 0, 107, 108, 5, 1, 0, 0, 108, 109,
   101  		5, 18, 0, 0, 109, 110, 3, 14, 7, 0, 110, 111, 5, 19, 0, 0, 111, 118, 1,
   102  		0, 0, 0, 112, 113, 5, 18, 0, 0, 113, 114, 3, 14, 7, 0, 114, 115, 5, 19,
   103  		0, 0, 115, 118, 1, 0, 0, 0, 116, 118, 3, 18, 9, 0, 117, 106, 1, 0, 0, 0,
   104  		117, 112, 1, 0, 0, 0, 117, 116, 1, 0, 0, 0, 118, 127, 1, 0, 0, 0, 119,
   105  		120, 10, 4, 0, 0, 120, 121, 5, 2, 0, 0, 121, 126, 3, 14, 7, 5, 122, 123,
   106  		10, 3, 0, 0, 123, 124, 5, 3, 0, 0, 124, 126, 3, 14, 7, 4, 125, 119, 1,
   107  		0, 0, 0, 125, 122, 1, 0, 0, 0, 126, 129, 1, 0, 0, 0, 127, 125, 1, 0, 0,
   108  		0, 127, 128, 1, 0, 0, 0, 128, 15, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 130,
   109  		131, 5, 13, 0, 0, 131, 132, 3, 14, 7, 0, 132, 133, 5, 9, 0, 0, 133, 134,
   110  		3, 28, 14, 0, 134, 17, 1, 0, 0, 0, 135, 136, 5, 20, 0, 0, 136, 142, 3,
   111  		28, 14, 0, 137, 138, 3, 20, 10, 0, 138, 139, 5, 4, 0, 0, 139, 140, 3, 22,
   112  		11, 0, 140, 142, 1, 0, 0, 0, 141, 135, 1, 0, 0, 0, 141, 137, 1, 0, 0, 0,
   113  		142, 19, 1, 0, 0, 0, 143, 146, 3, 28, 14, 0, 144, 146, 5, 24, 0, 0, 145,
   114  		143, 1, 0, 0, 0, 145, 144, 1, 0, 0, 0, 146, 21, 1, 0, 0, 0, 147, 151, 3,
   115  		28, 14, 0, 148, 151, 3, 24, 12, 0, 149, 151, 5, 24, 0, 0, 150, 147, 1,
   116  		0, 0, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, 0, 0, 151, 23, 1, 0, 0,
   117  		0, 152, 153, 7, 1, 0, 0, 153, 25, 1, 0, 0, 0, 154, 155, 7, 2, 0, 0, 155,
   118  		27, 1, 0, 0, 0, 156, 159, 3, 26, 13, 0, 157, 159, 5, 21, 0, 0, 158, 156,
   119  		1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 29, 1, 0, 0, 0, 160, 163, 3, 28,
   120  		14, 0, 161, 163, 5, 14, 0, 0, 162, 160, 1, 0, 0, 0, 162, 161, 1, 0, 0,
   121  		0, 163, 31, 1, 0, 0, 0, 22, 33, 37, 39, 42, 47, 53, 59, 62, 67, 78, 84,
   122  		93, 96, 102, 117, 125, 127, 141, 145, 150, 158, 162,
   123  	}
   124  	deserializer := antlr.NewATNDeserializer(nil)
   125  	staticData.atn = deserializer.Deserialize(staticData.serializedATN)
   126  	atn := staticData.atn
   127  	staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState))
   128  	decisionToDFA := staticData.decisionToDFA
   129  	for index, state := range atn.DecisionToState {
   130  		decisionToDFA[index] = antlr.NewDFA(state, index)
   131  	}
   132  }
   133  
   134  // QueryInit initializes any static state used to implement Query. By default the
   135  // static state used to implement the parser is lazily initialized during the first call to
   136  // NewQuery(). You can call this function if you wish to initialize the static state ahead
   137  // of time.
   138  func QueryInit() {
   139  	staticData := &QueryParserStaticData
   140  	staticData.once.Do(queryParserInit)
   141  }
   142  
   143  // NewQuery produces a new parser instance for the optional input antlr.TokenStream.
   144  func NewQuery(input antlr.TokenStream) *Query {
   145  	QueryInit()
   146  	this := new(Query)
   147  	this.BaseParser = antlr.NewBaseParser(input)
   148  	staticData := &QueryParserStaticData
   149  	this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.PredictionContextCache)
   150  	this.RuleNames = staticData.RuleNames
   151  	this.LiteralNames = staticData.LiteralNames
   152  	this.SymbolicNames = staticData.SymbolicNames
   153  	this.GrammarFileName = "Query.g4"
   154  
   155  	return this
   156  }
   157  
   158  // Query tokens.
   159  const (
   160  	QueryEOF             = antlr.TokenEOF
   161  	QueryNOT_OP          = 1
   162  	QueryAND_OP          = 2
   163  	QueryOR_OP           = 3
   164  	QuerySIMPLE_OP       = 4
   165  	QueryUNIQUE          = 5
   166  	QueryREP             = 6
   167  	QueryEC              = 7
   168  	QueryIN              = 8
   169  	QueryAS              = 9
   170  	QueryCBF             = 10
   171  	QuerySELECT          = 11
   172  	QueryFROM            = 12
   173  	QueryFILTER          = 13
   174  	QueryWILDCARD        = 14
   175  	QueryDOT             = 15
   176  	QueryCLAUSE_SAME     = 16
   177  	QueryCLAUSE_DISTINCT = 17
   178  	QueryL_PAREN         = 18
   179  	QueryR_PAREN         = 19
   180  	QueryAT              = 20
   181  	QueryIDENT           = 21
   182  	QueryNUMBER1         = 22
   183  	QueryZERO            = 23
   184  	QuerySTRING          = 24
   185  	QueryWS              = 25
   186  )
   187  
   188  // Query rules.
   189  const (
   190  	QueryRULE_policy           = 0
   191  	QueryRULE_selectFilterExpr = 1
   192  	QueryRULE_ecStmt           = 2
   193  	QueryRULE_repStmt          = 3
   194  	QueryRULE_cbfStmt          = 4
   195  	QueryRULE_selectStmt       = 5
   196  	QueryRULE_clause           = 6
   197  	QueryRULE_filterExpr       = 7
   198  	QueryRULE_filterStmt       = 8
   199  	QueryRULE_expr             = 9
   200  	QueryRULE_filterKey        = 10
   201  	QueryRULE_filterValue      = 11
   202  	QueryRULE_number           = 12
   203  	QueryRULE_keyword          = 13
   204  	QueryRULE_ident            = 14
   205  	QueryRULE_identWC          = 15
   206  )
   207  
   208  // IPolicyContext is an interface to support dynamic dispatch.
   209  type IPolicyContext interface {
   210  	antlr.ParserRuleContext
   211  
   212  	// GetParser returns the parser.
   213  	GetParser() antlr.Parser
   214  
   215  	// Getter signatures
   216  	EOF() antlr.TerminalNode
   217  	UNIQUE() antlr.TerminalNode
   218  	AllRepStmt() []IRepStmtContext
   219  	RepStmt(i int) IRepStmtContext
   220  	AllEcStmt() []IEcStmtContext
   221  	EcStmt(i int) IEcStmtContext
   222  	CbfStmt() ICbfStmtContext
   223  	AllSelectStmt() []ISelectStmtContext
   224  	SelectStmt(i int) ISelectStmtContext
   225  	AllFilterStmt() []IFilterStmtContext
   226  	FilterStmt(i int) IFilterStmtContext
   227  
   228  	// IsPolicyContext differentiates from other interfaces.
   229  	IsPolicyContext()
   230  }
   231  
   232  type PolicyContext struct {
   233  	antlr.BaseParserRuleContext
   234  	parser antlr.Parser
   235  }
   236  
   237  func NewEmptyPolicyContext() *PolicyContext {
   238  	var p = new(PolicyContext)
   239  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
   240  	p.RuleIndex = QueryRULE_policy
   241  	return p
   242  }
   243  
   244  func InitEmptyPolicyContext(p *PolicyContext) {
   245  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
   246  	p.RuleIndex = QueryRULE_policy
   247  }
   248  
   249  func (*PolicyContext) IsPolicyContext() {}
   250  
   251  func NewPolicyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PolicyContext {
   252  	var p = new(PolicyContext)
   253  
   254  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
   255  
   256  	p.parser = parser
   257  	p.RuleIndex = QueryRULE_policy
   258  
   259  	return p
   260  }
   261  
   262  func (s *PolicyContext) GetParser() antlr.Parser { return s.parser }
   263  
   264  func (s *PolicyContext) EOF() antlr.TerminalNode {
   265  	return s.GetToken(QueryEOF, 0)
   266  }
   267  
   268  func (s *PolicyContext) UNIQUE() antlr.TerminalNode {
   269  	return s.GetToken(QueryUNIQUE, 0)
   270  }
   271  
   272  func (s *PolicyContext) AllRepStmt() []IRepStmtContext {
   273  	children := s.GetChildren()
   274  	len := 0
   275  	for _, ctx := range children {
   276  		if _, ok := ctx.(IRepStmtContext); ok {
   277  			len++
   278  		}
   279  	}
   280  
   281  	tst := make([]IRepStmtContext, len)
   282  	i := 0
   283  	for _, ctx := range children {
   284  		if t, ok := ctx.(IRepStmtContext); ok {
   285  			tst[i] = t.(IRepStmtContext)
   286  			i++
   287  		}
   288  	}
   289  
   290  	return tst
   291  }
   292  
   293  func (s *PolicyContext) RepStmt(i int) IRepStmtContext {
   294  	var t antlr.RuleContext
   295  	j := 0
   296  	for _, ctx := range s.GetChildren() {
   297  		if _, ok := ctx.(IRepStmtContext); ok {
   298  			if j == i {
   299  				t = ctx.(antlr.RuleContext)
   300  				break
   301  			}
   302  			j++
   303  		}
   304  	}
   305  
   306  	if t == nil {
   307  		return nil
   308  	}
   309  
   310  	return t.(IRepStmtContext)
   311  }
   312  
   313  func (s *PolicyContext) AllEcStmt() []IEcStmtContext {
   314  	children := s.GetChildren()
   315  	len := 0
   316  	for _, ctx := range children {
   317  		if _, ok := ctx.(IEcStmtContext); ok {
   318  			len++
   319  		}
   320  	}
   321  
   322  	tst := make([]IEcStmtContext, len)
   323  	i := 0
   324  	for _, ctx := range children {
   325  		if t, ok := ctx.(IEcStmtContext); ok {
   326  			tst[i] = t.(IEcStmtContext)
   327  			i++
   328  		}
   329  	}
   330  
   331  	return tst
   332  }
   333  
   334  func (s *PolicyContext) EcStmt(i int) IEcStmtContext {
   335  	var t antlr.RuleContext
   336  	j := 0
   337  	for _, ctx := range s.GetChildren() {
   338  		if _, ok := ctx.(IEcStmtContext); ok {
   339  			if j == i {
   340  				t = ctx.(antlr.RuleContext)
   341  				break
   342  			}
   343  			j++
   344  		}
   345  	}
   346  
   347  	if t == nil {
   348  		return nil
   349  	}
   350  
   351  	return t.(IEcStmtContext)
   352  }
   353  
   354  func (s *PolicyContext) CbfStmt() ICbfStmtContext {
   355  	var t antlr.RuleContext
   356  	for _, ctx := range s.GetChildren() {
   357  		if _, ok := ctx.(ICbfStmtContext); ok {
   358  			t = ctx.(antlr.RuleContext)
   359  			break
   360  		}
   361  	}
   362  
   363  	if t == nil {
   364  		return nil
   365  	}
   366  
   367  	return t.(ICbfStmtContext)
   368  }
   369  
   370  func (s *PolicyContext) AllSelectStmt() []ISelectStmtContext {
   371  	children := s.GetChildren()
   372  	len := 0
   373  	for _, ctx := range children {
   374  		if _, ok := ctx.(ISelectStmtContext); ok {
   375  			len++
   376  		}
   377  	}
   378  
   379  	tst := make([]ISelectStmtContext, len)
   380  	i := 0
   381  	for _, ctx := range children {
   382  		if t, ok := ctx.(ISelectStmtContext); ok {
   383  			tst[i] = t.(ISelectStmtContext)
   384  			i++
   385  		}
   386  	}
   387  
   388  	return tst
   389  }
   390  
   391  func (s *PolicyContext) SelectStmt(i int) ISelectStmtContext {
   392  	var t antlr.RuleContext
   393  	j := 0
   394  	for _, ctx := range s.GetChildren() {
   395  		if _, ok := ctx.(ISelectStmtContext); ok {
   396  			if j == i {
   397  				t = ctx.(antlr.RuleContext)
   398  				break
   399  			}
   400  			j++
   401  		}
   402  	}
   403  
   404  	if t == nil {
   405  		return nil
   406  	}
   407  
   408  	return t.(ISelectStmtContext)
   409  }
   410  
   411  func (s *PolicyContext) AllFilterStmt() []IFilterStmtContext {
   412  	children := s.GetChildren()
   413  	len := 0
   414  	for _, ctx := range children {
   415  		if _, ok := ctx.(IFilterStmtContext); ok {
   416  			len++
   417  		}
   418  	}
   419  
   420  	tst := make([]IFilterStmtContext, len)
   421  	i := 0
   422  	for _, ctx := range children {
   423  		if t, ok := ctx.(IFilterStmtContext); ok {
   424  			tst[i] = t.(IFilterStmtContext)
   425  			i++
   426  		}
   427  	}
   428  
   429  	return tst
   430  }
   431  
   432  func (s *PolicyContext) FilterStmt(i int) IFilterStmtContext {
   433  	var t antlr.RuleContext
   434  	j := 0
   435  	for _, ctx := range s.GetChildren() {
   436  		if _, ok := ctx.(IFilterStmtContext); ok {
   437  			if j == i {
   438  				t = ctx.(antlr.RuleContext)
   439  				break
   440  			}
   441  			j++
   442  		}
   443  	}
   444  
   445  	if t == nil {
   446  		return nil
   447  	}
   448  
   449  	return t.(IFilterStmtContext)
   450  }
   451  
   452  func (s *PolicyContext) GetRuleContext() antlr.RuleContext {
   453  	return s
   454  }
   455  
   456  func (s *PolicyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
   457  	return antlr.TreesStringTree(s, ruleNames, recog)
   458  }
   459  
   460  func (s *PolicyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
   461  	switch t := visitor.(type) {
   462  	case QueryVisitor:
   463  		return t.VisitPolicy(s)
   464  
   465  	default:
   466  		return t.VisitChildren(s)
   467  	}
   468  }
   469  
   470  func (p *Query) Policy() (localctx IPolicyContext) {
   471  	localctx = NewPolicyContext(p, p.GetParserRuleContext(), p.GetState())
   472  	p.EnterRule(localctx, 0, QueryRULE_policy)
   473  	var _la int
   474  
   475  	p.EnterOuterAlt(localctx, 1)
   476  	p.SetState(33)
   477  	p.GetErrorHandler().Sync(p)
   478  	if p.HasError() {
   479  		goto errorExit
   480  	}
   481  	_la = p.GetTokenStream().LA(1)
   482  
   483  	if _la == QueryUNIQUE {
   484  		{
   485  			p.SetState(32)
   486  			p.Match(QueryUNIQUE)
   487  			if p.HasError() {
   488  				// Recognition error - abort rule
   489  				goto errorExit
   490  			}
   491  		}
   492  
   493  	}
   494  	p.SetState(37)
   495  	p.GetErrorHandler().Sync(p)
   496  	if p.HasError() {
   497  		goto errorExit
   498  	}
   499  	_la = p.GetTokenStream().LA(1)
   500  
   501  	for ok := true; ok; ok = _la == QueryREP || _la == QueryEC {
   502  		p.SetState(37)
   503  		p.GetErrorHandler().Sync(p)
   504  		if p.HasError() {
   505  			goto errorExit
   506  		}
   507  
   508  		switch p.GetTokenStream().LA(1) {
   509  		case QueryREP:
   510  			{
   511  				p.SetState(35)
   512  				p.RepStmt()
   513  			}
   514  
   515  		case QueryEC:
   516  			{
   517  				p.SetState(36)
   518  				p.EcStmt()
   519  			}
   520  
   521  		default:
   522  			p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
   523  			goto errorExit
   524  		}
   525  
   526  		p.SetState(39)
   527  		p.GetErrorHandler().Sync(p)
   528  		if p.HasError() {
   529  			goto errorExit
   530  		}
   531  		_la = p.GetTokenStream().LA(1)
   532  	}
   533  	p.SetState(42)
   534  	p.GetErrorHandler().Sync(p)
   535  	if p.HasError() {
   536  		goto errorExit
   537  	}
   538  	_la = p.GetTokenStream().LA(1)
   539  
   540  	if _la == QueryCBF {
   541  		{
   542  			p.SetState(41)
   543  			p.CbfStmt()
   544  		}
   545  
   546  	}
   547  	p.SetState(47)
   548  	p.GetErrorHandler().Sync(p)
   549  	if p.HasError() {
   550  		goto errorExit
   551  	}
   552  	_la = p.GetTokenStream().LA(1)
   553  
   554  	for _la == QuerySELECT {
   555  		{
   556  			p.SetState(44)
   557  			p.SelectStmt()
   558  		}
   559  
   560  		p.SetState(49)
   561  		p.GetErrorHandler().Sync(p)
   562  		if p.HasError() {
   563  			goto errorExit
   564  		}
   565  		_la = p.GetTokenStream().LA(1)
   566  	}
   567  	p.SetState(53)
   568  	p.GetErrorHandler().Sync(p)
   569  	if p.HasError() {
   570  		goto errorExit
   571  	}
   572  	_la = p.GetTokenStream().LA(1)
   573  
   574  	for _la == QueryFILTER {
   575  		{
   576  			p.SetState(50)
   577  			p.FilterStmt()
   578  		}
   579  
   580  		p.SetState(55)
   581  		p.GetErrorHandler().Sync(p)
   582  		if p.HasError() {
   583  			goto errorExit
   584  		}
   585  		_la = p.GetTokenStream().LA(1)
   586  	}
   587  	{
   588  		p.SetState(56)
   589  		p.Match(QueryEOF)
   590  		if p.HasError() {
   591  			// Recognition error - abort rule
   592  			goto errorExit
   593  		}
   594  	}
   595  
   596  errorExit:
   597  	if p.HasError() {
   598  		v := p.GetError()
   599  		localctx.SetException(v)
   600  		p.GetErrorHandler().ReportError(p, v)
   601  		p.GetErrorHandler().Recover(p, v)
   602  		p.SetError(nil)
   603  	}
   604  	p.ExitRule()
   605  	return localctx
   606  	goto errorExit // Trick to prevent compiler error if the label is not used
   607  }
   608  
   609  // ISelectFilterExprContext is an interface to support dynamic dispatch.
   610  type ISelectFilterExprContext interface {
   611  	antlr.ParserRuleContext
   612  
   613  	// GetParser returns the parser.
   614  	GetParser() antlr.Parser
   615  
   616  	// Getter signatures
   617  	EOF() antlr.TerminalNode
   618  	CbfStmt() ICbfStmtContext
   619  	SelectStmt() ISelectStmtContext
   620  	AllFilterStmt() []IFilterStmtContext
   621  	FilterStmt(i int) IFilterStmtContext
   622  
   623  	// IsSelectFilterExprContext differentiates from other interfaces.
   624  	IsSelectFilterExprContext()
   625  }
   626  
   627  type SelectFilterExprContext struct {
   628  	antlr.BaseParserRuleContext
   629  	parser antlr.Parser
   630  }
   631  
   632  func NewEmptySelectFilterExprContext() *SelectFilterExprContext {
   633  	var p = new(SelectFilterExprContext)
   634  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
   635  	p.RuleIndex = QueryRULE_selectFilterExpr
   636  	return p
   637  }
   638  
   639  func InitEmptySelectFilterExprContext(p *SelectFilterExprContext) {
   640  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
   641  	p.RuleIndex = QueryRULE_selectFilterExpr
   642  }
   643  
   644  func (*SelectFilterExprContext) IsSelectFilterExprContext() {}
   645  
   646  func NewSelectFilterExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectFilterExprContext {
   647  	var p = new(SelectFilterExprContext)
   648  
   649  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
   650  
   651  	p.parser = parser
   652  	p.RuleIndex = QueryRULE_selectFilterExpr
   653  
   654  	return p
   655  }
   656  
   657  func (s *SelectFilterExprContext) GetParser() antlr.Parser { return s.parser }
   658  
   659  func (s *SelectFilterExprContext) EOF() antlr.TerminalNode {
   660  	return s.GetToken(QueryEOF, 0)
   661  }
   662  
   663  func (s *SelectFilterExprContext) CbfStmt() ICbfStmtContext {
   664  	var t antlr.RuleContext
   665  	for _, ctx := range s.GetChildren() {
   666  		if _, ok := ctx.(ICbfStmtContext); ok {
   667  			t = ctx.(antlr.RuleContext)
   668  			break
   669  		}
   670  	}
   671  
   672  	if t == nil {
   673  		return nil
   674  	}
   675  
   676  	return t.(ICbfStmtContext)
   677  }
   678  
   679  func (s *SelectFilterExprContext) SelectStmt() ISelectStmtContext {
   680  	var t antlr.RuleContext
   681  	for _, ctx := range s.GetChildren() {
   682  		if _, ok := ctx.(ISelectStmtContext); ok {
   683  			t = ctx.(antlr.RuleContext)
   684  			break
   685  		}
   686  	}
   687  
   688  	if t == nil {
   689  		return nil
   690  	}
   691  
   692  	return t.(ISelectStmtContext)
   693  }
   694  
   695  func (s *SelectFilterExprContext) AllFilterStmt() []IFilterStmtContext {
   696  	children := s.GetChildren()
   697  	len := 0
   698  	for _, ctx := range children {
   699  		if _, ok := ctx.(IFilterStmtContext); ok {
   700  			len++
   701  		}
   702  	}
   703  
   704  	tst := make([]IFilterStmtContext, len)
   705  	i := 0
   706  	for _, ctx := range children {
   707  		if t, ok := ctx.(IFilterStmtContext); ok {
   708  			tst[i] = t.(IFilterStmtContext)
   709  			i++
   710  		}
   711  	}
   712  
   713  	return tst
   714  }
   715  
   716  func (s *SelectFilterExprContext) FilterStmt(i int) IFilterStmtContext {
   717  	var t antlr.RuleContext
   718  	j := 0
   719  	for _, ctx := range s.GetChildren() {
   720  		if _, ok := ctx.(IFilterStmtContext); ok {
   721  			if j == i {
   722  				t = ctx.(antlr.RuleContext)
   723  				break
   724  			}
   725  			j++
   726  		}
   727  	}
   728  
   729  	if t == nil {
   730  		return nil
   731  	}
   732  
   733  	return t.(IFilterStmtContext)
   734  }
   735  
   736  func (s *SelectFilterExprContext) GetRuleContext() antlr.RuleContext {
   737  	return s
   738  }
   739  
   740  func (s *SelectFilterExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
   741  	return antlr.TreesStringTree(s, ruleNames, recog)
   742  }
   743  
   744  func (s *SelectFilterExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
   745  	switch t := visitor.(type) {
   746  	case QueryVisitor:
   747  		return t.VisitSelectFilterExpr(s)
   748  
   749  	default:
   750  		return t.VisitChildren(s)
   751  	}
   752  }
   753  
   754  func (p *Query) SelectFilterExpr() (localctx ISelectFilterExprContext) {
   755  	localctx = NewSelectFilterExprContext(p, p.GetParserRuleContext(), p.GetState())
   756  	p.EnterRule(localctx, 2, QueryRULE_selectFilterExpr)
   757  	var _la int
   758  
   759  	p.EnterOuterAlt(localctx, 1)
   760  	p.SetState(59)
   761  	p.GetErrorHandler().Sync(p)
   762  	if p.HasError() {
   763  		goto errorExit
   764  	}
   765  	_la = p.GetTokenStream().LA(1)
   766  
   767  	if _la == QueryCBF {
   768  		{
   769  			p.SetState(58)
   770  			p.CbfStmt()
   771  		}
   772  
   773  	}
   774  	p.SetState(62)
   775  	p.GetErrorHandler().Sync(p)
   776  	if p.HasError() {
   777  		goto errorExit
   778  	}
   779  	_la = p.GetTokenStream().LA(1)
   780  
   781  	if _la == QuerySELECT {
   782  		{
   783  			p.SetState(61)
   784  			p.SelectStmt()
   785  		}
   786  
   787  	}
   788  	p.SetState(67)
   789  	p.GetErrorHandler().Sync(p)
   790  	if p.HasError() {
   791  		goto errorExit
   792  	}
   793  	_la = p.GetTokenStream().LA(1)
   794  
   795  	for _la == QueryFILTER {
   796  		{
   797  			p.SetState(64)
   798  			p.FilterStmt()
   799  		}
   800  
   801  		p.SetState(69)
   802  		p.GetErrorHandler().Sync(p)
   803  		if p.HasError() {
   804  			goto errorExit
   805  		}
   806  		_la = p.GetTokenStream().LA(1)
   807  	}
   808  	{
   809  		p.SetState(70)
   810  		p.Match(QueryEOF)
   811  		if p.HasError() {
   812  			// Recognition error - abort rule
   813  			goto errorExit
   814  		}
   815  	}
   816  
   817  errorExit:
   818  	if p.HasError() {
   819  		v := p.GetError()
   820  		localctx.SetException(v)
   821  		p.GetErrorHandler().ReportError(p, v)
   822  		p.GetErrorHandler().Recover(p, v)
   823  		p.SetError(nil)
   824  	}
   825  	p.ExitRule()
   826  	return localctx
   827  	goto errorExit // Trick to prevent compiler error if the label is not used
   828  }
   829  
   830  // IEcStmtContext is an interface to support dynamic dispatch.
   831  type IEcStmtContext interface {
   832  	antlr.ParserRuleContext
   833  
   834  	// GetParser returns the parser.
   835  	GetParser() antlr.Parser
   836  
   837  	// GetData returns the Data token.
   838  	GetData() antlr.Token
   839  
   840  	// GetParity returns the Parity token.
   841  	GetParity() antlr.Token
   842  
   843  	// SetData sets the Data token.
   844  	SetData(antlr.Token)
   845  
   846  	// SetParity sets the Parity token.
   847  	SetParity(antlr.Token)
   848  
   849  	// GetSelector returns the Selector rule contexts.
   850  	GetSelector() IIdentContext
   851  
   852  	// SetSelector sets the Selector rule contexts.
   853  	SetSelector(IIdentContext)
   854  
   855  	// Getter signatures
   856  	EC() antlr.TerminalNode
   857  	DOT() antlr.TerminalNode
   858  	AllNUMBER1() []antlr.TerminalNode
   859  	NUMBER1(i int) antlr.TerminalNode
   860  	IN() antlr.TerminalNode
   861  	Ident() IIdentContext
   862  
   863  	// IsEcStmtContext differentiates from other interfaces.
   864  	IsEcStmtContext()
   865  }
   866  
   867  type EcStmtContext struct {
   868  	antlr.BaseParserRuleContext
   869  	parser   antlr.Parser
   870  	Data     antlr.Token
   871  	Parity   antlr.Token
   872  	Selector IIdentContext
   873  }
   874  
   875  func NewEmptyEcStmtContext() *EcStmtContext {
   876  	var p = new(EcStmtContext)
   877  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
   878  	p.RuleIndex = QueryRULE_ecStmt
   879  	return p
   880  }
   881  
   882  func InitEmptyEcStmtContext(p *EcStmtContext) {
   883  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
   884  	p.RuleIndex = QueryRULE_ecStmt
   885  }
   886  
   887  func (*EcStmtContext) IsEcStmtContext() {}
   888  
   889  func NewEcStmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EcStmtContext {
   890  	var p = new(EcStmtContext)
   891  
   892  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
   893  
   894  	p.parser = parser
   895  	p.RuleIndex = QueryRULE_ecStmt
   896  
   897  	return p
   898  }
   899  
   900  func (s *EcStmtContext) GetParser() antlr.Parser { return s.parser }
   901  
   902  func (s *EcStmtContext) GetData() antlr.Token { return s.Data }
   903  
   904  func (s *EcStmtContext) GetParity() antlr.Token { return s.Parity }
   905  
   906  func (s *EcStmtContext) SetData(v antlr.Token) { s.Data = v }
   907  
   908  func (s *EcStmtContext) SetParity(v antlr.Token) { s.Parity = v }
   909  
   910  func (s *EcStmtContext) GetSelector() IIdentContext { return s.Selector }
   911  
   912  func (s *EcStmtContext) SetSelector(v IIdentContext) { s.Selector = v }
   913  
   914  func (s *EcStmtContext) EC() antlr.TerminalNode {
   915  	return s.GetToken(QueryEC, 0)
   916  }
   917  
   918  func (s *EcStmtContext) DOT() antlr.TerminalNode {
   919  	return s.GetToken(QueryDOT, 0)
   920  }
   921  
   922  func (s *EcStmtContext) AllNUMBER1() []antlr.TerminalNode {
   923  	return s.GetTokens(QueryNUMBER1)
   924  }
   925  
   926  func (s *EcStmtContext) NUMBER1(i int) antlr.TerminalNode {
   927  	return s.GetToken(QueryNUMBER1, i)
   928  }
   929  
   930  func (s *EcStmtContext) IN() antlr.TerminalNode {
   931  	return s.GetToken(QueryIN, 0)
   932  }
   933  
   934  func (s *EcStmtContext) Ident() IIdentContext {
   935  	var t antlr.RuleContext
   936  	for _, ctx := range s.GetChildren() {
   937  		if _, ok := ctx.(IIdentContext); ok {
   938  			t = ctx.(antlr.RuleContext)
   939  			break
   940  		}
   941  	}
   942  
   943  	if t == nil {
   944  		return nil
   945  	}
   946  
   947  	return t.(IIdentContext)
   948  }
   949  
   950  func (s *EcStmtContext) GetRuleContext() antlr.RuleContext {
   951  	return s
   952  }
   953  
   954  func (s *EcStmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
   955  	return antlr.TreesStringTree(s, ruleNames, recog)
   956  }
   957  
   958  func (s *EcStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
   959  	switch t := visitor.(type) {
   960  	case QueryVisitor:
   961  		return t.VisitEcStmt(s)
   962  
   963  	default:
   964  		return t.VisitChildren(s)
   965  	}
   966  }
   967  
   968  func (p *Query) EcStmt() (localctx IEcStmtContext) {
   969  	localctx = NewEcStmtContext(p, p.GetParserRuleContext(), p.GetState())
   970  	p.EnterRule(localctx, 4, QueryRULE_ecStmt)
   971  	var _la int
   972  
   973  	p.EnterOuterAlt(localctx, 1)
   974  	{
   975  		p.SetState(72)
   976  		p.Match(QueryEC)
   977  		if p.HasError() {
   978  			// Recognition error - abort rule
   979  			goto errorExit
   980  		}
   981  	}
   982  	{
   983  		p.SetState(73)
   984  
   985  		var _m = p.Match(QueryNUMBER1)
   986  
   987  		localctx.(*EcStmtContext).Data = _m
   988  		if p.HasError() {
   989  			// Recognition error - abort rule
   990  			goto errorExit
   991  		}
   992  	}
   993  	{
   994  		p.SetState(74)
   995  		p.Match(QueryDOT)
   996  		if p.HasError() {
   997  			// Recognition error - abort rule
   998  			goto errorExit
   999  		}
  1000  	}
  1001  	{
  1002  		p.SetState(75)
  1003  
  1004  		var _m = p.Match(QueryNUMBER1)
  1005  
  1006  		localctx.(*EcStmtContext).Parity = _m
  1007  		if p.HasError() {
  1008  			// Recognition error - abort rule
  1009  			goto errorExit
  1010  		}
  1011  	}
  1012  	p.SetState(78)
  1013  	p.GetErrorHandler().Sync(p)
  1014  	if p.HasError() {
  1015  		goto errorExit
  1016  	}
  1017  	_la = p.GetTokenStream().LA(1)
  1018  
  1019  	if _la == QueryIN {
  1020  		{
  1021  			p.SetState(76)
  1022  			p.Match(QueryIN)
  1023  			if p.HasError() {
  1024  				// Recognition error - abort rule
  1025  				goto errorExit
  1026  			}
  1027  		}
  1028  		{
  1029  			p.SetState(77)
  1030  
  1031  			var _x = p.Ident()
  1032  
  1033  			localctx.(*EcStmtContext).Selector = _x
  1034  		}
  1035  
  1036  	}
  1037  
  1038  errorExit:
  1039  	if p.HasError() {
  1040  		v := p.GetError()
  1041  		localctx.SetException(v)
  1042  		p.GetErrorHandler().ReportError(p, v)
  1043  		p.GetErrorHandler().Recover(p, v)
  1044  		p.SetError(nil)
  1045  	}
  1046  	p.ExitRule()
  1047  	return localctx
  1048  	goto errorExit // Trick to prevent compiler error if the label is not used
  1049  }
  1050  
  1051  // IRepStmtContext is an interface to support dynamic dispatch.
  1052  type IRepStmtContext interface {
  1053  	antlr.ParserRuleContext
  1054  
  1055  	// GetParser returns the parser.
  1056  	GetParser() antlr.Parser
  1057  
  1058  	// GetCount returns the Count token.
  1059  	GetCount() antlr.Token
  1060  
  1061  	// SetCount sets the Count token.
  1062  	SetCount(antlr.Token)
  1063  
  1064  	// GetSelector returns the Selector rule contexts.
  1065  	GetSelector() IIdentContext
  1066  
  1067  	// SetSelector sets the Selector rule contexts.
  1068  	SetSelector(IIdentContext)
  1069  
  1070  	// Getter signatures
  1071  	REP() antlr.TerminalNode
  1072  	NUMBER1() antlr.TerminalNode
  1073  	IN() antlr.TerminalNode
  1074  	Ident() IIdentContext
  1075  
  1076  	// IsRepStmtContext differentiates from other interfaces.
  1077  	IsRepStmtContext()
  1078  }
  1079  
  1080  type RepStmtContext struct {
  1081  	antlr.BaseParserRuleContext
  1082  	parser   antlr.Parser
  1083  	Count    antlr.Token
  1084  	Selector IIdentContext
  1085  }
  1086  
  1087  func NewEmptyRepStmtContext() *RepStmtContext {
  1088  	var p = new(RepStmtContext)
  1089  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1090  	p.RuleIndex = QueryRULE_repStmt
  1091  	return p
  1092  }
  1093  
  1094  func InitEmptyRepStmtContext(p *RepStmtContext) {
  1095  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1096  	p.RuleIndex = QueryRULE_repStmt
  1097  }
  1098  
  1099  func (*RepStmtContext) IsRepStmtContext() {}
  1100  
  1101  func NewRepStmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RepStmtContext {
  1102  	var p = new(RepStmtContext)
  1103  
  1104  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  1105  
  1106  	p.parser = parser
  1107  	p.RuleIndex = QueryRULE_repStmt
  1108  
  1109  	return p
  1110  }
  1111  
  1112  func (s *RepStmtContext) GetParser() antlr.Parser { return s.parser }
  1113  
  1114  func (s *RepStmtContext) GetCount() antlr.Token { return s.Count }
  1115  
  1116  func (s *RepStmtContext) SetCount(v antlr.Token) { s.Count = v }
  1117  
  1118  func (s *RepStmtContext) GetSelector() IIdentContext { return s.Selector }
  1119  
  1120  func (s *RepStmtContext) SetSelector(v IIdentContext) { s.Selector = v }
  1121  
  1122  func (s *RepStmtContext) REP() antlr.TerminalNode {
  1123  	return s.GetToken(QueryREP, 0)
  1124  }
  1125  
  1126  func (s *RepStmtContext) NUMBER1() antlr.TerminalNode {
  1127  	return s.GetToken(QueryNUMBER1, 0)
  1128  }
  1129  
  1130  func (s *RepStmtContext) IN() antlr.TerminalNode {
  1131  	return s.GetToken(QueryIN, 0)
  1132  }
  1133  
  1134  func (s *RepStmtContext) Ident() IIdentContext {
  1135  	var t antlr.RuleContext
  1136  	for _, ctx := range s.GetChildren() {
  1137  		if _, ok := ctx.(IIdentContext); ok {
  1138  			t = ctx.(antlr.RuleContext)
  1139  			break
  1140  		}
  1141  	}
  1142  
  1143  	if t == nil {
  1144  		return nil
  1145  	}
  1146  
  1147  	return t.(IIdentContext)
  1148  }
  1149  
  1150  func (s *RepStmtContext) GetRuleContext() antlr.RuleContext {
  1151  	return s
  1152  }
  1153  
  1154  func (s *RepStmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  1155  	return antlr.TreesStringTree(s, ruleNames, recog)
  1156  }
  1157  
  1158  func (s *RepStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  1159  	switch t := visitor.(type) {
  1160  	case QueryVisitor:
  1161  		return t.VisitRepStmt(s)
  1162  
  1163  	default:
  1164  		return t.VisitChildren(s)
  1165  	}
  1166  }
  1167  
  1168  func (p *Query) RepStmt() (localctx IRepStmtContext) {
  1169  	localctx = NewRepStmtContext(p, p.GetParserRuleContext(), p.GetState())
  1170  	p.EnterRule(localctx, 6, QueryRULE_repStmt)
  1171  	var _la int
  1172  
  1173  	p.EnterOuterAlt(localctx, 1)
  1174  	{
  1175  		p.SetState(80)
  1176  		p.Match(QueryREP)
  1177  		if p.HasError() {
  1178  			// Recognition error - abort rule
  1179  			goto errorExit
  1180  		}
  1181  	}
  1182  	{
  1183  		p.SetState(81)
  1184  
  1185  		var _m = p.Match(QueryNUMBER1)
  1186  
  1187  		localctx.(*RepStmtContext).Count = _m
  1188  		if p.HasError() {
  1189  			// Recognition error - abort rule
  1190  			goto errorExit
  1191  		}
  1192  	}
  1193  	p.SetState(84)
  1194  	p.GetErrorHandler().Sync(p)
  1195  	if p.HasError() {
  1196  		goto errorExit
  1197  	}
  1198  	_la = p.GetTokenStream().LA(1)
  1199  
  1200  	if _la == QueryIN {
  1201  		{
  1202  			p.SetState(82)
  1203  			p.Match(QueryIN)
  1204  			if p.HasError() {
  1205  				// Recognition error - abort rule
  1206  				goto errorExit
  1207  			}
  1208  		}
  1209  		{
  1210  			p.SetState(83)
  1211  
  1212  			var _x = p.Ident()
  1213  
  1214  			localctx.(*RepStmtContext).Selector = _x
  1215  		}
  1216  
  1217  	}
  1218  
  1219  errorExit:
  1220  	if p.HasError() {
  1221  		v := p.GetError()
  1222  		localctx.SetException(v)
  1223  		p.GetErrorHandler().ReportError(p, v)
  1224  		p.GetErrorHandler().Recover(p, v)
  1225  		p.SetError(nil)
  1226  	}
  1227  	p.ExitRule()
  1228  	return localctx
  1229  	goto errorExit // Trick to prevent compiler error if the label is not used
  1230  }
  1231  
  1232  // ICbfStmtContext is an interface to support dynamic dispatch.
  1233  type ICbfStmtContext interface {
  1234  	antlr.ParserRuleContext
  1235  
  1236  	// GetParser returns the parser.
  1237  	GetParser() antlr.Parser
  1238  
  1239  	// GetBackupFactor returns the BackupFactor token.
  1240  	GetBackupFactor() antlr.Token
  1241  
  1242  	// SetBackupFactor sets the BackupFactor token.
  1243  	SetBackupFactor(antlr.Token)
  1244  
  1245  	// Getter signatures
  1246  	CBF() antlr.TerminalNode
  1247  	NUMBER1() antlr.TerminalNode
  1248  
  1249  	// IsCbfStmtContext differentiates from other interfaces.
  1250  	IsCbfStmtContext()
  1251  }
  1252  
  1253  type CbfStmtContext struct {
  1254  	antlr.BaseParserRuleContext
  1255  	parser       antlr.Parser
  1256  	BackupFactor antlr.Token
  1257  }
  1258  
  1259  func NewEmptyCbfStmtContext() *CbfStmtContext {
  1260  	var p = new(CbfStmtContext)
  1261  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1262  	p.RuleIndex = QueryRULE_cbfStmt
  1263  	return p
  1264  }
  1265  
  1266  func InitEmptyCbfStmtContext(p *CbfStmtContext) {
  1267  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1268  	p.RuleIndex = QueryRULE_cbfStmt
  1269  }
  1270  
  1271  func (*CbfStmtContext) IsCbfStmtContext() {}
  1272  
  1273  func NewCbfStmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CbfStmtContext {
  1274  	var p = new(CbfStmtContext)
  1275  
  1276  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  1277  
  1278  	p.parser = parser
  1279  	p.RuleIndex = QueryRULE_cbfStmt
  1280  
  1281  	return p
  1282  }
  1283  
  1284  func (s *CbfStmtContext) GetParser() antlr.Parser { return s.parser }
  1285  
  1286  func (s *CbfStmtContext) GetBackupFactor() antlr.Token { return s.BackupFactor }
  1287  
  1288  func (s *CbfStmtContext) SetBackupFactor(v antlr.Token) { s.BackupFactor = v }
  1289  
  1290  func (s *CbfStmtContext) CBF() antlr.TerminalNode {
  1291  	return s.GetToken(QueryCBF, 0)
  1292  }
  1293  
  1294  func (s *CbfStmtContext) NUMBER1() antlr.TerminalNode {
  1295  	return s.GetToken(QueryNUMBER1, 0)
  1296  }
  1297  
  1298  func (s *CbfStmtContext) GetRuleContext() antlr.RuleContext {
  1299  	return s
  1300  }
  1301  
  1302  func (s *CbfStmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  1303  	return antlr.TreesStringTree(s, ruleNames, recog)
  1304  }
  1305  
  1306  func (s *CbfStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  1307  	switch t := visitor.(type) {
  1308  	case QueryVisitor:
  1309  		return t.VisitCbfStmt(s)
  1310  
  1311  	default:
  1312  		return t.VisitChildren(s)
  1313  	}
  1314  }
  1315  
  1316  func (p *Query) CbfStmt() (localctx ICbfStmtContext) {
  1317  	localctx = NewCbfStmtContext(p, p.GetParserRuleContext(), p.GetState())
  1318  	p.EnterRule(localctx, 8, QueryRULE_cbfStmt)
  1319  	p.EnterOuterAlt(localctx, 1)
  1320  	{
  1321  		p.SetState(86)
  1322  		p.Match(QueryCBF)
  1323  		if p.HasError() {
  1324  			// Recognition error - abort rule
  1325  			goto errorExit
  1326  		}
  1327  	}
  1328  	{
  1329  		p.SetState(87)
  1330  
  1331  		var _m = p.Match(QueryNUMBER1)
  1332  
  1333  		localctx.(*CbfStmtContext).BackupFactor = _m
  1334  		if p.HasError() {
  1335  			// Recognition error - abort rule
  1336  			goto errorExit
  1337  		}
  1338  	}
  1339  
  1340  errorExit:
  1341  	if p.HasError() {
  1342  		v := p.GetError()
  1343  		localctx.SetException(v)
  1344  		p.GetErrorHandler().ReportError(p, v)
  1345  		p.GetErrorHandler().Recover(p, v)
  1346  		p.SetError(nil)
  1347  	}
  1348  	p.ExitRule()
  1349  	return localctx
  1350  	goto errorExit // Trick to prevent compiler error if the label is not used
  1351  }
  1352  
  1353  // ISelectStmtContext is an interface to support dynamic dispatch.
  1354  type ISelectStmtContext interface {
  1355  	antlr.ParserRuleContext
  1356  
  1357  	// GetParser returns the parser.
  1358  	GetParser() antlr.Parser
  1359  
  1360  	// GetCount returns the Count token.
  1361  	GetCount() antlr.Token
  1362  
  1363  	// SetCount sets the Count token.
  1364  	SetCount(antlr.Token)
  1365  
  1366  	// GetBucket returns the Bucket rule contexts.
  1367  	GetBucket() IFilterKeyContext
  1368  
  1369  	// GetFilter returns the Filter rule contexts.
  1370  	GetFilter() IIdentWCContext
  1371  
  1372  	// GetName returns the Name rule contexts.
  1373  	GetName() IIdentContext
  1374  
  1375  	// SetBucket sets the Bucket rule contexts.
  1376  	SetBucket(IFilterKeyContext)
  1377  
  1378  	// SetFilter sets the Filter rule contexts.
  1379  	SetFilter(IIdentWCContext)
  1380  
  1381  	// SetName sets the Name rule contexts.
  1382  	SetName(IIdentContext)
  1383  
  1384  	// Getter signatures
  1385  	SELECT() antlr.TerminalNode
  1386  	FROM() antlr.TerminalNode
  1387  	NUMBER1() antlr.TerminalNode
  1388  	IdentWC() IIdentWCContext
  1389  	IN() antlr.TerminalNode
  1390  	AS() antlr.TerminalNode
  1391  	FilterKey() IFilterKeyContext
  1392  	Ident() IIdentContext
  1393  	Clause() IClauseContext
  1394  
  1395  	// IsSelectStmtContext differentiates from other interfaces.
  1396  	IsSelectStmtContext()
  1397  }
  1398  
  1399  type SelectStmtContext struct {
  1400  	antlr.BaseParserRuleContext
  1401  	parser antlr.Parser
  1402  	Count  antlr.Token
  1403  	Bucket IFilterKeyContext
  1404  	Filter IIdentWCContext
  1405  	Name   IIdentContext
  1406  }
  1407  
  1408  func NewEmptySelectStmtContext() *SelectStmtContext {
  1409  	var p = new(SelectStmtContext)
  1410  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1411  	p.RuleIndex = QueryRULE_selectStmt
  1412  	return p
  1413  }
  1414  
  1415  func InitEmptySelectStmtContext(p *SelectStmtContext) {
  1416  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1417  	p.RuleIndex = QueryRULE_selectStmt
  1418  }
  1419  
  1420  func (*SelectStmtContext) IsSelectStmtContext() {}
  1421  
  1422  func NewSelectStmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectStmtContext {
  1423  	var p = new(SelectStmtContext)
  1424  
  1425  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  1426  
  1427  	p.parser = parser
  1428  	p.RuleIndex = QueryRULE_selectStmt
  1429  
  1430  	return p
  1431  }
  1432  
  1433  func (s *SelectStmtContext) GetParser() antlr.Parser { return s.parser }
  1434  
  1435  func (s *SelectStmtContext) GetCount() antlr.Token { return s.Count }
  1436  
  1437  func (s *SelectStmtContext) SetCount(v antlr.Token) { s.Count = v }
  1438  
  1439  func (s *SelectStmtContext) GetBucket() IFilterKeyContext { return s.Bucket }
  1440  
  1441  func (s *SelectStmtContext) GetFilter() IIdentWCContext { return s.Filter }
  1442  
  1443  func (s *SelectStmtContext) GetName() IIdentContext { return s.Name }
  1444  
  1445  func (s *SelectStmtContext) SetBucket(v IFilterKeyContext) { s.Bucket = v }
  1446  
  1447  func (s *SelectStmtContext) SetFilter(v IIdentWCContext) { s.Filter = v }
  1448  
  1449  func (s *SelectStmtContext) SetName(v IIdentContext) { s.Name = v }
  1450  
  1451  func (s *SelectStmtContext) SELECT() antlr.TerminalNode {
  1452  	return s.GetToken(QuerySELECT, 0)
  1453  }
  1454  
  1455  func (s *SelectStmtContext) FROM() antlr.TerminalNode {
  1456  	return s.GetToken(QueryFROM, 0)
  1457  }
  1458  
  1459  func (s *SelectStmtContext) NUMBER1() antlr.TerminalNode {
  1460  	return s.GetToken(QueryNUMBER1, 0)
  1461  }
  1462  
  1463  func (s *SelectStmtContext) IdentWC() IIdentWCContext {
  1464  	var t antlr.RuleContext
  1465  	for _, ctx := range s.GetChildren() {
  1466  		if _, ok := ctx.(IIdentWCContext); ok {
  1467  			t = ctx.(antlr.RuleContext)
  1468  			break
  1469  		}
  1470  	}
  1471  
  1472  	if t == nil {
  1473  		return nil
  1474  	}
  1475  
  1476  	return t.(IIdentWCContext)
  1477  }
  1478  
  1479  func (s *SelectStmtContext) IN() antlr.TerminalNode {
  1480  	return s.GetToken(QueryIN, 0)
  1481  }
  1482  
  1483  func (s *SelectStmtContext) AS() antlr.TerminalNode {
  1484  	return s.GetToken(QueryAS, 0)
  1485  }
  1486  
  1487  func (s *SelectStmtContext) FilterKey() IFilterKeyContext {
  1488  	var t antlr.RuleContext
  1489  	for _, ctx := range s.GetChildren() {
  1490  		if _, ok := ctx.(IFilterKeyContext); ok {
  1491  			t = ctx.(antlr.RuleContext)
  1492  			break
  1493  		}
  1494  	}
  1495  
  1496  	if t == nil {
  1497  		return nil
  1498  	}
  1499  
  1500  	return t.(IFilterKeyContext)
  1501  }
  1502  
  1503  func (s *SelectStmtContext) Ident() IIdentContext {
  1504  	var t antlr.RuleContext
  1505  	for _, ctx := range s.GetChildren() {
  1506  		if _, ok := ctx.(IIdentContext); ok {
  1507  			t = ctx.(antlr.RuleContext)
  1508  			break
  1509  		}
  1510  	}
  1511  
  1512  	if t == nil {
  1513  		return nil
  1514  	}
  1515  
  1516  	return t.(IIdentContext)
  1517  }
  1518  
  1519  func (s *SelectStmtContext) Clause() IClauseContext {
  1520  	var t antlr.RuleContext
  1521  	for _, ctx := range s.GetChildren() {
  1522  		if _, ok := ctx.(IClauseContext); ok {
  1523  			t = ctx.(antlr.RuleContext)
  1524  			break
  1525  		}
  1526  	}
  1527  
  1528  	if t == nil {
  1529  		return nil
  1530  	}
  1531  
  1532  	return t.(IClauseContext)
  1533  }
  1534  
  1535  func (s *SelectStmtContext) GetRuleContext() antlr.RuleContext {
  1536  	return s
  1537  }
  1538  
  1539  func (s *SelectStmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  1540  	return antlr.TreesStringTree(s, ruleNames, recog)
  1541  }
  1542  
  1543  func (s *SelectStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  1544  	switch t := visitor.(type) {
  1545  	case QueryVisitor:
  1546  		return t.VisitSelectStmt(s)
  1547  
  1548  	default:
  1549  		return t.VisitChildren(s)
  1550  	}
  1551  }
  1552  
  1553  func (p *Query) SelectStmt() (localctx ISelectStmtContext) {
  1554  	localctx = NewSelectStmtContext(p, p.GetParserRuleContext(), p.GetState())
  1555  	p.EnterRule(localctx, 10, QueryRULE_selectStmt)
  1556  	var _la int
  1557  
  1558  	p.EnterOuterAlt(localctx, 1)
  1559  	{
  1560  		p.SetState(89)
  1561  		p.Match(QuerySELECT)
  1562  		if p.HasError() {
  1563  			// Recognition error - abort rule
  1564  			goto errorExit
  1565  		}
  1566  	}
  1567  	{
  1568  		p.SetState(90)
  1569  
  1570  		var _m = p.Match(QueryNUMBER1)
  1571  
  1572  		localctx.(*SelectStmtContext).Count = _m
  1573  		if p.HasError() {
  1574  			// Recognition error - abort rule
  1575  			goto errorExit
  1576  		}
  1577  	}
  1578  	p.SetState(96)
  1579  	p.GetErrorHandler().Sync(p)
  1580  	if p.HasError() {
  1581  		goto errorExit
  1582  	}
  1583  	_la = p.GetTokenStream().LA(1)
  1584  
  1585  	if _la == QueryIN {
  1586  		{
  1587  			p.SetState(91)
  1588  			p.Match(QueryIN)
  1589  			if p.HasError() {
  1590  				// Recognition error - abort rule
  1591  				goto errorExit
  1592  			}
  1593  		}
  1594  		p.SetState(93)
  1595  		p.GetErrorHandler().Sync(p)
  1596  		if p.HasError() {
  1597  			goto errorExit
  1598  		}
  1599  		_la = p.GetTokenStream().LA(1)
  1600  
  1601  		if _la == QueryCLAUSE_SAME || _la == QueryCLAUSE_DISTINCT {
  1602  			{
  1603  				p.SetState(92)
  1604  				p.Clause()
  1605  			}
  1606  
  1607  		}
  1608  		{
  1609  			p.SetState(95)
  1610  
  1611  			var _x = p.FilterKey()
  1612  
  1613  			localctx.(*SelectStmtContext).Bucket = _x
  1614  		}
  1615  
  1616  	}
  1617  	{
  1618  		p.SetState(98)
  1619  		p.Match(QueryFROM)
  1620  		if p.HasError() {
  1621  			// Recognition error - abort rule
  1622  			goto errorExit
  1623  		}
  1624  	}
  1625  	{
  1626  		p.SetState(99)
  1627  
  1628  		var _x = p.IdentWC()
  1629  
  1630  		localctx.(*SelectStmtContext).Filter = _x
  1631  	}
  1632  	p.SetState(102)
  1633  	p.GetErrorHandler().Sync(p)
  1634  	if p.HasError() {
  1635  		goto errorExit
  1636  	}
  1637  	_la = p.GetTokenStream().LA(1)
  1638  
  1639  	if _la == QueryAS {
  1640  		{
  1641  			p.SetState(100)
  1642  			p.Match(QueryAS)
  1643  			if p.HasError() {
  1644  				// Recognition error - abort rule
  1645  				goto errorExit
  1646  			}
  1647  		}
  1648  		{
  1649  			p.SetState(101)
  1650  
  1651  			var _x = p.Ident()
  1652  
  1653  			localctx.(*SelectStmtContext).Name = _x
  1654  		}
  1655  
  1656  	}
  1657  
  1658  errorExit:
  1659  	if p.HasError() {
  1660  		v := p.GetError()
  1661  		localctx.SetException(v)
  1662  		p.GetErrorHandler().ReportError(p, v)
  1663  		p.GetErrorHandler().Recover(p, v)
  1664  		p.SetError(nil)
  1665  	}
  1666  	p.ExitRule()
  1667  	return localctx
  1668  	goto errorExit // Trick to prevent compiler error if the label is not used
  1669  }
  1670  
  1671  // IClauseContext is an interface to support dynamic dispatch.
  1672  type IClauseContext interface {
  1673  	antlr.ParserRuleContext
  1674  
  1675  	// GetParser returns the parser.
  1676  	GetParser() antlr.Parser
  1677  
  1678  	// Getter signatures
  1679  	CLAUSE_SAME() antlr.TerminalNode
  1680  	CLAUSE_DISTINCT() antlr.TerminalNode
  1681  
  1682  	// IsClauseContext differentiates from other interfaces.
  1683  	IsClauseContext()
  1684  }
  1685  
  1686  type ClauseContext struct {
  1687  	antlr.BaseParserRuleContext
  1688  	parser antlr.Parser
  1689  }
  1690  
  1691  func NewEmptyClauseContext() *ClauseContext {
  1692  	var p = new(ClauseContext)
  1693  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1694  	p.RuleIndex = QueryRULE_clause
  1695  	return p
  1696  }
  1697  
  1698  func InitEmptyClauseContext(p *ClauseContext) {
  1699  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1700  	p.RuleIndex = QueryRULE_clause
  1701  }
  1702  
  1703  func (*ClauseContext) IsClauseContext() {}
  1704  
  1705  func NewClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ClauseContext {
  1706  	var p = new(ClauseContext)
  1707  
  1708  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  1709  
  1710  	p.parser = parser
  1711  	p.RuleIndex = QueryRULE_clause
  1712  
  1713  	return p
  1714  }
  1715  
  1716  func (s *ClauseContext) GetParser() antlr.Parser { return s.parser }
  1717  
  1718  func (s *ClauseContext) CLAUSE_SAME() antlr.TerminalNode {
  1719  	return s.GetToken(QueryCLAUSE_SAME, 0)
  1720  }
  1721  
  1722  func (s *ClauseContext) CLAUSE_DISTINCT() antlr.TerminalNode {
  1723  	return s.GetToken(QueryCLAUSE_DISTINCT, 0)
  1724  }
  1725  
  1726  func (s *ClauseContext) GetRuleContext() antlr.RuleContext {
  1727  	return s
  1728  }
  1729  
  1730  func (s *ClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  1731  	return antlr.TreesStringTree(s, ruleNames, recog)
  1732  }
  1733  
  1734  func (s *ClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  1735  	switch t := visitor.(type) {
  1736  	case QueryVisitor:
  1737  		return t.VisitClause(s)
  1738  
  1739  	default:
  1740  		return t.VisitChildren(s)
  1741  	}
  1742  }
  1743  
  1744  func (p *Query) Clause() (localctx IClauseContext) {
  1745  	localctx = NewClauseContext(p, p.GetParserRuleContext(), p.GetState())
  1746  	p.EnterRule(localctx, 12, QueryRULE_clause)
  1747  	var _la int
  1748  
  1749  	p.EnterOuterAlt(localctx, 1)
  1750  	{
  1751  		p.SetState(104)
  1752  		_la = p.GetTokenStream().LA(1)
  1753  
  1754  		if !(_la == QueryCLAUSE_SAME || _la == QueryCLAUSE_DISTINCT) {
  1755  			p.GetErrorHandler().RecoverInline(p)
  1756  		} else {
  1757  			p.GetErrorHandler().ReportMatch(p)
  1758  			p.Consume()
  1759  		}
  1760  	}
  1761  
  1762  errorExit:
  1763  	if p.HasError() {
  1764  		v := p.GetError()
  1765  		localctx.SetException(v)
  1766  		p.GetErrorHandler().ReportError(p, v)
  1767  		p.GetErrorHandler().Recover(p, v)
  1768  		p.SetError(nil)
  1769  	}
  1770  	p.ExitRule()
  1771  	return localctx
  1772  	goto errorExit // Trick to prevent compiler error if the label is not used
  1773  }
  1774  
  1775  // IFilterExprContext is an interface to support dynamic dispatch.
  1776  type IFilterExprContext interface {
  1777  	antlr.ParserRuleContext
  1778  
  1779  	// GetParser returns the parser.
  1780  	GetParser() antlr.Parser
  1781  
  1782  	// GetOp returns the Op token.
  1783  	GetOp() antlr.Token
  1784  
  1785  	// SetOp sets the Op token.
  1786  	SetOp(antlr.Token)
  1787  
  1788  	// GetF1 returns the F1 rule contexts.
  1789  	GetF1() IFilterExprContext
  1790  
  1791  	// GetInner returns the Inner rule contexts.
  1792  	GetInner() IFilterExprContext
  1793  
  1794  	// GetF2 returns the F2 rule contexts.
  1795  	GetF2() IFilterExprContext
  1796  
  1797  	// SetF1 sets the F1 rule contexts.
  1798  	SetF1(IFilterExprContext)
  1799  
  1800  	// SetInner sets the Inner rule contexts.
  1801  	SetInner(IFilterExprContext)
  1802  
  1803  	// SetF2 sets the F2 rule contexts.
  1804  	SetF2(IFilterExprContext)
  1805  
  1806  	// Getter signatures
  1807  	L_PAREN() antlr.TerminalNode
  1808  	R_PAREN() antlr.TerminalNode
  1809  	NOT_OP() antlr.TerminalNode
  1810  	AllFilterExpr() []IFilterExprContext
  1811  	FilterExpr(i int) IFilterExprContext
  1812  	Expr() IExprContext
  1813  	AND_OP() antlr.TerminalNode
  1814  	OR_OP() antlr.TerminalNode
  1815  
  1816  	// IsFilterExprContext differentiates from other interfaces.
  1817  	IsFilterExprContext()
  1818  }
  1819  
  1820  type FilterExprContext struct {
  1821  	antlr.BaseParserRuleContext
  1822  	parser antlr.Parser
  1823  	F1     IFilterExprContext
  1824  	Op     antlr.Token
  1825  	Inner  IFilterExprContext
  1826  	F2     IFilterExprContext
  1827  }
  1828  
  1829  func NewEmptyFilterExprContext() *FilterExprContext {
  1830  	var p = new(FilterExprContext)
  1831  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1832  	p.RuleIndex = QueryRULE_filterExpr
  1833  	return p
  1834  }
  1835  
  1836  func InitEmptyFilterExprContext(p *FilterExprContext) {
  1837  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  1838  	p.RuleIndex = QueryRULE_filterExpr
  1839  }
  1840  
  1841  func (*FilterExprContext) IsFilterExprContext() {}
  1842  
  1843  func NewFilterExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FilterExprContext {
  1844  	var p = new(FilterExprContext)
  1845  
  1846  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  1847  
  1848  	p.parser = parser
  1849  	p.RuleIndex = QueryRULE_filterExpr
  1850  
  1851  	return p
  1852  }
  1853  
  1854  func (s *FilterExprContext) GetParser() antlr.Parser { return s.parser }
  1855  
  1856  func (s *FilterExprContext) GetOp() antlr.Token { return s.Op }
  1857  
  1858  func (s *FilterExprContext) SetOp(v antlr.Token) { s.Op = v }
  1859  
  1860  func (s *FilterExprContext) GetF1() IFilterExprContext { return s.F1 }
  1861  
  1862  func (s *FilterExprContext) GetInner() IFilterExprContext { return s.Inner }
  1863  
  1864  func (s *FilterExprContext) GetF2() IFilterExprContext { return s.F2 }
  1865  
  1866  func (s *FilterExprContext) SetF1(v IFilterExprContext) { s.F1 = v }
  1867  
  1868  func (s *FilterExprContext) SetInner(v IFilterExprContext) { s.Inner = v }
  1869  
  1870  func (s *FilterExprContext) SetF2(v IFilterExprContext) { s.F2 = v }
  1871  
  1872  func (s *FilterExprContext) L_PAREN() antlr.TerminalNode {
  1873  	return s.GetToken(QueryL_PAREN, 0)
  1874  }
  1875  
  1876  func (s *FilterExprContext) R_PAREN() antlr.TerminalNode {
  1877  	return s.GetToken(QueryR_PAREN, 0)
  1878  }
  1879  
  1880  func (s *FilterExprContext) NOT_OP() antlr.TerminalNode {
  1881  	return s.GetToken(QueryNOT_OP, 0)
  1882  }
  1883  
  1884  func (s *FilterExprContext) AllFilterExpr() []IFilterExprContext {
  1885  	children := s.GetChildren()
  1886  	len := 0
  1887  	for _, ctx := range children {
  1888  		if _, ok := ctx.(IFilterExprContext); ok {
  1889  			len++
  1890  		}
  1891  	}
  1892  
  1893  	tst := make([]IFilterExprContext, len)
  1894  	i := 0
  1895  	for _, ctx := range children {
  1896  		if t, ok := ctx.(IFilterExprContext); ok {
  1897  			tst[i] = t.(IFilterExprContext)
  1898  			i++
  1899  		}
  1900  	}
  1901  
  1902  	return tst
  1903  }
  1904  
  1905  func (s *FilterExprContext) FilterExpr(i int) IFilterExprContext {
  1906  	var t antlr.RuleContext
  1907  	j := 0
  1908  	for _, ctx := range s.GetChildren() {
  1909  		if _, ok := ctx.(IFilterExprContext); ok {
  1910  			if j == i {
  1911  				t = ctx.(antlr.RuleContext)
  1912  				break
  1913  			}
  1914  			j++
  1915  		}
  1916  	}
  1917  
  1918  	if t == nil {
  1919  		return nil
  1920  	}
  1921  
  1922  	return t.(IFilterExprContext)
  1923  }
  1924  
  1925  func (s *FilterExprContext) Expr() IExprContext {
  1926  	var t antlr.RuleContext
  1927  	for _, ctx := range s.GetChildren() {
  1928  		if _, ok := ctx.(IExprContext); ok {
  1929  			t = ctx.(antlr.RuleContext)
  1930  			break
  1931  		}
  1932  	}
  1933  
  1934  	if t == nil {
  1935  		return nil
  1936  	}
  1937  
  1938  	return t.(IExprContext)
  1939  }
  1940  
  1941  func (s *FilterExprContext) AND_OP() antlr.TerminalNode {
  1942  	return s.GetToken(QueryAND_OP, 0)
  1943  }
  1944  
  1945  func (s *FilterExprContext) OR_OP() antlr.TerminalNode {
  1946  	return s.GetToken(QueryOR_OP, 0)
  1947  }
  1948  
  1949  func (s *FilterExprContext) GetRuleContext() antlr.RuleContext {
  1950  	return s
  1951  }
  1952  
  1953  func (s *FilterExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  1954  	return antlr.TreesStringTree(s, ruleNames, recog)
  1955  }
  1956  
  1957  func (s *FilterExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  1958  	switch t := visitor.(type) {
  1959  	case QueryVisitor:
  1960  		return t.VisitFilterExpr(s)
  1961  
  1962  	default:
  1963  		return t.VisitChildren(s)
  1964  	}
  1965  }
  1966  
  1967  func (p *Query) FilterExpr() (localctx IFilterExprContext) {
  1968  	return p.filterExpr(0)
  1969  }
  1970  
  1971  func (p *Query) filterExpr(_p int) (localctx IFilterExprContext) {
  1972  	var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext()
  1973  
  1974  	_parentState := p.GetState()
  1975  	localctx = NewFilterExprContext(p, p.GetParserRuleContext(), _parentState)
  1976  	var _prevctx IFilterExprContext = localctx
  1977  	var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning.
  1978  	_startState := 14
  1979  	p.EnterRecursionRule(localctx, 14, QueryRULE_filterExpr, _p)
  1980  	var _alt int
  1981  
  1982  	p.EnterOuterAlt(localctx, 1)
  1983  	p.SetState(117)
  1984  	p.GetErrorHandler().Sync(p)
  1985  	if p.HasError() {
  1986  		goto errorExit
  1987  	}
  1988  
  1989  	switch p.GetTokenStream().LA(1) {
  1990  	case QueryNOT_OP:
  1991  		{
  1992  			p.SetState(107)
  1993  
  1994  			var _m = p.Match(QueryNOT_OP)
  1995  
  1996  			localctx.(*FilterExprContext).Op = _m
  1997  			if p.HasError() {
  1998  				// Recognition error - abort rule
  1999  				goto errorExit
  2000  			}
  2001  		}
  2002  		{
  2003  			p.SetState(108)
  2004  			p.Match(QueryL_PAREN)
  2005  			if p.HasError() {
  2006  				// Recognition error - abort rule
  2007  				goto errorExit
  2008  			}
  2009  		}
  2010  		{
  2011  			p.SetState(109)
  2012  
  2013  			var _x = p.filterExpr(0)
  2014  
  2015  			localctx.(*FilterExprContext).F1 = _x
  2016  		}
  2017  		{
  2018  			p.SetState(110)
  2019  			p.Match(QueryR_PAREN)
  2020  			if p.HasError() {
  2021  				// Recognition error - abort rule
  2022  				goto errorExit
  2023  			}
  2024  		}
  2025  
  2026  	case QueryL_PAREN:
  2027  		{
  2028  			p.SetState(112)
  2029  			p.Match(QueryL_PAREN)
  2030  			if p.HasError() {
  2031  				// Recognition error - abort rule
  2032  				goto errorExit
  2033  			}
  2034  		}
  2035  		{
  2036  			p.SetState(113)
  2037  
  2038  			var _x = p.filterExpr(0)
  2039  
  2040  			localctx.(*FilterExprContext).Inner = _x
  2041  		}
  2042  		{
  2043  			p.SetState(114)
  2044  			p.Match(QueryR_PAREN)
  2045  			if p.HasError() {
  2046  				// Recognition error - abort rule
  2047  				goto errorExit
  2048  			}
  2049  		}
  2050  
  2051  	case QueryREP, QueryIN, QueryAS, QuerySELECT, QueryFROM, QueryFILTER, QueryAT, QueryIDENT, QuerySTRING:
  2052  		{
  2053  			p.SetState(116)
  2054  			p.Expr()
  2055  		}
  2056  
  2057  	default:
  2058  		p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
  2059  		goto errorExit
  2060  	}
  2061  	p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1))
  2062  	p.SetState(127)
  2063  	p.GetErrorHandler().Sync(p)
  2064  	if p.HasError() {
  2065  		goto errorExit
  2066  	}
  2067  	_alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 16, p.GetParserRuleContext())
  2068  	if p.HasError() {
  2069  		goto errorExit
  2070  	}
  2071  	for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
  2072  		if _alt == 1 {
  2073  			if p.GetParseListeners() != nil {
  2074  				p.TriggerExitRuleEvent()
  2075  			}
  2076  			_prevctx = localctx
  2077  			p.SetState(125)
  2078  			p.GetErrorHandler().Sync(p)
  2079  			if p.HasError() {
  2080  				goto errorExit
  2081  			}
  2082  
  2083  			switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 15, p.GetParserRuleContext()) {
  2084  			case 1:
  2085  				localctx = NewFilterExprContext(p, _parentctx, _parentState)
  2086  				localctx.(*FilterExprContext).F1 = _prevctx
  2087  				p.PushNewRecursionContext(localctx, _startState, QueryRULE_filterExpr)
  2088  				p.SetState(119)
  2089  
  2090  				if !(p.Precpred(p.GetParserRuleContext(), 4)) {
  2091  					p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", ""))
  2092  					goto errorExit
  2093  				}
  2094  				{
  2095  					p.SetState(120)
  2096  
  2097  					var _m = p.Match(QueryAND_OP)
  2098  
  2099  					localctx.(*FilterExprContext).Op = _m
  2100  					if p.HasError() {
  2101  						// Recognition error - abort rule
  2102  						goto errorExit
  2103  					}
  2104  				}
  2105  				{
  2106  					p.SetState(121)
  2107  
  2108  					var _x = p.filterExpr(5)
  2109  
  2110  					localctx.(*FilterExprContext).F2 = _x
  2111  				}
  2112  
  2113  			case 2:
  2114  				localctx = NewFilterExprContext(p, _parentctx, _parentState)
  2115  				localctx.(*FilterExprContext).F1 = _prevctx
  2116  				p.PushNewRecursionContext(localctx, _startState, QueryRULE_filterExpr)
  2117  				p.SetState(122)
  2118  
  2119  				if !(p.Precpred(p.GetParserRuleContext(), 3)) {
  2120  					p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 3)", ""))
  2121  					goto errorExit
  2122  				}
  2123  				{
  2124  					p.SetState(123)
  2125  
  2126  					var _m = p.Match(QueryOR_OP)
  2127  
  2128  					localctx.(*FilterExprContext).Op = _m
  2129  					if p.HasError() {
  2130  						// Recognition error - abort rule
  2131  						goto errorExit
  2132  					}
  2133  				}
  2134  				{
  2135  					p.SetState(124)
  2136  
  2137  					var _x = p.filterExpr(4)
  2138  
  2139  					localctx.(*FilterExprContext).F2 = _x
  2140  				}
  2141  
  2142  			case antlr.ATNInvalidAltNumber:
  2143  				goto errorExit
  2144  			}
  2145  
  2146  		}
  2147  		p.SetState(129)
  2148  		p.GetErrorHandler().Sync(p)
  2149  		if p.HasError() {
  2150  			goto errorExit
  2151  		}
  2152  		_alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 16, p.GetParserRuleContext())
  2153  		if p.HasError() {
  2154  			goto errorExit
  2155  		}
  2156  	}
  2157  
  2158  errorExit:
  2159  	if p.HasError() {
  2160  		v := p.GetError()
  2161  		localctx.SetException(v)
  2162  		p.GetErrorHandler().ReportError(p, v)
  2163  		p.GetErrorHandler().Recover(p, v)
  2164  		p.SetError(nil)
  2165  	}
  2166  	p.UnrollRecursionContexts(_parentctx)
  2167  	return localctx
  2168  	goto errorExit // Trick to prevent compiler error if the label is not used
  2169  }
  2170  
  2171  // IFilterStmtContext is an interface to support dynamic dispatch.
  2172  type IFilterStmtContext interface {
  2173  	antlr.ParserRuleContext
  2174  
  2175  	// GetParser returns the parser.
  2176  	GetParser() antlr.Parser
  2177  
  2178  	// GetExpr returns the Expr rule contexts.
  2179  	GetExpr() IFilterExprContext
  2180  
  2181  	// GetName returns the Name rule contexts.
  2182  	GetName() IIdentContext
  2183  
  2184  	// SetExpr sets the Expr rule contexts.
  2185  	SetExpr(IFilterExprContext)
  2186  
  2187  	// SetName sets the Name rule contexts.
  2188  	SetName(IIdentContext)
  2189  
  2190  	// Getter signatures
  2191  	FILTER() antlr.TerminalNode
  2192  	AS() antlr.TerminalNode
  2193  	FilterExpr() IFilterExprContext
  2194  	Ident() IIdentContext
  2195  
  2196  	// IsFilterStmtContext differentiates from other interfaces.
  2197  	IsFilterStmtContext()
  2198  }
  2199  
  2200  type FilterStmtContext struct {
  2201  	antlr.BaseParserRuleContext
  2202  	parser antlr.Parser
  2203  	Expr   IFilterExprContext
  2204  	Name   IIdentContext
  2205  }
  2206  
  2207  func NewEmptyFilterStmtContext() *FilterStmtContext {
  2208  	var p = new(FilterStmtContext)
  2209  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2210  	p.RuleIndex = QueryRULE_filterStmt
  2211  	return p
  2212  }
  2213  
  2214  func InitEmptyFilterStmtContext(p *FilterStmtContext) {
  2215  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2216  	p.RuleIndex = QueryRULE_filterStmt
  2217  }
  2218  
  2219  func (*FilterStmtContext) IsFilterStmtContext() {}
  2220  
  2221  func NewFilterStmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FilterStmtContext {
  2222  	var p = new(FilterStmtContext)
  2223  
  2224  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  2225  
  2226  	p.parser = parser
  2227  	p.RuleIndex = QueryRULE_filterStmt
  2228  
  2229  	return p
  2230  }
  2231  
  2232  func (s *FilterStmtContext) GetParser() antlr.Parser { return s.parser }
  2233  
  2234  func (s *FilterStmtContext) GetExpr() IFilterExprContext { return s.Expr }
  2235  
  2236  func (s *FilterStmtContext) GetName() IIdentContext { return s.Name }
  2237  
  2238  func (s *FilterStmtContext) SetExpr(v IFilterExprContext) { s.Expr = v }
  2239  
  2240  func (s *FilterStmtContext) SetName(v IIdentContext) { s.Name = v }
  2241  
  2242  func (s *FilterStmtContext) FILTER() antlr.TerminalNode {
  2243  	return s.GetToken(QueryFILTER, 0)
  2244  }
  2245  
  2246  func (s *FilterStmtContext) AS() antlr.TerminalNode {
  2247  	return s.GetToken(QueryAS, 0)
  2248  }
  2249  
  2250  func (s *FilterStmtContext) FilterExpr() IFilterExprContext {
  2251  	var t antlr.RuleContext
  2252  	for _, ctx := range s.GetChildren() {
  2253  		if _, ok := ctx.(IFilterExprContext); ok {
  2254  			t = ctx.(antlr.RuleContext)
  2255  			break
  2256  		}
  2257  	}
  2258  
  2259  	if t == nil {
  2260  		return nil
  2261  	}
  2262  
  2263  	return t.(IFilterExprContext)
  2264  }
  2265  
  2266  func (s *FilterStmtContext) Ident() IIdentContext {
  2267  	var t antlr.RuleContext
  2268  	for _, ctx := range s.GetChildren() {
  2269  		if _, ok := ctx.(IIdentContext); ok {
  2270  			t = ctx.(antlr.RuleContext)
  2271  			break
  2272  		}
  2273  	}
  2274  
  2275  	if t == nil {
  2276  		return nil
  2277  	}
  2278  
  2279  	return t.(IIdentContext)
  2280  }
  2281  
  2282  func (s *FilterStmtContext) GetRuleContext() antlr.RuleContext {
  2283  	return s
  2284  }
  2285  
  2286  func (s *FilterStmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  2287  	return antlr.TreesStringTree(s, ruleNames, recog)
  2288  }
  2289  
  2290  func (s *FilterStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  2291  	switch t := visitor.(type) {
  2292  	case QueryVisitor:
  2293  		return t.VisitFilterStmt(s)
  2294  
  2295  	default:
  2296  		return t.VisitChildren(s)
  2297  	}
  2298  }
  2299  
  2300  func (p *Query) FilterStmt() (localctx IFilterStmtContext) {
  2301  	localctx = NewFilterStmtContext(p, p.GetParserRuleContext(), p.GetState())
  2302  	p.EnterRule(localctx, 16, QueryRULE_filterStmt)
  2303  	p.EnterOuterAlt(localctx, 1)
  2304  	{
  2305  		p.SetState(130)
  2306  		p.Match(QueryFILTER)
  2307  		if p.HasError() {
  2308  			// Recognition error - abort rule
  2309  			goto errorExit
  2310  		}
  2311  	}
  2312  	{
  2313  		p.SetState(131)
  2314  
  2315  		var _x = p.filterExpr(0)
  2316  
  2317  		localctx.(*FilterStmtContext).Expr = _x
  2318  	}
  2319  	{
  2320  		p.SetState(132)
  2321  		p.Match(QueryAS)
  2322  		if p.HasError() {
  2323  			// Recognition error - abort rule
  2324  			goto errorExit
  2325  		}
  2326  	}
  2327  	{
  2328  		p.SetState(133)
  2329  
  2330  		var _x = p.Ident()
  2331  
  2332  		localctx.(*FilterStmtContext).Name = _x
  2333  	}
  2334  
  2335  errorExit:
  2336  	if p.HasError() {
  2337  		v := p.GetError()
  2338  		localctx.SetException(v)
  2339  		p.GetErrorHandler().ReportError(p, v)
  2340  		p.GetErrorHandler().Recover(p, v)
  2341  		p.SetError(nil)
  2342  	}
  2343  	p.ExitRule()
  2344  	return localctx
  2345  	goto errorExit // Trick to prevent compiler error if the label is not used
  2346  }
  2347  
  2348  // IExprContext is an interface to support dynamic dispatch.
  2349  type IExprContext interface {
  2350  	antlr.ParserRuleContext
  2351  
  2352  	// GetParser returns the parser.
  2353  	GetParser() antlr.Parser
  2354  
  2355  	// GetFilter returns the Filter rule contexts.
  2356  	GetFilter() IIdentContext
  2357  
  2358  	// GetKey returns the Key rule contexts.
  2359  	GetKey() IFilterKeyContext
  2360  
  2361  	// GetValue returns the Value rule contexts.
  2362  	GetValue() IFilterValueContext
  2363  
  2364  	// SetFilter sets the Filter rule contexts.
  2365  	SetFilter(IIdentContext)
  2366  
  2367  	// SetKey sets the Key rule contexts.
  2368  	SetKey(IFilterKeyContext)
  2369  
  2370  	// SetValue sets the Value rule contexts.
  2371  	SetValue(IFilterValueContext)
  2372  
  2373  	// Getter signatures
  2374  	AT() antlr.TerminalNode
  2375  	Ident() IIdentContext
  2376  	SIMPLE_OP() antlr.TerminalNode
  2377  	FilterKey() IFilterKeyContext
  2378  	FilterValue() IFilterValueContext
  2379  
  2380  	// IsExprContext differentiates from other interfaces.
  2381  	IsExprContext()
  2382  }
  2383  
  2384  type ExprContext struct {
  2385  	antlr.BaseParserRuleContext
  2386  	parser antlr.Parser
  2387  	Filter IIdentContext
  2388  	Key    IFilterKeyContext
  2389  	Value  IFilterValueContext
  2390  }
  2391  
  2392  func NewEmptyExprContext() *ExprContext {
  2393  	var p = new(ExprContext)
  2394  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2395  	p.RuleIndex = QueryRULE_expr
  2396  	return p
  2397  }
  2398  
  2399  func InitEmptyExprContext(p *ExprContext) {
  2400  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2401  	p.RuleIndex = QueryRULE_expr
  2402  }
  2403  
  2404  func (*ExprContext) IsExprContext() {}
  2405  
  2406  func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext {
  2407  	var p = new(ExprContext)
  2408  
  2409  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  2410  
  2411  	p.parser = parser
  2412  	p.RuleIndex = QueryRULE_expr
  2413  
  2414  	return p
  2415  }
  2416  
  2417  func (s *ExprContext) GetParser() antlr.Parser { return s.parser }
  2418  
  2419  func (s *ExprContext) GetFilter() IIdentContext { return s.Filter }
  2420  
  2421  func (s *ExprContext) GetKey() IFilterKeyContext { return s.Key }
  2422  
  2423  func (s *ExprContext) GetValue() IFilterValueContext { return s.Value }
  2424  
  2425  func (s *ExprContext) SetFilter(v IIdentContext) { s.Filter = v }
  2426  
  2427  func (s *ExprContext) SetKey(v IFilterKeyContext) { s.Key = v }
  2428  
  2429  func (s *ExprContext) SetValue(v IFilterValueContext) { s.Value = v }
  2430  
  2431  func (s *ExprContext) AT() antlr.TerminalNode {
  2432  	return s.GetToken(QueryAT, 0)
  2433  }
  2434  
  2435  func (s *ExprContext) Ident() IIdentContext {
  2436  	var t antlr.RuleContext
  2437  	for _, ctx := range s.GetChildren() {
  2438  		if _, ok := ctx.(IIdentContext); ok {
  2439  			t = ctx.(antlr.RuleContext)
  2440  			break
  2441  		}
  2442  	}
  2443  
  2444  	if t == nil {
  2445  		return nil
  2446  	}
  2447  
  2448  	return t.(IIdentContext)
  2449  }
  2450  
  2451  func (s *ExprContext) SIMPLE_OP() antlr.TerminalNode {
  2452  	return s.GetToken(QuerySIMPLE_OP, 0)
  2453  }
  2454  
  2455  func (s *ExprContext) FilterKey() IFilterKeyContext {
  2456  	var t antlr.RuleContext
  2457  	for _, ctx := range s.GetChildren() {
  2458  		if _, ok := ctx.(IFilterKeyContext); ok {
  2459  			t = ctx.(antlr.RuleContext)
  2460  			break
  2461  		}
  2462  	}
  2463  
  2464  	if t == nil {
  2465  		return nil
  2466  	}
  2467  
  2468  	return t.(IFilterKeyContext)
  2469  }
  2470  
  2471  func (s *ExprContext) FilterValue() IFilterValueContext {
  2472  	var t antlr.RuleContext
  2473  	for _, ctx := range s.GetChildren() {
  2474  		if _, ok := ctx.(IFilterValueContext); ok {
  2475  			t = ctx.(antlr.RuleContext)
  2476  			break
  2477  		}
  2478  	}
  2479  
  2480  	if t == nil {
  2481  		return nil
  2482  	}
  2483  
  2484  	return t.(IFilterValueContext)
  2485  }
  2486  
  2487  func (s *ExprContext) GetRuleContext() antlr.RuleContext {
  2488  	return s
  2489  }
  2490  
  2491  func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  2492  	return antlr.TreesStringTree(s, ruleNames, recog)
  2493  }
  2494  
  2495  func (s *ExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  2496  	switch t := visitor.(type) {
  2497  	case QueryVisitor:
  2498  		return t.VisitExpr(s)
  2499  
  2500  	default:
  2501  		return t.VisitChildren(s)
  2502  	}
  2503  }
  2504  
  2505  func (p *Query) Expr() (localctx IExprContext) {
  2506  	localctx = NewExprContext(p, p.GetParserRuleContext(), p.GetState())
  2507  	p.EnterRule(localctx, 18, QueryRULE_expr)
  2508  	p.SetState(141)
  2509  	p.GetErrorHandler().Sync(p)
  2510  	if p.HasError() {
  2511  		goto errorExit
  2512  	}
  2513  
  2514  	switch p.GetTokenStream().LA(1) {
  2515  	case QueryAT:
  2516  		p.EnterOuterAlt(localctx, 1)
  2517  		{
  2518  			p.SetState(135)
  2519  			p.Match(QueryAT)
  2520  			if p.HasError() {
  2521  				// Recognition error - abort rule
  2522  				goto errorExit
  2523  			}
  2524  		}
  2525  		{
  2526  			p.SetState(136)
  2527  
  2528  			var _x = p.Ident()
  2529  
  2530  			localctx.(*ExprContext).Filter = _x
  2531  		}
  2532  
  2533  	case QueryREP, QueryIN, QueryAS, QuerySELECT, QueryFROM, QueryFILTER, QueryIDENT, QuerySTRING:
  2534  		p.EnterOuterAlt(localctx, 2)
  2535  		{
  2536  			p.SetState(137)
  2537  
  2538  			var _x = p.FilterKey()
  2539  
  2540  			localctx.(*ExprContext).Key = _x
  2541  		}
  2542  		{
  2543  			p.SetState(138)
  2544  			p.Match(QuerySIMPLE_OP)
  2545  			if p.HasError() {
  2546  				// Recognition error - abort rule
  2547  				goto errorExit
  2548  			}
  2549  		}
  2550  		{
  2551  			p.SetState(139)
  2552  
  2553  			var _x = p.FilterValue()
  2554  
  2555  			localctx.(*ExprContext).Value = _x
  2556  		}
  2557  
  2558  	default:
  2559  		p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
  2560  		goto errorExit
  2561  	}
  2562  
  2563  errorExit:
  2564  	if p.HasError() {
  2565  		v := p.GetError()
  2566  		localctx.SetException(v)
  2567  		p.GetErrorHandler().ReportError(p, v)
  2568  		p.GetErrorHandler().Recover(p, v)
  2569  		p.SetError(nil)
  2570  	}
  2571  	p.ExitRule()
  2572  	return localctx
  2573  	goto errorExit // Trick to prevent compiler error if the label is not used
  2574  }
  2575  
  2576  // IFilterKeyContext is an interface to support dynamic dispatch.
  2577  type IFilterKeyContext interface {
  2578  	antlr.ParserRuleContext
  2579  
  2580  	// GetParser returns the parser.
  2581  	GetParser() antlr.Parser
  2582  
  2583  	// Getter signatures
  2584  	Ident() IIdentContext
  2585  	STRING() antlr.TerminalNode
  2586  
  2587  	// IsFilterKeyContext differentiates from other interfaces.
  2588  	IsFilterKeyContext()
  2589  }
  2590  
  2591  type FilterKeyContext struct {
  2592  	antlr.BaseParserRuleContext
  2593  	parser antlr.Parser
  2594  }
  2595  
  2596  func NewEmptyFilterKeyContext() *FilterKeyContext {
  2597  	var p = new(FilterKeyContext)
  2598  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2599  	p.RuleIndex = QueryRULE_filterKey
  2600  	return p
  2601  }
  2602  
  2603  func InitEmptyFilterKeyContext(p *FilterKeyContext) {
  2604  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2605  	p.RuleIndex = QueryRULE_filterKey
  2606  }
  2607  
  2608  func (*FilterKeyContext) IsFilterKeyContext() {}
  2609  
  2610  func NewFilterKeyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FilterKeyContext {
  2611  	var p = new(FilterKeyContext)
  2612  
  2613  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  2614  
  2615  	p.parser = parser
  2616  	p.RuleIndex = QueryRULE_filterKey
  2617  
  2618  	return p
  2619  }
  2620  
  2621  func (s *FilterKeyContext) GetParser() antlr.Parser { return s.parser }
  2622  
  2623  func (s *FilterKeyContext) Ident() IIdentContext {
  2624  	var t antlr.RuleContext
  2625  	for _, ctx := range s.GetChildren() {
  2626  		if _, ok := ctx.(IIdentContext); ok {
  2627  			t = ctx.(antlr.RuleContext)
  2628  			break
  2629  		}
  2630  	}
  2631  
  2632  	if t == nil {
  2633  		return nil
  2634  	}
  2635  
  2636  	return t.(IIdentContext)
  2637  }
  2638  
  2639  func (s *FilterKeyContext) STRING() antlr.TerminalNode {
  2640  	return s.GetToken(QuerySTRING, 0)
  2641  }
  2642  
  2643  func (s *FilterKeyContext) GetRuleContext() antlr.RuleContext {
  2644  	return s
  2645  }
  2646  
  2647  func (s *FilterKeyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  2648  	return antlr.TreesStringTree(s, ruleNames, recog)
  2649  }
  2650  
  2651  func (s *FilterKeyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  2652  	switch t := visitor.(type) {
  2653  	case QueryVisitor:
  2654  		return t.VisitFilterKey(s)
  2655  
  2656  	default:
  2657  		return t.VisitChildren(s)
  2658  	}
  2659  }
  2660  
  2661  func (p *Query) FilterKey() (localctx IFilterKeyContext) {
  2662  	localctx = NewFilterKeyContext(p, p.GetParserRuleContext(), p.GetState())
  2663  	p.EnterRule(localctx, 20, QueryRULE_filterKey)
  2664  	p.SetState(145)
  2665  	p.GetErrorHandler().Sync(p)
  2666  	if p.HasError() {
  2667  		goto errorExit
  2668  	}
  2669  
  2670  	switch p.GetTokenStream().LA(1) {
  2671  	case QueryREP, QueryIN, QueryAS, QuerySELECT, QueryFROM, QueryFILTER, QueryIDENT:
  2672  		p.EnterOuterAlt(localctx, 1)
  2673  		{
  2674  			p.SetState(143)
  2675  			p.Ident()
  2676  		}
  2677  
  2678  	case QuerySTRING:
  2679  		p.EnterOuterAlt(localctx, 2)
  2680  		{
  2681  			p.SetState(144)
  2682  			p.Match(QuerySTRING)
  2683  			if p.HasError() {
  2684  				// Recognition error - abort rule
  2685  				goto errorExit
  2686  			}
  2687  		}
  2688  
  2689  	default:
  2690  		p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
  2691  		goto errorExit
  2692  	}
  2693  
  2694  errorExit:
  2695  	if p.HasError() {
  2696  		v := p.GetError()
  2697  		localctx.SetException(v)
  2698  		p.GetErrorHandler().ReportError(p, v)
  2699  		p.GetErrorHandler().Recover(p, v)
  2700  		p.SetError(nil)
  2701  	}
  2702  	p.ExitRule()
  2703  	return localctx
  2704  	goto errorExit // Trick to prevent compiler error if the label is not used
  2705  }
  2706  
  2707  // IFilterValueContext is an interface to support dynamic dispatch.
  2708  type IFilterValueContext interface {
  2709  	antlr.ParserRuleContext
  2710  
  2711  	// GetParser returns the parser.
  2712  	GetParser() antlr.Parser
  2713  
  2714  	// Getter signatures
  2715  	Ident() IIdentContext
  2716  	Number() INumberContext
  2717  	STRING() antlr.TerminalNode
  2718  
  2719  	// IsFilterValueContext differentiates from other interfaces.
  2720  	IsFilterValueContext()
  2721  }
  2722  
  2723  type FilterValueContext struct {
  2724  	antlr.BaseParserRuleContext
  2725  	parser antlr.Parser
  2726  }
  2727  
  2728  func NewEmptyFilterValueContext() *FilterValueContext {
  2729  	var p = new(FilterValueContext)
  2730  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2731  	p.RuleIndex = QueryRULE_filterValue
  2732  	return p
  2733  }
  2734  
  2735  func InitEmptyFilterValueContext(p *FilterValueContext) {
  2736  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2737  	p.RuleIndex = QueryRULE_filterValue
  2738  }
  2739  
  2740  func (*FilterValueContext) IsFilterValueContext() {}
  2741  
  2742  func NewFilterValueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FilterValueContext {
  2743  	var p = new(FilterValueContext)
  2744  
  2745  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  2746  
  2747  	p.parser = parser
  2748  	p.RuleIndex = QueryRULE_filterValue
  2749  
  2750  	return p
  2751  }
  2752  
  2753  func (s *FilterValueContext) GetParser() antlr.Parser { return s.parser }
  2754  
  2755  func (s *FilterValueContext) Ident() IIdentContext {
  2756  	var t antlr.RuleContext
  2757  	for _, ctx := range s.GetChildren() {
  2758  		if _, ok := ctx.(IIdentContext); ok {
  2759  			t = ctx.(antlr.RuleContext)
  2760  			break
  2761  		}
  2762  	}
  2763  
  2764  	if t == nil {
  2765  		return nil
  2766  	}
  2767  
  2768  	return t.(IIdentContext)
  2769  }
  2770  
  2771  func (s *FilterValueContext) Number() INumberContext {
  2772  	var t antlr.RuleContext
  2773  	for _, ctx := range s.GetChildren() {
  2774  		if _, ok := ctx.(INumberContext); ok {
  2775  			t = ctx.(antlr.RuleContext)
  2776  			break
  2777  		}
  2778  	}
  2779  
  2780  	if t == nil {
  2781  		return nil
  2782  	}
  2783  
  2784  	return t.(INumberContext)
  2785  }
  2786  
  2787  func (s *FilterValueContext) STRING() antlr.TerminalNode {
  2788  	return s.GetToken(QuerySTRING, 0)
  2789  }
  2790  
  2791  func (s *FilterValueContext) GetRuleContext() antlr.RuleContext {
  2792  	return s
  2793  }
  2794  
  2795  func (s *FilterValueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  2796  	return antlr.TreesStringTree(s, ruleNames, recog)
  2797  }
  2798  
  2799  func (s *FilterValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  2800  	switch t := visitor.(type) {
  2801  	case QueryVisitor:
  2802  		return t.VisitFilterValue(s)
  2803  
  2804  	default:
  2805  		return t.VisitChildren(s)
  2806  	}
  2807  }
  2808  
  2809  func (p *Query) FilterValue() (localctx IFilterValueContext) {
  2810  	localctx = NewFilterValueContext(p, p.GetParserRuleContext(), p.GetState())
  2811  	p.EnterRule(localctx, 22, QueryRULE_filterValue)
  2812  	p.SetState(150)
  2813  	p.GetErrorHandler().Sync(p)
  2814  	if p.HasError() {
  2815  		goto errorExit
  2816  	}
  2817  
  2818  	switch p.GetTokenStream().LA(1) {
  2819  	case QueryREP, QueryIN, QueryAS, QuerySELECT, QueryFROM, QueryFILTER, QueryIDENT:
  2820  		p.EnterOuterAlt(localctx, 1)
  2821  		{
  2822  			p.SetState(147)
  2823  			p.Ident()
  2824  		}
  2825  
  2826  	case QueryNUMBER1, QueryZERO:
  2827  		p.EnterOuterAlt(localctx, 2)
  2828  		{
  2829  			p.SetState(148)
  2830  			p.Number()
  2831  		}
  2832  
  2833  	case QuerySTRING:
  2834  		p.EnterOuterAlt(localctx, 3)
  2835  		{
  2836  			p.SetState(149)
  2837  			p.Match(QuerySTRING)
  2838  			if p.HasError() {
  2839  				// Recognition error - abort rule
  2840  				goto errorExit
  2841  			}
  2842  		}
  2843  
  2844  	default:
  2845  		p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
  2846  		goto errorExit
  2847  	}
  2848  
  2849  errorExit:
  2850  	if p.HasError() {
  2851  		v := p.GetError()
  2852  		localctx.SetException(v)
  2853  		p.GetErrorHandler().ReportError(p, v)
  2854  		p.GetErrorHandler().Recover(p, v)
  2855  		p.SetError(nil)
  2856  	}
  2857  	p.ExitRule()
  2858  	return localctx
  2859  	goto errorExit // Trick to prevent compiler error if the label is not used
  2860  }
  2861  
  2862  // INumberContext is an interface to support dynamic dispatch.
  2863  type INumberContext interface {
  2864  	antlr.ParserRuleContext
  2865  
  2866  	// GetParser returns the parser.
  2867  	GetParser() antlr.Parser
  2868  
  2869  	// Getter signatures
  2870  	ZERO() antlr.TerminalNode
  2871  	NUMBER1() antlr.TerminalNode
  2872  
  2873  	// IsNumberContext differentiates from other interfaces.
  2874  	IsNumberContext()
  2875  }
  2876  
  2877  type NumberContext struct {
  2878  	antlr.BaseParserRuleContext
  2879  	parser antlr.Parser
  2880  }
  2881  
  2882  func NewEmptyNumberContext() *NumberContext {
  2883  	var p = new(NumberContext)
  2884  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2885  	p.RuleIndex = QueryRULE_number
  2886  	return p
  2887  }
  2888  
  2889  func InitEmptyNumberContext(p *NumberContext) {
  2890  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2891  	p.RuleIndex = QueryRULE_number
  2892  }
  2893  
  2894  func (*NumberContext) IsNumberContext() {}
  2895  
  2896  func NewNumberContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumberContext {
  2897  	var p = new(NumberContext)
  2898  
  2899  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  2900  
  2901  	p.parser = parser
  2902  	p.RuleIndex = QueryRULE_number
  2903  
  2904  	return p
  2905  }
  2906  
  2907  func (s *NumberContext) GetParser() antlr.Parser { return s.parser }
  2908  
  2909  func (s *NumberContext) ZERO() antlr.TerminalNode {
  2910  	return s.GetToken(QueryZERO, 0)
  2911  }
  2912  
  2913  func (s *NumberContext) NUMBER1() antlr.TerminalNode {
  2914  	return s.GetToken(QueryNUMBER1, 0)
  2915  }
  2916  
  2917  func (s *NumberContext) GetRuleContext() antlr.RuleContext {
  2918  	return s
  2919  }
  2920  
  2921  func (s *NumberContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  2922  	return antlr.TreesStringTree(s, ruleNames, recog)
  2923  }
  2924  
  2925  func (s *NumberContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  2926  	switch t := visitor.(type) {
  2927  	case QueryVisitor:
  2928  		return t.VisitNumber(s)
  2929  
  2930  	default:
  2931  		return t.VisitChildren(s)
  2932  	}
  2933  }
  2934  
  2935  func (p *Query) Number() (localctx INumberContext) {
  2936  	localctx = NewNumberContext(p, p.GetParserRuleContext(), p.GetState())
  2937  	p.EnterRule(localctx, 24, QueryRULE_number)
  2938  	var _la int
  2939  
  2940  	p.EnterOuterAlt(localctx, 1)
  2941  	{
  2942  		p.SetState(152)
  2943  		_la = p.GetTokenStream().LA(1)
  2944  
  2945  		if !(_la == QueryNUMBER1 || _la == QueryZERO) {
  2946  			p.GetErrorHandler().RecoverInline(p)
  2947  		} else {
  2948  			p.GetErrorHandler().ReportMatch(p)
  2949  			p.Consume()
  2950  		}
  2951  	}
  2952  
  2953  errorExit:
  2954  	if p.HasError() {
  2955  		v := p.GetError()
  2956  		localctx.SetException(v)
  2957  		p.GetErrorHandler().ReportError(p, v)
  2958  		p.GetErrorHandler().Recover(p, v)
  2959  		p.SetError(nil)
  2960  	}
  2961  	p.ExitRule()
  2962  	return localctx
  2963  	goto errorExit // Trick to prevent compiler error if the label is not used
  2964  }
  2965  
  2966  // IKeywordContext is an interface to support dynamic dispatch.
  2967  type IKeywordContext interface {
  2968  	antlr.ParserRuleContext
  2969  
  2970  	// GetParser returns the parser.
  2971  	GetParser() antlr.Parser
  2972  
  2973  	// Getter signatures
  2974  	REP() antlr.TerminalNode
  2975  	IN() antlr.TerminalNode
  2976  	AS() antlr.TerminalNode
  2977  	SELECT() antlr.TerminalNode
  2978  	FROM() antlr.TerminalNode
  2979  	FILTER() antlr.TerminalNode
  2980  
  2981  	// IsKeywordContext differentiates from other interfaces.
  2982  	IsKeywordContext()
  2983  }
  2984  
  2985  type KeywordContext struct {
  2986  	antlr.BaseParserRuleContext
  2987  	parser antlr.Parser
  2988  }
  2989  
  2990  func NewEmptyKeywordContext() *KeywordContext {
  2991  	var p = new(KeywordContext)
  2992  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2993  	p.RuleIndex = QueryRULE_keyword
  2994  	return p
  2995  }
  2996  
  2997  func InitEmptyKeywordContext(p *KeywordContext) {
  2998  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  2999  	p.RuleIndex = QueryRULE_keyword
  3000  }
  3001  
  3002  func (*KeywordContext) IsKeywordContext() {}
  3003  
  3004  func NewKeywordContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KeywordContext {
  3005  	var p = new(KeywordContext)
  3006  
  3007  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  3008  
  3009  	p.parser = parser
  3010  	p.RuleIndex = QueryRULE_keyword
  3011  
  3012  	return p
  3013  }
  3014  
  3015  func (s *KeywordContext) GetParser() antlr.Parser { return s.parser }
  3016  
  3017  func (s *KeywordContext) REP() antlr.TerminalNode {
  3018  	return s.GetToken(QueryREP, 0)
  3019  }
  3020  
  3021  func (s *KeywordContext) IN() antlr.TerminalNode {
  3022  	return s.GetToken(QueryIN, 0)
  3023  }
  3024  
  3025  func (s *KeywordContext) AS() antlr.TerminalNode {
  3026  	return s.GetToken(QueryAS, 0)
  3027  }
  3028  
  3029  func (s *KeywordContext) SELECT() antlr.TerminalNode {
  3030  	return s.GetToken(QuerySELECT, 0)
  3031  }
  3032  
  3033  func (s *KeywordContext) FROM() antlr.TerminalNode {
  3034  	return s.GetToken(QueryFROM, 0)
  3035  }
  3036  
  3037  func (s *KeywordContext) FILTER() antlr.TerminalNode {
  3038  	return s.GetToken(QueryFILTER, 0)
  3039  }
  3040  
  3041  func (s *KeywordContext) GetRuleContext() antlr.RuleContext {
  3042  	return s
  3043  }
  3044  
  3045  func (s *KeywordContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  3046  	return antlr.TreesStringTree(s, ruleNames, recog)
  3047  }
  3048  
  3049  func (s *KeywordContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  3050  	switch t := visitor.(type) {
  3051  	case QueryVisitor:
  3052  		return t.VisitKeyword(s)
  3053  
  3054  	default:
  3055  		return t.VisitChildren(s)
  3056  	}
  3057  }
  3058  
  3059  func (p *Query) Keyword() (localctx IKeywordContext) {
  3060  	localctx = NewKeywordContext(p, p.GetParserRuleContext(), p.GetState())
  3061  	p.EnterRule(localctx, 26, QueryRULE_keyword)
  3062  	var _la int
  3063  
  3064  	p.EnterOuterAlt(localctx, 1)
  3065  	{
  3066  		p.SetState(154)
  3067  		_la = p.GetTokenStream().LA(1)
  3068  
  3069  		if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&15168) != 0) {
  3070  			p.GetErrorHandler().RecoverInline(p)
  3071  		} else {
  3072  			p.GetErrorHandler().ReportMatch(p)
  3073  			p.Consume()
  3074  		}
  3075  	}
  3076  
  3077  errorExit:
  3078  	if p.HasError() {
  3079  		v := p.GetError()
  3080  		localctx.SetException(v)
  3081  		p.GetErrorHandler().ReportError(p, v)
  3082  		p.GetErrorHandler().Recover(p, v)
  3083  		p.SetError(nil)
  3084  	}
  3085  	p.ExitRule()
  3086  	return localctx
  3087  	goto errorExit // Trick to prevent compiler error if the label is not used
  3088  }
  3089  
  3090  // IIdentContext is an interface to support dynamic dispatch.
  3091  type IIdentContext interface {
  3092  	antlr.ParserRuleContext
  3093  
  3094  	// GetParser returns the parser.
  3095  	GetParser() antlr.Parser
  3096  
  3097  	// Getter signatures
  3098  	Keyword() IKeywordContext
  3099  	IDENT() antlr.TerminalNode
  3100  
  3101  	// IsIdentContext differentiates from other interfaces.
  3102  	IsIdentContext()
  3103  }
  3104  
  3105  type IdentContext struct {
  3106  	antlr.BaseParserRuleContext
  3107  	parser antlr.Parser
  3108  }
  3109  
  3110  func NewEmptyIdentContext() *IdentContext {
  3111  	var p = new(IdentContext)
  3112  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  3113  	p.RuleIndex = QueryRULE_ident
  3114  	return p
  3115  }
  3116  
  3117  func InitEmptyIdentContext(p *IdentContext) {
  3118  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  3119  	p.RuleIndex = QueryRULE_ident
  3120  }
  3121  
  3122  func (*IdentContext) IsIdentContext() {}
  3123  
  3124  func NewIdentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IdentContext {
  3125  	var p = new(IdentContext)
  3126  
  3127  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  3128  
  3129  	p.parser = parser
  3130  	p.RuleIndex = QueryRULE_ident
  3131  
  3132  	return p
  3133  }
  3134  
  3135  func (s *IdentContext) GetParser() antlr.Parser { return s.parser }
  3136  
  3137  func (s *IdentContext) Keyword() IKeywordContext {
  3138  	var t antlr.RuleContext
  3139  	for _, ctx := range s.GetChildren() {
  3140  		if _, ok := ctx.(IKeywordContext); ok {
  3141  			t = ctx.(antlr.RuleContext)
  3142  			break
  3143  		}
  3144  	}
  3145  
  3146  	if t == nil {
  3147  		return nil
  3148  	}
  3149  
  3150  	return t.(IKeywordContext)
  3151  }
  3152  
  3153  func (s *IdentContext) IDENT() antlr.TerminalNode {
  3154  	return s.GetToken(QueryIDENT, 0)
  3155  }
  3156  
  3157  func (s *IdentContext) GetRuleContext() antlr.RuleContext {
  3158  	return s
  3159  }
  3160  
  3161  func (s *IdentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  3162  	return antlr.TreesStringTree(s, ruleNames, recog)
  3163  }
  3164  
  3165  func (s *IdentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  3166  	switch t := visitor.(type) {
  3167  	case QueryVisitor:
  3168  		return t.VisitIdent(s)
  3169  
  3170  	default:
  3171  		return t.VisitChildren(s)
  3172  	}
  3173  }
  3174  
  3175  func (p *Query) Ident() (localctx IIdentContext) {
  3176  	localctx = NewIdentContext(p, p.GetParserRuleContext(), p.GetState())
  3177  	p.EnterRule(localctx, 28, QueryRULE_ident)
  3178  	p.SetState(158)
  3179  	p.GetErrorHandler().Sync(p)
  3180  	if p.HasError() {
  3181  		goto errorExit
  3182  	}
  3183  
  3184  	switch p.GetTokenStream().LA(1) {
  3185  	case QueryREP, QueryIN, QueryAS, QuerySELECT, QueryFROM, QueryFILTER:
  3186  		p.EnterOuterAlt(localctx, 1)
  3187  		{
  3188  			p.SetState(156)
  3189  			p.Keyword()
  3190  		}
  3191  
  3192  	case QueryIDENT:
  3193  		p.EnterOuterAlt(localctx, 2)
  3194  		{
  3195  			p.SetState(157)
  3196  			p.Match(QueryIDENT)
  3197  			if p.HasError() {
  3198  				// Recognition error - abort rule
  3199  				goto errorExit
  3200  			}
  3201  		}
  3202  
  3203  	default:
  3204  		p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
  3205  		goto errorExit
  3206  	}
  3207  
  3208  errorExit:
  3209  	if p.HasError() {
  3210  		v := p.GetError()
  3211  		localctx.SetException(v)
  3212  		p.GetErrorHandler().ReportError(p, v)
  3213  		p.GetErrorHandler().Recover(p, v)
  3214  		p.SetError(nil)
  3215  	}
  3216  	p.ExitRule()
  3217  	return localctx
  3218  	goto errorExit // Trick to prevent compiler error if the label is not used
  3219  }
  3220  
  3221  // IIdentWCContext is an interface to support dynamic dispatch.
  3222  type IIdentWCContext interface {
  3223  	antlr.ParserRuleContext
  3224  
  3225  	// GetParser returns the parser.
  3226  	GetParser() antlr.Parser
  3227  
  3228  	// Getter signatures
  3229  	Ident() IIdentContext
  3230  	WILDCARD() antlr.TerminalNode
  3231  
  3232  	// IsIdentWCContext differentiates from other interfaces.
  3233  	IsIdentWCContext()
  3234  }
  3235  
  3236  type IdentWCContext struct {
  3237  	antlr.BaseParserRuleContext
  3238  	parser antlr.Parser
  3239  }
  3240  
  3241  func NewEmptyIdentWCContext() *IdentWCContext {
  3242  	var p = new(IdentWCContext)
  3243  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  3244  	p.RuleIndex = QueryRULE_identWC
  3245  	return p
  3246  }
  3247  
  3248  func InitEmptyIdentWCContext(p *IdentWCContext) {
  3249  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
  3250  	p.RuleIndex = QueryRULE_identWC
  3251  }
  3252  
  3253  func (*IdentWCContext) IsIdentWCContext() {}
  3254  
  3255  func NewIdentWCContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IdentWCContext {
  3256  	var p = new(IdentWCContext)
  3257  
  3258  	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
  3259  
  3260  	p.parser = parser
  3261  	p.RuleIndex = QueryRULE_identWC
  3262  
  3263  	return p
  3264  }
  3265  
  3266  func (s *IdentWCContext) GetParser() antlr.Parser { return s.parser }
  3267  
  3268  func (s *IdentWCContext) Ident() IIdentContext {
  3269  	var t antlr.RuleContext
  3270  	for _, ctx := range s.GetChildren() {
  3271  		if _, ok := ctx.(IIdentContext); ok {
  3272  			t = ctx.(antlr.RuleContext)
  3273  			break
  3274  		}
  3275  	}
  3276  
  3277  	if t == nil {
  3278  		return nil
  3279  	}
  3280  
  3281  	return t.(IIdentContext)
  3282  }
  3283  
  3284  func (s *IdentWCContext) WILDCARD() antlr.TerminalNode {
  3285  	return s.GetToken(QueryWILDCARD, 0)
  3286  }
  3287  
  3288  func (s *IdentWCContext) GetRuleContext() antlr.RuleContext {
  3289  	return s
  3290  }
  3291  
  3292  func (s *IdentWCContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
  3293  	return antlr.TreesStringTree(s, ruleNames, recog)
  3294  }
  3295  
  3296  func (s *IdentWCContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
  3297  	switch t := visitor.(type) {
  3298  	case QueryVisitor:
  3299  		return t.VisitIdentWC(s)
  3300  
  3301  	default:
  3302  		return t.VisitChildren(s)
  3303  	}
  3304  }
  3305  
  3306  func (p *Query) IdentWC() (localctx IIdentWCContext) {
  3307  	localctx = NewIdentWCContext(p, p.GetParserRuleContext(), p.GetState())
  3308  	p.EnterRule(localctx, 30, QueryRULE_identWC)
  3309  	p.SetState(162)
  3310  	p.GetErrorHandler().Sync(p)
  3311  	if p.HasError() {
  3312  		goto errorExit
  3313  	}
  3314  
  3315  	switch p.GetTokenStream().LA(1) {
  3316  	case QueryREP, QueryIN, QueryAS, QuerySELECT, QueryFROM, QueryFILTER, QueryIDENT:
  3317  		p.EnterOuterAlt(localctx, 1)
  3318  		{
  3319  			p.SetState(160)
  3320  			p.Ident()
  3321  		}
  3322  
  3323  	case QueryWILDCARD:
  3324  		p.EnterOuterAlt(localctx, 2)
  3325  		{
  3326  			p.SetState(161)
  3327  			p.Match(QueryWILDCARD)
  3328  			if p.HasError() {
  3329  				// Recognition error - abort rule
  3330  				goto errorExit
  3331  			}
  3332  		}
  3333  
  3334  	default:
  3335  		p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
  3336  		goto errorExit
  3337  	}
  3338  
  3339  errorExit:
  3340  	if p.HasError() {
  3341  		v := p.GetError()
  3342  		localctx.SetException(v)
  3343  		p.GetErrorHandler().ReportError(p, v)
  3344  		p.GetErrorHandler().Recover(p, v)
  3345  		p.SetError(nil)
  3346  	}
  3347  	p.ExitRule()
  3348  	return localctx
  3349  	goto errorExit // Trick to prevent compiler error if the label is not used
  3350  }
  3351  
  3352  func (p *Query) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool {
  3353  	switch ruleIndex {
  3354  	case 7:
  3355  		var t *FilterExprContext = nil
  3356  		if localctx != nil {
  3357  			t = localctx.(*FilterExprContext)
  3358  		}
  3359  		return p.FilterExpr_Sempred(t, predIndex)
  3360  
  3361  	default:
  3362  		panic("No predicate with index: " + fmt.Sprint(ruleIndex))
  3363  	}
  3364  }
  3365  
  3366  func (p *Query) FilterExpr_Sempred(localctx antlr.RuleContext, predIndex int) bool {
  3367  	switch predIndex {
  3368  	case 0:
  3369  		return p.Precpred(p.GetParserRuleContext(), 4)
  3370  
  3371  	case 1:
  3372  		return p.Precpred(p.GetParserRuleContext(), 3)
  3373  
  3374  	default:
  3375  		panic("No predicate with index: " + fmt.Sprint(predIndex))
  3376  	}
  3377  }