View Javadoc

1   /* Generated By:JavaCC: Do not edit this line. Parser.java */
2   package zeus.concepts;
3   
4   import java.util.*;
5   import java.io.*;
6   import java.lang.reflect.*;
7   import zeus.util.*;
8   import zeus.concepts.fn.*;
9   import zeus.generator.code.*;
10  import zeus.generator.*;
11  import zeus.rete.Action;
12  import zeus.rete.Pattern;
13  import zeus.rete.Rule;
14  import zeus.rete.ReteFact;
15  
16  public class Parser implements ParserConstants {
17  
18    final public void end_of_file() throws ParseException {
19      jj_consume_token(0);
20    }
21  
22    final public AbilityDbItem abilityDbItem(OntologyDb db) throws ParseException {
23  Token t;
24  AbilitySpec a;
25      jj_consume_token(LBRACKET);
26      jj_consume_token(AGENT);
27      t = jj_consume_token(ID);
28      jj_consume_token(ABILITY);
29      a = abilitySpec(db);
30      jj_consume_token(RBRACKET);
31       {if (true) return new AbilityDbItem(t.image,a);}
32      throw new Error("Missing return statement in function");
33    }
34  
35    final public Vector abilityDbItemList(OntologyDb db) throws ParseException {
36  Vector result = new Vector();
37  AbilityDbItem a = null;
38      label_1:
39      while (true) {
40        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
41        case LBRACKET:
42          ;
43          break;
44        default:
45          jj_la1[0] = jj_gen;
46          break label_1;
47        }
48        a = abilityDbItem(db);
49        result.addElement(a);
50      }
51      {if (true) return result;}
52      throw new Error("Missing return statement in function");
53    }
54  
55    final public AbilitySpec abilitySpec(OntologyDb db) throws ParseException {
56  Fact f;
57  Token t,n;
58  double c;
59      jj_consume_token(LBRACKET);
60      jj_consume_token(FACT);
61      f = fact(db);
62      jj_consume_token(TIME);
63      t = jj_consume_token(INTEGER);
64      jj_consume_token(COST);
65      c = Real();
66      jj_consume_token(NAME);
67      n = jj_consume_token(ID);
68      jj_consume_token(RBRACKET);
69       {if (true) return new AbilitySpec(n.image,f,Integer.parseInt(t.image),c);}
70      throw new Error("Missing return statement in function");
71    }
72  
73    final public Vector abilitySpecList(OntologyDb db) throws ParseException {
74  Vector result = new Vector();
75  AbilitySpec a = null;
76      label_2:
77      while (true) {
78        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
79        case LBRACKET:
80          ;
81          break;
82        default:
83          jj_la1[1] = jj_gen;
84          break label_2;
85        }
86        a = abilitySpec(db);
87        result.addElement(a);
88      }
89      {if (true) return result;}
90      throw new Error("Missing return statement in function");
91    }
92  
93    final public Restriction restriction(OntologyDb db) throws ParseException {
94  Token taskName, factName, attributeName, attributeValue;
95      jj_consume_token(LBRACKET);
96      jj_consume_token(TASK);
97      taskName = jj_consume_token(ID);
98      jj_consume_token(FACT);
99      factName = jj_consume_token(VARIABLE);
100     jj_consume_token(ATTRIBUTE);
101     attributeName = jj_consume_token(ID);
102     jj_consume_token(VALUE);
103     attributeValue = jj_consume_token(LITERAL);
104     jj_consume_token(RBRACKET);
105         Restriction r = new Restriction(taskName.image, factName.image,
106                                         attributeName.image,
107                                         attributeValue.image);
108         {if (true) return (r);}
109     throw new Error("Missing return statement in function");
110   }
111 
112   final public Acquaintance acquaintance(OntologyDb db) throws ParseException {
113 Token name, relation;
114 AbilitySpec a;
115 Vector data = new Vector();
116     jj_consume_token(LBRACKET);
117     jj_consume_token(NAME);
118     name = jj_consume_token(ID);
119     jj_consume_token(RELATION);
120     relation = jj_consume_token(ID);
121     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
122     case ABILITIES:
123       jj_consume_token(ABILITIES);
124       jj_consume_token(LBRACKET);
125       label_3:
126       while (true) {
127         a = abilitySpec(db);
128            data.addElement(a);
129         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
130         case LBRACKET:
131           ;
132           break;
133         default:
134           jj_la1[2] = jj_gen;
135           break label_3;
136         }
137       }
138       jj_consume_token(RBRACKET);
139       break;
140     default:
141       jj_la1[3] = jj_gen;
142       ;
143     }
144     jj_consume_token(RBRACKET);
145      {if (true) return new Acquaintance(name.image,relation.image,data);}
146     throw new Error("Missing return statement in function");
147   }
148 
149   final public Address address() throws ParseException {
150 Token name, host, port, type;
151     jj_consume_token(LBRACKET);
152     jj_consume_token(NAME);
153     name = jj_consume_token(ID);
154     jj_consume_token(HOST);
155     host = jj_consume_token(LITERAL);
156     jj_consume_token(PORT);
157     port = jj_consume_token(INTEGER);
158     jj_consume_token(TYPE);
159     type = jj_consume_token(ID);
160     jj_consume_token(RBRACKET);
161      {if (true) return new ZeusAddress(name.image,
162         Misc.literalToString(host.image),
163         Integer.parseInt(port.image),type.image);}
164     throw new Error("Missing return statement in function");
165   }
166 
167   final public Vector addressList() throws ParseException {
168 Vector result = new Vector();
169 Address a = null;
170     label_4:
171     while (true) {
172       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
173       case LBRACKET:
174         ;
175         break;
176       default:
177         jj_la1[4] = jj_gen;
178         break label_4;
179       }
180       a = address();
181       result.addElement(a);
182     }
183     {if (true) return result;}
184     throw new Error("Missing return statement in function");
185   }
186 
187   final public AgentDescription agentDescription(OntologyDb db) throws ParseException {
188 Token name, xclass, width, length, book;
189 Vector tasks = new Vector();
190 Vector protocols = new Vector();
191 Vector acquaintances = new Vector();
192 Vector facts = new Vector();
193 Vector restrictions = new Vector();
194 Token t = null;
195 Acquaintance a = null;
196 ProtocolInfo p = null;
197 Fact f = null;
198 Restriction r = null;
199     jj_consume_token(LBRACKET);
200     jj_consume_token(NAME);
201     name = jj_consume_token(ID);
202     jj_consume_token(CLASS);
203     xclass = jj_consume_token(ID);
204     jj_consume_token(PLANNER_WIDTH);
205     width = jj_consume_token(INTEGER);
206     jj_consume_token(PLANNER_LENGTH);
207     length = jj_consume_token(INTEGER);
208     jj_consume_token(DOUBLE_BOOK_FRACTION);
209     book = jj_consume_token(INTEGER);
210     if (jj_2_1(2)) {
211       jj_consume_token(TASKS);
212       jj_consume_token(LBRACKET);
213       label_5:
214       while (true) {
215         t = jj_consume_token(ID);
216              tasks.addElement(t.image);
217         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
218         case ID:
219           ;
220           break;
221         default:
222           jj_la1[5] = jj_gen;
223           break label_5;
224         }
225       }
226       jj_consume_token(RBRACKET);
227     } else {
228       ;
229     }
230     if (jj_2_2(2)) {
231       jj_consume_token(INITIAL_FACTS);
232       jj_consume_token(LBRACKET);
233       label_6:
234       while (true) {
235         f = fact(db);
236             facts.addElement(f);
237         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
238         case LBRACKET:
239           ;
240           break;
241         default:
242           jj_la1[6] = jj_gen;
243           break label_6;
244         }
245       }
246       jj_consume_token(RBRACKET);
247     } else {
248       ;
249     }
250     if (jj_2_3(2)) {
251       jj_consume_token(PROTOCOLS);
252       jj_consume_token(LBRACKET);
253       label_7:
254       while (true) {
255         p = protocolInfo(db);
256             protocols.addElement(p);
257         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
258         case LBRACKET:
259           ;
260           break;
261         default:
262           jj_la1[7] = jj_gen;
263           break label_7;
264         }
265       }
266       jj_consume_token(RBRACKET);
267     } else {
268       ;
269     }
270     if (jj_2_4(2)) {
271       jj_consume_token(ACQUAINTANCES);
272       jj_consume_token(LBRACKET);
273       label_8:
274       while (true) {
275         a = acquaintance(db);
276             acquaintances.addElement(a);
277         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
278         case LBRACKET:
279           ;
280           break;
281         default:
282           jj_la1[8] = jj_gen;
283           break label_8;
284         }
285       }
286       jj_consume_token(RBRACKET);
287     } else {
288       ;
289     }
290     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
291     case RESTRICTIONS:
292       jj_consume_token(RESTRICTIONS);
293       jj_consume_token(LBRACKET);
294       label_9:
295       while (true) {
296         r = restriction(db);
297             restrictions.addElement (r);
298         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
299         case LBRACKET:
300           ;
301           break;
302         default:
303           jj_la1[9] = jj_gen;
304           break label_9;
305         }
306       }
307       jj_consume_token(RBRACKET);
308       break;
309     default:
310       jj_la1[10] = jj_gen;
311       ;
312     }
313     jj_consume_token(RBRACKET);
314        AgentDescription agent = new AgentDescription();
315        agent.setName(name.image);
316        agent.setAgentClass(xclass.image);
317        agent.setPlannerWidth(Integer.parseInt(width.image));
318        agent.setPlannerLength(Integer.parseInt(length.image));
319        agent.setDoublebookFraction(Integer.parseInt(book.image));
320        agent.setTasks(tasks);
321        agent.setInitialFacts(facts);
322        agent.setProtocols(protocols);
323        agent.setAcquaintances(acquaintances);
324        agent.setRestrictions (restrictions);
325        {if (true) return agent;}
326     throw new Error("Missing return statement in function");
327   }
328 
329   final public ConsumerRecord consumerRecord() throws ParseException {
330 Token p, pid, c, cid, u, k, s, a, b;
331     jj_consume_token(LBRACKET);
332     jj_consume_token(PRODUCER);
333     p = jj_consume_token(ID);
334     jj_consume_token(PRODUCER_ID);
335     pid = jj_consume_token(ID);
336     jj_consume_token(CONSUMER);
337     c = jj_consume_token(ID);
338     jj_consume_token(CONSUMER_ID);
339     cid = jj_consume_token(ID);
340     jj_consume_token(USE_REF);
341     u = jj_consume_token(ID);
342     jj_consume_token(COMMS_KEY);
343     k = jj_consume_token(ID);
344     jj_consume_token(START);
345     s = jj_consume_token(INTEGER);
346     jj_consume_token(AMOUNT);
347     a = jj_consume_token(INTEGER);
348     jj_consume_token(CONSUMED);
349     b = jj_consume_token(BOOLEAN);
350     jj_consume_token(RBRACKET);
351      {if (true) return new ConsumerRecord(p.image,pid.image,
352         c.image,cid.image,u.image,k.image,
353         Integer.parseInt(s.image),Integer.parseInt(a.image),
354         (Boolean.valueOf(b.image)).booleanValue());}
355     throw new Error("Missing return statement in function");
356   }
357 
358   final public Fact fact(OntologyDb db) throws ParseException {
359 Token type, id, mod, attribute;
360 ValueFunction value = null;
361 Fact f = null;
362     jj_consume_token(LBRACKET);
363     jj_consume_token(TYPE);
364     type = jj_consume_token(ID);
365     jj_consume_token(FID);
366     id = jj_consume_token(ID);
367     jj_consume_token(MODIFIERS);
368     mod = jj_consume_token(INTEGER);
369        int modifiers = Integer.parseInt(mod.image);
370        f = db.getFact(Fact.isVariable(modifiers),type.image);
371        f.setModifiers(modifiers);
372        f.setId(id.image);
373     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
374     case ATTRIBUTES:
375       jj_consume_token(ATTRIBUTES);
376       jj_consume_token(LBRACKET);
377       label_10:
378       while (true) {
379         jj_consume_token(LBRACKET);
380         attribute = jj_consume_token(ID);
381         value = Expression(db);
382         jj_consume_token(RBRACKET);
383           f.setValue(attribute.image,value);
384         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
385         case LBRACKET:
386           ;
387           break;
388         default:
389           jj_la1[11] = jj_gen;
390           break label_10;
391         }
392       }
393       jj_consume_token(RBRACKET);
394       break;
395     default:
396       jj_la1[12] = jj_gen;
397       ;
398     }
399     jj_consume_token(RBRACKET);
400     {if (true) return f;}
401     throw new Error("Missing return statement in function");
402   }
403 
404   final public Vector factList(OntologyDb db) throws ParseException {
405 Vector result = new Vector();
406 Fact f = null;
407     label_11:
408     while (true) {
409       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
410       case LBRACKET:
411         ;
412         break;
413       default:
414         jj_la1[13] = jj_gen;
415         break label_11;
416       }
417       f = fact(db);
418       result.addElement(f);
419     }
420     {if (true) return result;}
421     throw new Error("Missing return statement in function");
422   }
423 
424   final public FactSummary factSummary(OntologyDb db) throws ParseException {
425 Fact f;
426 Token t;
427     jj_consume_token(LBRACKET);
428     jj_consume_token(FACT);
429     f = fact(db);
430     jj_consume_token(STATUS);
431     t = jj_consume_token(ID);
432     jj_consume_token(RBRACKET);
433      {if (true) return new FactSummary(f,t.image);}
434     throw new Error("Missing return statement in function");
435   }
436 
437   final public Goal goal(OntologyDb db) throws ParseException {
438 Token id, t, s, e, p, d, lhs, rhs;
439 Goal goal = null;
440 Fact f = null;
441 Vector temp = new Vector();
442 String user_object = null;
443 String user_type = null;
444 ResolutionContext context = null;
445 SuppliedDb given = null;
446 ProducerRecord producer = null;
447 ConsumerRecord consumer = null;
448 double c;
449     jj_consume_token(LBRACKET);
450     jj_consume_token(FID);
451     id = jj_consume_token(ID);
452     jj_consume_token(DESIRED);
453     d = jj_consume_token(ID);
454     jj_consume_token(TYPE);
455     t = jj_consume_token(BOOLEAN);
456     jj_consume_token(FACT);
457     f = fact(db);
458        goal = new Goal((Boolean.valueOf(t.image)).booleanValue(),
459           id.image,f,d.image);
460     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
461     case IMAGE:
462       jj_consume_token(IMAGE);
463       t = jj_consume_token(ID);
464          goal.setImage(t.image);
465       break;
466     default:
467       jj_la1[14] = jj_gen;
468       ;
469     }
470     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
471     case START_TIME:
472       jj_consume_token(START_TIME);
473       s = jj_consume_token(INTEGER);
474          goal.setStartTime(Integer.parseInt(s.image));
475       break;
476     default:
477       jj_la1[15] = jj_gen;
478       ;
479     }
480     jj_consume_token(END_TIME);
481     e = jj_consume_token(INTEGER);
482     jj_consume_token(COST);
483     c = Real();
484     jj_consume_token(PRIORITY);
485     p = jj_consume_token(INTEGER);
486        goal.setEndTime(Integer.parseInt(e.image));
487        goal.setCost(c);
488        goal.setPriority(Integer.parseInt(p.image));
489     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
490     case INVOCATIONS:
491       jj_consume_token(INVOCATIONS);
492       t = jj_consume_token(INTEGER);
493          goal.setInvocations(Integer.parseInt(t.image));
494       break;
495     default:
496       jj_la1[16] = jj_gen;
497       ;
498     }
499     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
500     case ROOT_ID:
501       jj_consume_token(ROOT_ID);
502       t = jj_consume_token(ID);
503          goal.setRootId(t.image);
504       break;
505     default:
506       jj_la1[17] = jj_gen;
507       ;
508     }
509     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
510     case MEDIA:
511       jj_consume_token(MEDIA);
512          temp.removeAllElements();
513       jj_consume_token(LBRACKET);
514       label_12:
515       while (true) {
516         lhs = jj_consume_token(LITERAL);
517         rhs = jj_consume_token(LITERAL);
518            temp.addElement(Misc.literalToString(lhs.image));
519            temp.addElement(Misc.literalToString(rhs.image));
520         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
521         case LITERAL:
522           ;
523           break;
524         default:
525           jj_la1[18] = jj_gen;
526           break label_12;
527         }
528       }
529       jj_consume_token(RBRACKET);
530          String[] array = Misc.stringArray(temp);
531          goal.setTargetMedia(array);
532       break;
533     default:
534       jj_la1[19] = jj_gen;
535       ;
536     }
537     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
538     case REPLY_TIME:
539       jj_consume_token(REPLY_TIME);
540       t = jj_consume_token(REAL);
541          goal.setReplyTime((Double.valueOf(t.image)).doubleValue());
542       break;
543     default:
544       jj_la1[20] = jj_gen;
545       ;
546     }
547     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
548     case CONFIRM_TIME:
549       jj_consume_token(CONFIRM_TIME);
550       t = jj_consume_token(REAL);
551          goal.setConfirmTime((Double.valueOf(t.image)).doubleValue());
552       break;
553     default:
554       jj_la1[21] = jj_gen;
555       ;
556     }
557     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
558     case USER_DATA_TYPE:
559       jj_consume_token(USER_DATA_TYPE);
560       t = jj_consume_token(LITERAL);
561          user_type = Misc.literalToString(t.image);
562          goal.setUserDataType(user_type);
563       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
564       case USER_DATA:
565         jj_consume_token(USER_DATA);
566         t = jj_consume_token(OPAQUE);
567             user_object = Misc.opaqueToString(t.image);
568             try {
569                Class x = Class.forName(user_type);
570                Class[] parameter_types = new Class[1];
571                Object[] arglist = new Object[1];
572                parameter_types[0] = Class.forName("java.lang.String");
573                arglist[0] = user_object;
574 
575                Constructor ct = x.getConstructor(parameter_types);
576                Object user_data = ct.newInstance(arglist);
577                goal.setUserData(user_data);
578             }
579             catch(Throwable err) {
580                Core.USER_ERROR("Error creating user data: " + err);
581             }
582         break;
583       default:
584         jj_la1[22] = jj_gen;
585         ;
586       }
587       break;
588     default:
589       jj_la1[23] = jj_gen;
590       ;
591     }
592     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
593     case CONTEXT:
594       jj_consume_token(CONTEXT);
595       context = resolutionContext(db);
596          goal.setResolutionContext(context);
597       break;
598     default:
599       jj_la1[24] = jj_gen;
600       ;
601     }
602     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
603     case GIVEN:
604       jj_consume_token(GIVEN);
605       jj_consume_token(LBRACKET);
606       given = suppliedDb(db);
607       jj_consume_token(RBRACKET);
608          goal.setSuppliedDb(given);
609       break;
610     default:
611       jj_la1[25] = jj_gen;
612       ;
613     }
614     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
615     case PRODUCER_RECORDS:
616       jj_consume_token(PRODUCER_RECORDS);
617       jj_consume_token(LBRACKET);
618       label_13:
619       while (true) {
620         producer = producerRecord();
621            goal.addProducer(producer);
622         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
623         case LBRACKET:
624           ;
625           break;
626         default:
627           jj_la1[26] = jj_gen;
628           break label_13;
629         }
630       }
631       jj_consume_token(RBRACKET);
632       break;
633     default:
634       jj_la1[27] = jj_gen;
635       ;
636     }
637     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
638     case CONSUMER_RECORDS:
639       jj_consume_token(CONSUMER_RECORDS);
640       jj_consume_token(LBRACKET);
641       label_14:
642       while (true) {
643         consumer = consumerRecord();
644            goal.addConsumer(consumer);
645         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
646         case LBRACKET:
647           ;
648           break;
649         default:
650           jj_la1[28] = jj_gen;
651           break label_14;
652         }
653       }
654       jj_consume_token(RBRACKET);
655       break;
656     default:
657       jj_la1[29] = jj_gen;
658       ;
659     }
660     jj_consume_token(RBRACKET);
661      {if (true) return goal;}
662     throw new Error("Missing return statement in function");
663   }
664 
665   final public Vector goalList(OntologyDb db) throws ParseException {
666 Vector result = new Vector();
667 Goal g = null;
668     label_15:
669     while (true) {
670       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
671       case LBRACKET:
672         ;
673         break;
674       default:
675         jj_la1[30] = jj_gen;
676         break label_15;
677       }
678       g = goal(db);
679       result.addElement(g);
680     }
681     {if (true) return result;}
682     throw new Error("Missing return statement in function");
683   }
684 
685   final public GoalSummary goalSummary() throws ParseException {
686 Token id, type, status, owner, item;
687     jj_consume_token(LBRACKET);
688     jj_consume_token(FID);
689     id = jj_consume_token(ID);
690     jj_consume_token(TYPE);
691     type = jj_consume_token(ID);
692     jj_consume_token(STATUS);
693     status = jj_consume_token(ID);
694     jj_consume_token(OWNER);
695     owner = jj_consume_token(ID);
696     jj_consume_token(ITEM);
697     item = jj_consume_token(ID);
698     jj_consume_token(RBRACKET);
699      {if (true) return new GoalSummary(id.image,type.image,status.image,
700         owner.image,item.image);}
701     throw new Error("Missing return statement in function");
702   }
703 
704   final public ProducerRecord producerRecord() throws ParseException {
705 ProducerRecord record = null;
706 Token s, u, k, p, pid, c, cid;
707     jj_consume_token(LBRACKET);
708     jj_consume_token(SUPPLY_REF);
709     s = jj_consume_token(ID);
710     jj_consume_token(USE_REF);
711     u = jj_consume_token(ID);
712     jj_consume_token(COMMS_KEY);
713     k = jj_consume_token(ID);
714     jj_consume_token(PRODUCER);
715     p = jj_consume_token(ID);
716     jj_consume_token(PRODUCER_ID);
717     pid = jj_consume_token(ID);
718     jj_consume_token(CONSUMER);
719     c = jj_consume_token(ID);
720     jj_consume_token(CONSUMER_ID);
721     cid = jj_consume_token(ID);
722     jj_consume_token(RBRACKET);
723      {if (true) return new ProducerRecord(s.image,u.image,k.image,
724         p.image,pid.image,c.image,cid.image);}
725     throw new Error("Missing return statement in function");
726   }
727 
728   final public ProtocolInfo protocolInfo(OntologyDb db) throws ParseException {
729 StrategyInfo info = null;
730 Vector constraints = new Vector();
731 Token name, type;
732     jj_consume_token(LBRACKET);
733     jj_consume_token(NAME);
734     name = jj_consume_token(LITERAL);
735     jj_consume_token(TYPE);
736     type = jj_consume_token(ID);
737     jj_consume_token(CONSTRAINTS);
738     jj_consume_token(LBRACKET);
739     label_16:
740     while (true) {
741       info = strategyInfo(db);
742          constraints.addElement(info);
743       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
744       case LBRACKET:
745         ;
746         break;
747       default:
748         jj_la1[31] = jj_gen;
749         break label_16;
750       }
751     }
752     jj_consume_token(RBRACKET);
753     jj_consume_token(RBRACKET);
754      {if (true) return new ProtocolInfo(Misc.literalToString(name.image),
755         type.image,constraints);}
756     throw new Error("Missing return statement in function");
757   }
758 
759   final public StrategyInfo strategyInfo(OntologyDb db) throws ParseException {
760 StrategyInfo info = null;
761 Token name, type, key, value;
762 Hashtable param;
763 Vector agents = new Vector();
764 Vector relations = new Vector();
765 Fact f = null;
766 int type_val = StrategyInfo.USE;
767     jj_consume_token(LBRACKET);
768     jj_consume_token(FACT);
769     f = fact(db);
770     jj_consume_token(TYPE);
771     type = jj_consume_token(INTEGER);
772        type_val = Integer.parseInt(type.image);
773        if ( type_val == StrategyInfo.NO_USE )
774           info = new StrategyInfo(f);
775     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
776     case STRATEGY:
777       jj_consume_token(STRATEGY);
778       name = jj_consume_token(LITERAL);
779          info = new StrategyInfo(f,Misc.literalToString(name.image));
780       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
781       case PARAMETERS:
782         jj_consume_token(PARAMETERS);
783         jj_consume_token(LBRACKET);
784            param = new Hashtable();
785         label_17:
786         while (true) {
787           key = jj_consume_token(LITERAL);
788           value = jj_consume_token(LITERAL);
789              param.put(Misc.literalToString(key.image),
790                        Misc.literalToString(value.image));
791           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
792           case LITERAL:
793             ;
794             break;
795           default:
796             jj_la1[32] = jj_gen;
797             break label_17;
798           }
799         }
800         jj_consume_token(RBRACKET);
801            info.setParameters(param);
802         break;
803       default:
804         jj_la1[33] = jj_gen;
805         ;
806       }
807       break;
808     default:
809       jj_la1[34] = jj_gen;
810       ;
811     }
812     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
813     case AGENTS:
814       jj_consume_token(AGENTS);
815       jj_consume_token(LBRACKET);
816       label_18:
817       while (true) {
818         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
819         case ID:
820           ;
821           break;
822         default:
823           jj_la1[35] = jj_gen;
824           break label_18;
825         }
826         name = jj_consume_token(ID);
827              agents.addElement(name.image);
828       }
829       jj_consume_token(RBRACKET);
830          info.setAgents(agents);
831       break;
832     default:
833       jj_la1[36] = jj_gen;
834       ;
835     }
836     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
837     case RELATIONS:
838       jj_consume_token(RELATIONS);
839       jj_consume_token(LBRACKET);
840       label_19:
841       while (true) {
842         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
843         case ID:
844           ;
845           break;
846         default:
847           jj_la1[37] = jj_gen;
848           break label_19;
849         }
850         name = jj_consume_token(ID);
851            relations.addElement(name.image);
852       }
853       jj_consume_token(RBRACKET);
854          info.setRelations(relations);
855       break;
856     default:
857       jj_la1[38] = jj_gen;
858       ;
859     }
860     jj_consume_token(RBRACKET);
861      {if (true) return info;}
862     throw new Error("Missing return statement in function");
863   }
864 
865   final public Relationship relationship() throws ParseException {
866 Token name, relation;
867     jj_consume_token(LBRACKET);
868     jj_consume_token(NAME);
869     name = jj_consume_token(ID);
870     jj_consume_token(RELATION);
871     relation = jj_consume_token(ID);
872     jj_consume_token(RBRACKET);
873      {if (true) return new Relationship(name.image,relation.image);}
874     throw new Error("Missing return statement in function");
875   }
876 
877   final public Vector relationshipList() throws ParseException {
878 Vector result = new Vector();
879 Relationship r = null;
880     label_20:
881     while (true) {
882       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
883       case LBRACKET:
884         ;
885         break;
886       default:
887         jj_la1[39] = jj_gen;
888         break label_20;
889       }
890       r = relationship();
891       result.addElement(r);
892     }
893     {if (true) return result;}
894     throw new Error("Missing return statement in function");
895   }
896 
897   final public ReportRec reportRec(OntologyDb db) throws ParseException {
898 Token n, g, t, a, s, o, r, e;
899 double c;
900 ReportRec rec = null;
901 Vector consumed = new Vector();
902 Vector produced = new Vector();
903 Fact f;
904     jj_consume_token(LBRACKET);
905     jj_consume_token(NAME);
906     n = jj_consume_token(ID);
907     jj_consume_token(GOAL);
908     g = jj_consume_token(ID);
909     jj_consume_token(TASK);
910     t = jj_consume_token(ID);
911     jj_consume_token(AGENT);
912     a = jj_consume_token(ID);
913     jj_consume_token(STATE);
914     s = jj_consume_token(INTEGER);
915     jj_consume_token(OWNER);
916     o = jj_consume_token(ID);
917     jj_consume_token(ROOT_ID);
918     r = jj_consume_token(ID);
919        rec = new ReportRec(n.image,g.image);
920        rec.setTask(t.image);
921        rec.setAgent(a.image);
922        rec.setState(Integer.parseInt(s.image));
923        rec.setOwner(o.image);
924        rec.setRootId(r.image);
925     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
926     case PARENT:
927       jj_consume_token(PARENT);
928       n = jj_consume_token(ID);
929          rec.setParent(n.image);
930       break;
931     default:
932       jj_la1[40] = jj_gen;
933       ;
934     }
935     jj_consume_token(START_TIME);
936     s = jj_consume_token(INTEGER);
937     jj_consume_token(END_TIME);
938     e = jj_consume_token(INTEGER);
939     jj_consume_token(COST);
940     c = Real();
941        rec.setStartTime(Integer.parseInt(s.image));
942        rec.setEndTime(Integer.parseInt(e.image));
943        rec.setCost(c);
944     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
945     case CHILDREN:
946       jj_consume_token(CHILDREN);
947       jj_consume_token(LBRACKET);
948       label_21:
949       while (true) {
950         t = jj_consume_token(ID);
951            rec.addChild(t.image);
952         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
953         case ID:
954           ;
955           break;
956         default:
957           jj_la1[41] = jj_gen;
958           break label_21;
959         }
960       }
961       jj_consume_token(RBRACKET);
962       break;
963     default:
964       jj_la1[42] = jj_gen;
965       ;
966     }
967     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
968     case SIBLINGS:
969       jj_consume_token(SIBLINGS);
970       jj_consume_token(LBRACKET);
971       label_22:
972       while (true) {
973         t = jj_consume_token(ID);
974            rec.addSibling(t.image);
975         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
976         case ID:
977           ;
978           break;
979         default:
980           jj_la1[43] = jj_gen;
981           break label_22;
982         }
983       }
984       jj_consume_token(RBRACKET);
985       break;
986     default:
987       jj_la1[44] = jj_gen;
988       ;
989     }
990     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
991     case PARENTS:
992       jj_consume_token(PARENTS);
993       jj_consume_token(LBRACKET);
994       label_23:
995       while (true) {
996         t = jj_consume_token(ID);
997            rec.addParent(t.image);
998         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
999         case ID:
1000           ;
1001           break;
1002         default:
1003           jj_la1[45] = jj_gen;
1004           break label_23;
1005         }
1006       }
1007       jj_consume_token(RBRACKET);
1008       break;
1009     default:
1010       jj_la1[46] = jj_gen;
1011       ;
1012     }
1013     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1014     case CONSUMED_FACTS:
1015       jj_consume_token(CONSUMED_FACTS);
1016       jj_consume_token(LBRACKET);
1017       label_24:
1018       while (true) {
1019         f = fact(db);
1020            consumed.addElement(f);
1021         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1022         case LBRACKET:
1023           ;
1024           break;
1025         default:
1026           jj_la1[47] = jj_gen;
1027           break label_24;
1028         }
1029       }
1030       jj_consume_token(RBRACKET);
1031          rec.setPreconditions(consumed);
1032       break;
1033     default:
1034       jj_la1[48] = jj_gen;
1035       ;
1036     }
1037     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1038     case PRODUCED_FACTS:
1039       jj_consume_token(PRODUCED_FACTS);
1040       jj_consume_token(LBRACKET);
1041       label_25:
1042       while (true) {
1043         f = fact(db);
1044            produced.addElement(f);
1045         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1046         case LBRACKET:
1047           ;
1048           break;
1049         default:
1050           jj_la1[49] = jj_gen;
1051           break label_25;
1052         }
1053       }
1054       jj_consume_token(RBRACKET);
1055          rec.setPostconditions(produced);
1056       break;
1057     default:
1058       jj_la1[50] = jj_gen;
1059       ;
1060     }
1061     jj_consume_token(RBRACKET);
1062      {if (true) return rec;}
1063     throw new Error("Missing return statement in function");
1064   }
1065 
1066   final public ReservationEntry reservationEntry() throws ParseException {
1067 Token id, st, co, am, ag, gd, ck;
1068     jj_consume_token(LBRACKET);
1069     jj_consume_token(FID);
1070     id = jj_consume_token(ID);
1071     jj_consume_token(START);
1072     st = jj_consume_token(INTEGER);
1073     jj_consume_token(CONSUMED);
1074     co = jj_consume_token(BOOLEAN);
1075     jj_consume_token(AMOUNT);
1076     am = jj_consume_token(INTEGER);
1077     jj_consume_token(AGENT);
1078     ag = jj_consume_token(ID);
1079     jj_consume_token(GOAL_ID);
1080     gd = jj_consume_token(ID);
1081     jj_consume_token(COMMS_KEY);
1082     ck = jj_consume_token(ID);
1083     jj_consume_token(RBRACKET);
1084      {if (true) return new ReservationEntry(id.image,
1085         Integer.parseInt(st.image),
1086         (Boolean.valueOf(co.image)).booleanValue(),
1087         Integer.parseInt(am.image), ag.image, gd.image, ck.image);}
1088     throw new Error("Missing return statement in function");
1089   }
1090 
1091   final public RoutingRecord routingRecord() throws ParseException {
1092 Token p, pid, c, cid, uid, key;
1093     jj_consume_token(LBRACKET);
1094     jj_consume_token(PRODUCER);
1095     p = jj_consume_token(ID);
1096     jj_consume_token(PRODUCER_ID);
1097     pid = jj_consume_token(ID);
1098     jj_consume_token(CONSUMER);
1099     c = jj_consume_token(ID);
1100     jj_consume_token(CONSUMER_ID);
1101     cid = jj_consume_token(ID);
1102     jj_consume_token(USE_REF);
1103     uid = jj_consume_token(ID);
1104     jj_consume_token(COMMS_KEY);
1105     key = jj_consume_token(ID);
1106     jj_consume_token(RBRACKET);
1107      {if (true) return new RoutingRecord(p.image,pid.image,c.image,
1108         cid.image,uid.image,key.image);}
1109     throw new Error("Missing return statement in function");
1110   }
1111 
1112   final public SuppliedDb suppliedDb(OntologyDb db) throws ParseException {
1113 SuppliedDb suppliedDb = new SuppliedDb(db);
1114 SuppliedItem item = null;
1115     label_26:
1116     while (true) {
1117       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1118       case LBRACKET:
1119         ;
1120         break;
1121       default:
1122         jj_la1[51] = jj_gen;
1123         break label_26;
1124       }
1125       item = suppliedItem(db);
1126        suppliedDb.add(item);
1127     }
1128      {if (true) return suppliedDb;}
1129     throw new Error("Missing return statement in function");
1130   }
1131 
1132   final public SuppliedItem suppliedItem(OntologyDb db) throws ParseException {
1133 Token fid, lid, sid;
1134 Fact f = null;
1135 SuppliedItem item = null;
1136 ReservationEntry entry;
1137     jj_consume_token(LBRACKET);
1138     jj_consume_token(FID);
1139     fid = jj_consume_token(ID);
1140     jj_consume_token(LINK);
1141     lid = jj_consume_token(LITERAL);
1142     jj_consume_token(FACT);
1143     f = fact(db);
1144     jj_consume_token(SUPPLIER);
1145     sid = jj_consume_token(ID);
1146        item = new SuppliedItem(fid.image,Misc.literalToString(lid.image),sid.image,f);
1147     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1148     case RESERVATIONS:
1149       jj_consume_token(RESERVATIONS);
1150       jj_consume_token(LBRACKET);
1151       label_27:
1152       while (true) {
1153         entry = reservationEntry();
1154            Core.ERROR(item.reserve(entry),1,"Parser:suppliedItem");
1155         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1156         case LBRACKET:
1157           ;
1158           break;
1159         default:
1160           jj_la1[52] = jj_gen;
1161           break label_27;
1162         }
1163       }
1164       jj_consume_token(RBRACKET);
1165       break;
1166     default:
1167       jj_la1[53] = jj_gen;
1168       ;
1169     }
1170     jj_consume_token(RBRACKET);
1171      {if (true) return item;}
1172     throw new Error("Missing return statement in function");
1173   }
1174 
1175   final public ResolutionContext resolutionContext(OntologyDb db) throws ParseException {
1176 Fact f = null;
1177 ResolutionContext context = new ResolutionContext();
1178     label_28:
1179     while (true) {
1180       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1181       case LBRACKET:
1182         ;
1183         break;
1184       default:
1185         jj_la1[54] = jj_gen;
1186         break label_28;
1187       }
1188       f = fact(db);
1189        context.add(f);
1190     }
1191      {if (true) return context;}
1192     throw new Error("Missing return statement in function");
1193   }
1194 
1195   final public AbstractTask abstractTask(OntologyDb db) throws ParseException {
1196 AbstractTask t = null;
1197     if (jj_2_5(2)) {
1198       t = primitiveTask(db);
1199     } else if (jj_2_6(2)) {
1200       t = summaryTask(db);
1201     } else if (jj_2_7(2)) {
1202       t = reteKB(db);
1203     } else if (jj_2_8(2)) {
1204       t = planScript(db);
1205     } else {
1206       jj_consume_token(-1);
1207       throw new ParseException();
1208     }
1209      {if (true) return t;}
1210     throw new Error("Missing return statement in function");
1211   }
1212 
1213   final public PrimitiveTask primitiveTask(OntologyDb db) throws ParseException {
1214 Token t;
1215 ValueFunction time = null, cost = null, fn = null;
1216 Vector produced = new Vector();
1217 Vector consumed = new Vector();
1218 Vector ordering = new Vector();
1219 Vector constraints = new Vector();
1220 Fact f = null;
1221 Ordering order = null;
1222     jj_consume_token(LBRACKET);
1223     jj_consume_token(PRIMITIVE);
1224     t = jj_consume_token(ID);
1225     jj_consume_token(TIME);
1226     jj_consume_token(LBRACKET);
1227     time = Expression(db);
1228     jj_consume_token(RBRACKET);
1229     jj_consume_token(COST);
1230     jj_consume_token(LBRACKET);
1231     cost = Expression(db);
1232     jj_consume_token(RBRACKET);
1233     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1234     case CONSUMED_FACTS:
1235       jj_consume_token(CONSUMED_FACTS);
1236       jj_consume_token(LBRACKET);
1237       label_29:
1238       while (true) {
1239         f = fact(db);
1240            consumed.addElement(f);
1241         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1242         case LBRACKET:
1243           ;
1244           break;
1245         default:
1246           jj_la1[55] = jj_gen;
1247           break label_29;
1248         }
1249       }
1250       jj_consume_token(RBRACKET);
1251       break;
1252     default:
1253       jj_la1[56] = jj_gen;
1254       ;
1255     }
1256     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1257     case PRODUCED_FACTS:
1258       jj_consume_token(PRODUCED_FACTS);
1259       jj_consume_token(LBRACKET);
1260       label_30:
1261       while (true) {
1262         f = fact(db);
1263            produced.addElement(f);
1264         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1265         case LBRACKET:
1266           ;
1267           break;
1268         default:
1269           jj_la1[57] = jj_gen;
1270           break label_30;
1271         }
1272       }
1273       jj_consume_token(RBRACKET);
1274       break;
1275     default:
1276       jj_la1[58] = jj_gen;
1277       ;
1278     }
1279     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1280     case CONSTRAINTS:
1281       jj_consume_token(CONSTRAINTS);
1282       jj_consume_token(LBRACKET);
1283       label_31:
1284       while (true) {
1285         jj_consume_token(LBRACKET);
1286         fn = Expression(db);
1287         jj_consume_token(RBRACKET);
1288            constraints.addElement(fn);
1289         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1290         case LBRACKET:
1291           ;
1292           break;
1293         default:
1294           jj_la1[59] = jj_gen;
1295           break label_31;
1296         }
1297       }
1298       jj_consume_token(RBRACKET);
1299       break;
1300     default:
1301       jj_la1[60] = jj_gen;
1302       ;
1303     }
1304     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1305     case ORDERING:
1306       jj_consume_token(ORDERING);
1307       jj_consume_token(LBRACKET);
1308       label_32:
1309       while (true) {
1310         order = ordering();
1311            ordering.addElement(order);
1312         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1313         case LBRACKET:
1314           ;
1315           break;
1316         default:
1317           jj_la1[61] = jj_gen;
1318           break label_32;
1319         }
1320       }
1321       jj_consume_token(RBRACKET);
1322       break;
1323     default:
1324       jj_la1[62] = jj_gen;
1325       ;
1326     }
1327     jj_consume_token(RBRACKET);
1328      {if (true) return new PrimitiveTask(t.image,time,cost,produced,
1329         consumed,constraints,ordering);}
1330     throw new Error("Missing return statement in function");
1331   }
1332 
1333   final public SummaryTask summaryTask(OntologyDb db) throws ParseException {
1334 Token name;
1335 ValueFunction cost = null, time = null, fn = null;
1336 Vector nodes = new Vector();
1337 Vector links = new Vector();
1338 Vector constraints = new Vector();
1339 TaskNode node = null;
1340 TaskLink link = null;
1341     jj_consume_token(LBRACKET);
1342     jj_consume_token(SUMMARY);
1343     name = jj_consume_token(ID);
1344     jj_consume_token(IS_AUTORUN);
1345     jj_consume_token(BOOLEAN);
1346     jj_consume_token(TIME);
1347     jj_consume_token(LBRACKET);
1348     time = Expression(db);
1349     jj_consume_token(RBRACKET);
1350     jj_consume_token(COST);
1351     jj_consume_token(LBRACKET);
1352     cost = Expression(db);
1353     jj_consume_token(RBRACKET);
1354     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1355     case NODES:
1356       jj_consume_token(NODES);
1357       jj_consume_token(LBRACKET);
1358       label_33:
1359       while (true) {
1360         node = taskNode(db);
1361            nodes.addElement(node);
1362         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1363         case LBRACKET:
1364           ;
1365           break;
1366         default:
1367           jj_la1[63] = jj_gen;
1368           break label_33;
1369         }
1370       }
1371       jj_consume_token(RBRACKET);
1372       break;
1373     default:
1374       jj_la1[64] = jj_gen;
1375       ;
1376     }
1377     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1378     case LINKS:
1379       jj_consume_token(LINKS);
1380       jj_consume_token(LBRACKET);
1381       label_34:
1382       while (true) {
1383         link = taskLink();
1384          links.addElement(link);
1385         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1386         case LBRACKET:
1387           ;
1388           break;
1389         default:
1390           jj_la1[65] = jj_gen;
1391           break label_34;
1392         }
1393       }
1394       jj_consume_token(RBRACKET);
1395       break;
1396     default:
1397       jj_la1[66] = jj_gen;
1398       ;
1399     }
1400     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1401     case CONSTRAINTS:
1402       jj_consume_token(CONSTRAINTS);
1403       jj_consume_token(LBRACKET);
1404       label_35:
1405       while (true) {
1406         jj_consume_token(LBRACKET);
1407         fn = Expression(db);
1408         jj_consume_token(RBRACKET);
1409          constraints.addElement(fn);
1410         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1411         case LBRACKET:
1412           ;
1413           break;
1414         default:
1415           jj_la1[67] = jj_gen;
1416           break label_35;
1417         }
1418       }
1419       jj_consume_token(RBRACKET);
1420       break;
1421     default:
1422       jj_la1[68] = jj_gen;
1423       ;
1424     }
1425     jj_consume_token(RBRACKET);
1426      {if (true) return new SummaryTask(name.image, time, cost,
1427         nodes, links, constraints);}
1428     throw new Error("Missing return statement in function");
1429   }
1430 
1431   final public PlanScript planScript(OntologyDb db) throws ParseException {
1432 Token name, autorun;
1433 ValueFunction cost = null, time = null, fn = null;
1434 Vector nodes = new Vector();
1435 Vector links = new Vector();
1436 Vector constraints = new Vector();
1437 TaskNode node = null;
1438 TaskLink link = null;
1439     jj_consume_token(LBRACKET);
1440     jj_consume_token(SCRIPT);
1441     name = jj_consume_token(ID);
1442     jj_consume_token(IS_AUTORUN);
1443     autorun = jj_consume_token(BOOLEAN);
1444     jj_consume_token(TIME);
1445     jj_consume_token(LBRACKET);
1446     time = Expression(db);
1447     jj_consume_token(RBRACKET);
1448     jj_consume_token(COST);
1449     jj_consume_token(LBRACKET);
1450     cost = Expression(db);
1451     jj_consume_token(RBRACKET);
1452     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1453     case NODES:
1454       jj_consume_token(NODES);
1455       jj_consume_token(LBRACKET);
1456       label_36:
1457       while (true) {
1458         node = taskNode(db);
1459            nodes.addElement(node);
1460         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1461         case LBRACKET:
1462           ;
1463           break;
1464         default:
1465           jj_la1[69] = jj_gen;
1466           break label_36;
1467         }
1468       }
1469       jj_consume_token(RBRACKET);
1470       break;
1471     default:
1472       jj_la1[70] = jj_gen;
1473       ;
1474     }
1475     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1476     case LINKS:
1477       jj_consume_token(LINKS);
1478       jj_consume_token(LBRACKET);
1479       label_37:
1480       while (true) {
1481         link = taskLink();
1482          links.addElement(link);
1483         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1484         case LBRACKET:
1485           ;
1486           break;
1487         default:
1488           jj_la1[71] = jj_gen;
1489           break label_37;
1490         }
1491       }
1492       jj_consume_token(RBRACKET);
1493       break;
1494     default:
1495       jj_la1[72] = jj_gen;
1496       ;
1497     }
1498     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1499     case CONSTRAINTS:
1500       jj_consume_token(CONSTRAINTS);
1501       jj_consume_token(LBRACKET);
1502       label_38:
1503       while (true) {
1504         jj_consume_token(LBRACKET);
1505         fn = Expression(db);
1506         jj_consume_token(RBRACKET);
1507          constraints.addElement(fn);
1508         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1509         case LBRACKET:
1510           ;
1511           break;
1512         default:
1513           jj_la1[73] = jj_gen;
1514           break label_38;
1515         }
1516       }
1517       jj_consume_token(RBRACKET);
1518       break;
1519     default:
1520       jj_la1[74] = jj_gen;
1521       ;
1522     }
1523     jj_consume_token(RBRACKET);
1524      {if (true) return new PlanScript(name.image, (Boolean.valueOf(autorun.image)).booleanValue(),
1525                            time, cost, nodes, links, constraints);}
1526     throw new Error("Missing return statement in function");
1527   }
1528 
1529   final public TaskLink taskLink() throws ParseException {
1530 Token lhs, rhs, larg, rarg, lgrp, rgrp;
1531     jj_consume_token(LBRACKET);
1532     jj_consume_token(LEFT_NODE);
1533     lhs = jj_consume_token(ID);
1534     jj_consume_token(LEFT_GROUP);
1535     lgrp = jj_consume_token(ID);
1536     jj_consume_token(LEFT_ARG);
1537     larg = jj_consume_token(VARIABLE);
1538     jj_consume_token(RIGHT_NODE);
1539     rhs = jj_consume_token(ID);
1540     jj_consume_token(RIGHT_GROUP);
1541     rgrp = jj_consume_token(ID);
1542     jj_consume_token(RIGHT_ARG);
1543     rarg = jj_consume_token(VARIABLE);
1544     jj_consume_token(RBRACKET);
1545      {if (true) return new TaskLink(lhs.image,lgrp.image,larg.image,
1546                          rhs.image,rgrp.image,rarg.image);}
1547     throw new Error("Missing return statement in function");
1548   }
1549 
1550   final public TaskNode taskNode(OntologyDb db) throws ParseException {
1551 Token id, type;
1552 Fact f;
1553 Vector data = new Vector();
1554 TaskNode node = null;
1555     jj_consume_token(LBRACKET);
1556     jj_consume_token(NAME);
1557     id = jj_consume_token(ID);
1558     jj_consume_token(IS_CONDITIONAL);
1559     type = jj_consume_token(BOOLEAN);
1560        if ( (Boolean.valueOf(type.image)).booleanValue() )
1561           node = new ConditionalNode(id.image);
1562        else
1563           node = new TaskNode(id.image);
1564     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1565     case CONSUMED_FACTS:
1566       jj_consume_token(CONSUMED_FACTS);
1567       jj_consume_token(LBRACKET);
1568       label_39:
1569       while (true) {
1570         jj_consume_token(LBRACKET);
1571         jj_consume_token(GROUP);
1572         id = jj_consume_token(ID);
1573               data.removeAllElements();
1574         jj_consume_token(LBRACKET);
1575         label_40:
1576         while (true) {
1577           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1578           case LBRACKET:
1579             ;
1580             break;
1581           default:
1582             jj_la1[75] = jj_gen;
1583             break label_40;
1584           }
1585           f = fact(db);
1586                 data.addElement(f);
1587         }
1588         jj_consume_token(RBRACKET);
1589               node.setPreconditions(id.image,data);
1590         jj_consume_token(RBRACKET);
1591         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1592         case LBRACKET:
1593           ;
1594           break;
1595         default:
1596           jj_la1[76] = jj_gen;
1597           break label_39;
1598         }
1599       }
1600       jj_consume_token(RBRACKET);
1601       break;
1602     default:
1603       jj_la1[77] = jj_gen;
1604       ;
1605     }
1606     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1607     case PRODUCED_FACTS:
1608       jj_consume_token(PRODUCED_FACTS);
1609       jj_consume_token(LBRACKET);
1610       label_41:
1611       while (true) {
1612         jj_consume_token(LBRACKET);
1613         jj_consume_token(GROUP);
1614         id = jj_consume_token(ID);
1615               data.removeAllElements();
1616         jj_consume_token(LBRACKET);
1617         label_42:
1618         while (true) {
1619           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1620           case LBRACKET:
1621             ;
1622             break;
1623           default:
1624             jj_la1[78] = jj_gen;
1625             break label_42;
1626           }
1627           f = fact(db);
1628                 data.addElement(f);
1629         }
1630         jj_consume_token(RBRACKET);
1631               node.setPostconditions(id.image,data);
1632         jj_consume_token(RBRACKET);
1633         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1634         case LBRACKET:
1635           ;
1636           break;
1637         default:
1638           jj_la1[79] = jj_gen;
1639           break label_41;
1640         }
1641       }
1642       jj_consume_token(RBRACKET);
1643       break;
1644     default:
1645       jj_la1[80] = jj_gen;
1646       ;
1647     }
1648     jj_consume_token(RBRACKET);
1649      {if (true) return node;}
1650     throw new Error("Missing return statement in function");
1651   }
1652 
1653   final public AbstractTask reteKB(OntologyDb db) throws ParseException {
1654   ReteKB kb;
1655   Token t;
1656   Rule r;
1657     jj_consume_token(LBRACKET);
1658     jj_consume_token(BEHAVIOUR);
1659     t = jj_consume_token(ID);
1660      kb = new ReteKB(t.image);
1661     label_43:
1662     while (true) {
1663       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1664       case LBRACKET:
1665         ;
1666         break;
1667       default:
1668         jj_la1[81] = jj_gen;
1669         break label_43;
1670       }
1671       r = reteRule(db);
1672         kb.addRule(r);
1673     }
1674     jj_consume_token(RBRACKET);
1675     {if (true) return kb;}
1676     throw new Error("Missing return statement in function");
1677   }
1678 
1679   final public Rule reteRule(OntologyDb db) throws ParseException {
1680   Token t;
1681   Rule r;
1682   Pattern p;
1683   Action a;
1684     jj_consume_token(LBRACKET);
1685     t = jj_consume_token(ID);
1686       r = new Rule(t.image);
1687     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1688     case INTEGER:
1689       t = jj_consume_token(INTEGER);
1690          r.setSalience(Integer.parseInt(t.image));
1691       break;
1692     default:
1693       jj_la1[82] = jj_gen;
1694       ;
1695     }
1696     label_44:
1697     while (true) {
1698       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1699       case LBRACKET:
1700       case VARIABLE:
1701         ;
1702         break;
1703       default:
1704         jj_la1[83] = jj_gen;
1705         break label_44;
1706       }
1707       p = retePattern(db);
1708          r.addPattern(p);
1709     }
1710     jj_consume_token(IMPLIES);
1711     label_45:
1712     while (true) {
1713       a = reteAction(db);
1714          r.addAction(a);
1715       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1716       case LBRACKET:
1717         ;
1718         break;
1719       default:
1720         jj_la1[84] = jj_gen;
1721         break label_45;
1722       }
1723     }
1724     jj_consume_token(RBRACKET);
1725       {if (true) return r;}
1726     throw new Error("Missing return statement in function");
1727   }
1728 
1729   final public Pattern retePattern(OntologyDb db) throws ParseException {
1730   VarFn id = null;
1731   Pattern p = null;
1732   ValueFunction value = null;
1733   ReteFact rete_fact;
1734   Token t;
1735     if (jj_2_9(2)) {
1736       jj_consume_token(LBRACKET);
1737       jj_consume_token(TEST);
1738       value = ConditionalOrExpression(db);
1739       jj_consume_token(RBRACKET);
1740       if ( !(value instanceof LogicalFn) && !(value instanceof DefinedFn) &&
1741            !(value instanceof MethodCallFn) )
1742          {if (true) throw new ParseException("Non-logical value in rete-test pattern");}
1743       p = new Pattern(Pattern.TEST,value);
1744     } else if (jj_2_10(2)) {
1745       jj_consume_token(LBRACKET);
1746       jj_consume_token(NEGATION);
1747       rete_fact = reteFact(db);
1748       jj_consume_token(RBRACKET);
1749       p = new Pattern(Pattern.NOT,rete_fact);
1750     } else {
1751       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1752       case LBRACKET:
1753       case VARIABLE:
1754         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1755         case VARIABLE:
1756           t = jj_consume_token(VARIABLE);
1757           jj_consume_token(FACT_MARKER);
1758         id = new VarFn(t.image);
1759           break;
1760         default:
1761           jj_la1[85] = jj_gen;
1762           ;
1763         }
1764         rete_fact = reteFact(db);
1765       p = new Pattern(rete_fact);
1766       if ( id != null ) p.setId(id);
1767         break;
1768       default:
1769         jj_la1[86] = jj_gen;
1770         jj_consume_token(-1);
1771         throw new ParseException();
1772       }
1773     }
1774      {if (true) return p;}
1775     throw new Error("Missing return statement in function");
1776   }
1777 
1778   final public Vector reteFactList(OntologyDb db) throws ParseException {
1779   Vector result = new Vector();
1780   ReteFact f;
1781     label_46:
1782     while (true) {
1783       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1784       case LBRACKET:
1785         ;
1786         break;
1787       default:
1788         jj_la1[87] = jj_gen;
1789         break label_46;
1790       }
1791       f = reteFact(db);
1792       result.addElement(f);
1793     }
1794     {if (true) return result;}
1795     throw new Error("Missing return statement in function");
1796   }
1797 
1798   final public ReteFact reteFact(OntologyDb db) throws ParseException {
1799   Token t;
1800   ReteFact f;
1801   ValueFunction value;
1802   String[] attributes = null;
1803     jj_consume_token(LBRACKET);
1804     t = jj_consume_token(ID);
1805         if ( !db.hasFact(t.image) )
1806            {if (true) throw new ParseException("Rete pattern - fact type " + t.image +
1807               " not present in current ontology");}
1808         f = new ReteFact(t.image);
1809         attributes = db.getNetAttributesOnlyFor(t.image);
1810     label_47:
1811     while (true) {
1812       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1813       case LBRACKET:
1814         ;
1815         break;
1816       default:
1817         jj_la1[88] = jj_gen;
1818         break label_47;
1819       }
1820       jj_consume_token(LBRACKET);
1821       t = jj_consume_token(ID);
1822       value = Expression(db);
1823       jj_consume_token(RBRACKET);
1824          if ( !Misc.member(t.image,attributes) )
1825             {if (true) throw new ParseException("Rete pattern: " + t.image +
1826                                      " is not an attribute of " + f);}
1827          f.setValue(t.image,value);
1828     }
1829     jj_consume_token(RBRACKET);
1830       {if (true) return f;}
1831     throw new Error("Missing return statement in function");
1832   }
1833 
1834   final public void reteGoal(OntologyDb db, Action a) throws ParseException {
1835   Token t;
1836   ReteFact f;
1837   ValueFunction value;
1838   boolean found = false;
1839     label_48:
1840     while (true) {
1841       jj_consume_token(LBRACKET);
1842       t = jj_consume_token(ID);
1843         if ( !Misc.member(t.image,OntologyDb.GOAL_ATTRIBUTES) )
1844            {if (true) throw new ParseException("Rete goal - attribute " +
1845               t.image + " not present in current ontology");}
1846       if (getToken(0).image.equals(OntologyDb.GOAL_FACT)) {
1847         f = reteFact(db);
1848            if ( found )
1849               {if (true) throw new ParseException("Rete goal - attribute " +
1850                  t.image + " can only be used once");}
1851            found = true;
1852            a.head = f;
1853       } else {
1854         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1855         case LE:
1856         case GE:
1857         case NE:
1858         case GT:
1859         case LT:
1860         case PLUS:
1861         case MINUS:
1862         case NOT:
1863         case UNOT:
1864         case LBRACKET:
1865         case LCURLY:
1866         case IF:
1867         case BOOLEAN:
1868         case ID:
1869         case INTEGER:
1870         case REAL:
1871         case DATE:
1872         case TIMEFN:
1873         case LITERAL:
1874         case VARIABLE:
1875         case OBJECT:
1876         case FIELD:
1877           value = Expression(db);
1878            a.table.put(t.image,value);
1879           break;
1880         default:
1881           jj_la1[89] = jj_gen;
1882           jj_consume_token(-1);
1883           throw new ParseException();
1884         }
1885       }
1886       jj_consume_token(RBRACKET);
1887       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1888       case LBRACKET:
1889         ;
1890         break;
1891       default:
1892         jj_la1[90] = jj_gen;
1893         break label_48;
1894       }
1895     }
1896   }
1897 
1898   final public String messageAttribute() throws ParseException {
1899   String attribute = "";
1900   Token t = null;
1901     t = jj_consume_token(ID);
1902     attribute = t.image;
1903     label_49:
1904     while (true) {
1905       if (jj_2_11(2)) {
1906         ;
1907       } else {
1908         break label_49;
1909       }
1910       jj_consume_token(MINUS);
1911       t = jj_consume_token(ID);
1912       attribute += "-" + t.image;
1913     }
1914     {if (true) return attribute;}
1915     throw new Error("Missing return statement in function");
1916   }
1917 
1918   final public Action reteAction(OntologyDb db) throws ParseException {
1919   Token t;
1920   Action a = null;
1921   ValueFunction value, value1, value2;
1922   Vector items = null;
1923   ReteFact rete_fact;
1924   String attribute = null;
1925     jj_consume_token(LBRACKET);
1926     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1927     case ASSERT:
1928       jj_consume_token(ASSERT);
1929       rete_fact = reteFact(db);
1930          a = new Action(Action.ASSERT);
1931          a.head = rete_fact;
1932       break;
1933     case SEND_MESSAGE:
1934       jj_consume_token(SEND_MESSAGE);
1935            a = new Action(Action.MESSAGE);
1936       label_50:
1937       while (true) {
1938         jj_consume_token(LBRACKET);
1939         attribute = messageAttribute();
1940         value = Expression(db);
1941         jj_consume_token(RBRACKET);
1942               if ( !Misc.member(attribute,Performative.ATTRIBUTE_TYPES) )
1943                  {if (true) throw new ParseException("Illegal message attribute: " + attribute);}
1944 
1945               a.table.put(attribute,value);
1946         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1947         case LBRACKET:
1948           ;
1949           break;
1950         default:
1951           jj_la1[91] = jj_gen;
1952           break label_50;
1953         }
1954       }
1955       break;
1956     case ACHIEVE:
1957     case BUY:
1958     case SELL:
1959       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1960       case ACHIEVE:
1961         t = jj_consume_token(ACHIEVE);
1962                a = new Action(Action.ACHIEVE);
1963         break;
1964       case BUY:
1965         t = jj_consume_token(BUY);
1966                a = new Action(Action.BUY);
1967         break;
1968       case SELL:
1969         t = jj_consume_token(SELL);
1970                a = new Action(Action.SELL);
1971         break;
1972       default:
1973         jj_la1[92] = jj_gen;
1974         jj_consume_token(-1);
1975         throw new ParseException();
1976       }
1977       reteGoal(db,a);
1978       break;
1979     case RETRACT:
1980       t = jj_consume_token(RETRACT);
1981          a = new Action(t.image);
1982       label_51:
1983       while (true) {
1984         t = jj_consume_token(VARIABLE);
1985             a.items.addElement(new VarFn(t.image));
1986         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1987         case VARIABLE:
1988           ;
1989           break;
1990         default:
1991           jj_la1[93] = jj_gen;
1992           break label_51;
1993         }
1994       }
1995       break;
1996     case MODIFY:
1997       jj_consume_token(MODIFY);
1998       t = jj_consume_token(VARIABLE);
1999          a = new Action(Action.MODIFY);
2000          a.head = new VarFn(t.image);
2001       label_52:
2002       while (true) {
2003         jj_consume_token(LBRACKET);
2004         t = jj_consume_token(ID);
2005         value = Expression(db);
2006         jj_consume_token(RBRACKET);
2007             a.table.put(t.image,value);
2008         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2009         case LBRACKET:
2010           ;
2011           break;
2012         default:
2013           jj_la1[94] = jj_gen;
2014           break label_52;
2015         }
2016       }
2017       break;
2018     case PRINT:
2019     case PRINTLN:
2020       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2021       case PRINT:
2022         t = jj_consume_token(PRINT);
2023         break;
2024       case PRINTLN:
2025         t = jj_consume_token(PRINTLN);
2026         break;
2027       default:
2028         jj_la1[95] = jj_gen;
2029         jj_consume_token(-1);
2030         throw new ParseException();
2031       }
2032       value = Expression(db);
2033         a = new Action(t.image);
2034         a.head = value;
2035       label_53:
2036       while (true) {
2037         value = Expression(db);
2038             a.items.addElement(value);
2039         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2040         case LE:
2041         case GE:
2042         case NE:
2043         case GT:
2044         case LT:
2045         case PLUS:
2046         case MINUS:
2047         case NOT:
2048         case UNOT:
2049         case LBRACKET:
2050         case LCURLY:
2051         case IF:
2052         case BOOLEAN:
2053         case ID:
2054         case INTEGER:
2055         case REAL:
2056         case DATE:
2057         case TIMEFN:
2058         case LITERAL:
2059         case VARIABLE:
2060         case OBJECT:
2061         case FIELD:
2062           ;
2063           break;
2064         default:
2065           jj_la1[96] = jj_gen;
2066           break label_53;
2067         }
2068       }
2069       break;
2070     case EXECUTE:
2071     case CLOSE:
2072       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2073       case EXECUTE:
2074         t = jj_consume_token(EXECUTE);
2075         break;
2076       case CLOSE:
2077         t = jj_consume_token(CLOSE);
2078         break;
2079       default:
2080         jj_la1[97] = jj_gen;
2081         jj_consume_token(-1);
2082         throw new ParseException();
2083       }
2084       value = Expression(db);
2085          a = new Action(t.image);
2086          a.head = value;
2087       break;
2088     case BIND:
2089       jj_consume_token(BIND);
2090       t = jj_consume_token(VARIABLE);
2091       value = Expression(db);
2092          a = new Action(Action.BIND);
2093          a.head = new VarFn(t.image);
2094          a.sub_head = value;
2095       break;
2096     case IF:
2097       jj_consume_token(IF);
2098       value = ConditionalOrExpression(db);
2099       jj_consume_token(THEN);
2100       items = reteActionList(db);
2101            if ( !(value instanceof LogicalFn) )
2102               {if (true) throw new ParseException("Non-logical value in \'if\' expression");}
2103 
2104            a = new Action(Action.IF);
2105            a.head = value;
2106            a.items = items;
2107       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2108       case ELSE:
2109         jj_consume_token(ELSE);
2110         items = reteActionList(db);
2111              a.sub_items = items;
2112         break;
2113       default:
2114         jj_la1[98] = jj_gen;
2115         ;
2116       }
2117       break;
2118     case WHILE:
2119       jj_consume_token(WHILE);
2120       value = ConditionalOrExpression(db);
2121       jj_consume_token(DO);
2122       items = reteActionList(db);
2123            if ( !(value instanceof LogicalFn) )
2124               {if (true) throw new ParseException("Non-logical value in \'while\' expression");}
2125 
2126            a = new Action(Action.WHILE);
2127            a.head = value;
2128            a.items = items;
2129       break;
2130     case OPEN:
2131       jj_consume_token(OPEN);
2132       value = Expression(db);
2133       value1 = Expression(db);
2134       value2 = Expression(db);
2135          a = new Action(Action.OPEN);
2136          a.head = value;
2137          a.sub_head = value1;
2138          a.sub_sub_head = value2;
2139       break;
2140     case READ:
2141     case READLN:
2142       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2143       case READ:
2144         t = jj_consume_token(READ);
2145         break;
2146       case READLN:
2147         t = jj_consume_token(READLN);
2148         break;
2149       default:
2150         jj_la1[99] = jj_gen;
2151         jj_consume_token(-1);
2152         throw new ParseException();
2153       }
2154       value = Expression(db);
2155       value1 = Expression(db);
2156            a = new Action(t.image);
2157            a.head = value;
2158            a.sub_head = value1;
2159       break;
2160     case SYSTEM_CALL:
2161       jj_consume_token(SYSTEM_CALL);
2162         a = new Action(Action.SYSTEM);
2163       label_54:
2164       while (true) {
2165         value = Expression(db);
2166             a.items.addElement(value);
2167         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2168         case LE:
2169         case GE:
2170         case NE:
2171         case GT:
2172         case LT:
2173         case PLUS:
2174         case MINUS:
2175         case NOT:
2176         case UNOT:
2177         case LBRACKET:
2178         case LCURLY:
2179         case IF:
2180         case BOOLEAN:
2181         case ID:
2182         case INTEGER:
2183         case REAL:
2184         case DATE:
2185         case TIMEFN:
2186         case LITERAL:
2187         case VARIABLE:
2188         case OBJECT:
2189         case FIELD:
2190           ;
2191           break;
2192         default:
2193           jj_la1[100] = jj_gen;
2194           break label_54;
2195         }
2196       }
2197       break;
2198     default:
2199       jj_la1[101] = jj_gen;
2200       jj_consume_token(-1);
2201       throw new ParseException();
2202     }
2203     jj_consume_token(RBRACKET);
2204       {if (true) return a;}
2205     throw new Error("Missing return statement in function");
2206   }
2207 
2208   final public Vector retePatternList(OntologyDb db) throws ParseException {
2209   Vector result = new Vector();
2210   Pattern p;
2211     label_55:
2212     while (true) {
2213       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2214       case LBRACKET:
2215       case VARIABLE:
2216         ;
2217         break;
2218       default:
2219         jj_la1[102] = jj_gen;
2220         break label_55;
2221       }
2222       p = retePattern(db);
2223       result.addElement(p);
2224     }
2225     {if (true) return result;}
2226     throw new Error("Missing return statement in function");
2227   }
2228 
2229   final public Vector reteActionList(OntologyDb db) throws ParseException {
2230   Vector result = new Vector();
2231   Action a;
2232     label_56:
2233     while (true) {
2234       a = reteAction(db);
2235       result.addElement(a);
2236       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2237       case LBRACKET:
2238         ;
2239         break;
2240       default:
2241         jj_la1[103] = jj_gen;
2242         break label_56;
2243       }
2244     }
2245     {if (true) return result;}
2246     throw new Error("Missing return statement in function");
2247   }
2248 
2249   final public TaskSummary taskSummary(OntologyDb db) throws ParseException {
2250 AbstractTask t = null;
2251 Token id;
2252     jj_consume_token(LBRACKET);
2253     jj_consume_token(TASK);
2254     t = abstractTask(db);
2255     jj_consume_token(STATUS);
2256     id = jj_consume_token(ID);
2257     jj_consume_token(RBRACKET);
2258      {if (true) return new TaskSummary(t,id.image);}
2259     throw new Error("Missing return statement in function");
2260   }
2261 
2262   final public Ordering ordering() throws ParseException {
2263 Token lhs = null, rhs = null;
2264     jj_consume_token(LBRACKET);
2265     jj_consume_token(LHS);
2266     lhs = jj_consume_token(VARIABLE);
2267     jj_consume_token(RHS);
2268     rhs = jj_consume_token(VARIABLE);
2269     jj_consume_token(RBRACKET);
2270      {if (true) return new Ordering(lhs.image,rhs.image);}
2271     throw new Error("Missing return statement in function");
2272   }
2273 
2274   final public AgentInfo agentInfo(GeneratorModel genmodel,
2275                     GenerationPlan genplan) throws ParseException {
2276 AgentInfo info = null;
2277 Token id, generate, status, gui, tok;
2278     jj_consume_token(LBRACKET);
2279     jj_consume_token(FID);
2280     id = jj_consume_token(ID);
2281     jj_consume_token(GENERATE);
2282     generate = jj_consume_token(BOOLEAN);
2283     jj_consume_token(STATUS);
2284     status = jj_consume_token(ID);
2285     jj_consume_token(HAS_GUI);
2286     gui = jj_consume_token(BOOLEAN);
2287      String file = genplan.getOntologyFilename();
2288      String name = genmodel.getAgentName(id.image);
2289      info = new AgentInfo(id.image,name,file);
2290      info.generate = (Boolean.valueOf(generate.image)).booleanValue();
2291      info.status = status.image;
2292      info.has_gui = (Boolean.valueOf(gui.image)).booleanValue();
2293     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2294     case HOST:
2295       jj_consume_token(HOST);
2296       tok = jj_consume_token(LITERAL);
2297        info.host = Misc.literalToString(tok.image);
2298       break;
2299     default:
2300       jj_la1[104] = jj_gen;
2301       ;
2302     }
2303     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2304     case DATABASE:
2305       jj_consume_token(DATABASE);
2306       tok = jj_consume_token(LITERAL);
2307        info.database = Misc.literalToString(tok.image);
2308       break;
2309     default:
2310       jj_la1[105] = jj_gen;
2311       ;
2312     }
2313     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2314     case ZEUS_EXTERNAL:
2315       jj_consume_token(ZEUS_EXTERNAL);
2316       tok = jj_consume_token(LITERAL);
2317        info.zeus_external = Misc.literalToString(tok.image);
2318       break;
2319     default:
2320       jj_la1[106] = jj_gen;
2321       ;
2322     }
2323     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2324     case DNS_FILE:
2325       jj_consume_token(DNS_FILE);
2326       tok = jj_consume_token(LITERAL);
2327        info.dns_file = Misc.literalToString(tok.image);
2328       break;
2329     default:
2330       jj_la1[107] = jj_gen;
2331       ;
2332     }
2333     jj_consume_token(RBRACKET);
2334      {if (true) return info;}
2335     throw new Error("Missing return statement in function");
2336   }
2337 
2338   final public DbProxyInfo dbProxyInfo() throws ParseException {
2339 DbProxyInfo info = null;
2340 Token id, gui, tok;
2341     jj_consume_token(LBRACKET);
2342     jj_consume_token(NAME);
2343     id = jj_consume_token(ID);
2344     jj_consume_token(HAS_GUI);
2345     gui = jj_consume_token(BOOLEAN);
2346      info = new DbProxyInfo(id.image);
2347      info.has_gui = (Boolean.valueOf(gui.image)).booleanValue();
2348     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2349     case HOST:
2350       jj_consume_token(HOST);
2351       tok = jj_consume_token(LITERAL);
2352        info.host = Misc.literalToString(tok.image);
2353       break;
2354     default:
2355       jj_la1[108] = jj_gen;
2356       ;
2357     }
2358     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2359     case ZEUS_EXTERNAL:
2360       jj_consume_token(ZEUS_EXTERNAL);
2361       tok = jj_consume_token(LITERAL);
2362        info.zeus_external = Misc.literalToString(tok.image);
2363       break;
2364     default:
2365       jj_la1[109] = jj_gen;
2366       ;
2367     }
2368     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2369     case DNS_FILE:
2370       jj_consume_token(DNS_FILE);
2371       tok = jj_consume_token(LITERAL);
2372        info.dns_file = Misc.literalToString(tok.image);
2373       break;
2374     default:
2375       jj_la1[110] = jj_gen;
2376       ;
2377     }
2378     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2379     case PATH:
2380       jj_consume_token(PATH);
2381       tok = jj_consume_token(LITERAL);
2382        info.path = Misc.literalToString(tok.image);
2383       break;
2384     default:
2385       jj_la1[111] = jj_gen;
2386       ;
2387     }
2388     jj_consume_token(RBRACKET);
2389      {if (true) return info;}
2390     throw new Error("Missing return statement in function");
2391   }
2392 
2393   final public FacilitatorInfo facilitatorInfo(GenerationPlan genplan) throws ParseException {
2394 FacilitatorInfo info = null;
2395 Token id, gui, tok;
2396 double period;
2397     jj_consume_token(LBRACKET);
2398     jj_consume_token(NAME);
2399     id = jj_consume_token(ID);
2400     jj_consume_token(PERIOD);
2401     period = Real();
2402     jj_consume_token(HAS_GUI);
2403     gui = jj_consume_token(BOOLEAN);
2404      String file = genplan.getOntologyFilename();
2405      info = new FacilitatorInfo(id.image,file);
2406      info.period = Double.toString(period);
2407      info.has_gui = (Boolean.valueOf(gui.image)).booleanValue();
2408     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2409     case HOST:
2410       jj_consume_token(HOST);
2411       tok = jj_consume_token(LITERAL);
2412        info.host = Misc.literalToString(tok.image);
2413       break;
2414     default:
2415       jj_la1[112] = jj_gen;
2416       ;
2417     }
2418     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2419     case ZEUS_EXTERNAL:
2420       jj_consume_token(ZEUS_EXTERNAL);
2421       tok = jj_consume_token(LITERAL);
2422        info.zeus_external = Misc.literalToString(tok.image);
2423       break;
2424     default:
2425       jj_la1[113] = jj_gen;
2426       ;
2427     }
2428     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2429     case DNS_FILE:
2430       jj_consume_token(DNS_FILE);
2431       tok = jj_consume_token(LITERAL);
2432        info.dns_file = Misc.literalToString(tok.image);
2433       break;
2434     default:
2435       jj_la1[114] = jj_gen;
2436       ;
2437     }
2438     jj_consume_token(RBRACKET);
2439      {if (true) return info;}
2440     throw new Error("Missing return statement in function");
2441   }
2442 
2443   final public VisualiserInfo visualiserInfo(GenerationPlan genplan) throws ParseException {
2444 VisualiserInfo info = null;
2445 Token id, period, gui, tok;
2446     jj_consume_token(LBRACKET);
2447     jj_consume_token(NAME);
2448     id = jj_consume_token(ID);
2449     jj_consume_token(HAS_GUI);
2450     gui = jj_consume_token(BOOLEAN);
2451      String file = genplan.getOntologyFilename();
2452      info = new VisualiserInfo(id.image,file);
2453      info.has_gui = (Boolean.valueOf(gui.image)).booleanValue();
2454     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2455     case HOST:
2456       jj_consume_token(HOST);
2457       tok = jj_consume_token(LITERAL);
2458        info.host = Misc.literalToString(tok.image);
2459       break;
2460     default:
2461       jj_la1[115] = jj_gen;
2462       ;
2463     }
2464     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2465     case ZEUS_EXTERNAL:
2466       jj_consume_token(ZEUS_EXTERNAL);
2467       tok = jj_consume_token(LITERAL);
2468        info.zeus_external = Misc.literalToString(tok.image);
2469       break;
2470     default:
2471       jj_la1[116] = jj_gen;
2472       ;
2473     }
2474     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2475     case DNS_FILE:
2476       jj_consume_token(DNS_FILE);
2477       tok = jj_consume_token(LITERAL);
2478        info.dns_file = Misc.literalToString(tok.image);
2479       break;
2480     default:
2481       jj_la1[117] = jj_gen;
2482       ;
2483     }
2484     jj_consume_token(RBRACKET);
2485      {if (true) return info;}
2486     throw new Error("Missing return statement in function");
2487   }
2488 
2489   final public NameserverInfo nameserverInfo() throws ParseException {
2490 NameserverInfo info = null;
2491 Token id, root, gui, tok;
2492 double grain;
2493     jj_consume_token(LBRACKET);
2494     jj_consume_token(NAME);
2495     id = jj_consume_token(ID);
2496     jj_consume_token(IS_ROOT);
2497     root = jj_consume_token(BOOLEAN);
2498     jj_consume_token(HAS_GUI);
2499     gui = jj_consume_token(BOOLEAN);
2500      info = new NameserverInfo(id.image,
2501         (Boolean.valueOf(root.image)).booleanValue());
2502      info.has_gui = (Boolean.valueOf(gui.image)).booleanValue();
2503     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2504     case HOST:
2505       jj_consume_token(HOST);
2506       tok = jj_consume_token(LITERAL);
2507        info.host = Misc.literalToString(tok.image);
2508       break;
2509     default:
2510       jj_la1[118] = jj_gen;
2511       ;
2512     }
2513     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2514     case ZEUS_EXTERNAL:
2515       jj_consume_token(ZEUS_EXTERNAL);
2516       tok = jj_consume_token(LITERAL);
2517        info.zeus_external = Misc.literalToString(tok.image);
2518       break;
2519     default:
2520       jj_la1[119] = jj_gen;
2521       ;
2522     }
2523     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2524     case DNS_FILE:
2525       jj_consume_token(DNS_FILE);
2526       tok = jj_consume_token(LITERAL);
2527        info.dns_file = Misc.literalToString(tok.image);
2528       break;
2529     default:
2530       jj_la1[120] = jj_gen;
2531       ;
2532     }
2533     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2534     case ADDRESS_OUTPUT_FILE:
2535       jj_consume_token(ADDRESS_OUTPUT_FILE);
2536       tok = jj_consume_token(LITERAL);
2537        info.address_output_file = Misc.literalToString(tok.image);
2538       break;
2539     default:
2540       jj_la1[121] = jj_gen;
2541       ;
2542     }
2543     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2544     case TIME_GRAIN:
2545       jj_consume_token(TIME_GRAIN);
2546       grain = Real();
2547        info.time_grain = Double.toString(grain);
2548       break;
2549     default:
2550       jj_la1[122] = jj_gen;
2551       ;
2552     }
2553     jj_consume_token(RBRACKET);
2554      {if (true) return info;}
2555     throw new Error("Missing return statement in function");
2556   }
2557 
2558   final public Vector taskList(OntologyDb db) throws ParseException {
2559 Vector result = new Vector();
2560 AbstractTask t = null;
2561     label_57:
2562     while (true) {
2563       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2564       case LBRACKET:
2565         ;
2566         break;
2567       default:
2568         jj_la1[123] = jj_gen;
2569         break label_57;
2570       }
2571       t = abstractTask(db);
2572       result.addElement(t);
2573     }
2574     {if (true) return result;}
2575     throw new Error("Missing return statement in function");
2576   }
2577 
2578   final public TaskInfo taskInfo(GeneratorModel genmodel) throws ParseException {
2579 TaskInfo info = null;
2580 Token id, generate, status,external;
2581     jj_consume_token(LBRACKET);
2582     jj_consume_token(FID);
2583     id = jj_consume_token(ID);
2584     jj_consume_token(GENERATE);
2585     generate = jj_consume_token(BOOLEAN);
2586     jj_consume_token(STATUS);
2587     status = jj_consume_token(ID);
2588      String name = genmodel.getTaskName(id.image);
2589      info = new TaskInfo(id.image,name);
2590      info.generate = (Boolean.valueOf(generate.image)).booleanValue();
2591      info.status = status.image;
2592     label_58:
2593     while (true) {
2594       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2595       case EXTERNAL:
2596         ;
2597         break;
2598       default:
2599         jj_la1[124] = jj_gen;
2600         break label_58;
2601       }
2602       jj_consume_token(EXTERNAL);
2603       external = jj_consume_token(ID);
2604           info.task_external = external.image;
2605     }
2606     jj_consume_token(RBRACKET);
2607        {if (true) return info;}
2608     throw new Error("Missing return statement in function");
2609   }
2610 
2611   final public void generator(FileHandler filer, GeneratorModel genmodel,
2612                GenerationPlan genplan, OntologyDb db, String dir) throws ParseException {
2613 AgentDescription agent = null;
2614 AbstractTask task = null;
2615 Token version, file, id, name, platform, directory;
2616 AgentInfo agentInfo = null;
2617 TaskInfo taskInfo = null;
2618 NameserverInfo nameserverInfo = null;
2619 FacilitatorInfo facilitatorInfo = null;
2620 VisualiserInfo visualiserInfo = null;
2621 DbProxyInfo dbProxyInfo = null;
2622 String filename;
2623 char sys_char = File.separatorChar;
2624 char zeus_char = SystemProps.getProperty("file.separator").charAt(0);
2625     jj_consume_token(BEGIN_GENERATOR);
2626     jj_consume_token(BEGIN_PREAMBLE);
2627     jj_consume_token(SYSTEM);
2628     jj_consume_token(LITERAL);
2629     jj_consume_token(VERSION);
2630     version = jj_consume_token(LITERAL);
2631     jj_consume_token(ONTOLOGY);
2632     file = jj_consume_token(LITERAL);
2633     jj_consume_token(END_PREAMBLE);
2634         String ver = Misc.literalToString(version.image);
2635         if ( !ver.equals(SystemProps.getProperty("version.id")) )
2636            filer.__setWarning("File and system versions are different");
2637 
2638         filename = Misc.literalToString(file.image);
2639         filename = filename.replace(zeus_char,sys_char);
2640         if ( filename.startsWith(".") )
2641            filename = dir + File.separator + filename;
2642 
2643         int status = db.openFile(new File(filename));
2644         if ( (status & OntologyDb.ERROR_MASK) != 0 ) {
2645            filer.__setError("File I/O Error: " + db.getError());
2646            {if (true) throw new ParseException("Error reading ontology database: " + filename +
2647                                     "\n" + db.getError());}
2648         }
2649         else if ( (status & OntologyDb.WARNING_MASK) != 0 ) {
2650            filer.__setWarning(db.getWarning());
2651         }
2652     jj_consume_token(BEGIN_AGENT_NAME_INDEX);
2653     label_59:
2654     while (true) {
2655       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2656       case ID:
2657         ;
2658         break;
2659       default:
2660         jj_la1[125] = jj_gen;
2661         break label_59;
2662       }
2663       id = jj_consume_token(ID);
2664       name = jj_consume_token(ID);
2665          genmodel.addAgentName(id.image,name.image);
2666     }
2667     jj_consume_token(END_AGENT_NAME_INDEX);
2668     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2669     case BEGIN_AGENT_ICON_INDEX:
2670       jj_consume_token(BEGIN_AGENT_ICON_INDEX);
2671       label_60:
2672       while (true) {
2673         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2674         case ID:
2675           ;
2676           break;
2677         default:
2678           jj_la1[126] = jj_gen;
2679           break label_60;
2680         }
2681         id = jj_consume_token(ID);
2682         name = jj_consume_token(LITERAL);
2683           filename = Misc.literalToString(name.image);
2684           filename = filename.replace(zeus_char,sys_char);
2685           if ( filename.startsWith(".") )
2686              filename = dir + File.separator + filename;
2687 
2688            genmodel.setAgentIcon(id.image,filename);
2689       }
2690       jj_consume_token(END_AGENT_ICON_INDEX);
2691       break;
2692     default:
2693       jj_la1[127] = jj_gen;
2694       ;
2695     }
2696     jj_consume_token(BEGIN_TASK_NAME_INDEX);
2697     label_61:
2698     while (true) {
2699       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2700       case ID:
2701         ;
2702         break;
2703       default:
2704         jj_la1[128] = jj_gen;
2705         break label_61;
2706       }
2707       id = jj_consume_token(ID);
2708       name = jj_consume_token(ID);
2709          genmodel.addTaskName(id.image,name.image);
2710     }
2711     jj_consume_token(END_TASK_NAME_INDEX);
2712     jj_consume_token(BEGIN_AGENT_LIST);
2713     label_62:
2714     while (true) {
2715       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2716       case LBRACKET:
2717         ;
2718         break;
2719       default:
2720         jj_la1[129] = jj_gen;
2721         break label_62;
2722       }
2723       agent = agentDescription(db);
2724          genmodel.addAgent(agent);
2725     }
2726     jj_consume_token(END_AGENT_LIST);
2727     jj_consume_token(BEGIN_TASK_LIST);
2728     label_63:
2729     while (true) {
2730       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2731       case LBRACKET:
2732         ;
2733         break;
2734       default:
2735         jj_la1[130] = jj_gen;
2736         break label_63;
2737       }
2738       task = abstractTask(db);
2739          genmodel.addTask(task);
2740     }
2741     jj_consume_token(END_TASK_LIST);
2742     jj_consume_token(BEGIN_GENERATIONPLAN);
2743     jj_consume_token(BEGIN_PREAMBLE);
2744     jj_consume_token(PLATFORM);
2745     platform = jj_consume_token(LITERAL);
2746     jj_consume_token(DIRECTORY);
2747     directory = jj_consume_token(LITERAL);
2748     jj_consume_token(END_PREAMBLE);
2749          filename = Misc.literalToString(directory.image);
2750          filename = filename.replace(zeus_char,sys_char);
2751          if ( filename.startsWith(".") )
2752             filename = dir +  File.separator + filename;
2753 
2754          genplan.setPlatform(Misc.literalToString(platform.image));
2755          genplan.setDirectory(filename);
2756     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2757     case BEGIN_AGENT_LIST:
2758       jj_consume_token(BEGIN_AGENT_LIST);
2759       label_64:
2760       while (true) {
2761         agentInfo = agentInfo(genmodel,genplan);
2762              genplan.setAgent(agentInfo);
2763         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2764         case LBRACKET:
2765           ;
2766           break;
2767         default:
2768           jj_la1[131] = jj_gen;
2769           break label_64;
2770         }
2771       }
2772       jj_consume_token(END_AGENT_LIST);
2773       break;
2774     default:
2775       jj_la1[132] = jj_gen;
2776       ;
2777     }
2778     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2779     case BEGIN_TASK_LIST:
2780       jj_consume_token(BEGIN_TASK_LIST);
2781       label_65:
2782       while (true) {
2783         taskInfo = taskInfo(genmodel);
2784              genplan.setTask(taskInfo);
2785         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2786         case LBRACKET:
2787           ;
2788           break;
2789         default:
2790           jj_la1[133] = jj_gen;
2791           break label_65;
2792         }
2793       }
2794       jj_consume_token(END_TASK_LIST);
2795       break;
2796     default:
2797       jj_la1[134] = jj_gen;
2798       ;
2799     }
2800     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2801     case BEGIN_NAMESERVER_LIST:
2802       jj_consume_token(BEGIN_NAMESERVER_LIST);
2803       label_66:
2804       while (true) {
2805         nameserverInfo = nameserverInfo();
2806              genplan.setNameserver(nameserverInfo);
2807         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2808         case LBRACKET:
2809           ;
2810           break;
2811         default:
2812           jj_la1[135] = jj_gen;
2813           break label_66;
2814         }
2815       }
2816       jj_consume_token(END_NAMESERVER_LIST);
2817       break;
2818     default:
2819       jj_la1[136] = jj_gen;
2820       ;
2821     }
2822     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2823     case BEGIN_FACILITATOR_LIST:
2824       jj_consume_token(BEGIN_FACILITATOR_LIST);
2825       label_67:
2826       while (true) {
2827         facilitatorInfo = facilitatorInfo(genplan);
2828              genplan.setFacilitator(facilitatorInfo);
2829         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2830         case LBRACKET:
2831           ;
2832           break;
2833         default:
2834           jj_la1[137] = jj_gen;
2835           break label_67;
2836         }
2837       }
2838       jj_consume_token(END_FACILITATOR_LIST);
2839       break;
2840     default:
2841       jj_la1[138] = jj_gen;
2842       ;
2843     }
2844     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2845     case BEGIN_VISUALISER_LIST:
2846       jj_consume_token(BEGIN_VISUALISER_LIST);
2847       label_68:
2848       while (true) {
2849         visualiserInfo = visualiserInfo(genplan);
2850              genplan.setVisualiser(visualiserInfo);
2851         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2852         case LBRACKET:
2853           ;
2854           break;
2855         default:
2856           jj_la1[139] = jj_gen;
2857           break label_68;
2858         }
2859       }
2860       jj_consume_token(END_VISUALISER_LIST);
2861       break;
2862     default:
2863       jj_la1[140] = jj_gen;
2864       ;
2865     }
2866     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2867     case BEGIN_DBPROXY_LIST:
2868       jj_consume_token(BEGIN_DBPROXY_LIST);
2869       label_69:
2870       while (true) {
2871         dbProxyInfo = dbProxyInfo();
2872              genplan.setDbProxy(dbProxyInfo);
2873         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2874         case LBRACKET:
2875           ;
2876           break;
2877         default:
2878           jj_la1[141] = jj_gen;
2879           break label_69;
2880         }
2881       }
2882       jj_consume_token(END_DBPROXY_LIST);
2883       break;
2884     default:
2885       jj_la1[142] = jj_gen;
2886       ;
2887     }
2888     jj_consume_token(END_GENERATIONPLAN);
2889     jj_consume_token(END_GENERATOR);
2890   }
2891 
2892   final public ValueFunction Expression(OntologyDb db) throws ParseException {
2893 ValueFunction fn = null;
2894     fn = ConditionalOrExpression(db);
2895     if (jj_2_12(2147483647)) {
2896       jj_consume_token(TCOLON);
2897       fn = constraint(fn,db);
2898     } else {
2899       ;
2900     }
2901     {if (true) return fn;}
2902     throw new Error("Missing return statement in function");
2903   }
2904 
2905   final public ValueFunction ConditionalOrExpression(OntologyDb db) throws ParseException {
2906 ValueFunction x = null, y = null;
2907     x = ConditionalAndExpression(db);
2908     label_70:
2909     while (true) {
2910       if (jj_2_13(2147483647)) {
2911         ;
2912       } else {
2913         break label_70;
2914       }
2915       jj_consume_token(OR);
2916       y = ConditionalAndExpression(db);
2917         x = new LogicalOrFn(x,y);
2918     }
2919     {if (true) return x;}
2920     throw new Error("Missing return statement in function");
2921   }
2922 
2923   final public ValueFunction ConditionalAndExpression(OntologyDb db) throws ParseException {
2924 ValueFunction x = null, y = null;
2925     x = InclusiveOrExpression(db);
2926     label_71:
2927     while (true) {
2928       if (jj_2_14(2147483647)) {
2929         ;
2930       } else {
2931         break label_71;
2932       }
2933       jj_consume_token(AND);
2934       y = InclusiveOrExpression(db);
2935         x = new LogicalAndFn(x,y);
2936     }
2937     {if (true) return x;}
2938     throw new Error("Missing return statement in function");
2939   }
2940 
2941   final public ValueFunction InclusiveOrExpression(OntologyDb db) throws ParseException {
2942 ValueFunction x = null, y = null;
2943     x = AndExpression(db);
2944     label_72:
2945     while (true) {
2946       if (jj_2_15(2147483647)) {
2947         ;
2948       } else {
2949         break label_72;
2950       }
2951       jj_consume_token(UOR);
2952       y = AndExpression(db);
2953         x = new OrFn(x,y);
2954     }
2955     {if (true) return x;}
2956     throw new Error("Missing return statement in function");
2957   }
2958 
2959   final public ValueFunction AndExpression(OntologyDb db) throws ParseException {
2960 ValueFunction x = null, y = null;
2961     x = RelationalExpression(db);
2962     label_73:
2963     while (true) {
2964       if (jj_2_16(2147483647)) {
2965         ;
2966       } else {
2967         break label_73;
2968       }
2969       jj_consume_token(UAND);
2970       y = RelationalExpression(db);
2971         x = new AndFn(x,y);
2972     }
2973     {if (true) return x;}
2974     throw new Error("Missing return statement in function");
2975   }
2976 
2977   final public ValueFunction RelationalExpression(OntologyDb db) throws ParseException {
2978 ValueFunction x = null, y = null;
2979 Token t;
2980     x = AdditiveExpression(db);
2981     label_74:
2982     while (true) {
2983       if (jj_2_17(2)) {
2984         ;
2985       } else {
2986         break label_74;
2987       }
2988       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2989       case EQ:
2990         t = jj_consume_token(EQ);
2991         break;
2992       case NE:
2993         t = jj_consume_token(NE);
2994         break;
2995       case LT:
2996         t = jj_consume_token(LT);
2997         break;
2998       case GT:
2999         t = jj_consume_token(GT);
3000         break;
3001       case LE:
3002         t = jj_consume_token(LE);
3003         break;
3004       case GE:
3005         t = jj_consume_token(GE);
3006         break;
3007       default:
3008         jj_la1[143] = jj_gen;
3009         jj_consume_token(-1);
3010         throw new ParseException();
3011       }
3012       y = AdditiveExpression(db);
3013         x= new ComparisonFn(x,y,t.image);
3014     }
3015     {if (true) return x;}
3016     throw new Error("Missing return statement in function");
3017   }
3018 
3019   final public ValueFunction AdditiveExpression(OntologyDb db) throws ParseException {
3020 ValueFunction x = null, y = null;
3021 Token t;
3022     x = MultiplicativeExpression(db);
3023     label_75:
3024     while (true) {
3025       if (jj_2_18(2147483647)) {
3026         ;
3027       } else {
3028         break label_75;
3029       }
3030       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3031       case PLUS:
3032         t = jj_consume_token(PLUS);
3033         break;
3034       case MINUS:
3035         t = jj_consume_token(MINUS);
3036         break;
3037       default:
3038         jj_la1[144] = jj_gen;
3039         jj_consume_token(-1);
3040         throw new ParseException();
3041       }
3042       y = MultiplicativeExpression(db);
3043         x = new ArithmeticFn(x,y,t.image);
3044     }
3045     {if (true) return x;}
3046     throw new Error("Missing return statement in function");
3047   }
3048 
3049   final public ValueFunction MultiplicativeExpression(OntologyDb db) throws ParseException {
3050 ValueFunction x = null, y = null;
3051 Token t;
3052     x = UnaryExpression(db);
3053     label_76:
3054     while (true) {
3055       if (jj_2_19(2147483647)) {
3056         ;
3057       } else {
3058         break label_76;
3059       }
3060       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3061       case MULTIPLY:
3062         t = jj_consume_token(MULTIPLY);
3063         break;
3064       case DIVIDE:
3065         t = jj_consume_token(DIVIDE);
3066         break;
3067       case REMAINDER:
3068         t = jj_consume_token(REMAINDER);
3069         break;
3070       default:
3071         jj_la1[145] = jj_gen;
3072         jj_consume_token(-1);
3073         throw new ParseException();
3074       }
3075       y = UnaryExpression(db);
3076         x = new ArithmeticFn(x,y,t.image);
3077     }
3078     {if (true) return x;}
3079     throw new Error("Missing return statement in function");
3080   }
3081 
3082   final public ValueFunction UnaryExpression(OntologyDb db) throws ParseException {
3083 ValueFunction x = null, y = null;
3084 Token t;
3085 Fact f;
3086     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3087     case PLUS:
3088     case MINUS:
3089       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3090       case PLUS:
3091         t = jj_consume_token(PLUS);
3092         break;
3093       case MINUS:
3094         t = jj_consume_token(MINUS);
3095         break;
3096       default:
3097         jj_la1[146] = jj_gen;
3098         jj_consume_token(-1);
3099         throw new ParseException();
3100       }
3101       x = UnaryExpression(db);
3102      x = new ArithmeticFn(new IntFn("0"),x,t.image);
3103       break;
3104     case NOT:
3105       jj_consume_token(NOT);
3106       x = UnaryExpression(db);
3107      x = new LogicalNotFn(x);
3108       break;
3109     case LE:
3110     case GE:
3111     case NE:
3112     case GT:
3113     case LT:
3114     case UNOT:
3115       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3116       case LE:
3117         t = jj_consume_token(LE);
3118         break;
3119       case GE:
3120         t = jj_consume_token(GE);
3121         break;
3122       case NE:
3123         t = jj_consume_token(NE);
3124         break;
3125       case GT:
3126         t = jj_consume_token(GT);
3127         break;
3128       case LT:
3129         t = jj_consume_token(LT);
3130         break;
3131       case UNOT:
3132         t = jj_consume_token(UNOT);
3133         break;
3134       default:
3135         jj_la1[147] = jj_gen;
3136         jj_consume_token(-1);
3137         throw new ParseException();
3138       }
3139       x = UnaryExpression(db);
3140      x = new ConstraintFn(t.image,x);
3141       break;
3142     default:
3143       jj_la1[148] = jj_gen;
3144       if (jj_2_21(2)) {
3145         f = fact(db);
3146     x = new FactFn(f);
3147       } else {
3148         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3149         case LCURLY:
3150         case BOOLEAN:
3151         case ID:
3152         case INTEGER:
3153         case REAL:
3154         case DATE:
3155         case TIMEFN:
3156         case LITERAL:
3157         case VARIABLE:
3158         case OBJECT:
3159         case FIELD:
3160           x = Literal(db);
3161           break;
3162         case IF:
3163           jj_consume_token(IF);
3164           x = ConditionalOrExpression(db);
3165           jj_consume_token(THEN);
3166           y = Expression(db);
3167      x = new ImplyFn(x,y);
3168           if (jj_2_20(2147483647)) {
3169             jj_consume_token(ELSE);
3170             y = Expression(db);
3171         x = new ElseFn(x,y);
3172           } else {
3173             ;
3174           }
3175           break;
3176         case LBRACKET:
3177           jj_consume_token(LBRACKET);
3178           x = Expression(db);
3179           jj_consume_token(RBRACKET);
3180           break;
3181         default:
3182           jj_la1[149] = jj_gen;
3183           jj_consume_token(-1);
3184           throw new ParseException();
3185         }
3186       }
3187     }
3188     {if (true) return x;}
3189     throw new Error("Missing return statement in function");
3190   }
3191 
3192   final public ValueFunction Literal(OntologyDb db) throws ParseException {
3193 Token t;
3194 ValueFunction x = null;
3195 Vector data = null;
3196     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3197     case INTEGER:
3198       t = jj_consume_token(INTEGER);
3199     x = new IntFn(t.image);
3200       break;
3201     case REAL:
3202       t = jj_consume_token(REAL);
3203     x = new RealFn(t.image);
3204       break;
3205     case DATE:
3206       t = jj_consume_token(DATE);
3207     x = new DateFn(t.image);
3208       break;
3209     case TIMEFN:
3210       t = jj_consume_token(TIMEFN);
3211     x = new TimeFn(t.image);
3212       break;
3213     case VARIABLE:
3214       t = jj_consume_token(VARIABLE);
3215     x = new VarFn(t.image);
3216       break;
3217     case OBJECT:
3218       t = jj_consume_token(OBJECT);
3219     x = new TypeFn(t.image);
3220       break;
3221     case LITERAL:
3222       t = jj_consume_token(LITERAL);
3223     x = new IdFn(Misc.literalToString(t.image));
3224       break;
3225     case BOOLEAN:
3226       t = jj_consume_token(BOOLEAN);
3227     x = BoolFn.newBoolFn(t.image);
3228       break;
3229     case LCURLY:
3230       jj_consume_token(LCURLY);
3231       data = expression_list(db);
3232       jj_consume_token(RCURLY);
3233     x = new VectorFn(data);
3234       break;
3235     default:
3236       jj_la1[150] = jj_gen;
3237       if (jj_2_22(2)) {
3238         x = method(db);
3239       } else if (jj_2_23(2)) {
3240         x = function(db);
3241       } else {
3242         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3243         case FIELD:
3244           t = jj_consume_token(FIELD);
3245     x = new FieldFn(t.image);
3246           break;
3247         case ID:
3248           t = jj_consume_token(ID);
3249     x = new IdFn(t.image);
3250           break;
3251         default:
3252           jj_la1[151] = jj_gen;
3253           jj_consume_token(-1);
3254           throw new ParseException();
3255         }
3256       }
3257     }
3258     {if (true) return x;}
3259     throw new Error("Missing return statement in function");
3260   }
3261 
3262   final public Vector expression_list(OntologyDb db) throws ParseException {
3263 Vector data = new Vector();
3264 ValueFunction fn = null;
3265     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3266     case LE:
3267     case GE:
3268     case NE:
3269     case GT:
3270     case LT:
3271     case PLUS:
3272     case MINUS:
3273     case NOT:
3274     case UNOT:
3275     case LBRACKET:
3276     case LCURLY:
3277     case IF:
3278     case BOOLEAN:
3279     case ID:
3280     case INTEGER:
3281     case REAL:
3282     case DATE:
3283     case TIMEFN:
3284     case LITERAL:
3285     case VARIABLE:
3286     case OBJECT:
3287     case FIELD:
3288       fn = Expression(db);
3289       data.addElement(fn);
3290       label_77:
3291       while (true) {
3292         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3293         case COMMA:
3294           ;
3295           break;
3296         default:
3297           jj_la1[152] = jj_gen;
3298           break label_77;
3299         }
3300         jj_consume_token(COMMA);
3301         fn = Expression(db);
3302         data.addElement(fn);
3303       }
3304       break;
3305     default:
3306       jj_la1[153] = jj_gen;
3307       ;
3308     }
3309     {if (true) return data;}
3310     throw new Error("Missing return statement in function");
3311   }
3312 
3313   final public ValueFunction function(OntologyDb db) throws ParseException {
3314 Vector data = null;
3315 Token id;
3316     id = jj_consume_token(ID);
3317     jj_consume_token(LBRACKET);
3318     data = expression_list(db);
3319     jj_consume_token(RBRACKET);
3320      {if (true) return new DefinedFn(id.image,data);}
3321     throw new Error("Missing return statement in function");
3322   }
3323 
3324   final public ValueFunction method(OntologyDb db) throws ParseException {
3325 Vector data = null;
3326 Token id;
3327     id = jj_consume_token(FIELD);
3328     jj_consume_token(LBRACKET);
3329     data = expression_list(db);
3330     jj_consume_token(RBRACKET);
3331      {if (true) return new MethodCallFn(id.image,data);}
3332     throw new Error("Missing return statement in function");
3333   }
3334 
3335   final public ValueFunction constraint(ValueFunction fn, OntologyDb db) throws ParseException {
3336 Vector data = null;
3337 Token id;
3338     id = jj_consume_token(ID);
3339     jj_consume_token(LBRACKET);
3340     data = expression_list(db);
3341     jj_consume_token(RBRACKET);
3342      {if (true) return new ConstraintBFn(fn,id.image,data);}
3343     throw new Error("Missing return statement in function");
3344   }
3345 
3346   final public double Real() throws ParseException {
3347 Token t;
3348 double x = 0;
3349     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3350     case INTEGER:
3351       t = jj_consume_token(INTEGER);
3352     x = (Double.valueOf(t.image)).doubleValue();
3353       break;
3354     case REAL:
3355       t = jj_consume_token(REAL);
3356     x = (Double.valueOf(t.image)).doubleValue();
3357       break;
3358     default:
3359       jj_la1[154] = jj_gen;
3360       jj_consume_token(-1);
3361       throw new ParseException();
3362     }
3363     {if (true) return x;}
3364     throw new Error("Missing return statement in function");
3365   }
3366 
3367   final private boolean jj_2_1(int xla) {
3368     jj_la = xla; jj_lastpos = jj_scanpos = token;
3369     boolean retval = !jj_3_1();
3370     jj_save(0, xla);
3371     return retval;
3372   }
3373 
3374   final private boolean jj_2_2(int xla) {
3375     jj_la = xla; jj_lastpos = jj_scanpos = token;
3376     boolean retval = !jj_3_2();
3377     jj_save(1, xla);
3378     return retval;
3379   }
3380 
3381   final private boolean jj_2_3(int xla) {
3382     jj_la = xla; jj_lastpos = jj_scanpos = token;
3383     boolean retval = !jj_3_3();
3384     jj_save(2, xla);
3385     return retval;
3386   }
3387 
3388   final private boolean jj_2_4(int xla) {
3389     jj_la = xla; jj_lastpos = jj_scanpos = token;
3390     boolean retval = !jj_3_4();
3391     jj_save(3, xla);
3392     return retval;
3393   }
3394 
3395   final private boolean jj_2_5(int xla) {
3396     jj_la = xla; jj_lastpos = jj_scanpos = token;
3397     boolean retval = !jj_3_5();
3398     jj_save(4, xla);
3399     return retval;
3400   }
3401 
3402   final private boolean jj_2_6(int xla) {
3403     jj_la = xla; jj_lastpos = jj_scanpos = token;
3404     boolean retval = !jj_3_6();
3405     jj_save(5, xla);
3406     return retval;
3407   }
3408 
3409   final private boolean jj_2_7(int xla) {
3410     jj_la = xla; jj_lastpos = jj_scanpos = token;
3411     boolean retval = !jj_3_7();
3412     jj_save(6, xla);
3413     return retval;
3414   }
3415 
3416   final private boolean jj_2_8(int xla) {
3417     jj_la = xla; jj_lastpos = jj_scanpos = token;
3418     boolean retval = !jj_3_8();
3419     jj_save(7, xla);
3420     return retval;
3421   }
3422 
3423   final private boolean jj_2_9(int xla) {
3424     jj_la = xla; jj_lastpos = jj_scanpos = token;
3425     boolean retval = !jj_3_9();
3426     jj_save(8, xla);
3427     return retval;
3428   }
3429 
3430   final private boolean jj_2_10(int xla) {
3431     jj_la = xla; jj_lastpos = jj_scanpos = token;
3432     boolean retval = !jj_3_10();
3433     jj_save(9, xla);
3434     return retval;
3435   }
3436 
3437   final private boolean jj_2_11(int xla) {
3438     jj_la = xla; jj_lastpos = jj_scanpos = token;
3439     boolean retval = !jj_3_11();
3440     jj_save(10, xla);
3441     return retval;
3442   }
3443 
3444   final private boolean jj_2_12(int xla) {
3445     jj_la = xla; jj_lastpos = jj_scanpos = token;
3446     boolean retval = !jj_3_12();
3447     jj_save(11, xla);
3448     return retval;
3449   }
3450 
3451   final private boolean jj_2_13(int xla) {
3452     jj_la = xla; jj_lastpos = jj_scanpos = token;
3453     boolean retval = !jj_3_13();
3454     jj_save(12, xla);
3455     return retval;
3456   }
3457 
3458   final private boolean jj_2_14(int xla) {
3459     jj_la = xla; jj_lastpos = jj_scanpos = token;
3460     boolean retval = !jj_3_14();
3461     jj_save(13, xla);
3462     return retval;
3463   }
3464 
3465   final private boolean jj_2_15(int xla) {
3466     jj_la = xla; jj_lastpos = jj_scanpos = token;
3467     boolean retval = !jj_3_15();
3468     jj_save(14, xla);
3469     return retval;
3470   }
3471 
3472   final private boolean jj_2_16(int xla) {
3473     jj_la = xla; jj_lastpos = jj_scanpos = token;
3474     boolean retval = !jj_3_16();
3475     jj_save(15, xla);
3476     return retval;
3477   }
3478 
3479   final private boolean jj_2_17(int xla) {
3480     jj_la = xla; jj_lastpos = jj_scanpos = token;
3481     boolean retval = !jj_3_17();
3482     jj_save(16, xla);
3483     return retval;
3484   }
3485 
3486   final private boolean jj_2_18(int xla) {
3487     jj_la = xla; jj_lastpos = jj_scanpos = token;
3488     boolean retval = !jj_3_18();
3489     jj_save(17, xla);
3490     return retval;
3491   }
3492 
3493   final private boolean jj_2_19(int xla) {
3494     jj_la = xla; jj_lastpos = jj_scanpos = token;
3495     boolean retval = !jj_3_19();
3496     jj_save(18, xla);
3497     return retval;
3498   }
3499 
3500   final private boolean jj_2_20(int xla) {
3501     jj_la = xla; jj_lastpos = jj_scanpos = token;
3502     boolean retval = !jj_3_20();
3503     jj_save(19, xla);
3504     return retval;
3505   }
3506 
3507   final private boolean jj_2_21(int xla) {
3508     jj_la = xla; jj_lastpos = jj_scanpos = token;
3509     boolean retval = !jj_3_21();
3510     jj_save(20, xla);
3511     return retval;
3512   }
3513 
3514   final private boolean jj_2_22(int xla) {
3515     jj_la = xla; jj_lastpos = jj_scanpos = token;
3516     boolean retval = !jj_3_22();
3517     jj_save(21, xla);
3518     return retval;
3519   }
3520 
3521   final private boolean jj_2_23(int xla) {
3522     jj_la = xla; jj_lastpos = jj_scanpos = token;
3523     boolean retval = !jj_3_23();
3524     jj_save(22, xla);
3525     return retval;
3526   }
3527 
3528   final private boolean jj_3R_101() {
3529     Token xsp;
3530     xsp = jj_scanpos;
3531     if (jj_3R_107()) {
3532     jj_scanpos = xsp;
3533     if (jj_3R_108()) {
3534     jj_scanpos = xsp;
3535     if (jj_3R_109()) {
3536     jj_scanpos = xsp;
3537     if (jj_3R_110()) {
3538     jj_scanpos = xsp;
3539     if (jj_3R_111()) {
3540     jj_scanpos = xsp;
3541     if (jj_3R_112()) return true;
3542     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3543     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3544     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3545     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3546     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3547     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3548     return false;
3549   }
3550 
3551   final private boolean jj_3_13() {
3552     if (jj_scan_token(OR)) return true;
3553     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3554     return false;
3555   }
3556 
3557   final private boolean jj_3_6() {
3558     if (jj_3R_79()) return true;
3559     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3560     return false;
3561   }
3562 
3563   final private boolean jj_3R_86() {
3564     if (jj_scan_token(LE)) return true;
3565     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3566     return false;
3567   }
3568 
3569   final private boolean jj_3R_100() {
3570     if (jj_scan_token(NOT)) return true;
3571     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3572     return false;
3573   }
3574 
3575   final private boolean jj_3R_105() {
3576     if (jj_scan_token(PLUS)) return true;
3577     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3578     return false;
3579   }
3580 
3581   final private boolean jj_3_5() {
3582     if (jj_3R_78()) return true;
3583     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3584     return false;
3585   }
3586 
3587   final private boolean jj_3R_99() {
3588     Token xsp;
3589     xsp = jj_scanpos;
3590     if (jj_3R_105()) {
3591     jj_scanpos = xsp;
3592     if (jj_3R_106()) return true;
3593     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3594     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3595     return false;
3596   }
3597 
3598   final private boolean jj_3R_79() {
3599     if (jj_scan_token(LBRACKET)) return true;
3600     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3601     if (jj_scan_token(SUMMARY)) return true;
3602     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3603     return false;
3604   }
3605 
3606   final private boolean jj_3R_98() {
3607     Token xsp;
3608     xsp = jj_scanpos;
3609     if (jj_3R_99()) {
3610     jj_scanpos = xsp;
3611     if (jj_3R_100()) {
3612     jj_scanpos = xsp;
3613     if (jj_3R_101()) {
3614     jj_scanpos = xsp;
3615     if (jj_3_21()) {
3616     jj_scanpos = xsp;
3617     if (jj_3R_102()) {
3618     jj_scanpos = xsp;
3619     if (jj_3R_103()) {
3620     jj_scanpos = xsp;
3621     if (jj_3R_104()) return true;
3622     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3623     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3624     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3625     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3626     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3627     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3628     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3629     return false;
3630   }
3631 
3632   final private boolean jj_3R_91() {
3633     if (jj_scan_token(MULTIPLY)) return true;
3634     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3635     return false;
3636   }
3637 
3638   final private boolean jj_3_19() {
3639     Token xsp;
3640     xsp = jj_scanpos;
3641     if (jj_3R_91()) {
3642     jj_scanpos = xsp;
3643     if (jj_3R_92()) {
3644     jj_scanpos = xsp;
3645     if (jj_3R_93()) return true;
3646     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3647     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3648     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3649     return false;
3650   }
3651 
3652   final private boolean jj_3R_96() {
3653     if (jj_scan_token(ID)) return true;
3654     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3655     if (jj_scan_token(LBRACKET)) return true;
3656     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3657     return false;
3658   }
3659 
3660   final private boolean jj_3R_85() {
3661     if (jj_scan_token(GT)) return true;
3662     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3663     return false;
3664   }
3665 
3666   final private boolean jj_3_11() {
3667     if (jj_scan_token(MINUS)) return true;
3668     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3669     if (jj_scan_token(ID)) return true;
3670     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3671     return false;
3672   }
3673 
3674   final private boolean jj_3_12() {
3675     if (jj_scan_token(TCOLON)) return true;
3676     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3677     return false;
3678   }
3679 
3680   final private boolean jj_3R_90() {
3681     if (jj_scan_token(MINUS)) return true;
3682     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3683     return false;
3684   }
3685 
3686   final private boolean jj_3_4() {
3687     if (jj_scan_token(ACQUAINTANCES)) return true;
3688     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3689     if (jj_scan_token(LBRACKET)) return true;
3690     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3691     return false;
3692   }
3693 
3694   final private boolean jj_3_18() {
3695     Token xsp;
3696     xsp = jj_scanpos;
3697     if (jj_3R_89()) {
3698     jj_scanpos = xsp;
3699     if (jj_3R_90()) return true;
3700     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3701     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3702     return false;
3703   }
3704 
3705   final private boolean jj_3R_84() {
3706     if (jj_scan_token(LT)) return true;
3707     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3708     return false;
3709   }
3710 
3711   final private boolean jj_3R_89() {
3712     if (jj_scan_token(PLUS)) return true;
3713     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3714     return false;
3715   }
3716 
3717   final private boolean jj_3R_97() {
3718     if (jj_3R_98()) return true;
3719     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3720     return false;
3721   }
3722 
3723   final private boolean jj_3_10() {
3724     if (jj_scan_token(LBRACKET)) return true;
3725     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3726     if (jj_scan_token(NEGATION)) return true;
3727     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3728     return false;
3729   }
3730 
3731   final private boolean jj_3_3() {
3732     if (jj_scan_token(PROTOCOLS)) return true;
3733     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3734     if (jj_scan_token(LBRACKET)) return true;
3735     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3736     return false;
3737   }
3738 
3739   final private boolean jj_3R_83() {
3740     if (jj_scan_token(NE)) return true;
3741     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3742     return false;
3743   }
3744 
3745   final private boolean jj_3R_112() {
3746     if (jj_scan_token(UNOT)) return true;
3747     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3748     return false;
3749   }
3750 
3751   final private boolean jj_3_9() {
3752     if (jj_scan_token(LBRACKET)) return true;
3753     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3754     if (jj_scan_token(TEST)) return true;
3755     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3756     return false;
3757   }
3758 
3759   final private boolean jj_3R_88() {
3760     if (jj_3R_97()) return true;
3761     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3762     return false;
3763   }
3764 
3765   final private boolean jj_3R_124() {
3766     if (jj_scan_token(ID)) return true;
3767     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3768     return false;
3769   }
3770 
3771   final private boolean jj_3R_123() {
3772     if (jj_scan_token(FIELD)) return true;
3773     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3774     return false;
3775   }
3776 
3777   final private boolean jj_3R_81() {
3778     if (jj_scan_token(LBRACKET)) return true;
3779     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3780     if (jj_scan_token(SCRIPT)) return true;
3781     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3782     return false;
3783   }
3784 
3785   final private boolean jj_3_23() {
3786     if (jj_3R_96()) return true;
3787     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3788     return false;
3789   }
3790 
3791   final private boolean jj_3_2() {
3792     if (jj_scan_token(INITIAL_FACTS)) return true;
3793     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3794     if (jj_scan_token(LBRACKET)) return true;
3795     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3796     return false;
3797   }
3798 
3799   final private boolean jj_3R_82() {
3800     if (jj_scan_token(EQ)) return true;
3801     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3802     return false;
3803   }
3804 
3805   final private boolean jj_3_22() {
3806     if (jj_3R_95()) return true;
3807     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3808     return false;
3809   }
3810 
3811   final private boolean jj_3R_122() {
3812     if (jj_scan_token(LCURLY)) return true;
3813     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3814     return false;
3815   }
3816 
3817   final private boolean jj_3R_111() {
3818     if (jj_scan_token(LT)) return true;
3819     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3820     return false;
3821   }
3822 
3823   final private boolean jj_3_17() {
3824     Token xsp;
3825     xsp = jj_scanpos;
3826     if (jj_3R_82()) {
3827     jj_scanpos = xsp;
3828     if (jj_3R_83()) {
3829     jj_scanpos = xsp;
3830     if (jj_3R_84()) {
3831     jj_scanpos = xsp;
3832     if (jj_3R_85()) {
3833     jj_scanpos = xsp;
3834     if (jj_3R_86()) {
3835     jj_scanpos = xsp;
3836     if (jj_3R_87()) return true;
3837     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3838     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3839     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3840     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3841     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3842     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3843     if (jj_3R_88()) return true;
3844     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3845     return false;
3846   }
3847 
3848   final private boolean jj_3R_121() {
3849     if (jj_scan_token(BOOLEAN)) return true;
3850     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3851     return false;
3852   }
3853 
3854   final private boolean jj_3R_94() {
3855     if (jj_scan_token(LBRACKET)) return true;
3856     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3857     if (jj_scan_token(TYPE)) return true;
3858     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3859     return false;
3860   }
3861 
3862   final private boolean jj_3R_120() {
3863     if (jj_scan_token(LITERAL)) return true;
3864     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3865     return false;
3866   }
3867 
3868   final private boolean jj_3_16() {
3869     if (jj_scan_token(UAND)) return true;
3870     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3871     return false;
3872   }
3873 
3874   final private boolean jj_3R_119() {
3875     if (jj_scan_token(OBJECT)) return true;
3876     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3877     return false;
3878   }
3879 
3880   final private boolean jj_3R_118() {
3881     if (jj_scan_token(VARIABLE)) return true;
3882     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3883     return false;
3884   }
3885 
3886   final private boolean jj_3R_117() {
3887     if (jj_scan_token(TIMEFN)) return true;
3888     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3889     return false;
3890   }
3891 
3892   final private boolean jj_3_1() {
3893     if (jj_scan_token(TASKS)) return true;
3894     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3895     if (jj_scan_token(LBRACKET)) return true;
3896     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3897     return false;
3898   }
3899 
3900   final private boolean jj_3R_110() {
3901     if (jj_scan_token(GT)) return true;
3902     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3903     return false;
3904   }
3905 
3906   final private boolean jj_3R_116() {
3907     if (jj_scan_token(DATE)) return true;
3908     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3909     return false;
3910   }
3911 
3912   final private boolean jj_3R_115() {
3913     if (jj_scan_token(REAL)) return true;
3914     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3915     return false;
3916   }
3917 
3918   final private boolean jj_3R_114() {
3919     if (jj_scan_token(INTEGER)) return true;
3920     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3921     return false;
3922   }
3923 
3924   final private boolean jj_3R_113() {
3925     Token xsp;
3926     xsp = jj_scanpos;
3927     if (jj_3R_114()) {
3928     jj_scanpos = xsp;
3929     if (jj_3R_115()) {
3930     jj_scanpos = xsp;
3931     if (jj_3R_116()) {
3932     jj_scanpos = xsp;
3933     if (jj_3R_117()) {
3934     jj_scanpos = xsp;
3935     if (jj_3R_118()) {
3936     jj_scanpos = xsp;
3937     if (jj_3R_119()) {
3938     jj_scanpos = xsp;
3939     if (jj_3R_120()) {
3940     jj_scanpos = xsp;
3941     if (jj_3R_121()) {
3942     jj_scanpos = xsp;
3943     if (jj_3R_122()) {
3944     jj_scanpos = xsp;
3945     if (jj_3_22()) {
3946     jj_scanpos = xsp;
3947     if (jj_3_23()) {
3948     jj_scanpos = xsp;
3949     if (jj_3R_123()) {
3950     jj_scanpos = xsp;
3951     if (jj_3R_124()) return true;
3952     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3953     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3954     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3955     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3956     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3957     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3958     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3959     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3960     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3961     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3962     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3963     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3964     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3965     return false;
3966   }
3967 
3968   final private boolean jj_3_15() {
3969     if (jj_scan_token(UOR)) return true;
3970     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3971     return false;
3972   }
3973 
3974   final private boolean jj_3_20() {
3975     if (jj_scan_token(ELSE)) return true;
3976     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3977     return false;
3978   }
3979 
3980   final private boolean jj_3R_109() {
3981     if (jj_scan_token(NE)) return true;
3982     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3983     return false;
3984   }
3985 
3986   final private boolean jj_3R_78() {
3987     if (jj_scan_token(LBRACKET)) return true;
3988     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3989     if (jj_scan_token(PRIMITIVE)) return true;
3990     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3991     return false;
3992   }
3993 
3994   final private boolean jj_3R_104() {
3995     if (jj_scan_token(LBRACKET)) return true;
3996     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3997     return false;
3998   }
3999 
4000   final private boolean jj_3R_108() {
4001     if (jj_scan_token(GE)) return true;
4002     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4003     return false;
4004   }
4005 
4006   final private boolean jj_3_14() {
4007     if (jj_scan_token(AND)) return true;
4008     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4009     return false;
4010   }
4011 
4012   final private boolean jj_3R_93() {
4013     if (jj_scan_token(REMAINDER)) return true;
4014     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4015     return false;
4016   }
4017 
4018   final private boolean jj_3R_106() {
4019     if (jj_scan_token(MINUS)) return true;
4020     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4021     return false;
4022   }
4023 
4024   final private boolean jj_3R_87() {
4025     if (jj_scan_token(GE)) return true;
4026     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4027     return false;
4028   }
4029 
4030   final private boolean jj_3R_103() {
4031     if (jj_scan_token(IF)) return true;
4032     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4033     return false;
4034   }
4035 
4036   final private boolean jj_3R_102() {
4037     if (jj_3R_113()) return true;
4038     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4039     return false;
4040   }
4041 
4042   final private boolean jj_3_8() {
4043     if (jj_3R_81()) return true;
4044     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4045     return false;
4046   }
4047 
4048   final private boolean jj_3_21() {
4049     if (jj_3R_94()) return true;
4050     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4051     return false;
4052   }
4053 
4054   final private boolean jj_3R_80() {
4055     if (jj_scan_token(LBRACKET)) return true;
4056     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4057     if (jj_scan_token(BEHAVIOUR)) return true;
4058     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4059     return false;
4060   }
4061 
4062   final private boolean jj_3R_107() {
4063     if (jj_scan_token(LE)) return true;
4064     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4065     return false;
4066   }
4067 
4068   final private boolean jj_3R_92() {
4069     if (jj_scan_token(DIVIDE)) return true;
4070     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4071     return false;
4072   }
4073 
4074   final private boolean jj_3R_95() {
4075     if (jj_scan_token(FIELD)) return true;
4076     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4077     if (jj_scan_token(LBRACKET)) return true;
4078     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4079     return false;
4080   }
4081 
4082   final private boolean jj_3_7() {
4083     if (jj_3R_80()) return true;
4084     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
4085     return false;
4086   }
4087 
4088   public ParserTokenManager token_source;
4089   SimpleCharStream jj_input_stream;
4090   public Token token, jj_nt;
4091   private int jj_ntk;
4092   private Token jj_scanpos, jj_lastpos;
4093   private int jj_la;
4094   public boolean lookingAhead = false;
4095   private boolean jj_semLA;
4096   private int jj_gen;
4097   final private int[] jj_la1 = new int[155];
4098   final private int[] jj_la1_0 = {0x80000000,0x80000000,0x80000000,0x0,0x80000000,0x0,0x80000000,0x80000000,0x80000000,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x80000000,0x0,0x80000000,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x80000000,0x0,0x80000000,0x80000000,0x0,0x80000000,0x0,0x80000000,0x80000000,0x0,0x80000000,0x80000000,0x80000000,0x981fc000,0x80000000,0x80000000,0x0,0x0,0x80000000,0x0,0x981fc000,0x0,0x0,0x0,0x981fc000,0x0,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x0,0x7e000,0x180000,0xe00000,0x180000,0x1007c000,0x181fc000,0x80000000,0x0,0x0,0x0,0x981fc000,0x0,};
4099   final private int[] jj_la1_1 = {0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x402,0x0,0x0,0x0,0x0,0x0,0x0,0x402,0x0,0x1000,0x0,0x402,0x400,0x0,0x0,0x10000000,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x402,0x2,0x0,0x8,0x402,0x0,};
4100   final private int[] jj_la1_2 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x20000000,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0x200,0x0,0x800,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
4101   final private int[] jj_la1_3 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0x4,0x8,0x20,0x10,0x40,0x80,0x0,0x100,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x0,0x4000000,0x0,0x0,0x0,0x0,0x0,0x2000000,0x0,0x4000000,0x0,0x8000000,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x2000000,0x0,0x0,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
4102   final private int[] jj_la1_4 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x10,0x0,0x20,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x1000,0x0,0x0,0x0,0x800,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7000000,0x0,0x0,0x60000000,0x0,0x800000,0x0,0x0,0x0,0xffe00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
4103   final private int[] jj_la1_5 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x60,0x0,0x7d,0x0,0x0,0x0,0x200,0x800,0x1000,0x0,0x800,0x1000,0x40000,0x0,0x800,0x1000,0x0,0x800,0x1000,0x0,0x800,0x1000,0x4000,0x8000,0x0,0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
4104   final private int[] jj_la1_6 = {0x0,0x0,0x0,0x0,0x0,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x20000,0x0,0x20000,0x0,0x0,0x0,0x20000,0x0,0x20000,0x0,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x800000,0x0,0x800000,0x800000,0x0,0x0,0x3ff0000,0x0,0x0,0x0,0x800000,0x0,0x0,0x3ff0000,0x0,0x0,0x0,0x3ff0000,0x0,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x20000,0x0,0x20000,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x40,0x0,0x100,0x0,0x400,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x3ff0000,0x1fd0000,0x2020000,0x0,0x3ff0000,0xc0000,};
4105   final private JJCalls[] jj_2_rtns = new JJCalls[23];
4106   private boolean jj_rescan = false;
4107   private int jj_gc = 0;
4108 
4109   public Parser(java.io.InputStream stream) {
4110     jj_input_stream = new SimpleCharStream(stream, 1, 1);
4111     token_source = new ParserTokenManager(jj_input_stream);
4112     token = new Token();
4113     jj_ntk = -1;
4114     jj_gen = 0;
4115     for (int i = 0; i < 155; i++) jj_la1[i] = -1;
4116     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
4117   }
4118 
4119   public void ReInit(java.io.InputStream stream) {
4120     jj_input_stream.ReInit(stream, 1, 1);
4121     token_source.ReInit(jj_input_stream);
4122     token = new Token();
4123     jj_ntk = -1;
4124     jj_gen = 0;
4125     for (int i = 0; i < 155; i++) jj_la1[i] = -1;
4126     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
4127   }
4128 
4129   public Parser(java.io.Reader stream) {
4130     jj_input_stream = new SimpleCharStream(stream, 1, 1);
4131     token_source = new ParserTokenManager(jj_input_stream);
4132     token = new Token();
4133     jj_ntk = -1;
4134     jj_gen = 0;
4135     for (int i = 0; i < 155; i++) jj_la1[i] = -1;
4136     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
4137   }
4138 
4139   public void ReInit(java.io.Reader stream) {
4140     jj_input_stream.ReInit(stream, 1, 1);
4141     token_source.ReInit(jj_input_stream);
4142     token = new Token();
4143     jj_ntk = -1;
4144     jj_gen = 0;
4145     for (int i = 0; i < 155; i++) jj_la1[i] = -1;
4146     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
4147   }
4148 
4149   public Parser(ParserTokenManager tm) {
4150     token_source = tm;
4151     token = new Token();
4152     jj_ntk = -1;
4153     jj_gen = 0;
4154     for (int i = 0; i < 155; i++) jj_la1[i] = -1;
4155     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
4156   }
4157 
4158   public void ReInit(ParserTokenManager tm) {
4159     token_source = tm;
4160     token = new Token();
4161     jj_ntk = -1;
4162     jj_gen = 0;
4163     for (int i = 0; i < 155; i++) jj_la1[i] = -1;
4164     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
4165   }
4166 
4167   final private Token jj_consume_token(int kind) throws ParseException {
4168     Token oldToken;
4169     if ((oldToken = token).next != null) token = token.next;
4170     else token = token.next = token_source.getNextToken();
4171     jj_ntk = -1;
4172     if (token.kind == kind) {
4173       jj_gen++;
4174       if (++jj_gc > 100) {
4175         jj_gc = 0;
4176         for (int i = 0; i < jj_2_rtns.length; i++) {
4177           JJCalls c = jj_2_rtns[i];
4178           while (c != null) {
4179             if (c.gen < jj_gen) c.first = null;
4180             c = c.next;
4181           }
4182         }
4183       }
4184       return token;
4185     }
4186     token = oldToken;
4187     jj_kind = kind;
4188     throw generateParseException();
4189   }
4190 
4191   final private boolean jj_scan_token(int kind) {
4192     if (jj_scanpos == jj_lastpos) {
4193       jj_la--;
4194       if (jj_scanpos.next == null) {
4195         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
4196       } else {
4197         jj_lastpos = jj_scanpos = jj_scanpos.next;
4198       }
4199     } else {
4200       jj_scanpos = jj_scanpos.next;
4201     }
4202     if (jj_rescan) {
4203       int i = 0; Token tok = token;
4204       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
4205       if (tok != null) jj_add_error_token(kind, i);
4206     }
4207     return (jj_scanpos.kind != kind);
4208   }
4209 
4210   final public Token getNextToken() {
4211     if (token.next != null) token = token.next;
4212     else token = token.next = token_source.getNextToken();
4213     jj_ntk = -1;
4214     jj_gen++;
4215     return token;
4216   }
4217 
4218   final public Token getToken(int index) {
4219     Token t = lookingAhead ? jj_scanpos : token;
4220     for (int i = 0; i < index; i++) {
4221       if (t.next != null) t = t.next;
4222       else t = t.next = token_source.getNextToken();
4223     }
4224     return t;
4225   }
4226 
4227   final private int jj_ntk() {
4228     if ((jj_nt=token.next) == null)
4229       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
4230     else
4231       return (jj_ntk = jj_nt.kind);
4232   }
4233 
4234   private java.util.Vector jj_expentries = new java.util.Vector();
4235   private int[] jj_expentry;
4236   private int jj_kind = -1;
4237   private int[] jj_lasttokens = new int[100];
4238   private int jj_endpos;
4239 
4240   private void jj_add_error_token(int kind, int pos) {
4241     if (pos >= 100) return;
4242     if (pos == jj_endpos + 1) {
4243       jj_lasttokens[jj_endpos++] = kind;
4244     } else if (jj_endpos != 0) {
4245       jj_expentry = new int[jj_endpos];
4246       for (int i = 0; i < jj_endpos; i++) {
4247         jj_expentry[i] = jj_lasttokens[i];
4248       }
4249       boolean exists = false;
4250       for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
4251         int[] oldentry = (int[])(enum.nextElement());
4252         if (oldentry.length == jj_expentry.length) {
4253           exists = true;
4254           for (int i = 0; i < jj_expentry.length; i++) {
4255             if (oldentry[i] != jj_expentry[i]) {
4256               exists = false;
4257               break;
4258             }
4259           }
4260           if (exists) break;
4261         }
4262       }
4263       if (!exists) jj_expentries.addElement(jj_expentry);
4264       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
4265     }
4266   }
4267 
4268   final public ParseException generateParseException() {
4269     jj_expentries.removeAllElements();
4270     boolean[] la1tokens = new boolean[222];
4271     for (int i = 0; i < 222; i++) {
4272       la1tokens[i] = false;
4273     }
4274     if (jj_kind >= 0) {
4275       la1tokens[jj_kind] = true;
4276       jj_kind = -1;
4277     }
4278     for (int i = 0; i < 155; i++) {
4279       if (jj_la1[i] == jj_gen) {
4280         for (int j = 0; j < 32; j++) {
4281           if ((jj_la1_0[i] & (1<<j)) != 0) {
4282             la1tokens[j] = true;
4283           }
4284           if ((jj_la1_1[i] & (1<<j)) != 0) {
4285             la1tokens[32+j] = true;
4286           }
4287           if ((jj_la1_2[i] & (1<<j)) != 0) {
4288             la1tokens[64+j] = true;
4289           }
4290           if ((jj_la1_3[i] & (1<<j)) != 0) {
4291             la1tokens[96+j] = true;
4292           }
4293           if ((jj_la1_4[i] & (1<<j)) != 0) {
4294             la1tokens[128+j] = true;
4295           }
4296           if ((jj_la1_5[i] & (1<<j)) != 0) {
4297             la1tokens[160+j] = true;
4298           }
4299           if ((jj_la1_6[i] & (1<<j)) != 0) {
4300             la1tokens[192+j] = true;
4301           }
4302         }
4303       }
4304     }
4305     for (int i = 0; i < 222; i++) {
4306       if (la1tokens[i]) {
4307         jj_expentry = new int[1];
4308         jj_expentry[0] = i;
4309         jj_expentries.addElement(jj_expentry);
4310       }
4311     }
4312     jj_endpos = 0;
4313     jj_rescan_token();
4314     jj_add_error_token(0, 0);
4315     int[][] exptokseq = new int[jj_expentries.size()][];
4316     for (int i = 0; i < jj_expentries.size(); i++) {
4317       exptokseq[i] = (int[])jj_expentries.elementAt(i);
4318     }
4319     return new ParseException(token, exptokseq, tokenImage);
4320   }
4321 
4322   final public void enable_tracing() {
4323   }
4324 
4325   final public void disable_tracing() {
4326   }
4327 
4328   final private void jj_rescan_token() {
4329     jj_rescan = true;
4330     for (int i = 0; i < 23; i++) {
4331       JJCalls p = jj_2_rtns[i];
4332       do {
4333         if (p.gen > jj_gen) {
4334           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
4335           switch (i) {
4336             case 0: jj_3_1(); break;
4337             case 1: jj_3_2(); break;
4338             case 2: jj_3_3(); break;
4339             case 3: jj_3_4(); break;
4340             case 4: jj_3_5(); break;
4341             case 5: jj_3_6(); break;
4342             case 6: jj_3_7(); break;
4343             case 7: jj_3_8(); break;
4344             case 8: jj_3_9(); break;
4345             case 9: jj_3_10(); break;
4346             case 10: jj_3_11(); break;
4347             case 11: jj_3_12(); break;
4348             case 12: jj_3_13(); break;
4349             case 13: jj_3_14(); break;
4350             case 14: jj_3_15(); break;
4351             case 15: jj_3_16(); break;
4352             case 16: jj_3_17(); break;
4353             case 17: jj_3_18(); break;
4354             case 18: jj_3_19(); break;
4355             case 19: jj_3_20(); break;
4356             case 20: jj_3_21(); break;
4357             case 21: jj_3_22(); break;
4358             case 22: jj_3_23(); break;
4359           }
4360         }
4361         p = p.next;
4362       } while (p != null);
4363     }
4364     jj_rescan = false;
4365   }
4366 
4367   final private void jj_save(int index, int xla) {
4368     JJCalls p = jj_2_rtns[index];
4369     while (p.gen > jj_gen) {
4370       if (p.next == null) { p = p.next = new JJCalls(); break; }
4371       p = p.next;
4372     }
4373     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
4374   }
4375 
4376   static final class JJCalls {
4377     int gen;
4378     Token first;
4379     int arg;
4380     JJCalls next;
4381   }
4382 
4383 }