Source code: org/objectstyle/cayenne/wocompat/parser/Parser.java
1 /* Generated By:JavaCC: Do not edit this line. Parser.java */
2 package org.objectstyle.cayenne.wocompat.parser;
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.util.ArrayList;
7 import java.util.HashMap;
8 import java.util.Hashtable;
9
10
11 public class Parser implements ParserConstants {
12 public Hashtable parseStrings;
13
14 public Parser() {
15 this(System.in);
16 }
17
18 public Parser(String filename) throws FileNotFoundException {
19 this(new FileInputStream(filename));
20 }
21
22 public Parser(File f) throws FileNotFoundException {
23 this(new FileInputStream(f));
24 }
25
26 public Object propertyList() {
27 try {
28 return object();
29 }
30 catch (ParseException pe) {
31 System.err.println("Error parsing property list file: "+pe);
32 return null;
33 }
34 }
35
36 public static void main(String args[]) {
37 Parser r = new Parser();
38 Object o = r.propertyList();
39 System.out.println(o);
40 }
41
42 final public Object object() throws ParseException {
43 Object node;
44 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
45 case 8:
46 node = array();
47 {if (true) return node;}
48 break;
49 case 10:
50 node = dictionary();
51 {if (true) return node;}
52 break;
53 case INT:
54 case FLOAT:
55 case STRING:
56 case QUOTED_STRING:
57 node = leaf();
58 {if (true) return node;}
59 break;
60 default:
61 jj_la1[0] = jj_gen;
62 jj_consume_token(-1);
63 throw new ParseException();
64 }
65 throw new Error("Missing return statement in function");
66 }
67
68 final public Object leaf() throws ParseException {
69 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
70 case INT:
71 jj_consume_token(INT);
72 {if (true) return Integer.valueOf(token.image);}
73 break;
74 case FLOAT:
75 jj_consume_token(FLOAT);
76 {if (true) return Double.valueOf(token.image);}
77 break;
78 case QUOTED_STRING:
79 jj_consume_token(QUOTED_STRING);
80 {if (true) return token.image;}
81 break;
82 case STRING:
83 jj_consume_token(STRING);
84 {if (true) return token.image;}
85 break;
86 default:
87 jj_la1[1] = jj_gen;
88 jj_consume_token(-1);
89 throw new ParseException();
90 }
91 throw new Error("Missing return statement in function");
92 }
93
94 final public HashMap dictionary() throws ParseException {
95 HashMap h;
96 Object key, val;
97 jj_consume_token(10);
98 h = new HashMap();
99 label_1:
100 while (true) {
101 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
102 case INT:
103 case FLOAT:
104 case 8:
105 case 10:
106 case STRING:
107 case QUOTED_STRING:
108 break;
109 default:
110 jj_la1[2] = jj_gen;
111 break label_1;
112 }
113 key = object();
114 jj_consume_token(7);
115 val = object();
116 jj_consume_token(13);
117 h.put(key,val);
118 }
119 jj_consume_token(11);
120 {if (true) return h;}
121 throw new Error("Missing return statement in function");
122 }
123
124 final public ArrayList array() throws ParseException {
125 ArrayList v;
126 Object o;
127 jj_consume_token(8);
128 v = new ArrayList();
129 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
130 case INT:
131 case FLOAT:
132 case 8:
133 case 10:
134 case STRING:
135 case QUOTED_STRING:
136 o = object();
137 v.add(o);
138 label_2:
139 while (true) {
140 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
141 case 12:
142 break;
143 default:
144 jj_la1[3] = jj_gen;
145 break label_2;
146 }
147 jj_consume_token(12);
148 o = object();
149 v.add(o);
150 }
151 break;
152 default:
153 jj_la1[4] = jj_gen;
154 }
155 jj_consume_token(9);
156 {if (true) return v;}
157 throw new Error("Missing return statement in function");
158 }
159
160 public ParserTokenManager token_source;
161 ASCII_CharStream jj_input_stream;
162 public Token token, jj_nt;
163 private int jj_ntk;
164 private int jj_gen;
165 final private int[] jj_la1 = new int[5];
166 final private int[] jj_la1_0 = {0x8004560,0x8004060,0x8004560,0x1000,0x8004560,};
167
168 public Parser(java.io.InputStream stream) {
169 jj_input_stream = new ASCII_CharStream(stream, 1, 1);
170 token_source = new ParserTokenManager(jj_input_stream);
171 token = new Token();
172 jj_ntk = -1;
173 jj_gen = 0;
174 for (int i = 0; i < 5; i++) jj_la1[i] = -1;
175 }
176
177 public void ReInit(java.io.InputStream stream) {
178 jj_input_stream.ReInit(stream, 1, 1);
179 token_source.ReInit(jj_input_stream);
180 token = new Token();
181 jj_ntk = -1;
182 jj_gen = 0;
183 for (int i = 0; i < 5; i++) jj_la1[i] = -1;
184 }
185
186 public Parser(java.io.Reader stream) {
187 jj_input_stream = new ASCII_CharStream(stream, 1, 1);
188 token_source = new ParserTokenManager(jj_input_stream);
189 token = new Token();
190 jj_ntk = -1;
191 jj_gen = 0;
192 for (int i = 0; i < 5; i++) jj_la1[i] = -1;
193 }
194
195 public void ReInit(java.io.Reader stream) {
196 jj_input_stream.ReInit(stream, 1, 1);
197 token_source.ReInit(jj_input_stream);
198 token = new Token();
199 jj_ntk = -1;
200 jj_gen = 0;
201 for (int i = 0; i < 5; i++) jj_la1[i] = -1;
202 }
203
204 public Parser(ParserTokenManager tm) {
205 token_source = tm;
206 token = new Token();
207 jj_ntk = -1;
208 jj_gen = 0;
209 for (int i = 0; i < 5; i++) jj_la1[i] = -1;
210 }
211
212 public void ReInit(ParserTokenManager tm) {
213 token_source = tm;
214 token = new Token();
215 jj_ntk = -1;
216 jj_gen = 0;
217 for (int i = 0; i < 5; i++) jj_la1[i] = -1;
218 }
219
220 final private Token jj_consume_token(int kind) throws ParseException {
221 Token oldToken;
222 if ((oldToken = token).next != null) token = token.next;
223 else token = token.next = token_source.getNextToken();
224 jj_ntk = -1;
225 if (token.kind == kind) {
226 jj_gen++;
227 return token;
228 }
229 token = oldToken;
230 jj_kind = kind;
231 throw generateParseException();
232 }
233
234 final public Token getNextToken() {
235 if (token.next != null) token = token.next;
236 else token = token.next = token_source.getNextToken();
237 jj_ntk = -1;
238 jj_gen++;
239 return token;
240 }
241
242 final public Token getToken(int index) {
243 Token t = token;
244 for (int i = 0; i < index; i++) {
245 if (t.next != null) t = t.next;
246 else t = t.next = token_source.getNextToken();
247 }
248 return t;
249 }
250
251 final private int jj_ntk() {
252 if ((jj_nt=token.next) == null)
253 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
254 else
255 return (jj_ntk = jj_nt.kind);
256 }
257
258 private java.util.Vector jj_expentries = new java.util.Vector();
259 private int[] jj_expentry;
260 private int jj_kind = -1;
261
262 final public ParseException generateParseException() {
263 jj_expentries.removeAllElements();
264 boolean[] la1tokens = new boolean[28];
265 for (int i = 0; i < 28; i++) {
266 la1tokens[i] = false;
267 }
268 if (jj_kind >= 0) {
269 la1tokens[jj_kind] = true;
270 jj_kind = -1;
271 }
272 for (int i = 0; i < 5; i++) {
273 if (jj_la1[i] == jj_gen) {
274 for (int j = 0; j < 32; j++) {
275 if ((jj_la1_0[i] & (1<<j)) != 0) {
276 la1tokens[j] = true;
277 }
278 }
279 }
280 }
281 for (int i = 0; i < 28; i++) {
282 if (la1tokens[i]) {
283 jj_expentry = new int[1];
284 jj_expentry[0] = i;
285 jj_expentries.addElement(jj_expentry);
286 }
287 }
288 int[][] exptokseq = new int[jj_expentries.size()][];
289 for (int i = 0; i < jj_expentries.size(); i++) {
290 exptokseq[i] = (int[])jj_expentries.elementAt(i);
291 }
292 return new ParseException(token, exptokseq, tokenImage);
293 }
294
295 final public void enable_tracing() {
296 }
297
298 final public void disable_tracing() {
299 }
300
301 }