View Javadoc
1   /*
2    * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  /* Generated By:JJTree&JavaCC: Do not edit this line. Parser.java */
27  package com.sun.jmx.snmp.IPAcl;
28  
29  import java.io.*;
30  
31  @SuppressWarnings("unchecked")  // generated code, not worth fixing
32  class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants {/*@bgen(jjtree)*/
33    protected JJTParserState jjtree = new JJTParserState();
34  
35  // A file can contain several acl definitions
36  //
37    final public JDMSecurityDefs SecurityDefs() throws ParseException {
38                                     /*@bgen(jjtree) SecurityDefs */
39    JDMSecurityDefs jjtn000 = new JDMSecurityDefs(JJTSECURITYDEFS);
40    boolean jjtc000 = true;
41    jjtree.openNodeScope(jjtn000);
42      try {
43        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
44        case ACL:
45          AclBlock();
46          break;
47        default:
48          jj_la1[0] = jj_gen;
49          ;
50        }
51        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
52        case TRAP:
53          TrapBlock();
54          break;
55        default:
56          jj_la1[1] = jj_gen;
57          ;
58        }
59        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
60        case INFORM:
61          InformBlock();
62          break;
63        default:
64          jj_la1[2] = jj_gen;
65          ;
66        }
67        jj_consume_token(0);
68      jjtree.closeNodeScope(jjtn000, true);
69      jjtc000 = false;
70      {if (true) return jjtn000;}
71      } catch (Throwable jjte000) {
72      if (jjtc000) {
73        jjtree.clearNodeScope(jjtn000);
74        jjtc000 = false;
75      } else {
76        jjtree.popNode();
77      }
78      if (jjte000 instanceof RuntimeException) {
79        {if (true) throw (RuntimeException)jjte000;}
80      }
81      if (jjte000 instanceof ParseException) {
82        {if (true) throw (ParseException)jjte000;}
83      }
84      {if (true) throw (Error)jjte000;}
85      } finally {
86      if (jjtc000) {
87        jjtree.closeNodeScope(jjtn000, true);
88      }
89      }
90      throw new Error("Missing return statement in function");
91    }
92  
93    final public void AclBlock() throws ParseException {
94                    /*@bgen(jjtree) AclBlock */
95    JDMAclBlock jjtn000 = new JDMAclBlock(JJTACLBLOCK);
96    boolean jjtc000 = true;
97    jjtree.openNodeScope(jjtn000);
98      try {
99        jj_consume_token(ACL);
100       jj_consume_token(ASSIGN);
101       jj_consume_token(LBRACE);
102       label_1:
103       while (true) {
104         AclItem();
105         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
106         case LBRACE:
107           ;
108           break;
109         default:
110           jj_la1[3] = jj_gen;
111           break label_1;
112         }
113       }
114       jj_consume_token(RBRACE);
115     } catch (Throwable jjte000) {
116   if (jjtc000) {
117     jjtree.clearNodeScope(jjtn000);
118     jjtc000 = false;
119   } else {
120     jjtree.popNode();
121   }
122   if (jjte000 instanceof RuntimeException) {
123     {if (true) throw (RuntimeException)jjte000;}
124   }
125   if (jjte000 instanceof ParseException) {
126     {if (true) throw (ParseException)jjte000;}
127   }
128   {if (true) throw (Error)jjte000;}
129     } finally {
130   if (jjtc000) {
131     jjtree.closeNodeScope(jjtn000, true);
132   }
133     }
134   }
135 
136   final public void AclItem() throws ParseException {
137                  /*@bgen(jjtree) AclItem */
138   JDMAclItem jjtn000 = new JDMAclItem(JJTACLITEM);
139   boolean jjtc000 = true;
140   jjtree.openNodeScope(jjtn000);
141     try {
142       jj_consume_token(LBRACE);
143       jjtn000.com = Communities();
144       jjtn000.access = Access();
145       Managers();
146       jj_consume_token(RBRACE);
147     } catch (Throwable jjte000) {
148   if (jjtc000) {
149     jjtree.clearNodeScope(jjtn000);
150     jjtc000 = false;
151   } else {
152     jjtree.popNode();
153   }
154   if (jjte000 instanceof RuntimeException) {
155     {if (true) throw (RuntimeException)jjte000;}
156   }
157   if (jjte000 instanceof ParseException) {
158     {if (true) throw (ParseException)jjte000;}
159   }
160   {if (true) throw (Error)jjte000;}
161     } finally {
162   if (jjtc000) {
163     jjtree.closeNodeScope(jjtn000, true);
164   }
165     }
166   }
167 
168   final public JDMCommunities Communities() throws ParseException {
169                                /*@bgen(jjtree) Communities */
170   JDMCommunities jjtn000 = new JDMCommunities(JJTCOMMUNITIES);
171   boolean jjtc000 = true;
172   jjtree.openNodeScope(jjtn000);
173     try {
174       jj_consume_token(COMMUNITIES);
175       jj_consume_token(ASSIGN);
176       Community();
177       label_2:
178       while (true) {
179         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
180         case COMMA:
181           ;
182           break;
183         default:
184           jj_la1[4] = jj_gen;
185           break label_2;
186         }
187         jj_consume_token(COMMA);
188         Community();
189       }
190   jjtree.closeNodeScope(jjtn000, true);
191   jjtc000 = false;
192  {if (true) return jjtn000;}
193     } catch (Throwable jjte000) {
194   if (jjtc000) {
195     jjtree.clearNodeScope(jjtn000);
196     jjtc000 = false;
197   } else {
198     jjtree.popNode();
199   }
200   if (jjte000 instanceof RuntimeException) {
201     {if (true) throw (RuntimeException)jjte000;}
202   }
203   if (jjte000 instanceof ParseException) {
204     {if (true) throw (ParseException)jjte000;}
205   }
206   {if (true) throw (Error)jjte000;}
207     } finally {
208   if (jjtc000) {
209     jjtree.closeNodeScope(jjtn000, true);
210   }
211     }
212     throw new Error("Missing return statement in function");
213   }
214 
215   final public void Community() throws ParseException {
216  /*@bgen(jjtree) Community */
217   JDMCommunity jjtn000 = new JDMCommunity(JJTCOMMUNITY);
218   boolean jjtc000 = true;
219   jjtree.openNodeScope(jjtn000);Token t;
220     try {
221       t = jj_consume_token(IDENTIFIER);
222                  jjtree.closeNodeScope(jjtn000, true);
223                  jjtc000 = false;
224                 jjtn000.communityString= t.image;
225     } finally {
226   if (jjtc000) {
227     jjtree.closeNodeScope(jjtn000, true);
228   }
229     }
230   }
231 
232   final public JDMAccess Access() throws ParseException {
233                      /*@bgen(jjtree) Access */
234   JDMAccess jjtn000 = new JDMAccess(JJTACCESS);
235   boolean jjtc000 = true;
236   jjtree.openNodeScope(jjtn000);
237     try {
238       jj_consume_token(ACCESS);
239       jj_consume_token(ASSIGN);
240       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
241       case RO:
242         jj_consume_token(RO);
243                      jjtn000.access= RO;
244         break;
245       case RW:
246         jj_consume_token(RW);
247                      jjtn000.access= RW;
248         break;
249       default:
250         jj_la1[5] = jj_gen;
251         jj_consume_token(-1);
252         throw new ParseException();
253       }
254   jjtree.closeNodeScope(jjtn000, true);
255   jjtc000 = false;
256  {if (true) return jjtn000;}
257     } finally {
258   if (jjtc000) {
259     jjtree.closeNodeScope(jjtn000, true);
260   }
261     }
262     throw new Error("Missing return statement in function");
263   }
264 
265   final public void Managers() throws ParseException {
266                    /*@bgen(jjtree) Managers */
267   JDMManagers jjtn000 = new JDMManagers(JJTMANAGERS);
268   boolean jjtc000 = true;
269   jjtree.openNodeScope(jjtn000);
270     try {
271       jj_consume_token(MANAGERS);
272       jj_consume_token(ASSIGN);
273       Host();
274       label_3:
275       while (true) {
276         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
277         case COMMA:
278           ;
279           break;
280         default:
281           jj_la1[6] = jj_gen;
282           break label_3;
283         }
284         jj_consume_token(COMMA);
285         Host();
286       }
287     } catch (Throwable jjte000) {
288   if (jjtc000) {
289     jjtree.clearNodeScope(jjtn000);
290     jjtc000 = false;
291   } else {
292     jjtree.popNode();
293   }
294   if (jjte000 instanceof RuntimeException) {
295     {if (true) throw (RuntimeException)jjte000;}
296   }
297   if (jjte000 instanceof ParseException) {
298     {if (true) throw (ParseException)jjte000;}
299   }
300   {if (true) throw (Error)jjte000;}
301     } finally {
302   if (jjtc000) {
303     jjtree.closeNodeScope(jjtn000, true);
304   }
305     }
306   }
307 
308   final public void Host() throws ParseException {
309  /*@bgen(jjtree) Host */
310   JDMHost jjtn000 = new JDMHost(JJTHOST);
311   boolean jjtc000 = true;
312   jjtree.openNodeScope(jjtn000);Token t;
313     try {
314       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
315       case IDENTIFIER:
316         HostName();
317         break;
318       default:
319         jj_la1[7] = jj_gen;
320         if (jj_2_1(2147483647)) {
321           NetMask();
322         } else if (jj_2_2(2147483647)) {
323           NetMaskV6();
324         } else if (jj_2_3(2147483647)) {
325           IpAddress();
326         } else {
327           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
328           case V6_ADDRESS:
329             IpV6Address();
330             break;
331           case INTEGER_LITERAL:
332             IpMask();
333             break;
334           default:
335             jj_la1[8] = jj_gen;
336             jj_consume_token(-1);
337             throw new ParseException();
338           }
339         }
340       }
341     } catch (Throwable jjte000) {
342   if (jjtc000) {
343     jjtree.clearNodeScope(jjtn000);
344     jjtc000 = false;
345   } else {
346     jjtree.popNode();
347   }
348   if (jjte000 instanceof RuntimeException) {
349     {if (true) throw (RuntimeException)jjte000;}
350   }
351   if (jjte000 instanceof ParseException) {
352     {if (true) throw (ParseException)jjte000;}
353   }
354   {if (true) throw (Error)jjte000;}
355     } finally {
356   if (jjtc000) {
357     jjtree.closeNodeScope(jjtn000, true);
358   }
359     }
360   }
361 
362   final public void HostName() throws ParseException {
363  /*@bgen(jjtree) HostName */
364   JDMHostName jjtn000 = new JDMHostName(JJTHOSTNAME);
365   boolean jjtc000 = true;
366   jjtree.openNodeScope(jjtn000);Token t;
367     try {
368       t = jj_consume_token(IDENTIFIER);
369                    jjtn000.name.append(t.image);
370       label_4:
371       while (true) {
372         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
373         case DOT:
374           ;
375           break;
376         default:
377           jj_la1[9] = jj_gen;
378           break label_4;
379         }
380         jj_consume_token(DOT);
381         t = jj_consume_token(IDENTIFIER);
382    jjtn000.name.append( "." + t.image);
383       }
384     } finally {
385     if (jjtc000) {
386       jjtree.closeNodeScope(jjtn000, true);
387     }
388     }
389   }
390 
391   final public void IpAddress() throws ParseException {
392  /*@bgen(jjtree) IpAddress */
393 JDMIpAddress jjtn000 = new JDMIpAddress(JJTIPADDRESS);
394 boolean jjtc000 = true;
395 jjtree.openNodeScope(jjtn000);Token t;
396     try {
397       t = jj_consume_token(INTEGER_LITERAL);
398    jjtn000.address.append(t.image);
399       label_5:
400       while (true) {
401         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
402         case DOT:
403           ;
404           break;
405         default:
406           jj_la1[10] = jj_gen;
407           break label_5;
408         }
409         jj_consume_token(DOT);
410         t = jj_consume_token(INTEGER_LITERAL);
411    jjtn000.address.append( "." + t.image);
412       }
413     } finally {
414   if (jjtc000) {
415     jjtree.closeNodeScope(jjtn000, true);
416   }
417     }
418   }
419 
420   final public void IpV6Address() throws ParseException {
421  /*@bgen(jjtree) IpV6Address */
422 JDMIpV6Address jjtn000 = new JDMIpV6Address(JJTIPV6ADDRESS);
423 boolean jjtc000 = true;
424 jjtree.openNodeScope(jjtn000);Token t;
425     try {
426       t = jj_consume_token(V6_ADDRESS);
427     jjtree.closeNodeScope(jjtn000, true);
428     jjtc000 = false;
429    jjtn000.address.append(t.image);
430     } finally {
431   if (jjtc000) {
432     jjtree.closeNodeScope(jjtn000, true);
433   }
434     }
435   }
436 
437   final public void IpMask() throws ParseException {
438  /*@bgen(jjtree) IpMask */
439 JDMIpMask jjtn000 = new JDMIpMask(JJTIPMASK);
440 boolean jjtc000 = true;
441 jjtree.openNodeScope(jjtn000);Token t;
442     try {
443       t = jj_consume_token(INTEGER_LITERAL);
444    jjtn000.address.append(t.image);
445       label_6:
446       while (true) {
447         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
448         case MARK:
449           ;
450           break;
451         default:
452           jj_la1[11] = jj_gen;
453           break label_6;
454         }
455         jj_consume_token(MARK);
456         t = jj_consume_token(INTEGER_LITERAL);
457    jjtn000.address.append( "." + t.image);
458       }
459     } finally {
460   if (jjtc000) {
461     jjtree.closeNodeScope(jjtn000, true);
462   }
463     }
464   }
465 
466   final public void NetMask() throws ParseException {
467  /*@bgen(jjtree) NetMask */
468 JDMNetMask jjtn000 = new JDMNetMask(JJTNETMASK);
469 boolean jjtc000 = true;
470 jjtree.openNodeScope(jjtn000);Token t;
471     try {
472       t = jj_consume_token(INTEGER_LITERAL);
473    jjtn000.address.append(t.image);
474       label_7:
475       while (true) {
476         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
477         case DOT:
478           ;
479           break;
480         default:
481           jj_la1[12] = jj_gen;
482           break label_7;
483         }
484         jj_consume_token(DOT);
485         t = jj_consume_token(INTEGER_LITERAL);
486    jjtn000.address.append( "." + t.image);
487       }
488       jj_consume_token(MASK);
489       t = jj_consume_token(INTEGER_LITERAL);
490                               jjtree.closeNodeScope(jjtn000, true);
491                               jjtc000 = false;
492                              jjtn000.mask = t.image;
493     } finally {
494   if (jjtc000) {
495     jjtree.closeNodeScope(jjtn000, true);
496   }
497     }
498   }
499 
500   final public void NetMaskV6() throws ParseException {
501  /*@bgen(jjtree) NetMaskV6 */
502 JDMNetMaskV6 jjtn000 = new JDMNetMaskV6(JJTNETMASKV6);
503 boolean jjtc000 = true;
504 jjtree.openNodeScope(jjtn000);Token t;
505     try {
506       t = jj_consume_token(V6_ADDRESS);
507    jjtn000.address.append(t.image);
508       jj_consume_token(MASK);
509       t = jj_consume_token(INTEGER_LITERAL);
510                            jjtree.closeNodeScope(jjtn000, true);
511                            jjtc000 = false;
512                           jjtn000.mask = t.image;
513     } finally {
514   if (jjtc000) {
515     jjtree.closeNodeScope(jjtn000, true);
516   }
517     }
518   }
519 
520   final public void TrapBlock() throws ParseException {
521                    /*@bgen(jjtree) TrapBlock */
522   JDMTrapBlock jjtn000 = new JDMTrapBlock(JJTTRAPBLOCK);
523   boolean jjtc000 = true;
524   jjtree.openNodeScope(jjtn000);
525     try {
526       jj_consume_token(TRAP);
527       jj_consume_token(ASSIGN);
528       jj_consume_token(LBRACE);
529       label_8:
530       while (true) {
531         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
532         case LBRACE:
533           ;
534           break;
535         default:
536           jj_la1[13] = jj_gen;
537           break label_8;
538         }
539         TrapItem();
540       }
541       jj_consume_token(RBRACE);
542     } catch (Throwable jjte000) {
543   if (jjtc000) {
544     jjtree.clearNodeScope(jjtn000);
545     jjtc000 = false;
546   } else {
547     jjtree.popNode();
548   }
549   if (jjte000 instanceof RuntimeException) {
550     {if (true) throw (RuntimeException)jjte000;}
551   }
552   if (jjte000 instanceof ParseException) {
553     {if (true) throw (ParseException)jjte000;}
554   }
555   {if (true) throw (Error)jjte000;}
556     } finally {
557   if (jjtc000) {
558     jjtree.closeNodeScope(jjtn000, true);
559   }
560     }
561   }
562 
563   final public void TrapItem() throws ParseException {
564                   /*@bgen(jjtree) TrapItem */
565   JDMTrapItem jjtn000 = new JDMTrapItem(JJTTRAPITEM);
566   boolean jjtc000 = true;
567   jjtree.openNodeScope(jjtn000);
568     try {
569       jj_consume_token(LBRACE);
570       jjtn000.comm = TrapCommunity();
571       TrapInterestedHost();
572       label_9:
573       while (true) {
574         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
575         case LBRACE:
576           ;
577           break;
578         default:
579           jj_la1[14] = jj_gen;
580           break label_9;
581         }
582         Enterprise();
583       }
584       jj_consume_token(RBRACE);
585     } catch (Throwable jjte000) {
586   if (jjtc000) {
587     jjtree.clearNodeScope(jjtn000);
588     jjtc000 = false;
589   } else {
590     jjtree.popNode();
591   }
592   if (jjte000 instanceof RuntimeException) {
593     {if (true) throw (RuntimeException)jjte000;}
594   }
595   if (jjte000 instanceof ParseException) {
596     {if (true) throw (ParseException)jjte000;}
597   }
598   {if (true) throw (Error)jjte000;}
599     } finally {
600   if (jjtc000) {
601     jjtree.closeNodeScope(jjtn000, true);
602   }
603     }
604   }
605 
606   final public JDMTrapCommunity TrapCommunity() throws ParseException {
607  /*@bgen(jjtree) TrapCommunity */
608   JDMTrapCommunity jjtn000 = new JDMTrapCommunity(JJTTRAPCOMMUNITY);
609   boolean jjtc000 = true;
610   jjtree.openNodeScope(jjtn000);Token t;
611     try {
612       jj_consume_token(TRAPCOMMUNITY);
613       jj_consume_token(ASSIGN);
614       t = jj_consume_token(IDENTIFIER);
615                                       jjtree.closeNodeScope(jjtn000, true);
616                                       jjtc000 = false;
617                                       jjtn000.community= t.image; {if (true) return jjtn000;}
618     } finally {
619   if (jjtc000) {
620     jjtree.closeNodeScope(jjtn000, true);
621   }
622     }
623     throw new Error("Missing return statement in function");
624   }
625 
626   final public void TrapInterestedHost() throws ParseException {
627                             /*@bgen(jjtree) TrapInterestedHost */
628   JDMTrapInterestedHost jjtn000 = new JDMTrapInterestedHost(JJTTRAPINTERESTEDHOST);
629   boolean jjtc000 = true;
630   jjtree.openNodeScope(jjtn000);
631     try {
632       jj_consume_token(HOSTS);
633       jj_consume_token(ASSIGN);
634       HostTrap();
635       label_10:
636       while (true) {
637         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
638         case COMMA:
639           ;
640           break;
641         default:
642           jj_la1[15] = jj_gen;
643           break label_10;
644         }
645         jj_consume_token(COMMA);
646         HostTrap();
647       }
648     } catch (Throwable jjte000) {
649   if (jjtc000) {
650     jjtree.clearNodeScope(jjtn000);
651     jjtc000 = false;
652   } else {
653     jjtree.popNode();
654   }
655   if (jjte000 instanceof RuntimeException) {
656     {if (true) throw (RuntimeException)jjte000;}
657   }
658   if (jjte000 instanceof ParseException) {
659     {if (true) throw (ParseException)jjte000;}
660   }
661   {if (true) throw (Error)jjte000;}
662     } finally {
663   if (jjtc000) {
664     jjtree.closeNodeScope(jjtn000, true);
665   }
666     }
667   }
668 
669   final public void HostTrap() throws ParseException {
670  /*@bgen(jjtree) HostTrap */
671   JDMHostTrap jjtn000 = new JDMHostTrap(JJTHOSTTRAP);
672   boolean jjtc000 = true;
673   jjtree.openNodeScope(jjtn000);Token t;
674     try {
675       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
676       case IDENTIFIER:
677         HostName();
678         break;
679       case INTEGER_LITERAL:
680         IpAddress();
681         break;
682       case V6_ADDRESS:
683         IpV6Address();
684         break;
685       default:
686         jj_la1[16] = jj_gen;
687         jj_consume_token(-1);
688         throw new ParseException();
689       }
690     } catch (Throwable jjte000) {
691   if (jjtc000) {
692     jjtree.clearNodeScope(jjtn000);
693     jjtc000 = false;
694   } else {
695     jjtree.popNode();
696   }
697   if (jjte000 instanceof RuntimeException) {
698     {if (true) throw (RuntimeException)jjte000;}
699   }
700   if (jjte000 instanceof ParseException) {
701     {if (true) throw (ParseException)jjte000;}
702   }
703   {if (true) throw (Error)jjte000;}
704     } finally {
705   if (jjtc000) {
706     jjtree.closeNodeScope(jjtn000, true);
707   }
708     }
709   }
710 
711   final public void Enterprise() throws ParseException {
712  /*@bgen(jjtree) Enterprise */
713   JDMEnterprise jjtn000 = new JDMEnterprise(JJTENTERPRISE);
714   boolean jjtc000 = true;
715   jjtree.openNodeScope(jjtn000);Token t;
716     try {
717       jj_consume_token(LBRACE);
718       jj_consume_token(ENTERPRISE);
719       jj_consume_token(ASSIGN);
720       t = jj_consume_token(CSTRING);
721                                jjtn000.enterprise= t.image;
722       jj_consume_token(TRAPNUM);
723       jj_consume_token(ASSIGN);
724       TrapNum();
725       label_11:
726       while (true) {
727         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
728         case COMMA:
729           ;
730           break;
731         default:
732           jj_la1[17] = jj_gen;
733           break label_11;
734         }
735         jj_consume_token(COMMA);
736         TrapNum();
737       }
738       jj_consume_token(RBRACE);
739     } catch (Throwable jjte000) {
740   if (jjtc000) {
741     jjtree.clearNodeScope(jjtn000);
742     jjtc000 = false;
743   } else {
744     jjtree.popNode();
745   }
746   if (jjte000 instanceof RuntimeException) {
747     {if (true) throw (RuntimeException)jjte000;}
748   }
749   if (jjte000 instanceof ParseException) {
750     {if (true) throw (ParseException)jjte000;}
751   }
752   {if (true) throw (Error)jjte000;}
753     } finally {
754   if (jjtc000) {
755     jjtree.closeNodeScope(jjtn000, true);
756   }
757     }
758   }
759 
760   final public void TrapNum() throws ParseException {
761  /*@bgen(jjtree) TrapNum */
762   JDMTrapNum jjtn000 = new JDMTrapNum(JJTTRAPNUM);
763   boolean jjtc000 = true;
764   jjtree.openNodeScope(jjtn000);Token t;
765     try {
766       t = jj_consume_token(INTEGER_LITERAL);
767                        jjtn000.low= Integer.parseInt(t.image);
768       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
769       case RANGE:
770         jj_consume_token(RANGE);
771         t = jj_consume_token(INTEGER_LITERAL);
772                            jjtn000.high= Integer.parseInt(t.image);
773         break;
774       default:
775         jj_la1[18] = jj_gen;
776         ;
777       }
778     } finally {
779     if (jjtc000) {
780       jjtree.closeNodeScope(jjtn000, true);
781     }
782     }
783   }
784 
785   final public void InformBlock() throws ParseException {
786                      /*@bgen(jjtree) InformBlock */
787   JDMInformBlock jjtn000 = new JDMInformBlock(JJTINFORMBLOCK);
788   boolean jjtc000 = true;
789   jjtree.openNodeScope(jjtn000);
790     try {
791       jj_consume_token(INFORM);
792       jj_consume_token(ASSIGN);
793       jj_consume_token(LBRACE);
794       label_12:
795       while (true) {
796         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
797         case LBRACE:
798           ;
799           break;
800         default:
801           jj_la1[19] = jj_gen;
802           break label_12;
803         }
804         InformItem();
805       }
806       jj_consume_token(RBRACE);
807     } catch (Throwable jjte000) {
808   if (jjtc000) {
809     jjtree.clearNodeScope(jjtn000);
810     jjtc000 = false;
811   } else {
812     jjtree.popNode();
813   }
814   if (jjte000 instanceof RuntimeException) {
815     {if (true) throw (RuntimeException)jjte000;}
816   }
817   if (jjte000 instanceof ParseException) {
818     {if (true) throw (ParseException)jjte000;}
819   }
820   {if (true) throw (Error)jjte000;}
821     } finally {
822   if (jjtc000) {
823     jjtree.closeNodeScope(jjtn000, true);
824   }
825     }
826   }
827 
828   final public void InformItem() throws ParseException {
829                     /*@bgen(jjtree) InformItem */
830   JDMInformItem jjtn000 = new JDMInformItem(JJTINFORMITEM);
831   boolean jjtc000 = true;
832   jjtree.openNodeScope(jjtn000);
833     try {
834       jj_consume_token(LBRACE);
835       jjtn000.comm = InformCommunity();
836       InformInterestedHost();
837       jj_consume_token(RBRACE);
838     } catch (Throwable jjte000) {
839   if (jjtc000) {
840     jjtree.clearNodeScope(jjtn000);
841     jjtc000 = false;
842   } else {
843     jjtree.popNode();
844   }
845   if (jjte000 instanceof RuntimeException) {
846     {if (true) throw (RuntimeException)jjte000;}
847   }
848   if (jjte000 instanceof ParseException) {
849     {if (true) throw (ParseException)jjte000;}
850   }
851   {if (true) throw (Error)jjte000;}
852     } finally {
853   if (jjtc000) {
854     jjtree.closeNodeScope(jjtn000, true);
855   }
856     }
857   }
858 
859   final public JDMInformCommunity InformCommunity() throws ParseException {
860  /*@bgen(jjtree) InformCommunity */
861   JDMInformCommunity jjtn000 = new JDMInformCommunity(JJTINFORMCOMMUNITY);
862   boolean jjtc000 = true;
863   jjtree.openNodeScope(jjtn000);Token t;
864     try {
865       jj_consume_token(INFORMCOMMUNITY);
866       jj_consume_token(ASSIGN);
867       t = jj_consume_token(IDENTIFIER);
868                                         jjtree.closeNodeScope(jjtn000, true);
869                                         jjtc000 = false;
870                                         jjtn000.community= t.image; {if (true) return jjtn000;}
871     } finally {
872   if (jjtc000) {
873     jjtree.closeNodeScope(jjtn000, true);
874   }
875     }
876     throw new Error("Missing return statement in function");
877   }
878 
879   final public void InformInterestedHost() throws ParseException {
880                               /*@bgen(jjtree) InformInterestedHost */
881   JDMInformInterestedHost jjtn000 = new JDMInformInterestedHost(JJTINFORMINTERESTEDHOST);
882   boolean jjtc000 = true;
883   jjtree.openNodeScope(jjtn000);
884     try {
885       jj_consume_token(HOSTS);
886       jj_consume_token(ASSIGN);
887       HostInform();
888       label_13:
889       while (true) {
890         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
891         case COMMA:
892           ;
893           break;
894         default:
895           jj_la1[20] = jj_gen;
896           break label_13;
897         }
898         jj_consume_token(COMMA);
899         HostInform();
900       }
901     } catch (Throwable jjte000) {
902   if (jjtc000) {
903     jjtree.clearNodeScope(jjtn000);
904     jjtc000 = false;
905   } else {
906     jjtree.popNode();
907   }
908   if (jjte000 instanceof RuntimeException) {
909     {if (true) throw (RuntimeException)jjte000;}
910   }
911   if (jjte000 instanceof ParseException) {
912     {if (true) throw (ParseException)jjte000;}
913   }
914   {if (true) throw (Error)jjte000;}
915     } finally {
916   if (jjtc000) {
917     jjtree.closeNodeScope(jjtn000, true);
918   }
919     }
920   }
921 
922   final public void HostInform() throws ParseException {
923  /*@bgen(jjtree) HostInform */
924   JDMHostInform jjtn000 = new JDMHostInform(JJTHOSTINFORM);
925   boolean jjtc000 = true;
926   jjtree.openNodeScope(jjtn000);Token t;
927     try {
928       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
929       case IDENTIFIER:
930         HostName();
931         break;
932       case INTEGER_LITERAL:
933         IpAddress();
934         break;
935       case V6_ADDRESS:
936         IpV6Address();
937         break;
938       default:
939         jj_la1[21] = jj_gen;
940         jj_consume_token(-1);
941         throw new ParseException();
942       }
943     } catch (Throwable jjte000) {
944   if (jjtc000) {
945     jjtree.clearNodeScope(jjtn000);
946     jjtc000 = false;
947   } else {
948     jjtree.popNode();
949   }
950   if (jjte000 instanceof RuntimeException) {
951     {if (true) throw (RuntimeException)jjte000;}
952   }
953   if (jjte000 instanceof ParseException) {
954     {if (true) throw (ParseException)jjte000;}
955   }
956   {if (true) throw (Error)jjte000;}
957     } finally {
958   if (jjtc000) {
959     jjtree.closeNodeScope(jjtn000, true);
960   }
961     }
962   }
963 
964   final private boolean jj_2_1(int xla) {
965     jj_la = xla; jj_lastpos = jj_scanpos = token;
966     boolean retval = !jj_3_1();
967     jj_save(0, xla);
968     return retval;
969   }
970 
971   final private boolean jj_2_2(int xla) {
972     jj_la = xla; jj_lastpos = jj_scanpos = token;
973     boolean retval = !jj_3_2();
974     jj_save(1, xla);
975     return retval;
976   }
977 
978   final private boolean jj_2_3(int xla) {
979     jj_la = xla; jj_lastpos = jj_scanpos = token;
980     boolean retval = !jj_3_3();
981     jj_save(2, xla);
982     return retval;
983   }
984 
985   final private boolean jj_3_3() {
986     if (jj_scan_token(INTEGER_LITERAL)) return true;
987     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
988     if (jj_scan_token(DOT)) return true;
989     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
990     return false;
991   }
992 
993   final private boolean jj_3_2() {
994     if (jj_scan_token(V6_ADDRESS)) return true;
995     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
996     if (jj_scan_token(MASK)) return true;
997     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
998     if (jj_scan_token(INTEGER_LITERAL)) return true;
999     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1000     return false;
1001   }
1002 
1003   final private boolean jj_3_1() {
1004     if (jj_scan_token(INTEGER_LITERAL)) return true;
1005     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1006     Token xsp;
1007     while (true) {
1008       xsp = jj_scanpos;
1009       if (jj_3R_14()) { jj_scanpos = xsp; break; }
1010       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1011     }
1012     if (jj_scan_token(MASK)) return true;
1013     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1014     if (jj_scan_token(INTEGER_LITERAL)) return true;
1015     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1016     return false;
1017   }
1018 
1019   final private boolean jj_3R_14() {
1020     if (jj_scan_token(DOT)) return true;
1021     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1022     if (jj_scan_token(INTEGER_LITERAL)) return true;
1023     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1024     return false;
1025   }
1026 
1027   public ParserTokenManager token_source;
1028   ASCII_CharStream jj_input_stream;
1029   public Token token, jj_nt;
1030   private int jj_ntk;
1031   private Token jj_scanpos, jj_lastpos;
1032   private int jj_la;
1033   public boolean lookingAhead = false;
1034   private boolean jj_semLA;
1035   private int jj_gen;
1036   final private int[] jj_la1 = new int[22];
1037   final private int[] jj_la1_0 = {0x100,0x80000,0x100000,0x2000,0x0,0x60000,0x0,0x80000000,0x11000000,0x0,0x0,0x0,0x0,0x2000,0x2000,0x0,0x91000000,0x0,0x8000,0x2000,0x0,0x91000000,};
1038   final private int[] jj_la1_1 = {0x0,0x0,0x0,0x0,0x10,0x0,0x10,0x0,0x0,0x20,0x20,0x40,0x20,0x0,0x0,0x10,0x0,0x10,0x0,0x0,0x10,0x0,};
1039   final private JJCalls[] jj_2_rtns = new JJCalls[3];
1040   private boolean jj_rescan = false;
1041   private int jj_gc = 0;
1042 
1043   public Parser(java.io.InputStream stream) {
1044     jj_input_stream = new ASCII_CharStream(stream, 1, 1);
1045     token_source = new ParserTokenManager(jj_input_stream);
1046     token = new Token();
1047     jj_ntk = -1;
1048     jj_gen = 0;
1049     for (int i = 0; i < 22; i++) jj_la1[i] = -1;
1050     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1051   }
1052 
1053   public void ReInit(java.io.InputStream stream) {
1054     jj_input_stream.ReInit(stream, 1, 1);
1055     token_source.ReInit(jj_input_stream);
1056     token = new Token();
1057     jj_ntk = -1;
1058     jjtree.reset();
1059     jj_gen = 0;
1060     for (int i = 0; i < 22; i++) jj_la1[i] = -1;
1061     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1062   }
1063 
1064   public Parser(java.io.Reader stream) {
1065     jj_input_stream = new ASCII_CharStream(stream, 1, 1);
1066     token_source = new ParserTokenManager(jj_input_stream);
1067     token = new Token();
1068     jj_ntk = -1;
1069     jj_gen = 0;
1070     for (int i = 0; i < 22; i++) jj_la1[i] = -1;
1071     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1072   }
1073 
1074   public void ReInit(java.io.Reader stream) {
1075     jj_input_stream.ReInit(stream, 1, 1);
1076     token_source.ReInit(jj_input_stream);
1077     token = new Token();
1078     jj_ntk = -1;
1079     jjtree.reset();
1080     jj_gen = 0;
1081     for (int i = 0; i < 22; i++) jj_la1[i] = -1;
1082     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1083   }
1084 
1085   public Parser(ParserTokenManager tm) {
1086     token_source = tm;
1087     token = new Token();
1088     jj_ntk = -1;
1089     jj_gen = 0;
1090     for (int i = 0; i < 22; i++) jj_la1[i] = -1;
1091     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1092   }
1093 
1094   public void ReInit(ParserTokenManager tm) {
1095     token_source = tm;
1096     token = new Token();
1097     jj_ntk = -1;
1098     jjtree.reset();
1099     jj_gen = 0;
1100     for (int i = 0; i < 22; i++) jj_la1[i] = -1;
1101     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1102   }
1103 
1104   final private Token jj_consume_token(int kind) throws ParseException {
1105     Token oldToken;
1106     if ((oldToken = token).next != null) token = token.next;
1107     else token = token.next = token_source.getNextToken();
1108     jj_ntk = -1;
1109     if (token.kind == kind) {
1110       jj_gen++;
1111       if (++jj_gc > 100) {
1112         jj_gc = 0;
1113         for (int i = 0; i < jj_2_rtns.length; i++) {
1114           JJCalls c = jj_2_rtns[i];
1115           while (c != null) {
1116             if (c.gen < jj_gen) c.first = null;
1117             c = c.next;
1118           }
1119         }
1120       }
1121       return token;
1122     }
1123     token = oldToken;
1124     jj_kind = kind;
1125     throw generateParseException();
1126   }
1127 
1128   final private boolean jj_scan_token(int kind) {
1129     if (jj_scanpos == jj_lastpos) {
1130       jj_la--;
1131       if (jj_scanpos.next == null) {
1132         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
1133       } else {
1134         jj_lastpos = jj_scanpos = jj_scanpos.next;
1135       }
1136     } else {
1137       jj_scanpos = jj_scanpos.next;
1138     }
1139     if (jj_rescan) {
1140       int i = 0; Token tok = token;
1141       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
1142       if (tok != null) jj_add_error_token(kind, i);
1143     }
1144     return (jj_scanpos.kind != kind);
1145   }
1146 
1147   final public Token getNextToken() {
1148     if (token.next != null) token = token.next;
1149     else token = token.next = token_source.getNextToken();
1150     jj_ntk = -1;
1151     jj_gen++;
1152     return token;
1153   }
1154 
1155   final public Token getToken(int index) {
1156     Token t = lookingAhead ? jj_scanpos : token;
1157     for (int i = 0; i < index; i++) {
1158       if (t.next != null) t = t.next;
1159       else t = t.next = token_source.getNextToken();
1160     }
1161     return t;
1162   }
1163 
1164   final private int jj_ntk() {
1165     if ((jj_nt=token.next) == null)
1166       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
1167     else
1168       return (jj_ntk = jj_nt.kind);
1169   }
1170 
1171   private java.util.Vector<int[]> jj_expentries = new java.util.Vector<>();
1172   private int[] jj_expentry;
1173   private int jj_kind = -1;
1174   private int[] jj_lasttokens = new int[100];
1175   private int jj_endpos;
1176 
1177   private void jj_add_error_token(int kind, int pos) {
1178     if (pos >= 100) return;
1179     if (pos == jj_endpos + 1) {
1180       jj_lasttokens[jj_endpos++] = kind;
1181     } else if (jj_endpos != 0) {
1182       jj_expentry = new int[jj_endpos];
1183       for (int i = 0; i < jj_endpos; i++) {
1184         jj_expentry[i] = jj_lasttokens[i];
1185       }
1186       boolean exists = false;
1187       for (java.util.Enumeration<int[]> enumv = jj_expentries.elements(); enumv.hasMoreElements();) {
1188         int[] oldentry = enumv.nextElement();
1189         if (oldentry.length == jj_expentry.length) {
1190           exists = true;
1191           for (int i = 0; i < jj_expentry.length; i++) {
1192             if (oldentry[i] != jj_expentry[i]) {
1193               exists = false;
1194               break;
1195             }
1196           }
1197           if (exists) break;
1198         }
1199       }
1200       if (!exists) jj_expentries.addElement(jj_expentry);
1201       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
1202     }
1203   }
1204 
1205   final public ParseException generateParseException() {
1206     jj_expentries.removeAllElements();
1207     boolean[] la1tokens = new boolean[40];
1208     for (int i = 0; i < 40; i++) {
1209       la1tokens[i] = false;
1210     }
1211     if (jj_kind >= 0) {
1212       la1tokens[jj_kind] = true;
1213       jj_kind = -1;
1214     }
1215     for (int i = 0; i < 22; i++) {
1216       if (jj_la1[i] == jj_gen) {
1217         for (int j = 0; j < 32; j++) {
1218           if ((jj_la1_0[i] & (1<<j)) != 0) {
1219             la1tokens[j] = true;
1220           }
1221           if ((jj_la1_1[i] & (1<<j)) != 0) {
1222             la1tokens[32+j] = true;
1223           }
1224         }
1225       }
1226     }
1227     for (int i = 0; i < 40; i++) {
1228       if (la1tokens[i]) {
1229         jj_expentry = new int[1];
1230         jj_expentry[0] = i;
1231         jj_expentries.addElement(jj_expentry);
1232       }
1233     }
1234     jj_endpos = 0;
1235     jj_rescan_token();
1236     jj_add_error_token(0, 0);
1237     int[][] exptokseq = new int[jj_expentries.size()][];
1238     for (int i = 0; i < jj_expentries.size(); i++) {
1239       exptokseq[i] = jj_expentries.elementAt(i);
1240     }
1241     return new ParseException(token, exptokseq, tokenImage);
1242   }
1243 
1244   final public void enable_tracing() {
1245   }
1246 
1247   final public void disable_tracing() {
1248   }
1249 
1250   final private void jj_rescan_token() {
1251     jj_rescan = true;
1252     for (int i = 0; i < 3; i++) {
1253       JJCalls p = jj_2_rtns[i];
1254       do {
1255         if (p.gen > jj_gen) {
1256           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
1257           switch (i) {
1258             case 0: jj_3_1(); break;
1259             case 1: jj_3_2(); break;
1260             case 2: jj_3_3(); break;
1261           }
1262         }
1263         p = p.next;
1264       } while (p != null);
1265     }
1266     jj_rescan = false;
1267   }
1268 
1269   final private void jj_save(int index, int xla) {
1270     JJCalls p = jj_2_rtns[index];
1271     while (p.gen > jj_gen) {
1272       if (p.next == null) { p = p.next = new JJCalls(); break; }
1273       p = p.next;
1274     }
1275     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
1276   }
1277 
1278   static final class JJCalls {
1279     int gen;
1280     Token first;
1281     int arg;
1282     JJCalls next;
1283   }
1284 
1285 }