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