
//----------------------------------------------------
// The following code was generated by CUP v0.10f
// Wed Feb 25 15:37:53 CST 2004
//----------------------------------------------------


public class TPPParser extends java_cup.runtime.lr_parser {

  /** constructor */
  public TPPParser() {super();}

  /** production table */
  protected static final short _production_table[][] = {
        {0, 2},     {1, 8},     {1, 10},     {2, 2},     {2, 0}, 
        {3, 2},     {3, 1},     {4, 4},     {4, 3},     {5, 3}, 
        {5, 1},     {6, 4},     {6, 3},     {7, 3},     {7, 1}, 
        {8, 3},     {8, 1},     {9, 2},     {9, 2},     {9, 1}, 
        {9, 1},     {10, 1}  };

  /** access to production table */
  public short[][] production_table() {return _production_table;}

  /** parse action table */
  protected static final short[][] _action_table = {
    /*0*/{9,2,-1,0},
    /*1*/{13,5,-1,0},
    /*2*/{0,4,-1,0},
    /*3*/{0,-1,-1,0},
    /*4*/{6,-22,11,-22,-1,0},
    /*5*/{6,8,11,7,-1,0},
    /*6*/{13,5,-1,0},
    /*7*/{12,-5,13,9,-1,0},
    /*8*/{3,34,-1,0},
    /*9*/{12,15,13,13,-1,0},
    /*10*/{12,-5,13,9,-1,0},
    /*11*/{12,-4,13,-4,-1,0},
    /*12*/{2,-20,4,-20,5,-20,6,-20,12,15,13,13,-1,0},
    /*13*/{4,23,-1,0},
    /*14*/{2,-21,4,-21,5,-21,6,-21,12,15,13,13,-1,0},
    /*15*/{10,-7,12,15,13,13,-1,0},
    /*16*/{10,18,-1,0},
    /*17*/{9,19,-1,0},
    /*18*/{6,20,-1,0},
    /*19*/{0,-2,-1,0},
    /*20*/{10,-6,-1,0},
    /*21*/{2,-19,4,-19,5,-19,6,-19,-1,0},
    /*22*/{6,27,12,15,13,13,-1,0},
    /*23*/{2,-17,5,31,6,-17,-1,0},
    /*24*/{2,29,6,-15,-1,0},
    /*25*/{6,28,-1,0},
    /*26*/{10,-13,12,-13,13,-13,-1,0},
    /*27*/{10,-12,12,-12,13,-12,-1,0},
    /*28*/{12,15,13,13,-1,0},
    /*29*/{6,-14,-1,0},
    /*30*/{12,15,13,13,-1,0},
    /*31*/{2,-16,6,-16,-1,0},
    /*32*/{2,-18,4,-18,5,-18,6,-18,-1,0},
    /*33*/{6,37,12,15,13,13,-1,0},
    /*34*/{2,39,6,-11,-1,0},
    /*35*/{6,38,-1,0},
    /*36*/{12,-9,13,-9,-1,0},
    /*37*/{12,-8,13,-8,-1,0},
    /*38*/{12,15,13,13,-1,0},
    /*39*/{6,-10,-1,0},
    /*40*/{6,42,-1,0},
    /*41*/{12,-5,13,9,-1,0},
    /*42*/{12,15,13,13,-1,0},
    /*43*/{10,45,-1,0},
    /*44*/{9,46,-1,0},
    /*45*/{6,47,-1,0},
    /*46*/{0,-3,-1,0},
  };

  /** access to parse action table */
  public short[][] action_table() {return _action_table;}

