fast_json.go 2.4 KB

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