json_types.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package sample
  2. import (
  3. "fmt"
  4. )
  5. type JSONState int
  6. const (
  7. StateStart JSONState = iota
  8. StateInObject
  9. StateInObjectKey
  10. StateInStructuredKey
  11. StateInStructuredValue
  12. StateNewline
  13. StateTab
  14. StateSpace
  15. StateInString
  16. StateInInt
  17. StateInFloat
  18. StateInBool
  19. StateInNull
  20. StateInColon
  21. StateInComma
  22. StateInTab
  23. StateInSpaceToValue
  24. StateInSpaceEndValue
  25. StateInNewlineEndValue
  26. StateInObjSpace
  27. StateInList
  28. StateInListComma
  29. StateInValue
  30. StateInValueEnd
  31. StateInListEnd
  32. StateInListObjectEnd
  33. StateInNewline
  34. StateInNumber
  35. StateInNumberEnd
  36. StateInStringEnd
  37. StateInObjectKeyEnd
  38. StateTerminate
  39. StateInObjectEnd
  40. StateTransitioningToTerminate
  41. StateInListStartJSON
  42. )
  43. var JSONStates = []JSONState{
  44. StateStart,
  45. StateInObject,
  46. StateInObjectKey,
  47. StateInStructuredKey,
  48. StateInStructuredValue,
  49. StateNewline,
  50. StateTab,
  51. StateSpace,
  52. StateInString,
  53. StateInInt,
  54. StateInFloat,
  55. StateInBool,
  56. StateInNull,
  57. StateInColon,
  58. StateInComma,
  59. StateInTab,
  60. StateInSpaceToValue,
  61. StateInSpaceEndValue,
  62. StateInNewlineEndValue,
  63. StateInObjSpace,
  64. StateInListStartJSON,
  65. StateInList,
  66. StateInListComma,
  67. StateInValue,
  68. StateInValueEnd,
  69. StateInListEnd,
  70. StateInListObjectEnd,
  71. StateInNewline,
  72. StateInNumber,
  73. StateInNumberEnd,
  74. StateInStringEnd,
  75. StateInObjectKeyEnd,
  76. StateTerminate,
  77. StateInObjectEnd,
  78. StateTransitioningToTerminate,
  79. }
  80. func (s JSONState) String() string {
  81. switch s {
  82. case StateStart:
  83. return "StateStart"
  84. case StateInObject:
  85. return "StateInObject"
  86. case StateInObjectKey:
  87. return "StateInObjectKey"
  88. case StateInStructuredKey:
  89. return "StateInStructuredKey"
  90. case StateInStructuredValue:
  91. return "StateInStructuredValue"
  92. case StateNewline:
  93. return "StateNewline"
  94. case StateTab:
  95. return "StateTab"
  96. case StateSpace:
  97. return "StateSpace"
  98. case StateInString:
  99. return "StateInString"
  100. case StateInInt:
  101. return "StateInInt"
  102. case StateInFloat:
  103. return "StateInFloat"
  104. case StateInBool:
  105. return "StateInBool"
  106. case StateInNull:
  107. return "StateInNull"
  108. case StateInColon:
  109. return "StateInColon"
  110. case StateInComma:
  111. return "StateInComma"
  112. case StateInTab:
  113. return "StateInTab"
  114. case StateInSpaceToValue:
  115. return "StateInSpaceToValue"
  116. case StateInSpaceEndValue:
  117. return "StateInSpaceEndValue"
  118. case StateInNewlineEndValue:
  119. return "StateInNewlineEndValue"
  120. case StateInObjSpace:
  121. return "StateInObjSpace"
  122. case StateInList:
  123. return "StateInList"
  124. case StateInListComma:
  125. return "StateInListComma"
  126. case StateInValue:
  127. return "StateInValue"
  128. case StateInValueEnd:
  129. return "StateInValueEnd"
  130. case StateInListEnd:
  131. return "StateInListEnd"
  132. case StateInListObjectEnd:
  133. return "StateInListObjectEnd"
  134. case StateInNewline:
  135. return "StateInNewline"
  136. case StateInNumber:
  137. return "StateInNumber"
  138. case StateInNumberEnd:
  139. return "StateInNumberEnd"
  140. case StateInStringEnd:
  141. return "StateInStringEnd"
  142. case StateInObjectKeyEnd:
  143. return "StateInObjectKeyEnd"
  144. case StateTerminate:
  145. return "StateTerminate"
  146. case StateInObjectEnd:
  147. return "StateInObjectEnd"
  148. case StateTransitioningToTerminate:
  149. return "StateTransitioningToTerminate"
  150. case StateInListStartJSON:
  151. return "StateInListStartJSON"
  152. default:
  153. return fmt.Sprintf("Unknown state: %d", s)
  154. }
  155. }