  /** reduce_goto table */
  protected static final short[][] _reduce_table = {
    /*0*/{1,2,-1,-1},
    /*1*/{10,5,-1,-1},
    /*2*/{-1,-1},
    /*3*/{-1,-1},
    /*4*/{-1,-1},
    /*5*/{-1,-1},
    /*6*/{10,40,-1,-1},
    /*7*/{2,9,4,10,-1,-1},
    /*8*/{-1,-1},
    /*9*/{3,16,6,15,9,13,-1,-1},
    /*10*/{2,11,4,10,-1,-1},
    /*11*/{-1,-1},
    /*12*/{9,32,-1,-1},
    /*13*/{-1,-1},
    /*14*/{9,21,-1,-1},
    /*15*/{3,20,6,15,9,13,-1,-1},
    /*16*/{-1,-1},
    /*17*/{-1,-1},
    /*18*/{-1,-1},
    /*19*/{-1,-1},
    /*20*/{-1,-1},
    /*21*/{-1,-1},
    /*22*/{7,25,8,24,9,23,-1,-1},
    /*23*/{-1,-1},
    /*24*/{-1,-1},
    /*25*/{-1,-1},
    /*26*/{-1,-1},
    /*27*/{-1,-1},
    /*28*/{7,29,8,24,9,23,-1,-1},
    /*29*/{-1,-1},
    /*30*/{8,31,9,23,-1,-1},
    /*31*/{-1,-1},
    /*32*/{-1,-1},
    /*33*/{5,35,9,34,-1,-1},
    /*34*/{-1,-1},
    /*35*/{-1,-1},
    /*36*/{-1,-1},
    /*37*/{-1,-1},
    /*38*/{5,39,9,34,-1,-1},
    /*39*/{-1,-1},
    /*40*/{-1,-1},
    /*41*/{2,42,4,10,-1,-1},
    /*42*/{3,43,6,15,9,13,-1,-1},
    /*43*/{-1,-1},
    /*44*/{-1,-1},
    /*45*/{-1,-1},
    /*46*/{-1,-1},
  };

  /** access to reduce_goto table */
  public short[][] reduce_table() {return _reduce_table;}

  /** instance of action encapsulation class */
  protected CUP$actions action_obj;

  /** action encapsulation object initializer */
  protected void init_actions()
    {
      action_obj = new CUP$actions();
    }

  /** invoke a user supplied parse action */
  public java_cup.runtime.Symbol do_action(
    int                        act_num,
    java_cup.runtime.lr_parser parser,
    java.util.Stack            stack,
    int                        top)
    throws java.lang.Exception
  {
    /* call code in generated class */
    return action_obj.CUP$do_action(act_num, parser, stack, top);
  }

  /** start state */
  public int start_state() {return 0;}
  /** start production */
  public int start_production() {return 0;}

  /** EOF Symbol index */
  public int EOF_sym() {return 0;}

  /** error Symbol index */
  public int error_sym() {return 1;}


  /** scan to get the next Symbol */
  public java_cup.runtime.Symbol scan()
    throws java.lang.Exception
    {
 return lexer . nextToken (); 
    }


  Yylex lexer;

  // Error handling function.
  public void report_fatal_error (String message, Object info) {
    done_parsing ();
    System . out . println (message);
    System . exit (1);
  }

  // This constructor assumes that the parser is named TPPParser.
  public TPPParser (Yylex l) {
    this ();
    lexer = l;
  }

}

/** Cup generated class to encapsulate user supplied action code.*/
class CUP$actions {

  /** Constructor */
  CUP$actions() { }

