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