001/* GoloParser.java */
002/* Generated By:JJTree&JavaCC: Do not edit this line. GoloParser.java */
003package org.eclipse.golo.compiler.parser;
004
005import java.util.List;
006import java.util.LinkedList;
007import java.util.LinkedHashSet;
008import java.util.Collections;
009import java.math.BigDecimal;
010import java.math.BigInteger;
011
012import org.eclipse.golo.compiler.utils.StringUnescaping;
013import org.eclipse.golo.compiler.utils.StringBlockIndenter;
014import org.eclipse.golo.compiler.GoloCompilationException;
015import gololang.ir.ClassReference;
016import gololang.ir.FunctionRef;
017
018public class GoloParser/*@bgen(jjtree)*/implements GoloParserTreeConstants, GoloParserConstants {/*@bgen(jjtree)*/
019  protected JJTGoloParserState jjtree = new JJTGoloParserState();
020  public GoloCompilationException.Builder exceptionBuilder;
021
022  private boolean errorAlreadyReported = false;
023
024  void skipto(int kind, ParseException e, GoloASTNode node) throws ParseException {
025    if (exceptionBuilder == null) {
026      throw e;
027    }
028    if (!errorAlreadyReported) {
029      exceptionBuilder.report(e, node);
030      errorAlreadyReported = true;
031    }
032    if ("<EOF>".equals(e.tokenImage[0])) {
033      return;
034    }
035    Token t;
036    do {
037      t = getNextToken();
038    } while (t.kind != kind);
039  }
040
041  void error() throws ParseException {/*@bgen(jjtree) error */
042ASTerror jjtn000 = new ASTerror(JJTERROR);
043boolean jjtc000 = true;
044jjtree.openNodeScope(jjtn000);
045jjtn000.jjtSetFirstToken(getToken(1));
046try {throw generateParseException();/*@bgen(jjtree)*/
047} finally {
048  if (jjtc000) {
049    jjtree.closeNodeScope(jjtn000, true);
050    jjtn000.jjtSetLastToken(getToken(0));
051  }
052}
053  }
054
055  final public void BlankLine() throws ParseException {
056    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
057    case NEWLINE:{
058      jj_consume_token(NEWLINE);
059      break;
060      }
061    case COMMENT:{
062      jj_consume_token(COMMENT);
063      break;
064      }
065    default:
066      jj_la1[0] = jj_gen;
067      jj_consume_token(-1);
068      throw new ParseException();
069    }
070  }
071
072  final public void BlankLines() throws ParseException {
073    label_1:
074    while (true) {
075      if (jj_2_1(2)) {
076        ;
077      } else {
078        break label_1;
079      }
080      BlankLine();
081    }
082  }
083
084  final public String QualifiedName() throws ParseException {Token rootToken;
085  Token nextToken;
086  StringBuilder nameBuilder;
087    rootToken = jj_consume_token(IDENTIFIER);
088nameBuilder = new StringBuilder(rootToken.image);
089    label_2:
090    while (true) {
091      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
092      case 74:{
093        ;
094        break;
095        }
096      default:
097        jj_la1[1] = jj_gen;
098        break label_2;
099      }
100      jj_consume_token(74);
101      nextToken = jj_consume_token(IDENTIFIER);
102nameBuilder.append(".").append(nextToken.image);
103    }
104{if ("" != null) return nameBuilder.toString();}
105    throw new Error("Missing return statement in function");
106  }
107
108// TODO: allows macros on function parameters ?
109  final public List<String> Parameters() throws ParseException {Token rootToken;
110  Token nextToken;
111  List<String> parameters = new LinkedList<String>();
112    rootToken = jj_consume_token(IDENTIFIER);
113parameters.add(rootToken.image);
114    label_3:
115    while (true) {
116      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
117      case 75:{
118        ;
119        break;
120        }
121      default:
122        jj_la1[2] = jj_gen;
123        break label_3;
124      }
125      jj_consume_token(75);
126      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
127      case NEWLINE:
128      case COMMENT:{
129        BlankLine();
130        break;
131        }
132      default:
133        jj_la1[3] = jj_gen;
134        ;
135      }
136      nextToken = jj_consume_token(IDENTIFIER);
137parameters.add(nextToken.image);
138    }
139{if ("" != null) return parameters;}
140    throw new Error("Missing return statement in function");
141  }
142
143  final public List<String> AugmentationNames() throws ParseException {String rootToken;
144  String nextToken;
145  List<String> names = new LinkedList<String>();
146    rootToken = QualifiedName();
147names.add(rootToken);
148    label_4:
149    while (true) {
150      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
151      case 75:{
152        ;
153        break;
154        }
155      default:
156        jj_la1[4] = jj_gen;
157        break label_4;
158      }
159      jj_consume_token(75);
160      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
161      case NEWLINE:
162      case COMMENT:{
163        BlankLine();
164        break;
165        }
166      default:
167        jj_la1[5] = jj_gen;
168        ;
169      }
170      nextToken = QualifiedName();
171names.add(nextToken);
172    }
173{if ("" != null) return names;}
174    throw new Error("Missing return statement in function");
175  }
176
177  final public String StringLiteral() throws ParseException {Token literal;
178    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
179    case STRING:{
180      literal = jj_consume_token(STRING);
181{if ("" != null) return StringUnescaping.unescape(literal.image.substring(1, literal.image.length() - 1));}
182      break;
183      }
184    case MULTI_STRING:{
185      literal = jj_consume_token(MULTI_STRING);
186{if ("" != null) return literal.image.substring(3, literal.image.length() - 3);}
187      break;
188      }
189    default:
190      jj_la1[6] = jj_gen;
191      jj_consume_token(-1);
192      throw new ParseException();
193    }
194    throw new Error("Missing return statement in function");
195  }
196
197  final public Character CharLiteral() throws ParseException {Token literal;
198    literal = jj_consume_token(CHAR);
199{if ("" != null) return Character.valueOf(StringUnescaping.unescape(literal.image.substring(1, literal.image.length() - 1)).charAt(0));}
200    throw new Error("Missing return statement in function");
201  }
202
203  final public Long LongLiteral() throws ParseException {Token literal;
204    literal = jj_consume_token(LONG_NUMBER);
205String image = literal.image.substring(0, literal.image.length() - 2);
206    {if ("" != null) return Long.valueOf(image.replace("_",""));}
207    throw new Error("Missing return statement in function");
208  }
209
210  final public BigInteger BigIntegerLiteral() throws ParseException {Token literal;
211    literal = jj_consume_token(BIGINTEGER);
212String image = literal.image.substring(0, literal.image.length() - 2);
213    {if ("" != null) return new BigInteger(image.replace("_",""));}
214    throw new Error("Missing return statement in function");
215  }
216
217  final public Integer IntegerLiteral() throws ParseException {Token literal;
218    literal = jj_consume_token(NUMBER);
219String image = literal.image.replace("_","");
220    {if ("" != null) return Integer.valueOf(image);}
221    throw new Error("Missing return statement in function");
222  }
223
224  final public ClassReference ClassLiteral() throws ParseException {Token literal;
225    literal = jj_consume_token(CLASSREF);
226String image = literal.image;
227    int suffixLength = image.endsWith("class") ? 6 : 7;
228    {if ("" != null) return ClassReference.of(image.substring(0, image.length() - suffixLength));}
229    throw new Error("Missing return statement in function");
230  }
231
232  final public Double DoubleLiteral() throws ParseException {Token literal;
233    literal = jj_consume_token(FLOATING_NUMBER);
234{if ("" != null) return Double.valueOf(literal.image.replace("_", ""));}
235    throw new Error("Missing return statement in function");
236  }
237
238  final public Float FloatLiteral() throws ParseException {Token literal;
239    literal = jj_consume_token(FLOAT);
240{if ("" != null) return Float.valueOf(literal.image
241        .substring(0, literal.image.length() - 2)
242        .replace("_", ""));}
243    throw new Error("Missing return statement in function");
244  }
245
246  final public BigDecimal BigDecimalLiteral() throws ParseException {Token literal;
247    literal = jj_consume_token(BIGDECIMAL);
248{if ("" != null) return new BigDecimal(literal.image
249        .substring(0, literal.image.length() - 2)
250        .replace("_", ""));}
251    throw new Error("Missing return statement in function");
252  }
253
254  final public FunctionRef FunctionRef() throws ParseException {Token literal;
255    literal = jj_consume_token(FUNREF);
256String module = null;
257    String name;
258    int arity = -1;
259    boolean varargs = false;
260    String[] parts = literal.image.substring(1).split("::");
261    if (parts.length > 1) {
262      module = parts[0];
263      name = parts[1];
264    } else {
265      name = parts[0];
266    }
267    parts = name.split("\\\\");
268    if (parts.length > 1) {
269      name = parts[0];
270      if (parts[1].endsWith("...")) {
271        arity = Integer.valueOf(parts[1].substring(0, parts[1].length() - 3));
272        varargs = true;
273      } else {
274        arity = Integer.valueOf(parts[1]);
275      }
276    }
277    {if ("" != null) return FunctionRef.of(module, name, arity, varargs);}
278    throw new Error("Missing return statement in function");
279  }
280
281  final public String Documentation() throws ParseException {Token token;
282    token = jj_consume_token(DOCUMENTATION);
283String result = token.image.trim();
284    result = result.substring(4, result.length() - 4);
285    if (token.beginColumn > 1) {
286      result = StringBlockIndenter.unindent(result, token.beginColumn - 1);
287    }
288    {if ("" != null) return result;}
289    throw new Error("Missing return statement in function");
290  }
291
292// ............................................................................................. //
293  final public 
294ASTCompilationUnit CompilationUnit() throws ParseException {/*@bgen(jjtree) CompilationUnit */
295  ASTCompilationUnit jjtn000 = new ASTCompilationUnit(JJTCOMPILATIONUNIT);
296  boolean jjtc000 = true;
297  jjtree.openNodeScope(jjtn000);
298  jjtn000.jjtSetFirstToken(getToken(1));ASTLetOrVar state;
299  ASTMacroInvocation macro;
300    try {
301      try {
302        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
303        case NEWLINE:
304        case MODULE:
305        case DECORATOR:
306        case COMMENT:
307        case DOCUMENTATION:{
308          BlankLines();
309          ModuleDeclaration();
310          BlankLines();
311          label_5:
312          while (true) {
313            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
314            case IMPORT:{
315              ;
316              break;
317              }
318            default:
319              jj_la1[7] = jj_gen;
320              break label_5;
321            }
322            ImportDeclaration();
323            BlankLines();
324          }
325          label_6:
326          while (true) {
327            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
328            case FUNCTION:
329            case LOCAL:
330            case AUGMENT:
331            case NAMEDAUGMENTATION:
332            case STRUCT:
333            case UNION:
334            case DECORATOR:
335            case MACRO_INVOCATION:
336            case MACRO:
337            case VAR:
338            case LET:
339            case DOCUMENTATION:{
340              ;
341              break;
342              }
343            default:
344              jj_la1[8] = jj_gen;
345              break label_6;
346            }
347            try {
348              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
349              case FUNCTION:
350              case LOCAL:
351              case AUGMENT:
352              case NAMEDAUGMENTATION:
353              case STRUCT:
354              case UNION:
355              case DECORATOR:
356              case MACRO_INVOCATION:
357              case MACRO:
358              case DOCUMENTATION:{
359                ToplevelDeclaration();
360                BlankLines();
361                break;
362                }
363              case VAR:
364              case LET:{
365                state = LetOrVar();
366                BlankLines();
367state.setModuleState(true);
368                break;
369                }
370              default:
371                jj_la1[9] = jj_gen;
372                jj_consume_token(-1);
373                throw new ParseException();
374              }
375            } catch (ParseException e) {
376skipto(NEWLINE, e, jjtn000);
377            }
378          }
379          break;
380          }
381        default:
382          jj_la1[10] = jj_gen;
383          error();
384        }
385        jj_consume_token(0);
386      } catch (ParseException e) {
387skipto(NEWLINE, e, jjtn000);
388      }
389jjtree.closeNodeScope(jjtn000, true);
390    jjtc000 = false;
391    jjtn000.jjtSetLastToken(getToken(0));
392{if ("" != null) return jjtn000;}
393    } catch (Throwable jjte000) {
394if (jjtc000) {
395      jjtree.clearNodeScope(jjtn000);
396      jjtc000 = false;
397    } else {
398      jjtree.popNode();
399    }
400    if (jjte000 instanceof RuntimeException) {
401      {if (true) throw (RuntimeException)jjte000;}
402    }
403    if (jjte000 instanceof ParseException) {
404      {if (true) throw (ParseException)jjte000;}
405    }
406    {if (true) throw (Error)jjte000;}
407    } finally {
408if (jjtc000) {
409      jjtree.closeNodeScope(jjtn000, true);
410      jjtn000.jjtSetLastToken(getToken(0));
411    }
412    }
413    throw new Error("Missing return statement in function");
414  }
415
416  final public void ModuleDeclaration() throws ParseException {/*@bgen(jjtree) ModuleDeclaration */
417  ASTModuleDeclaration jjtn000 = new ASTModuleDeclaration(JJTMODULEDECLARATION);
418  boolean jjtc000 = true;
419  jjtree.openNodeScope(jjtn000);
420  jjtn000.jjtSetFirstToken(getToken(1));String name;
421  String documentation = null;
422    try {
423      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
424      case DOCUMENTATION:{
425        documentation = Documentation();
426        break;
427        }
428      default:
429        jj_la1[11] = jj_gen;
430        ;
431      }
432      label_7:
433      while (true) {
434        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
435        case DECORATOR:{
436          ;
437          break;
438          }
439        default:
440          jj_la1[12] = jj_gen;
441          break label_7;
442        }
443        DecoratorDeclaration();
444      }
445      jj_consume_token(MODULE);
446      name = QualifiedName();
447jjtree.closeNodeScope(jjtn000, true);
448    jjtc000 = false;
449    jjtn000.jjtSetLastToken(getToken(0));
450jjtn000.setName(name);
451    jjtn000.setDocumentation(documentation);
452    } catch (Throwable jjte000) {
453if (jjtc000) {
454      jjtree.clearNodeScope(jjtn000);
455      jjtc000 = false;
456    } else {
457      jjtree.popNode();
458    }
459    if (jjte000 instanceof RuntimeException) {
460      {if (true) throw (RuntimeException)jjte000;}
461    }
462    if (jjte000 instanceof ParseException) {
463      {if (true) throw (ParseException)jjte000;}
464    }
465    {if (true) throw (Error)jjte000;}
466    } finally {
467if (jjtc000) {
468      jjtree.closeNodeScope(jjtn000, true);
469      jjtn000.jjtSetLastToken(getToken(0));
470    }
471    }
472  }
473
474  final public List<String> MultiImport() throws ParseException {List<String> modules = new LinkedList<String>();
475  String rootName;
476  String nextName;
477    jj_consume_token(76);
478    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
479    case NEWLINE:
480    case COMMENT:{
481      BlankLine();
482      break;
483      }
484    default:
485      jj_la1[13] = jj_gen;
486      ;
487    }
488    rootName = QualifiedName();
489modules.add(rootName);
490    label_8:
491    while (true) {
492      jj_consume_token(75);
493      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
494      case NEWLINE:
495      case COMMENT:{
496        BlankLine();
497        break;
498        }
499      default:
500        jj_la1[14] = jj_gen;
501        ;
502      }
503      nextName = QualifiedName();
504modules.add(nextName);
505      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
506      case 75:{
507        ;
508        break;
509        }
510      default:
511        jj_la1[15] = jj_gen;
512        break label_8;
513      }
514    }
515    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
516    case NEWLINE:
517    case COMMENT:{
518      BlankLine();
519      break;
520      }
521    default:
522      jj_la1[16] = jj_gen;
523      ;
524    }
525    jj_consume_token(77);
526{if ("" != null) return modules;}
527    throw new Error("Missing return statement in function");
528  }
529
530  final public void ImportDeclaration() throws ParseException {/*@bgen(jjtree) ImportDeclaration */
531  ASTImportDeclaration jjtn000 = new ASTImportDeclaration(JJTIMPORTDECLARATION);
532  boolean jjtc000 = true;
533  jjtree.openNodeScope(jjtn000);
534  jjtn000.jjtSetFirstToken(getToken(1));String name;
535  Token relative = null;
536  List<String> multiples = null;
537    try {
538      try {
539        jj_consume_token(IMPORT);
540        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
541        case 74:{
542          relative = jj_consume_token(74);
543          break;
544          }
545        default:
546          jj_la1[17] = jj_gen;
547          ;
548        }
549        name = QualifiedName();
550        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
551        case 76:{
552          multiples = MultiImport();
553          break;
554          }
555        default:
556          jj_la1[18] = jj_gen;
557          ;
558        }
559jjtn000.setName(name);
560      if (relative != null) {
561        jjtn000.setRelative(true);
562      }
563      if (multiples != null) {
564        jjtn000.setMultiple(multiples);
565      }
566      } catch (ParseException e) {
567skipto(NEWLINE, e, jjtn000);
568      }
569    } catch (Throwable jjte000) {
570if (jjtc000) {
571      jjtree.clearNodeScope(jjtn000);
572      jjtc000 = false;
573    } else {
574      jjtree.popNode();
575    }
576    if (jjte000 instanceof RuntimeException) {
577      {if (true) throw (RuntimeException)jjte000;}
578    }
579    if (jjte000 instanceof ParseException) {
580      {if (true) throw (ParseException)jjte000;}
581    }
582    {if (true) throw (Error)jjte000;}
583    } finally {
584if (jjtc000) {
585      jjtree.closeNodeScope(jjtn000, true);
586      jjtn000.jjtSetLastToken(getToken(0));
587    }
588    }
589  }
590
591  final public void ToplevelDeclaration() throws ParseException {/*@bgen(jjtree) ToplevelDeclaration */
592  ASTToplevelDeclaration jjtn000 = new ASTToplevelDeclaration(JJTTOPLEVELDECLARATION);
593  boolean jjtc000 = true;
594  jjtree.openNodeScope(jjtn000);
595  jjtn000.jjtSetFirstToken(getToken(1));ASTFunctionDeclaration functionDecl;
596  ASTAugmentDeclaration augmentDecl;
597  ASTStructDeclaration structDecl;
598  ASTUnionDeclaration unionDecl;
599  ASTNamedAugmentationDeclaration namedAugmentationDecl;
600  Token local = null;
601  String documentation = null;
602  ASTMacroInvocation macro;
603    try {
604      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
605      case FUNCTION:
606      case LOCAL:
607      case AUGMENT:
608      case NAMEDAUGMENTATION:
609      case STRUCT:
610      case UNION:
611      case DECORATOR:
612      case MACRO:
613      case DOCUMENTATION:{
614        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
615        case DOCUMENTATION:{
616          documentation = Documentation();
617          break;
618          }
619        default:
620          jj_la1[19] = jj_gen;
621          ;
622        }
623        label_9:
624        while (true) {
625          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
626          case DECORATOR:{
627            ;
628            break;
629            }
630          default:
631            jj_la1[20] = jj_gen;
632            break label_9;
633          }
634          DecoratorDeclaration();
635        }
636        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
637        case FUNCTION:
638        case LOCAL:
639        case MACRO:{
640          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
641          case LOCAL:{
642            local = jj_consume_token(LOCAL);
643            break;
644            }
645          default:
646            jj_la1[21] = jj_gen;
647            ;
648          }
649          functionDecl = FunctionDeclaration();
650jjtree.closeNodeScope(jjtn000, true);
651        jjtc000 = false;
652        jjtn000.jjtSetLastToken(getToken(0));
653if (local != null) {
654          functionDecl.setLocal(true);
655        }
656        functionDecl.setDocumentation(documentation);
657          break;
658          }
659        case STRUCT:{
660          structDecl = StructDeclaration();
661jjtree.closeNodeScope(jjtn000, true);
662        jjtc000 = false;
663        jjtn000.jjtSetLastToken(getToken(0));
664structDecl.setDocumentation(documentation);
665          break;
666          }
667        case UNION:{
668          unionDecl = UnionDeclaration();
669jjtree.closeNodeScope(jjtn000, true);
670        jjtc000 = false;
671        jjtn000.jjtSetLastToken(getToken(0));
672unionDecl.setDocumentation(documentation);
673          break;
674          }
675        case AUGMENT:{
676          augmentDecl = AugmentDeclaration();
677jjtree.closeNodeScope(jjtn000, true);
678        jjtc000 = false;
679        jjtn000.jjtSetLastToken(getToken(0));
680augmentDecl.setDocumentation(documentation);
681          break;
682          }
683        case NAMEDAUGMENTATION:{
684          namedAugmentationDecl = NamedAugmentationDeclaration();
685jjtree.closeNodeScope(jjtn000, true);
686        jjtc000 = false;
687        jjtn000.jjtSetLastToken(getToken(0));
688namedAugmentationDecl.setDocumentation(documentation);
689          break;
690          }
691        default:
692          jj_la1[22] = jj_gen;
693          jj_consume_token(-1);
694          throw new ParseException();
695        }
696        break;
697        }
698      case MACRO_INVOCATION:{
699        macro = MacroInvocation();
700jjtree.closeNodeScope(jjtn000, true);
701      jjtc000 = false;
702      jjtn000.jjtSetLastToken(getToken(0));
703macro.setTopLevel(true);
704        break;
705        }
706      default:
707        jj_la1[23] = jj_gen;
708        jj_consume_token(-1);
709        throw new ParseException();
710      }
711    } catch (Throwable jjte000) {
712if (jjtc000) {
713      jjtree.clearNodeScope(jjtn000);
714      jjtc000 = false;
715    } else {
716      jjtree.popNode();
717    }
718    if (jjte000 instanceof RuntimeException) {
719      {if (true) throw (RuntimeException)jjte000;}
720    }
721    if (jjte000 instanceof ParseException) {
722      {if (true) throw (ParseException)jjte000;}
723    }
724    {if (true) throw (Error)jjte000;}
725    } finally {
726if (jjtc000) {
727      jjtree.closeNodeScope(jjtn000, true);
728      jjtn000.jjtSetLastToken(getToken(0));
729    }
730    }
731  }
732
733  final public ASTMemberDeclaration MemberDeclaration() throws ParseException {/*@bgen(jjtree) MemberDeclaration */
734  ASTMemberDeclaration jjtn000 = new ASTMemberDeclaration(JJTMEMBERDECLARATION);
735  boolean jjtc000 = true;
736  jjtree.openNodeScope(jjtn000);
737  jjtn000.jjtSetFirstToken(getToken(1));Token name;
738  String documentation = null;
739    try {
740      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
741      case DOCUMENTATION:{
742        documentation = Documentation();
743        break;
744        }
745      default:
746        jj_la1[24] = jj_gen;
747        ;
748      }
749      name = jj_consume_token(IDENTIFIER);
750jjtree.closeNodeScope(jjtn000, true);
751    jjtc000 = false;
752    jjtn000.jjtSetLastToken(getToken(0));
753jjtn000.setName(name.image);
754    jjtn000.jjtSetFirstToken(name);
755    jjtn000.setDocumentation(documentation);
756    {if ("" != null) return jjtn000;}
757    } catch (Throwable jjte000) {
758if (jjtc000) {
759      jjtree.clearNodeScope(jjtn000);
760      jjtc000 = false;
761    } else {
762      jjtree.popNode();
763    }
764    if (jjte000 instanceof RuntimeException) {
765      {if (true) throw (RuntimeException)jjte000;}
766    }
767    if (jjte000 instanceof ParseException) {
768      {if (true) throw (ParseException)jjte000;}
769    }
770    {if (true) throw (Error)jjte000;}
771    } finally {
772if (jjtc000) {
773      jjtree.closeNodeScope(jjtn000, true);
774      jjtn000.jjtSetLastToken(getToken(0));
775    }
776    }
777    throw new Error("Missing return statement in function");
778  }
779
780  final public ASTStructDeclaration StructDeclaration() throws ParseException {/*@bgen(jjtree) StructDeclaration */
781  ASTStructDeclaration jjtn000 = new ASTStructDeclaration(JJTSTRUCTDECLARATION);
782  boolean jjtc000 = true;
783  jjtree.openNodeScope(jjtn000);
784  jjtn000.jjtSetFirstToken(getToken(1));Token name;
785    try {
786      jj_consume_token(STRUCT);
787      name = jj_consume_token(IDENTIFIER);
788      jj_consume_token(78);
789      jj_consume_token(79);
790      BlankLines();
791      MemberDeclaration();
792      BlankLines();
793      label_10:
794      while (true) {
795        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
796        case 75:{
797          ;
798          break;
799          }
800        default:
801          jj_la1[25] = jj_gen;
802          break label_10;
803        }
804        jj_consume_token(75);
805        BlankLines();
806        MemberDeclaration();
807        BlankLines();
808      }
809      jj_consume_token(77);
810jjtree.closeNodeScope(jjtn000, true);
811    jjtc000 = false;
812    jjtn000.jjtSetLastToken(getToken(0));
813jjtn000.setName(name.image);
814    {if ("" != null) return jjtn000;}
815    } catch (Throwable jjte000) {
816if (jjtc000) {
817      jjtree.clearNodeScope(jjtn000);
818      jjtc000 = false;
819    } else {
820      jjtree.popNode();
821    }
822    if (jjte000 instanceof RuntimeException) {
823      {if (true) throw (RuntimeException)jjte000;}
824    }
825    if (jjte000 instanceof ParseException) {
826      {if (true) throw (ParseException)jjte000;}
827    }
828    {if (true) throw (Error)jjte000;}
829    } finally {
830if (jjtc000) {
831      jjtree.closeNodeScope(jjtn000, true);
832      jjtn000.jjtSetLastToken(getToken(0));
833    }
834    }
835    throw new Error("Missing return statement in function");
836  }
837
838  final public void UnionValue() throws ParseException {/*@bgen(jjtree) UnionValue */
839  ASTUnionValue jjtn000 = new ASTUnionValue(JJTUNIONVALUE);
840  boolean jjtc000 = true;
841  jjtree.openNodeScope(jjtn000);
842  jjtn000.jjtSetFirstToken(getToken(1));Token name;
843  String documentation = null;
844    try {
845      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
846      case DOCUMENTATION:{
847        documentation = Documentation();
848        break;
849        }
850      default:
851        jj_la1[26] = jj_gen;
852        ;
853      }
854      label_11:
855      while (true) {
856        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
857        case DECORATOR:{
858          ;
859          break;
860          }
861        default:
862          jj_la1[27] = jj_gen;
863          break label_11;
864        }
865        DecoratorDeclaration();
866      }
867      name = jj_consume_token(IDENTIFIER);
868      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
869      case 78:{
870        jj_consume_token(78);
871        jj_consume_token(79);
872        BlankLines();
873        MemberDeclaration();
874        BlankLines();
875        label_12:
876        while (true) {
877          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
878          case 75:{
879            ;
880            break;
881            }
882          default:
883            jj_la1[28] = jj_gen;
884            break label_12;
885          }
886          jj_consume_token(75);
887          BlankLines();
888          MemberDeclaration();
889          BlankLines();
890        }
891        jj_consume_token(77);
892        break;
893        }
894      default:
895        jj_la1[29] = jj_gen;
896        ;
897      }
898jjtree.closeNodeScope(jjtn000, true);
899    jjtc000 = false;
900    jjtn000.jjtSetLastToken(getToken(0));
901jjtn000.setName(name.image);
902    jjtn000.jjtSetFirstToken(name);
903    jjtn000.setDocumentation(documentation);
904    } catch (Throwable jjte000) {
905if (jjtc000) {
906      jjtree.clearNodeScope(jjtn000);
907      jjtc000 = false;
908    } else {
909      jjtree.popNode();
910    }
911    if (jjte000 instanceof RuntimeException) {
912      {if (true) throw (RuntimeException)jjte000;}
913    }
914    if (jjte000 instanceof ParseException) {
915      {if (true) throw (ParseException)jjte000;}
916    }
917    {if (true) throw (Error)jjte000;}
918    } finally {
919if (jjtc000) {
920      jjtree.closeNodeScope(jjtn000, true);
921      jjtn000.jjtSetLastToken(getToken(0));
922    }
923    }
924  }
925
926  final public ASTUnionDeclaration UnionDeclaration() throws ParseException {/*@bgen(jjtree) UnionDeclaration */
927  ASTUnionDeclaration jjtn000 = new ASTUnionDeclaration(JJTUNIONDECLARATION);
928  boolean jjtc000 = true;
929  jjtree.openNodeScope(jjtn000);
930  jjtn000.jjtSetFirstToken(getToken(1));Token name;
931  Token valueName;
932    try {
933      jj_consume_token(UNION);
934      name = jj_consume_token(IDENTIFIER);
935      jj_consume_token(78);
936      jj_consume_token(79);
937      BlankLines();
938      label_13:
939      while (true) {
940        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
941        case DECORATOR:
942        case IDENTIFIER:
943        case DOCUMENTATION:{
944          ;
945          break;
946          }
947        default:
948          jj_la1[30] = jj_gen;
949          break label_13;
950        }
951        UnionValue();
952        BlankLines();
953      }
954      jj_consume_token(77);
955jjtree.closeNodeScope(jjtn000, true);
956    jjtc000 = false;
957    jjtn000.jjtSetLastToken(getToken(0));
958jjtn000.setName(name.image);
959    {if ("" != null) return jjtn000;}
960    } catch (Throwable jjte000) {
961if (jjtc000) {
962      jjtree.clearNodeScope(jjtn000);
963      jjtc000 = false;
964    } else {
965      jjtree.popNode();
966    }
967    if (jjte000 instanceof RuntimeException) {
968      {if (true) throw (RuntimeException)jjte000;}
969    }
970    if (jjte000 instanceof ParseException) {
971      {if (true) throw (ParseException)jjte000;}
972    }
973    {if (true) throw (Error)jjte000;}
974    } finally {
975if (jjtc000) {
976      jjtree.closeNodeScope(jjtn000, true);
977      jjtn000.jjtSetLastToken(getToken(0));
978    }
979    }
980    throw new Error("Missing return statement in function");
981  }
982
983  final public void AugmentationDeclaration() throws ParseException {String documentation = null;
984  ASTFunctionDeclaration func;
985  ASTMacroInvocation macro;
986    jj_consume_token(79);
987    BlankLines();
988    label_14:
989    while (true) {
990      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
991      case FUNCTION:
992      case DECORATOR:
993      case MACRO_INVOCATION:
994      case MACRO:
995      case DOCUMENTATION:{
996        ;
997        break;
998        }
999      default:
1000        jj_la1[31] = jj_gen;
1001        break label_14;
1002      }
1003      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1004      case FUNCTION:
1005      case DECORATOR:
1006      case MACRO:
1007      case DOCUMENTATION:{
1008        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1009        case DOCUMENTATION:{
1010          documentation = Documentation();
1011          break;
1012          }
1013        default:
1014          jj_la1[32] = jj_gen;
1015          ;
1016        }
1017        label_15:
1018        while (true) {
1019          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1020          case DECORATOR:{
1021            ;
1022            break;
1023            }
1024          default:
1025            jj_la1[33] = jj_gen;
1026            break label_15;
1027          }
1028          DecoratorDeclaration();
1029        }
1030        func = FunctionDeclaration();
1031func.setAugmentation(true);
1032            func.setDocumentation(documentation);
1033        break;
1034        }
1035      case MACRO_INVOCATION:{
1036        macro = MacroInvocation();
1037macro.setTopLevel(true);
1038        break;
1039        }
1040      default:
1041        jj_la1[34] = jj_gen;
1042        jj_consume_token(-1);
1043        throw new ParseException();
1044      }
1045      BlankLines();
1046    }
1047    jj_consume_token(77);
1048  }
1049
1050  final public ASTNamedAugmentationDeclaration NamedAugmentationDeclaration() throws ParseException {/*@bgen(jjtree) NamedAugmentationDeclaration */
1051  ASTNamedAugmentationDeclaration jjtn000 = new ASTNamedAugmentationDeclaration(JJTNAMEDAUGMENTATIONDECLARATION);
1052  boolean jjtc000 = true;
1053  jjtree.openNodeScope(jjtn000);
1054  jjtn000.jjtSetFirstToken(getToken(1));Token name;
1055    try {
1056      jj_consume_token(NAMEDAUGMENTATION);
1057      name = jj_consume_token(IDENTIFIER);
1058      jj_consume_token(78);
1059      AugmentationDeclaration();
1060jjtree.closeNodeScope(jjtn000, true);
1061    jjtc000 = false;
1062    jjtn000.jjtSetLastToken(getToken(0));
1063jjtn000.setName(name.image);
1064    {if ("" != null) return jjtn000;}
1065    } catch (Throwable jjte000) {
1066if (jjtc000) {
1067      jjtree.clearNodeScope(jjtn000);
1068      jjtc000 = false;
1069    } else {
1070      jjtree.popNode();
1071    }
1072    if (jjte000 instanceof RuntimeException) {
1073      {if (true) throw (RuntimeException)jjte000;}
1074    }
1075    if (jjte000 instanceof ParseException) {
1076      {if (true) throw (ParseException)jjte000;}
1077    }
1078    {if (true) throw (Error)jjte000;}
1079    } finally {
1080if (jjtc000) {
1081      jjtree.closeNodeScope(jjtn000, true);
1082      jjtn000.jjtSetLastToken(getToken(0));
1083    }
1084    }
1085    throw new Error("Missing return statement in function");
1086  }
1087
1088  final public ASTAugmentDeclaration AugmentDeclaration() throws ParseException {/*@bgen(jjtree) AugmentDeclaration */
1089  ASTAugmentDeclaration jjtn000 = new ASTAugmentDeclaration(JJTAUGMENTDECLARATION);
1090  boolean jjtc000 = true;
1091  jjtree.openNodeScope(jjtn000);
1092  jjtn000.jjtSetFirstToken(getToken(1));String target;
1093  List<String> names = null;
1094    try {
1095      jj_consume_token(AUGMENT);
1096      target = QualifiedName();
1097      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1098      case 79:{
1099        AugmentationDeclaration();
1100        break;
1101        }
1102      case WITH:{
1103        jj_consume_token(WITH);
1104        names = AugmentationNames();
1105        break;
1106        }
1107      default:
1108        jj_la1[35] = jj_gen;
1109        jj_consume_token(-1);
1110        throw new ParseException();
1111      }
1112jjtree.closeNodeScope(jjtn000, true);
1113    jjtc000 = false;
1114    jjtn000.jjtSetLastToken(getToken(0));
1115jjtn000.setTarget(target);
1116    jjtn000.setAugmentationNames(names);
1117    {if ("" != null) return jjtn000;}
1118    } catch (Throwable jjte000) {
1119if (jjtc000) {
1120      jjtree.clearNodeScope(jjtn000);
1121      jjtc000 = false;
1122    } else {
1123      jjtree.popNode();
1124    }
1125    if (jjte000 instanceof RuntimeException) {
1126      {if (true) throw (RuntimeException)jjte000;}
1127    }
1128    if (jjte000 instanceof ParseException) {
1129      {if (true) throw (ParseException)jjte000;}
1130    }
1131    {if (true) throw (Error)jjte000;}
1132    } finally {
1133if (jjtc000) {
1134      jjtree.closeNodeScope(jjtn000, true);
1135      jjtn000.jjtSetLastToken(getToken(0));
1136    }
1137    }
1138    throw new Error("Missing return statement in function");
1139  }
1140
1141  final public ASTFunctionDeclaration FunctionDeclaration() throws ParseException {/*@bgen(jjtree) FunctionDeclaration */
1142  ASTFunctionDeclaration jjtn000 = new ASTFunctionDeclaration(JJTFUNCTIONDECLARATION);
1143  boolean jjtc000 = true;
1144  jjtree.openNodeScope(jjtn000);
1145  jjtn000.jjtSetFirstToken(getToken(1));Token name;
1146    try {
1147      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1148      case FUNCTION:{
1149        jj_consume_token(FUNCTION);
1150        break;
1151        }
1152      case MACRO:{
1153        jj_consume_token(MACRO);
1154jjtn000.setMacro(true);
1155        break;
1156        }
1157      default:
1158        jj_la1[36] = jj_gen;
1159        jj_consume_token(-1);
1160        throw new ParseException();
1161      }
1162      name = jj_consume_token(IDENTIFIER);
1163      jj_consume_token(78);
1164      Function();
1165jjtree.closeNodeScope(jjtn000, true);
1166    jjtc000 = false;
1167    jjtn000.jjtSetLastToken(getToken(0));
1168jjtn000.setName(name.image);
1169    {if ("" != null) return jjtn000;}
1170    } catch (Throwable jjte000) {
1171if (jjtc000) {
1172      jjtree.clearNodeScope(jjtn000);
1173      jjtc000 = false;
1174    } else {
1175      jjtree.popNode();
1176    }
1177    if (jjte000 instanceof RuntimeException) {
1178      {if (true) throw (RuntimeException)jjte000;}
1179    }
1180    if (jjte000 instanceof ParseException) {
1181      {if (true) throw (ParseException)jjte000;}
1182    }
1183    {if (true) throw (Error)jjte000;}
1184    } finally {
1185if (jjtc000) {
1186      jjtree.closeNodeScope(jjtn000, true);
1187      jjtn000.jjtSetLastToken(getToken(0));
1188    }
1189    }
1190    throw new Error("Missing return statement in function");
1191  }
1192
1193  final public ASTDecoratorDeclaration DecoratorDeclaration() throws ParseException {/*@bgen(jjtree) DecoratorDeclaration */
1194  ASTDecoratorDeclaration jjtn000 = new ASTDecoratorDeclaration(JJTDECORATORDECLARATION);
1195  boolean jjtc000 = true;
1196  jjtree.openNodeScope(jjtn000);
1197  jjtn000.jjtSetFirstToken(getToken(1));Token constant = null;
1198    try {
1199      jj_consume_token(DECORATOR);
1200      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1201      case CONSTANT_INVOCATION:{
1202        constant = jj_consume_token(CONSTANT_INVOCATION);
1203        break;
1204        }
1205      default:
1206        jj_la1[37] = jj_gen;
1207        ;
1208      }
1209      if (jj_2_2(2)) {
1210        InvocationExpression();
1211      } else if (jj_2_3(2)) {
1212        Reference();
1213      } else {
1214        jj_consume_token(-1);
1215        throw new ParseException();
1216      }
1217      BlankLines();
1218jjtree.closeNodeScope(jjtn000, true);
1219    jjtc000 = false;
1220    jjtn000.jjtSetLastToken(getToken(0));
1221if (constant != null) {
1222        jjtn000.setConstant(true);
1223    }
1224    {if ("" != null) return jjtn000;}
1225    } catch (Throwable jjte000) {
1226if (jjtc000) {
1227      jjtree.clearNodeScope(jjtn000);
1228      jjtc000 = false;
1229    } else {
1230      jjtree.popNode();
1231    }
1232    if (jjte000 instanceof RuntimeException) {
1233      {if (true) throw (RuntimeException)jjte000;}
1234    }
1235    if (jjte000 instanceof ParseException) {
1236      {if (true) throw (ParseException)jjte000;}
1237    }
1238    {if (true) throw (Error)jjte000;}
1239    } finally {
1240if (jjtc000) {
1241      jjtree.closeNodeScope(jjtn000, true);
1242      jjtn000.jjtSetLastToken(getToken(0));
1243    }
1244    }
1245    throw new Error("Missing return statement in function");
1246  }
1247
1248// ............................................................................................. //
1249  final public 
1250void Statement() throws ParseException {
1251    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1252    case NEWLINE:
1253    case COMMENT:{
1254      BlankLine();
1255      break;
1256      }
1257    default:
1258      jj_la1[38] = jj_gen;
1259      if (jj_2_4(2)) {
1260        Assignment();
1261      } else if (jj_2_5(3)) {
1262        DestructuringAssignment();
1263      } else if (jj_2_6(2)) {
1264        LetOrVar();
1265      } else {
1266        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1267        case MATCH:
1268        case UNARY_OPERATOR:
1269        case MACRO_INVOCATION:
1270        case NUMBER:
1271        case LONG_NUMBER:
1272        case BIGINTEGER:
1273        case FLOATING_NUMBER:
1274        case FLOAT:
1275        case BIGDECIMAL:
1276        case STRING:
1277        case CHAR:
1278        case NULL:
1279        case TRUE:
1280        case FALSE:
1281        case CLASSREF:
1282        case FUNREF:
1283        case COLL_START:
1284        case MULTI_STRING:
1285        case IDENTIFIER:
1286        case 79:
1287        case 80:
1288        case 83:
1289        case 84:{
1290          ExpressionStatement();
1291          break;
1292          }
1293        case RETURN:{
1294          Return();
1295          break;
1296          }
1297        case IF:{
1298          ConditionalBranching();
1299          break;
1300          }
1301        case WHILE:{
1302          WhileLoop();
1303          break;
1304          }
1305        case FOR:{
1306          ForLoop();
1307          break;
1308          }
1309        case FOREACH:{
1310          ForEachLoop();
1311          break;
1312          }
1313        case THROW:{
1314          Throw();
1315          break;
1316          }
1317        case TRY:{
1318          TryCatchFinally();
1319          break;
1320          }
1321        case CASE:{
1322          Case();
1323          break;
1324          }
1325        case CONTINUE:{
1326          Continue();
1327          break;
1328          }
1329        case BREAK:{
1330          Break();
1331          break;
1332          }
1333        default:
1334          jj_la1[39] = jj_gen;
1335          jj_consume_token(-1);
1336          throw new ParseException();
1337        }
1338      }
1339    }
1340  }
1341
1342  final public void Continue() throws ParseException {/*@bgen(jjtree) Continue */
1343  ASTContinue jjtn000 = new ASTContinue(JJTCONTINUE);
1344  boolean jjtc000 = true;
1345  jjtree.openNodeScope(jjtn000);
1346  jjtn000.jjtSetFirstToken(getToken(1));
1347    try {
1348      jj_consume_token(CONTINUE);
1349    } finally {
1350if (jjtc000) {
1351      jjtree.closeNodeScope(jjtn000, true);
1352      jjtn000.jjtSetLastToken(getToken(0));
1353    }
1354    }
1355  }
1356
1357  final public void Break() throws ParseException {/*@bgen(jjtree) Break */
1358  ASTBreak jjtn000 = new ASTBreak(JJTBREAK);
1359  boolean jjtc000 = true;
1360  jjtree.openNodeScope(jjtn000);
1361  jjtn000.jjtSetFirstToken(getToken(1));
1362    try {
1363      jj_consume_token(BREAK);
1364    } finally {
1365if (jjtc000) {
1366      jjtree.closeNodeScope(jjtn000, true);
1367      jjtn000.jjtSetLastToken(getToken(0));
1368    }
1369    }
1370  }
1371
1372  final public void Throw() throws ParseException {/*@bgen(jjtree) Throw */
1373  ASTThrow jjtn000 = new ASTThrow(JJTTHROW);
1374  boolean jjtc000 = true;
1375  jjtree.openNodeScope(jjtn000);
1376  jjtn000.jjtSetFirstToken(getToken(1));
1377    try {
1378      jj_consume_token(THROW);
1379      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1380      case NEWLINE:
1381      case COMMENT:{
1382        BlankLine();
1383        break;
1384        }
1385      default:
1386        jj_la1[40] = jj_gen;
1387        ;
1388      }
1389      ExpressionStatement();
1390    } catch (Throwable jjte000) {
1391if (jjtc000) {
1392      jjtree.clearNodeScope(jjtn000);
1393      jjtc000 = false;
1394    } else {
1395      jjtree.popNode();
1396    }
1397    if (jjte000 instanceof RuntimeException) {
1398      {if (true) throw (RuntimeException)jjte000;}
1399    }
1400    if (jjte000 instanceof ParseException) {
1401      {if (true) throw (ParseException)jjte000;}
1402    }
1403    {if (true) throw (Error)jjte000;}
1404    } finally {
1405if (jjtc000) {
1406      jjtree.closeNodeScope(jjtn000, true);
1407      jjtn000.jjtSetLastToken(getToken(0));
1408    }
1409    }
1410  }
1411
1412  final public void WhileLoop() throws ParseException {/*@bgen(jjtree) WhileLoop */
1413  ASTWhileLoop jjtn000 = new ASTWhileLoop(JJTWHILELOOP);
1414  boolean jjtc000 = true;
1415  jjtree.openNodeScope(jjtn000);
1416  jjtn000.jjtSetFirstToken(getToken(1));
1417    try {
1418      jj_consume_token(WHILE);
1419      ExpressionStatement();
1420      Block();
1421    } catch (Throwable jjte000) {
1422if (jjtc000) {
1423      jjtree.clearNodeScope(jjtn000);
1424      jjtc000 = false;
1425    } else {
1426      jjtree.popNode();
1427    }
1428    if (jjte000 instanceof RuntimeException) {
1429      {if (true) throw (RuntimeException)jjte000;}
1430    }
1431    if (jjte000 instanceof ParseException) {
1432      {if (true) throw (ParseException)jjte000;}
1433    }
1434    {if (true) throw (Error)jjte000;}
1435    } finally {
1436if (jjtc000) {
1437      jjtree.closeNodeScope(jjtn000, true);
1438      jjtn000.jjtSetLastToken(getToken(0));
1439    }
1440    }
1441  }
1442
1443  final public void ForLoop() throws ParseException {/*@bgen(jjtree) ForLoop */
1444  ASTForLoop jjtn000 = new ASTForLoop(JJTFORLOOP);
1445  boolean jjtc000 = true;
1446  jjtree.openNodeScope(jjtn000);
1447  jjtn000.jjtSetFirstToken(getToken(1));
1448    try {
1449      jj_consume_token(FOR);
1450      jj_consume_token(80);
1451      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1452      case NEWLINE:
1453      case COMMENT:{
1454        BlankLine();
1455        break;
1456        }
1457      default:
1458        jj_la1[41] = jj_gen;
1459        ;
1460      }
1461      LetOrVar();
1462      jj_consume_token(75);
1463      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1464      case NEWLINE:
1465      case COMMENT:{
1466        BlankLine();
1467        break;
1468        }
1469      default:
1470        jj_la1[42] = jj_gen;
1471        ;
1472      }
1473      ExpressionStatement();
1474      jj_consume_token(75);
1475      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1476      case NEWLINE:
1477      case COMMENT:{
1478        BlankLine();
1479        break;
1480        }
1481      default:
1482        jj_la1[43] = jj_gen;
1483        ;
1484      }
1485      Statement();
1486      jj_consume_token(81);
1487      if (jj_2_7(2)) {
1488        Block();
1489      } else {
1490        ;
1491      }
1492    } catch (Throwable jjte000) {
1493if (jjtc000) {
1494      jjtree.clearNodeScope(jjtn000);
1495      jjtc000 = false;
1496    } else {
1497      jjtree.popNode();
1498    }
1499    if (jjte000 instanceof RuntimeException) {
1500      {if (true) throw (RuntimeException)jjte000;}
1501    }
1502    if (jjte000 instanceof ParseException) {
1503      {if (true) throw (ParseException)jjte000;}
1504    }
1505    {if (true) throw (Error)jjte000;}
1506    } finally {
1507if (jjtc000) {
1508      jjtree.closeNodeScope(jjtn000, true);
1509      jjtn000.jjtSetLastToken(getToken(0));
1510    }
1511    }
1512  }
1513
1514  final public void ForEachLoop() throws ParseException {/*@bgen(jjtree) ForEachLoop */
1515  ASTForEachLoop jjtn000 = new ASTForEachLoop(JJTFOREACHLOOP);
1516  boolean jjtc000 = true;
1517  jjtree.openNodeScope(jjtn000);
1518  jjtn000.jjtSetFirstToken(getToken(1));Token elementId;
1519  List<String> names;
1520  Token varargsToken = null;
1521    try {
1522      jj_consume_token(FOREACH);
1523      if (jj_2_8(2)) {
1524        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1525        case IDENTIFIER:{
1526          elementId = jj_consume_token(IDENTIFIER);
1527          jj_consume_token(IN);
1528          ExpressionStatement();
1529          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1530          case WHEN:{
1531            jj_consume_token(WHEN);
1532            ExpressionStatement();
1533            break;
1534            }
1535          default:
1536            jj_la1[44] = jj_gen;
1537            ;
1538          }
1539          break;
1540          }
1541        case 80:{
1542          jj_consume_token(80);
1543          elementId = jj_consume_token(IDENTIFIER);
1544          jj_consume_token(IN);
1545          ExpressionStatement();
1546          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1547          case WHEN:{
1548            jj_consume_token(WHEN);
1549            ExpressionStatement();
1550            break;
1551            }
1552          default:
1553            jj_la1[45] = jj_gen;
1554            ;
1555          }
1556          jj_consume_token(81);
1557          break;
1558          }
1559        default:
1560          jj_la1[46] = jj_gen;
1561          jj_consume_token(-1);
1562          throw new ParseException();
1563        }
1564jjtn000.setElementIdentifier(elementId.image);
1565      } else if (jj_2_9(2)) {
1566        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1567        case IDENTIFIER:{
1568          names = DestructuredNames();
1569          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1570          case 82:{
1571            varargsToken = jj_consume_token(82);
1572            break;
1573            }
1574          default:
1575            jj_la1[47] = jj_gen;
1576            ;
1577          }
1578          jj_consume_token(IN);
1579          ExpressionStatement();
1580          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1581          case WHEN:{
1582            jj_consume_token(WHEN);
1583            ExpressionStatement();
1584            break;
1585            }
1586          default:
1587            jj_la1[48] = jj_gen;
1588            ;
1589          }
1590          break;
1591          }
1592        case 80:{
1593          jj_consume_token(80);
1594          names = DestructuredNames();
1595          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1596          case 82:{
1597            varargsToken = jj_consume_token(82);
1598            break;
1599            }
1600          default:
1601            jj_la1[49] = jj_gen;
1602            ;
1603          }
1604          jj_consume_token(IN);
1605          ExpressionStatement();
1606          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1607          case WHEN:{
1608            jj_consume_token(WHEN);
1609            ExpressionStatement();
1610            break;
1611            }
1612          default:
1613            jj_la1[50] = jj_gen;
1614            ;
1615          }
1616          jj_consume_token(81);
1617          break;
1618          }
1619        default:
1620          jj_la1[51] = jj_gen;
1621          jj_consume_token(-1);
1622          throw new ParseException();
1623        }
1624jjtn000.setNames(names);
1625      jjtn000.setVarargs(varargsToken != null);
1626      } else {
1627        jj_consume_token(-1);
1628        throw new ParseException();
1629      }
1630      if (jj_2_10(2)) {
1631        Block();
1632      } else {
1633        ;
1634      }
1635    } catch (Throwable jjte000) {
1636if (jjtc000) {
1637      jjtree.clearNodeScope(jjtn000);
1638      jjtc000 = false;
1639    } else {
1640      jjtree.popNode();
1641    }
1642    if (jjte000 instanceof RuntimeException) {
1643      {if (true) throw (RuntimeException)jjte000;}
1644    }
1645    if (jjte000 instanceof ParseException) {
1646      {if (true) throw (ParseException)jjte000;}
1647    }
1648    {if (true) throw (Error)jjte000;}
1649    } finally {
1650if (jjtc000) {
1651      jjtree.closeNodeScope(jjtn000, true);
1652      jjtn000.jjtSetLastToken(getToken(0));
1653    }
1654    }
1655  }
1656
1657  final public void TryCatchFinally() throws ParseException {/*@bgen(jjtree) TryCatchFinally */
1658  ASTTryCatchFinally jjtn000 = new ASTTryCatchFinally(JJTTRYCATCHFINALLY);
1659  boolean jjtc000 = true;
1660  jjtree.openNodeScope(jjtn000);
1661  jjtn000.jjtSetFirstToken(getToken(1));Token exceptionId;
1662    try {
1663      jj_consume_token(TRY);
1664      Block();
1665      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1666      case FINALLY:{
1667        jj_consume_token(FINALLY);
1668        Block();
1669jjtree.closeNodeScope(jjtn000, true);
1670        jjtc000 = false;
1671        jjtn000.jjtSetLastToken(getToken(0));
1672jjtn000.setExceptionId(null);
1673        break;
1674        }
1675      case CATCH:{
1676        jj_consume_token(CATCH);
1677        jj_consume_token(80);
1678        exceptionId = jj_consume_token(IDENTIFIER);
1679        jj_consume_token(81);
1680        Block();
1681        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1682        case FINALLY:{
1683          jj_consume_token(FINALLY);
1684          Block();
1685          break;
1686          }
1687        default:
1688          jj_la1[52] = jj_gen;
1689          ;
1690        }
1691jjtree.closeNodeScope(jjtn000, true);
1692        jjtc000 = false;
1693        jjtn000.jjtSetLastToken(getToken(0));
1694jjtn000.setExceptionId(exceptionId.image);
1695        break;
1696        }
1697      default:
1698        jj_la1[53] = jj_gen;
1699        jj_consume_token(-1);
1700        throw new ParseException();
1701      }
1702    } catch (Throwable jjte000) {
1703if (jjtc000) {
1704      jjtree.clearNodeScope(jjtn000);
1705      jjtc000 = false;
1706    } else {
1707      jjtree.popNode();
1708    }
1709    if (jjte000 instanceof RuntimeException) {
1710      {if (true) throw (RuntimeException)jjte000;}
1711    }
1712    if (jjte000 instanceof ParseException) {
1713      {if (true) throw (ParseException)jjte000;}
1714    }
1715    {if (true) throw (Error)jjte000;}
1716    } finally {
1717if (jjtc000) {
1718      jjtree.closeNodeScope(jjtn000, true);
1719      jjtn000.jjtSetLastToken(getToken(0));
1720    }
1721    }
1722  }
1723
1724  final public void ExpressionStatement() throws ParseException {/*@bgen(jjtree) ExpressionStatement */
1725  ASTExpressionStatement jjtn000 = new ASTExpressionStatement(JJTEXPRESSIONSTATEMENT);
1726  boolean jjtc000 = true;
1727  jjtree.openNodeScope(jjtn000);
1728  jjtn000.jjtSetFirstToken(getToken(1));
1729    try {
1730      OrIfNullExpression();
1731      if (jj_2_11(2)) {
1732        LocalDeclaration();
1733      } else {
1734        ;
1735      }
1736      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1737      case NEWLINE:
1738      case COMMENT:{
1739        BlankLine();
1740        break;
1741        }
1742      default:
1743        jj_la1[54] = jj_gen;
1744        ;
1745      }
1746    } catch (Throwable jjte000) {
1747if (jjtc000) {
1748      jjtree.clearNodeScope(jjtn000);
1749      jjtc000 = false;
1750    } else {
1751      jjtree.popNode();
1752    }
1753    if (jjte000 instanceof RuntimeException) {
1754      {if (true) throw (RuntimeException)jjte000;}
1755    }
1756    if (jjte000 instanceof ParseException) {
1757      {if (true) throw (ParseException)jjte000;}
1758    }
1759    {if (true) throw (Error)jjte000;}
1760    } finally {
1761if (jjtc000) {
1762      jjtree.closeNodeScope(jjtn000, true);
1763      jjtn000.jjtSetLastToken(getToken(0));
1764    }
1765    }
1766  }
1767
1768  final public void LocalDeclaration() throws ParseException {/*@bgen(jjtree) LocalDeclaration */
1769  ASTLocalDeclaration jjtn000 = new ASTLocalDeclaration(JJTLOCALDECLARATION);
1770  boolean jjtc000 = true;
1771  jjtree.openNodeScope(jjtn000);
1772  jjtn000.jjtSetFirstToken(getToken(1));
1773    try {
1774      jj_consume_token(WITH);
1775      jj_consume_token(79);
1776      label_16:
1777      while (true) {
1778        if (jj_2_12(3)) {
1779          Assignment();
1780        } else {
1781          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1782          case VAR:
1783          case LET:
1784          case IDENTIFIER:{
1785            DestructuringAssignment();
1786            break;
1787            }
1788          case NEWLINE:
1789          case COMMENT:{
1790            BlankLine();
1791            break;
1792            }
1793          default:
1794            jj_la1[55] = jj_gen;
1795            jj_consume_token(-1);
1796            throw new ParseException();
1797          }
1798        }
1799        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1800        case NEWLINE:
1801        case VAR:
1802        case LET:
1803        case IDENTIFIER:
1804        case COMMENT:{
1805          ;
1806          break;
1807          }
1808        default:
1809          jj_la1[56] = jj_gen;
1810          break label_16;
1811        }
1812      }
1813      jj_consume_token(77);
1814    } catch (Throwable jjte000) {
1815if (jjtc000) {
1816      jjtree.clearNodeScope(jjtn000);
1817      jjtc000 = false;
1818    } else {
1819      jjtree.popNode();
1820    }
1821    if (jjte000 instanceof RuntimeException) {
1822      {if (true) throw (RuntimeException)jjte000;}
1823    }
1824    if (jjte000 instanceof ParseException) {
1825      {if (true) throw (ParseException)jjte000;}
1826    }
1827    {if (true) throw (Error)jjte000;}
1828    } finally {
1829if (jjtc000) {
1830      jjtree.closeNodeScope(jjtn000, true);
1831      jjtn000.jjtSetLastToken(getToken(0));
1832    }
1833    }
1834  }
1835
1836  final public void Atom() throws ParseException {
1837    if (jj_2_13(2)) {
1838      FunctionInvocation();
1839    } else if (jj_2_14(2)) {
1840      Reference();
1841    } else {
1842      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1843      case MACRO_INVOCATION:{
1844        MacroInvocation();
1845        break;
1846        }
1847      case MATCH:{
1848        Match();
1849        break;
1850        }
1851      case NUMBER:
1852      case LONG_NUMBER:
1853      case BIGINTEGER:
1854      case FLOATING_NUMBER:
1855      case FLOAT:
1856      case BIGDECIMAL:
1857      case STRING:
1858      case CHAR:
1859      case NULL:
1860      case TRUE:
1861      case FALSE:
1862      case CLASSREF:
1863      case FUNREF:
1864      case MULTI_STRING:{
1865        Literal();
1866        break;
1867        }
1868      case 79:
1869      case 83:
1870      case 84:{
1871        Function();
1872        break;
1873        }
1874      case COLL_START:{
1875        CollectionLiteral();
1876        break;
1877        }
1878      case 80:{
1879        jj_consume_token(80);
1880        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1881        case NEWLINE:
1882        case COMMENT:{
1883          BlankLine();
1884          break;
1885          }
1886        default:
1887          jj_la1[57] = jj_gen;
1888          ;
1889        }
1890        ExpressionStatement();
1891        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1892        case NEWLINE:
1893        case COMMENT:{
1894          BlankLine();
1895          break;
1896          }
1897        default:
1898          jj_la1[58] = jj_gen;
1899          ;
1900        }
1901        jj_consume_token(81);
1902        break;
1903        }
1904      default:
1905        jj_la1[59] = jj_gen;
1906        jj_consume_token(-1);
1907        throw new ParseException();
1908      }
1909    }
1910  }
1911
1912  final public void UnaryExpression() throws ParseException {Token token = null;
1913    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1914    case UNARY_OPERATOR:{
1915      token = jj_consume_token(UNARY_OPERATOR);
1916      break;
1917      }
1918    default:
1919      jj_la1[60] = jj_gen;
1920      ;
1921    }
1922    InvocationExpression();
1923ASTUnaryExpression jjtn001 = new ASTUnaryExpression(JJTUNARYEXPRESSION);
1924                                                     boolean jjtc001 = true;
1925                                                     jjtree.openNodeScope(jjtn001);
1926                                                     jjtn001.jjtSetFirstToken(getToken(1));
1927    try {
1928jjtree.closeNodeScope(jjtn001,  token != null);
1929                                                     jjtc001 = false;
1930                                                     jjtn001.jjtSetLastToken(getToken(0));
1931if (token != null) {
1932      jjtn001.setOperator(token.image);
1933    }
1934    } finally {
1935if (jjtc001) {
1936                                                       jjtree.closeNodeScope(jjtn001,  token != null);
1937                                                       jjtn001.jjtSetLastToken(getToken(0));
1938                                                     }
1939    }
1940  }
1941
1942  final public void InvocationExpression() throws ParseException {Token token = null;
1943  ASTAnonymousFunctionInvocation anon = null;
1944    Atom();
1945ASTInvocationExpression jjtn001 = new ASTInvocationExpression(JJTINVOCATIONEXPRESSION);
1946    boolean jjtc001 = true;
1947    jjtree.openNodeScope(jjtn001);
1948    jjtn001.jjtSetFirstToken(getToken(1));
1949    try {
1950      label_17:
1951      while (true) {
1952        if (jj_2_15(2)) {
1953          ;
1954        } else {
1955          break label_17;
1956        }
1957        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1958        case NEWLINE:
1959        case COMMENT:{
1960          BlankLine();
1961          break;
1962          }
1963        default:
1964          jj_la1[61] = jj_gen;
1965          ;
1966        }
1967        token = jj_consume_token(INVOCATION_OPERATOR);
1968        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1969        case NEWLINE:
1970        case COMMENT:{
1971          BlankLine();
1972          break;
1973          }
1974        default:
1975          jj_la1[62] = jj_gen;
1976          ;
1977        }
1978        MethodInvocation();
1979jjtn001.addOperator(token.image);
1980      }
1981    } catch (Throwable jjte001) {
1982if (jjtc001) {
1983      jjtree.clearNodeScope(jjtn001);
1984      jjtc001 = false;
1985    } else {
1986      jjtree.popNode();
1987    }
1988    if (jjte001 instanceof RuntimeException) {
1989      {if (true) throw (RuntimeException)jjte001;}
1990    }
1991    if (jjte001 instanceof ParseException) {
1992      {if (true) throw (ParseException)jjte001;}
1993    }
1994    {if (true) throw (Error)jjte001;}
1995    } finally {
1996if (jjtc001) {
1997      jjtree.closeNodeScope(jjtn001,  token != null);
1998      jjtn001.jjtSetLastToken(getToken(0));
1999    }
2000    }
2001    label_18:
2002    while (true) {
2003      if (jj_2_16(2)) {
2004        ;
2005      } else {
2006        break label_18;
2007      }
2008      anon = AnonymousFunctionInvocation();
2009anon.setOnExpression(true);
2010    }
2011  }
2012
2013  final public void MultiplicativeExpression() throws ParseException {Token token = null;
2014    UnaryExpression();
2015ASTMultiplicativeExpression jjtn001 = new ASTMultiplicativeExpression(JJTMULTIPLICATIVEEXPRESSION);
2016    boolean jjtc001 = true;
2017    jjtree.openNodeScope(jjtn001);
2018    jjtn001.jjtSetFirstToken(getToken(1));
2019    try {
2020      label_19:
2021      while (true) {
2022        if (jj_2_17(2)) {
2023          ;
2024        } else {
2025          break label_19;
2026        }
2027        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2028        case NEWLINE:
2029        case COMMENT:{
2030          BlankLine();
2031          break;
2032          }
2033        default:
2034          jj_la1[63] = jj_gen;
2035          ;
2036        }
2037        token = jj_consume_token(MULTIPLICATIVE_OPERATOR);
2038        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2039        case NEWLINE:
2040        case COMMENT:{
2041          BlankLine();
2042          break;
2043          }
2044        default:
2045          jj_la1[64] = jj_gen;
2046          ;
2047        }
2048        InvocationExpression();
2049jjtn001.addOperator(token.image);
2050      }
2051    } catch (Throwable jjte001) {
2052if (jjtc001) {
2053      jjtree.clearNodeScope(jjtn001);
2054      jjtc001 = false;
2055    } else {
2056      jjtree.popNode();
2057    }
2058    if (jjte001 instanceof RuntimeException) {
2059      {if (true) throw (RuntimeException)jjte001;}
2060    }
2061    if (jjte001 instanceof ParseException) {
2062      {if (true) throw (ParseException)jjte001;}
2063    }
2064    {if (true) throw (Error)jjte001;}
2065    } finally {
2066if (jjtc001) {
2067      jjtree.closeNodeScope(jjtn001,  token != null);
2068      jjtn001.jjtSetLastToken(getToken(0));
2069    }
2070    }
2071  }
2072
2073  final public void AdditiveExpression() throws ParseException {Token token = null;
2074    MultiplicativeExpression();
2075ASTAdditiveExpression jjtn001 = new ASTAdditiveExpression(JJTADDITIVEEXPRESSION);
2076    boolean jjtc001 = true;
2077    jjtree.openNodeScope(jjtn001);
2078    jjtn001.jjtSetFirstToken(getToken(1));
2079    try {
2080      label_20:
2081      while (true) {
2082        if (jj_2_18(2)) {
2083          ;
2084        } else {
2085          break label_20;
2086        }
2087        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2088        case NEWLINE:
2089        case COMMENT:{
2090          BlankLine();
2091          break;
2092          }
2093        default:
2094          jj_la1[65] = jj_gen;
2095          ;
2096        }
2097        token = jj_consume_token(ADDITIVE_OPERATOR);
2098        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2099        case NEWLINE:
2100        case COMMENT:{
2101          BlankLine();
2102          break;
2103          }
2104        default:
2105          jj_la1[66] = jj_gen;
2106          ;
2107        }
2108        MultiplicativeExpression();
2109jjtn001.addOperator(token.image);
2110      }
2111    } catch (Throwable jjte001) {
2112if (jjtc001) {
2113      jjtree.clearNodeScope(jjtn001);
2114      jjtc001 = false;
2115    } else {
2116      jjtree.popNode();
2117    }
2118    if (jjte001 instanceof RuntimeException) {
2119      {if (true) throw (RuntimeException)jjte001;}
2120    }
2121    if (jjte001 instanceof ParseException) {
2122      {if (true) throw (ParseException)jjte001;}
2123    }
2124    {if (true) throw (Error)jjte001;}
2125    } finally {
2126if (jjtc001) {
2127      jjtree.closeNodeScope(jjtn001,  token != null);
2128      jjtn001.jjtSetLastToken(getToken(0));
2129    }
2130    }
2131  }
2132
2133  final public void RelationalExpression() throws ParseException {Token token = null;
2134    AdditiveExpression();
2135ASTRelationalExpression jjtn001 = new ASTRelationalExpression(JJTRELATIONALEXPRESSION);
2136    boolean jjtc001 = true;
2137    jjtree.openNodeScope(jjtn001);
2138    jjtn001.jjtSetFirstToken(getToken(1));
2139    try {
2140      if (jj_2_19(2)) {
2141        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2142        case NEWLINE:
2143        case COMMENT:{
2144          BlankLine();
2145          break;
2146          }
2147        default:
2148          jj_la1[67] = jj_gen;
2149          ;
2150        }
2151        token = jj_consume_token(RELATIONAL_OPERATOR);
2152        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2153        case NEWLINE:
2154        case COMMENT:{
2155          BlankLine();
2156          break;
2157          }
2158        default:
2159          jj_la1[68] = jj_gen;
2160          ;
2161        }
2162        AdditiveExpression();
2163jjtn001.setOperator(token.image);
2164      } else {
2165        ;
2166      }
2167    } catch (Throwable jjte001) {
2168if (jjtc001) {
2169      jjtree.clearNodeScope(jjtn001);
2170      jjtc001 = false;
2171    } else {
2172      jjtree.popNode();
2173    }
2174    if (jjte001 instanceof RuntimeException) {
2175      {if (true) throw (RuntimeException)jjte001;}
2176    }
2177    if (jjte001 instanceof ParseException) {
2178      {if (true) throw (ParseException)jjte001;}
2179    }
2180    {if (true) throw (Error)jjte001;}
2181    } finally {
2182if (jjtc001) {
2183      jjtree.closeNodeScope(jjtn001,  token != null);
2184      jjtn001.jjtSetLastToken(getToken(0));
2185    }
2186    }
2187  }
2188
2189  final public void EqualityExpression() throws ParseException {Token token = null;
2190    RelationalExpression();
2191ASTEqualityExpression jjtn001 = new ASTEqualityExpression(JJTEQUALITYEXPRESSION);
2192    boolean jjtc001 = true;
2193    jjtree.openNodeScope(jjtn001);
2194    jjtn001.jjtSetFirstToken(getToken(1));
2195    try {
2196      if (jj_2_20(2)) {
2197        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2198        case NEWLINE:
2199        case COMMENT:{
2200          BlankLine();
2201          break;
2202          }
2203        default:
2204          jj_la1[69] = jj_gen;
2205          ;
2206        }
2207        token = jj_consume_token(EQUALITY_OPERATOR);
2208        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2209        case NEWLINE:
2210        case COMMENT:{
2211          BlankLine();
2212          break;
2213          }
2214        default:
2215          jj_la1[70] = jj_gen;
2216          ;
2217        }
2218        RelationalExpression();
2219jjtn001.setOperator(token.image);
2220      } else {
2221        ;
2222      }
2223    } catch (Throwable jjte001) {
2224if (jjtc001) {
2225      jjtree.clearNodeScope(jjtn001);
2226      jjtc001 = false;
2227    } else {
2228      jjtree.popNode();
2229    }
2230    if (jjte001 instanceof RuntimeException) {
2231      {if (true) throw (RuntimeException)jjte001;}
2232    }
2233    if (jjte001 instanceof ParseException) {
2234      {if (true) throw (ParseException)jjte001;}
2235    }
2236    {if (true) throw (Error)jjte001;}
2237    } finally {
2238if (jjtc001) {
2239      jjtree.closeNodeScope(jjtn001,  token != null);
2240      jjtn001.jjtSetLastToken(getToken(0));
2241    }
2242    }
2243  }
2244
2245  final public void AndExpression() throws ParseException {int count = 0;
2246    EqualityExpression();
2247ASTAndExpression jjtn001 = new ASTAndExpression(JJTANDEXPRESSION);
2248    boolean jjtc001 = true;
2249    jjtree.openNodeScope(jjtn001);
2250    jjtn001.jjtSetFirstToken(getToken(1));
2251    try {
2252      label_21:
2253      while (true) {
2254        if (jj_2_21(2)) {
2255          ;
2256        } else {
2257          break label_21;
2258        }
2259        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2260        case NEWLINE:
2261        case COMMENT:{
2262          BlankLine();
2263          break;
2264          }
2265        default:
2266          jj_la1[71] = jj_gen;
2267          ;
2268        }
2269        jj_consume_token(AND_OPERATOR);
2270        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2271        case NEWLINE:
2272        case COMMENT:{
2273          BlankLine();
2274          break;
2275          }
2276        default:
2277          jj_la1[72] = jj_gen;
2278          ;
2279        }
2280        EqualityExpression();
2281jjtn001.increaseCount();
2282      count++;
2283      }
2284    } catch (Throwable jjte001) {
2285if (jjtc001) {
2286      jjtree.clearNodeScope(jjtn001);
2287      jjtc001 = false;
2288    } else {
2289      jjtree.popNode();
2290    }
2291    if (jjte001 instanceof RuntimeException) {
2292      {if (true) throw (RuntimeException)jjte001;}
2293    }
2294    if (jjte001 instanceof ParseException) {
2295      {if (true) throw (ParseException)jjte001;}
2296    }
2297    {if (true) throw (Error)jjte001;}
2298    } finally {
2299if (jjtc001) {
2300      jjtree.closeNodeScope(jjtn001,  count > 0);
2301      jjtn001.jjtSetLastToken(getToken(0));
2302    }
2303    }
2304  }
2305
2306  final public void OrExpression() throws ParseException {int count = 0;
2307    AndExpression();
2308ASTOrExpression jjtn001 = new ASTOrExpression(JJTOREXPRESSION);
2309    boolean jjtc001 = true;
2310    jjtree.openNodeScope(jjtn001);
2311    jjtn001.jjtSetFirstToken(getToken(1));
2312    try {
2313      label_22:
2314      while (true) {
2315        if (jj_2_22(2)) {
2316          ;
2317        } else {
2318          break label_22;
2319        }
2320        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2321        case NEWLINE:
2322        case COMMENT:{
2323          BlankLine();
2324          break;
2325          }
2326        default:
2327          jj_la1[73] = jj_gen;
2328          ;
2329        }
2330        jj_consume_token(OR_OPERATOR);
2331        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2332        case NEWLINE:
2333        case COMMENT:{
2334          BlankLine();
2335          break;
2336          }
2337        default:
2338          jj_la1[74] = jj_gen;
2339          ;
2340        }
2341        AndExpression();
2342jjtn001.increaseCount();
2343      count++;
2344      }
2345    } catch (Throwable jjte001) {
2346if (jjtc001) {
2347      jjtree.clearNodeScope(jjtn001);
2348      jjtc001 = false;
2349    } else {
2350      jjtree.popNode();
2351    }
2352    if (jjte001 instanceof RuntimeException) {
2353      {if (true) throw (RuntimeException)jjte001;}
2354    }
2355    if (jjte001 instanceof ParseException) {
2356      {if (true) throw (ParseException)jjte001;}
2357    }
2358    {if (true) throw (Error)jjte001;}
2359    } finally {
2360if (jjtc001) {
2361      jjtree.closeNodeScope(jjtn001,  count > 0);
2362      jjtn001.jjtSetLastToken(getToken(0));
2363    }
2364    }
2365  }
2366
2367  final public void OrIfNullExpression() throws ParseException {int count = 0;
2368    OrExpression();
2369ASTOrIfNullExpression jjtn001 = new ASTOrIfNullExpression(JJTORIFNULLEXPRESSION);
2370    boolean jjtc001 = true;
2371    jjtree.openNodeScope(jjtn001);
2372    jjtn001.jjtSetFirstToken(getToken(1));
2373    try {
2374      label_23:
2375      while (true) {
2376        if (jj_2_23(2)) {
2377          ;
2378        } else {
2379          break label_23;
2380        }
2381        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2382        case NEWLINE:
2383        case COMMENT:{
2384          BlankLine();
2385          break;
2386          }
2387        default:
2388          jj_la1[75] = jj_gen;
2389          ;
2390        }
2391        jj_consume_token(OR_IFNULL_OPERATOR);
2392        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2393        case NEWLINE:
2394        case COMMENT:{
2395          BlankLine();
2396          break;
2397          }
2398        default:
2399          jj_la1[76] = jj_gen;
2400          ;
2401        }
2402        OrExpression();
2403jjtn001.increaseCount();
2404      count++;
2405      }
2406    } catch (Throwable jjte001) {
2407if (jjtc001) {
2408      jjtree.clearNodeScope(jjtn001);
2409      jjtc001 = false;
2410    } else {
2411      jjtree.popNode();
2412    }
2413    if (jjte001 instanceof RuntimeException) {
2414      {if (true) throw (RuntimeException)jjte001;}
2415    }
2416    if (jjte001 instanceof ParseException) {
2417      {if (true) throw (ParseException)jjte001;}
2418    }
2419    {if (true) throw (Error)jjte001;}
2420    } finally {
2421if (jjtc001) {
2422      jjtree.closeNodeScope(jjtn001,  count > 0);
2423      jjtn001.jjtSetLastToken(getToken(0));
2424    }
2425    }
2426  }
2427
2428  final public void MethodInvocation() throws ParseException {/*@bgen(jjtree) MethodInvocation */
2429  ASTMethodInvocation jjtn000 = new ASTMethodInvocation(JJTMETHODINVOCATION);
2430  boolean jjtc000 = true;
2431  jjtree.openNodeScope(jjtn000);
2432  jjtn000.jjtSetFirstToken(getToken(1));Token token;
2433    try {
2434      token = jj_consume_token(IDENTIFIER);
2435      Arguments();
2436      label_24:
2437      while (true) {
2438        if (jj_2_24(2)) {
2439          ;
2440        } else {
2441          break label_24;
2442        }
2443        AnonymousFunctionInvocation();
2444      }
2445jjtree.closeNodeScope(jjtn000, true);
2446    jjtc000 = false;
2447    jjtn000.jjtSetLastToken(getToken(0));
2448jjtn000.setName(token.image);
2449    } catch (Throwable jjte000) {
2450if (jjtc000) {
2451      jjtree.clearNodeScope(jjtn000);
2452      jjtc000 = false;
2453    } else {
2454      jjtree.popNode();
2455    }
2456    if (jjte000 instanceof RuntimeException) {
2457      {if (true) throw (RuntimeException)jjte000;}
2458    }
2459    if (jjte000 instanceof ParseException) {
2460      {if (true) throw (ParseException)jjte000;}
2461    }
2462    {if (true) throw (Error)jjte000;}
2463    } finally {
2464if (jjtc000) {
2465      jjtree.closeNodeScope(jjtn000, true);
2466      jjtn000.jjtSetLastToken(getToken(0));
2467    }
2468    }
2469  }
2470
2471  final public void Block() throws ParseException {/*@bgen(jjtree) Block */
2472  ASTBlock jjtn000 = new ASTBlock(JJTBLOCK);
2473  boolean jjtc000 = true;
2474  jjtree.openNodeScope(jjtn000);
2475  jjtn000.jjtSetFirstToken(getToken(1));
2476    try {
2477      try {
2478        jj_consume_token(79);
2479        label_25:
2480        while (true) {
2481          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2482          case NEWLINE:
2483          case RETURN:
2484          case IF:
2485          case WHILE:
2486          case FOR:
2487          case FOREACH:
2488          case THROW:
2489          case TRY:
2490          case CASE:
2491          case MATCH:
2492          case BREAK:
2493          case CONTINUE:
2494          case UNARY_OPERATOR:
2495          case MACRO_INVOCATION:
2496          case VAR:
2497          case LET:
2498          case NUMBER:
2499          case LONG_NUMBER:
2500          case BIGINTEGER:
2501          case FLOATING_NUMBER:
2502          case FLOAT:
2503          case BIGDECIMAL:
2504          case STRING:
2505          case CHAR:
2506          case NULL:
2507          case TRUE:
2508          case FALSE:
2509          case CLASSREF:
2510          case FUNREF:
2511          case COLL_START:
2512          case MULTI_STRING:
2513          case IDENTIFIER:
2514          case COMMENT:
2515          case 79:
2516          case 80:
2517          case 83:
2518          case 84:{
2519            ;
2520            break;
2521            }
2522          default:
2523            jj_la1[77] = jj_gen;
2524            break label_25;
2525          }
2526          try {
2527            Statement();
2528          } catch (ParseException e) {
2529skipto(NEWLINE, e, jjtn000);
2530          }
2531        }
2532        jj_consume_token(77);
2533      } catch (ParseException e) {
2534skipto(NEWLINE, e, jjtn000);
2535      }
2536    } catch (Throwable jjte000) {
2537if (jjtc000) {
2538      jjtree.clearNodeScope(jjtn000);
2539      jjtc000 = false;
2540    } else {
2541      jjtree.popNode();
2542    }
2543    if (jjte000 instanceof RuntimeException) {
2544      {if (true) throw (RuntimeException)jjte000;}
2545    }
2546    if (jjte000 instanceof ParseException) {
2547      {if (true) throw (ParseException)jjte000;}
2548    }
2549    {if (true) throw (Error)jjte000;}
2550    } finally {
2551if (jjtc000) {
2552      jjtree.closeNodeScope(jjtn000, true);
2553      jjtn000.jjtSetLastToken(getToken(0));
2554    }
2555    }
2556  }
2557
2558  final public ASTMacroInvocation MacroInvocation() throws ParseException {/*@bgen(jjtree) MacroInvocation */
2559  ASTMacroInvocation jjtn000 = new ASTMacroInvocation(JJTMACROINVOCATION);
2560  boolean jjtc000 = true;
2561  jjtree.openNodeScope(jjtn000);
2562  jjtn000.jjtSetFirstToken(getToken(1));String name;
2563  Token token;
2564    try {
2565      token = jj_consume_token(MACRO_INVOCATION);
2566      name = QualifiedName();
2567      if (jj_2_25(2)) {
2568        Arguments();
2569      } else {
2570        ;
2571      }
2572      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2573      case 79:{
2574        if (jj_2_26(4)) {
2575          jj_consume_token(79);
2576          BlankLines();
2577          label_26:
2578          while (true) {
2579            try {
2580              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2581              case IMPORT:{
2582                ImportDeclaration();
2583                BlankLines();
2584                break;
2585                }
2586              case FUNCTION:
2587              case LOCAL:
2588              case AUGMENT:
2589              case NAMEDAUGMENTATION:
2590              case STRUCT:
2591              case UNION:
2592              case DECORATOR:
2593              case MACRO_INVOCATION:
2594              case MACRO:
2595              case DOCUMENTATION:{
2596                ToplevelDeclaration();
2597                BlankLines();
2598                break;
2599                }
2600              default:
2601                jj_la1[78] = jj_gen;
2602                jj_consume_token(-1);
2603                throw new ParseException();
2604              }
2605            } catch (ParseException e) {
2606skipto(NEWLINE, e, jjtn000);
2607            }
2608            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2609            case IMPORT:
2610            case FUNCTION:
2611            case LOCAL:
2612            case AUGMENT:
2613            case NAMEDAUGMENTATION:
2614            case STRUCT:
2615            case UNION:
2616            case DECORATOR:
2617            case MACRO_INVOCATION:
2618            case MACRO:
2619            case DOCUMENTATION:{
2620              ;
2621              break;
2622              }
2623            default:
2624              jj_la1[79] = jj_gen;
2625              break label_26;
2626            }
2627          }
2628          BlankLines();
2629          jj_consume_token(77);
2630        } else {
2631          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2632          case 79:{
2633            Block();
2634            break;
2635            }
2636          default:
2637            jj_la1[80] = jj_gen;
2638            jj_consume_token(-1);
2639            throw new ParseException();
2640          }
2641        }
2642        break;
2643        }
2644      default:
2645        jj_la1[81] = jj_gen;
2646        ;
2647      }
2648jjtree.closeNodeScope(jjtn000, true);
2649    jjtc000 = false;
2650    jjtn000.jjtSetLastToken(getToken(0));
2651jjtn000.setName(name);
2652    {if ("" != null) return jjtn000;}
2653    } catch (Throwable jjte000) {
2654if (jjtc000) {
2655      jjtree.clearNodeScope(jjtn000);
2656      jjtc000 = false;
2657    } else {
2658      jjtree.popNode();
2659    }
2660    if (jjte000 instanceof RuntimeException) {
2661      {if (true) throw (RuntimeException)jjte000;}
2662    }
2663    if (jjte000 instanceof ParseException) {
2664      {if (true) throw (ParseException)jjte000;}
2665    }
2666    {if (true) throw (Error)jjte000;}
2667    } finally {
2668if (jjtc000) {
2669      jjtree.closeNodeScope(jjtn000, true);
2670      jjtn000.jjtSetLastToken(getToken(0));
2671    }
2672    }
2673    throw new Error("Missing return statement in function");
2674  }
2675
2676  final public void Function() throws ParseException {/*@bgen(jjtree) Function */
2677  ASTFunction jjtn000 = new ASTFunction(JJTFUNCTION);
2678  boolean jjtc000 = true;
2679  jjtree.openNodeScope(jjtn000);
2680  jjtn000.jjtSetFirstToken(getToken(1));List<String> parameters = null;
2681  Token varargsToken = null;
2682  boolean compactForm = false;
2683    try {
2684      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2685      case 83:{
2686        jj_consume_token(83);
2687        parameters = Parameters();
2688        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2689        case 82:{
2690          varargsToken = jj_consume_token(82);
2691          break;
2692          }
2693        default:
2694          jj_la1[82] = jj_gen;
2695          ;
2696        }
2697        jj_consume_token(83);
2698        break;
2699        }
2700      default:
2701        jj_la1[83] = jj_gen;
2702        ;
2703      }
2704      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2705      case 79:{
2706        Block();
2707        break;
2708        }
2709      case 84:{
2710        jj_consume_token(84);
2711        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2712        case NEWLINE:
2713        case COMMENT:{
2714          BlankLine();
2715          break;
2716          }
2717        default:
2718          jj_la1[84] = jj_gen;
2719          ;
2720        }
2721        ExpressionStatement();
2722compactForm = true;
2723        break;
2724        }
2725      default:
2726        jj_la1[85] = jj_gen;
2727        jj_consume_token(-1);
2728        throw new ParseException();
2729      }
2730jjtree.closeNodeScope(jjtn000, true);
2731    jjtc000 = false;
2732    jjtn000.jjtSetLastToken(getToken(0));
2733if (parameters == null) {
2734      parameters = Collections.emptyList();
2735    }
2736    jjtn000.setCompactForm(compactForm);
2737    jjtn000.setParameters(parameters);
2738    jjtn000.setVarargs(varargsToken != null);
2739    } catch (Throwable jjte000) {
2740if (jjtc000) {
2741      jjtree.clearNodeScope(jjtn000);
2742      jjtc000 = false;
2743    } else {
2744      jjtree.popNode();
2745    }
2746    if (jjte000 instanceof RuntimeException) {
2747      {if (true) throw (RuntimeException)jjte000;}
2748    }
2749    if (jjte000 instanceof ParseException) {
2750      {if (true) throw (ParseException)jjte000;}
2751    }
2752    {if (true) throw (Error)jjte000;}
2753    } finally {
2754if (jjtc000) {
2755      jjtree.closeNodeScope(jjtn000, true);
2756      jjtn000.jjtSetLastToken(getToken(0));
2757    }
2758    }
2759  }
2760
2761  final public void Literal() throws ParseException {/*@bgen(jjtree) Literal */
2762  ASTLiteral jjtn000 = new ASTLiteral(JJTLITERAL);
2763  boolean jjtc000 = true;
2764  jjtree.openNodeScope(jjtn000);
2765  jjtn000.jjtSetFirstToken(getToken(1));Object value;
2766    try {
2767      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2768      case CLASSREF:{
2769        value = ClassLiteral();
2770jjtree.closeNodeScope(jjtn000, true);
2771      jjtc000 = false;
2772      jjtn000.jjtSetLastToken(getToken(0));
2773jjtn000.setLiteralValue(value);
2774        break;
2775        }
2776      case STRING:
2777      case MULTI_STRING:{
2778        value = StringLiteral();
2779jjtree.closeNodeScope(jjtn000, true);
2780      jjtc000 = false;
2781      jjtn000.jjtSetLastToken(getToken(0));
2782jjtn000.setLiteralValue(value);
2783        break;
2784        }
2785      case CHAR:{
2786        value = CharLiteral();
2787jjtree.closeNodeScope(jjtn000, true);
2788      jjtc000 = false;
2789      jjtn000.jjtSetLastToken(getToken(0));
2790jjtn000.setLiteralValue(value);
2791        break;
2792        }
2793      case BIGDECIMAL:{
2794        value = BigDecimalLiteral();
2795jjtree.closeNodeScope(jjtn000, true);
2796      jjtc000 = false;
2797      jjtn000.jjtSetLastToken(getToken(0));
2798jjtn000.setLiteralValue(value);
2799        break;
2800        }
2801      case BIGINTEGER:{
2802        value = BigIntegerLiteral();
2803jjtree.closeNodeScope(jjtn000, true);
2804      jjtc000 = false;
2805      jjtn000.jjtSetLastToken(getToken(0));
2806jjtn000.setLiteralValue(value);
2807        break;
2808        }
2809      case FLOAT:{
2810        value = FloatLiteral();
2811jjtree.closeNodeScope(jjtn000, true);
2812      jjtc000 = false;
2813      jjtn000.jjtSetLastToken(getToken(0));
2814jjtn000.setLiteralValue(value);
2815        break;
2816        }
2817      case FLOATING_NUMBER:{
2818        value = DoubleLiteral();
2819jjtree.closeNodeScope(jjtn000, true);
2820      jjtc000 = false;
2821      jjtn000.jjtSetLastToken(getToken(0));
2822jjtn000.setLiteralValue(value);
2823        break;
2824        }
2825      case LONG_NUMBER:{
2826        value = LongLiteral();
2827jjtree.closeNodeScope(jjtn000, true);
2828      jjtc000 = false;
2829      jjtn000.jjtSetLastToken(getToken(0));
2830jjtn000.setLiteralValue(value);
2831        break;
2832        }
2833      case NUMBER:{
2834        value = IntegerLiteral();
2835jjtree.closeNodeScope(jjtn000, true);
2836      jjtc000 = false;
2837      jjtn000.jjtSetLastToken(getToken(0));
2838jjtn000.setLiteralValue(value);
2839        break;
2840        }
2841      case NULL:{
2842        jj_consume_token(NULL);
2843jjtree.closeNodeScope(jjtn000, true);
2844      jjtc000 = false;
2845      jjtn000.jjtSetLastToken(getToken(0));
2846jjtn000.setLiteralValue(null);
2847        break;
2848        }
2849      case TRUE:{
2850        jj_consume_token(TRUE);
2851jjtree.closeNodeScope(jjtn000, true);
2852      jjtc000 = false;
2853      jjtn000.jjtSetLastToken(getToken(0));
2854jjtn000.setLiteralValue(Boolean.TRUE);
2855        break;
2856        }
2857      case FALSE:{
2858        jj_consume_token(FALSE);
2859jjtree.closeNodeScope(jjtn000, true);
2860      jjtc000 = false;
2861      jjtn000.jjtSetLastToken(getToken(0));
2862jjtn000.setLiteralValue(Boolean.FALSE);
2863        break;
2864        }
2865      case FUNREF:{
2866        value = FunctionRef();
2867jjtree.closeNodeScope(jjtn000, true);
2868      jjtc000 = false;
2869      jjtn000.jjtSetLastToken(getToken(0));
2870jjtn000.setLiteralValue(value);
2871        break;
2872        }
2873      default:
2874        jj_la1[86] = jj_gen;
2875        jj_consume_token(-1);
2876        throw new ParseException();
2877      }
2878    } catch (Throwable jjte000) {
2879if (jjtc000) {
2880      jjtree.clearNodeScope(jjtn000);
2881      jjtc000 = false;
2882    } else {
2883      jjtree.popNode();
2884    }
2885    if (jjte000 instanceof RuntimeException) {
2886      {if (true) throw (RuntimeException)jjte000;}
2887    }
2888    if (jjte000 instanceof ParseException) {
2889      {if (true) throw (ParseException)jjte000;}
2890    }
2891    {if (true) throw (Error)jjte000;}
2892    } finally {
2893if (jjtc000) {
2894      jjtree.closeNodeScope(jjtn000, true);
2895      jjtn000.jjtSetLastToken(getToken(0));
2896    }
2897    }
2898  }
2899
2900  final public void CollectionLiteral() throws ParseException {/*@bgen(jjtree) CollectionLiteral */
2901  ASTCollectionLiteral jjtn000 = new ASTCollectionLiteral(JJTCOLLECTIONLITERAL);
2902  boolean jjtc000 = true;
2903  jjtree.openNodeScope(jjtn000);
2904  jjtn000.jjtSetFirstToken(getToken(1));Token token;
2905  boolean isRange = false;
2906  boolean isComprehension = false;
2907    try {
2908      token = jj_consume_token(COLL_START);
2909      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2910      case NEWLINE:
2911      case COMMENT:{
2912        BlankLine();
2913        break;
2914        }
2915      default:
2916        jj_la1[87] = jj_gen;
2917        ;
2918      }
2919      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2920      case MATCH:
2921      case UNARY_OPERATOR:
2922      case MACRO_INVOCATION:
2923      case NUMBER:
2924      case LONG_NUMBER:
2925      case BIGINTEGER:
2926      case FLOATING_NUMBER:
2927      case FLOAT:
2928      case BIGDECIMAL:
2929      case STRING:
2930      case CHAR:
2931      case NULL:
2932      case TRUE:
2933      case FALSE:
2934      case CLASSREF:
2935      case FUNREF:
2936      case COLL_START:
2937      case MULTI_STRING:
2938      case IDENTIFIER:
2939      case 79:
2940      case 80:
2941      case 83:
2942      case 84:{
2943        ExpressionStatement();
2944        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2945        case FOR:
2946        case FOREACH:
2947        case 75:
2948        case 85:{
2949          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2950          case 75:{
2951            label_27:
2952            while (true) {
2953              jj_consume_token(75);
2954              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2955              case NEWLINE:
2956              case COMMENT:{
2957                BlankLine();
2958                break;
2959                }
2960              default:
2961                jj_la1[88] = jj_gen;
2962                ;
2963              }
2964              ExpressionStatement();
2965              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2966              case 75:{
2967                ;
2968                break;
2969                }
2970              default:
2971                jj_la1[89] = jj_gen;
2972                break label_27;
2973              }
2974            }
2975            break;
2976            }
2977          case 85:{
2978            jj_consume_token(85);
2979            ExpressionStatement();
2980isRange = true;
2981            break;
2982            }
2983          case FOR:
2984          case FOREACH:{
2985            label_28:
2986            while (true) {
2987              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2988              case FOREACH:{
2989                ForEachLoop();
2990                break;
2991                }
2992              case FOR:{
2993                ForLoop();
2994                break;
2995                }
2996              default:
2997                jj_la1[90] = jj_gen;
2998                jj_consume_token(-1);
2999                throw new ParseException();
3000              }
3001              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3002              case FOR:
3003              case FOREACH:{
3004                ;
3005                break;
3006                }
3007              default:
3008                jj_la1[91] = jj_gen;
3009                break label_28;
3010              }
3011            }
3012isComprehension = true;
3013            break;
3014            }
3015          default:
3016            jj_la1[92] = jj_gen;
3017            jj_consume_token(-1);
3018            throw new ParseException();
3019          }
3020          break;
3021          }
3022        default:
3023          jj_la1[93] = jj_gen;
3024          ;
3025        }
3026        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3027        case NEWLINE:
3028        case COMMENT:{
3029          BlankLine();
3030          break;
3031          }
3032        default:
3033          jj_la1[94] = jj_gen;
3034          ;
3035        }
3036        break;
3037        }
3038      default:
3039        jj_la1[95] = jj_gen;
3040        ;
3041      }
3042      jj_consume_token(86);
3043jjtree.closeNodeScope(jjtn000, true);
3044    jjtc000 = false;
3045    jjtn000.jjtSetLastToken(getToken(0));
3046String image = token.image;
3047    jjtn000.setType(image.substring(0, image.length() - 1));
3048    if (jjtn000.getType().isEmpty()) {
3049      jjtn000.setType("tuple");
3050    }
3051    if (isRange) {
3052      jjtn000.setType("range");
3053    }
3054    jjtn000.setComprehension(isComprehension);
3055    } catch (Throwable jjte000) {
3056if (jjtc000) {
3057      jjtree.clearNodeScope(jjtn000);
3058      jjtc000 = false;
3059    } else {
3060      jjtree.popNode();
3061    }
3062    if (jjte000 instanceof RuntimeException) {
3063      {if (true) throw (RuntimeException)jjte000;}
3064    }
3065    if (jjte000 instanceof ParseException) {
3066      {if (true) throw (ParseException)jjte000;}
3067    }
3068    {if (true) throw (Error)jjte000;}
3069    } finally {
3070if (jjtc000) {
3071      jjtree.closeNodeScope(jjtn000, true);
3072      jjtn000.jjtSetLastToken(getToken(0));
3073    }
3074    }
3075  }
3076
3077  final public void Reference() throws ParseException {/*@bgen(jjtree) Reference */
3078  ASTReference jjtn000 = new ASTReference(JJTREFERENCE);
3079  boolean jjtc000 = true;
3080  jjtree.openNodeScope(jjtn000);
3081  jjtn000.jjtSetFirstToken(getToken(1));
3082    try {
3083      jj_consume_token(IDENTIFIER);
3084jjtree.closeNodeScope(jjtn000, true);
3085    jjtc000 = false;
3086    jjtn000.jjtSetLastToken(getToken(0));
3087jjtn000.setName(jjtn000.jjtGetFirstToken().image);
3088    } finally {
3089if (jjtc000) {
3090      jjtree.closeNodeScope(jjtn000, true);
3091      jjtn000.jjtSetLastToken(getToken(0));
3092    }
3093    }
3094  }
3095
3096  final public ASTDestructuringAssignment DestructuringAssignment() throws ParseException {/*@bgen(jjtree) DestructuringAssignment */
3097  ASTDestructuringAssignment jjtn000 = new ASTDestructuringAssignment(JJTDESTRUCTURINGASSIGNMENT);
3098  boolean jjtc000 = true;
3099  jjtree.openNodeScope(jjtn000);
3100  jjtn000.jjtSetFirstToken(getToken(1));List<String> names;
3101  Token varargsToken = null;
3102    try {
3103      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3104      case LET:{
3105        jj_consume_token(LET);
3106        names = DestructuredNames();
3107        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3108        case 82:{
3109          varargsToken = jj_consume_token(82);
3110          break;
3111          }
3112        default:
3113          jj_la1[96] = jj_gen;
3114          ;
3115        }
3116        jj_consume_token(78);
3117        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3118        case NEWLINE:
3119        case COMMENT:{
3120          BlankLine();
3121          break;
3122          }
3123        default:
3124          jj_la1[97] = jj_gen;
3125          ;
3126        }
3127        ExpressionStatement();
3128jjtree.closeNodeScope(jjtn000, true);
3129    jjtc000 = false;
3130    jjtn000.jjtSetLastToken(getToken(0));
3131jjtn000.setType(ASTLetOrVar.Type.LET);
3132    jjtn000.setNames(names);
3133    jjtn000.setVarargs(varargsToken != null);
3134    {if ("" != null) return jjtn000;}
3135        break;
3136        }
3137      case VAR:{
3138        jj_consume_token(VAR);
3139        names = DestructuredNames();
3140        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3141        case 82:{
3142          varargsToken = jj_consume_token(82);
3143          break;
3144          }
3145        default:
3146          jj_la1[98] = jj_gen;
3147          ;
3148        }
3149        jj_consume_token(78);
3150        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3151        case NEWLINE:
3152        case COMMENT:{
3153          BlankLine();
3154          break;
3155          }
3156        default:
3157          jj_la1[99] = jj_gen;
3158          ;
3159        }
3160        ExpressionStatement();
3161jjtree.closeNodeScope(jjtn000, true);
3162    jjtc000 = false;
3163    jjtn000.jjtSetLastToken(getToken(0));
3164jjtn000.setType(ASTLetOrVar.Type.VAR);
3165    jjtn000.setNames(names);
3166    jjtn000.setVarargs(varargsToken != null);
3167    {if ("" != null) return jjtn000;}
3168        break;
3169        }
3170      case IDENTIFIER:{
3171        names = DestructuredNames();
3172        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3173        case 82:{
3174          varargsToken = jj_consume_token(82);
3175          break;
3176          }
3177        default:
3178          jj_la1[100] = jj_gen;
3179          ;
3180        }
3181        jj_consume_token(78);
3182        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3183        case NEWLINE:
3184        case COMMENT:{
3185          BlankLine();
3186          break;
3187          }
3188        default:
3189          jj_la1[101] = jj_gen;
3190          ;
3191        }
3192        ExpressionStatement();
3193jjtree.closeNodeScope(jjtn000, true);
3194    jjtc000 = false;
3195    jjtn000.jjtSetLastToken(getToken(0));
3196jjtn000.setType(null);
3197    jjtn000.setNames(names);
3198    jjtn000.setVarargs(varargsToken != null);
3199    {if ("" != null) return jjtn000;}
3200        break;
3201        }
3202      default:
3203        jj_la1[102] = jj_gen;
3204        jj_consume_token(-1);
3205        throw new ParseException();
3206      }
3207    } catch (Throwable jjte000) {
3208if (jjtc000) {
3209      jjtree.clearNodeScope(jjtn000);
3210      jjtc000 = false;
3211    } else {
3212      jjtree.popNode();
3213    }
3214    if (jjte000 instanceof RuntimeException) {
3215      {if (true) throw (RuntimeException)jjte000;}
3216    }
3217    if (jjte000 instanceof ParseException) {
3218      {if (true) throw (ParseException)jjte000;}
3219    }
3220    {if (true) throw (Error)jjte000;}
3221    } finally {
3222if (jjtc000) {
3223      jjtree.closeNodeScope(jjtn000, true);
3224      jjtn000.jjtSetLastToken(getToken(0));
3225    }
3226    }
3227    throw new Error("Missing return statement in function");
3228  }
3229
3230  final public List<String> DestructuredNames() throws ParseException {List<String> names = new LinkedList<String>();
3231  Token rootToken;
3232  Token nextToken;
3233    rootToken = jj_consume_token(IDENTIFIER);
3234names.add(rootToken.image);
3235    label_29:
3236    while (true) {
3237      jj_consume_token(75);
3238      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3239      case NEWLINE:
3240      case COMMENT:{
3241        BlankLine();
3242        break;
3243        }
3244      default:
3245        jj_la1[103] = jj_gen;
3246        ;
3247      }
3248      nextToken = jj_consume_token(IDENTIFIER);
3249names.add(nextToken.image);
3250      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3251      case 75:{
3252        ;
3253        break;
3254        }
3255      default:
3256        jj_la1[104] = jj_gen;
3257        break label_29;
3258      }
3259    }
3260{if ("" != null) return names;}
3261    throw new Error("Missing return statement in function");
3262  }
3263
3264  final public ASTLetOrVar LetOrVar() throws ParseException {/*@bgen(jjtree) LetOrVar */
3265  ASTLetOrVar jjtn000 = new ASTLetOrVar(JJTLETORVAR);
3266  boolean jjtc000 = true;
3267  jjtree.openNodeScope(jjtn000);
3268  jjtn000.jjtSetFirstToken(getToken(1));Token idToken;
3269    try {
3270      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3271      case LET:{
3272        jj_consume_token(LET);
3273        idToken = jj_consume_token(IDENTIFIER);
3274        jj_consume_token(78);
3275        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3276        case NEWLINE:
3277        case COMMENT:{
3278          BlankLine();
3279          break;
3280          }
3281        default:
3282          jj_la1[105] = jj_gen;
3283          ;
3284        }
3285        ExpressionStatement();
3286jjtree.closeNodeScope(jjtn000, true);
3287    jjtc000 = false;
3288    jjtn000.jjtSetLastToken(getToken(0));
3289jjtn000.setType(ASTLetOrVar.Type.LET);
3290    jjtn000.setName(idToken.image);
3291    {if ("" != null) return jjtn000;}
3292        break;
3293        }
3294      case VAR:{
3295        jj_consume_token(VAR);
3296        idToken = jj_consume_token(IDENTIFIER);
3297        jj_consume_token(78);
3298        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3299        case NEWLINE:
3300        case COMMENT:{
3301          BlankLine();
3302          break;
3303          }
3304        default:
3305          jj_la1[106] = jj_gen;
3306          ;
3307        }
3308        ExpressionStatement();
3309jjtree.closeNodeScope(jjtn000, true);
3310    jjtc000 = false;
3311    jjtn000.jjtSetLastToken(getToken(0));
3312jjtn000.setType(ASTLetOrVar.Type.VAR);
3313    jjtn000.setName(idToken.image);
3314    {if ("" != null) return jjtn000;}
3315        break;
3316        }
3317      default:
3318        jj_la1[107] = jj_gen;
3319        jj_consume_token(-1);
3320        throw new ParseException();
3321      }
3322    } catch (Throwable jjte000) {
3323if (jjtc000) {
3324      jjtree.clearNodeScope(jjtn000);
3325      jjtc000 = false;
3326    } else {
3327      jjtree.popNode();
3328    }
3329    if (jjte000 instanceof RuntimeException) {
3330      {if (true) throw (RuntimeException)jjte000;}
3331    }
3332    if (jjte000 instanceof ParseException) {
3333      {if (true) throw (ParseException)jjte000;}
3334    }
3335    {if (true) throw (Error)jjte000;}
3336    } finally {
3337if (jjtc000) {
3338      jjtree.closeNodeScope(jjtn000, true);
3339      jjtn000.jjtSetLastToken(getToken(0));
3340    }
3341    }
3342    throw new Error("Missing return statement in function");
3343  }
3344
3345  final public void Assignment() throws ParseException {/*@bgen(jjtree) Assignment */
3346  ASTAssignment jjtn000 = new ASTAssignment(JJTASSIGNMENT);
3347  boolean jjtc000 = true;
3348  jjtree.openNodeScope(jjtn000);
3349  jjtn000.jjtSetFirstToken(getToken(1));Token idToken;
3350    try {
3351      idToken = jj_consume_token(IDENTIFIER);
3352      jj_consume_token(78);
3353      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3354      case NEWLINE:
3355      case COMMENT:{
3356        BlankLine();
3357        break;
3358        }
3359      default:
3360        jj_la1[108] = jj_gen;
3361        ;
3362      }
3363      ExpressionStatement();
3364jjtree.closeNodeScope(jjtn000, true);
3365    jjtc000 = false;
3366    jjtn000.jjtSetLastToken(getToken(0));
3367jjtn000.setName(idToken.image);
3368    } catch (Throwable jjte000) {
3369if (jjtc000) {
3370      jjtree.clearNodeScope(jjtn000);
3371      jjtc000 = false;
3372    } else {
3373      jjtree.popNode();
3374    }
3375    if (jjte000 instanceof RuntimeException) {
3376      {if (true) throw (RuntimeException)jjte000;}
3377    }
3378    if (jjte000 instanceof ParseException) {
3379      {if (true) throw (ParseException)jjte000;}
3380    }
3381    {if (true) throw (Error)jjte000;}
3382    } finally {
3383if (jjtc000) {
3384      jjtree.closeNodeScope(jjtn000, true);
3385      jjtn000.jjtSetLastToken(getToken(0));
3386    }
3387    }
3388  }
3389
3390  final public void Return() throws ParseException {/*@bgen(jjtree) Return */
3391  ASTReturn jjtn000 = new ASTReturn(JJTRETURN);
3392  boolean jjtc000 = true;
3393  jjtree.openNodeScope(jjtn000);
3394  jjtn000.jjtSetFirstToken(getToken(1));
3395    try {
3396      jj_consume_token(RETURN);
3397      if (jj_2_27(2)) {
3398        BlankLines();
3399        ExpressionStatement();
3400      } else {
3401        ;
3402      }
3403    } catch (Throwable jjte000) {
3404if (jjtc000) {
3405      jjtree.clearNodeScope(jjtn000);
3406      jjtc000 = false;
3407    } else {
3408      jjtree.popNode();
3409    }
3410    if (jjte000 instanceof RuntimeException) {
3411      {if (true) throw (RuntimeException)jjte000;}
3412    }
3413    if (jjte000 instanceof ParseException) {
3414      {if (true) throw (ParseException)jjte000;}
3415    }
3416    {if (true) throw (Error)jjte000;}
3417    } finally {
3418if (jjtc000) {
3419      jjtree.closeNodeScope(jjtn000, true);
3420      jjtn000.jjtSetLastToken(getToken(0));
3421    }
3422    }
3423  }
3424
3425  final public void Argument() throws ParseException {/*@bgen(jjtree) Argument */
3426  ASTArgument jjtn000 = new ASTArgument(JJTARGUMENT);
3427  boolean jjtc000 = true;
3428  jjtree.openNodeScope(jjtn000);
3429  jjtn000.jjtSetFirstToken(getToken(1));Token parameterId = null;
3430  Token expression;
3431    try {
3432      if (jj_2_28(2)) {
3433        parameterId = jj_consume_token(IDENTIFIER);
3434        jj_consume_token(78);
3435      } else {
3436        ;
3437      }
3438      ExpressionStatement();
3439jjtree.closeNodeScope(jjtn000, true);
3440    jjtc000 = false;
3441    jjtn000.jjtSetLastToken(getToken(0));
3442if (parameterId != null) {
3443      jjtn000.setName(parameterId.image);
3444      jjtn000.setNamed(true);
3445    }
3446    } catch (Throwable jjte000) {
3447if (jjtc000) {
3448      jjtree.clearNodeScope(jjtn000);
3449      jjtc000 = false;
3450    } else {
3451      jjtree.popNode();
3452    }
3453    if (jjte000 instanceof RuntimeException) {
3454      {if (true) throw (RuntimeException)jjte000;}
3455    }
3456    if (jjte000 instanceof ParseException) {
3457      {if (true) throw (ParseException)jjte000;}
3458    }
3459    {if (true) throw (Error)jjte000;}
3460    } finally {
3461if (jjtc000) {
3462      jjtree.closeNodeScope(jjtn000, true);
3463      jjtn000.jjtSetLastToken(getToken(0));
3464    }
3465    }
3466  }
3467
3468  final public void Arguments() throws ParseException {
3469    jj_consume_token(80);
3470    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3471    case NEWLINE:
3472    case COMMENT:{
3473      BlankLine();
3474      break;
3475      }
3476    default:
3477      jj_la1[109] = jj_gen;
3478      ;
3479    }
3480    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3481    case MATCH:
3482    case UNARY_OPERATOR:
3483    case MACRO_INVOCATION:
3484    case NUMBER:
3485    case LONG_NUMBER:
3486    case BIGINTEGER:
3487    case FLOATING_NUMBER:
3488    case FLOAT:
3489    case BIGDECIMAL:
3490    case STRING:
3491    case CHAR:
3492    case NULL:
3493    case TRUE:
3494    case FALSE:
3495    case CLASSREF:
3496    case FUNREF:
3497    case COLL_START:
3498    case MULTI_STRING:
3499    case IDENTIFIER:
3500    case 79:
3501    case 80:
3502    case 83:
3503    case 84:{
3504      Argument();
3505      label_30:
3506      while (true) {
3507        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3508        case 75:{
3509          ;
3510          break;
3511          }
3512        default:
3513          jj_la1[110] = jj_gen;
3514          break label_30;
3515        }
3516        jj_consume_token(75);
3517        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3518        case NEWLINE:
3519        case COMMENT:{
3520          BlankLine();
3521          break;
3522          }
3523        default:
3524          jj_la1[111] = jj_gen;
3525          ;
3526        }
3527        Argument();
3528      }
3529      break;
3530      }
3531    default:
3532      jj_la1[112] = jj_gen;
3533      ;
3534    }
3535    jj_consume_token(81);
3536  }
3537
3538  final public ASTAnonymousFunctionInvocation AnonymousFunctionInvocation() throws ParseException {/*@bgen(jjtree) AnonymousFunctionInvocation */
3539  ASTAnonymousFunctionInvocation jjtn000 = new ASTAnonymousFunctionInvocation(JJTANONYMOUSFUNCTIONINVOCATION);
3540  boolean jjtc000 = true;
3541  jjtree.openNodeScope(jjtn000);
3542  jjtn000.jjtSetFirstToken(getToken(1));Token constant = null;
3543    try {
3544      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3545      case CONSTANT_INVOCATION:{
3546        constant = jj_consume_token(CONSTANT_INVOCATION);
3547        break;
3548        }
3549      default:
3550        jj_la1[113] = jj_gen;
3551        ;
3552      }
3553      Arguments();
3554jjtree.closeNodeScope(jjtn000, true);
3555    jjtc000 = false;
3556    jjtn000.jjtSetLastToken(getToken(0));
3557if (constant != null) {
3558      jjtn000.setConstant(true);
3559    }
3560    {if ("" != null) return jjtn000;}
3561    } catch (Throwable jjte000) {
3562if (jjtc000) {
3563      jjtree.clearNodeScope(jjtn000);
3564      jjtc000 = false;
3565    } else {
3566      jjtree.popNode();
3567    }
3568    if (jjte000 instanceof RuntimeException) {
3569      {if (true) throw (RuntimeException)jjte000;}
3570    }
3571    if (jjte000 instanceof ParseException) {
3572      {if (true) throw (ParseException)jjte000;}
3573    }
3574    {if (true) throw (Error)jjte000;}
3575    } finally {
3576if (jjtc000) {
3577      jjtree.closeNodeScope(jjtn000, true);
3578      jjtn000.jjtSetLastToken(getToken(0));
3579    }
3580    }
3581    throw new Error("Missing return statement in function");
3582  }
3583
3584  final public void FunctionInvocation() throws ParseException {/*@bgen(jjtree) FunctionInvocation */
3585  ASTFunctionInvocation jjtn000 = new ASTFunctionInvocation(JJTFUNCTIONINVOCATION);
3586  boolean jjtc000 = true;
3587  jjtree.openNodeScope(jjtn000);
3588  jjtn000.jjtSetFirstToken(getToken(1));String name;
3589  Token constant = null;
3590    try {
3591      name = QualifiedName();
3592      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3593      case CONSTANT_INVOCATION:{
3594        constant = jj_consume_token(CONSTANT_INVOCATION);
3595        break;
3596        }
3597      default:
3598        jj_la1[114] = jj_gen;
3599        ;
3600      }
3601      Arguments();
3602      label_31:
3603      while (true) {
3604        if (jj_2_29(2)) {
3605          ;
3606        } else {
3607          break label_31;
3608        }
3609        AnonymousFunctionInvocation();
3610      }
3611jjtree.closeNodeScope(jjtn000, true);
3612    jjtc000 = false;
3613    jjtn000.jjtSetLastToken(getToken(0));
3614jjtn000.setName(name);
3615    if (constant != null) {
3616      jjtn000.setConstant(true);
3617    }
3618    } catch (Throwable jjte000) {
3619if (jjtc000) {
3620      jjtree.clearNodeScope(jjtn000);
3621      jjtc000 = false;
3622    } else {
3623      jjtree.popNode();
3624    }
3625    if (jjte000 instanceof RuntimeException) {
3626      {if (true) throw (RuntimeException)jjte000;}
3627    }
3628    if (jjte000 instanceof ParseException) {
3629      {if (true) throw (ParseException)jjte000;}
3630    }
3631    {if (true) throw (Error)jjte000;}
3632    } finally {
3633if (jjtc000) {
3634      jjtree.closeNodeScope(jjtn000, true);
3635      jjtn000.jjtSetLastToken(getToken(0));
3636    }
3637    }
3638  }
3639
3640  final public void ConditionalBranching() throws ParseException {/*@bgen(jjtree) ConditionalBranching */
3641  ASTConditionalBranching jjtn000 = new ASTConditionalBranching(JJTCONDITIONALBRANCHING);
3642  boolean jjtc000 = true;
3643  jjtree.openNodeScope(jjtn000);
3644  jjtn000.jjtSetFirstToken(getToken(1));
3645    try {
3646      jj_consume_token(IF);
3647      ExpressionStatement();
3648      Block();
3649      if (jj_2_30(2147483647)) {
3650        jj_consume_token(ELSE);
3651        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3652        case IF:{
3653          ConditionalBranching();
3654          break;
3655          }
3656        case 79:{
3657          Block();
3658          break;
3659          }
3660        default:
3661          jj_la1[115] = jj_gen;
3662          jj_consume_token(-1);
3663          throw new ParseException();
3664        }
3665      } else {
3666        ;
3667      }
3668    } catch (Throwable jjte000) {
3669if (jjtc000) {
3670      jjtree.clearNodeScope(jjtn000);
3671      jjtc000 = false;
3672    } else {
3673      jjtree.popNode();
3674    }
3675    if (jjte000 instanceof RuntimeException) {
3676      {if (true) throw (RuntimeException)jjte000;}
3677    }
3678    if (jjte000 instanceof ParseException) {
3679      {if (true) throw (ParseException)jjte000;}
3680    }
3681    {if (true) throw (Error)jjte000;}
3682    } finally {
3683if (jjtc000) {
3684      jjtree.closeNodeScope(jjtn000, true);
3685      jjtn000.jjtSetLastToken(getToken(0));
3686    }
3687    }
3688  }
3689
3690  final public void Case() throws ParseException {/*@bgen(jjtree) Case */
3691  ASTCase jjtn000 = new ASTCase(JJTCASE);
3692  boolean jjtc000 = true;
3693  jjtree.openNodeScope(jjtn000);
3694  jjtn000.jjtSetFirstToken(getToken(1));
3695    try {
3696      jj_consume_token(CASE);
3697      jj_consume_token(79);
3698      BlankLines();
3699      label_32:
3700      while (true) {
3701        jj_consume_token(WHEN);
3702        ExpressionStatement();
3703        Block();
3704        BlankLines();
3705        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3706        case WHEN:{
3707          ;
3708          break;
3709          }
3710        default:
3711          jj_la1[116] = jj_gen;
3712          break label_32;
3713        }
3714      }
3715      jj_consume_token(OTHERWISE);
3716      Block();
3717      BlankLines();
3718      jj_consume_token(77);
3719    } catch (Throwable jjte000) {
3720if (jjtc000) {
3721      jjtree.clearNodeScope(jjtn000);
3722      jjtc000 = false;
3723    } else {
3724      jjtree.popNode();
3725    }
3726    if (jjte000 instanceof RuntimeException) {
3727      {if (true) throw (RuntimeException)jjte000;}
3728    }
3729    if (jjte000 instanceof ParseException) {
3730      {if (true) throw (ParseException)jjte000;}
3731    }
3732    {if (true) throw (Error)jjte000;}
3733    } finally {
3734if (jjtc000) {
3735      jjtree.closeNodeScope(jjtn000, true);
3736      jjtn000.jjtSetLastToken(getToken(0));
3737    }
3738    }
3739  }
3740
3741  final public void Match() throws ParseException {/*@bgen(jjtree) Match */
3742  ASTMatch jjtn000 = new ASTMatch(JJTMATCH);
3743  boolean jjtc000 = true;
3744  jjtree.openNodeScope(jjtn000);
3745  jjtn000.jjtSetFirstToken(getToken(1));
3746    try {
3747      jj_consume_token(MATCH);
3748      jj_consume_token(79);
3749      BlankLines();
3750      label_33:
3751      while (true) {
3752        jj_consume_token(WHEN);
3753        BlankLines();
3754        ExpressionStatement();
3755        BlankLines();
3756        jj_consume_token(THEN);
3757        BlankLines();
3758        ExpressionStatement();
3759        BlankLines();
3760        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3761        case WHEN:{
3762          ;
3763          break;
3764          }
3765        default:
3766          jj_la1[117] = jj_gen;
3767          break label_33;
3768        }
3769      }
3770      jj_consume_token(OTHERWISE);
3771      BlankLines();
3772      ExpressionStatement();
3773      BlankLines();
3774      jj_consume_token(77);
3775    } catch (Throwable jjte000) {
3776if (jjtc000) {
3777      jjtree.clearNodeScope(jjtn000);
3778      jjtc000 = false;
3779    } else {
3780      jjtree.popNode();
3781    }
3782    if (jjte000 instanceof RuntimeException) {
3783      {if (true) throw (RuntimeException)jjte000;}
3784    }
3785    if (jjte000 instanceof ParseException) {
3786      {if (true) throw (ParseException)jjte000;}
3787    }
3788    {if (true) throw (Error)jjte000;}
3789    } finally {
3790if (jjtc000) {
3791      jjtree.closeNodeScope(jjtn000, true);
3792      jjtn000.jjtSetLastToken(getToken(0));
3793    }
3794    }
3795  }
3796
3797  private boolean jj_2_1(int xla)
3798 {
3799    jj_la = xla; jj_lastpos = jj_scanpos = token;
3800    try { return !jj_3_1(); }
3801    catch(LookaheadSuccess ls) { return true; }
3802    finally { jj_save(0, xla); }
3803  }
3804
3805  private boolean jj_2_2(int xla)
3806 {
3807    jj_la = xla; jj_lastpos = jj_scanpos = token;
3808    try { return !jj_3_2(); }
3809    catch(LookaheadSuccess ls) { return true; }
3810    finally { jj_save(1, xla); }
3811  }
3812
3813  private boolean jj_2_3(int xla)
3814 {
3815    jj_la = xla; jj_lastpos = jj_scanpos = token;
3816    try { return !jj_3_3(); }
3817    catch(LookaheadSuccess ls) { return true; }
3818    finally { jj_save(2, xla); }
3819  }
3820
3821  private boolean jj_2_4(int xla)
3822 {
3823    jj_la = xla; jj_lastpos = jj_scanpos = token;
3824    try { return !jj_3_4(); }
3825    catch(LookaheadSuccess ls) { return true; }
3826    finally { jj_save(3, xla); }
3827  }
3828
3829  private boolean jj_2_5(int xla)
3830 {
3831    jj_la = xla; jj_lastpos = jj_scanpos = token;
3832    try { return !jj_3_5(); }
3833    catch(LookaheadSuccess ls) { return true; }
3834    finally { jj_save(4, xla); }
3835  }
3836
3837  private boolean jj_2_6(int xla)
3838 {
3839    jj_la = xla; jj_lastpos = jj_scanpos = token;
3840    try { return !jj_3_6(); }
3841    catch(LookaheadSuccess ls) { return true; }
3842    finally { jj_save(5, xla); }
3843  }
3844
3845  private boolean jj_2_7(int xla)
3846 {
3847    jj_la = xla; jj_lastpos = jj_scanpos = token;
3848    try { return !jj_3_7(); }
3849    catch(LookaheadSuccess ls) { return true; }
3850    finally { jj_save(6, xla); }
3851  }
3852
3853  private boolean jj_2_8(int xla)
3854 {
3855    jj_la = xla; jj_lastpos = jj_scanpos = token;
3856    try { return !jj_3_8(); }
3857    catch(LookaheadSuccess ls) { return true; }
3858    finally { jj_save(7, xla); }
3859  }
3860
3861  private boolean jj_2_9(int xla)
3862 {
3863    jj_la = xla; jj_lastpos = jj_scanpos = token;
3864    try { return !jj_3_9(); }
3865    catch(LookaheadSuccess ls) { return true; }
3866    finally { jj_save(8, xla); }
3867  }
3868
3869  private boolean jj_2_10(int xla)
3870 {
3871    jj_la = xla; jj_lastpos = jj_scanpos = token;
3872    try { return !jj_3_10(); }
3873    catch(LookaheadSuccess ls) { return true; }
3874    finally { jj_save(9, xla); }
3875  }
3876
3877  private boolean jj_2_11(int xla)
3878 {
3879    jj_la = xla; jj_lastpos = jj_scanpos = token;
3880    try { return !jj_3_11(); }
3881    catch(LookaheadSuccess ls) { return true; }
3882    finally { jj_save(10, xla); }
3883  }
3884
3885  private boolean jj_2_12(int xla)
3886 {
3887    jj_la = xla; jj_lastpos = jj_scanpos = token;
3888    try { return !jj_3_12(); }
3889    catch(LookaheadSuccess ls) { return true; }
3890    finally { jj_save(11, xla); }
3891  }
3892
3893  private boolean jj_2_13(int xla)
3894 {
3895    jj_la = xla; jj_lastpos = jj_scanpos = token;
3896    try { return !jj_3_13(); }
3897    catch(LookaheadSuccess ls) { return true; }
3898    finally { jj_save(12, xla); }
3899  }
3900
3901  private boolean jj_2_14(int xla)
3902 {
3903    jj_la = xla; jj_lastpos = jj_scanpos = token;
3904    try { return !jj_3_14(); }
3905    catch(LookaheadSuccess ls) { return true; }
3906    finally { jj_save(13, xla); }
3907  }
3908
3909  private boolean jj_2_15(int xla)
3910 {
3911    jj_la = xla; jj_lastpos = jj_scanpos = token;
3912    try { return !jj_3_15(); }
3913    catch(LookaheadSuccess ls) { return true; }
3914    finally { jj_save(14, xla); }
3915  }
3916
3917  private boolean jj_2_16(int xla)
3918 {
3919    jj_la = xla; jj_lastpos = jj_scanpos = token;
3920    try { return !jj_3_16(); }
3921    catch(LookaheadSuccess ls) { return true; }
3922    finally { jj_save(15, xla); }
3923  }
3924
3925  private boolean jj_2_17(int xla)
3926 {
3927    jj_la = xla; jj_lastpos = jj_scanpos = token;
3928    try { return !jj_3_17(); }
3929    catch(LookaheadSuccess ls) { return true; }
3930    finally { jj_save(16, xla); }
3931  }
3932
3933  private boolean jj_2_18(int xla)
3934 {
3935    jj_la = xla; jj_lastpos = jj_scanpos = token;
3936    try { return !jj_3_18(); }
3937    catch(LookaheadSuccess ls) { return true; }
3938    finally { jj_save(17, xla); }
3939  }
3940
3941  private boolean jj_2_19(int xla)
3942 {
3943    jj_la = xla; jj_lastpos = jj_scanpos = token;
3944    try { return !jj_3_19(); }
3945    catch(LookaheadSuccess ls) { return true; }
3946    finally { jj_save(18, xla); }
3947  }
3948
3949  private boolean jj_2_20(int xla)
3950 {
3951    jj_la = xla; jj_lastpos = jj_scanpos = token;
3952    try { return !jj_3_20(); }
3953    catch(LookaheadSuccess ls) { return true; }
3954    finally { jj_save(19, xla); }
3955  }
3956
3957  private boolean jj_2_21(int xla)
3958 {
3959    jj_la = xla; jj_lastpos = jj_scanpos = token;
3960    try { return !jj_3_21(); }
3961    catch(LookaheadSuccess ls) { return true; }
3962    finally { jj_save(20, xla); }
3963  }
3964
3965  private boolean jj_2_22(int xla)
3966 {
3967    jj_la = xla; jj_lastpos = jj_scanpos = token;
3968    try { return !jj_3_22(); }
3969    catch(LookaheadSuccess ls) { return true; }
3970    finally { jj_save(21, xla); }
3971  }
3972
3973  private boolean jj_2_23(int xla)
3974 {
3975    jj_la = xla; jj_lastpos = jj_scanpos = token;
3976    try { return !jj_3_23(); }
3977    catch(LookaheadSuccess ls) { return true; }
3978    finally { jj_save(22, xla); }
3979  }
3980
3981  private boolean jj_2_24(int xla)
3982 {
3983    jj_la = xla; jj_lastpos = jj_scanpos = token;
3984    try { return !jj_3_24(); }
3985    catch(LookaheadSuccess ls) { return true; }
3986    finally { jj_save(23, xla); }
3987  }
3988
3989  private boolean jj_2_25(int xla)
3990 {
3991    jj_la = xla; jj_lastpos = jj_scanpos = token;
3992    try { return !jj_3_25(); }
3993    catch(LookaheadSuccess ls) { return true; }
3994    finally { jj_save(24, xla); }
3995  }
3996
3997  private boolean jj_2_26(int xla)
3998 {
3999    jj_la = xla; jj_lastpos = jj_scanpos = token;
4000    try { return !jj_3_26(); }
4001    catch(LookaheadSuccess ls) { return true; }
4002    finally { jj_save(25, xla); }
4003  }
4004
4005  private boolean jj_2_27(int xla)
4006 {
4007    jj_la = xla; jj_lastpos = jj_scanpos = token;
4008    try { return !jj_3_27(); }
4009    catch(LookaheadSuccess ls) { return true; }
4010    finally { jj_save(26, xla); }
4011  }
4012
4013  private boolean jj_2_28(int xla)
4014 {
4015    jj_la = xla; jj_lastpos = jj_scanpos = token;
4016    try { return !jj_3_28(); }
4017    catch(LookaheadSuccess ls) { return true; }
4018    finally { jj_save(27, xla); }
4019  }
4020
4021  private boolean jj_2_29(int xla)
4022 {
4023    jj_la = xla; jj_lastpos = jj_scanpos = token;
4024    try { return !jj_3_29(); }
4025    catch(LookaheadSuccess ls) { return true; }
4026    finally { jj_save(28, xla); }
4027  }
4028
4029  private boolean jj_2_30(int xla)
4030 {
4031    jj_la = xla; jj_lastpos = jj_scanpos = token;
4032    try { return !jj_3_30(); }
4033    catch(LookaheadSuccess ls) { return true; }
4034    finally { jj_save(29, xla); }
4035  }
4036
4037  private boolean jj_3R_44()
4038 {
4039    if (jj_scan_token(80)) return true;
4040    if (jj_3R_82()) return true;
4041    return false;
4042  }
4043
4044  private boolean jj_3R_43()
4045 {
4046    if (jj_3R_82()) return true;
4047    return false;
4048  }
4049
4050  private boolean jj_3_9()
4051 {
4052    Token xsp;
4053    xsp = jj_scanpos;
4054    if (jj_3R_43()) {
4055    jj_scanpos = xsp;
4056    if (jj_3R_44()) return true;
4057    }
4058    return false;
4059  }
4060
4061  private boolean jj_3R_42()
4062 {
4063    if (jj_scan_token(80)) return true;
4064    if (jj_scan_token(IDENTIFIER)) return true;
4065    return false;
4066  }
4067
4068  private boolean jj_3R_142()
4069 {
4070    if (jj_3R_74()) return true;
4071    return false;
4072  }
4073
4074  private boolean jj_3R_41()
4075 {
4076    if (jj_scan_token(IDENTIFIER)) return true;
4077    if (jj_scan_token(IN)) return true;
4078    return false;
4079  }
4080
4081  private boolean jj_3_8()
4082 {
4083    Token xsp;
4084    xsp = jj_scanpos;
4085    if (jj_3R_41()) {
4086    jj_scanpos = xsp;
4087    if (jj_3R_42()) return true;
4088    }
4089    return false;
4090  }
4091
4092  private boolean jj_3R_108()
4093 {
4094    if (jj_scan_token(COLL_START)) return true;
4095    Token xsp;
4096    xsp = jj_scanpos;
4097    if (jj_3R_141()) jj_scanpos = xsp;
4098    xsp = jj_scanpos;
4099    if (jj_3R_142()) jj_scanpos = xsp;
4100    if (jj_scan_token(86)) return true;
4101    return false;
4102  }
4103
4104  private boolean jj_3R_148()
4105 {
4106    if (jj_scan_token(FOREACH)) return true;
4107    return false;
4108  }
4109
4110  private boolean jj_3R_137()
4111 {
4112    if (jj_3R_171()) return true;
4113    return false;
4114  }
4115
4116  private boolean jj_3_7()
4117 {
4118    if (jj_3R_40()) return true;
4119    return false;
4120  }
4121
4122  private boolean jj_3R_147()
4123 {
4124    if (jj_scan_token(FOR)) return true;
4125    return false;
4126  }
4127
4128  private boolean jj_3R_136()
4129 {
4130    if (jj_scan_token(FALSE)) return true;
4131    return false;
4132  }
4133
4134  private boolean jj_3R_146()
4135 {
4136    if (jj_scan_token(WHILE)) return true;
4137    return false;
4138  }
4139
4140  private boolean jj_3R_135()
4141 {
4142    if (jj_scan_token(TRUE)) return true;
4143    return false;
4144  }
4145
4146  private boolean jj_3R_149()
4147 {
4148    if (jj_scan_token(THROW)) return true;
4149    return false;
4150  }
4151
4152  private boolean jj_3R_134()
4153 {
4154    if (jj_scan_token(NULL)) return true;
4155    return false;
4156  }
4157
4158  private boolean jj_3R_174()
4159 {
4160    if (jj_scan_token(DOCUMENTATION)) return true;
4161    return false;
4162  }
4163
4164  private boolean jj_3R_153()
4165 {
4166    if (jj_scan_token(BREAK)) return true;
4167    return false;
4168  }
4169
4170  private boolean jj_3R_133()
4171 {
4172    if (jj_3R_170()) return true;
4173    return false;
4174  }
4175
4176  private boolean jj_3R_152()
4177 {
4178    if (jj_scan_token(CONTINUE)) return true;
4179    return false;
4180  }
4181
4182  private boolean jj_3R_132()
4183 {
4184    if (jj_3R_169()) return true;
4185    return false;
4186  }
4187
4188  private boolean jj_3R_121()
4189 {
4190    if (jj_3R_153()) return true;
4191    return false;
4192  }
4193
4194  private boolean jj_3R_131()
4195 {
4196    if (jj_3R_168()) return true;
4197    return false;
4198  }
4199
4200  private boolean jj_3R_120()
4201 {
4202    if (jj_3R_152()) return true;
4203    return false;
4204  }
4205
4206  private boolean jj_3R_119()
4207 {
4208    if (jj_3R_151()) return true;
4209    return false;
4210  }
4211
4212  private boolean jj_3R_130()
4213 {
4214    if (jj_3R_167()) return true;
4215    return false;
4216  }
4217
4218  private boolean jj_3R_118()
4219 {
4220    if (jj_3R_150()) return true;
4221    return false;
4222  }
4223
4224  private boolean jj_3R_117()
4225 {
4226    if (jj_3R_149()) return true;
4227    return false;
4228  }
4229
4230  private boolean jj_3R_116()
4231 {
4232    if (jj_3R_148()) return true;
4233    return false;
4234  }
4235
4236  private boolean jj_3R_129()
4237 {
4238    if (jj_3R_166()) return true;
4239    return false;
4240  }
4241
4242  private boolean jj_3R_115()
4243 {
4244    if (jj_3R_147()) return true;
4245    return false;
4246  }
4247
4248  private boolean jj_3R_114()
4249 {
4250    if (jj_3R_146()) return true;
4251    return false;
4252  }
4253
4254  private boolean jj_3R_128()
4255 {
4256    if (jj_3R_165()) return true;
4257    return false;
4258  }
4259
4260  private boolean jj_3R_113()
4261 {
4262    if (jj_3R_145()) return true;
4263    return false;
4264  }
4265
4266  private boolean jj_3R_112()
4267 {
4268    if (jj_3R_144()) return true;
4269    return false;
4270  }
4271
4272  private boolean jj_3R_111()
4273 {
4274    if (jj_3R_74()) return true;
4275    return false;
4276  }
4277
4278  private boolean jj_3R_127()
4279 {
4280    if (jj_3R_164()) return true;
4281    return false;
4282  }
4283
4284  private boolean jj_3R_171()
4285 {
4286    if (jj_scan_token(FUNREF)) return true;
4287    return false;
4288  }
4289
4290  private boolean jj_3_6()
4291 {
4292    if (jj_3R_39()) return true;
4293    return false;
4294  }
4295
4296  private boolean jj_3_5()
4297 {
4298    if (jj_3R_38()) return true;
4299    return false;
4300  }
4301
4302  private boolean jj_3R_126()
4303 {
4304    if (jj_3R_163()) return true;
4305    return false;
4306  }
4307
4308  private boolean jj_3_4()
4309 {
4310    if (jj_3R_37()) return true;
4311    return false;
4312  }
4313
4314  private boolean jj_3R_98()
4315 {
4316    Token xsp;
4317    xsp = jj_scanpos;
4318    if (jj_3R_110()) {
4319    jj_scanpos = xsp;
4320    if (jj_3_4()) {
4321    jj_scanpos = xsp;
4322    if (jj_3_5()) {
4323    jj_scanpos = xsp;
4324    if (jj_3_6()) {
4325    jj_scanpos = xsp;
4326    if (jj_3R_111()) {
4327    jj_scanpos = xsp;
4328    if (jj_3R_112()) {
4329    jj_scanpos = xsp;
4330    if (jj_3R_113()) {
4331    jj_scanpos = xsp;
4332    if (jj_3R_114()) {
4333    jj_scanpos = xsp;
4334    if (jj_3R_115()) {
4335    jj_scanpos = xsp;
4336    if (jj_3R_116()) {
4337    jj_scanpos = xsp;
4338    if (jj_3R_117()) {
4339    jj_scanpos = xsp;
4340    if (jj_3R_118()) {
4341    jj_scanpos = xsp;
4342    if (jj_3R_119()) {
4343    jj_scanpos = xsp;
4344    if (jj_3R_120()) {
4345    jj_scanpos = xsp;
4346    if (jj_3R_121()) return true;
4347    }
4348    }
4349    }
4350    }
4351    }
4352    }
4353    }
4354    }
4355    }
4356    }
4357    }
4358    }
4359    }
4360    }
4361    return false;
4362  }
4363
4364  private boolean jj_3R_110()
4365 {
4366    if (jj_3R_34()) return true;
4367    return false;
4368  }
4369
4370  private boolean jj_3R_125()
4371 {
4372    if (jj_3R_162()) return true;
4373    return false;
4374  }
4375
4376  private boolean jj_3R_106()
4377 {
4378    Token xsp;
4379    xsp = jj_scanpos;
4380    if (jj_3R_125()) {
4381    jj_scanpos = xsp;
4382    if (jj_3R_126()) {
4383    jj_scanpos = xsp;
4384    if (jj_3R_127()) {
4385    jj_scanpos = xsp;
4386    if (jj_3R_128()) {
4387    jj_scanpos = xsp;
4388    if (jj_3R_129()) {
4389    jj_scanpos = xsp;
4390    if (jj_3R_130()) {
4391    jj_scanpos = xsp;
4392    if (jj_3R_131()) {
4393    jj_scanpos = xsp;
4394    if (jj_3R_132()) {
4395    jj_scanpos = xsp;
4396    if (jj_3R_133()) {
4397    jj_scanpos = xsp;
4398    if (jj_3R_134()) {
4399    jj_scanpos = xsp;
4400    if (jj_3R_135()) {
4401    jj_scanpos = xsp;
4402    if (jj_3R_136()) {
4403    jj_scanpos = xsp;
4404    if (jj_3R_137()) return true;
4405    }
4406    }
4407    }
4408    }
4409    }
4410    }
4411    }
4412    }
4413    }
4414    }
4415    }
4416    }
4417    return false;
4418  }
4419
4420  private boolean jj_3R_165()
4421 {
4422    if (jj_scan_token(BIGDECIMAL)) return true;
4423    return false;
4424  }
4425
4426  private boolean jj_3_3()
4427 {
4428    if (jj_3R_36()) return true;
4429    return false;
4430  }
4431
4432  private boolean jj_3_2()
4433 {
4434    if (jj_3R_35()) return true;
4435    return false;
4436  }
4437
4438  private boolean jj_3R_173()
4439 {
4440    if (jj_3R_34()) return true;
4441    return false;
4442  }
4443
4444  private boolean jj_3R_175()
4445 {
4446    if (jj_scan_token(DECORATOR)) return true;
4447    Token xsp;
4448    xsp = jj_scanpos;
4449    if (jj_scan_token(43)) jj_scanpos = xsp;
4450    xsp = jj_scanpos;
4451    if (jj_3_2()) {
4452    jj_scanpos = xsp;
4453    if (jj_3_3()) return true;
4454    }
4455    if (jj_3R_72()) return true;
4456    return false;
4457  }
4458
4459  private boolean jj_3R_167()
4460 {
4461    if (jj_scan_token(FLOAT)) return true;
4462    return false;
4463  }
4464
4465  private boolean jj_3R_140()
4466 {
4467    if (jj_scan_token(84)) return true;
4468    Token xsp;
4469    xsp = jj_scanpos;
4470    if (jj_3R_173()) jj_scanpos = xsp;
4471    if (jj_3R_74()) return true;
4472    return false;
4473  }
4474
4475  private boolean jj_3R_139()
4476 {
4477    if (jj_3R_40()) return true;
4478    return false;
4479  }
4480
4481  private boolean jj_3R_138()
4482 {
4483    if (jj_scan_token(83)) return true;
4484    if (jj_3R_172()) return true;
4485    return false;
4486  }
4487
4488  private boolean jj_3R_107()
4489 {
4490    Token xsp;
4491    xsp = jj_scanpos;
4492    if (jj_3R_138()) jj_scanpos = xsp;
4493    xsp = jj_scanpos;
4494    if (jj_3R_139()) {
4495    jj_scanpos = xsp;
4496    if (jj_3R_140()) return true;
4497    }
4498    return false;
4499  }
4500
4501  private boolean jj_3R_168()
4502 {
4503    if (jj_scan_token(FLOATING_NUMBER)) return true;
4504    return false;
4505  }
4506
4507  private boolean jj_3R_184()
4508 {
4509    if (jj_scan_token(MACRO)) return true;
4510    return false;
4511  }
4512
4513  private boolean jj_3R_176()
4514 {
4515    Token xsp;
4516    xsp = jj_scanpos;
4517    if (jj_scan_token(9)) {
4518    jj_scanpos = xsp;
4519    if (jj_3R_184()) return true;
4520    }
4521    if (jj_scan_token(IDENTIFIER)) return true;
4522    if (jj_scan_token(78)) return true;
4523    return false;
4524  }
4525
4526  private boolean jj_3R_187()
4527 {
4528    if (jj_3R_40()) return true;
4529    return false;
4530  }
4531
4532  private boolean jj_3R_162()
4533 {
4534    if (jj_scan_token(CLASSREF)) return true;
4535    return false;
4536  }
4537
4538  private boolean jj_3R_89()
4539 {
4540    if (jj_3R_103()) return true;
4541    if (jj_3R_72()) return true;
4542    return false;
4543  }
4544
4545  private boolean jj_3R_88()
4546 {
4547    if (jj_3R_102()) return true;
4548    if (jj_3R_72()) return true;
4549    return false;
4550  }
4551
4552  private boolean jj_3R_73()
4553 {
4554    Token xsp;
4555    xsp = jj_scanpos;
4556    if (jj_3R_88()) {
4557    jj_scanpos = xsp;
4558    if (jj_3R_89()) return true;
4559    }
4560    return false;
4561  }
4562
4563  private boolean jj_3R_186()
4564 {
4565    if (jj_scan_token(WITH)) return true;
4566    return false;
4567  }
4568
4569  private boolean jj_3R_185()
4570 {
4571    if (jj_3R_188()) return true;
4572    return false;
4573  }
4574
4575  private boolean jj_3R_69()
4576 {
4577    if (jj_3R_34()) return true;
4578    return false;
4579  }
4580
4581  private boolean jj_3R_170()
4582 {
4583    if (jj_scan_token(NUMBER)) return true;
4584    return false;
4585  }
4586
4587  private boolean jj_3R_181()
4588 {
4589    Token xsp;
4590    xsp = jj_scanpos;
4591    if (jj_3_26()) {
4592    jj_scanpos = xsp;
4593    if (jj_3R_187()) return true;
4594    }
4595    return false;
4596  }
4597
4598  private boolean jj_3R_179()
4599 {
4600    if (jj_scan_token(AUGMENT)) return true;
4601    if (jj_3R_84()) return true;
4602    Token xsp;
4603    xsp = jj_scanpos;
4604    if (jj_3R_185()) {
4605    jj_scanpos = xsp;
4606    if (jj_3R_186()) return true;
4607    }
4608    return false;
4609  }
4610
4611  private boolean jj_3_26()
4612 {
4613    if (jj_scan_token(79)) return true;
4614    if (jj_3R_72()) return true;
4615    Token xsp;
4616    if (jj_3R_73()) return true;
4617    while (true) {
4618      xsp = jj_scanpos;
4619      if (jj_3R_73()) { jj_scanpos = xsp; break; }
4620    }
4621    if (jj_3R_72()) return true;
4622    if (jj_scan_token(77)) return true;
4623    return false;
4624  }
4625
4626  private boolean jj_3_25()
4627 {
4628    if (jj_3R_71()) return true;
4629    return false;
4630  }
4631
4632  private boolean jj_3R_104()
4633 {
4634    if (jj_scan_token(MACRO_INVOCATION)) return true;
4635    if (jj_3R_84()) return true;
4636    Token xsp;
4637    xsp = jj_scanpos;
4638    if (jj_3_25()) jj_scanpos = xsp;
4639    xsp = jj_scanpos;
4640    if (jj_3R_181()) jj_scanpos = xsp;
4641    return false;
4642  }
4643
4644  private boolean jj_3R_166()
4645 {
4646    if (jj_scan_token(BIGINTEGER)) return true;
4647    return false;
4648  }
4649
4650  private boolean jj_3R_180()
4651 {
4652    if (jj_scan_token(NAMEDAUGMENTATION)) return true;
4653    if (jj_scan_token(IDENTIFIER)) return true;
4654    if (jj_scan_token(78)) return true;
4655    return false;
4656  }
4657
4658  private boolean jj_3R_66()
4659 {
4660    if (jj_3R_34()) return true;
4661    return false;
4662  }
4663
4664  private boolean jj_3R_81()
4665 {
4666    if (jj_3R_98()) return true;
4667    return false;
4668  }
4669
4670  private boolean jj_3R_169()
4671 {
4672    if (jj_scan_token(LONG_NUMBER)) return true;
4673    return false;
4674  }
4675
4676  private boolean jj_3R_40()
4677 {
4678    if (jj_scan_token(79)) return true;
4679    Token xsp;
4680    while (true) {
4681      xsp = jj_scanpos;
4682      if (jj_3R_81()) { jj_scanpos = xsp; break; }
4683    }
4684    if (jj_scan_token(77)) return true;
4685    return false;
4686  }
4687
4688  private boolean jj_3R_63()
4689 {
4690    if (jj_3R_34()) return true;
4691    return false;
4692  }
4693
4694  private boolean jj_3R_68()
4695 {
4696    if (jj_3R_34()) return true;
4697    return false;
4698  }
4699
4700  private boolean jj_3_24()
4701 {
4702    if (jj_3R_50()) return true;
4703    return false;
4704  }
4705
4706  private boolean jj_3R_164()
4707 {
4708    if (jj_scan_token(CHAR)) return true;
4709    return false;
4710  }
4711
4712  private boolean jj_3R_60()
4713 {
4714    if (jj_3R_34()) return true;
4715    return false;
4716  }
4717
4718  private boolean jj_3R_49()
4719 {
4720    if (jj_scan_token(IDENTIFIER)) return true;
4721    return false;
4722  }
4723
4724  private boolean jj_3R_188()
4725 {
4726    if (jj_scan_token(79)) return true;
4727    return false;
4728  }
4729
4730  private boolean jj_3_23()
4731 {
4732    Token xsp;
4733    xsp = jj_scanpos;
4734    if (jj_3R_68()) jj_scanpos = xsp;
4735    if (jj_scan_token(OR_IFNULL_OPERATOR)) return true;
4736    xsp = jj_scanpos;
4737    if (jj_3R_69()) jj_scanpos = xsp;
4738    if (jj_3R_70()) return true;
4739    return false;
4740  }
4741
4742  private boolean jj_3R_183()
4743 {
4744    if (jj_scan_token(MULTI_STRING)) return true;
4745    return false;
4746  }
4747
4748  private boolean jj_3R_65()
4749 {
4750    if (jj_3R_34()) return true;
4751    return false;
4752  }
4753
4754  private boolean jj_3R_57()
4755 {
4756    if (jj_3R_34()) return true;
4757    return false;
4758  }
4759
4760  private boolean jj_3R_90()
4761 {
4762    if (jj_3R_70()) return true;
4763    Token xsp;
4764    while (true) {
4765      xsp = jj_scanpos;
4766      if (jj_3_23()) { jj_scanpos = xsp; break; }
4767    }
4768    return false;
4769  }
4770
4771  private boolean jj_3R_105()
4772 {
4773    if (jj_scan_token(MATCH)) return true;
4774    if (jj_scan_token(79)) return true;
4775    return false;
4776  }
4777
4778  private boolean jj_3R_182()
4779 {
4780    if (jj_scan_token(STRING)) return true;
4781    return false;
4782  }
4783
4784  private boolean jj_3R_163()
4785 {
4786    Token xsp;
4787    xsp = jj_scanpos;
4788    if (jj_3R_182()) {
4789    jj_scanpos = xsp;
4790    if (jj_3R_183()) return true;
4791    }
4792    return false;
4793  }
4794
4795  private boolean jj_3R_178()
4796 {
4797    if (jj_scan_token(UNION)) return true;
4798    if (jj_scan_token(IDENTIFIER)) return true;
4799    if (jj_scan_token(78)) return true;
4800    return false;
4801  }
4802
4803  private boolean jj_3_30()
4804 {
4805    if (jj_scan_token(ELSE)) return true;
4806    return false;
4807  }
4808
4809  private boolean jj_3R_151()
4810 {
4811    if (jj_scan_token(CASE)) return true;
4812    return false;
4813  }
4814
4815  private boolean jj_3_22()
4816 {
4817    Token xsp;
4818    xsp = jj_scanpos;
4819    if (jj_3R_65()) jj_scanpos = xsp;
4820    if (jj_scan_token(OR_OPERATOR)) return true;
4821    xsp = jj_scanpos;
4822    if (jj_3R_66()) jj_scanpos = xsp;
4823    if (jj_3R_67()) return true;
4824    return false;
4825  }
4826
4827  private boolean jj_3R_62()
4828 {
4829    if (jj_3R_34()) return true;
4830    return false;
4831  }
4832
4833  private boolean jj_3R_54()
4834 {
4835    if (jj_3R_34()) return true;
4836    return false;
4837  }
4838
4839  private boolean jj_3R_70()
4840 {
4841    if (jj_3R_67()) return true;
4842    Token xsp;
4843    while (true) {
4844      xsp = jj_scanpos;
4845      if (jj_3_22()) { jj_scanpos = xsp; break; }
4846    }
4847    return false;
4848  }
4849
4850  private boolean jj_3R_52()
4851 {
4852    if (jj_3R_34()) return true;
4853    return false;
4854  }
4855
4856  private boolean jj_3R_145()
4857 {
4858    if (jj_scan_token(IF)) return true;
4859    return false;
4860  }
4861
4862  private boolean jj_3R_59()
4863 {
4864    if (jj_3R_34()) return true;
4865    return false;
4866  }
4867
4868  private boolean jj_3_21()
4869 {
4870    Token xsp;
4871    xsp = jj_scanpos;
4872    if (jj_3R_62()) jj_scanpos = xsp;
4873    if (jj_scan_token(AND_OPERATOR)) return true;
4874    xsp = jj_scanpos;
4875    if (jj_3R_63()) jj_scanpos = xsp;
4876    if (jj_3R_64()) return true;
4877    return false;
4878  }
4879
4880  private boolean jj_3R_67()
4881 {
4882    if (jj_3R_64()) return true;
4883    Token xsp;
4884    while (true) {
4885      xsp = jj_scanpos;
4886      if (jj_3_21()) { jj_scanpos = xsp; break; }
4887    }
4888    return false;
4889  }
4890
4891  private boolean jj_3_29()
4892 {
4893    if (jj_3R_50()) return true;
4894    return false;
4895  }
4896
4897  private boolean jj_3R_46()
4898 {
4899    if (jj_3R_84()) return true;
4900    Token xsp;
4901    xsp = jj_scanpos;
4902    if (jj_scan_token(43)) jj_scanpos = xsp;
4903    if (jj_3R_71()) return true;
4904    return false;
4905  }
4906
4907  private boolean jj_3R_87()
4908 {
4909    if (jj_3R_101()) return true;
4910    return false;
4911  }
4912
4913  private boolean jj_3R_56()
4914 {
4915    if (jj_3R_34()) return true;
4916    return false;
4917  }
4918
4919  private boolean jj_3_20()
4920 {
4921    Token xsp;
4922    xsp = jj_scanpos;
4923    if (jj_3R_59()) jj_scanpos = xsp;
4924    if (jj_scan_token(EQUALITY_OPERATOR)) return true;
4925    xsp = jj_scanpos;
4926    if (jj_3R_60()) jj_scanpos = xsp;
4927    if (jj_3R_61()) return true;
4928    return false;
4929  }
4930
4931  private boolean jj_3R_64()
4932 {
4933    if (jj_3R_61()) return true;
4934    Token xsp;
4935    xsp = jj_scanpos;
4936    if (jj_3_20()) jj_scanpos = xsp;
4937    return false;
4938  }
4939
4940  private boolean jj_3R_48()
4941 {
4942    if (jj_3R_34()) return true;
4943    return false;
4944  }
4945
4946  private boolean jj_3R_172()
4947 {
4948    if (jj_scan_token(IDENTIFIER)) return true;
4949    return false;
4950  }
4951
4952  private boolean jj_3R_177()
4953 {
4954    if (jj_scan_token(STRUCT)) return true;
4955    if (jj_scan_token(IDENTIFIER)) return true;
4956    if (jj_scan_token(78)) return true;
4957    return false;
4958  }
4959
4960  private boolean jj_3R_50()
4961 {
4962    Token xsp;
4963    xsp = jj_scanpos;
4964    if (jj_scan_token(43)) jj_scanpos = xsp;
4965    if (jj_3R_71()) return true;
4966    return false;
4967  }
4968
4969  private boolean jj_3R_53()
4970 {
4971    if (jj_3R_34()) return true;
4972    return false;
4973  }
4974
4975  private boolean jj_3_19()
4976 {
4977    Token xsp;
4978    xsp = jj_scanpos;
4979    if (jj_3R_56()) jj_scanpos = xsp;
4980    if (jj_scan_token(RELATIONAL_OPERATOR)) return true;
4981    xsp = jj_scanpos;
4982    if (jj_3R_57()) jj_scanpos = xsp;
4983    if (jj_3R_58()) return true;
4984    return false;
4985  }
4986
4987  private boolean jj_3R_86()
4988 {
4989    if (jj_3R_34()) return true;
4990    return false;
4991  }
4992
4993  private boolean jj_3R_61()
4994 {
4995    if (jj_3R_58()) return true;
4996    Token xsp;
4997    xsp = jj_scanpos;
4998    if (jj_3_19()) jj_scanpos = xsp;
4999    return false;
5000  }
5001
5002  private boolean jj_3R_71()
5003 {
5004    if (jj_scan_token(80)) return true;
5005    Token xsp;
5006    xsp = jj_scanpos;
5007    if (jj_3R_86()) jj_scanpos = xsp;
5008    xsp = jj_scanpos;
5009    if (jj_3R_87()) jj_scanpos = xsp;
5010    if (jj_scan_token(81)) return true;
5011    return false;
5012  }
5013
5014  private boolean jj_3R_83()
5015 {
5016    if (jj_3R_34()) return true;
5017    return false;
5018  }
5019
5020  private boolean jj_3R_100()
5021 {
5022    if (jj_scan_token(74)) return true;
5023    return false;
5024  }
5025
5026  private boolean jj_3R_51()
5027 {
5028    if (jj_3R_34()) return true;
5029    return false;
5030  }
5031
5032  private boolean jj_3_18()
5033 {
5034    Token xsp;
5035    xsp = jj_scanpos;
5036    if (jj_3R_53()) jj_scanpos = xsp;
5037    if (jj_scan_token(ADDITIVE_OPERATOR)) return true;
5038    xsp = jj_scanpos;
5039    if (jj_3R_54()) jj_scanpos = xsp;
5040    if (jj_3R_55()) return true;
5041    return false;
5042  }
5043
5044  private boolean jj_3_27()
5045 {
5046    if (jj_3R_72()) return true;
5047    if (jj_3R_74()) return true;
5048    return false;
5049  }
5050
5051  private boolean jj_3_28()
5052 {
5053    if (jj_scan_token(IDENTIFIER)) return true;
5054    if (jj_scan_token(78)) return true;
5055    return false;
5056  }
5057
5058  private boolean jj_3R_84()
5059 {
5060    if (jj_scan_token(IDENTIFIER)) return true;
5061    Token xsp;
5062    while (true) {
5063      xsp = jj_scanpos;
5064      if (jj_3R_100()) { jj_scanpos = xsp; break; }
5065    }
5066    return false;
5067  }
5068
5069  private boolean jj_3R_101()
5070 {
5071    Token xsp;
5072    xsp = jj_scanpos;
5073    if (jj_3_28()) jj_scanpos = xsp;
5074    if (jj_3R_74()) return true;
5075    return false;
5076  }
5077
5078  private boolean jj_3R_58()
5079 {
5080    if (jj_3R_55()) return true;
5081    Token xsp;
5082    while (true) {
5083      xsp = jj_scanpos;
5084      if (jj_3_18()) { jj_scanpos = xsp; break; }
5085    }
5086    return false;
5087  }
5088
5089  private boolean jj_3_1()
5090 {
5091    if (jj_3R_34()) return true;
5092    return false;
5093  }
5094
5095  private boolean jj_3R_124()
5096 {
5097    if (jj_3R_104()) return true;
5098    return false;
5099  }
5100
5101  private boolean jj_3R_144()
5102 {
5103    if (jj_scan_token(RETURN)) return true;
5104    return false;
5105  }
5106
5107  private boolean jj_3R_72()
5108 {
5109    Token xsp;
5110    while (true) {
5111      xsp = jj_scanpos;
5112      if (jj_3_1()) { jj_scanpos = xsp; break; }
5113    }
5114    return false;
5115  }
5116
5117  private boolean jj_3R_161()
5118 {
5119    if (jj_3R_180()) return true;
5120    return false;
5121  }
5122
5123  private boolean jj_3_17()
5124 {
5125    Token xsp;
5126    xsp = jj_scanpos;
5127    if (jj_3R_51()) jj_scanpos = xsp;
5128    if (jj_scan_token(MULTIPLICATIVE_OPERATOR)) return true;
5129    xsp = jj_scanpos;
5130    if (jj_3R_52()) jj_scanpos = xsp;
5131    if (jj_3R_35()) return true;
5132    return false;
5133  }
5134
5135  private boolean jj_3R_34()
5136 {
5137    Token xsp;
5138    xsp = jj_scanpos;
5139    if (jj_scan_token(5)) {
5140    jj_scanpos = xsp;
5141    if (jj_scan_token(69)) return true;
5142    }
5143    return false;
5144  }
5145
5146  private boolean jj_3R_55()
5147 {
5148    if (jj_3R_85()) return true;
5149    Token xsp;
5150    while (true) {
5151      xsp = jj_scanpos;
5152      if (jj_3_17()) { jj_scanpos = xsp; break; }
5153    }
5154    return false;
5155  }
5156
5157  private boolean jj_3R_160()
5158 {
5159    if (jj_3R_179()) return true;
5160    return false;
5161  }
5162
5163  private boolean jj_3R_37()
5164 {
5165    if (jj_scan_token(IDENTIFIER)) return true;
5166    if (jj_scan_token(78)) return true;
5167    Token xsp;
5168    xsp = jj_scanpos;
5169    if (jj_3R_83()) jj_scanpos = xsp;
5170    if (jj_3R_74()) return true;
5171    return false;
5172  }
5173
5174  private boolean jj_3R_47()
5175 {
5176    if (jj_3R_34()) return true;
5177    return false;
5178  }
5179
5180  private boolean jj_3R_122()
5181 {
5182    if (jj_3R_154()) return true;
5183    return false;
5184  }
5185
5186  private boolean jj_3R_159()
5187 {
5188    if (jj_3R_178()) return true;
5189    return false;
5190  }
5191
5192  private boolean jj_3_16()
5193 {
5194    if (jj_3R_50()) return true;
5195    return false;
5196  }
5197
5198  private boolean jj_3R_158()
5199 {
5200    if (jj_3R_177()) return true;
5201    return false;
5202  }
5203
5204  private boolean jj_3R_80()
5205 {
5206    if (jj_scan_token(VAR)) return true;
5207    if (jj_scan_token(IDENTIFIER)) return true;
5208    return false;
5209  }
5210
5211  private boolean jj_3R_91()
5212 {
5213    if (jj_3R_34()) return true;
5214    return false;
5215  }
5216
5217  private boolean jj_3_15()
5218 {
5219    Token xsp;
5220    xsp = jj_scanpos;
5221    if (jj_3R_47()) jj_scanpos = xsp;
5222    if (jj_scan_token(INVOCATION_OPERATOR)) return true;
5223    xsp = jj_scanpos;
5224    if (jj_3R_48()) jj_scanpos = xsp;
5225    if (jj_3R_49()) return true;
5226    return false;
5227  }
5228
5229  private boolean jj_3R_157()
5230 {
5231    Token xsp;
5232    xsp = jj_scanpos;
5233    if (jj_scan_token(10)) jj_scanpos = xsp;
5234    if (jj_3R_176()) return true;
5235    return false;
5236  }
5237
5238  private boolean jj_3R_35()
5239 {
5240    if (jj_3R_75()) return true;
5241    Token xsp;
5242    while (true) {
5243      xsp = jj_scanpos;
5244      if (jj_3_15()) { jj_scanpos = xsp; break; }
5245    }
5246    while (true) {
5247      xsp = jj_scanpos;
5248      if (jj_3_16()) { jj_scanpos = xsp; break; }
5249    }
5250    return false;
5251  }
5252
5253  private boolean jj_3R_156()
5254 {
5255    if (jj_3R_175()) return true;
5256    return false;
5257  }
5258
5259  private boolean jj_3R_39()
5260 {
5261    Token xsp;
5262    xsp = jj_scanpos;
5263    if (jj_3R_79()) {
5264    jj_scanpos = xsp;
5265    if (jj_3R_80()) return true;
5266    }
5267    return false;
5268  }
5269
5270  private boolean jj_3R_79()
5271 {
5272    if (jj_scan_token(LET)) return true;
5273    if (jj_scan_token(IDENTIFIER)) return true;
5274    return false;
5275  }
5276
5277  private boolean jj_3R_155()
5278 {
5279    if (jj_3R_174()) return true;
5280    return false;
5281  }
5282
5283  private boolean jj_3R_103()
5284 {
5285    Token xsp;
5286    xsp = jj_scanpos;
5287    if (jj_3R_123()) {
5288    jj_scanpos = xsp;
5289    if (jj_3R_124()) return true;
5290    }
5291    return false;
5292  }
5293
5294  private boolean jj_3R_123()
5295 {
5296    Token xsp;
5297    xsp = jj_scanpos;
5298    if (jj_3R_155()) jj_scanpos = xsp;
5299    while (true) {
5300      xsp = jj_scanpos;
5301      if (jj_3R_156()) { jj_scanpos = xsp; break; }
5302    }
5303    xsp = jj_scanpos;
5304    if (jj_3R_157()) {
5305    jj_scanpos = xsp;
5306    if (jj_3R_158()) {
5307    jj_scanpos = xsp;
5308    if (jj_3R_159()) {
5309    jj_scanpos = xsp;
5310    if (jj_3R_160()) {
5311    jj_scanpos = xsp;
5312    if (jj_3R_161()) return true;
5313    }
5314    }
5315    }
5316    }
5317    return false;
5318  }
5319
5320  private boolean jj_3R_143()
5321 {
5322    if (jj_3R_34()) return true;
5323    return false;
5324  }
5325
5326  private boolean jj_3R_85()
5327 {
5328    Token xsp;
5329    xsp = jj_scanpos;
5330    if (jj_scan_token(41)) jj_scanpos = xsp;
5331    if (jj_3R_35()) return true;
5332    return false;
5333  }
5334
5335  private boolean jj_3R_99()
5336 {
5337    if (jj_scan_token(75)) return true;
5338    Token xsp;
5339    xsp = jj_scanpos;
5340    if (jj_3R_143()) jj_scanpos = xsp;
5341    if (jj_scan_token(IDENTIFIER)) return true;
5342    return false;
5343  }
5344
5345  private boolean jj_3R_109()
5346 {
5347    if (jj_3R_34()) return true;
5348    return false;
5349  }
5350
5351  private boolean jj_3R_97()
5352 {
5353    if (jj_scan_token(80)) return true;
5354    Token xsp;
5355    xsp = jj_scanpos;
5356    if (jj_3R_109()) jj_scanpos = xsp;
5357    if (jj_3R_74()) return true;
5358    return false;
5359  }
5360
5361  private boolean jj_3R_82()
5362 {
5363    if (jj_scan_token(IDENTIFIER)) return true;
5364    Token xsp;
5365    if (jj_3R_99()) return true;
5366    while (true) {
5367      xsp = jj_scanpos;
5368      if (jj_3R_99()) { jj_scanpos = xsp; break; }
5369    }
5370    return false;
5371  }
5372
5373  private boolean jj_3R_96()
5374 {
5375    if (jj_3R_108()) return true;
5376    return false;
5377  }
5378
5379  private boolean jj_3R_95()
5380 {
5381    if (jj_3R_107()) return true;
5382    return false;
5383  }
5384
5385  private boolean jj_3R_94()
5386 {
5387    if (jj_3R_106()) return true;
5388    return false;
5389  }
5390
5391  private boolean jj_3R_93()
5392 {
5393    if (jj_3R_105()) return true;
5394    return false;
5395  }
5396
5397  private boolean jj_3_11()
5398 {
5399    if (jj_3R_45()) return true;
5400    return false;
5401  }
5402
5403  private boolean jj_3R_92()
5404 {
5405    if (jj_3R_104()) return true;
5406    return false;
5407  }
5408
5409  private boolean jj_3_14()
5410 {
5411    if (jj_3R_36()) return true;
5412    return false;
5413  }
5414
5415  private boolean jj_3R_102()
5416 {
5417    if (jj_scan_token(IMPORT)) return true;
5418    Token xsp;
5419    xsp = jj_scanpos;
5420    if (jj_scan_token(74)) jj_scanpos = xsp;
5421    if (jj_3R_84()) return true;
5422    xsp = jj_scanpos;
5423    if (jj_3R_122()) jj_scanpos = xsp;
5424    return false;
5425  }
5426
5427  private boolean jj_3_13()
5428 {
5429    if (jj_3R_46()) return true;
5430    return false;
5431  }
5432
5433  private boolean jj_3R_75()
5434 {
5435    Token xsp;
5436    xsp = jj_scanpos;
5437    if (jj_3_13()) {
5438    jj_scanpos = xsp;
5439    if (jj_3_14()) {
5440    jj_scanpos = xsp;
5441    if (jj_3R_92()) {
5442    jj_scanpos = xsp;
5443    if (jj_3R_93()) {
5444    jj_scanpos = xsp;
5445    if (jj_3R_94()) {
5446    jj_scanpos = xsp;
5447    if (jj_3R_95()) {
5448    jj_scanpos = xsp;
5449    if (jj_3R_96()) {
5450    jj_scanpos = xsp;
5451    if (jj_3R_97()) return true;
5452    }
5453    }
5454    }
5455    }
5456    }
5457    }
5458    }
5459    return false;
5460  }
5461
5462  private boolean jj_3R_78()
5463 {
5464    if (jj_3R_82()) return true;
5465    return false;
5466  }
5467
5468  private boolean jj_3R_77()
5469 {
5470    if (jj_scan_token(VAR)) return true;
5471    if (jj_3R_82()) return true;
5472    return false;
5473  }
5474
5475  private boolean jj_3_12()
5476 {
5477    if (jj_3R_37()) return true;
5478    return false;
5479  }
5480
5481  private boolean jj_3R_45()
5482 {
5483    if (jj_scan_token(WITH)) return true;
5484    if (jj_scan_token(79)) return true;
5485    return false;
5486  }
5487
5488  private boolean jj_3R_74()
5489 {
5490    if (jj_3R_90()) return true;
5491    Token xsp;
5492    xsp = jj_scanpos;
5493    if (jj_3_11()) jj_scanpos = xsp;
5494    xsp = jj_scanpos;
5495    if (jj_3R_91()) jj_scanpos = xsp;
5496    return false;
5497  }
5498
5499  private boolean jj_3R_38()
5500 {
5501    Token xsp;
5502    xsp = jj_scanpos;
5503    if (jj_3R_76()) {
5504    jj_scanpos = xsp;
5505    if (jj_3R_77()) {
5506    jj_scanpos = xsp;
5507    if (jj_3R_78()) return true;
5508    }
5509    }
5510    return false;
5511  }
5512
5513  private boolean jj_3R_76()
5514 {
5515    if (jj_scan_token(LET)) return true;
5516    if (jj_3R_82()) return true;
5517    return false;
5518  }
5519
5520  private boolean jj_3R_154()
5521 {
5522    if (jj_scan_token(76)) return true;
5523    return false;
5524  }
5525
5526  private boolean jj_3R_36()
5527 {
5528    if (jj_scan_token(IDENTIFIER)) return true;
5529    return false;
5530  }
5531
5532  private boolean jj_3R_150()
5533 {
5534    if (jj_scan_token(TRY)) return true;
5535    return false;
5536  }
5537
5538  private boolean jj_3R_141()
5539 {
5540    if (jj_3R_34()) return true;
5541    return false;
5542  }
5543
5544  private boolean jj_3_10()
5545 {
5546    if (jj_3R_40()) return true;
5547    return false;
5548  }
5549
5550  /** Generated Token Manager. */
5551  public GoloParserTokenManager token_source;
5552  JavaCharStream jj_input_stream;
5553  /** Current token. */
5554  public Token token;
5555  /** Next token. */
5556  public Token jj_nt;
5557  private int jj_ntk;
5558  private Token jj_scanpos, jj_lastpos;
5559  private int jj_la;
5560  private int jj_gen;
5561  final private int[] jj_la1 = new int[118];
5562  static private int[] jj_la1_0;
5563  static private int[] jj_la1_1;
5564  static private int[] jj_la1_2;
5565  static {
5566      jj_la1_init_0();
5567      jj_la1_init_1();
5568      jj_la1_init_2();
5569   }
5570   private static void jj_la1_init_0() {
5571      jj_la1_0 = new int[] {0x20,0x0,0x0,0x20,0x0,0x20,0x0,0x100,0x18000600,0x18000600,0xa0,0x0,0x0,0x20,0x20,0x0,0x20,0x0,0x0,0x0,0x0,0x400,0x18000600,0x18000600,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x200,0x20000000,0x200,0x0,0x20,0xc14dd800,0x20,0x20,0x20,0x20,0x800000,0x800000,0x0,0x0,0x800000,0x0,0x800000,0x0,0x200000,0x300000,0x20,0x20,0x20,0x20,0x20,0x1000000,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc14dd820,0x18000700,0x18000700,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x20,0x20,0x0,0x18000,0x18000,0x18000,0x18000,0x20,0x1000000,0x0,0x20,0x0,0x20,0x0,0x20,0x0,0x20,0x0,0x20,0x20,0x0,0x20,0x20,0x0,0x20,0x1000000,0x0,0x0,0x1000,0x800000,0x800000,};
5572   }
5573   private static void jj_la1_init_1() {
5574      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x1f003,0x1f003,0x1000,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x4003,0x7003,0x0,0x0,0x0,0x1000,0x0,0x0,0x1000,0x7000,0x0,0x1000,0x7000,0x0,0x4000,0x800,0x0,0x7ffe2200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18000,0x18000,0x0,0x0,0x7ffe2000,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fffa200,0x7003,0x7003,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffe0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7ffe2200,0x0,0x0,0x0,0x0,0x0,0x0,0x18000,0x0,0x0,0x0,0x0,0x18000,0x0,0x0,0x0,0x0,0x7ffe2200,0x800,0x800,0x0,0x0,0x0,};
5575   }
5576   private static void jj_la1_init_2() {
5577      jj_la1_2 = new int[] {0x20,0x400,0x800,0x20,0x800,0x20,0x2,0x0,0x100,0x100,0x120,0x100,0x0,0x20,0x20,0x800,0x20,0x400,0x1000,0x100,0x0,0x0,0x0,0x100,0x100,0x800,0x100,0x0,0x800,0x4000,0x104,0x100,0x100,0x0,0x100,0x8000,0x0,0x0,0x20,0x198006,0x20,0x20,0x20,0x20,0x0,0x0,0x10004,0x40000,0x0,0x40000,0x0,0x10004,0x0,0x0,0x20,0x24,0x24,0x20,0x20,0x198002,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x198026,0x100,0x100,0x8000,0x8000,0x40000,0x80000,0x20,0x108000,0x2,0x20,0x20,0x800,0x0,0x0,0x200800,0x200800,0x20,0x198006,0x40000,0x20,0x40000,0x20,0x40000,0x20,0x4,0x20,0x800,0x20,0x20,0x0,0x20,0x20,0x800,0x20,0x198006,0x0,0x0,0x8000,0x0,0x0,};
5578   }
5579  final private JJCalls[] jj_2_rtns = new JJCalls[30];
5580  private boolean jj_rescan = false;
5581  private int jj_gc = 0;
5582
5583  /** Constructor with InputStream. */
5584  public GoloParser(java.io.InputStream stream) {
5585     this(stream, null);
5586  }
5587  /** Constructor with InputStream and supplied encoding */
5588  public GoloParser(java.io.InputStream stream, String encoding) {
5589    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
5590    token_source = new GoloParserTokenManager(jj_input_stream);
5591    token = new Token();
5592    jj_ntk = -1;
5593    jj_gen = 0;
5594    for (int i = 0; i < 118; i++) jj_la1[i] = -1;
5595    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5596  }
5597
5598  /** Reinitialise. */
5599  public void ReInit(java.io.InputStream stream) {
5600     ReInit(stream, null);
5601  }
5602  /** Reinitialise. */
5603  public void ReInit(java.io.InputStream stream, String encoding) {
5604    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
5605    token_source.ReInit(jj_input_stream);
5606    token = new Token();
5607    jj_ntk = -1;
5608    jjtree.reset();
5609    jj_gen = 0;
5610    for (int i = 0; i < 118; i++) jj_la1[i] = -1;
5611    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5612  }
5613
5614  /** Constructor. */
5615  public GoloParser(java.io.Reader stream) {
5616    jj_input_stream = new JavaCharStream(stream, 1, 1);
5617    token_source = new GoloParserTokenManager(jj_input_stream);
5618    token = new Token();
5619    jj_ntk = -1;
5620    jj_gen = 0;
5621    for (int i = 0; i < 118; i++) jj_la1[i] = -1;
5622    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5623  }
5624
5625  /** Reinitialise. */
5626  public void ReInit(java.io.Reader stream) {
5627        if (jj_input_stream == null) {
5628      jj_input_stream = new JavaCharStream(stream, 1, 1);
5629   } else {
5630      jj_input_stream.ReInit(stream, 1, 1);
5631   }
5632   if (token_source == null) {
5633      token_source = new GoloParserTokenManager(jj_input_stream);
5634   }
5635
5636    token_source.ReInit(jj_input_stream);
5637    token = new Token();
5638    jj_ntk = -1;
5639    jjtree.reset();
5640    jj_gen = 0;
5641    for (int i = 0; i < 118; i++) jj_la1[i] = -1;
5642    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5643  }
5644
5645  /** Constructor with generated Token Manager. */
5646  public GoloParser(GoloParserTokenManager tm) {
5647    token_source = tm;
5648    token = new Token();
5649    jj_ntk = -1;
5650    jj_gen = 0;
5651    for (int i = 0; i < 118; i++) jj_la1[i] = -1;
5652    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5653  }
5654
5655  /** Reinitialise. */
5656  public void ReInit(GoloParserTokenManager tm) {
5657    token_source = tm;
5658    token = new Token();
5659    jj_ntk = -1;
5660    jjtree.reset();
5661    jj_gen = 0;
5662    for (int i = 0; i < 118; i++) jj_la1[i] = -1;
5663    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5664  }
5665
5666  private Token jj_consume_token(int kind) throws ParseException {
5667    Token oldToken;
5668    if ((oldToken = token).next != null) token = token.next;
5669    else token = token.next = token_source.getNextToken();
5670    jj_ntk = -1;
5671    if (token.kind == kind) {
5672      jj_gen++;
5673      if (++jj_gc > 100) {
5674        jj_gc = 0;
5675        for (int i = 0; i < jj_2_rtns.length; i++) {
5676          JJCalls c = jj_2_rtns[i];
5677          while (c != null) {
5678            if (c.gen < jj_gen) c.first = null;
5679            c = c.next;
5680          }
5681        }
5682      }
5683      return token;
5684    }
5685    token = oldToken;
5686    jj_kind = kind;
5687    throw generateParseException();
5688  }
5689
5690  @SuppressWarnings("serial")
5691  static private final class LookaheadSuccess extends java.lang.Error { }
5692  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
5693  private boolean jj_scan_token(int kind) {
5694    if (jj_scanpos == jj_lastpos) {
5695      jj_la--;
5696      if (jj_scanpos.next == null) {
5697        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
5698      } else {
5699        jj_lastpos = jj_scanpos = jj_scanpos.next;
5700      }
5701    } else {
5702      jj_scanpos = jj_scanpos.next;
5703    }
5704    if (jj_rescan) {
5705      int i = 0; Token tok = token;
5706      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
5707      if (tok != null) jj_add_error_token(kind, i);
5708    }
5709    if (jj_scanpos.kind != kind) return true;
5710    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
5711    return false;
5712  }
5713
5714
5715/** Get the next Token. */
5716  final public Token getNextToken() {
5717    if (token.next != null) token = token.next;
5718    else token = token.next = token_source.getNextToken();
5719    jj_ntk = -1;
5720    jj_gen++;
5721    return token;
5722  }
5723
5724/** Get the specific Token. */
5725  final public Token getToken(int index) {
5726    Token t = token;
5727    for (int i = 0; i < index; i++) {
5728      if (t.next != null) t = t.next;
5729      else t = t.next = token_source.getNextToken();
5730    }
5731    return t;
5732  }
5733
5734  private int jj_ntk_f() {
5735    if ((jj_nt=token.next) == null)
5736      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
5737    else
5738      return (jj_ntk = jj_nt.kind);
5739  }
5740
5741  private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
5742  private int[] jj_expentry;
5743  private int jj_kind = -1;
5744  private int[] jj_lasttokens = new int[100];
5745  private int jj_endpos;
5746
5747  private void jj_add_error_token(int kind, int pos) {
5748    if (pos >= 100) {
5749       return;
5750    }
5751
5752    if (pos == jj_endpos + 1) {
5753      jj_lasttokens[jj_endpos++] = kind;
5754    } else if (jj_endpos != 0) {
5755      jj_expentry = new int[jj_endpos];
5756
5757      for (int i = 0; i < jj_endpos; i++) {
5758        jj_expentry[i] = jj_lasttokens[i];
5759      }
5760
5761      for (int[] oldentry : jj_expentries) {
5762        if (oldentry.length == jj_expentry.length) {
5763          boolean isMatched = true;
5764
5765          for (int i = 0; i < jj_expentry.length; i++) {
5766            if (oldentry[i] != jj_expentry[i]) {
5767              isMatched = false;
5768              break;
5769            }
5770
5771          }
5772          if (isMatched) {
5773            jj_expentries.add(jj_expentry);
5774            break;
5775          }
5776        }
5777      }
5778
5779      if (pos != 0) {
5780        jj_lasttokens[(jj_endpos = pos) - 1] = kind;
5781      }
5782    }
5783  }
5784
5785  /** Generate ParseException. */
5786  public ParseException generateParseException() {
5787    jj_expentries.clear();
5788    boolean[] la1tokens = new boolean[87];
5789    if (jj_kind >= 0) {
5790      la1tokens[jj_kind] = true;
5791      jj_kind = -1;
5792    }
5793    for (int i = 0; i < 118; i++) {
5794      if (jj_la1[i] == jj_gen) {
5795        for (int j = 0; j < 32; j++) {
5796          if ((jj_la1_0[i] & (1<<j)) != 0) {
5797            la1tokens[j] = true;
5798          }
5799          if ((jj_la1_1[i] & (1<<j)) != 0) {
5800            la1tokens[32+j] = true;
5801          }
5802          if ((jj_la1_2[i] & (1<<j)) != 0) {
5803            la1tokens[64+j] = true;
5804          }
5805        }
5806      }
5807    }
5808    for (int i = 0; i < 87; i++) {
5809      if (la1tokens[i]) {
5810        jj_expentry = new int[1];
5811        jj_expentry[0] = i;
5812        jj_expentries.add(jj_expentry);
5813      }
5814    }
5815    jj_endpos = 0;
5816    jj_rescan_token();
5817    jj_add_error_token(0, 0);
5818    int[][] exptokseq = new int[jj_expentries.size()][];
5819    for (int i = 0; i < jj_expentries.size(); i++) {
5820      exptokseq[i] = jj_expentries.get(i);
5821    }
5822    return new ParseException(token, exptokseq, tokenImage);
5823  }
5824
5825  /** Enable tracing. */
5826  final public void enable_tracing() {
5827  }
5828
5829  /** Disable tracing. */
5830  final public void disable_tracing() {
5831  }
5832
5833  private void jj_rescan_token() {
5834    jj_rescan = true;
5835    for (int i = 0; i < 30; i++) {
5836      try {
5837        JJCalls p = jj_2_rtns[i];
5838
5839        do {
5840          if (p.gen > jj_gen) {
5841            jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
5842            switch (i) {
5843              case 0: jj_3_1(); break;
5844              case 1: jj_3_2(); break;
5845              case 2: jj_3_3(); break;
5846              case 3: jj_3_4(); break;
5847              case 4: jj_3_5(); break;
5848              case 5: jj_3_6(); break;
5849              case 6: jj_3_7(); break;
5850              case 7: jj_3_8(); break;
5851              case 8: jj_3_9(); break;
5852              case 9: jj_3_10(); break;
5853              case 10: jj_3_11(); break;
5854              case 11: jj_3_12(); break;
5855              case 12: jj_3_13(); break;
5856              case 13: jj_3_14(); break;
5857              case 14: jj_3_15(); break;
5858              case 15: jj_3_16(); break;
5859              case 16: jj_3_17(); break;
5860              case 17: jj_3_18(); break;
5861              case 18: jj_3_19(); break;
5862              case 19: jj_3_20(); break;
5863              case 20: jj_3_21(); break;
5864              case 21: jj_3_22(); break;
5865              case 22: jj_3_23(); break;
5866              case 23: jj_3_24(); break;
5867              case 24: jj_3_25(); break;
5868              case 25: jj_3_26(); break;
5869              case 26: jj_3_27(); break;
5870              case 27: jj_3_28(); break;
5871              case 28: jj_3_29(); break;
5872              case 29: jj_3_30(); break;
5873            }
5874          }
5875          p = p.next;
5876        } while (p != null);
5877
5878        } catch(LookaheadSuccess ls) { }
5879    }
5880    jj_rescan = false;
5881  }
5882
5883  private void jj_save(int index, int xla) {
5884    JJCalls p = jj_2_rtns[index];
5885    while (p.gen > jj_gen) {
5886      if (p.next == null) { p = p.next = new JJCalls(); break; }
5887      p = p.next;
5888    }
5889
5890    p.gen = jj_gen + xla - jj_la; 
5891    p.first = token;
5892    p.arg = xla;
5893  }
5894
5895  static final class JJCalls {
5896    int gen;
5897    Token first;
5898    int arg;
5899    JJCalls next;
5900  }
5901
5902}