  /** Method with the actual generated action code. */
  public final java_cup.runtime.Symbol CUP$do_action(
    int                        CUP$act_num,
    java_cup.runtime.lr_parser CUP$parser,
    java.util.Stack            CUP$stack,
    int                        CUP$top)
    throws java.lang.Exception
    {
      /* Symbol object for return from actions */
      java_cup.runtime.Symbol CUP$result;

      /* select the action based on the action number */
      switch (CUP$act_num)
        {
          /*. . . . . . . . . . . . . . . . . . . .*/
          case 21: // class_identifier ::= METANOTION 
            {
              SyntaxTree RESULT = null;
		int metaleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int metaright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		String meta = (String)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		 RESULT=new SyntaxTree(meta); 
              CUP$result = new java_cup.runtime.Symbol(10/*class_identifier*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 20: // hypernotion ::= PROTONOTION 
            {
              SyntaxTree RESULT = null;
		int proleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int proright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		String pro = (String)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		 RESULT=new SyntaxTree(pro); 
	System.out.println("protonotion"); 
              CUP$result = new java_cup.runtime.Symbol(9/*hypernotion*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 19: // hypernotion ::= METANOTION 
            {
              SyntaxTree RESULT = null;
		int metaleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int metaright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		String meta = (String)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		 RESULT=new SyntaxTree(meta); 
	System.out.println("metanotion"); 
              CUP$result = new java_cup.runtime.Symbol(9/*hypernotion*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 18: // hypernotion ::= PROTONOTION hypernotion 
            {
              SyntaxTree RESULT = null;
		int proleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left;
		int proright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).right;
		String pro = (String)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-1)).value;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		 RESULT=new SyntaxTree("hypernotion", new SyntaxTree(pro), hyper);
	System.out.println("protonotion hypernotion"); 
              CUP$result = new java_cup.runtime.Symbol(9/*hypernotion*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 17: // hypernotion ::= METANOTION hypernotion 
            {
              SyntaxTree RESULT = null;
		int metaleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left;
		int metaright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).right;
		String meta = (String)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-1)).value;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		 RESULT=new SyntaxTree("hypernotion", new SyntaxTree(meta), hyper);
	System.out.println("metanotion hypernotion"); 
              CUP$result = new java_cup.runtime.Symbol(9/*hypernotion*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 16: // alternative ::= hypernotion 
            {
              SyntaxTree RESULT = null;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		 RESULT =new SyntaxTree("hypernotion", hyper); 
	System.out.println("in alternative-hypernotion"); 
              CUP$result = new java_cup.runtime.Symbol(8/*alternative*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // alternative ::= hypernotion COMMA alternative 
            {
              SyntaxTree RESULT = null;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-2)).value;
		int altleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int altright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree alt = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		 RESULT =new SyntaxTree(",", hyper, alt);
	System.out.println("in alternative");
              CUP$result = new java_cup.runtime.Symbol(8/*alternative*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 14: // hyper_alternatives ::= alternative 
            {
              SyntaxTree RESULT = null;
		int alternativeleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int alternativeright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree alternative = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		RESULT =alternative; 
	System.out.println("in hyper-rule-empty"); 
              CUP$result = new java_cup.runtime.Symbol(7/*hyper_alternatives*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // hyper_alternatives ::= alternative SEMICOLON hyper_alternatives 
            {
              SyntaxTree RESULT = null;
		int alternativeleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left;
		int alternativeright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).right;
		SyntaxTree alternative = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-2)).value;
		int alternativesleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int alternativesright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree alternatives = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		RESULT =new SyntaxTree(";", alternative ,alternatives);
	System.out.println("in hyper-alternatives-non-empty");
              CUP$result = new java_cup.runtime.Symbol(7/*hyper_alternatives*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 12: // hyper_rule ::= hypernotion COLON DOT 
            {
              SyntaxTree RESULT = null;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-2)).value;
		RESULT =new SyntaxTree(":", hyper); 
              CUP$result = new java_cup.runtime.Symbol(6/*hyper_rule*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // hyper_rule ::= hypernotion COLON hyper_alternatives DOT 
            {
              SyntaxTree RESULT = null;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-3)).value;
		int alternativesleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left;
		int alternativesright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).right;
		SyntaxTree alternatives = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-1)).value;
		RESULT =new SyntaxTree(":", hyper, alternatives);
	System.out.println("in hyper rule"); 
              CUP$result = new java_cup.runtime.Symbol(6/*hyper_rule*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 10: // meta_alternatives ::= hypernotion 
            {
              SyntaxTree RESULT = null;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		RESULT = hyper; 
	System.out.println("in meta-alternatives-empty");
              CUP$result = new java_cup.runtime.Symbol(5/*meta_alternatives*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // meta_alternatives ::= hypernotion SEMICOLON meta_alternatives 
            {
              SyntaxTree RESULT = null;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-2)).value;
		int alternativesleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int alternativesright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree alternatives = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		RESULT =new SyntaxTree (";", hyper, alternatives); 
	System.out.println("in meta-alternatives-non-empty");
              CUP$result = new java_cup.runtime.Symbol(5/*meta_alternatives*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 8: // meta_rule ::= METANOTION DOUCOLON DOT 
            {
              SyntaxTree RESULT = null;
		int metaleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left;
		int metaright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).right;
		String meta = (String)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-2)).value;
		 RESULT =new SyntaxTree("::", new SyntaxTree(meta)); 
              CUP$result = new java_cup.runtime.Symbol(4/*meta_rule*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-2)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // meta_rule ::= METANOTION DOUCOLON meta_alternatives DOT 
            {
              SyntaxTree RESULT = null;
		int metaleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).left;
		int metaright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).right;
		String meta = (String)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-3)).value;
		int alternativesleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left;
		int alternativesright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).right;
		SyntaxTree alternatives = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-1)).value;
		RESULT =new SyntaxTree("::", new SyntaxTree(meta), alternatives); 
	System.out.println("in meta-rule");
              CUP$result = new java_cup.runtime.Symbol(4/*meta_rule*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // hyper_rules ::= hyper_rule 
            {
              SyntaxTree RESULT = null;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		RESULT =new SyntaxTree ("hyper_rule", hyper);
	System.out.println("in hyper-rules-emppty");
              CUP$result = new java_cup.runtime.Symbol(3/*hyper_rules*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 5: // hyper_rules ::= hyper_rule hyper_rules 
            {
              SyntaxTree RESULT = null;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-1)).value;
		int hypersleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int hypersright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree hypers = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		RESULT =new SyntaxTree ("hyper_rules", hyper, hypers); 
	System.out.println("in hyper-rules-non-empty");
              CUP$result = new java_cup.runtime.Symbol(3/*hyper_rules*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 4: // meta_rules ::= 
            {
              SyntaxTree RESULT = null;
		RESULT =null;
	System.out.println("in meta-rules-empty");
              CUP$result = new java_cup.runtime.Symbol(2/*meta_rules*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // meta_rules ::= meta_rule meta_rules 
            {
              SyntaxTree RESULT = null;
		int metaleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left;
		int metaright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).right;
		SyntaxTree meta = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-1)).value;
		int metasleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).left;
		int metasright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right;
		SyntaxTree metas = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-0)).value;
		RESULT =new SyntaxTree ("meta_rules", meta, metas);
	System.out.println("in meta-rules-non-empty");
              CUP$result = new java_cup.runtime.Symbol(2/*meta_rules*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // class_definition ::= CLASS class_identifier EXTENDS class_identifier DOT meta_rules hyper_rules END CLASS DOT 
            {
              SyntaxTree RESULT = null;
		int id1left = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-8)).left;
		int id1right = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-8)).right;
		SyntaxTree id1 = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-8)).value;
		int id2left = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-6)).left;
		int id2right = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-6)).right;
		SyntaxTree id2 = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-6)).value;
		int metaleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-4)).left;
		int metaright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-4)).right;
		SyntaxTree meta = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-4)).value;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-3)).value;
		 RESULT =new SyntaxTree("class" + id1.root(), id2, meta, hyper); 
              CUP$result = new java_cup.runtime.Symbol(1/*class_definition*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-9)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 1: // class_definition ::= CLASS class_identifier DOT meta_rules hyper_rules END CLASS DOT 
            {
              SyntaxTree RESULT = null;
		int idleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-6)).left;
		int idright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-6)).right;
		SyntaxTree id = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-6)).value;
		int metaleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-4)).left;
		int metaright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-4)).right;
		SyntaxTree meta = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-4)).value;
		int hyperleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).left;
		int hyperright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-3)).right;
		SyntaxTree hyper = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-3)).value;
		 RESULT =new SyntaxTree("class "+ id.root() , meta, hyper);
	System.out.println("in class-definition");
              CUP$result = new java_cup.runtime.Symbol(1/*class_definition*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-7)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          return CUP$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 0: // $START ::= class_definition EOF 
            {
              Object RESULT = null;
		int start_valleft = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left;
		int start_valright = ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).right;
		SyntaxTree start_val = (SyntaxTree)((java_cup.runtime.Symbol) CUP$stack.elementAt(CUP$top-1)).value;
		RESULT = start_val;
              CUP$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-1)).left, ((java_cup.runtime.Symbol)CUP$stack.elementAt(CUP$top-0)).right, RESULT);
            }
          /* ACCEPT */
          CUP$parser.done_parsing();
          return CUP$result;

          /* . . . . . .*/
          default:
            throw new Exception(
               "Invalid action number found in internal parse table");

        }
    }
}


