1// Copyright (c) 2020, Peter Ohler, All rights reserved. 2 3package oj 4 5const ( 6 skipChar = 'a' 7 skipNewline = 'b' 8 valNull = 'c' 9 valTrue = 'd' 10 valFalse = 'e' 11 valNeg = 'f' 12 val0 = 'g' 13 valDigit = 'h' 14 valQuote = 'i' 15 openArray = 'k' 16 openObject = 'l' 17 closeArray = 'm' 18 closeObject = 'n' 19 afterComma = 'o' 20 keyQuote = 'p' 21 colonColon = 'q' 22 numSpc = 'r' 23 numNewline = 's' 24 numDot = 't' 25 numComma = 'u' 26 numFrac = 'v' 27 fracE = 'w' 28 expSign = 'x' 29 expDigit = 'y' 30 strQuote = 'z' 31 negDigit = '-' 32 strSlash = 'A' 33 escOk = 'B' 34 uOk = 'E' 35 tokenOk = 'F' 36 numDigit = 'N' 37 numZero = 'O' 38 strOk = 'R' 39 escU = 'U' 40 charErr = '.' 41 42 // 0123456789abcdef0123456789abcdef 43 valueMap = "" + 44 ".........ab..a.................." + // 0x00 45 "a.i..........f..ghhhhhhhhh......" + // 0x20 46 "...........................k.m.." + // 0x40 47 "......e.......c.....d......l.n.." + // 0x60 48 "................................" + // 0x80 49 "................................" + // 0xa0 50 "................................" + // 0xc0 51 "................................v" // 0xe0 52 // 0123456789abcdef0123456789abcdef 53 nullMap = "" + 54 "................................" + // 0x00 55 "............o..................." + // 0x20 56 "................................" + // 0x40 57 "............F........F.........." + // 0x60 58 "................................" + // 0x80 59 "................................" + // 0xa0 60 "................................" + // 0xc0 61 "................................" // 0xe0 62 // 0123456789abcdef0123456789abcdef 63 trueMap = "" + 64 "................................" + // 0x00 65 "............o..................." + // 0x20 66 "................................" + // 0x40 67 ".....F............F..F.........." + // 0x60 68 "................................" + // 0x80 69 "................................" + // 0xa0 70 "................................" + // 0xc0 71 "................................" // 0xe0 72 // 0123456789abcdef0123456789abcdef 73 falseMap = "" + 74 "................................" + // 0x00 75 "............o..................." + // 0x20 76 "................................" + // 0x40 77 ".F...F......F......F............" + // 0x60 78 "................................" + // 0x80 79 "................................" + // 0xa0 80 "................................" + // 0xc0 81 "................................" // 0xe0 82 // 0123456789abcdef0123456789abcdef 83 commaMap = "" + 84 ".........ab..a.................." + // 0x00 85 "a.i..........f..ghhhhhhhhh......" + // 0x20 86 "...........................k...." + // 0x40 87 "......e.......c.....d......l...." + // 0x60 88 "................................" + // 0x80 89 "................................" + // 0xa0 90 "................................" + // 0xc0 91 "................................" // 0xe0 92 // 0123456789abcdef0123456789abcdef 93 afterMap = "" + 94 ".........ab..a.................." + // 0x00 95 "a...........o..................." + // 0x20 96 ".............................m.." + // 0x40 97 ".............................n.." + // 0x60 98 "................................" + // 0x80 99 "................................" + // 0xa0 100 "................................" + // 0xc0 101 "................................a" // 0xe0 102 // 0123456789abcdef0123456789abcdef 103 key1Map = "" + 104 ".........ab..a.................." + // 0x00 105 "a.p............................." + // 0x20 106 "................................" + // 0x40 107 ".............................n.." + // 0x60 108 "................................" + // 0x80 109 "................................" + // 0xa0 110 "................................" + // 0xc0 111 "................................" // 0xe0 112 // 0123456789abcdef0123456789abcdef 113 keyMap = "" + 114 ".........ab..a.................." + // 0x00 115 "a.p............................." + // 0x20 116 "................................" + // 0x40 117 "................................" + // 0x60 118 "................................" + // 0x80 119 "................................" + // 0xa0 120 "................................" + // 0xc0 121 "................................" // 0xe0 122 // 0123456789abcdef0123456789abcdef 123 colonMap = "" + 124 ".........ab..a.................." + // 0x00 125 "a.........................q....." + // 0x20 126 "................................" + // 0x40 127 "................................" + // 0x60 128 "................................" + // 0x80 129 "................................" + // 0xa0 130 "................................" + // 0xc0 131 "................................" // 0xe0 132 // 0123456789abcdef0123456789abcdef 133 negMap = "" + 134 "................................" + // 0x00 135 "................O---------......" + // 0x20 136 "................................" + // 0x40 137 "................................" + // 0x60 138 "................................" + // 0x80 139 "................................" + // 0xa0 140 "................................" + // 0xc0 141 "................................" // 0xe0 142 // 0123456789abcdef0123456789abcdef 143 zeroMap = "" + 144 ".........rs..r.................." + // 0x00 145 "r...........u.t................." + // 0x20 146 ".............................m.." + // 0x40 147 ".............................n.." + // 0x60 148 "................................" + // 0x80 149 "................................" + // 0xa0 150 "................................" + // 0xc0 151 "................................n" // 0xe0 152 // 0123456789abcdef0123456789abcdef 153 digitMap = "" + 154 ".........rs..r.................." + // 0x00 155 "r...........u.t.NNNNNNNNNN......" + // 0x20 156 ".....w.......................m.." + // 0x40 157 ".....w.......................n.." + // 0x60 158 "................................" + // 0x80 159 "................................" + // 0xa0 160 "................................" + // 0xc0 161 "................................n" // 0xe0 162 // 0123456789abcdef0123456789abcdef 163 dotMap = "" + 164 "................................" + // 0x00 165 "................vvvvvvvvvv......" + // 0x20 166 "................................" + // 0x40 167 "................................" + // 0x60 168 "................................" + // 0x80 169 "................................" + // 0xa0 170 "................................" + // 0xc0 171 "................................" // 0xe0 172 // 0123456789abcdef0123456789abcdef 173 fracMap = "" + 174 ".........rs..r.................." + // 0x00 175 "r...........u...vvvvvvvvvv......" + // 0x20 176 ".....w.......................m.." + // 0x40 177 ".....w.......................n.." + // 0x60 178 "................................" + // 0x80 179 "................................" + // 0xa0 180 "................................" + // 0xc0 181 "................................n" // 0xe0 182 // 0123456789abcdef0123456789abcdef 183 expSignMap = "" + 184 "................................" + // 0x00 185 "...........x.x..yyyyyyyyyy......" + // 0x20 186 "................................" + // 0x40 187 "................................" + // 0x60 188 "................................" + // 0x80 189 "................................" + // 0xa0 190 "................................" + // 0xc0 191 "................................" // 0xe0 192 // 0123456789abcdef0123456789abcdef 193 expZeroMap = "" + 194 "................................" + // 0x00 195 "................yyyyyyyyyy......" + // 0x20 196 "................................" + // 0x40 197 "................................" + // 0x60 198 "................................" + // 0x80 199 "................................" + // 0xa0 200 "................................" + // 0xc0 201 "................................" // 0xe0 202 // 0123456789abcdef0123456789abcdef 203 expMap = "" + 204 ".........rs..r.................." + // 0x00 205 "r...........u...yyyyyyyyyy......" + // 0x20 206 ".............................m.." + // 0x40 207 ".............................n.." + // 0x60 208 "................................" + // 0x80 209 "................................" + // 0xa0 210 "................................" + // 0xc0 211 "................................n" // 0xe0 212 // 0123456789abcdef0123456789abcdef 213 stringMap = "" + 214 "................................" + // 0x00 215 "RRzRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0x20 216 "RRRRRRRRRRRRRRRRRRRRRRRRRRRRARRR" + // 0x40 217 "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0x60 218 "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0x80 219 "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0xR0 220 "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0xc0 221 "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" // 0xe0 222 // 0123456789abcdef0123456789abcdef 223 escMap = "" + 224 "................................" + // 0x00 225 "..B............B................" + // 0x20 226 "............................B..." + // 0x40 227 "..B...B.......B...B.BU.........." + // 0x60 228 "................................" + // 0x80 229 "................................" + // 0xa0 230 "................................" + // 0xc0 231 "................................" // 0xe0 232 // 0123456789abcdef0123456789abcdef 233 escByteMap = "" + 234 "................................" + // 0x00 235 "..\"............/................" + // 0x20 236 "............................\\..." + // 0x40 237 "..\b...\f.......\n...\r.\t.........." + // 0x60 238 "................................" + // 0x80 239 "................................" + // 0xa0 240 "................................" + // 0xc0 241 "................................" // 0xe0 242 // 0123456789abcdef0123456789abcdef 243 uMap = "" + 244 "................................" + // 0x00 245 "................EEEEEEEEEE......" + // 0x20 246 ".EEEEEE........................." + // 0x40 247 ".EEEEEE........................." + // 0x60 248 "................................" + // 0x80 249 "................................" + // 0xa0 250 "................................" + // 0xc0 251 "................................" // 0xe0 252 // 0123456789abcdef0123456789abcdef 253 spaceMap = "" + 254 ".........ab..a.................." + // 0x00 255 "a..............................." + // 0x20 256 "................................" + // 0x40 257 "................................" + // 0x60 258 "................................" + // 0x80 259 "................................" + // 0xa0 260 "................................" + // 0xc0 261 "................................s" // 0xe0 262) 263 264/* 265// Uncomment for debugging 266func whichMode(mode string) string { 267 switch mode { 268 case valueMap: 269 return "value" 270 case nullMap: 271 return "null" 272 case trueMap: 273 return "true" 274 case falseMap: 275 return "false" 276 case commaMap: 277 return "comma" 278 case afterMap: 279 return "after" 280 case key1Map: 281 return "key1" 282 case keyMap: 283 return "key" 284 case colonMap: 285 return "colon" 286 case negMap: 287 return "neg" 288 case zeroMap: 289 return "zero" 290 case digitMap: 291 return "digit" 292 case dotMap: 293 return "dot" 294 case fracMap: 295 return "frac" 296 case expSignMap: 297 return "expSign" 298 case expZeroMap: 299 return "expZero" 300 case expMap: 301 return "exp" 302 case stringMap: 303 return "string" 304 case escMap: 305 return "esc" 306 case escByteMap: 307 return "escByte" 308 case uMap: 309 return "u" 310 case spaceMap: 311 return "space" 312 default: 313 return "unknown" 314 } 315} 316*/ 317