All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.objectweb.fractal.mind.adl.jtb.Parser Maven / Gradle / Ivy

The newest version!
/* Generated By:JavaCC: Do not edit this line. Parser.java */
package org.objectweb.fractal.mind.adl.jtb;

import org.objectweb.fractal.mind.adl.jtb.syntaxtree.*;
import java.util.Vector;


public class Parser implements ParserConstants {

  final public ADLFile ADLFile() throws ParseException {
   NodeListOptional n0 = new NodeListOptional();
   ImportDefinition n1;
   ArchitectureDefinition n2;
   NodeToken n3;
   Token n4;
    label_1:
    while (true) {
      if (jj_2_1(2147483647)) {
        ;
      } else {
        break label_1;
      }
      n1 = ImportDefinition();
        n0.addNode(n1);
    }
     n0.nodes.trimToSize();
    n2 = ArchitectureDefinition();
    n4 = jj_consume_token(0);
      n4.beginColumn++; n4.endColumn++;
      n3 = JTBToolkit.makeNodeToken(n4);
     {if (true) return new ADLFile(n0,n2,n3);}
    throw new Error("Missing return statement in function");
  }

  final public ImportDefinition ImportDefinition() throws ParseException {
   NodeListOptional n0 = new NodeListOptional();
   Annotation n1;
   NodeToken n2;
   Token n3;
   NodeToken n4;
   Token n5;
   NodeToken n6;
   Token n7;
   NodeListOptional n8 = new NodeListOptional();
   NodeSequence n9;
   NodeToken n10;
   Token n11;
   NodeToken n12;
   Token n13;
   NodeChoice n14;
   NodeToken n15;
   Token n16;
   NodeToken n17;
   Token n18;
   NodeOptional n19 = new NodeOptional();
   NodeToken n20;
   Token n21;
    label_2:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AT:
        ;
        break;
      default:
        jj_la1[0] = jj_gen;
        break label_2;
      }
      n1 = Annotation();
        n0.addNode(n1);
    }
     n0.nodes.trimToSize();
    n3 = jj_consume_token(IMPORT);
                 n2 = JTBToolkit.makeNodeToken(n3);
    n5 = jj_consume_token(IDENTIFIER);
                     n4 = JTBToolkit.makeNodeToken(n5);
    n7 = jj_consume_token(DOT);
              n6 = JTBToolkit.makeNodeToken(n7);
    label_3:
    while (true) {
      if (jj_2_2(2)) {
        ;
      } else {
        break label_3;
      }
        n9 = new NodeSequence(2);
      n11 = jj_consume_token(IDENTIFIER);
                         n10 = JTBToolkit.makeNodeToken(n11);
        n9.addNode(n10);
      n13 = jj_consume_token(DOT);
                  n12 = JTBToolkit.makeNodeToken(n13);
        n9.addNode(n12);
        n8.addNode(n9);
    }
     n8.nodes.trimToSize();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case START:
      n16 = jj_consume_token(START);
                       n15 = JTBToolkit.makeNodeToken(n16);
           n14 = new NodeChoice(n15, 0);
      break;
    case IDENTIFIER:
      n18 = jj_consume_token(IDENTIFIER);
                            n17 = JTBToolkit.makeNodeToken(n18);
           n14 = new NodeChoice(n17, 1);
      break;
    default:
      jj_la1[1] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEMICOLON:
      n21 = jj_consume_token(SEMICOLON);
                        n20 = JTBToolkit.makeNodeToken(n21);
        n19.addNode(n20);
      break;
    default:
      jj_la1[2] = jj_gen;
      ;
    }
     {if (true) return new ImportDefinition(n0,n2,n4,n6,n8,n14,n19);}
    throw new Error("Missing return statement in function");
  }

  final public ArchitectureDefinition ArchitectureDefinition() throws ParseException {
   NodeChoice n0;
   TypeDefinition n1;
   PrimitiveDefinition n2;
   CompositeDefinition n3;
    if (jj_2_3(2147483647)) {
      n1 = TypeDefinition();
           n0 = new NodeChoice(n1, 0);
    } else if (jj_2_4(2147483647)) {
      n2 = PrimitiveDefinition();
           n0 = new NodeChoice(n2, 1);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMPOSITE:
      case AT:
        n3 = CompositeDefinition();
           n0 = new NodeChoice(n3, 2);
        break;
      default:
        jj_la1[3] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
     {if (true) return new ArchitectureDefinition(n0);}
    throw new Error("Missing return statement in function");
  }

  final public TypeDefinition TypeDefinition() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   FullyQualifiedName n3;
   NodeOptional n4 = new NodeOptional();
   ExtendedTypeDefinitions n5;
   TypeDefinitionBody n6;
    n0 = Annotations();
    n2 = jj_consume_token(TYPE);
               n1 = JTBToolkit.makeNodeToken(n2);
    n3 = FullyQualifiedName();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTENDS:
      n5 = ExtendedTypeDefinitions();
        n4.addNode(n5);
      break;
    default:
      jj_la1[4] = jj_gen;
      ;
    }
    n6 = TypeDefinitionBody();
     {if (true) return new TypeDefinition(n0,n1,n3,n4,n6);}
    throw new Error("Missing return statement in function");
  }

  final public ExtendedTypeDefinitions ExtendedTypeDefinitions() throws ParseException {
   NodeToken n0;
   Token n1;
   TypeDefinitionReference n2;
   NodeListOptional n3 = new NodeListOptional();
   NodeSequence n4;
   NodeToken n5;
   Token n6;
   TypeDefinitionReference n7;
    n1 = jj_consume_token(EXTENDS);
                  n0 = JTBToolkit.makeNodeToken(n1);
    n2 = TypeDefinitionReference();
    label_4:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[5] = jj_gen;
        break label_4;
      }
        n4 = new NodeSequence(2);
      n6 = jj_consume_token(COMMA);
                   n5 = JTBToolkit.makeNodeToken(n6);
        n4.addNode(n5);
      n7 = TypeDefinitionReference();
        n4.addNode(n7);
        n3.addNode(n4);
    }
     n3.nodes.trimToSize();
     {if (true) return new ExtendedTypeDefinitions(n0,n2,n3);}
    throw new Error("Missing return statement in function");
  }

  final public TypeDefinitionReference TypeDefinitionReference() throws ParseException {
   FullyQualifiedName n0;
    n0 = FullyQualifiedName();
     {if (true) return new TypeDefinitionReference(n0);}
    throw new Error("Missing return statement in function");
  }

  final public TypeDefinitionBody TypeDefinitionBody() throws ParseException {
   NodeChoice n0;
   NodeSequence n1;
   NodeToken n2;
   Token n3;
   NodeListOptional n4 = new NodeListOptional();
   TypeDefinitionElement n5;
   NodeToken n6;
   Token n7;
   NodeListOptional n8 = new NodeListOptional();
   TypeDefinitionElement n9;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LBRACE:
        n1 = new NodeSequence(3);
      n3 = jj_consume_token(LBRACE);
                    n2 = JTBToolkit.makeNodeToken(n3);
        n1.addNode(n2);
      label_5:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PROVIDES:
        case REQUIRES:
        case AT:
          ;
          break;
        default:
          jj_la1[6] = jj_gen;
          break label_5;
        }
        n5 = TypeDefinitionElement();
           n4.addNode(n5);
      }
        n4.nodes.trimToSize();
        n1.addNode(n4);
      n7 = jj_consume_token(RBRACE);
                    n6 = JTBToolkit.makeNodeToken(n7);
        n1.addNode(n6);
        n0 = new NodeChoice(n1, 0);
      break;
    default:
      jj_la1[8] = jj_gen;
      label_6:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PROVIDES:
        case REQUIRES:
        case AT:
          ;
          break;
        default:
          jj_la1[7] = jj_gen;
          break label_6;
        }
        n9 = TypeDefinitionElement();
           n8.addNode(n9);
      }
        n8.nodes.trimToSize();
        n0 = new NodeChoice(n8, 1);
    }
     {if (true) return new TypeDefinitionBody(n0);}
    throw new Error("Missing return statement in function");
  }

  final public TypeDefinitionElement TypeDefinitionElement() throws ParseException {
   InterfaceDefinition n0;
    n0 = InterfaceDefinition();
     {if (true) return new TypeDefinitionElement(n0);}
    throw new Error("Missing return statement in function");
  }

  final public PrimitiveDefinition PrimitiveDefinition() throws ParseException {
   Annotations n0;
   NodeOptional n1 = new NodeOptional();
   NodeToken n2;
   Token n3;
   NodeToken n4;
   Token n5;
   FullyQualifiedName n6;
   NodeOptional n7 = new NodeOptional();
   FormalParameterDeclarationList n8;
   NodeOptional n9 = new NodeOptional();
   ExtendedPrimitiveDefinitions n10;
   PrimitiveDefinitionBody n11;
    n0 = Annotations();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ABSTRACT:
      n3 = jj_consume_token(ABSTRACT);
                      n2 = JTBToolkit.makeNodeToken(n3);
        n1.addNode(n2);
      break;
    default:
      jj_la1[9] = jj_gen;
      ;
    }
    n5 = jj_consume_token(PRIMITIVE);
                    n4 = JTBToolkit.makeNodeToken(n5);
    n6 = FullyQualifiedName();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LPAREN:
      n8 = FormalParameterDeclarationList();
        n7.addNode(n8);
      break;
    default:
      jj_la1[10] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTENDS:
      n10 = ExtendedPrimitiveDefinitions();
        n9.addNode(n10);
      break;
    default:
      jj_la1[11] = jj_gen;
      ;
    }
    n11 = PrimitiveDefinitionBody();
     {if (true) return new PrimitiveDefinition(n0,n1,n4,n6,n7,n9,n11);}
    throw new Error("Missing return statement in function");
  }

  final public FormalParameterDeclarationList FormalParameterDeclarationList() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeOptional n2 = new NodeOptional();
   NodeSequence n3;
   FormalParameterDeclaration n4;
   NodeListOptional n5;
   NodeSequence n6;
   NodeToken n7;
   Token n8;
   FormalParameterDeclaration n9;
   NodeToken n10;
   Token n11;
    n1 = jj_consume_token(LPAREN);
                 n0 = JTBToolkit.makeNodeToken(n1);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
        n5 = new NodeListOptional();
        n3 = new NodeSequence(2);
      n4 = FormalParameterDeclaration();
        n3.addNode(n4);
      label_7:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[12] = jj_gen;
          break label_7;
        }
           n6 = new NodeSequence(2);
        n8 = jj_consume_token(COMMA);
                      n7 = JTBToolkit.makeNodeToken(n8);
           n6.addNode(n7);
        n9 = FormalParameterDeclaration();
           n6.addNode(n9);
           n5.addNode(n6);
      }
        n5.nodes.trimToSize();
        n3.addNode(n5);
        n2.addNode(n3);
      break;
    default:
      jj_la1[13] = jj_gen;
      ;
    }
    n11 = jj_consume_token(RPAREN);
                  n10 = JTBToolkit.makeNodeToken(n11);
     {if (true) return new FormalParameterDeclarationList(n0,n2,n10);}
    throw new Error("Missing return statement in function");
  }

  final public FormalParameterDeclaration FormalParameterDeclaration() throws ParseException {
   NodeToken n0;
   Token n1;
    n1 = jj_consume_token(IDENTIFIER);
                     n0 = JTBToolkit.makeNodeToken(n1);
     {if (true) return new FormalParameterDeclaration(n0);}
    throw new Error("Missing return statement in function");
  }

  final public ExtendedPrimitiveDefinitions ExtendedPrimitiveDefinitions() throws ParseException {
   NodeToken n0;
   Token n1;
   PrimitiveDefinitionReference n2;
   NodeListOptional n3 = new NodeListOptional();
   NodeSequence n4;
   NodeToken n5;
   Token n6;
   PrimitiveDefinitionReference n7;
    n1 = jj_consume_token(EXTENDS);
                  n0 = JTBToolkit.makeNodeToken(n1);
    n2 = PrimitiveDefinitionReference();
    label_8:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[14] = jj_gen;
        break label_8;
      }
        n4 = new NodeSequence(2);
      n6 = jj_consume_token(COMMA);
                   n5 = JTBToolkit.makeNodeToken(n6);
        n4.addNode(n5);
      n7 = PrimitiveDefinitionReference();
        n4.addNode(n7);
        n3.addNode(n4);
    }
     n3.nodes.trimToSize();
     {if (true) return new ExtendedPrimitiveDefinitions(n0,n2,n3);}
    throw new Error("Missing return statement in function");
  }

  final public PrimitiveDefinitionReference PrimitiveDefinitionReference() throws ParseException {
   FullyQualifiedName n0;
   NodeOptional n1 = new NodeOptional();
   ArgumentList n2;
    n0 = FullyQualifiedName();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LPAREN:
      n2 = ArgumentList();
        n1.addNode(n2);
      break;
    default:
      jj_la1[15] = jj_gen;
      ;
    }
     {if (true) return new PrimitiveDefinitionReference(n0,n1);}
    throw new Error("Missing return statement in function");
  }

  final public ArgumentList ArgumentList() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeOptional n2 = new NodeOptional();
   NodeChoice n3;
   NodeSequence n4;
   Argument n5;
   NodeListOptional n6;
   NodeSequence n7;
   NodeToken n8;
   Token n9;
   Argument n10;
   NodeSequence n11;
   ArgumentAssignement n12;
   NodeListOptional n13;
   NodeSequence n14;
   NodeToken n15;
   Token n16;
   ArgumentAssignement n17;
   NodeToken n18;
   Token n19;
    n1 = jj_consume_token(LPAREN);
                 n0 = JTBToolkit.makeNodeToken(n1);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
    case STRING_LITERAL:
    case INTEGER_LITERAL:
    case MINUS:
    case PLUS:
        n6 = new NodeListOptional();
        n13 = new NodeListOptional();
      if (jj_2_5(2)) {
           n4 = new NodeSequence(3);
        n5 = Argument();
           n4.addNode(n5);
        label_9:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[16] = jj_gen;
            break label_9;
          }
              n7 = new NodeSequence(2);
          n9 = jj_consume_token(COMMA);
                         n8 = JTBToolkit.makeNodeToken(n9);
              n7.addNode(n8);
          n10 = Argument();
              n7.addNode(n10);
              n6.addNode(n7);
        }
           n6.nodes.trimToSize();
           n4.addNode(n6);
           n3 = new NodeChoice(n4, 0);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case IDENTIFIER:
           n11 = new NodeSequence(2);
          n12 = ArgumentAssignement();
           n11.addNode(n12);
          label_10:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[17] = jj_gen;
              break label_10;
            }
              n14 = new NodeSequence(2);
            n16 = jj_consume_token(COMMA);
                          n15 = JTBToolkit.makeNodeToken(n16);
              n14.addNode(n15);
            n17 = ArgumentAssignement();
              n14.addNode(n17);
              n13.addNode(n14);
          }
           n13.nodes.trimToSize();
           n11.addNode(n13);
           n3 = new NodeChoice(n11, 1);
          break;
        default:
          jj_la1[18] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
        n2.addNode(n3);
      break;
    default:
      jj_la1[19] = jj_gen;
      ;
    }
    n19 = jj_consume_token(RPAREN);
                  n18 = JTBToolkit.makeNodeToken(n19);
     {if (true) return new ArgumentList(n0,n2,n18);}
    throw new Error("Missing return statement in function");
  }

  final public ArgumentAssignement ArgumentAssignement() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeToken n2;
   Token n3;
   Argument n4;
    n1 = jj_consume_token(IDENTIFIER);
                     n0 = JTBToolkit.makeNodeToken(n1);
    n3 = jj_consume_token(ASSIGN);
                 n2 = JTBToolkit.makeNodeToken(n3);
    n4 = Argument();
     {if (true) return new ArgumentAssignement(n0,n2,n4);}
    throw new Error("Missing return statement in function");
  }

  final public Argument Argument() throws ParseException {
   NodeChoice n0;
   StringValue n1;
   IntegerValue n2;
   ReferenceValue n3;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case STRING_LITERAL:
      n1 = StringValue();
        n0 = new NodeChoice(n1, 0);
      break;
    case INTEGER_LITERAL:
    case MINUS:
    case PLUS:
      n2 = IntegerValue();
        n0 = new NodeChoice(n2, 1);
      break;
    case IDENTIFIER:
      n3 = ReferenceValue();
        n0 = new NodeChoice(n3, 2);
      break;
    default:
      jj_la1[20] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
     {if (true) return new Argument(n0);}
    throw new Error("Missing return statement in function");
  }

  final public PrimitiveDefinitionBody PrimitiveDefinitionBody() throws ParseException {
   NodeChoice n0;
   NodeSequence n1;
   NodeToken n2;
   Token n3;
   NodeListOptional n4 = new NodeListOptional();
   PrimitiveDefinitionElement n5;
   NodeToken n6;
   Token n7;
   NodeListOptional n8 = new NodeListOptional();
   PrimitiveDefinitionElement n9;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LBRACE:
        n1 = new NodeSequence(3);
      n3 = jj_consume_token(LBRACE);
                    n2 = JTBToolkit.makeNodeToken(n3);
        n1.addNode(n2);
      label_11:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case ATTRIBUTE:
        case DATA:
        case NODATA:
        case PROVIDES:
        case REQUIRES:
        case SOURCE:
        case AT:
          ;
          break;
        default:
          jj_la1[21] = jj_gen;
          break label_11;
        }
        n5 = PrimitiveDefinitionElement();
           n4.addNode(n5);
      }
        n4.nodes.trimToSize();
        n1.addNode(n4);
      n7 = jj_consume_token(RBRACE);
                    n6 = JTBToolkit.makeNodeToken(n7);
        n1.addNode(n6);
        n0 = new NodeChoice(n1, 0);
      break;
    default:
      jj_la1[23] = jj_gen;
      label_12:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case ATTRIBUTE:
        case DATA:
        case NODATA:
        case PROVIDES:
        case REQUIRES:
        case SOURCE:
        case AT:
          ;
          break;
        default:
          jj_la1[22] = jj_gen;
          break label_12;
        }
        n9 = PrimitiveDefinitionElement();
           n8.addNode(n9);
      }
        n8.nodes.trimToSize();
        n0 = new NodeChoice(n8, 1);
    }
     {if (true) return new PrimitiveDefinitionBody(n0);}
    throw new Error("Missing return statement in function");
  }

  final public PrimitiveDefinitionElement PrimitiveDefinitionElement() throws ParseException {
   NodeChoice n0;
   InterfaceDefinition n1;
   AttributeDefinition n2;
   DataDefinition n3;
   ImplementationDefinition n4;
    if (jj_2_6(2147483647)) {
      n1 = InterfaceDefinition();
        n0 = new NodeChoice(n1, 0);
    } else if (jj_2_7(2147483647)) {
      n2 = AttributeDefinition();
        n0 = new NodeChoice(n2, 1);
    } else if (jj_2_8(2147483647)) {
      n3 = DataDefinition();
        n0 = new NodeChoice(n3, 2);
    } else if (jj_2_9(2147483647)) {
      n4 = ImplementationDefinition();
        n0 = new NodeChoice(n4, 3);
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
     {if (true) return new PrimitiveDefinitionElement(n0);}
    throw new Error("Missing return statement in function");
  }

  final public CompositeDefinition CompositeDefinition() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   FullyQualifiedName n3;
   NodeOptional n4 = new NodeOptional();
   FormalTypeParameterDeclarationList n5;
   NodeOptional n6 = new NodeOptional();
   FormalParameterDeclarationList n7;
   NodeOptional n8 = new NodeOptional();
   ExtendedCompositeDefinitions n9;
   CompositeDefinitionBody n10;
    n0 = Annotations();
    n2 = jj_consume_token(COMPOSITE);
                    n1 = JTBToolkit.makeNodeToken(n2);
    n3 = FullyQualifiedName();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LT:
      n5 = FormalTypeParameterDeclarationList();
        n4.addNode(n5);
      break;
    default:
      jj_la1[24] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LPAREN:
      n7 = FormalParameterDeclarationList();
        n6.addNode(n7);
      break;
    default:
      jj_la1[25] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTENDS:
      n9 = ExtendedCompositeDefinitions();
        n8.addNode(n9);
      break;
    default:
      jj_la1[26] = jj_gen;
      ;
    }
    n10 = CompositeDefinitionBody();
     {if (true) return new CompositeDefinition(n0,n1,n3,n4,n6,n8,n10);}
    throw new Error("Missing return statement in function");
  }

  final public FormalTypeParameterDeclarationList FormalTypeParameterDeclarationList() throws ParseException {
   NodeToken n0;
   Token n1;
   FormalTypeParameterDeclaration n2;
   NodeListOptional n3 = new NodeListOptional();
   NodeSequence n4;
   NodeToken n5;
   Token n6;
   FormalTypeParameterDeclaration n7;
   NodeToken n8;
   Token n9;
    n1 = jj_consume_token(LT);
             n0 = JTBToolkit.makeNodeToken(n1);
    n2 = FormalTypeParameterDeclaration();
    label_13:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[27] = jj_gen;
        break label_13;
      }
        n4 = new NodeSequence(2);
      n6 = jj_consume_token(COMMA);
                   n5 = JTBToolkit.makeNodeToken(n6);
        n4.addNode(n5);
      n7 = FormalTypeParameterDeclaration();
        n4.addNode(n7);
        n3.addNode(n4);
    }
     n3.nodes.trimToSize();
    n9 = jj_consume_token(GT);
             n8 = JTBToolkit.makeNodeToken(n9);
     {if (true) return new FormalTypeParameterDeclarationList(n0,n2,n3,n8);}
    throw new Error("Missing return statement in function");
  }

  final public FormalTypeParameterDeclaration FormalTypeParameterDeclaration() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeToken n2;
   Token n3;
   TypeDefinitionReference n4;
    n1 = jj_consume_token(IDENTIFIER);
                     n0 = JTBToolkit.makeNodeToken(n1);
    n3 = jj_consume_token(CONFORMSTO);
                     n2 = JTBToolkit.makeNodeToken(n3);
    n4 = TypeDefinitionReference();
     {if (true) return new FormalTypeParameterDeclaration(n0,n2,n4);}
    throw new Error("Missing return statement in function");
  }

  final public CompositeDefinitionReference CompositeDefinitionReference() throws ParseException {
   FullyQualifiedName n0;
   NodeOptional n1 = new NodeOptional();
   TypeArgumentList n2;
   NodeOptional n3 = new NodeOptional();
   ArgumentList n4;
    n0 = FullyQualifiedName();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LT:
      n2 = TypeArgumentList();
        n1.addNode(n2);
      break;
    default:
      jj_la1[28] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LPAREN:
      n4 = ArgumentList();
        n3.addNode(n4);
      break;
    default:
      jj_la1[29] = jj_gen;
      ;
    }
     {if (true) return new CompositeDefinitionReference(n0,n1,n3);}
    throw new Error("Missing return statement in function");
  }

  final public TypeArgumentList TypeArgumentList() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeOptional n2 = new NodeOptional();
   NodeChoice n3;
   NodeSequence n4;
   TypeArgument n5;
   NodeListOptional n6;
   NodeSequence n7;
   NodeToken n8;
   Token n9;
   TypeArgument n10;
   NodeSequence n11;
   TypeArgumentAssignement n12;
   NodeListOptional n13;
   NodeSequence n14;
   NodeToken n15;
   Token n16;
   TypeArgumentAssignement n17;
   NodeToken n18;
   Token n19;
    n1 = jj_consume_token(LT);
             n0 = JTBToolkit.makeNodeToken(n1);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
    case ANY:
        n6 = new NodeListOptional();
        n13 = new NodeListOptional();
      if (jj_2_10(2)) {
           n4 = new NodeSequence(3);
        n5 = TypeArgument();
           n4.addNode(n5);
        label_14:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[30] = jj_gen;
            break label_14;
          }
              n7 = new NodeSequence(2);
          n9 = jj_consume_token(COMMA);
                         n8 = JTBToolkit.makeNodeToken(n9);
              n7.addNode(n8);
          n10 = TypeArgument();
              n7.addNode(n10);
              n6.addNode(n7);
        }
           n6.nodes.trimToSize();
           n4.addNode(n6);
           n3 = new NodeChoice(n4, 0);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case IDENTIFIER:
           n11 = new NodeSequence(2);
          n12 = TypeArgumentAssignement();
           n11.addNode(n12);
          label_15:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[31] = jj_gen;
              break label_15;
            }
              n14 = new NodeSequence(2);
            n16 = jj_consume_token(COMMA);
                          n15 = JTBToolkit.makeNodeToken(n16);
              n14.addNode(n15);
            n17 = TypeArgumentAssignement();
              n14.addNode(n17);
              n13.addNode(n14);
          }
           n13.nodes.trimToSize();
           n11.addNode(n13);
           n3 = new NodeChoice(n11, 1);
          break;
        default:
          jj_la1[32] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
        n2.addNode(n3);
      break;
    default:
      jj_la1[33] = jj_gen;
      ;
    }
    n19 = jj_consume_token(GT);
              n18 = JTBToolkit.makeNodeToken(n19);
     {if (true) return new TypeArgumentList(n0,n2,n18);}
    throw new Error("Missing return statement in function");
  }

  final public TypeArgumentAssignement TypeArgumentAssignement() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeToken n2;
   Token n3;
   TypeArgument n4;
    n1 = jj_consume_token(IDENTIFIER);
                     n0 = JTBToolkit.makeNodeToken(n1);
    n3 = jj_consume_token(ASSIGN);
                 n2 = JTBToolkit.makeNodeToken(n3);
    n4 = TypeArgument();
     {if (true) return new TypeArgumentAssignement(n0,n2,n4);}
    throw new Error("Missing return statement in function");
  }

  final public TypeArgument TypeArgument() throws ParseException {
   NodeChoice n0;
   CompositeDefinitionReference n1;
   NodeToken n2;
   Token n3;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      n1 = CompositeDefinitionReference();
        n0 = new NodeChoice(n1, 0);
      break;
    case ANY:
      n3 = jj_consume_token(ANY);
                 n2 = JTBToolkit.makeNodeToken(n3);
        n0 = new NodeChoice(n2, 1);
      break;
    default:
      jj_la1[34] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
     {if (true) return new TypeArgument(n0);}
    throw new Error("Missing return statement in function");
  }

  final public ExtendedCompositeDefinitions ExtendedCompositeDefinitions() throws ParseException {
   NodeToken n0;
   Token n1;
   CompositeDefinitionReference n2;
   NodeListOptional n3 = new NodeListOptional();
   NodeSequence n4;
   NodeToken n5;
   Token n6;
   CompositeDefinitionReference n7;
    n1 = jj_consume_token(EXTENDS);
                  n0 = JTBToolkit.makeNodeToken(n1);
    n2 = CompositeDefinitionReference();
    label_16:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[35] = jj_gen;
        break label_16;
      }
        n4 = new NodeSequence(2);
      n6 = jj_consume_token(COMMA);
                   n5 = JTBToolkit.makeNodeToken(n6);
        n4.addNode(n5);
      n7 = CompositeDefinitionReference();
        n4.addNode(n7);
        n3.addNode(n4);
    }
     n3.nodes.trimToSize();
     {if (true) return new ExtendedCompositeDefinitions(n0,n2,n3);}
    throw new Error("Missing return statement in function");
  }

  final public CompositeDefinitionBody CompositeDefinitionBody() throws ParseException {
   NodeChoice n0;
   NodeSequence n1;
   NodeToken n2;
   Token n3;
   NodeListOptional n4 = new NodeListOptional();
   CompositeDefinitionElement n5;
   NodeToken n6;
   Token n7;
   NodeListOptional n8 = new NodeListOptional();
   CompositeDefinitionElement n9;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LBRACE:
        n1 = new NodeSequence(3);
      n3 = jj_consume_token(LBRACE);
                    n2 = JTBToolkit.makeNodeToken(n3);
        n1.addNode(n2);
      label_17:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case BINDS:
        case CONTAINS:
        case PROVIDES:
        case REQUIRES:
        case AT:
          ;
          break;
        default:
          jj_la1[36] = jj_gen;
          break label_17;
        }
        n5 = CompositeDefinitionElement();
           n4.addNode(n5);
      }
        n4.nodes.trimToSize();
        n1.addNode(n4);
      n7 = jj_consume_token(RBRACE);
                    n6 = JTBToolkit.makeNodeToken(n7);
        n1.addNode(n6);
        n0 = new NodeChoice(n1, 0);
      break;
    default:
      jj_la1[38] = jj_gen;
      label_18:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case BINDS:
        case CONTAINS:
        case PROVIDES:
        case REQUIRES:
        case AT:
          ;
          break;
        default:
          jj_la1[37] = jj_gen;
          break label_18;
        }
        n9 = CompositeDefinitionElement();
           n8.addNode(n9);
      }
        n8.nodes.trimToSize();
        n0 = new NodeChoice(n8, 1);
    }
     {if (true) return new CompositeDefinitionBody(n0);}
    throw new Error("Missing return statement in function");
  }

  final public CompositeDefinitionElement CompositeDefinitionElement() throws ParseException {
   NodeChoice n0;
   InterfaceDefinition n1;
   BindingDefinition n2;
   SubComponentDefinition n3;
    if (jj_2_11(2147483647)) {
      n1 = InterfaceDefinition();
        n0 = new NodeChoice(n1, 0);
    } else if (jj_2_12(2147483647)) {
      n2 = BindingDefinition();
        n0 = new NodeChoice(n2, 1);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CONTAINS:
      case AT:
        n3 = SubComponentDefinition();
        n0 = new NodeChoice(n3, 2);
        break;
      default:
        jj_la1[39] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
     {if (true) return new CompositeDefinitionElement(n0);}
    throw new Error("Missing return statement in function");
  }

  final public InterfaceDefinition InterfaceDefinition() throws ParseException {
   Annotations n0;
   NodeChoice n1;
   NodeToken n2;
   Token n3;
   NodeToken n4;
   Token n5;
   NodeOptional n6 = new NodeOptional();
   NodeToken n7;
   Token n8;
   FullyQualifiedName n9;
   NodeToken n10;
   Token n11;
   NodeToken n12;
   Token n13;
   NodeOptional n14 = new NodeOptional();
   NodeSequence n15;
   NodeToken n16;
   Token n17;
   NodeOptional n18;
   NodeToken n19;
   Token n20;
   NodeToken n21;
   Token n22;
   NodeOptional n23 = new NodeOptional();
   NodeToken n24;
   Token n25;
    n0 = Annotations();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PROVIDES:
      n3 = jj_consume_token(PROVIDES);
                         n2 = JTBToolkit.makeNodeToken(n3);
           n1 = new NodeChoice(n2, 0);
      break;
    case REQUIRES:
      n5 = jj_consume_token(REQUIRES);
                         n4 = JTBToolkit.makeNodeToken(n5);
           n1 = new NodeChoice(n4, 1);
      break;
    default:
      jj_la1[40] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case OPTIONAL:
      n8 = jj_consume_token(OPTIONAL);
                      n7 = JTBToolkit.makeNodeToken(n8);
        n6.addNode(n7);
      break;
    default:
      jj_la1[41] = jj_gen;
      ;
    }
    n9 = FullyQualifiedName();
    n11 = jj_consume_token(AS);
              n10 = JTBToolkit.makeNodeToken(n11);
    n13 = jj_consume_token(IDENTIFIER);
                      n12 = JTBToolkit.makeNodeToken(n13);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LBRACKET:
        n18 = new NodeOptional();
        n15 = new NodeSequence(3);
      n17 = jj_consume_token(LBRACKET);
                       n16 = JTBToolkit.makeNodeToken(n17);
        n15.addNode(n16);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
        n20 = jj_consume_token(INTEGER_LITERAL);
                                 n19 = JTBToolkit.makeNodeToken(n20);
           n18.addNode(n19);
        break;
      default:
        jj_la1[42] = jj_gen;
        ;
      }
        n15.addNode(n18);
      n22 = jj_consume_token(RBRACKET);
                       n21 = JTBToolkit.makeNodeToken(n22);
        n15.addNode(n21);
        n14.addNode(n15);
      break;
    default:
      jj_la1[43] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEMICOLON:
      n25 = jj_consume_token(SEMICOLON);
                        n24 = JTBToolkit.makeNodeToken(n25);
        n23.addNode(n24);
      break;
    default:
      jj_la1[44] = jj_gen;
      ;
    }
     {if (true) return new InterfaceDefinition(n0,n1,n6,n9,n10,n12,n14,n23);}
    throw new Error("Missing return statement in function");
  }

  final public AttributeDefinition AttributeDefinition() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   NodeOptional n3 = new NodeOptional();
   AttributeType n4;
   NodeToken n5;
   Token n6;
   NodeOptional n7 = new NodeOptional();
   NodeSequence n8;
   NodeToken n9;
   Token n10;
   AttributeValue n11;
   NodeOptional n12 = new NodeOptional();
   NodeToken n13;
   Token n14;
    n0 = Annotations();
    n2 = jj_consume_token(ATTRIBUTE);
                    n1 = JTBToolkit.makeNodeToken(n2);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INT:
    case STRING:
    case INT8_T:
    case UINT8_T:
    case INT16_T:
    case UINT16_T:
    case INT32_T:
    case UINT32_T:
    case INT64_T:
    case UINT64_T:
    case INTPTR_T:
    case UINTPTR_T:
      n4 = AttributeType();
        n3.addNode(n4);
      break;
    default:
      jj_la1[45] = jj_gen;
      ;
    }
    n6 = jj_consume_token(IDENTIFIER);
                     n5 = JTBToolkit.makeNodeToken(n6);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ASSIGN:
        n8 = new NodeSequence(2);
      n10 = jj_consume_token(ASSIGN);
                     n9 = JTBToolkit.makeNodeToken(n10);
        n8.addNode(n9);
      n11 = AttributeValue();
        n8.addNode(n11);
        n7.addNode(n8);
      break;
    default:
      jj_la1[46] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEMICOLON:
      n14 = jj_consume_token(SEMICOLON);
                        n13 = JTBToolkit.makeNodeToken(n14);
        n12.addNode(n13);
      break;
    default:
      jj_la1[47] = jj_gen;
      ;
    }
     {if (true) return new AttributeDefinition(n0,n1,n3,n5,n7,n12);}
    throw new Error("Missing return statement in function");
  }

  final public AttributeType AttributeType() throws ParseException {
   NodeChoice n0;
   NodeToken n1;
   Token n2;
   NodeToken n3;
   Token n4;
   NodeToken n5;
   Token n6;
   NodeToken n7;
   Token n8;
   NodeToken n9;
   Token n10;
   NodeToken n11;
   Token n12;
   NodeToken n13;
   Token n14;
   NodeToken n15;
   Token n16;
   NodeToken n17;
   Token n18;
   NodeToken n19;
   Token n20;
   NodeToken n21;
   Token n22;
   NodeToken n23;
   Token n24;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INT:
      n2 = jj_consume_token(INT);
                 n1 = JTBToolkit.makeNodeToken(n2);
        n0 = new NodeChoice(n1, 0);
      break;
    case STRING:
      n4 = jj_consume_token(STRING);
                    n3 = JTBToolkit.makeNodeToken(n4);
        n0 = new NodeChoice(n3, 1);
      break;
    case INT8_T:
      n6 = jj_consume_token(INT8_T);
                    n5 = JTBToolkit.makeNodeToken(n6);
        n0 = new NodeChoice(n5, 2);
      break;
    case UINT8_T:
      n8 = jj_consume_token(UINT8_T);
                     n7 = JTBToolkit.makeNodeToken(n8);
        n0 = new NodeChoice(n7, 3);
      break;
    case INT16_T:
      n10 = jj_consume_token(INT16_T);
                      n9 = JTBToolkit.makeNodeToken(n10);
        n0 = new NodeChoice(n9, 4);
      break;
    case UINT16_T:
      n12 = jj_consume_token(UINT16_T);
                       n11 = JTBToolkit.makeNodeToken(n12);
        n0 = new NodeChoice(n11, 5);
      break;
    case INT32_T:
      n14 = jj_consume_token(INT32_T);
                      n13 = JTBToolkit.makeNodeToken(n14);
        n0 = new NodeChoice(n13, 6);
      break;
    case UINT32_T:
      n16 = jj_consume_token(UINT32_T);
                       n15 = JTBToolkit.makeNodeToken(n16);
        n0 = new NodeChoice(n15, 7);
      break;
    case INT64_T:
      n18 = jj_consume_token(INT64_T);
                      n17 = JTBToolkit.makeNodeToken(n18);
        n0 = new NodeChoice(n17, 8);
      break;
    case UINT64_T:
      n20 = jj_consume_token(UINT64_T);
                       n19 = JTBToolkit.makeNodeToken(n20);
        n0 = new NodeChoice(n19, 9);
      break;
    case INTPTR_T:
      n22 = jj_consume_token(INTPTR_T);
                       n21 = JTBToolkit.makeNodeToken(n22);
        n0 = new NodeChoice(n21, 10);
      break;
    case UINTPTR_T:
      n24 = jj_consume_token(UINTPTR_T);
                        n23 = JTBToolkit.makeNodeToken(n24);
        n0 = new NodeChoice(n23, 11);
      break;
    default:
      jj_la1[48] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
     {if (true) return new AttributeType(n0);}
    throw new Error("Missing return statement in function");
  }

  final public AttributeValue AttributeValue() throws ParseException {
   NodeChoice n0;
   StringValue n1;
   IntegerValue n2;
   ReferenceValue n3;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case STRING_LITERAL:
      n1 = StringValue();
        n0 = new NodeChoice(n1, 0);
      break;
    case INTEGER_LITERAL:
    case MINUS:
    case PLUS:
      n2 = IntegerValue();
        n0 = new NodeChoice(n2, 1);
      break;
    case IDENTIFIER:
      n3 = ReferenceValue();
        n0 = new NodeChoice(n3, 2);
      break;
    default:
      jj_la1[49] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
     {if (true) return new AttributeValue(n0);}
    throw new Error("Missing return statement in function");
  }

  final public DataDefinition DataDefinition() throws ParseException {
   Annotations n0;
   NodeChoice n1;
   DataFileDefinition n2;
   NoDataDefinition n3;
   NodeOptional n4 = new NodeOptional();
   NodeToken n5;
   Token n6;
    n0 = Annotations();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DATA:
      n2 = DataFileDefinition();
           n1 = new NodeChoice(n2, 0);
      break;
    case NODATA:
      n3 = NoDataDefinition();
           n1 = new NodeChoice(n3, 1);
      break;
    default:
      jj_la1[50] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEMICOLON:
      n6 = jj_consume_token(SEMICOLON);
                       n5 = JTBToolkit.makeNodeToken(n6);
        n4.addNode(n5);
      break;
    default:
      jj_la1[51] = jj_gen;
      ;
    }
     {if (true) return new DataDefinition(n0,n1,n4);}
    throw new Error("Missing return statement in function");
  }

  final public DataFileDefinition DataFileDefinition() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeChoice n2;
   Path n3;
   NodeToken n4;
   Token n5;
    n1 = jj_consume_token(DATA);
               n0 = JTBToolkit.makeNodeToken(n1);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
    case DOT:
    case DOTDOT:
      n3 = Path();
           n2 = new NodeChoice(n3, 0);
      break;
    case INLINED_CODE:
      n5 = jj_consume_token(INLINED_CODE);
                             n4 = JTBToolkit.makeNodeToken(n5);
           n2 = new NodeChoice(n4, 1);
      break;
    default:
      jj_la1[52] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
     {if (true) return new DataFileDefinition(n0,n2);}
    throw new Error("Missing return statement in function");
  }

  final public NoDataDefinition NoDataDefinition() throws ParseException {
   NodeToken n0;
   Token n1;
    n1 = jj_consume_token(NODATA);
                 n0 = JTBToolkit.makeNodeToken(n1);
     {if (true) return new NoDataDefinition(n0);}
    throw new Error("Missing return statement in function");
  }

  final public ImplementationDefinition ImplementationDefinition() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   NodeChoice n3;
   Path n4;
   NodeToken n5;
   Token n6;
   NodeOptional n7 = new NodeOptional();
   NodeToken n8;
   Token n9;
    n0 = Annotations();
    n2 = jj_consume_token(SOURCE);
                 n1 = JTBToolkit.makeNodeToken(n2);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
    case DOT:
    case DOTDOT:
      n4 = Path();
           n3 = new NodeChoice(n4, 0);
      break;
    case INLINED_CODE:
      n6 = jj_consume_token(INLINED_CODE);
                             n5 = JTBToolkit.makeNodeToken(n6);
           n3 = new NodeChoice(n5, 1);
      break;
    default:
      jj_la1[53] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEMICOLON:
      n9 = jj_consume_token(SEMICOLON);
                       n8 = JTBToolkit.makeNodeToken(n9);
        n7.addNode(n8);
      break;
    default:
      jj_la1[54] = jj_gen;
      ;
    }
     {if (true) return new ImplementationDefinition(n0,n1,n3,n7);}
    throw new Error("Missing return statement in function");
  }

  final public BindingDefinition BindingDefinition() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   BindingComponentName n3;
   NodeToken n4;
   Token n5;
   NodeToken n6;
   Token n7;
   NodeOptional n8 = new NodeOptional();
   NodeSequence n9;
   NodeToken n10;
   Token n11;
   NodeToken n12;
   Token n13;
   NodeToken n14;
   Token n15;
   NodeToken n16;
   Token n17;
   BindingComponentName n18;
   NodeToken n19;
   Token n20;
   NodeToken n21;
   Token n22;
   NodeOptional n23 = new NodeOptional();
   NodeSequence n24;
   NodeToken n25;
   Token n26;
   NodeToken n27;
   Token n28;
   NodeToken n29;
   Token n30;
   NodeOptional n31 = new NodeOptional();
   NodeToken n32;
   Token n33;
    n0 = Annotations();
    n2 = jj_consume_token(BINDS);
                n1 = JTBToolkit.makeNodeToken(n2);
    n3 = BindingComponentName();
    n5 = jj_consume_token(DOT);
              n4 = JTBToolkit.makeNodeToken(n5);
    n7 = jj_consume_token(IDENTIFIER);
                     n6 = JTBToolkit.makeNodeToken(n7);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LBRACKET:
        n9 = new NodeSequence(3);
      n11 = jj_consume_token(LBRACKET);
                       n10 = JTBToolkit.makeNodeToken(n11);
        n9.addNode(n10);
      n13 = jj_consume_token(INTEGER_LITERAL);
                              n12 = JTBToolkit.makeNodeToken(n13);
        n9.addNode(n12);
      n15 = jj_consume_token(RBRACKET);
                       n14 = JTBToolkit.makeNodeToken(n15);
        n9.addNode(n14);
        n8.addNode(n9);
      break;
    default:
      jj_la1[55] = jj_gen;
      ;
    }
    n17 = jj_consume_token(TO);
              n16 = JTBToolkit.makeNodeToken(n17);
    n18 = BindingComponentName();
    n20 = jj_consume_token(DOT);
               n19 = JTBToolkit.makeNodeToken(n20);
    n22 = jj_consume_token(IDENTIFIER);
                      n21 = JTBToolkit.makeNodeToken(n22);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LBRACKET:
        n24 = new NodeSequence(3);
      n26 = jj_consume_token(LBRACKET);
                       n25 = JTBToolkit.makeNodeToken(n26);
        n24.addNode(n25);
      n28 = jj_consume_token(INTEGER_LITERAL);
                              n27 = JTBToolkit.makeNodeToken(n28);
        n24.addNode(n27);
      n30 = jj_consume_token(RBRACKET);
                       n29 = JTBToolkit.makeNodeToken(n30);
        n24.addNode(n29);
        n23.addNode(n24);
      break;
    default:
      jj_la1[56] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEMICOLON:
      n33 = jj_consume_token(SEMICOLON);
                        n32 = JTBToolkit.makeNodeToken(n33);
        n31.addNode(n32);
      break;
    default:
      jj_la1[57] = jj_gen;
      ;
    }
     {if (true) return new BindingDefinition(n0,n1,n3,n4,n6,n8,n16,n18,n19,n21,n23,n31);}
    throw new Error("Missing return statement in function");
  }

  final public BindingComponentName BindingComponentName() throws ParseException {
   NodeChoice n0;
   NodeToken n1;
   Token n2;
   NodeToken n3;
   Token n4;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      n2 = jj_consume_token(IDENTIFIER);
                        n1 = JTBToolkit.makeNodeToken(n2);
        n0 = new NodeChoice(n1, 0);
      break;
    case THIS:
      n4 = jj_consume_token(THIS);
                  n3 = JTBToolkit.makeNodeToken(n4);
        n0 = new NodeChoice(n3, 1);
      break;
    default:
      jj_la1[58] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
     {if (true) return new BindingComponentName(n0);}
    throw new Error("Missing return statement in function");
  }

  final public SubComponentDefinition SubComponentDefinition() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   SubComponentReference n3;
   NodeOptional n4 = new NodeOptional();
   NodeToken n5;
   Token n6;
    n0 = Annotations();
    n2 = jj_consume_token(CONTAINS);
                   n1 = JTBToolkit.makeNodeToken(n2);
    n3 = SubComponentReference();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEMICOLON:
      n6 = jj_consume_token(SEMICOLON);
                       n5 = JTBToolkit.makeNodeToken(n6);
        n4.addNode(n5);
      break;
    default:
      jj_la1[59] = jj_gen;
      ;
    }
     {if (true) return new SubComponentDefinition(n0,n1,n3,n4);}
    throw new Error("Missing return statement in function");
  }

  final public SubComponentReference SubComponentReference() throws ParseException {
   NodeChoice n0;
   CompositeSubComponentReference n1;
   CompositeInlinedDefinition n2;
   PrimitiveSubComponentReference n3;
   PrimitiveInlinedDefinition n4;
   SimpleSubComponentReference n5;
    if (jj_2_13(2)) {
      n1 = CompositeSubComponentReference();
        n0 = new NodeChoice(n1, 0);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMPOSITE:
        n2 = CompositeInlinedDefinition();
        n0 = new NodeChoice(n2, 1);
        break;
      default:
        jj_la1[60] = jj_gen;
        if (jj_2_14(2)) {
          n3 = PrimitiveSubComponentReference();
        n0 = new NodeChoice(n3, 2);
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case PRIMITIVE:
            n4 = PrimitiveInlinedDefinition();
        n0 = new NodeChoice(n4, 3);
            break;
          case AS:
          case IDENTIFIER:
            n5 = SimpleSubComponentReference();
        n0 = new NodeChoice(n5, 4);
            break;
          default:
            jj_la1[61] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
    }
     {if (true) return new SubComponentReference(n0);}
    throw new Error("Missing return statement in function");
  }

  final public CompositeSubComponentReference CompositeSubComponentReference() throws ParseException {
   NodeToken n0;
   Token n1;
   CompositeDefinitionReference n2;
   NodeToken n3;
   Token n4;
   NodeToken n5;
   Token n6;
   NodeOptional n7 = new NodeOptional();
   CompositeAnonymousExtension n8;
    n1 = jj_consume_token(COMPOSITE);
                    n0 = JTBToolkit.makeNodeToken(n1);
    n2 = CompositeDefinitionReference();
    n4 = jj_consume_token(AS);
             n3 = JTBToolkit.makeNodeToken(n4);
    n6 = jj_consume_token(IDENTIFIER);
                     n5 = JTBToolkit.makeNodeToken(n6);
    if (jj_2_15(2147483647)) {
      n8 = CompositeAnonymousExtension();
        n7.addNode(n8);
    } else {
      ;
    }
     {if (true) return new CompositeSubComponentReference(n0,n2,n3,n5,n7);}
    throw new Error("Missing return statement in function");
  }

  final public CompositeInlinedDefinition CompositeInlinedDefinition() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeToken n2;
   Token n3;
   NodeToken n4;
   Token n5;
   CompositeAnonymousExtension n6;
    n1 = jj_consume_token(COMPOSITE);
                    n0 = JTBToolkit.makeNodeToken(n1);
    n3 = jj_consume_token(AS);
             n2 = JTBToolkit.makeNodeToken(n3);
    n5 = jj_consume_token(IDENTIFIER);
                     n4 = JTBToolkit.makeNodeToken(n5);
    n6 = CompositeAnonymousExtension();
     {if (true) return new CompositeInlinedDefinition(n0,n2,n4,n6);}
    throw new Error("Missing return statement in function");
  }

  final public PrimitiveSubComponentReference PrimitiveSubComponentReference() throws ParseException {
   NodeToken n0;
   Token n1;
   PrimitiveDefinitionReference n2;
   NodeToken n3;
   Token n4;
   NodeToken n5;
   Token n6;
   NodeOptional n7 = new NodeOptional();
   PrimitiveAnonymousExtension n8;
    n1 = jj_consume_token(PRIMITIVE);
                    n0 = JTBToolkit.makeNodeToken(n1);
    n2 = PrimitiveDefinitionReference();
    n4 = jj_consume_token(AS);
             n3 = JTBToolkit.makeNodeToken(n4);
    n6 = jj_consume_token(IDENTIFIER);
                     n5 = JTBToolkit.makeNodeToken(n6);
    if (jj_2_16(2147483647)) {
      n8 = PrimitiveAnonymousExtension();
        n7.addNode(n8);
    } else {
      ;
    }
     {if (true) return new PrimitiveSubComponentReference(n0,n2,n3,n5,n7);}
    throw new Error("Missing return statement in function");
  }

  final public PrimitiveInlinedDefinition PrimitiveInlinedDefinition() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeToken n2;
   Token n3;
   NodeToken n4;
   Token n5;
   PrimitiveAnonymousExtension n6;
    n1 = jj_consume_token(PRIMITIVE);
                    n0 = JTBToolkit.makeNodeToken(n1);
    n3 = jj_consume_token(AS);
             n2 = JTBToolkit.makeNodeToken(n3);
    n5 = jj_consume_token(IDENTIFIER);
                     n4 = JTBToolkit.makeNodeToken(n5);
    n6 = PrimitiveAnonymousExtension();
     {if (true) return new PrimitiveInlinedDefinition(n0,n2,n4,n6);}
    throw new Error("Missing return statement in function");
  }

  final public SimpleSubComponentReference SimpleSubComponentReference() throws ParseException {
   NodeOptional n0 = new NodeOptional();
   CompositeDefinitionReference n1;
   NodeToken n2;
   Token n3;
   NodeToken n4;
   Token n5;
   NodeOptional n6 = new NodeOptional();
   NodeChoice n7;
   PrimitiveAnonymousDefinition n8;
   CompositeAnonymousDefinition n9;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      n1 = CompositeDefinitionReference();
        n0.addNode(n1);
      break;
    default:
      jj_la1[62] = jj_gen;
      ;
    }
    n3 = jj_consume_token(AS);
             n2 = JTBToolkit.makeNodeToken(n3);
    n5 = jj_consume_token(IDENTIFIER);
                     n4 = JTBToolkit.makeNodeToken(n5);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case COMPOSITE:
    case PRIMITIVE:
    case AT:
      if (jj_2_17(2147483647)) {
        n8 = PrimitiveAnonymousDefinition();
              n7 = new NodeChoice(n8, 0);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMPOSITE:
        case AT:
          n9 = CompositeAnonymousDefinition();
              n7 = new NodeChoice(n9, 1);
          break;
        default:
          jj_la1[63] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
        n6.addNode(n7);
      break;
    default:
      jj_la1[64] = jj_gen;
      ;
    }
     {if (true) return new SimpleSubComponentReference(n0,n2,n4,n6);}
    throw new Error("Missing return statement in function");
  }

  final public PrimitiveAnonymousDefinition PrimitiveAnonymousDefinition() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   NodeToken n3;
   Token n4;
   NodeListOptional n5 = new NodeListOptional();
   PrimitiveDefinitionElement n6;
   NodeToken n7;
   Token n8;
    n0 = Annotations();
    n2 = jj_consume_token(PRIMITIVE);
                    n1 = JTBToolkit.makeNodeToken(n2);
    n4 = jj_consume_token(LBRACE);
                 n3 = JTBToolkit.makeNodeToken(n4);
    label_19:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ATTRIBUTE:
      case DATA:
      case NODATA:
      case PROVIDES:
      case REQUIRES:
      case SOURCE:
      case AT:
        ;
        break;
      default:
        jj_la1[65] = jj_gen;
        break label_19;
      }
      n6 = PrimitiveDefinitionElement();
        n5.addNode(n6);
    }
     n5.nodes.trimToSize();
    n8 = jj_consume_token(RBRACE);
                 n7 = JTBToolkit.makeNodeToken(n8);
     {if (true) return new PrimitiveAnonymousDefinition(n0,n1,n3,n5,n7);}
    throw new Error("Missing return statement in function");
  }

  final public CompositeAnonymousDefinition CompositeAnonymousDefinition() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   NodeToken n3;
   Token n4;
   NodeListOptional n5 = new NodeListOptional();
   CompositeDefinitionElement n6;
   NodeToken n7;
   Token n8;
    n0 = Annotations();
    n2 = jj_consume_token(COMPOSITE);
                    n1 = JTBToolkit.makeNodeToken(n2);
    n4 = jj_consume_token(LBRACE);
                 n3 = JTBToolkit.makeNodeToken(n4);
    label_20:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BINDS:
      case CONTAINS:
      case PROVIDES:
      case REQUIRES:
      case AT:
        ;
        break;
      default:
        jj_la1[66] = jj_gen;
        break label_20;
      }
      n6 = CompositeDefinitionElement();
        n5.addNode(n6);
    }
     n5.nodes.trimToSize();
    n8 = jj_consume_token(RBRACE);
                 n7 = JTBToolkit.makeNodeToken(n8);
     {if (true) return new CompositeAnonymousDefinition(n0,n1,n3,n5,n7);}
    throw new Error("Missing return statement in function");
  }

  final public PrimitiveAnonymousExtension PrimitiveAnonymousExtension() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   NodeListOptional n3 = new NodeListOptional();
   PrimitiveDefinitionElement n4;
   NodeToken n5;
   Token n6;
    n0 = Annotations();
    n2 = jj_consume_token(LBRACE);
                 n1 = JTBToolkit.makeNodeToken(n2);
    label_21:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ATTRIBUTE:
      case DATA:
      case NODATA:
      case PROVIDES:
      case REQUIRES:
      case SOURCE:
      case AT:
        ;
        break;
      default:
        jj_la1[67] = jj_gen;
        break label_21;
      }
      n4 = PrimitiveDefinitionElement();
        n3.addNode(n4);
    }
     n3.nodes.trimToSize();
    n6 = jj_consume_token(RBRACE);
                 n5 = JTBToolkit.makeNodeToken(n6);
     {if (true) return new PrimitiveAnonymousExtension(n0,n1,n3,n5);}
    throw new Error("Missing return statement in function");
  }

  final public CompositeAnonymousExtension CompositeAnonymousExtension() throws ParseException {
   Annotations n0;
   NodeToken n1;
   Token n2;
   NodeListOptional n3 = new NodeListOptional();
   CompositeDefinitionElement n4;
   NodeToken n5;
   Token n6;
    n0 = Annotations();
    n2 = jj_consume_token(LBRACE);
                 n1 = JTBToolkit.makeNodeToken(n2);
    label_22:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BINDS:
      case CONTAINS:
      case PROVIDES:
      case REQUIRES:
      case AT:
        ;
        break;
      default:
        jj_la1[68] = jj_gen;
        break label_22;
      }
      n4 = CompositeDefinitionElement();
        n3.addNode(n4);
    }
     n3.nodes.trimToSize();
    n6 = jj_consume_token(RBRACE);
                 n5 = JTBToolkit.makeNodeToken(n6);
     {if (true) return new CompositeAnonymousExtension(n0,n1,n3,n5);}
    throw new Error("Missing return statement in function");
  }

  final public Annotations Annotations() throws ParseException {
   NodeListOptional n0 = new NodeListOptional();
   Annotation n1;
    label_23:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AT:
        ;
        break;
      default:
        jj_la1[69] = jj_gen;
        break label_23;
      }
      n1 = Annotation();
        n0.addNode(n1);
    }
     n0.nodes.trimToSize();
     {if (true) return new Annotations(n0);}
    throw new Error("Missing return statement in function");
  }

  final public Annotation Annotation() throws ParseException {
   NodeToken n0;
   Token n1;
   FullyQualifiedName n2;
   NodeOptional n3 = new NodeOptional();
   AnnotationParameters n4;
    n1 = jj_consume_token(AT);
             n0 = JTBToolkit.makeNodeToken(n1);
    n2 = FullyQualifiedName();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LPAREN:
      n4 = AnnotationParameters();
        n3.addNode(n4);
      break;
    default:
      jj_la1[70] = jj_gen;
      ;
    }
     {if (true) return new Annotation(n0,n2,n3);}
    throw new Error("Missing return statement in function");
  }

  final public AnnotationParameters AnnotationParameters() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeOptional n2 = new NodeOptional();
   NodeChoice n3;
   AnnotationValuePairs n4;
   AnnotationValue n5;
   NodeToken n6;
   Token n7;
    n1 = jj_consume_token(LPAREN);
                 n0 = JTBToolkit.makeNodeToken(n1);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case BOOLEAN_LITERAL:
    case IDENTIFIER:
    case STRING_LITERAL:
    case INTEGER_LITERAL:
    case LBRACE:
    case AT:
    case MINUS:
    case PLUS:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IDENTIFIER:
        n4 = AnnotationValuePairs();
           n3 = new NodeChoice(n4, 0);
        break;
      case BOOLEAN_LITERAL:
      case STRING_LITERAL:
      case INTEGER_LITERAL:
      case LBRACE:
      case AT:
      case MINUS:
      case PLUS:
        n5 = AnnotationValue();
           n3 = new NodeChoice(n5, 1);
        break;
      default:
        jj_la1[71] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
        n2.addNode(n3);
      break;
    default:
      jj_la1[72] = jj_gen;
      ;
    }
    n7 = jj_consume_token(RPAREN);
                 n6 = JTBToolkit.makeNodeToken(n7);
     {if (true) return new AnnotationParameters(n0,n2,n6);}
    throw new Error("Missing return statement in function");
  }

  final public AnnotationValuePairs AnnotationValuePairs() throws ParseException {
   AnnotationValuePair n0;
   NodeListOptional n1 = new NodeListOptional();
   NodeSequence n2;
   NodeToken n3;
   Token n4;
   AnnotationValuePair n5;
    n0 = AnnotationValuePair();
    label_24:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[73] = jj_gen;
        break label_24;
      }
        n2 = new NodeSequence(2);
      n4 = jj_consume_token(COMMA);
                   n3 = JTBToolkit.makeNodeToken(n4);
        n2.addNode(n3);
      n5 = AnnotationValuePair();
        n2.addNode(n5);
        n1.addNode(n2);
    }
     n1.nodes.trimToSize();
     {if (true) return new AnnotationValuePairs(n0,n1);}
    throw new Error("Missing return statement in function");
  }

  final public AnnotationValuePair AnnotationValuePair() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeToken n2;
   Token n3;
   AnnotationValue n4;
    n1 = jj_consume_token(IDENTIFIER);
                     n0 = JTBToolkit.makeNodeToken(n1);
    n3 = jj_consume_token(ASSIGN);
                 n2 = JTBToolkit.makeNodeToken(n3);
    n4 = AnnotationValue();
     {if (true) return new AnnotationValuePair(n0,n2,n4);}
    throw new Error("Missing return statement in function");
  }

  final public AnnotationValue AnnotationValue() throws ParseException {
   NodeChoice n0;
   StringValue n1;
   IntegerValue n2;
   BooleanValue n3;
   AnnotationAnnotationValue n4;
   ArrayAnnotationValue n5;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case STRING_LITERAL:
      n1 = StringValue();
        n0 = new NodeChoice(n1, 0);
      break;
    case INTEGER_LITERAL:
    case MINUS:
    case PLUS:
      n2 = IntegerValue();
        n0 = new NodeChoice(n2, 1);
      break;
    case BOOLEAN_LITERAL:
      n3 = BooleanValue();
        n0 = new NodeChoice(n3, 2);
      break;
    case AT:
      n4 = AnnotationAnnotationValue();
        n0 = new NodeChoice(n4, 3);
      break;
    case LBRACE:
      n5 = ArrayAnnotationValue();
        n0 = new NodeChoice(n5, 4);
      break;
    default:
      jj_la1[74] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
     {if (true) return new AnnotationValue(n0);}
    throw new Error("Missing return statement in function");
  }

  final public AnnotationAnnotationValue AnnotationAnnotationValue() throws ParseException {
   Annotation n0;
    n0 = Annotation();
     {if (true) return new AnnotationAnnotationValue(n0);}
    throw new Error("Missing return statement in function");
  }

  final public ArrayAnnotationValue ArrayAnnotationValue() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeOptional n2 = new NodeOptional();
   NodeSequence n3;
   AnnotationValue n4;
   NodeListOptional n5;
   NodeSequence n6;
   NodeToken n7;
   Token n8;
   AnnotationValue n9;
   NodeToken n10;
   Token n11;
    n1 = jj_consume_token(LBRACE);
                 n0 = JTBToolkit.makeNodeToken(n1);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case BOOLEAN_LITERAL:
    case STRING_LITERAL:
    case INTEGER_LITERAL:
    case LBRACE:
    case AT:
    case MINUS:
    case PLUS:
        n5 = new NodeListOptional();
        n3 = new NodeSequence(2);
      n4 = AnnotationValue();
        n3.addNode(n4);
      label_25:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[75] = jj_gen;
          break label_25;
        }
           n6 = new NodeSequence(2);
        n8 = jj_consume_token(COMMA);
                      n7 = JTBToolkit.makeNodeToken(n8);
           n6.addNode(n7);
        n9 = AnnotationValue();
           n6.addNode(n9);
           n5.addNode(n6);
      }
        n5.nodes.trimToSize();
        n3.addNode(n5);
        n2.addNode(n3);
      break;
    default:
      jj_la1[76] = jj_gen;
      ;
    }
    n11 = jj_consume_token(RBRACE);
                  n10 = JTBToolkit.makeNodeToken(n11);
     {if (true) return new ArrayAnnotationValue(n0,n2,n10);}
    throw new Error("Missing return statement in function");
  }

  final public StringValue StringValue() throws ParseException {
   NodeToken n0;
   Token n1;
    n1 = jj_consume_token(STRING_LITERAL);
                         n0 = JTBToolkit.makeNodeToken(n1);
     {if (true) return new StringValue(n0);}
    throw new Error("Missing return statement in function");
  }

  final public IntegerValue IntegerValue() throws ParseException {
   NodeOptional n0 = new NodeOptional();
   NodeChoice n1;
   NodeToken n2;
   Token n3;
   NodeToken n4;
   Token n5;
   NodeToken n6;
   Token n7;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case MINUS:
    case PLUS:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        n3 = jj_consume_token(MINUS);
                      n2 = JTBToolkit.makeNodeToken(n3);
           n1 = new NodeChoice(n2, 0);
        break;
      case PLUS:
        n5 = jj_consume_token(PLUS);
                     n4 = JTBToolkit.makeNodeToken(n5);
           n1 = new NodeChoice(n4, 1);
        break;
      default:
        jj_la1[77] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
        n0.addNode(n1);
      break;
    default:
      jj_la1[78] = jj_gen;
      ;
    }
    n7 = jj_consume_token(INTEGER_LITERAL);
                          n6 = JTBToolkit.makeNodeToken(n7);
     {if (true) return new IntegerValue(n0,n6);}
    throw new Error("Missing return statement in function");
  }

  final public BooleanValue BooleanValue() throws ParseException {
   NodeToken n0;
   Token n1;
    n1 = jj_consume_token(BOOLEAN_LITERAL);
                          n0 = JTBToolkit.makeNodeToken(n1);
     {if (true) return new BooleanValue(n0);}
    throw new Error("Missing return statement in function");
  }

  final public ReferenceValue ReferenceValue() throws ParseException {
   NodeToken n0;
   Token n1;
    n1 = jj_consume_token(IDENTIFIER);
                     n0 = JTBToolkit.makeNodeToken(n1);
     {if (true) return new ReferenceValue(n0);}
    throw new Error("Missing return statement in function");
  }

  final public FullyQualifiedName FullyQualifiedName() throws ParseException {
   NodeToken n0;
   Token n1;
   NodeListOptional n2 = new NodeListOptional();
   NodeSequence n3;
   NodeToken n4;
   Token n5;
   NodeToken n6;
   Token n7;
    n1 = jj_consume_token(IDENTIFIER);
                     n0 = JTBToolkit.makeNodeToken(n1);
    label_26:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DOT:
        ;
        break;
      default:
        jj_la1[79] = jj_gen;
        break label_26;
      }
        n3 = new NodeSequence(2);
      n5 = jj_consume_token(DOT);
                 n4 = JTBToolkit.makeNodeToken(n5);
        n3.addNode(n4);
      n7 = jj_consume_token(IDENTIFIER);
                        n6 = JTBToolkit.makeNodeToken(n7);
        n3.addNode(n6);
        n2.addNode(n3);
    }
     n2.nodes.trimToSize();
     {if (true) return new FullyQualifiedName(n0,n2);}
    throw new Error("Missing return statement in function");
  }

  final public Path Path() throws ParseException {
   NodeOptional n0 = new NodeOptional();
   NodeSequence n1;
   NodeToken n2;
   Token n3;
   NodeToken n4;
   Token n5;
   NodeListOptional n6 = new NodeListOptional();
   NodeSequence n7;
   NodeToken n8;
   Token n9;
   NodeToken n10;
   Token n11;
   NodeToken n12;
   Token n13;
   NodeListOptional n14 = new NodeListOptional();
   NodeSequence n15;
   NodeToken n16;
   Token n17;
   NodeToken n18;
   Token n19;
   NodeToken n20;
   Token n21;
   NodeToken n22;
   Token n23;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DOT:
        n1 = new NodeSequence(2);
      n3 = jj_consume_token(DOT);
                 n2 = JTBToolkit.makeNodeToken(n3);
        n1.addNode(n2);
      n5 = jj_consume_token(SLASH);
                   n4 = JTBToolkit.makeNodeToken(n5);
        n1.addNode(n4);
        n0.addNode(n1);
      break;
    default:
      jj_la1[80] = jj_gen;
      ;
    }
    label_27:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DOTDOT:
        ;
        break;
      default:
        jj_la1[81] = jj_gen;
        break label_27;
      }
        n7 = new NodeSequence(2);
      n9 = jj_consume_token(DOTDOT);
                    n8 = JTBToolkit.makeNodeToken(n9);
        n7.addNode(n8);
      n11 = jj_consume_token(SLASH);
                    n10 = JTBToolkit.makeNodeToken(n11);
        n7.addNode(n10);
        n6.addNode(n7);
    }
     n6.nodes.trimToSize();
    n13 = jj_consume_token(IDENTIFIER);
                      n12 = JTBToolkit.makeNodeToken(n13);
    label_28:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SLASH:
        ;
        break;
      default:
        jj_la1[82] = jj_gen;
        break label_28;
      }
        n15 = new NodeSequence(2);
      n17 = jj_consume_token(SLASH);
                    n16 = JTBToolkit.makeNodeToken(n17);
        n15.addNode(n16);
      n19 = jj_consume_token(IDENTIFIER);
                         n18 = JTBToolkit.makeNodeToken(n19);
        n15.addNode(n18);
        n14.addNode(n15);
    }
     n14.nodes.trimToSize();
    n21 = jj_consume_token(DOT);
               n20 = JTBToolkit.makeNodeToken(n21);
    n23 = jj_consume_token(IDENTIFIER);
                      n22 = JTBToolkit.makeNodeToken(n23);
     {if (true) return new Path(n0,n6,n12,n14,n20,n22);}
    throw new Error("Missing return statement in function");
  }

  private boolean jj_2_1(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_1(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(0, xla); }
  }

  private boolean jj_2_2(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_2(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(1, xla); }
  }

  private boolean jj_2_3(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_3(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(2, xla); }
  }

  private boolean jj_2_4(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_4(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(3, xla); }
  }

  private boolean jj_2_5(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_5(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(4, xla); }
  }

  private boolean jj_2_6(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_6(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(5, xla); }
  }

  private boolean jj_2_7(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_7(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(6, xla); }
  }

  private boolean jj_2_8(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_8(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(7, xla); }
  }

  private boolean jj_2_9(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_9(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(8, xla); }
  }

  private boolean jj_2_10(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_10(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(9, xla); }
  }

  private boolean jj_2_11(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_11(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(10, xla); }
  }

  private boolean jj_2_12(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_12(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(11, xla); }
  }

  private boolean jj_2_13(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_13(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(12, xla); }
  }

  private boolean jj_2_14(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_14(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(13, xla); }
  }

  private boolean jj_2_15(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_15(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(14, xla); }
  }

  private boolean jj_2_16(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_16(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(15, xla); }
  }

  private boolean jj_2_17(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_17(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(16, xla); }
  }

  private boolean jj_3R_60() {
    if (jj_scan_token(DOT)) return true;
    if (jj_scan_token(IDENTIFIER)) return true;
    return false;
  }

  private boolean jj_3R_46() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_17() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_46()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(LBRACE)) return true;
    return false;
  }

  private boolean jj_3R_55() {
    if (jj_scan_token(IDENTIFIER)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_60()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_75() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_74()) return true;
    return false;
  }

  private boolean jj_3R_72() {
    if (jj_3R_74()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_75()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_39() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_59() {
    if (jj_scan_token(IDENTIFIER)) return true;
    return false;
  }

  private boolean jj_3_10() {
    if (jj_3R_38()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_39()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_71() {
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3R_70() {
    if (jj_3R_72()) return true;
    return false;
  }

  private boolean jj_3R_65() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_70()) {
    jj_scanpos = xsp;
    if (jj_3R_71()) return true;
    }
    return false;
  }

  private boolean jj_3R_68() {
    if (jj_scan_token(LT)) return true;
    return false;
  }

  private boolean jj_3R_81() {
    if (jj_scan_token(BOOLEAN_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_31() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_4() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_31()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_scan_token(45)) jj_scanpos = xsp;
    if (jj_scan_token(PRIMITIVE)) return true;
    return false;
  }

  private boolean jj_3R_61() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_65()) jj_scanpos = xsp;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_30() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_3() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_30()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(TYPE)) return true;
    return false;
  }

  private boolean jj_3R_41() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_12() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_41()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(BINDS)) return true;
    return false;
  }

  private boolean jj_3R_67() {
    if (jj_scan_token(PLUS)) return true;
    return false;
  }

  private boolean jj_3R_40() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_11() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_40()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_scan_token(60)) {
    jj_scanpos = xsp;
    if (jj_scan_token(61)) return true;
    }
    return false;
  }

  private boolean jj_3R_66() {
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_62() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_66()) {
    jj_scanpos = xsp;
    if (jj_3R_67()) return true;
    }
    return false;
  }

  private boolean jj_3R_56() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_50() {
    if (jj_3R_59()) return true;
    return false;
  }

  private boolean jj_3R_58() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_62()) jj_scanpos = xsp;
    if (jj_scan_token(INTEGER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_45() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3R_49() {
    if (jj_3R_58()) return true;
    return false;
  }

  private boolean jj_3_16() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_45()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(LBRACE)) return true;
    return false;
  }

  private boolean jj_3R_47() {
    if (jj_scan_token(AT)) return true;
    if (jj_3R_55()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_56()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_48() {
    if (jj_3R_57()) return true;
    return false;
  }

  private boolean jj_3R_64() {
    if (jj_3R_69()) return true;
    return false;
  }

  private boolean jj_3R_32() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_48()) {
    jj_scanpos = xsp;
    if (jj_3R_49()) {
    jj_scanpos = xsp;
    if (jj_3R_50()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_63() {
    if (jj_3R_68()) return true;
    return false;
  }

  private boolean jj_3R_53() {
    if (jj_3R_55()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_63()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_64()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_57() {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_43() {
    if (jj_scan_token(PRIMITIVE)) return true;
    if (jj_3R_54()) return true;
    return false;
  }

  private boolean jj_3_2() {
    if (jj_scan_token(IDENTIFIER)) return true;
    if (jj_scan_token(DOT)) return true;
    return false;
  }

  private boolean jj_3R_85() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3R_84() {
    if (jj_3R_73()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_85()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_83() {
    if (jj_scan_token(LBRACE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_84()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACE)) return true;
    return false;
  }

  private boolean jj_3R_44() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_15() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_44()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(LBRACE)) return true;
    return false;
  }

  private boolean jj_3R_33() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3_5() {
    if (jj_3R_32()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_33()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_42() {
    if (jj_scan_token(COMPOSITE)) return true;
    if (jj_3R_53()) return true;
    return false;
  }

  private boolean jj_3R_82() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3R_29() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_1() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_29()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(IMPORT)) return true;
    return false;
  }

  private boolean jj_3R_69() {
    if (jj_scan_token(LPAREN)) return true;
    return false;
  }

  private boolean jj_3R_80() {
    if (jj_3R_83()) return true;
    return false;
  }

  private boolean jj_3R_79() {
    if (jj_3R_82()) return true;
    return false;
  }

  private boolean jj_3R_52() {
    if (jj_scan_token(ANY)) return true;
    return false;
  }

  private boolean jj_3R_78() {
    if (jj_3R_81()) return true;
    return false;
  }

  private boolean jj_3R_51() {
    if (jj_3R_53()) return true;
    return false;
  }

  private boolean jj_3R_77() {
    if (jj_3R_58()) return true;
    return false;
  }

  private boolean jj_3R_76() {
    if (jj_3R_57()) return true;
    return false;
  }

  private boolean jj_3R_38() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_51()) {
    jj_scanpos = xsp;
    if (jj_3R_52()) return true;
    }
    return false;
  }

  private boolean jj_3_14() {
    if (jj_3R_43()) return true;
    return false;
  }

  private boolean jj_3R_73() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_76()) {
    jj_scanpos = xsp;
    if (jj_3R_77()) {
    jj_scanpos = xsp;
    if (jj_3R_78()) {
    jj_scanpos = xsp;
    if (jj_3R_79()) {
    jj_scanpos = xsp;
    if (jj_3R_80()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_13() {
    if (jj_3R_42()) return true;
    return false;
  }

  private boolean jj_3R_37() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_9() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_37()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(SOURCE)) return true;
    return false;
  }

  private boolean jj_3R_36() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3_8() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_36()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_scan_token(52)) {
    jj_scanpos = xsp;
    if (jj_scan_token(56)) return true;
    }
    return false;
  }

  private boolean jj_3R_35() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3R_54() {
    if (jj_3R_55()) return true;
    return false;
  }

  private boolean jj_3_7() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_35()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(ATTRIBUTE)) return true;
    return false;
  }

  private boolean jj_3R_34() {
    if (jj_3R_47()) return true;
    return false;
  }

  private boolean jj_3R_74() {
    if (jj_scan_token(IDENTIFIER)) return true;
    if (jj_scan_token(ASSIGN)) return true;
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3_6() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_34()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_scan_token(60)) {
    jj_scanpos = xsp;
    if (jj_scan_token(61)) return true;
    }
    return false;
  }

  /** Generated Token Manager. */
  public ParserTokenManager token_source;
  JavaCharStream jj_input_stream;
  /** Current token. */
  public Token token;
  /** Next token. */
  public Token jj_nt;
  private int jj_ntk;
  private Token jj_scanpos, jj_lastpos;
  private int jj_la;
  private int jj_gen;
  final private int[] jj_la1 = new int[83];
  static private int[] jj_la1_0;
  static private int[] jj_la1_1;
  static private int[] jj_la1_2;
  static private int[] jj_la1_3;
  static {
      jj_la1_init_0();
      jj_la1_init_1();
      jj_la1_init_2();
      jj_la1_init_3();
   }
   private static void jj_la1_init_0() {
      jj_la1_0 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_1() {
      jj_la1_1 = new int[] {0x0,0x0,0x0,0x20000,0x200000,0x0,0x30000000,0x30000000,0x0,0x2000,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x71108000,0x71108000,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30090000,0x30090000,0x0,0x80000,0x30000000,0x2000000,0x0,0x0,0x0,0x400,0x0,0x0,0x400,0x0,0x1100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x20000,0x4004000,0x0,0x20000,0x4020000,0x71108000,0x30090000,0x71108000,0x30090000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_2() {
      jj_la1_2 = new int[] {0x0,0x4000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x2000000,0x0,0x800000,0x0,0x0,0x4000,0x0,0x800000,0x0,0x0,0x4000,0xa4000,0xa4000,0x0,0x0,0x2000000,0x20000000,0x800000,0x0,0x0,0x20000000,0x800000,0x0,0x0,0x4000,0x4000,0x4000,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0x80000,0x8000000,0x80000000,0x1ffc,0x0,0x80000000,0x1ffc,0xa4000,0x0,0x80000000,0x4000,0x4000,0x80000000,0x8000000,0x8000000,0x80000000,0x4000,0x80000000,0x0,0x4000,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x20a6000,0x20a6000,0x0,0x20a2000,0x0,0x20a2000,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_3() {
      jj_la1_3 = new int[] {0x20,0x10,0x0,0x20,0x0,0x1,0x20,0x20,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x1,0x1,0x0,0x300,0x300,0x20,0x20,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x1,0x0,0x80,0x80,0x1,0x20,0x20,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x300,0x0,0x0,0x406,0x406,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x320,0x320,0x1,0x320,0x1,0x320,0x300,0x300,0x2,0x2,0x4,0x8,};
   }
  final private JJCalls[] jj_2_rtns = new JJCalls[17];
  private boolean jj_rescan = false;
  private int jj_gc = 0;

  /** Constructor with InputStream. */
  public Parser(java.io.InputStream stream) {
     this(stream, null);
  }
  /** Constructor with InputStream and supplied encoding */
  public Parser(java.io.InputStream stream, String encoding) {
    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
    token_source = new ParserTokenManager(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 83; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.InputStream stream) {
     ReInit(stream, null);
  }
  /** Reinitialise. */
  public void ReInit(java.io.InputStream stream, String encoding) {
    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
    token_source.ReInit(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 83; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor. */
  public Parser(java.io.Reader stream) {
    jj_input_stream = new JavaCharStream(stream, 1, 1);
    token_source = new ParserTokenManager(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 83; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.Reader stream) {
    jj_input_stream.ReInit(stream, 1, 1);
    token_source.ReInit(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 83; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor with generated Token Manager. */
  public Parser(ParserTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 83; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(ParserTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 83; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  private Token jj_consume_token(int kind) throws ParseException {
    Token oldToken;
    if ((oldToken = token).next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    if (token.kind == kind) {
      jj_gen++;
      if (++jj_gc > 100) {
        jj_gc = 0;
        for (int i = 0; i < jj_2_rtns.length; i++) {
          JJCalls c = jj_2_rtns[i];
          while (c != null) {
            if (c.gen < jj_gen) c.first = null;
            c = c.next;
          }
        }
      }
      return token;
    }
    token = oldToken;
    jj_kind = kind;
    throw generateParseException();
  }

  static private final class LookaheadSuccess extends java.lang.Error { }
  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
  private boolean jj_scan_token(int kind) {
    if (jj_scanpos == jj_lastpos) {
      jj_la--;
      if (jj_scanpos.next == null) {
        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
      } else {
        jj_lastpos = jj_scanpos = jj_scanpos.next;
      }
    } else {
      jj_scanpos = jj_scanpos.next;
    }
    if (jj_rescan) {
      int i = 0; Token tok = token;
      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
      if (tok != null) jj_add_error_token(kind, i);
    }
    if (jj_scanpos.kind != kind) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
    return false;
  }


/** Get the next Token. */
  final public Token getNextToken() {
    if (token.next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    jj_gen++;
    return token;
  }

/** Get the specific Token. */
  final public Token getToken(int index) {
    Token t = token;
    for (int i = 0; i < index; i++) {
      if (t.next != null) t = t.next;
      else t = t.next = token_source.getNextToken();
    }
    return t;
  }

  private int jj_ntk() {
    if ((jj_nt=token.next) == null)
      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
    else
      return (jj_ntk = jj_nt.kind);
  }

  private java.util.List jj_expentries = new java.util.ArrayList();
  private int[] jj_expentry;
  private int jj_kind = -1;
  private int[] jj_lasttokens = new int[100];
  private int jj_endpos;

  private void jj_add_error_token(int kind, int pos) {
    if (pos >= 100) return;
    if (pos == jj_endpos + 1) {
      jj_lasttokens[jj_endpos++] = kind;
    } else if (jj_endpos != 0) {
      jj_expentry = new int[jj_endpos];
      for (int i = 0; i < jj_endpos; i++) {
        jj_expentry[i] = jj_lasttokens[i];
      }
      jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) {
        int[] oldentry = (int[])(it.next());
        if (oldentry.length == jj_expentry.length) {
          for (int i = 0; i < jj_expentry.length; i++) {
            if (oldentry[i] != jj_expentry[i]) {
              continue jj_entries_loop;
            }
          }
          jj_expentries.add(jj_expentry);
          break jj_entries_loop;
        }
      }
      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
    }
  }

  /** Generate ParseException. */
  public ParseException generateParseException() {
    jj_expentries.clear();
    boolean[] la1tokens = new boolean[107];
    if (jj_kind >= 0) {
      la1tokens[jj_kind] = true;
      jj_kind = -1;
    }
    for (int i = 0; i < 83; i++) {
      if (jj_la1[i] == jj_gen) {
        for (int j = 0; j < 32; j++) {
          if ((jj_la1_0[i] & (1< jj_gen) {
          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
          switch (i) {
            case 0: jj_3_1(); break;
            case 1: jj_3_2(); break;
            case 2: jj_3_3(); break;
            case 3: jj_3_4(); break;
            case 4: jj_3_5(); break;
            case 5: jj_3_6(); break;
            case 6: jj_3_7(); break;
            case 7: jj_3_8(); break;
            case 8: jj_3_9(); break;
            case 9: jj_3_10(); break;
            case 10: jj_3_11(); break;
            case 11: jj_3_12(); break;
            case 12: jj_3_13(); break;
            case 13: jj_3_14(); break;
            case 14: jj_3_15(); break;
            case 15: jj_3_16(); break;
            case 16: jj_3_17(); break;
          }
        }
        p = p.next;
      } while (p != null);
      } catch(LookaheadSuccess ls) { }
    }
    jj_rescan = false;
  }

  private void jj_save(int index, int xla) {
    JJCalls p = jj_2_rtns[index];
    while (p.gen > jj_gen) {
      if (p.next == null) { p = p.next = new JJCalls(); break; }
      p = p.next;
    }
    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
  }

  static final class JJCalls {
    int gen;
    Token first;
    int arg;
    JJCalls next;
  }

}

class JTBToolkit {
   static NodeToken makeNodeToken(Token t) {
      NodeToken node = new NodeToken(t.image.intern(), t.kind, t.beginLine, t.beginColumn, t.endLine, t.endColumn);

      if ( t.specialToken == null )
         return node;

      Vector temp = new Vector();
      Token orig = t;

      while ( t.specialToken != null ) {
         t = t.specialToken;
         temp.addElement(new NodeToken(t.image.intern(), t.kind, t.beginLine, t.beginColumn, t.endLine, t.endColumn));
      }

      // Reverse the special token list
      for ( int i = temp.size() - 1; i >= 0; --i )
         node.addSpecial((NodeToken)temp.elementAt(i));

      node.trimSpecials();
      return node;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy