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 }