KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > JSci > maths > symbolic > ExpressionParser


1 /* Generated By:JavaCC: Do not edit this line. ExpressionParser.java */
2 package JSci.maths.symbolic;
3
4 import JSci.maths.*;
5 import JSci.maths.fields.*;
6 import JSci.maths.groups.*;
7
8 import java.io.*;
9 import java.util.*;
10
11 /** This class has some static methods to create an Expression from
12  * a string or a text stream. */

13 public class ExpressionParser implements ExpressionParserConstants {
14
15   private static ExpressionParser parser=null;
16
17   private static Map variables;
18
19   /** Create an Expression reading a text from a stream. The text can
20    * be something like "x+y*sin(z)".
21    * @param is a stream
22    * @param vars a Map name / variable; it can
23    * contain some of the variable names.
24    * @return the Expression
25    */

26   public synchronized static Expression parse(InputStream is,Map vars) throws ParseException {
27     variables=vars;
28     if (variables==null) variables=new Hashtable();
29     if (parser==null) parser = new ExpressionParser(is);
30     else parser.ReInit(is);
31     return parser.Input();
32   }
33
34   /** Create an Expression from a String like "x+y*sin(z)".
35    * @param s a string
36    * @param vars a Map name / variable; it can
37    * contain some of the variable names.
38    * @return the Expression
39    */

40   public static Expression parse(String JavaDoc s,Map vars) throws ParseException {
41     InputStream i=new ByteArrayInputStream(s.getBytes());
42     return parse(i,vars);
43   }
44
45   /** Create an Expression from a String like "x+y*sin(z)".
46    * Variables are not accessible.
47    * @param s a string
48    * @return the Expression
49    */

50   public static Expression parse(String JavaDoc s) throws ParseException {
51     InputStream i=new ByteArrayInputStream(s.getBytes());
52     return parse(i,null);
53   }
54
55   /** Create an Expression reading a text from a stream. The text can
56    * be something like "x+y*sin(z)". Variables are not accessible.
57    * @param is a stream
58    * @return the Expression
59    */

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