// Code generated from grammars-v4/JSON.g4 by ANTLR 4.7.2. DO NOT EDIT. package parser // JSON import ( "fmt" "reflect" "strconv" "github.com/antlr/antlr4/runtime/Go/antlr" ) // Suppress unused import errors var _ = fmt.Printf var _ = reflect.Copy var _ = strconv.Itoa var parserATN = []uint16{ 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 13, 57, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 19, 10, 3, 12, 3, 14, 3, 22, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 28, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 7, 5, 38, 10, 5, 12, 5, 14, 5, 41, 11, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 47, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 55, 10, 6, 3, 6, 2, 2, 7, 2, 4, 6, 8, 10, 2, 2, 2, 60, 2, 12, 3, 2, 2, 2, 4, 27, 3, 2, 2, 2, 6, 29, 3, 2, 2, 2, 8, 46, 3, 2, 2, 2, 10, 54, 3, 2, 2, 2, 12, 13, 5, 10, 6, 2, 13, 3, 3, 2, 2, 2, 14, 15, 7, 3, 2, 2, 15, 20, 5, 6, 4, 2, 16, 17, 7, 4, 2, 2, 17, 19, 5, 6, 4, 2, 18, 16, 3, 2, 2, 2, 19, 22, 3, 2, 2, 2, 20, 18, 3, 2, 2, 2, 20, 21, 3, 2, 2, 2, 21, 23, 3, 2, 2, 2, 22, 20, 3, 2, 2, 2, 23, 24, 7, 5, 2, 2, 24, 28, 3, 2, 2, 2, 25, 26, 7, 3, 2, 2, 26, 28, 7, 5, 2, 2, 27, 14, 3, 2, 2, 2, 27, 25, 3, 2, 2, 2, 28, 5, 3, 2, 2, 2, 29, 30, 7, 11, 2, 2, 30, 31, 7, 6, 2, 2, 31, 32, 5, 10, 6, 2, 32, 7, 3, 2, 2, 2, 33, 34, 7, 7, 2, 2, 34, 39, 5, 10, 6, 2, 35, 36, 7, 4, 2, 2, 36, 38, 5, 10, 6, 2, 37, 35, 3, 2, 2, 2, 38, 41, 3, 2, 2, 2, 39, 37, 3, 2, 2, 2, 39, 40, 3, 2, 2, 2, 40, 42, 3, 2, 2, 2, 41, 39, 3, 2, 2, 2, 42, 43, 7, 8, 2, 2, 43, 47, 3, 2, 2, 2, 44, 45, 7, 7, 2, 2, 45, 47, 7, 8, 2, 2, 46, 33, 3, 2, 2, 2, 46, 44, 3, 2, 2, 2, 47, 9, 3, 2, 2, 2, 48, 55, 7, 11, 2, 2, 49, 55, 7, 12, 2, 2, 50, 55, 5, 4, 3, 2, 51, 55, 5, 8, 5, 2, 52, 55, 7, 10, 2, 2, 53, 55, 7, 9, 2, 2, 54, 48, 3, 2, 2, 2, 54, 49, 3, 2, 2, 2, 54, 50, 3, 2, 2, 2, 54, 51, 3, 2, 2, 2, 54, 52, 3, 2, 2, 2, 54, 53, 3, 2, 2, 2, 55, 11, 3, 2, 2, 2, 7, 20, 27, 39, 46, 54, } var deserializer = antlr.NewATNDeserializer(nil) var deserializedATN = deserializer.DeserializeFromUInt16(parserATN) var literalNames = []string{ "", "'{'", "','", "'}'", "':'", "'['", "']'", "'null'", } var symbolicNames = []string{ "", "", "", "", "", "", "", "", "BOOLEAN", "STRING", "NUMBER", "WS", } var ruleNames = []string{ "json", "obj", "pair", "arr", "value", } var decisionToDFA = make([]*antlr.DFA, len(deserializedATN.DecisionToState)) func init() { for index, ds := range deserializedATN.DecisionToState { decisionToDFA[index] = antlr.NewDFA(ds, index) } } type JSONParser struct { *antlr.BaseParser } func NewJSONParser(input antlr.TokenStream) *JSONParser { this := new(JSONParser) this.BaseParser = antlr.NewBaseParser(input) this.Interpreter = antlr.NewParserATNSimulator(this, deserializedATN, decisionToDFA, antlr.NewPredictionContextCache()) this.RuleNames = ruleNames this.LiteralNames = literalNames this.SymbolicNames = symbolicNames this.GrammarFileName = "JSON.g4" return this } // JSONParser tokens. const ( JSONParserEOF = antlr.TokenEOF JSONParserT__0 = 1 JSONParserT__1 = 2 JSONParserT__2 = 3 JSONParserT__3 = 4 JSONParserT__4 = 5 JSONParserT__5 = 6 JSONParserT__6 = 7 JSONParserBOOLEAN = 8 JSONParserSTRING = 9 JSONParserNUMBER = 10 JSONParserWS = 11 ) // JSONParser rules. const ( JSONParserRULE_json = 0 JSONParserRULE_obj = 1 JSONParserRULE_pair = 2 JSONParserRULE_arr = 3 JSONParserRULE_value = 4 ) // IJsonContext is an interface to support dynamic dispatch. type IJsonContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsJsonContext differentiates from other interfaces. IsJsonContext() } type JsonContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyJsonContext() *JsonContext { var p = new(JsonContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = JSONParserRULE_json return p } func (*JsonContext) IsJsonContext() {} func NewJsonContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *JsonContext { var p = new(JsonContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = JSONParserRULE_json return p } func (s *JsonContext) GetParser() antlr.Parser { return s.parser } func (s *JsonContext) Value() IValueContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IValueContext)(nil)).Elem(), 0) if t == nil { return nil } return t.(IValueContext) } func (s *JsonContext) GetRuleContext() antlr.RuleContext { return s } func (s *JsonContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *JsonContext) EnterRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.EnterJson(s) } } func (s *JsonContext) ExitRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.ExitJson(s) } } func (p *JSONParser) Json() (localctx IJsonContext) { localctx = NewJsonContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 0, JSONParserRULE_json) 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(10) p.Value() } return localctx } // IObjContext is an interface to support dynamic dispatch. type IObjContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsObjContext differentiates from other interfaces. IsObjContext() } type ObjContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyObjContext() *ObjContext { var p = new(ObjContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = JSONParserRULE_obj return p } func (*ObjContext) IsObjContext() {} func NewObjContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ObjContext { var p = new(ObjContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = JSONParserRULE_obj return p } func (s *ObjContext) GetParser() antlr.Parser { return s.parser } func (s *ObjContext) AllPair() []IPairContext { var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IPairContext)(nil)).Elem()) var tst = make([]IPairContext, len(ts)) for i, t := range ts { if t != nil { tst[i] = t.(IPairContext) } } return tst } func (s *ObjContext) Pair(i int) IPairContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IPairContext)(nil)).Elem(), i) if t == nil { return nil } return t.(IPairContext) } func (s *ObjContext) GetRuleContext() antlr.RuleContext { return s } func (s *ObjContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *ObjContext) EnterRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.EnterObj(s) } } func (s *ObjContext) ExitRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.ExitObj(s) } } func (p *JSONParser) Obj() (localctx IObjContext) { localctx = NewObjContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 2, JSONParserRULE_obj) 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(25) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 1, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { p.SetState(12) p.Match(JSONParserT__0) } { p.SetState(13) p.Pair() } p.SetState(18) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == JSONParserT__1 { { p.SetState(14) p.Match(JSONParserT__1) } { p.SetState(15) p.Pair() } p.SetState(20) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } { p.SetState(21) p.Match(JSONParserT__2) } case 2: p.EnterOuterAlt(localctx, 2) { p.SetState(23) p.Match(JSONParserT__0) } { p.SetState(24) p.Match(JSONParserT__2) } } return localctx } // IPairContext is an interface to support dynamic dispatch. type IPairContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsPairContext differentiates from other interfaces. IsPairContext() } type PairContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyPairContext() *PairContext { var p = new(PairContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = JSONParserRULE_pair return p } func (*PairContext) IsPairContext() {} func NewPairContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PairContext { var p = new(PairContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = JSONParserRULE_pair return p } func (s *PairContext) GetParser() antlr.Parser { return s.parser } func (s *PairContext) STRING() antlr.TerminalNode { return s.GetToken(JSONParserSTRING, 0) } func (s *PairContext) Value() IValueContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IValueContext)(nil)).Elem(), 0) if t == nil { return nil } return t.(IValueContext) } func (s *PairContext) GetRuleContext() antlr.RuleContext { return s } func (s *PairContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *PairContext) EnterRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.EnterPair(s) } } func (s *PairContext) ExitRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.ExitPair(s) } } func (p *JSONParser) Pair() (localctx IPairContext) { localctx = NewPairContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 4, JSONParserRULE_pair) 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(27) p.Match(JSONParserSTRING) } { p.SetState(28) p.Match(JSONParserT__3) } { p.SetState(29) p.Value() } return localctx } // IArrContext is an interface to support dynamic dispatch. type IArrContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsArrContext differentiates from other interfaces. IsArrContext() } type ArrContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyArrContext() *ArrContext { var p = new(ArrContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = JSONParserRULE_arr return p } func (*ArrContext) IsArrContext() {} func NewArrContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ArrContext { var p = new(ArrContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = JSONParserRULE_arr return p } func (s *ArrContext) GetParser() antlr.Parser { return s.parser } func (s *ArrContext) AllValue() []IValueContext { var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IValueContext)(nil)).Elem()) var tst = make([]IValueContext, len(ts)) for i, t := range ts { if t != nil { tst[i] = t.(IValueContext) } } return tst } func (s *ArrContext) Value(i int) IValueContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IValueContext)(nil)).Elem(), i) if t == nil { return nil } return t.(IValueContext) } func (s *ArrContext) GetRuleContext() antlr.RuleContext { return s } func (s *ArrContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *ArrContext) EnterRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.EnterArr(s) } } func (s *ArrContext) ExitRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.ExitArr(s) } } func (p *JSONParser) Arr() (localctx IArrContext) { localctx = NewArrContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 6, JSONParserRULE_arr) 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(44) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { p.SetState(31) p.Match(JSONParserT__4) } { p.SetState(32) p.Value() } p.SetState(37) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == JSONParserT__1 { { p.SetState(33) p.Match(JSONParserT__1) } { p.SetState(34) p.Value() } p.SetState(39) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } { p.SetState(40) p.Match(JSONParserT__5) } case 2: p.EnterOuterAlt(localctx, 2) { p.SetState(42) p.Match(JSONParserT__4) } { p.SetState(43) p.Match(JSONParserT__5) } } return localctx } // IValueContext is an interface to support dynamic dispatch. type IValueContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // IsValueContext differentiates from other interfaces. IsValueContext() } type ValueContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyValueContext() *ValueContext { var p = new(ValueContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) p.RuleIndex = JSONParserRULE_value return p } func (*ValueContext) IsValueContext() {} func NewValueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueContext { var p = new(ValueContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser p.RuleIndex = JSONParserRULE_value return p } func (s *ValueContext) GetParser() antlr.Parser { return s.parser } func (s *ValueContext) STRING() antlr.TerminalNode { return s.GetToken(JSONParserSTRING, 0) } func (s *ValueContext) NUMBER() antlr.TerminalNode { return s.GetToken(JSONParserNUMBER, 0) } func (s *ValueContext) Obj() IObjContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IObjContext)(nil)).Elem(), 0) if t == nil { return nil } return t.(IObjContext) } func (s *ValueContext) Arr() IArrContext { var t = s.GetTypedRuleContext(reflect.TypeOf((*IArrContext)(nil)).Elem(), 0) if t == nil { return nil } return t.(IArrContext) } func (s *ValueContext) BOOLEAN() antlr.TerminalNode { return s.GetToken(JSONParserBOOLEAN, 0) } func (s *ValueContext) GetRuleContext() antlr.RuleContext { return s } func (s *ValueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } func (s *ValueContext) EnterRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.EnterValue(s) } } func (s *ValueContext) ExitRule(listener antlr.ParseTreeListener) { if listenerT, ok := listener.(JSONListener); ok { listenerT.ExitValue(s) } } func (p *JSONParser) Value() (localctx IValueContext) { localctx = NewValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 8, JSONParserRULE_value) 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(52) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { case JSONParserSTRING: p.EnterOuterAlt(localctx, 1) { p.SetState(46) p.Match(JSONParserSTRING) } case JSONParserNUMBER: p.EnterOuterAlt(localctx, 2) { p.SetState(47) p.Match(JSONParserNUMBER) } case JSONParserT__0: p.EnterOuterAlt(localctx, 3) { p.SetState(48) p.Obj() } case JSONParserT__4: p.EnterOuterAlt(localctx, 4) { p.SetState(49) p.Arr() } case JSONParserBOOLEAN: p.EnterOuterAlt(localctx, 5) { p.SetState(50) p.Match(JSONParserBOOLEAN) } case JSONParserT__6: p.EnterOuterAlt(localctx, 6) { p.SetState(51) p.Match(JSONParserT__6) } default: panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } return localctx }