View Javadoc

1   /* Generated By:JavaCC: Do not edit this line. BaseUrlParser.java */
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; /* reset tokens for next dir */
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   /** Generated Token Manager. */
647   public BaseUrlParserTokenManager token_source;
648   JavaCharStream jj_input_stream;
649   /** Current token. */
650   public Token token;
651   /** Next token. */
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   /** Constructor with InputStream. */
670   public BaseUrlParser(java.io.InputStream stream) {
671      this(stream, null);
672   }
673   /** Constructor with InputStream and supplied encoding */
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   /** Reinitialise. */
685   public void ReInit(java.io.InputStream stream) {
686      ReInit(stream, null);
687   }
688   /** Reinitialise. */
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   /** Constructor. */
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   /** Reinitialise. */
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   /** Constructor with generated Token Manager. */
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   /** Reinitialise. */
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 /** Get the next Token. */
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 /** Get the specific Token. */
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   /** Generate ParseException. */
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   /** Enable tracing. */
881   final public void enable_tracing() {
882   }
883 
884   /** Disable tracing. */
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 }