001 /* Generated By:JJTree&JavaCC: Do not edit this line. JsonParser.java */ 002 package net.sourceforge.javajson.parser; 003 004 public class JsonParser/*@bgen(jjtree)*/implements JsonParserTreeConstants, JsonParserConstants {/*@bgen(jjtree)*/ 005 protected JJTJsonParserState jjtree = new JJTJsonParserState();public static void main(String args[]) throws Exception { 006 System.out.println("Reading from standard input..."); 007 JsonParser t = new JsonParser(System.in); 008 SimpleNode n = t.parse(); 009 n.dump(""); 010 } 011 012 final public SimpleNode parse() throws ParseException { 013 /*@bgen(jjtree) parse */ 014 ASTparse jjtn000 = new ASTparse(this, JJTPARSE); 015 boolean jjtc000 = true; 016 jjtree.openNodeScope(jjtn000); 017 try { 018 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 019 case 22: 020 object(); 021 jj_consume_token(0); 022 jjtree.closeNodeScope(jjtn000, true); 023 jjtc000 = false; 024 {if (true) return jjtn000;} 025 break; 026 case 24: 027 array(); 028 jj_consume_token(0); 029 jjtree.closeNodeScope(jjtn000, true); 030 jjtc000 = false; 031 {if (true) return jjtn000;} 032 break; 033 default: 034 jj_la1[0] = jj_gen; 035 jj_consume_token(-1); 036 throw new ParseException(); 037 } 038 } catch (Throwable jjte000) { 039 if (jjtc000) { 040 jjtree.clearNodeScope(jjtn000); 041 jjtc000 = false; 042 } else { 043 jjtree.popNode(); 044 } 045 if (jjte000 instanceof RuntimeException) { 046 {if (true) throw (RuntimeException)jjte000;} 047 } 048 if (jjte000 instanceof ParseException) { 049 {if (true) throw (ParseException)jjte000;} 050 } 051 {if (true) throw (Error)jjte000;} 052 } finally { 053 if (jjtc000) { 054 jjtree.closeNodeScope(jjtn000, true); 055 } 056 } 057 throw new Error("Missing return statement in function"); 058 } 059 060 final public void object() throws ParseException { 061 /*@bgen(jjtree) object */ 062 ASTobject jjtn000 = new ASTobject(this, JJTOBJECT); 063 boolean jjtc000 = true; 064 jjtree.openNodeScope(jjtn000); 065 try { 066 jj_consume_token(22); 067 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 068 case KEY_LITERAL: 069 case STRING_LITERAL: 070 case STRING_LITERAL_SINGLE_QUOTES: 071 members(); 072 break; 073 default: 074 jj_la1[1] = jj_gen; 075 ; 076 } 077 jj_consume_token(23); 078 } catch (Throwable jjte000) { 079 if (jjtc000) { 080 jjtree.clearNodeScope(jjtn000); 081 jjtc000 = false; 082 } else { 083 jjtree.popNode(); 084 } 085 if (jjte000 instanceof RuntimeException) { 086 {if (true) throw (RuntimeException)jjte000;} 087 } 088 if (jjte000 instanceof ParseException) { 089 {if (true) throw (ParseException)jjte000;} 090 } 091 {if (true) throw (Error)jjte000;} 092 } finally { 093 if (jjtc000) { 094 jjtree.closeNodeScope(jjtn000, true); 095 } 096 } 097 } 098 099 final public void array() throws ParseException { 100 /*@bgen(jjtree) array */ 101 ASTarray jjtn000 = new ASTarray(this, JJTARRAY); 102 boolean jjtc000 = true; 103 jjtree.openNodeScope(jjtn000); 104 try { 105 jj_consume_token(24); 106 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 107 case INTEGER_LITERAL: 108 case FLOATING_POINT_LITERAL: 109 case TRUE_LITERAL: 110 case FALSE_LITERAL: 111 case NULL_LITERAL: 112 case STRING_LITERAL: 113 case STRING_LITERAL_SINGLE_QUOTES: 114 case 22: 115 case 24: 116 elements(); 117 break; 118 default: 119 jj_la1[2] = jj_gen; 120 ; 121 } 122 jj_consume_token(25); 123 } catch (Throwable jjte000) { 124 if (jjtc000) { 125 jjtree.clearNodeScope(jjtn000); 126 jjtc000 = false; 127 } else { 128 jjtree.popNode(); 129 } 130 if (jjte000 instanceof RuntimeException) { 131 {if (true) throw (RuntimeException)jjte000;} 132 } 133 if (jjte000 instanceof ParseException) { 134 {if (true) throw (ParseException)jjte000;} 135 } 136 {if (true) throw (Error)jjte000;} 137 } finally { 138 if (jjtc000) { 139 jjtree.closeNodeScope(jjtn000, true); 140 } 141 } 142 } 143 144 final public void members() throws ParseException { 145 /*@bgen(jjtree) members */ 146 ASTmembers jjtn000 = new ASTmembers(this, JJTMEMBERS); 147 boolean jjtc000 = true; 148 jjtree.openNodeScope(jjtn000); 149 try { 150 key(); 151 jj_consume_token(26); 152 value(); 153 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 154 case 27: 155 jj_consume_token(27); 156 members(); 157 break; 158 default: 159 jj_la1[3] = jj_gen; 160 ; 161 } 162 } catch (Throwable jjte000) { 163 if (jjtc000) { 164 jjtree.clearNodeScope(jjtn000); 165 jjtc000 = false; 166 } else { 167 jjtree.popNode(); 168 } 169 if (jjte000 instanceof RuntimeException) { 170 {if (true) throw (RuntimeException)jjte000;} 171 } 172 if (jjte000 instanceof ParseException) { 173 {if (true) throw (ParseException)jjte000;} 174 } 175 {if (true) throw (Error)jjte000;} 176 } finally { 177 if (jjtc000) { 178 jjtree.closeNodeScope(jjtn000, true); 179 } 180 } 181 } 182 183 final public void elements() throws ParseException { 184 /*@bgen(jjtree) elements */ 185 ASTelements jjtn000 = new ASTelements(this, JJTELEMENTS); 186 boolean jjtc000 = true; 187 jjtree.openNodeScope(jjtn000); 188 try { 189 value(); 190 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 191 case 27: 192 jj_consume_token(27); 193 elements(); 194 break; 195 default: 196 jj_la1[4] = jj_gen; 197 ; 198 } 199 } catch (Throwable jjte000) { 200 if (jjtc000) { 201 jjtree.clearNodeScope(jjtn000); 202 jjtc000 = false; 203 } else { 204 jjtree.popNode(); 205 } 206 if (jjte000 instanceof RuntimeException) { 207 {if (true) throw (RuntimeException)jjte000;} 208 } 209 if (jjte000 instanceof ParseException) { 210 {if (true) throw (ParseException)jjte000;} 211 } 212 {if (true) throw (Error)jjte000;} 213 } finally { 214 if (jjtc000) { 215 jjtree.closeNodeScope(jjtn000, true); 216 } 217 } 218 } 219 220 final public void value() throws ParseException { 221 /*@bgen(jjtree) value */ 222 ASTvalue jjtn000 = new ASTvalue(this, JJTVALUE); 223 boolean jjtc000 = true; 224 jjtree.openNodeScope(jjtn000);Token t; 225 try { 226 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 227 case STRING_LITERAL: 228 case STRING_LITERAL_SINGLE_QUOTES: 229 string(); 230 break; 231 case INTEGER_LITERAL: 232 case FLOATING_POINT_LITERAL: 233 number(); 234 break; 235 case 22: 236 object(); 237 break; 238 case 24: 239 array(); 240 break; 241 case TRUE_LITERAL: 242 t = jj_consume_token(TRUE_LITERAL); 243 jjtree.closeNodeScope(jjtn000, true); 244 jjtc000 = false; 245 jjtn000.val = t.image; 246 break; 247 case FALSE_LITERAL: 248 t = jj_consume_token(FALSE_LITERAL); 249 jjtree.closeNodeScope(jjtn000, true); 250 jjtc000 = false; 251 jjtn000.val = t.image; 252 break; 253 case NULL_LITERAL: 254 t = jj_consume_token(NULL_LITERAL); 255 jjtree.closeNodeScope(jjtn000, true); 256 jjtc000 = false; 257 jjtn000.val = t.image; 258 break; 259 default: 260 jj_la1[5] = jj_gen; 261 jj_consume_token(-1); 262 throw new ParseException(); 263 } 264 } catch (Throwable jjte000) { 265 if (jjtc000) { 266 jjtree.clearNodeScope(jjtn000); 267 jjtc000 = false; 268 } else { 269 jjtree.popNode(); 270 } 271 if (jjte000 instanceof RuntimeException) { 272 {if (true) throw (RuntimeException)jjte000;} 273 } 274 if (jjte000 instanceof ParseException) { 275 {if (true) throw (ParseException)jjte000;} 276 } 277 {if (true) throw (Error)jjte000;} 278 } finally { 279 if (jjtc000) { 280 jjtree.closeNodeScope(jjtn000, true); 281 } 282 } 283 } 284 285 final public void key() throws ParseException { 286 /*@bgen(jjtree) key */ 287 ASTkey jjtn000 = new ASTkey(this, JJTKEY); 288 boolean jjtc000 = true; 289 jjtree.openNodeScope(jjtn000);Token t; 290 try { 291 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 292 case KEY_LITERAL: 293 t = jj_consume_token(KEY_LITERAL); 294 jjtree.closeNodeScope(jjtn000, true); 295 jjtc000 = false; 296 jjtn000.val = t.image; 297 break; 298 case STRING_LITERAL: 299 t = jj_consume_token(STRING_LITERAL); 300 jjtree.closeNodeScope(jjtn000, true); 301 jjtc000 = false; 302 jjtn000.val = t.image; 303 break; 304 case STRING_LITERAL_SINGLE_QUOTES: 305 t = jj_consume_token(STRING_LITERAL_SINGLE_QUOTES); 306 jjtree.closeNodeScope(jjtn000, true); 307 jjtc000 = false; 308 jjtn000.val = t.image; 309 break; 310 default: 311 jj_la1[6] = jj_gen; 312 jj_consume_token(-1); 313 throw new ParseException(); 314 } 315 } finally { 316 if (jjtc000) { 317 jjtree.closeNodeScope(jjtn000, true); 318 } 319 } 320 } 321 322 final public void string() throws ParseException { 323 /*@bgen(jjtree) string */ 324 ASTstring jjtn000 = new ASTstring(this, JJTSTRING); 325 boolean jjtc000 = true; 326 jjtree.openNodeScope(jjtn000);Token t; 327 try { 328 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 329 case STRING_LITERAL: 330 t = jj_consume_token(STRING_LITERAL); 331 jjtree.closeNodeScope(jjtn000, true); 332 jjtc000 = false; 333 jjtn000.val = t.image; 334 break; 335 case STRING_LITERAL_SINGLE_QUOTES: 336 t = jj_consume_token(STRING_LITERAL_SINGLE_QUOTES); 337 jjtree.closeNodeScope(jjtn000, true); 338 jjtc000 = false; 339 jjtn000.val = t.image; 340 break; 341 default: 342 jj_la1[7] = jj_gen; 343 jj_consume_token(-1); 344 throw new ParseException(); 345 } 346 } finally { 347 if (jjtc000) { 348 jjtree.closeNodeScope(jjtn000, true); 349 } 350 } 351 } 352 353 final public void number() throws ParseException { 354 /*@bgen(jjtree) number */ 355 ASTnumber jjtn000 = new ASTnumber(this, JJTNUMBER); 356 boolean jjtc000 = true; 357 jjtree.openNodeScope(jjtn000);Token t; 358 try { 359 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 360 case INTEGER_LITERAL: 361 t = jj_consume_token(INTEGER_LITERAL); 362 jjtree.closeNodeScope(jjtn000, true); 363 jjtc000 = false; 364 jjtn000.val = t.image; 365 break; 366 case FLOATING_POINT_LITERAL: 367 t = jj_consume_token(FLOATING_POINT_LITERAL); 368 jjtree.closeNodeScope(jjtn000, true); 369 jjtc000 = false; 370 jjtn000.val = t.image; 371 break; 372 default: 373 jj_la1[8] = jj_gen; 374 jj_consume_token(-1); 375 throw new ParseException(); 376 } 377 } finally { 378 if (jjtc000) { 379 jjtree.closeNodeScope(jjtn000, true); 380 } 381 } 382 } 383 384 public JsonParserTokenManager token_source; 385 SimpleCharStream jj_input_stream; 386 public Token token, jj_nt; 387 private int jj_ntk; 388 private int jj_gen; 389 final private int[] jj_la1 = new int[9]; 390 static private int[] jj_la1_0; 391 static { 392 jj_la1_0(); 393 } 394 private static void jj_la1_0() { 395 jj_la1_0 = new int[] {0x1400000,0x380000,0x1774200,0x8000000,0x8000000,0x1774200,0x380000,0x300000,0x4200,}; 396 } 397 398 public JsonParser(java.io.InputStream stream) { 399 this(stream, null); 400 } 401 public JsonParser(java.io.InputStream stream, String encoding) { 402 try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } 403 token_source = new JsonParserTokenManager(jj_input_stream); 404 token = new Token(); 405 jj_ntk = -1; 406 jj_gen = 0; 407 for (int i = 0; i < 9; i++) jj_la1[i] = -1; 408 } 409 410 public void ReInit(java.io.InputStream stream) { 411 ReInit(stream, null); 412 } 413 public void ReInit(java.io.InputStream stream, String encoding) { 414 try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } 415 token_source.ReInit(jj_input_stream); 416 token = new Token(); 417 jj_ntk = -1; 418 jjtree.reset(); 419 jj_gen = 0; 420 for (int i = 0; i < 9; i++) jj_la1[i] = -1; 421 } 422 423 public JsonParser(java.io.Reader stream) { 424 jj_input_stream = new SimpleCharStream(stream, 1, 1); 425 token_source = new JsonParserTokenManager(jj_input_stream); 426 token = new Token(); 427 jj_ntk = -1; 428 jj_gen = 0; 429 for (int i = 0; i < 9; i++) jj_la1[i] = -1; 430 } 431 432 public void ReInit(java.io.Reader stream) { 433 jj_input_stream.ReInit(stream, 1, 1); 434 token_source.ReInit(jj_input_stream); 435 token = new Token(); 436 jj_ntk = -1; 437 jjtree.reset(); 438 jj_gen = 0; 439 for (int i = 0; i < 9; i++) jj_la1[i] = -1; 440 } 441 442 public JsonParser(JsonParserTokenManager tm) { 443 token_source = tm; 444 token = new Token(); 445 jj_ntk = -1; 446 jj_gen = 0; 447 for (int i = 0; i < 9; i++) jj_la1[i] = -1; 448 } 449 450 public void ReInit(JsonParserTokenManager tm) { 451 token_source = tm; 452 token = new Token(); 453 jj_ntk = -1; 454 jjtree.reset(); 455 jj_gen = 0; 456 for (int i = 0; i < 9; i++) jj_la1[i] = -1; 457 } 458 459 final private Token jj_consume_token(int kind) throws ParseException { 460 Token oldToken; 461 if ((oldToken = token).next != null) token = token.next; 462 else token = token.next = token_source.getNextToken(); 463 jj_ntk = -1; 464 if (token.kind == kind) { 465 jj_gen++; 466 return token; 467 } 468 token = oldToken; 469 jj_kind = kind; 470 throw generateParseException(); 471 } 472 473 final public Token getNextToken() { 474 if (token.next != null) token = token.next; 475 else token = token.next = token_source.getNextToken(); 476 jj_ntk = -1; 477 jj_gen++; 478 return token; 479 } 480 481 final public Token getToken(int index) { 482 Token t = token; 483 for (int i = 0; i < index; i++) { 484 if (t.next != null) t = t.next; 485 else t = t.next = token_source.getNextToken(); 486 } 487 return t; 488 } 489 490 final private int jj_ntk() { 491 if ((jj_nt=token.next) == null) 492 return (jj_ntk = (token.next=token_source.getNextToken()).kind); 493 else 494 return (jj_ntk = jj_nt.kind); 495 } 496 497 private java.util.Vector jj_expentries = new java.util.Vector(); 498 private int[] jj_expentry; 499 private int jj_kind = -1; 500 501 public ParseException generateParseException() { 502 jj_expentries.removeAllElements(); 503 boolean[] la1tokens = new boolean[28]; 504 for (int i = 0; i < 28; i++) { 505 la1tokens[i] = false; 506 } 507 if (jj_kind >= 0) { 508 la1tokens[jj_kind] = true; 509 jj_kind = -1; 510 } 511 for (int i = 0; i < 9; i++) { 512 if (jj_la1[i] == jj_gen) { 513 for (int j = 0; j < 32; j++) { 514 if ((jj_la1_0[i] & (1<<j)) != 0) { 515 la1tokens[j] = true; 516 } 517 } 518 } 519 } 520 for (int i = 0; i < 28; i++) { 521 if (la1tokens[i]) { 522 jj_expentry = new int[1]; 523 jj_expentry[0] = i; 524 jj_expentries.addElement(jj_expentry); 525 } 526 } 527 int[][] exptokseq = new int[jj_expentries.size()][]; 528 for (int i = 0; i < jj_expentries.size(); i++) { 529 exptokseq[i] = (int[])jj_expentries.elementAt(i); 530 } 531 return new ParseException(token, exptokseq, tokenImage); 532 } 533 534 final public void enable_tracing() { 535 } 536 537 final public void disable_tracing() { 538 } 539 540 }