package api import ( "fmt" "reflect" "github.com/zeromicro/antlr" ) // Part 8 // The apiparser_parser.go file was split into multiple files because it // was too large and caused a possible memory overflow during goctl installation. func (s *KvLitContext) Accept(visitor antlr.ParseTreeVisitor) any { switch t := visitor.(type) { case ApiParserVisitor: return t.VisitKvLit(s) default: return t.VisitChildren(s) } } func (p *ApiParserParser) KvLit() (localctx IKvLitContext) { localctx = NewKvLitContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 68, ApiParserParserRULE_kvLit) defer func() { p.ExitRule() }() defer func() { if err := recover(); err != nil { if v, ok := err.(antlr.RecognitionException); ok { localctx.SetException(v) p.GetErrorHandler().ReportError(p, v) p.GetErrorHandler().Recover(p, v) } else { panic(err) } } }() p.EnterOuterAlt(localctx, 1) { p.SetState(314) var _m = p.Match(ApiParserParserID) localctx.(*KvLitContext).key = _m } checkKeyValue(p) { p.SetState(316) var _m = p.Match(ApiParserParserLINE_VALUE) localctx.(*KvLitContext).value = _m } return localctx } // IServiceNameContext is an interface to support dynamic dispatch. type IServiceNameContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsServiceNameContext differentiates from other interfaces. IsServiceNameContext() } type ServiceNameContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyServiceNameContext() *ServiceNameContext { var p = new(ServiceNameContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = ApiParserParserRULE_serviceName return p } func (*ServiceNameContext) IsServiceNameContext() {} func NewServiceNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ServiceNameContext { var p = new(ServiceNameContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = ApiParserParserRULE_serviceName return p } func (s *ServiceNameContext) GetParser() antlr.Parser { return s.parser } func (s *ServiceNameContext) AllID() []antlr.TerminalNode { return s.GetTokens(ApiParserParserID) } func (s *ServiceNameContext) ID(i int) antlr.TerminalNode { return s.GetToken(ApiParserParserID, i) } func (s *ServiceNameContext) GetRuleContext() antlr.RuleContext { return s } func (s *ServiceNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *ServiceNameContext) Accept(visitor antlr.ParseTreeVisitor) any { switch t := visitor.(type) { case ApiParserVisitor: return t.VisitServiceName(s) default: return t.VisitChildren(s) } } func (p *ApiParserParser) ServiceName() (localctx IServiceNameContext) { localctx = NewServiceNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 70, ApiParserParserRULE_serviceName) var _la int defer func() { p.ExitRule() }() defer func() { if err := recover(); err != nil { if v, ok := err.(antlr.RecognitionException); ok { localctx.SetException(v) p.GetErrorHandler().ReportError(p, v) p.GetErrorHandler().Recover(p, v) } else { panic(err) } } }() p.EnterOuterAlt(localctx, 1) p.SetState(322) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for ok := true; ok; ok = _la == ApiParserParserID { { p.SetState(318) p.Match(ApiParserParserID) } p.SetState(320) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == ApiParserParserT__10 { { p.SetState(319) p.Match(ApiParserParserT__10) } } p.SetState(324) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } return localctx } // IPathContext is an interface to support dynamic dispatch. type IPathContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsPathContext differentiates from other interfaces. IsPathContext() } type PathContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyPathContext() *PathContext { var p = new(PathContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = ApiParserParserRULE_path return p } func (*PathContext) IsPathContext() {} func NewPathContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathContext { var p = new(PathContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = ApiParserParserRULE_path return p } func (s *PathContext) GetParser() antlr.Parser { return s.parser } func (s *PathContext) AllPathItem() []IPathItemContext { var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPathItemContext)(nil)).Elem()) var tst = make([]IPathItemContext, len(ts)) for i, t := range ts { if t != nil { tst[i] = t.(IPathItemContext) } } return tst } func (s *PathContext) PathItem(i int) IPathItemContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IPathItemContext)(nil)).Elem(), i) if t == nil { return nil } return t.(IPathItemContext) } func (s *PathContext) GetRuleContext() antlr.RuleContext { return s } func (s *PathContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *PathContext) Accept(visitor antlr.ParseTreeVisitor) any { switch t := visitor.(type) { case ApiParserVisitor: return t.VisitPath(s) default: return t.VisitChildren(s) } } func (p *ApiParserParser) Path() (localctx IPathContext) { localctx = NewPathContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 72, ApiParserParserRULE_path) var _la int defer func() { p.ExitRule() }() defer func() { if err := recover(); err != nil { if v, ok := err.(antlr.RecognitionException); ok { localctx.SetException(v) p.GetErrorHandler().ReportError(p, v) p.GetErrorHandler().Recover(p, v) } else { panic(err) } } }() p.SetState(346) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 38, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) p.SetState(341) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for ok := true; ok; ok = _la == ApiParserParserT__11 || _la == ApiParserParserT__12 { p.SetState(341) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { case ApiParserParserT__11: { p.SetState(326) p.Match(ApiParserParserT__11) } { p.SetState(327) p.PathItem() } p.SetState(332) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == ApiParserParserT__10 { { p.SetState(328) p.Match(ApiParserParserT__10) } { p.SetState(329) p.PathItem() } p.SetState(334) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } case ApiParserParserT__12: { p.SetState(335) p.Match(ApiParserParserT__12) } { p.SetState(336) p.PathItem() } p.SetState(339) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == ApiParserParserT__10 { { p.SetState(337) p.Match(ApiParserParserT__10) } { p.SetState(338) p.PathItem() } } default: panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } p.SetState(343) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } case 2: p.EnterOuterAlt(localctx, 2) { p.SetState(345) p.Match(ApiParserParserT__11) } } return localctx } // IPathItemContext is an interface to support dynamic dispatch. type IPathItemContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsPathItemContext differentiates from other interfaces. IsPathItemContext() } type PathItemContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyPathItemContext() *PathItemContext { var p = new(PathItemContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = ApiParserParserRULE_pathItem return p } func (*PathItemContext) IsPathItemContext() {} func NewPathItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathItemContext { var p = new(PathItemContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = ApiParserParserRULE_pathItem return p } func (s *PathItemContext) GetParser() antlr.Parser { return s.parser } func (s *PathItemContext) AllID() []antlr.TerminalNode { return s.GetTokens(ApiParserParserID) } func (s *PathItemContext) ID(i int) antlr.TerminalNode { return s.GetToken(ApiParserParserID, i) } func (s *PathItemContext) AllLetterOrDigit() []antlr.TerminalNode { return s.GetTokens(ApiParserParserLetterOrDigit) } func (s *PathItemContext) LetterOrDigit(i int) antlr.TerminalNode { return s.GetToken(ApiParserParserLetterOrDigit, i) } func (s *PathItemContext) GetRuleContext() antlr.RuleContext { return s } func (s *PathItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *PathItemContext) Accept(visitor antlr.ParseTreeVisitor) any { switch t := visitor.(type) { case ApiParserVisitor: return t.VisitPathItem(s) default: return t.VisitChildren(s) } } func (p *ApiParserParser) PathItem() (localctx IPathItemContext) { localctx = NewPathItemContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 74, ApiParserParserRULE_pathItem) var _la int defer func() { p.ExitRule() }() defer func() { if err := recover(); err != nil { if v, ok := err.(antlr.RecognitionException); ok { localctx.SetException(v) p.GetErrorHandler().ReportError(p, v) p.GetErrorHandler().Recover(p, v) } else { panic(err) } } }() p.EnterOuterAlt(localctx, 1) p.SetState(349) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for ok := true; ok; ok = _la == ApiParserParserID || _la == ApiParserParserLetterOrDigit { { p.SetState(348) _la = p.GetTokenStream().LA(1) if !(_la == ApiParserParserID || _la == ApiParserParserLetterOrDigit) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) p.Consume() } } p.SetState(351) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } return localctx } func (p *ApiParserParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { switch ruleIndex { case 18: var t *FieldContext = nil if localctx != nil { t = localctx.(*FieldContext) } return p.Field_Sempred(t, predIndex) default: panic("No predicate with index: " + fmt.Sprint(ruleIndex)) } } func (p *ApiParserParser) Field_Sempred(localctx antlr.RuleContext, predIndex int) bool { switch predIndex { case 0: return isNormal(p) default: panic("No predicate with index: " + fmt.Sprint(predIndex)) } }