1 /* Generated By:JavaCC: Do not edit this line. JsonParser.java */ 2 package org.codehaus.groovy.grails.web.json.parser; 3 4 import org.codehaus.groovy.grails.web.json.JSONArray; 5 import org.codehaus.groovy.grails.web.json.JSONElement; 6 import org.codehaus.groovy.grails.web.json.JSONObject; 7 8 9 @SuppressWarnings("all") 10 public final class JSONParser implements JsonParserConstants { 11 parse()12 final public Object parse() throws ParseException { 13 Object json = null; 14 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 15 case 20: 16 json = JsonObject(); 17 break; 18 case 25: 19 json = JsonArray(); 20 break; 21 case DIGITS: 22 case SINGLE_QUOTE_LITERAL: 23 case DOUBLE_QUOTE_LITERAL: 24 case 27: 25 case 28: 26 case 29: 27 json = JsonPrimitive(); 28 break; 29 case 22: 30 json = JsonNull(); 31 break; 32 default: 33 jj_la1[0] = jj_gen; 34 jj_consume_token(-1); 35 throw new ParseException(); 36 } 37 { 38 if (true) return json; 39 } 40 throw new Error("Missing return statement in function"); 41 } 42 parseJSON()43 final public JSONElement parseJSON() throws ParseException { 44 JSONElement json = null; 45 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 46 case 20: 47 json = JsonObject(); 48 break; 49 case 25: 50 json = JsonArray(); 51 break; 52 default: 53 jj_la1[1] = jj_gen; 54 jj_consume_token(-1); 55 throw new ParseException(); 56 } 57 { 58 if (true) return json; 59 } 60 throw new Error("Missing return statement in function"); 61 } 62 JsonObject()63 final private JSONObject JsonObject() throws ParseException { 64 JSONObject o = new JSONObject(); 65 jj_consume_token(20); 66 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 67 case SINGLE_QUOTE_LITERAL: 68 case DOUBLE_QUOTE_LITERAL: 69 Members(o); 70 break; 71 default: 72 jj_la1[2] = jj_gen; 73 ; 74 } 75 jj_consume_token(21); 76 { 77 if (true) return o; 78 } 79 throw new Error("Missing return statement in function"); 80 } 81 JsonNull()82 final private Object JsonNull() throws ParseException { 83 Object o = null; 84 jj_consume_token(22); 85 { 86 if (true) return o; 87 } 88 throw new Error("Missing return statement in function"); 89 } 90 Members(JSONObject o)91 final private void Members(JSONObject o) throws ParseException { 92 Pair(o); 93 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 94 case 23: 95 jj_consume_token(23); 96 Members(o); 97 break; 98 default: 99 jj_la1[3] = jj_gen; 100 ; 101 } 102 } 103 Pair(JSONObject o)104 final private void Pair(JSONObject o) throws ParseException { 105 String property; 106 Object value; 107 property = JsonString(); 108 jj_consume_token(24); 109 value = JsonValue(); 110 o.put(property, value); 111 } 112 JsonArray()113 final private JSONArray JsonArray() throws ParseException { 114 JSONArray array = new JSONArray(); 115 jj_consume_token(25); 116 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 117 case DIGITS: 118 case SINGLE_QUOTE_LITERAL: 119 case DOUBLE_QUOTE_LITERAL: 120 case 20: 121 case 22: 122 case 25: 123 case 27: 124 case 28: 125 case 29: 126 Elements(array); 127 break; 128 default: 129 jj_la1[4] = jj_gen; 130 ; 131 } 132 jj_consume_token(26); 133 //array.reverse(); 134 { 135 if (true) return array; 136 } 137 throw new Error("Missing return statement in function"); 138 } 139 Elements(JSONArray array)140 final private void Elements(JSONArray array) throws ParseException { 141 Object element; 142 element = JsonValue(); 143 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 144 case 23: 145 jj_consume_token(23); 146 Elements(array); 147 break; 148 default: 149 jj_la1[5] = jj_gen; 150 ; 151 } 152 array.add(element); 153 } 154 JsonValue()155 final private Object JsonValue() throws ParseException { 156 Object o = null; 157 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 158 case SINGLE_QUOTE_LITERAL: 159 case DOUBLE_QUOTE_LITERAL: 160 o = JsonString(); 161 break; 162 case DIGITS: 163 case 29: 164 o = JsonNumber(); 165 break; 166 case 20: 167 o = JsonObject(); 168 break; 169 case 25: 170 o = JsonArray(); 171 break; 172 case 27: 173 jj_consume_token(27); 174 o = Boolean.TRUE; 175 break; 176 case 28: 177 jj_consume_token(28); 178 o = Boolean.FALSE; 179 break; 180 case 22: 181 jj_consume_token(22); 182 break; 183 default: 184 jj_la1[6] = jj_gen; 185 jj_consume_token(-1); 186 throw new ParseException(); 187 } 188 { 189 if (true) return o; 190 } 191 throw new Error("Missing return statement in function"); 192 } 193 JsonPrimitive()194 final private Object JsonPrimitive() throws ParseException { 195 Object value; 196 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 197 case SINGLE_QUOTE_LITERAL: 198 case DOUBLE_QUOTE_LITERAL: 199 value = JsonString(); 200 { 201 if (true) return value; 202 } 203 break; 204 case DIGITS: 205 case 29: 206 value = JsonNumber(); 207 { 208 if (true) return value; 209 } 210 break; 211 case 27: 212 jj_consume_token(27); 213 { 214 if (true) return Boolean.TRUE; 215 } 216 break; 217 case 28: 218 jj_consume_token(28); 219 { 220 if (true) return Boolean.FALSE; 221 } 222 break; 223 default: 224 jj_la1[7] = jj_gen; 225 jj_consume_token(-1); 226 throw new ParseException(); 227 } 228 throw new Error("Missing return statement in function"); 229 } 230 JsonNumber()231 final private Object JsonNumber() throws ParseException { 232 String intpart = null, 233 fracpart = null, 234 exppart = null; 235 intpart = JsonInt(); 236 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 237 case 30: 238 fracpart = JsonFrac(); 239 break; 240 default: 241 jj_la1[8] = jj_gen; 242 ; 243 } 244 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 245 case E: 246 exppart = JsonExp(); 247 break; 248 default: 249 jj_la1[9] = jj_gen; 250 ; 251 } 252 Number n; 253 if (exppart != null) { 254 n = new java.math.BigDecimal(intpart + fracpart + exppart); 255 } else if (fracpart != null) { 256 n = new Double(intpart + fracpart); 257 } else { 258 // See if the number fits in an integer, or long 259 // Use BigInteger only if it is big enough. 260 if (intpart.length() < 10) { 261 n = new Integer(intpart); 262 } else if (intpart.length() < 19) { 263 n = new Long(intpart); 264 } else { 265 n = new java.math.BigInteger(intpart); 266 } 267 } 268 { 269 if (true) return n; 270 } 271 throw new Error("Missing return statement in function"); 272 } 273 JsonInt()274 final private String JsonInt() throws ParseException { 275 String digits; 276 boolean negative = false; 277 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 278 case 29: 279 jj_consume_token(29); 280 negative = true; 281 break; 282 default: 283 jj_la1[10] = jj_gen; 284 ; 285 } 286 digits = Digits(); 287 if (negative) { 288 if (true) return "-" + digits; 289 } 290 { 291 if (true) return digits; 292 } 293 throw new Error("Missing return statement in function"); 294 } 295 JsonFrac()296 final private String JsonFrac() throws ParseException { 297 String digits; 298 jj_consume_token(30); 299 digits = Digits(); 300 { 301 if (true) return "." + digits; 302 } 303 throw new Error("Missing return statement in function"); 304 } 305 JsonExp()306 final private String JsonExp() throws ParseException { 307 Token t; 308 String digits; 309 t = jj_consume_token(E); 310 digits = Digits(); 311 { 312 if (true) return t.image + digits; 313 } 314 throw new Error("Missing return statement in function"); 315 } 316 Digits()317 final private String Digits() throws ParseException { 318 Token t; 319 t = jj_consume_token(DIGITS); 320 { 321 if (true) return t.image; 322 } 323 throw new Error("Missing return statement in function"); 324 } 325 JsonString()326 final private String JsonString() throws ParseException { 327 Token t; 328 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) { 329 case SINGLE_QUOTE_LITERAL: 330 t = jj_consume_token(SINGLE_QUOTE_LITERAL); 331 break; 332 case DOUBLE_QUOTE_LITERAL: 333 t = jj_consume_token(DOUBLE_QUOTE_LITERAL); 334 break; 335 default: 336 jj_la1[11] = jj_gen; 337 jj_consume_token(-1); 338 throw new ParseException(); 339 } 340 { 341 if (true) return StringUnmarshaller.unmarshall(t.image); 342 } 343 throw new Error("Missing return statement in function"); 344 } 345 346 /** 347 * Generated Token Manager. 348 */ 349 public JsonParserTokenManager token_source; 350 SimpleCharStream jj_input_stream; 351 /** 352 * Current token. 353 */ 354 public Token token; 355 /** 356 * Next token. 357 */ 358 public Token jj_nt; 359 private int jj_ntk; 360 private int jj_gen; 361 final private int[] jj_la1 = new int[12]; 362 static private int[] jj_la1_0; 363 364 static { jj_la1_init_0()365 jj_la1_init_0(); 366 } 367 jj_la1_init_0()368 private static void jj_la1_init_0() { 369 jj_la1_0 = new int[]{0x3a500c40, 0x2100000, 0xc00, 0x800000, 0x3a500c40, 0x800000, 0x3a500c40, 0x38000c40, 0x40000000, 0x20, 0x20000000, 0xc00,}; 370 } 371 372 /** 373 * Constructor with InputStream. 374 */ JSONParser(java.io.InputStream stream)375 public JSONParser(java.io.InputStream stream) { 376 this(stream, null); 377 } 378 379 /** 380 * Constructor with InputStream and supplied encoding 381 */ JSONParser(java.io.InputStream stream, String encoding)382 public JSONParser(java.io.InputStream stream, String encoding) { 383 try { 384 jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); 385 } catch (java.io.UnsupportedEncodingException e) { 386 throw new RuntimeException(e); 387 } 388 token_source = new JsonParserTokenManager(jj_input_stream); 389 token = new Token(); 390 jj_ntk = -1; 391 jj_gen = 0; 392 for (int i = 0; i < 12; i++) jj_la1[i] = -1; 393 } 394 395 /** 396 * Reinitialise. 397 */ ReInit(java.io.InputStream stream)398 public void ReInit(java.io.InputStream stream) { 399 ReInit(stream, null); 400 } 401 402 /** 403 * Reinitialise. 404 */ ReInit(java.io.InputStream stream, String encoding)405 public void ReInit(java.io.InputStream stream, String encoding) { 406 try { 407 jj_input_stream.ReInit(stream, encoding, 1, 1); 408 } catch (java.io.UnsupportedEncodingException e) { 409 throw new RuntimeException(e); 410 } 411 token_source.ReInit(jj_input_stream); 412 token = new Token(); 413 jj_ntk = -1; 414 jj_gen = 0; 415 for (int i = 0; i < 12; i++) jj_la1[i] = -1; 416 } 417 418 /** 419 * Constructor. 420 */ JSONParser(java.io.Reader stream)421 public JSONParser(java.io.Reader stream) { 422 jj_input_stream = new SimpleCharStream(stream, 1, 1); 423 token_source = new JsonParserTokenManager(jj_input_stream); 424 token = new Token(); 425 jj_ntk = -1; 426 jj_gen = 0; 427 for (int i = 0; i < 12; i++) jj_la1[i] = -1; 428 } 429 430 /** 431 * Reinitialise. 432 */ ReInit(java.io.Reader stream)433 public void ReInit(java.io.Reader stream) { 434 jj_input_stream.ReInit(stream, 1, 1); 435 token_source.ReInit(jj_input_stream); 436 token = new Token(); 437 jj_ntk = -1; 438 jj_gen = 0; 439 for (int i = 0; i < 12; i++) jj_la1[i] = -1; 440 } 441 442 /** 443 * Constructor with generated Token Manager. 444 */ JSONParser(JsonParserTokenManager tm)445 public JSONParser(JsonParserTokenManager tm) { 446 token_source = tm; 447 token = new Token(); 448 jj_ntk = -1; 449 jj_gen = 0; 450 for (int i = 0; i < 12; i++) jj_la1[i] = -1; 451 } 452 453 /** 454 * Reinitialise. 455 */ ReInit(JsonParserTokenManager tm)456 public void ReInit(JsonParserTokenManager tm) { 457 token_source = tm; 458 token = new Token(); 459 jj_ntk = -1; 460 jj_gen = 0; 461 for (int i = 0; i < 12; i++) jj_la1[i] = -1; 462 } 463 jj_consume_token(int kind)464 private Token jj_consume_token(int kind) throws ParseException { 465 Token oldToken; 466 if ((oldToken = token).next != null) token = token.next; 467 else token = token.next = token_source.getNextToken(); 468 jj_ntk = -1; 469 if (token.kind == kind) { 470 jj_gen++; 471 return token; 472 } 473 token = oldToken; 474 jj_kind = kind; 475 throw generateParseException(); 476 } 477 478 479 /** 480 * Get the next Token. 481 */ getNextToken()482 final public Token getNextToken() { 483 if (token.next != null) token = token.next; 484 else token = token.next = token_source.getNextToken(); 485 jj_ntk = -1; 486 jj_gen++; 487 return token; 488 } 489 490 /** 491 * Get the specific Token. 492 */ getToken(int index)493 final public Token getToken(int index) { 494 Token t = token; 495 for (int i = 0; i < index; i++) { 496 if (t.next != null) t = t.next; 497 else t = t.next = token_source.getNextToken(); 498 } 499 return t; 500 } 501 jj_ntk()502 private int jj_ntk() { 503 if ((jj_nt = token.next) == null) 504 return (jj_ntk = (token.next = token_source.getNextToken()).kind); 505 else 506 return (jj_ntk = jj_nt.kind); 507 } 508 509 private java.util.List jj_expentries = new java.util.ArrayList(); 510 private int[] jj_expentry; 511 private int jj_kind = -1; 512 513 /** 514 * Generate ParseException. 515 */ generateParseException()516 public ParseException generateParseException() { 517 jj_expentries.clear(); 518 boolean[] la1tokens = new boolean[31]; 519 if (jj_kind >= 0) { 520 la1tokens[jj_kind] = true; 521 jj_kind = -1; 522 } 523 for (int i = 0; i < 12; i++) { 524 if (jj_la1[i] == jj_gen) { 525 for (int j = 0; j < 32; j++) { 526 if ((jj_la1_0[i] & (1 << j)) != 0) { 527 la1tokens[j] = true; 528 } 529 } 530 } 531 } 532 for (int i = 0; i < 31; i++) { 533 if (la1tokens[i]) { 534 jj_expentry = new int[1]; 535 jj_expentry[0] = i; 536 jj_expentries.add(jj_expentry); 537 } 538 } 539 int[][] exptokseq = new int[jj_expentries.size()][]; 540 for (int i = 0; i < jj_expentries.size(); i++) { 541 exptokseq[i] = (int[]) jj_expentries.get(i); 542 } 543 return new ParseException(token, exptokseq, tokenImage); 544 } 545 546 /** 547 * Enable tracing. 548 */ enable_tracing()549 final public void enable_tracing() { 550 } 551 552 /** 553 * Disable tracing. 554 */ disable_tracing()555 final public void disable_tracing() { 556 } 557 558 } 559