KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > micronova > util > cc > json > Parser


1 /* Generated By:JavaCC: Do not edit this line. Parser.java */
2 package com.micronova.util.cc.json;
3
4 import java.io.*;
5 import java.util.*;
6 import com.micronova.util.*;
7
8 public class Parser implements ParserConstants {
9     protected boolean _allowUnquoted = true;
10
11     public void setAllowUnquoted(boolean allowUnquoted)
12     {
13         this._allowUnquoted = allowUnquoted;
14     }
15
16     public static Object JavaDoc parse(String JavaDoc string, boolean allowUnquoted) throws Exception JavaDoc
17     {
18         Parser parser = new Parser(new StringReader(string));
19         parser.setAllowUnquoted(allowUnquoted);
20         return parser.parse();
21     }
22
23     public static Object JavaDoc parse(String JavaDoc string) throws Exception JavaDoc
24     {
25         return parse(string, true);
26     }
27
28     public static void main(String JavaDoc arg[])
29     {
30         try
31         {
32             System.out.println("parsed:" + parse(arg[0]));
33         }
34         catch (Exception JavaDoc e)
35         {
36             e.printStackTrace();
37         }
38     }
39
40   final public String JavaDoc key() throws ParseException {
41   String JavaDoc value = null;
42     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
43     case DOUBLEQUOTED:
44       jj_consume_token(DOUBLEQUOTED);
45                     value = StringUtil.decodeBackslash(token.image); value = value.substring(1, value.length() - 1);
46       break;
47     case SINGLEQUOTED:
48       jj_consume_token(SINGLEQUOTED);
49                     value = StringUtil.decodeBackslash(token.image); value = value.substring(1, value.length() - 1);
50       break;
51     case UNQUOTED:
52       jj_consume_token(UNQUOTED);
53         if (!this._allowUnquoted)
54         {
55             {if (true) throw new RuntimeException JavaDoc("unquoted string is not allowed:" + token.image);}
56         }
57         value = StringUtil.decodeBackslash(token.image);
58       break;
59     default:
60       jj_consume_token(-1);
61       throw new ParseException();
62     }
63     {if (true) return value;}
64     throw new Error JavaDoc("Missing return statement in function");
65   }
66
67   final public Object JavaDoc value() throws ParseException {
68   Object JavaDoc value = null;
69     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
70     case TRUE:
71       jj_consume_token(TRUE);
72             value = new Boolean JavaDoc(true);
73       break;
74     case FALSE:
75       jj_consume_token(FALSE);
76              value = new Boolean JavaDoc(false);
77       break;
78     case NULL:
79       jj_consume_token(NULL);
80             value = null;
81       break;
82     case LONG:
83       jj_consume_token(LONG);
84             value = TypeUtil.isLong(token.image);
85       break;
86     case DOUBLE:
87     case EDOUBLE:
88       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
89       case DOUBLE:
90         jj_consume_token(DOUBLE);
91         break;
92       case EDOUBLE:
93         jj_consume_token(EDOUBLE);
94         break;
95       default:
96         jj_consume_token(-1);
97         throw new ParseException();
98       }
99                           value = TypeUtil.isDouble(token.image);
100       break;
101     case DOUBLEQUOTED:
102     case SINGLEQUOTED:
103     case UNQUOTED:
104       value = key();
105       break;
106     default:
107       jj_consume_token(-1);
108       throw new ParseException();
109     }
110     {if (true) return value;}
111     throw new Error JavaDoc("Missing return statement in function");
112   }
113
114   final public Map map() throws ParseException {
115   Map map = null;
116   String JavaDoc key = null;
117   Object JavaDoc value = null;
118     jj_consume_token(OPENCURLYBRACKET);
119                       map = new NestedMap();
120     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
121     case DOUBLEQUOTED:
122     case SINGLEQUOTED:
123     case UNQUOTED:
124       key = key();
125
126       jj_consume_token(COLON);
127       value = parse();
128                      map.put(key, value);
129       break;
130     default:
131       ;
132     }
133     label_1:
134     while (true) {
135       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
136       case COMMA:
137         ;
138         break;
139       default:
140         break label_1;
141       }
142       jj_consume_token(COMMA);
143       key = key();
144
145       jj_consume_token(COLON);
146       value = parse();
147                      map.put(key, value);
148     }
149     jj_consume_token(CLOSECURLYBRACKET);
150     {if (true) return map;}
151     throw new Error JavaDoc("Missing return statement in function");
152   }
153
154   final public List list() throws ParseException {
155   List list = null;
156   Object JavaDoc value = null;
157     jj_consume_token(OPENBRACKET);
158                  list = new SparseList();
159     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
160     case OPENCURLYBRACKET:
161     case OPENBRACKET:
162     case DOUBLEQUOTED:
163     case SINGLEQUOTED:
164     case TRUE:
165     case FALSE:
166     case NULL:
167     case LONG:
168     case DOUBLE:
169     case EDOUBLE:
170     case UNQUOTED:
171       value = parse();
172                      list.add(value);
173       break;
174     default:
175       ;
176     }
177     label_2:
178     while (true) {
179       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
180       case COMMA:
181         ;
182         break;
183       default:
184         break label_2;
185       }
186       jj_consume_token(COMMA);
187       value = parse();
188                      list.add(value);
189     }
190     jj_consume_token(CLOSEBRACKET);
191                   {if (true) return list;}
192     throw new Error JavaDoc("Missing return statement in function");
193   }
194
195   final public Object JavaDoc parse() throws ParseException {
196   Object JavaDoc value = null;
197     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
198     case DOUBLEQUOTED:
199     case SINGLEQUOTED:
200     case TRUE:
201     case FALSE:
202     case NULL:
203     case LONG:
204     case DOUBLE:
205     case EDOUBLE:
206     case UNQUOTED:
207       value = value();
208                    {if (true) return value;}
209       break;
210     case OPENCURLYBRACKET:
211       value = map();
212                  {if (true) return value;}
213       break;
214     case OPENBRACKET:
215       value = list();
216                   {if (true) return value;}
217       break;
218     default:
219       jj_consume_token(-1);
220       throw new ParseException();
221     }
222     throw new Error JavaDoc("Missing return statement in function");
223   }
224
225   public ParserTokenManager token_source;
226   SimpleCharStream jj_input_stream;
227   public Token token, jj_nt;
228   private int jj_ntk;
229
230   public Parser(java.io.InputStream JavaDoc stream) {
231      this(stream, null);
232   }
233   public Parser(java.io.InputStream JavaDoc stream, String JavaDoc encoding) {
234     try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException JavaDoc e) { throw new RuntimeException JavaDoc(e); }
235     token_source = new ParserTokenManager(jj_input_stream);
236     token = new Token();
237     jj_ntk = -1;
238   }
239
240   public void ReInit(java.io.InputStream JavaDoc stream) {
241      ReInit(stream, null);
242   }
243   public void ReInit(java.io.InputStream JavaDoc stream, String JavaDoc encoding) {
244     try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException JavaDoc e) { throw new RuntimeException JavaDoc(e); }
245     token_source.ReInit(jj_input_stream);
246     token = new Token();
247     jj_ntk = -1;
248   }
249
250   public Parser(java.io.Reader JavaDoc stream) {
251     jj_input_stream = new SimpleCharStream(stream, 1, 1);
252     token_source = new ParserTokenManager(jj_input_stream);
253     token = new Token();
254     jj_ntk = -1;
255   }
256
257   public void ReInit(java.io.Reader JavaDoc stream) {
258     jj_input_stream.ReInit(stream, 1, 1);
259     token_source.ReInit(jj_input_stream);
260     token = new Token();
261     jj_ntk = -1;
262   }
263
264   public Parser(ParserTokenManager tm) {
265     token_source = tm;
266     token = new Token();
267     jj_ntk = -1;
268   }
269
270   public void ReInit(ParserTokenManager tm) {
271     token_source = tm;
272     token = new Token();
273     jj_ntk = -1;
274   }
275
276   final private Token jj_consume_token(int kind) throws ParseException {
277     Token oldToken;
278     if ((oldToken = token).next != null) token = token.next;
279     else token = token.next = token_source.getNextToken();
280     jj_ntk = -1;
281     if (token.kind == kind) {
282       return token;
283     }
284     token = oldToken;
285     throw generateParseException();
286   }
287
288   final public Token getNextToken() {
289     if (token.next != null) token = token.next;
290     else token = token.next = token_source.getNextToken();
291     jj_ntk = -1;
292     return token;
293   }
294
295   final public Token getToken(int index) {
296     Token t = token;
297     for (int i = 0; i < index; i++) {
298       if (t.next != null) t = t.next;
299       else t = t.next = token_source.getNextToken();
300     }
301     return t;
302   }
303
304   final private int jj_ntk() {
305     if ((jj_nt=token.next) == null)
306       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
307     else
308       return (jj_ntk = jj_nt.kind);
309   }
310
311   public ParseException generateParseException() {
312     Token errortok = token.next;
313     int line = errortok.beginLine, column = errortok.beginColumn;
314     String JavaDoc mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;
315     return new ParseException("Parse error at line " + line + ", column " + column + ". Encountered: " + mess);
316   }
317
318   final public void enable_tracing() {
319   }
320
321   final public void disable_tracing() {
322   }
323
324 }
325
Popular Tags