KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > tools > scriptengine > core > DjScriptParserEngine


1 /* Generated By:JJTree&JavaCC: Do not edit this line. DjScriptParserEngine.java */
2 package com.genimen.djeneric.tools.scriptengine.core;
3
4 import java.io.ByteArrayInputStream JavaDoc;
5 import java.io.UnsupportedEncodingException JavaDoc;
6 import java.util.ArrayList JavaDoc;
7
8 import com.genimen.djeneric.tools.scriptengine.core.nodes.ActionListNode;
9 import com.genimen.djeneric.tools.scriptengine.core.nodes.ActionNode;
10 import com.genimen.djeneric.tools.scriptengine.core.nodes.AndOrNode;
11 import com.genimen.djeneric.tools.scriptengine.core.nodes.ArgumentsNode;
12 import com.genimen.djeneric.tools.scriptengine.core.nodes.AssignmentStatementNode;
13 import com.genimen.djeneric.tools.scriptengine.core.nodes.BodyNode;
14 import com.genimen.djeneric.tools.scriptengine.core.nodes.BoolNode;
15 import com.genimen.djeneric.tools.scriptengine.core.nodes.CalculatedExpressionNode;
16 import com.genimen.djeneric.tools.scriptengine.core.nodes.CharNode;
17 import com.genimen.djeneric.tools.scriptengine.core.nodes.ChooseNode;
18 import com.genimen.djeneric.tools.scriptengine.core.nodes.ConstructorNode;
19 import com.genimen.djeneric.tools.scriptengine.core.nodes.ControllerNode;
20 import com.genimen.djeneric.tools.scriptengine.core.nodes.CustomPanelStatementNode;
21 import com.genimen.djeneric.tools.scriptengine.core.nodes.DeclarationNode;
22 import com.genimen.djeneric.tools.scriptengine.core.nodes.DeleteStatementNode;
23 import com.genimen.djeneric.tools.scriptengine.core.nodes.DispatchNode;
24 import com.genimen.djeneric.tools.scriptengine.core.nodes.EditStatementNode;
25 import com.genimen.djeneric.tools.scriptengine.core.nodes.ElseNode;
26 import com.genimen.djeneric.tools.scriptengine.core.nodes.EventDefinitionNode;
27 import com.genimen.djeneric.tools.scriptengine.core.nodes.EventMappingNode;
28 import com.genimen.djeneric.tools.scriptengine.core.nodes.ExpressionNode;
29 import com.genimen.djeneric.tools.scriptengine.core.nodes.FailStatementNode;
30 import com.genimen.djeneric.tools.scriptengine.core.nodes.FloatNode;
31 import com.genimen.djeneric.tools.scriptengine.core.nodes.ForNode;
32 import com.genimen.djeneric.tools.scriptengine.core.nodes.IfNode;
33 import com.genimen.djeneric.tools.scriptengine.core.nodes.IntegerNode;
34 import com.genimen.djeneric.tools.scriptengine.core.nodes.JavaStatementNode;
35 import com.genimen.djeneric.tools.scriptengine.core.nodes.NewNode;
36 import com.genimen.djeneric.tools.scriptengine.core.nodes.NullNode;
37 import com.genimen.djeneric.tools.scriptengine.core.nodes.OperatorNode;
38 import com.genimen.djeneric.tools.scriptengine.core.nodes.OqlFilterNode;
39 import com.genimen.djeneric.tools.scriptengine.core.nodes.OrderByNode;
40 import com.genimen.djeneric.tools.scriptengine.core.nodes.PropertyOrFunctionNode;
41 import com.genimen.djeneric.tools.scriptengine.core.nodes.PropertyPathNode;
42 import com.genimen.djeneric.tools.scriptengine.core.nodes.ScriptNode;
43 import com.genimen.djeneric.tools.scriptengine.core.nodes.SetNode;
44 import com.genimen.djeneric.tools.scriptengine.core.nodes.StringNode;
45 import com.genimen.djeneric.tools.scriptengine.core.nodes.SubExpressionNode;
46 import com.genimen.djeneric.tools.scriptengine.core.nodes.SubScriptStatementNode;
47 import com.genimen.djeneric.tools.scriptengine.core.nodes.TerminateStatementNode;
48 import com.genimen.djeneric.tools.scriptengine.core.nodes.TraceStatementNode;
49 import com.genimen.djeneric.tools.scriptengine.core.nodes.TransactionalStatementNode;
50 import com.genimen.djeneric.tools.scriptengine.core.nodes.ValueExpression;
51 import com.genimen.djeneric.tools.scriptengine.core.util.TreeNormalizer;
52
53 public class DjScriptParserEngine
54 /*@bgen(jjtree)*/implements DjScriptParserEngineTreeConstants, DjScriptParserEngineConstants
55 {/*@bgen(jjtree)*/
56   protected JJTDjScriptParserEngineState jjtree = new JJTDjScriptParserEngineState();
57
58   public DjScriptParserEngine(String JavaDoc src) throws UnsupportedEncodingException JavaDoc
59   {
60     this(new ByteArrayInputStream JavaDoc(src.getBytes("UTF8")));
61   }
62
63   public Node getRootNode()
64   {
65     return jjtree.rootNode();
66   }
67
68   public ScriptNode getTree() throws UnsupportedEncodingException JavaDoc, ParseException
69   {
70     return getTree(true);
71   }
72
73   public ScriptNode getTree(boolean normalize) throws UnsupportedEncodingException JavaDoc, ParseException
74   {
75     ScriptNode root = (ScriptNode) buildTree();
76     if (normalize)
77     {
78       TreeNormalizer norm = new TreeNormalizer();
79       norm.normalize(root);
80     }
81     return root;
82   }
83
84   public ScriptNode getEmbeddedTree() throws UnsupportedEncodingException JavaDoc, ParseException
85   {
86     return getEmbeddedTree(true);
87   }
88
89   public ScriptNode getEmbeddedTree(boolean normalize) throws UnsupportedEncodingException JavaDoc, ParseException
90   {
91     ScriptNode root = (ScriptNode) buildEmbeddedTree();
92     if (normalize)
93     {
94       TreeNormalizer norm = new TreeNormalizer();
95       norm.normalize(root);
96     }
97     return root;
98   }
99
100   public ValueExpression parseExpression() throws UnsupportedEncodingException JavaDoc, ParseException
101   {
102     CalculatedExpressionNode tree = buildCalculatedExpressionTree();
103     TreeNormalizer norm = new TreeNormalizer();
104     SimpleNode root = new SimpleNode(0);
105     root.addChild(tree);
106     norm.normalize(root);
107     return (ValueExpression) (root.getChild(0));
108   }
109
110   /*******************************************************************
111    * DjScript grammar starts here
112    *******************************************************************/

113   final public ScriptNode buildTree() throws ParseException
114   {
115     /*@bgen(jjtree) buildTree */
116     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTBUILDTREE);
117     boolean jjtc000 = true;
118     jjtree.openNodeScope(jjtn000);
119     Token token;
120     ScriptNode modNode = (ScriptNode) jjtn000;
121     try
122     {
123       token = jj_consume_token(SCRIPT);
124       modNode.setLineInfo(token);
125       token = jj_consume_token(IDENTIFIER);
126       modNode.setScriptName(token.image);
127       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
128       {
129         case STRING_LITERAL :
130           token = jj_consume_token(STRING_LITERAL);
131           modNode.setTitle(token.image);
132           break;
133         default :
134           jj_la1[0] = jj_gen;
135           ;
136       }
137       jj_consume_token(LBRACE);
138       ActionList();
139       jj_consume_token(SEMICOLON);
140       jj_consume_token(RBRACE);
141       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
142       {
143         case CONSTRUCTOR :
144           Constructor();
145           break;
146         default :
147           jj_la1[1] = jj_gen;
148           ;
149       }
150       Controller();
151       label_1 : while (true)
152       {
153         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
154         {
155           case ACTION :
156             ;
157             break;
158           default :
159             jj_la1[2] = jj_gen;
160             break label_1;
161         }
162         Action();
163       }
164       jj_consume_token(0);
165       jjtree.closeNodeScope(jjtn000, true);
166       jjtc000 = false;
167       {
168         if (true) return (ScriptNode) jjtn000;
169       }
170     }
171     catch (Throwable JavaDoc jjte000)
172     {
173       if (jjtc000)
174       {
175         jjtree.clearNodeScope(jjtn000);
176         jjtc000 = false;
177       }
178       else
179       {
180         jjtree.popNode();
181       }
182       if (jjte000 instanceof RuntimeException JavaDoc)
183       {
184         {
185           if (true) throw (RuntimeException JavaDoc) jjte000;
186         }
187       }
188       if (jjte000 instanceof ParseException)
189       {
190         {
191           if (true) throw (ParseException) jjte000;
192         }
193       }
194       {
195         if (true) throw (Error JavaDoc) jjte000;
196       }
197     }
198     finally
199     {
200       if (jjtc000)
201       {
202         jjtree.closeNodeScope(jjtn000, true);
203       }
204     }
205     throw new Error JavaDoc("Missing return statement in function");
206   }
207
208   final public ScriptNode buildEmbeddedTree() throws ParseException
209   {
210     /*@bgen(jjtree) buildEmbeddedTree */
211     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTBUILDEMBEDDEDTREE);
212     boolean jjtc000 = true;
213     jjtree.openNodeScope(jjtn000);
214     try
215     {
216       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
217       {
218         case EVENTS :
219           jj_consume_token(EVENTS);
220           jj_consume_token(LBRACE);
221           label_2 : while (true)
222           {
223             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
224             {
225               case IDENTIFIER :
226                 ;
227                 break;
228               default :
229                 jj_la1[3] = jj_gen;
230                 break label_2;
231             }
232             EventDefinition();
233           }
234           jj_consume_token(RBRACE);
235           break;
236         default :
237           jj_la1[4] = jj_gen;
238           ;
239       }
240       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
241       {
242         case CONSTRUCTOR :
243           Constructor();
244           break;
245         default :
246           jj_la1[5] = jj_gen;
247           ;
248       }
249       Controller();
250       label_3 : while (true)
251       {
252         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
253         {
254           case ACTION :
255             ;
256             break;
257           default :
258             jj_la1[6] = jj_gen;
259             break label_3;
260         }
261         Action();
262       }
263       jj_consume_token(0);
264       jjtree.closeNodeScope(jjtn000, true);
265       jjtc000 = false;
266       {
267         if (true) return (ScriptNode) jjtn000;
268       }
269     }
270     catch (Throwable JavaDoc jjte000)
271     {
272       if (jjtc000)
273       {
274         jjtree.clearNodeScope(jjtn000);
275         jjtc000 = false;
276       }
277       else
278       {
279         jjtree.popNode();
280       }
281       if (jjte000 instanceof RuntimeException JavaDoc)
282       {
283         {
284           if (true) throw (RuntimeException JavaDoc) jjte000;
285         }
286       }
287       if (jjte000 instanceof ParseException)
288       {
289         {
290           if (true) throw (ParseException) jjte000;
291         }
292       }
293       {
294         if (true) throw (Error JavaDoc) jjte000;
295       }
296     }
297     finally
298     {
299       if (jjtc000)
300       {
301         jjtree.closeNodeScope(jjtn000, true);
302       }
303     }
304     throw new Error JavaDoc("Missing return statement in function");
305   }
306
307   final public ScriptNode parseDeclarationOnly() throws ParseException
308   {
309     /*@bgen(jjtree) parseDeclarationOnly */
310     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTPARSEDECLARATIONONLY);
311     boolean jjtc000 = true;
312     jjtree.openNodeScope(jjtn000);
313     try
314     {
315       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
316       {
317         case EVENTS :
318           jj_consume_token(EVENTS);
319           jj_consume_token(LBRACE);
320           label_4 : while (true)
321           {
322             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
323             {
324               case IDENTIFIER :
325                 ;
326                 break;
327               default :
328                 jj_la1[7] = jj_gen;
329                 break label_4;
330             }
331             EventDefinition();
332           }
333           jj_consume_token(RBRACE);
334           break;
335         default :
336           jj_la1[8] = jj_gen;
337           ;
338       }
339       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
340       {
341         case SCRIPT :
342           token = jj_consume_token(SCRIPT);
343           token = jj_consume_token(IDENTIFIER);
344           switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
345           {
346             case STRING_LITERAL :
347               token = jj_consume_token(STRING_LITERAL);
348               break;
349             default :
350               jj_la1[9] = jj_gen;
351               ;
352           }
353           jj_consume_token(LBRACE);
354           ActionList();
355           jj_consume_token(SEMICOLON);
356           jj_consume_token(RBRACE);
357           break;
358         default :
359           jj_la1[10] = jj_gen;
360           ;
361       }
362       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
363       {
364         case CONSTRUCTOR :
365           Constructor();
366           break;
367         default :
368           jj_la1[11] = jj_gen;
369           ;
370       }
371       jjtree.closeNodeScope(jjtn000, true);
372       jjtc000 = false;
373       {
374         if (true) return (ScriptNode) jjtn000;
375       }
376     }
377     catch (Throwable JavaDoc jjte000)
378     {
379       if (jjtc000)
380       {
381         jjtree.clearNodeScope(jjtn000);
382         jjtc000 = false;
383       }
384       else
385       {
386         jjtree.popNode();
387       }
388       if (jjte000 instanceof RuntimeException JavaDoc)
389       {
390         {
391           if (true) throw (RuntimeException JavaDoc) jjte000;
392         }
393       }
394       if (jjte000 instanceof ParseException)
395       {
396         {
397           if (true) throw (ParseException) jjte000;
398         }
399       }
400       {
401         if (true) throw (Error JavaDoc) jjte000;
402       }
403     }
404     finally
405     {
406       if (jjtc000)
407       {
408         jjtree.closeNodeScope(jjtn000, true);
409       }
410     }
411     throw new Error JavaDoc("Missing return statement in function");
412   }
413
414   final public CalculatedExpressionNode buildCalculatedExpressionTree() throws ParseException
415   {
416     CalculatedExpressionNode node;
417     node = CalculatedExpression();
418     jj_consume_token(0);
419     {
420       if (true) return node;
421     }
422     throw new Error JavaDoc("Missing return statement in function");
423   }
424
425   final public void ActionList() throws ParseException
426   {
427     /*@bgen(jjtree) ActionList */
428     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTACTIONLIST);
429     boolean jjtc000 = true;
430     jjtree.openNodeScope(jjtn000);
431     ActionListNode actionListNode = (ActionListNode) jjtn000;
432     try
433     {
434       token = jj_consume_token(IDENTIFIER);
435       actionListNode.addRootAction(token.image);
436       actionListNode.setLineInfo(token);
437       label_5 : while (true)
438       {
439         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
440         {
441           case COMMA :
442             ;
443             break;
444           default :
445             jj_la1[12] = jj_gen;
446             break label_5;
447         }
448         jj_consume_token(COMMA);
449         token = jj_consume_token(IDENTIFIER);
450         actionListNode.addRootAction(token.image);
451       }
452     }
453     finally
454     {
455       if (jjtc000)
456       {
457         jjtree.closeNodeScope(jjtn000, true);
458       }
459     }
460   }
461
462   final public ActionNode Action() throws ParseException
463   {
464     /*@bgen(jjtree) Action */
465     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTACTION);
466     boolean jjtc000 = true;
467     jjtree.openNodeScope(jjtn000);
468     ActionNode actionNode = (ActionNode) jjtn000;
469     Token token;
470     try
471     {
472       token = jj_consume_token(ACTION);
473       actionNode.setLineInfo(token);
474       token = jj_consume_token(IDENTIFIER);
475       actionNode.setActionName(token.image);
476       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
477       {
478         case STRING_LITERAL :
479           token = jj_consume_token(STRING_LITERAL);
480           actionNode.setTitle(token.image);
481           break;
482         default :
483           jj_la1[13] = jj_gen;
484           ;
485       }
486       Body();
487       jjtree.closeNodeScope(jjtn000, true);
488       jjtc000 = false;
489       {
490         if (true) return actionNode;
491       }
492     }
493     catch (Throwable JavaDoc jjte000)
494     {
495       if (jjtc000)
496       {
497         jjtree.clearNodeScope(jjtn000);
498         jjtc000 = false;
499       }
500       else
501       {
502         jjtree.popNode();
503       }
504       if (jjte000 instanceof RuntimeException JavaDoc)
505       {
506         {
507           if (true) throw (RuntimeException JavaDoc) jjte000;
508         }
509       }
510       if (jjte000 instanceof ParseException)
511       {
512         {
513           if (true) throw (ParseException) jjte000;
514         }
515       }
516       {
517         if (true) throw (Error JavaDoc) jjte000;
518       }
519     }
520     finally
521     {
522       if (jjtc000)
523       {
524         jjtree.closeNodeScope(jjtn000, true);
525       }
526     }
527     throw new Error JavaDoc("Missing return statement in function");
528   }
529
530   final public ConstructorNode Constructor() throws ParseException
531   {
532     /*@bgen(jjtree) Constructor */
533     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTCONSTRUCTOR);
534     boolean jjtc000 = true;
535     jjtree.openNodeScope(jjtn000);
536     ConstructorNode constructorNode = (ConstructorNode) jjtn000;
537     Token token;
538     try
539     {
540       token = jj_consume_token(CONSTRUCTOR);
541       constructorNode.setLineInfo(token);
542       Body();
543       jjtree.closeNodeScope(jjtn000, true);
544       jjtc000 = false;
545       {
546         if (true) return constructorNode;
547       }
548     }
549     catch (Throwable JavaDoc jjte000)
550     {
551       if (jjtc000)
552       {
553         jjtree.clearNodeScope(jjtn000);
554         jjtc000 = false;
555       }
556       else
557       {
558         jjtree.popNode();
559       }
560       if (jjte000 instanceof RuntimeException JavaDoc)
561       {
562         {
563           if (true) throw (RuntimeException JavaDoc) jjte000;
564         }
565       }
566       if (jjte000 instanceof ParseException)
567       {
568         {
569           if (true) throw (ParseException) jjte000;
570         }
571       }
572       {
573         if (true) throw (Error JavaDoc) jjte000;
574       }
575     }
576     finally
577     {
578       if (jjtc000)
579       {
580         jjtree.closeNodeScope(jjtn000, true);
581       }
582     }
583     throw new Error JavaDoc("Missing return statement in function");
584   }
585
586   final public void Controller() throws ParseException
587   {
588     /*@bgen(jjtree) Controller */
589     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTCONTROLLER);
590     boolean jjtc000 = true;
591     jjtree.openNodeScope(jjtn000);
592     ControllerNode controllerNode = (ControllerNode) jjtn000;
593     Token token;
594     try
595     {
596       token = jj_consume_token(CONTROLLER);
597       controllerNode.setLineInfo(token);
598       jj_consume_token(LBRACE);
599       label_6 : while (true)
600       {
601         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
602         {
603           case IDENTIFIER :
604           case STAR :
605             ;
606             break;
607           default :
608             jj_la1[14] = jj_gen;
609             break label_6;
610         }
611         EventMapping();
612       }
613       jj_consume_token(RBRACE);
614     }
615     catch (Throwable JavaDoc jjte000)
616     {
617       if (jjtc000)
618       {
619         jjtree.clearNodeScope(jjtn000);
620         jjtc000 = false;
621       }
622       else
623       {
624         jjtree.popNode();
625       }
626       if (jjte000 instanceof RuntimeException JavaDoc)
627       {
628         {
629           if (true) throw (RuntimeException JavaDoc) jjte000;
630         }
631       }
632       if (jjte000 instanceof ParseException)
633       {
634         {
635           if (true) throw (ParseException) jjte000;
636         }
637       }
638       {
639         if (true) throw (Error JavaDoc) jjte000;
640       }
641     }
642     finally
643     {
644       if (jjtc000)
645       {
646         jjtree.closeNodeScope(jjtn000, true);
647       }
648     }
649   }
650
651   final public EventMappingNode EventMapping() throws ParseException
652   {
653     /*@bgen(jjtree) EventMapping */
654     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTEVENTMAPPING);
655     boolean jjtc000 = true;
656     jjtree.openNodeScope(jjtn000);
657     Token token;
658     EventMappingNode mappingNode = (EventMappingNode) jjtn000;
659     String JavaDoc rs;
660     try
661     {
662       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
663       {
664         case IDENTIFIER :
665           token = jj_consume_token(IDENTIFIER);
666           break;
667         case STAR :
668           token = jj_consume_token(STAR);
669           break;
670         default :
671           jj_la1[15] = jj_gen;
672           jj_consume_token(-1);
673           throw new ParseException();
674       }
675       mappingNode.setLineInfo(token);
676       rs = token.image;
677       label_7 : while (true)
678       {
679         if (jj_2_1(2))
680         {
681           ;
682         }
683         else
684         {
685           break label_7;
686         }
687         jj_consume_token(DOT);
688         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
689         {
690           case IDENTIFIER :
691             token = jj_consume_token(IDENTIFIER);
692             break;
693           case STAR :
694             token = jj_consume_token(STAR);
695             break;
696           default :
697             jj_la1[16] = jj_gen;
698             jj_consume_token(-1);
699             throw new ParseException();
700         }
701         rs += "." + token.image;
702       }
703       jj_consume_token(MAPPING);
704       token = jj_consume_token(IDENTIFIER);
705       mappingNode.addAction(token.image);
706       label_8 : while (true)
707       {
708         if (jj_2_2(2))
709         {
710           ;
711         }
712         else
713         {
714           break label_8;
715         }
716         jj_consume_token(COMMA);
717         token = jj_consume_token(IDENTIFIER);
718         mappingNode.addAction(token.image);
719       }
720       jj_consume_token(SEMICOLON);
721       jjtree.closeNodeScope(jjtn000, true);
722       jjtc000 = false;
723       mappingNode.setPath(rs);
724       {
725         if (true) return mappingNode;
726       }
727     }
728     finally
729     {
730       if (jjtc000)
731       {
732         jjtree.closeNodeScope(jjtn000, true);
733       }
734     }
735     throw new Error JavaDoc("Missing return statement in function");
736   }
737
738   final public BodyNode Body() throws ParseException
739   {
740     /*@bgen(jjtree) Body */
741     SimpleNode jjtn000 = (SimpleNode) SimpleNode.jjtCreate(JJTBODY);
742     boolean jjtc000 = true;
743     jjtree.openNodeScope(jjtn000);
744     BodyNode bodyNode = (BodyNode) jjtn000;
745     try
746     {
747       jj_consume_token(LBRACE);
748       label_9 : while (true)
749       {
750         if (jj_2_3(2))
751         {
752           ;
753         }
754         else
755         {
756           break label_9;
757         }
758         Statement();
759       }
760       jj_consume_token(RBRACE);
761       jjtree.closeNodeScope(jjtn000, true);
762       jjtc000 = false;
763       {
764         if (true) return bodyNode;
765       }
766     }
767     catch (Throwable JavaDoc jjte000)
768     {
769       if (jjtc000)
770       {
771         jjtree.clearNodeScope(jjtn000);
772         jjtc000 = false;
773       }
774       else
775       {
776         jjtree.popNode();
777       }
778       if (jjte000 instanceof RuntimeException JavaDoc)
779       {
780         {
781           if (true) throw (RuntimeException JavaDoc) jjte000;
782         }
783       }
784       if (jjte000 instanceof ParseException)
785       {
786         {
787           if (true) throw (ParseException) jjte000;
788         }
789       }
790       {
791         if (true) throw (Error JavaDoc) jjte000;
792       }
793     }
794     finally
795     {
796       if (jjtc000)
797       {
798         jjtree.closeNodeScope(jjtn000, true);
799       }
800     }
801     throw new Error JavaDoc("Missing return statement in function");
802   }
803
804   final public void Statement() throws ParseException
805   {
806     if (jj_2_4(2))
807     {
808       Declaration();
809     }
810     else
811     {
812       switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
813       {
814         case SET :
815           SetStatement();
816           break;
817         case DELETE :
818           DeleteStatement();
819           break;
820         case COMMIT :
821         case ROLLBACK :
822           TransactionalStatement();
823           break;
824         case FAIL :
825           FailStatement();
826           break;
827         case TERMINATE :
828           TerminateStatement();
829           break;
830         case TRACE :
831           TraceStatement();
832           break;
833         case DISPATCH :
834           Dispatch();
835           break;
836         case SUBSCRIPT :
837           SubScriptStatement();
838           break;
839         default :
840           jj_la1[17] = jj_gen;
841           if (jj_2_5(5))
842           {
843             AssignmentStatement();
844           }
845           else if (jj_2_6(5))
846           {
847             FunctionCall();
848           }
849           else
850           {
851             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
852             {
853               case FOR :
854                 ForStatement();
855                 break;
856               case IF :
857                 IfStatement();
858                 break;
859               case ELSE :