1
2 package fr.in2p3.jsaga.generated.parser;
3 import fr.in2p3.jsaga.engine.session.BaseUrlItem;
4 import fr.in2p3.jsaga.engine.session.item.*;
5 import java.io.ByteArrayInputStream;
6 import java.util.ArrayList;
7 import java.util.List;
8 public class BaseUrlParser implements BaseUrlParserConstants {
9 public static BaseUrlItem[] parse(String pattern) throws ParseException {
10 return new BaseUrlParser(new ByteArrayInputStream(pattern.getBytes())).parse();
11 }
12
13 final public BaseUrlItem[] parse() throws ParseException {
14 Token scheme,alias=null,host,port; StringBuffer domain,dir;
15 Token preHost=null,postHost=null,preDomain=null,preDir=null,postDir=null;
16 List<BaseUrlItem> result = new ArrayList<BaseUrlItem>();
17 result.add(null);
18 result.add(new HostItem());
19 result.add(new DomainItem());
20 result.add(new PortItem());
21 if (jj_2_1(2)) {
22 alias = jj_consume_token(NAME);
23 jj_consume_token(SEP_ALIAS);
24 } else {
25 ;
26 }
27 scheme = jj_consume_token(NAME);
28 result.set(0, new SchemeItem(scheme.toString(),
29 alias!=null ? alias.toString() : null));
30 if (jj_2_24(2)) {
31 jj_consume_token(SEP_SCHEME);
32 if (jj_2_17(2)) {
33 if (jj_2_4(2)) {
34 if (jj_2_2(2)) {
35 preHost = jj_consume_token(STAR);
36 } else {
37 ;
38 }
39 host = jj_consume_token(NAME);
40 if (jj_2_3(2)) {
41 postHost = jj_consume_token(STAR);
42 } else {
43 ;
44 }
45 result.set(1, new HostItem(host.toString(), preHost, postHost));
46 } else if (jj_2_5(2)) {
47 preHost = jj_consume_token(STAR);
48 } else if (jj_2_6(2)) {
49 host = jj_consume_token(NUMBER);
50 jj_consume_token(SEP_DOMAIN);
51 jj_consume_token(NUMBER);
52 jj_consume_token(SEP_DOMAIN);
53 jj_consume_token(NUMBER);
54 jj_consume_token(SEP_DOMAIN);
55 jj_consume_token(NUMBER);
56 result.set(1, new HostItem(host.toString(), null, null));
57 } else {
58 jj_consume_token(-1);
59 throw new ParseException();
60 }
61 if (jj_2_10(2)) {
62 jj_consume_token(SEP_DOMAIN);
63 if (jj_2_8(2)) {
64 if (jj_2_7(2)) {
65 preDomain = jj_consume_token(STAR);
66 } else {
67 ;
68 }
69 domain = parseDomain();
70 result.set(2, new DomainItem(domain.toString(), preDomain));
71 } else if (jj_2_9(2)) {
72 preDomain = jj_consume_token(STAR);
73 } else {
74 jj_consume_token(-1);
75 throw new ParseException();
76 }
77 } else {
78 ;
79 }
80 if (jj_2_13(2)) {
81 if (jj_2_11(2)) {
82 jj_consume_token(SEP_PORT);
83 port = jj_consume_token(NUMBER);
84 result.set(3, new PortItem(port.toString(), PortItem.REQUIRED));
85 } else if (jj_2_12(2)) {
86 jj_consume_token(16);
87 jj_consume_token(SEP_PORT);
88 port = jj_consume_token(NUMBER);
89 jj_consume_token(17);
90 result.set(3, new PortItem(port.toString(), PortItem.OPTIONAL));
91 } else {
92 jj_consume_token(-1);
93 throw new ParseException();
94 }
95 } else {
96 ;
97 }
98 if (jj_2_16(2)) {
99 jj_consume_token(SEP_PORT);
100 if (jj_2_14(2)) {
101 port = jj_consume_token(NUMBER);
102 } else if (jj_2_15(2)) {
103 jj_consume_token(16);
104 port = jj_consume_token(NUMBER);
105 jj_consume_token(17);
106 } else {
107 jj_consume_token(-1);
108 throw new ParseException();
109 }
110 } else {
111 ;
112 }
113 } else {
114 ;
115 }
116 label_1:
117 while (true) {
118 if (jj_2_18(2)) {
119 ;
120 } else {
121 break label_1;
122 }
123 jj_consume_token(SEP_DIR);
124 if (jj_2_21(2)) {
125 if (jj_2_19(2)) {
126 preDir = jj_consume_token(STAR);
127 } else {
128 ;
129 }
130 dir = parseDir();
131 if (jj_2_20(2)) {
132 postDir = jj_consume_token(STAR);
133 } else {
134 ;
135 }
136 result.add(new DirItem(dir.toString(), preDir, postDir));
137 } else if (jj_2_22(2)) {
138 preDir = jj_consume_token(STAR);
139 result.add(new DirItem());
140 } else {
141 jj_consume_token(-1);
142 throw new ParseException();
143 }
144 preDir=postDir=null;
145 }
146 if (jj_2_23(2)) {
147 jj_consume_token(SEP_DIR);
148 } else {
149 ;
150 }
151 } else {
152 ;
153 }
154 jj_consume_token(0);
155 {if (true) return (BaseUrlItem[]) result.toArray(new BaseUrlItem[result.size()]);}
156 throw new Error("Missing return statement in function");
157 }
158
159 final public StringBuffer parseDomain() throws ParseException {
160 StringBuffer buffer=new StringBuffer(); Token token;
161 token = jj_consume_token(NAME);
162 buffer.append(token.toString());
163 label_2:
164 while (true) {
165 if (jj_2_25(2)) {
166 ;
167 } else {
168 break label_2;
169 }
170 jj_consume_token(SEP_DOMAIN);
171 token = jj_consume_token(NAME);
172 buffer.append(".").append(token.toString());
173 }
174 {if (true) return buffer;}
175 throw new Error("Missing return statement in function");
176 }
177
178 final public StringBuffer parseDir() throws ParseException {
179 StringBuffer buffer=new StringBuffer(); Token token;
180 label_3:
181 while (true) {
182 if (jj_2_26(2)) {
183 token = jj_consume_token(NAME);
184 buffer.append(token.toString());
185 } else if (jj_2_27(2)) {
186 token = jj_consume_token(NUMBER);
187 buffer.append(token.toString());
188 } else if (jj_2_28(2)) {
189 token = jj_consume_token(18);
190 buffer.append(token.toString());
191 } else {
192 jj_consume_token(-1);
193 throw new ParseException();
194 }
195 if (jj_2_29(2)) {
196 ;
197 } else {
198 break label_3;
199 }
200 }
201 {if (true) return buffer;}
202 throw new Error("Missing return statement in function");
203 }
204
205 private boolean jj_2_1(int xla) {
206 jj_la = xla; jj_lastpos = jj_scanpos = token;
207 try { return !jj_3_1(); }
208 catch(LookaheadSuccess ls) { return true; }
209 finally { jj_save(0, xla); }
210 }
211
212 private boolean jj_2_2(int xla) {
213 jj_la = xla; jj_lastpos = jj_scanpos = token;
214 try { return !jj_3_2(); }
215 catch(LookaheadSuccess ls) { return true; }
216 finally { jj_save(1, xla); }
217 }
218
219 private boolean jj_2_3(int xla) {
220 jj_la = xla; jj_lastpos = jj_scanpos = token;
221 try { return !jj_3_3(); }
222 catch(LookaheadSuccess ls) { return true; }
223 finally { jj_save(2, xla); }
224 }
225
226 private boolean jj_2_4(int xla) {
227 jj_la = xla; jj_lastpos = jj_scanpos = token;
228 try { return !jj_3_4(); }
229 catch(LookaheadSuccess ls) { return true; }
230 finally { jj_save(3, xla); }
231 }
232
233 private boolean jj_2_5(int xla) {
234 jj_la = xla; jj_lastpos = jj_scanpos = token;
235 try { return !jj_3_5(); }
236 catch(LookaheadSuccess ls) { return true; }
237 finally { jj_save(4, xla); }
238 }
239
240 private boolean jj_2_6(int xla) {
241 jj_la = xla; jj_lastpos = jj_scanpos = token;
242 try { return !jj_3_6(); }
243 catch(LookaheadSuccess ls) { return true; }
244 finally { jj_save(5, xla); }
245 }
246
247 private boolean jj_2_7(int xla) {
248 jj_la = xla; jj_lastpos = jj_scanpos = token;
249 try { return !jj_3_7(); }
250 catch(LookaheadSuccess ls) { return true; }
251 finally { jj_save(6, xla); }
252 }
253
254 private boolean jj_2_8(int xla) {
255 jj_la = xla; jj_lastpos = jj_scanpos = token;
256 try { return !jj_3_8(); }
257 catch(LookaheadSuccess ls) { return true; }
258 finally { jj_save(7, xla); }
259 }
260
261 private boolean jj_2_9(int xla) {
262 jj_la = xla; jj_lastpos = jj_scanpos = token;
263 try { return !jj_3_9(); }
264 catch(LookaheadSuccess ls) { return true; }
265 finally { jj_save(8, xla); }
266 }
267
268 private boolean jj_2_10(int xla) {
269 jj_la = xla; jj_lastpos = jj_scanpos = token;
270 try { return !jj_3_10(); }
271 catch(LookaheadSuccess ls) { return true; }
272 finally { jj_save(9, xla); }
273 }
274
275 private boolean jj_2_11(int xla) {
276 jj_la = xla; jj_lastpos = jj_scanpos = token;
277 try { return !jj_3_11(); }
278 catch(LookaheadSuccess ls) { return true; }
279 finally { jj_save(10, xla); }
280 }
281
282 private boolean jj_2_12(int xla) {
283 jj_la = xla; jj_lastpos = jj_scanpos = token;
284 try { return !jj_3_12(); }
285 catch(LookaheadSuccess ls) { return true; }
286 finally { jj_save(11, xla); }
287 }
288
289 private boolean jj_2_13(int xla) {
290 jj_la = xla; jj_lastpos = jj_scanpos = token;
291 try { return !jj_3_13(); }
292 catch(LookaheadSuccess ls) { return true; }
293 finally { jj_save(12, xla); }
294 }
295
296 private boolean jj_2_14(int xla) {
297 jj_la = xla; jj_lastpos = jj_scanpos = token;
298 try { return !jj_3_14(); }
299 catch(LookaheadSuccess ls) { return true; }
300 finally { jj_save(13, xla); }
301 }
302
303 private boolean jj_2_15(int xla) {
304 jj_la = xla; jj_lastpos = jj_scanpos = token;
305 try { return !jj_3_15(); }
306 catch(LookaheadSuccess ls) { return true; }
307 finally { jj_save(14, xla); }
308 }
309
310 private boolean jj_2_16(int xla) {
311 jj_la = xla; jj_lastpos = jj_scanpos = token;
312 try { return !jj_3_16(); }
313 catch(LookaheadSuccess ls) { return true; }
314 finally { jj_save(15, xla); }
315 }
316
317 private boolean jj_2_17(int xla) {
318 jj_la = xla; jj_lastpos = jj_scanpos = token;
319 try { return !jj_3_17(); }
320 catch(LookaheadSuccess ls) { return true; }
321 finally { jj_save(16, xla); }
322 }
323
324 private boolean jj_2_18(int xla) {
325 jj_la = xla; jj_lastpos = jj_scanpos = token;
326 try { return !jj_3_18(); }
327 catch(LookaheadSuccess ls) { return true; }
328 finally { jj_save(17, xla); }
329 }
330
331 private boolean jj_2_19(int xla) {
332 jj_la = xla; jj_lastpos = jj_scanpos = token;
333 try { return !jj_3_19(); }
334 catch(LookaheadSuccess ls) { return true; }
335 finally { jj_save(18, xla); }
336 }
337
338 private boolean jj_2_20(int xla) {
339 jj_la = xla; jj_lastpos = jj_scanpos = token;
340 try { return !jj_3_20(); }
341 catch(LookaheadSuccess ls) { return true; }
342 finally { jj_save(19, xla); }
343 }
344
345 private boolean jj_2_21(int xla) {
346 jj_la = xla; jj_lastpos = jj_scanpos = token;
347 try { return !jj_3_21(); }
348 catch(LookaheadSuccess ls) { return true; }
349 finally { jj_save(20, xla); }
350 }
351
352 private boolean jj_2_22(int xla) {
353 jj_la = xla; jj_lastpos = jj_scanpos = token;
354 try { return !jj_3_22(); }
355 catch(LookaheadSuccess ls) { return true; }
356 finally { jj_save(21, xla); }
357 }
358
359 private boolean jj_2_23(int xla) {
360 jj_la = xla; jj_lastpos = jj_scanpos = token;
361 try { return !jj_3_23(); }
362 catch(LookaheadSuccess ls) { return true; }
363 finally { jj_save(22, xla); }
364 }
365
366 private boolean jj_2_24(int xla) {
367 jj_la = xla; jj_lastpos = jj_scanpos = token;
368 try { return !jj_3_24(); }
369 catch(LookaheadSuccess ls) { return true; }
370 finally { jj_save(23, xla); }
371 }
372
373 private boolean jj_2_25(int xla) {
374 jj_la = xla; jj_lastpos = jj_scanpos = token;
375 try { return !jj_3_25(); }
376 catch(LookaheadSuccess ls) { return true; }
377 finally { jj_save(24, xla); }
378 }
379
380 private boolean jj_2_26(int xla) {
381 jj_la = xla; jj_lastpos = jj_scanpos = token;
382 try { return !jj_3_26(); }
383 catch(LookaheadSuccess ls) { return true; }
384 finally { jj_save(25, xla); }
385 }
386
387 private boolean jj_2_27(int xla) {
388 jj_la = xla; jj_lastpos = jj_scanpos = token;
389 try { return !jj_3_27(); }
390 catch(LookaheadSuccess ls) { return true; }
391 finally { jj_save(26, xla); }
392 }
393
394 private boolean jj_2_28(int xla) {
395 jj_la = xla; jj_lastpos = jj_scanpos = token;
396 try { return !jj_3_28(); }
397 catch(LookaheadSuccess ls) { return true; }
398 finally { jj_save(27, xla); }
399 }
400
401 private boolean jj_2_29(int xla) {
402 jj_la = xla; jj_lastpos = jj_scanpos = token;
403 try { return !jj_3_29(); }
404 catch(LookaheadSuccess ls) { return true; }
405 finally { jj_save(28, xla); }
406 }
407
408 private boolean jj_3_23() {
409 if (jj_scan_token(SEP_DIR)) return true;
410 return false;
411 }
412
413 private boolean jj_3_21() {
414 Token xsp;
415 xsp = jj_scanpos;
416 if (jj_3_19()) jj_scanpos = xsp;
417 if (jj_3R_5()) return true;
418 xsp = jj_scanpos;
419 if (jj_3_20()) jj_scanpos = xsp;
420 return false;
421 }
422
423 private boolean jj_3_15() {
424 if (jj_scan_token(16)) return true;
425 if (jj_scan_token(NUMBER)) return true;
426 return false;
427 }
428
429 private boolean jj_3_14() {
430 if (jj_scan_token(NUMBER)) return true;
431 return false;
432 }
433
434 private boolean jj_3_18() {
435 if (jj_scan_token(SEP_DIR)) return true;
436 Token xsp;
437 xsp = jj_scanpos;
438 if (jj_3_21()) {
439 jj_scanpos = xsp;
440 if (jj_3_22()) return true;
441 }
442 return false;
443 }
444
445 private boolean jj_3_7() {
446 if (jj_scan_token(STAR)) return true;
447 return false;
448 }
449
450 private boolean jj_3_16() {
451 if (jj_scan_token(SEP_PORT)) return true;
452 Token xsp;
453 xsp = jj_scanpos;
454 if (jj_3_14()) {
455 jj_scanpos = xsp;
456 if (jj_3_15()) return true;
457 }
458 return false;
459 }
460
461 private boolean jj_3_9() {
462 if (jj_scan_token(STAR)) return true;
463 return false;
464 }
465
466 private boolean jj_3_12() {
467 if (jj_scan_token(16)) return true;
468 if (jj_scan_token(SEP_PORT)) return true;
469 return false;
470 }
471
472 private boolean jj_3_11() {
473 if (jj_scan_token(SEP_PORT)) return true;
474 if (jj_scan_token(NUMBER)) return true;
475 return false;
476 }
477
478 private boolean jj_3_13() {
479 Token xsp;
480 xsp = jj_scanpos;
481 if (jj_3_11()) {
482 jj_scanpos = xsp;
483 if (jj_3_12()) return true;
484 }
485 return false;
486 }
487
488 private boolean jj_3_8() {
489 Token xsp;
490 xsp = jj_scanpos;
491 if (jj_3_7()) jj_scanpos = xsp;
492 if (jj_3R_4()) return true;
493 return false;
494 }
495
496 private boolean jj_3_10() {
497 if (jj_scan_token(SEP_DOMAIN)) return true;
498 Token xsp;
499 xsp = jj_scanpos;
500 if (jj_3_8()) {
501 jj_scanpos = xsp;
502 if (jj_3_9()) return true;
503 }
504 return false;
505 }
506
507 private boolean jj_3_3() {
508 if (jj_scan_token(STAR)) return true;
509 return false;
510 }
511
512 private boolean jj_3_6() {
513 if (jj_scan_token(NUMBER)) return true;
514 if (jj_scan_token(SEP_DOMAIN)) return true;
515 return false;
516 }
517
518 private boolean jj_3_2() {
519 if (jj_scan_token(STAR)) return true;
520 return false;
521 }
522
523 private boolean jj_3_5() {
524 if (jj_scan_token(STAR)) return true;
525 return false;
526 }
527
528 private boolean jj_3_4() {
529 Token xsp;
530 xsp = jj_scanpos;
531 if (jj_3_2()) jj_scanpos = xsp;
532 if (jj_scan_token(NAME)) return true;
533 xsp = jj_scanpos;
534 if (jj_3_3()) jj_scanpos = xsp;
535 return false;
536 }
537
538 private boolean jj_3_17() {
539 Token xsp;
540 xsp = jj_scanpos;
541 if (jj_3_4()) {
542 jj_scanpos = xsp;
543 if (jj_3_5()) {
544 jj_scanpos = xsp;
545 if (jj_3_6()) return true;
546 }
547 }
548 xsp = jj_scanpos;
549 if (jj_3_10()) jj_scanpos = xsp;
550 xsp = jj_scanpos;
551 if (jj_3_13()) jj_scanpos = xsp;
552 xsp = jj_scanpos;
553 if (jj_3_16()) jj_scanpos = xsp;
554 return false;
555 }
556
557 private boolean jj_3_28() {
558 if (jj_scan_token(18)) return true;
559 return false;
560 }
561
562 private boolean jj_3_27() {
563 if (jj_scan_token(NUMBER)) return true;
564 return false;
565 }
566
567 private boolean jj_3_29() {
568 Token xsp;
569 xsp = jj_scanpos;
570 if (jj_3_26()) {
571 jj_scanpos = xsp;
572 if (jj_3_27()) {
573 jj_scanpos = xsp;
574 if (jj_3_28()) return true;
575 }
576 }
577 return false;
578 }
579
580 private boolean jj_3_26() {
581 if (jj_scan_token(NAME)) return true;
582 return false;
583 }
584
585 private boolean jj_3_24() {
586 if (jj_scan_token(SEP_SCHEME)) return true;
587 Token xsp;
588 xsp = jj_scanpos;
589 if (jj_3_17()) jj_scanpos = xsp;
590 while (true) {
591 xsp = jj_scanpos;
592 if (jj_3_18()) { jj_scanpos = xsp; break; }
593 }
594 xsp = jj_scanpos;
595 if (jj_3_23()) jj_scanpos = xsp;
596 return false;
597 }
598
599 private boolean jj_3R_5() {
600 Token xsp;
601 if (jj_3_29()) return true;
602 while (true) {
603 xsp = jj_scanpos;
604 if (jj_3_29()) { jj_scanpos = xsp; break; }
605 }
606 return false;
607 }
608
609 private boolean jj_3_25() {
610 if (jj_scan_token(SEP_DOMAIN)) return true;
611 if (jj_scan_token(NAME)) return true;
612 return false;
613 }
614
615 private boolean jj_3_20() {
616 if (jj_scan_token(STAR)) return true;
617 return false;
618 }
619
620 private boolean jj_3_1() {
621 if (jj_scan_token(NAME)) return true;
622 if (jj_scan_token(SEP_ALIAS)) return true;
623 return false;
624 }
625
626 private boolean jj_3_19() {
627 if (jj_scan_token(STAR)) return true;
628 return false;
629 }
630
631 private boolean jj_3_22() {
632 if (jj_scan_token(STAR)) return true;
633 return false;
634 }
635
636 private boolean jj_3R_4() {
637 if (jj_scan_token(NAME)) return true;
638 Token xsp;
639 while (true) {
640 xsp = jj_scanpos;
641 if (jj_3_25()) { jj_scanpos = xsp; break; }
642 }
643 return false;
644 }
645
646
647 public BaseUrlParserTokenManager token_source;
648 JavaCharStream jj_input_stream;
649
650 public Token token;
651
652 public Token jj_nt;
653 private int jj_ntk;
654 private Token jj_scanpos, jj_lastpos;
655 private int jj_la;
656 private int jj_gen;
657 final private int[] jj_la1 = new int[0];
658 static private int[] jj_la1_0;
659 static {
660 jj_la1_init_0();
661 }
662 private static void jj_la1_init_0() {
663 jj_la1_0 = new int[] {};
664 }
665 final private JJCalls[] jj_2_rtns = new JJCalls[29];
666 private boolean jj_rescan = false;
667 private int jj_gc = 0;
668
669
670 public BaseUrlParser(java.io.InputStream stream) {
671 this(stream, null);
672 }
673
674 public BaseUrlParser(java.io.InputStream stream, String encoding) {
675 try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
676 token_source = new BaseUrlParserTokenManager(jj_input_stream);
677 token = new Token();
678 jj_ntk = -1;
679 jj_gen = 0;
680 for (int i = 0; i < 0; i++) jj_la1[i] = -1;
681 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
682 }
683
684
685 public void ReInit(java.io.InputStream stream) {
686 ReInit(stream, null);
687 }
688
689 public void ReInit(java.io.InputStream stream, String encoding) {
690 try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
691 token_source.ReInit(jj_input_stream);
692 token = new Token();
693 jj_ntk = -1;
694 jj_gen = 0;
695 for (int i = 0; i < 0; i++) jj_la1[i] = -1;
696 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
697 }
698
699
700 public BaseUrlParser(java.io.Reader stream) {
701 jj_input_stream = new JavaCharStream(stream, 1, 1);
702 token_source = new BaseUrlParserTokenManager(jj_input_stream);
703 token = new Token();
704 jj_ntk = -1;
705 jj_gen = 0;
706 for (int i = 0; i < 0; i++) jj_la1[i] = -1;
707 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
708 }
709
710
711 public void ReInit(java.io.Reader stream) {
712 jj_input_stream.ReInit(stream, 1, 1);
713 token_source.ReInit(jj_input_stream);
714 token = new Token();
715 jj_ntk = -1;
716 jj_gen = 0;
717 for (int i = 0; i < 0; i++) jj_la1[i] = -1;
718 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
719 }
720
721
722 public BaseUrlParser(BaseUrlParserTokenManager tm) {
723 token_source = tm;
724 token = new Token();
725 jj_ntk = -1;
726 jj_gen = 0;
727 for (int i = 0; i < 0; i++) jj_la1[i] = -1;
728 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
729 }
730
731
732 public void ReInit(BaseUrlParserTokenManager tm) {
733 token_source = tm;
734 token = new Token();
735 jj_ntk = -1;
736 jj_gen = 0;
737 for (int i = 0; i < 0; i++) jj_la1[i] = -1;
738 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
739 }
740
741 private Token jj_consume_token(int kind) throws ParseException {
742 Token oldToken;
743 if ((oldToken = token).next != null) token = token.next;
744 else token = token.next = token_source.getNextToken();
745 jj_ntk = -1;
746 if (token.kind == kind) {
747 jj_gen++;
748 if (++jj_gc > 100) {
749 jj_gc = 0;
750 for (int i = 0; i < jj_2_rtns.length; i++) {
751 JJCalls c = jj_2_rtns[i];
752 while (c != null) {
753 if (c.gen < jj_gen) c.first = null;
754 c = c.next;
755 }
756 }
757 }
758 return token;
759 }
760 token = oldToken;
761 jj_kind = kind;
762 throw generateParseException();
763 }
764
765 static private final class LookaheadSuccess extends java.lang.Error { }
766 final private LookaheadSuccess jj_ls = new LookaheadSuccess();
767 private boolean jj_scan_token(int kind) {
768 if (jj_scanpos == jj_lastpos) {
769 jj_la--;
770 if (jj_scanpos.next == null) {
771 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
772 } else {
773 jj_lastpos = jj_scanpos = jj_scanpos.next;
774 }
775 } else {
776 jj_scanpos = jj_scanpos.next;
777 }
778 if (jj_rescan) {
779 int i = 0; Token tok = token;
780 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
781 if (tok != null) jj_add_error_token(kind, i);
782 }
783 if (jj_scanpos.kind != kind) return true;
784 if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
785 return false;
786 }
787
788
789
790 final public Token getNextToken() {
791 if (token.next != null) token = token.next;
792 else token = token.next = token_source.getNextToken();
793 jj_ntk = -1;
794 jj_gen++;
795 return token;
796 }
797
798
799 final public Token getToken(int index) {
800 Token t = token;
801 for (int i = 0; i < index; i++) {
802 if (t.next != null) t = t.next;
803 else t = t.next = token_source.getNextToken();
804 }
805 return t;
806 }
807
808 private int jj_ntk() {
809 if ((jj_nt=token.next) == null)
810 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
811 else
812 return (jj_ntk = jj_nt.kind);
813 }
814
815 private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
816 private int[] jj_expentry;
817 private int jj_kind = -1;
818 private int[] jj_lasttokens = new int[100];
819 private int jj_endpos;
820
821 private void jj_add_error_token(int kind, int pos) {
822 if (pos >= 100) return;
823 if (pos == jj_endpos + 1) {
824 jj_lasttokens[jj_endpos++] = kind;
825 } else if (jj_endpos != 0) {
826 jj_expentry = new int[jj_endpos];
827 for (int i = 0; i < jj_endpos; i++) {
828 jj_expentry[i] = jj_lasttokens[i];
829 }
830 jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
831 int[] oldentry = (int[])(it.next());
832 if (oldentry.length == jj_expentry.length) {
833 for (int i = 0; i < jj_expentry.length; i++) {
834 if (oldentry[i] != jj_expentry[i]) {
835 continue jj_entries_loop;
836 }
837 }
838 jj_expentries.add(jj_expentry);
839 break jj_entries_loop;
840 }
841 }
842 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
843 }
844 }
845
846
847 public ParseException generateParseException() {
848 jj_expentries.clear();
849 boolean[] la1tokens = new boolean[19];
850 if (jj_kind >= 0) {
851 la1tokens[jj_kind] = true;
852 jj_kind = -1;
853 }
854 for (int i = 0; i < 0; i++) {
855 if (jj_la1[i] == jj_gen) {
856 for (int j = 0; j < 32; j++) {
857 if ((jj_la1_0[i] & (1<<j)) != 0) {
858 la1tokens[j] = true;
859 }
860 }
861 }
862 }
863 for (int i = 0; i < 19; i++) {
864 if (la1tokens[i]) {
865 jj_expentry = new int[1];
866 jj_expentry[0] = i;
867 jj_expentries.add(jj_expentry);
868 }
869 }
870 jj_endpos = 0;
871 jj_rescan_token();
872 jj_add_error_token(0, 0);
873 int[][] exptokseq = new int[jj_expentries.size()][];
874 for (int i = 0; i < jj_expentries.size(); i++) {
875 exptokseq[i] = jj_expentries.get(i);
876 }
877 return new ParseException(token, exptokseq, tokenImage);
878 }
879
880
881 final public void enable_tracing() {
882 }
883
884
885 final public void disable_tracing() {
886 }
887
888 private void jj_rescan_token() {
889 jj_rescan = true;
890 for (int i = 0; i < 29; i++) {
891 try {
892 JJCalls p = jj_2_rtns[i];
893 do {
894 if (p.gen > jj_gen) {
895 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
896 switch (i) {
897 case 0: jj_3_1(); break;
898 case 1: jj_3_2(); break;
899 case 2: jj_3_3(); break;
900 case 3: jj_3_4(); break;
901 case 4: jj_3_5(); break;
902 case 5: jj_3_6(); break;
903 case 6: jj_3_7(); break;
904 case 7: jj_3_8(); break;
905 case 8: jj_3_9(); break;
906 case 9: jj_3_10(); break;
907 case 10: jj_3_11(); break;
908 case 11: jj_3_12(); break;
909 case 12: jj_3_13(); break;
910 case 13: jj_3_14(); break;
911 case 14: jj_3_15(); break;
912 case 15: jj_3_16(); break;
913 case 16: jj_3_17(); break;
914 case 17: jj_3_18(); break;
915 case 18: jj_3_19(); break;
916 case 19: jj_3_20(); break;
917 case 20: jj_3_21(); break;
918 case 21: jj_3_22(); break;
919 case 22: jj_3_23(); break;
920 case 23: jj_3_24(); break;
921 case 24: jj_3_25(); break;
922 case 25: jj_3_26(); break;
923 case 26: jj_3_27(); break;
924 case 27: jj_3_28(); break;
925 case 28: jj_3_29(); break;
926 }
927 }
928 p = p.next;
929 } while (p != null);
930 } catch(LookaheadSuccess ls) { }
931 }
932 jj_rescan = false;
933 }
934
935 private void jj_save(int index, int xla) {
936 JJCalls p = jj_2_rtns[index];
937 while (p.gen > jj_gen) {
938 if (p.next == null) { p = p.next = new JJCalls(); break; }
939 p = p.next;
940 }
941 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
942 }
943
944 static final class JJCalls {
945 int gen;
946 Token first;
947 int arg;
948 JJCalls next;
949 }
950
951 }