package sample import ( "fmt" ) type JSONState int const ( StateStart JSONState = iota StateInObject StateInObjectKey StateNewline StateTab StateSpace StateInString StateInInt StateInFloat StateInBool StateInNull StateInColon StateInComma StateInTab StateInSpace StateInObjSpace StateInList StateInListComma StateInValue StateInValueEnd StateInListEnd StateInListObjectEnd StateInNewline StateInNumber StateInNumberEnd StateInStringEnd StateInObjectKeyEnd StateTerminate StateInObjectEnd StateTransitioningToTerminate ) var JSONStates = []JSONState{ StateStart, StateInObject, StateInObjectKey, StateNewline, StateTab, StateSpace, StateInString, StateInInt, StateInFloat, StateInBool, StateInNull, StateInColon, StateInComma, StateInTab, StateInSpace, StateInObjSpace, StateInList, StateInListComma, StateInValue, StateInValueEnd, StateInListEnd, StateInListObjectEnd, StateInNewline, StateInNumber, StateInNumberEnd, StateInStringEnd, StateInObjectKeyEnd, StateTerminate, StateInObjectEnd, StateTransitioningToTerminate, } func (s JSONState) String() string { switch s { case StateStart: return "StateStart" case StateInObject: return "StateInObject" case StateInObjectKey: return "StateInObjectKey" case StateNewline: return "StateNewline" case StateTab: return "StateTab" case StateSpace: return "StateSpace" case StateInString: return "StateInString" case StateInInt: return "StateInInt" case StateInFloat: return "StateInFloat" case StateInBool: return "StateInBool" case StateInNull: return "StateInNull" case StateInColon: return "StateInColon" case StateInComma: return "StateInComma" case StateInTab: return "StateInTab" case StateInSpace: return "StateInSpace" case StateInObjSpace: return "StateInObjSpace" case StateInList: return "StateInList" case StateInListObjectEnd: return "StateInListObjectEnd" case StateInListComma: return "StateInListComma" case StateInListEnd: return "StateInListEnd" case StateInNewline: return "StateInNewline" case StateInNumber: return "StateInNumber" case StateInNumberEnd: return "StateInNumberEnd" case StateInStringEnd: return "StateInStringEnd" case StateInObjectKeyEnd: return "StateInObjectKeyEnd" case StateTerminate: return "StateTerminate" case StateInObjectEnd: return "StateInObjectEnd" default: return fmt.Sprintf("Unknown state: %d", s) } }