Exemplo n.º 1
0
        public static void imprimirToken(Symbol s)
        {
            Console.Error.Write(tokenEnTexto(s));
            SimboloAbstracto sym = (SimboloAbstracto)s.value; ;

            switch (s.sym)
            {
                case TokenDef.LIT_ENTERO:
                case TokenDef.IDENTIFICADOR:
                    Console.Error.Write(" = " + sym.Texto);
                    break;
                case TokenDef.error:
                case TokenDef.ERROR:
                    Console.Error.Write(" = \"");
                    Console.Error.Write(sym.Texto);
                    Console.Error.Write("\"");
                    break;
            }
            Console.Error.WriteLine("");
        }
Exemplo n.º 2
0
        public static void dumpToken(System.IO.TextWriter str, Symbol s)
        {
            SimboloAbstracto sym = (SimboloAbstracto)s.value;
            str.Write("#" + sym.Linea + ":" + sym.Columna + ": " + tokenEnTexto(s));

            switch (s.sym)
            {
                case TokenDef.LIT_ENTERO:
                case TokenDef.IDENTIFICADOR:
                    str.Write(" = " + sym.Texto);
                    break;
                case TokenDef.error:
                case TokenDef.ERROR:
                    str.Write(" = \"");
                    str.Write(sym.Texto);
                    str.Write("\"");
                    break;
            }
            str.WriteLine("");
        }
Exemplo n.º 3
0
        /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
        /** Read from input to establish our buffer of "parse ahead" lookahead
           *  Symbols.
           */
        protected void read_lookahead()
        {
            /* create the lookahead array */
              lookahead = new Symbol[error_sync_size()];

              /* fill in the array */
              for (int i = 0; i < error_sync_size(); i++)
            {
              lookahead[i] = cur_token;
              cur_token = scan();
            }

              /* start at the beginning */
              lookahead_pos = 0;
        }
Exemplo n.º 4
0
  /** Method with the actual generated action code. */
  public   TUVienna.CS_CUP.Runtime.Symbol CUP_JrpcgenParser_do_action(
    int                        CUP_JrpcgenParser_act_num,
    TUVienna.CS_CUP.Runtime.lr_parser CUP_JrpcgenParser_parser,
    System.Collections.Stack            xstack1,
    int                        CUP_JrpcgenParser_top)
    {
      /* Symbol object for return from actions */
      mStack CUP_JrpcgenParser_stack =new mStack(xstack1);
      TUVienna.CS_CUP.Runtime.Symbol CUP_JrpcgenParser_result;

      /* select the action based on the action number */
      switch (CUP_JrpcgenParser_act_num)
        {
          /*. . . . . . . . . . . . . . . . . . . .*/
          case 79: // value ::= IDENTIFIER 
            {
              string RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = id; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*value*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 78: // value ::= INTEGER_LITERAL 
            {
              string RESULT = null;
		int litleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int litright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string lit = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = lit; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*value*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 77: // int_types ::= HYPER INT 
            {
              string RESULT = null;
		 RESULT = "long"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*int_types*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 76: // int_types ::= HYPER 
            {
              string RESULT = null;
		 RESULT = "long"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*int_types*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 75: // int_types ::= LONG 
            {
              string RESULT = null;
		 RESULT = "int"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*int_types*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 74: // int_types ::= LONG INT 
            {
              string RESULT = null;
		 RESULT = "int"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*int_types*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 73: // int_types ::= INT 
            {
              string RESULT = null;
		 RESULT = "int"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*int_types*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 72: // int_types ::= CHAR 
            {
              string RESULT = null;
		 RESULT = "byte"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*int_types*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 71: // int_types ::= SHORT 
            {
              string RESULT = null;
		 RESULT = "short"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*int_types*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 70: // int_types ::= SHORT INT 
            {
              string RESULT = null;
		 RESULT = "short"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*int_types*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 69: // declaration ::= VOID 
            {
              JrpcgenDeclaration RESULT = null;
		
                RESULT = new JrpcgenDeclaration(null, "void");
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 68: // declaration ::= type_specifier STAR IDENTIFIER 
            {
              JrpcgenDeclaration RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                RESULT = new JrpcgenDeclaration(
                    id, type, JrpcgenDeclaration.INDIRECTION, null);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 67: // declaration ::= type_specifier IDENTIFIER LANGLE RANGLE 
            {
              JrpcgenDeclaration RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		
                RESULT = new JrpcgenDeclaration(
                    id, type, JrpcgenDeclaration.DYNAMICVECTOR, null);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 66: // declaration ::= type_specifier IDENTIFIER LANGLE value RANGLE 
            {
              JrpcgenDeclaration RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).value;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int sizeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int sizeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string size = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
                RESULT = new JrpcgenDeclaration(
                    id, type, JrpcgenDeclaration.DYNAMICVECTOR, size);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 65: // declaration ::= type_specifier IDENTIFIER LBRACKET value RBRACKET 
            {
              JrpcgenDeclaration RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).value;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int sizeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int sizeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string size = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               RESULT = new JrpcgenDeclaration(
                   id, type, JrpcgenDeclaration.FIXEDVECTOR, size);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 64: // declaration ::= type_specifier IDENTIFIER 
            {
              JrpcgenDeclaration RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               RESULT = new JrpcgenDeclaration(id, type);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 63: // declaration ::= STRING IDENTIFIER LANGLE RANGLE 
            {
              JrpcgenDeclaration RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		
                RESULT = new JrpcgenDeclaration(
                    id, "string", JrpcgenDeclaration.DYNAMICVECTOR, null);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 62: // declaration ::= STRING IDENTIFIER LANGLE value RANGLE 
            {
              JrpcgenDeclaration RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int sizeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int sizeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string size = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
                RESULT = new JrpcgenDeclaration(
                    id, "string", JrpcgenDeclaration.DYNAMICVECTOR, size);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 61: // declaration ::= OPAQUE IDENTIFIER LANGLE RANGLE 
            {
              JrpcgenDeclaration RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		
                // Note: we use the pseudo-type "opaque" here to distinguish
                // real byte arrays from fake byte (char) arrays.
                RESULT = new JrpcgenDeclaration(
                    id, "opaque", JrpcgenDeclaration.DYNAMICVECTOR, null);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 60: // declaration ::= OPAQUE IDENTIFIER LANGLE value RANGLE 
            {
              JrpcgenDeclaration RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int sizeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int sizeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string size = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
                // Note: we use the pseudo-type "opaque" here to distinguish
                // real byte arrays from fake byte (char) arrays.
                RESULT = new JrpcgenDeclaration(
                    id, "opaque", JrpcgenDeclaration.DYNAMICVECTOR, size);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 59: // declaration ::= OPAQUE IDENTIFIER LBRACKET value RBRACKET 
            {
              JrpcgenDeclaration RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int sizeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int sizeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string size = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
                // Note: we use the pseudo-type "opaque" here to distinguish
                // real byte arrays from fake byte (char) arrays.
                RESULT = new JrpcgenDeclaration(
                    id, "opaque", JrpcgenDeclaration.FIXEDVECTOR, size);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 58: // declarations ::= declarations declaration SEMICOLON 
            {
              ArrayList RESULT = null;
		int declsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int declsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		ArrayList decls = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		int declleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int declright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		JrpcgenDeclaration decl = (JrpcgenDeclaration)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               decls.Add(decl);
               RESULT = decls;
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*declarations*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 57: // declarations ::= declaration SEMICOLON 
            {
              ArrayList RESULT = null;
		int declleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int declright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		JrpcgenDeclaration decl = (JrpcgenDeclaration)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               RESULT = new ArrayList();
               RESULT.Add(decl);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*declarations*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 56: // type_specifier ::= UNION IDENTIFIER 
            {
              string RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = id; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 55: // type_specifier ::= STRUCT IDENTIFIER 
            {
              string RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = id; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 54: // type_specifier ::= ENUM IDENTIFIER 
            {
              string RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = id; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 53: // type_specifier ::= QUADRUPLE 
            {
              string RESULT = null;
		 RESULT = "double"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 52: // type_specifier ::= DOUBLE 
            {
              string RESULT = null;
		 RESULT = "double"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 51: // type_specifier ::= FLOAT 
            {
              string RESULT = null;
		 RESULT = "float"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 50: // type_specifier ::= UNSIGNED 
            {
              string RESULT = null;
		 RESULT = "int"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 49: // type_specifier ::= int_types 
            {
              string RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = type; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 48: // type_specifier ::= UNSIGNED int_types 
            {
              string RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = type; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 47: // type_specifier ::= BOOL 
            {
              string RESULT = null;
		 RESULT = "bool"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 46: // type_specifier ::= IDENTIFIER 
            {
              string RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = id; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*type_specifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 45: // type_specifier_incl_string ::= type_specifier 
            {
              string RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = type; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*type_specifier_incl_string*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 44: // type_specifier_incl_string ::= STRING 
            {
              string RESULT = null;
		 RESULT = "string"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*type_specifier_incl_string*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 43: // type_specifier_incl_specials ::= type_specifier_incl_string 
            {
              string RESULT = null;
		int typeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int typeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string type = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		 RESULT = type; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*type_specifier_incl_specials*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 42: // type_specifier_incl_specials ::= VOID 
            {
              string RESULT = null;
		 RESULT = "void"; 
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*type_specifier_incl_specials*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 41: // argument_list_no_void ::= argument_list COMMA type_specifier_incl_string IDENTIFIER 
            {
              ArrayList RESULT = null;
		int argsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int argsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		ArrayList args = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int paramTypeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int paramTyperight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string paramType = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		int paramNameleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int paramNameright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string paramName = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               RESULT = args;
               RESULT.Add(new JrpcgenParamInfo(paramType, paramName));
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*argument_list_no_void*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 40: // argument_list_no_void ::= argument_list COMMA type_specifier_incl_string 
            {
              ArrayList RESULT = null;
		int argsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int argsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		ArrayList args = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		int paramTypeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int paramTyperight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string paramType = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               RESULT = args;
               RESULT.Add(new JrpcgenParamInfo(paramType, null));
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*argument_list_no_void*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 39: // argument_list_no_void ::= type_specifier_incl_string IDENTIFIER 
            {
              ArrayList RESULT = null;
		int paramTypeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int paramTyperight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string paramType = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		int paramNameleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int paramNameright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string paramName = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               RESULT = new ArrayList();
               RESULT.Add(new JrpcgenParamInfo(paramType, paramName));
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*argument_list_no_void*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 38: // argument_list_no_void ::= type_specifier_incl_string 
            {
              ArrayList RESULT = null;
		int paramTypeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int paramTyperight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string paramType = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               RESULT = new ArrayList();
               RESULT.Add(new JrpcgenParamInfo(paramType, null));
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*argument_list_no_void*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 37: // argument_list ::= argument_list_no_void 
            {
              ArrayList RESULT = null;
		int argsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int argsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		ArrayList args = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               RESULT = args; // just pass through
               int size = RESULT.Count;
               //
               // All arguments, which are unnamed so far will now get
               // default names.
               //
               for ( int idx = 0; idx < size; ++idx ) {
                   JrpcgenParamInfo paraminfo =
                       (JrpcgenParamInfo) RESULT[idx];
                   if ( paraminfo.parameterName == null ) {
                       paraminfo.parameterName = "arg" + (idx + 1);
                   }
               }
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(21/*argument_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 36: // argument_list ::= VOID 
            {
              ArrayList RESULT = null;
		
               RESULT = null; // special case, allows fast tests
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(21/*argument_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 35: // procedure_def ::= type_specifier_incl_specials IDENTIFIER LPAREN argument_list RPAREN EQUAL value SEMICOLON 
            {
              JrpcgenProcedureInfo RESULT = null;
		int resultTypeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-7)).left;
		int resultTyperight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-7)).right;
		string resultType = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-7)).value;
		int procIdleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).left;
		int procIdright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).right;
		string procId = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).value;
		int argsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left;
		int argsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).right;
		ArrayList args = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).value;
		int procNumberleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int procNumberright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string procNumber = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               RESULT = new JrpcgenProcedureInfo(procId, procNumber, resultType, args);
               //
               // NOTE: we can not add the identifier for the procedure number
               // to the list of global identifiers yet, as we do not know the
               // version number. This has to be fixed after the embracing
               // version definition was parsed in toto.
               //
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(20/*procedure_def*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-7)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 34: // procedure_defs ::= procedure_defs procedure_def 
            {
              ArrayList RESULT = null;
		int procsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int procsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		ArrayList procs = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		int procleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int procright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenProcedureInfo proc = (JrpcgenProcedureInfo)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                procs.Add(proc);
                RESULT = procs;
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(19/*procedure_defs*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 33: // procedure_defs ::= procedure_def 
            {
              ArrayList RESULT = null;
		int procleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int procright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenProcedureInfo proc = (JrpcgenProcedureInfo)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                RESULT = new ArrayList();
                RESULT.Add(proc);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(19/*procedure_defs*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 32: // version_def ::= VERSION IDENTIFIER LBRACE procedure_defs RBRACE EQUAL value SEMICOLON 
            {
              JrpcgenVersionInfo RESULT = null;
		int versIdleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).left;
		int versIdright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).right;
		string versId = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).value;
		int procsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left;
		int procsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).right;
		ArrayList procs = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).value;
		int versNumberleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int versNumberright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string versNumber = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               JrpcgenConst vers = new JrpcgenConst(versId, versNumber, jrpcgen.baseClassname);
               RESULT = new JrpcgenVersionInfo(versId, versNumber, procs);
               if ( jrpcgen.globalIdentifiers.ContainsKey(versId)) {
                   parser.report_error("version identifier \"" + versId + "\" already defined", versIdleft);
               }
               jrpcgen.globalIdentifiers.Add(versId, vers);
               versNumber = vers.resolveValue();
               if ( versNumber == null ) {
                   parser.report_error("Can not resolve version identifier \"" +
                                      versId + "\" to integer literal", versNumberleft);
               }
               //
               // We also need to fix up the procedure identifiers by appending
               // the version number.
               //
               int size = procs.Count;
               for ( int idx = 0; idx < size; ++idx ) {
                   JrpcgenProcedureInfo procInfo = (JrpcgenProcedureInfo)
                       procs[idx];
                   procInfo.procedureId += "_" + versNumber;
                   JrpcgenConst proc = new JrpcgenConst(procInfo.procedureId,
                                                        procInfo.procedureNumber,
                                                        jrpcgen.baseClassname);
                   if ( jrpcgen.globalIdentifiers.ContainsKey(procInfo.procedureId)) {
                       // FIXME line number
                       parser.report_error("procedure identifier \"" + procInfo.procedureId + "\" already defined", 0);
                   }
                   jrpcgen.globalIdentifiers.Add(procInfo.procedureId, proc);
               }

               if ( jrpcgen.debug ) {
                   Console.Out.WriteLine("VERSION " + versId + " = " + versNumber);
                   for ( int idx = 0; idx < size; ++idx ) {
                       JrpcgenProcedureInfo procInfo = (JrpcgenProcedureInfo)
                           procs[idx];
                       Console.Out.Write("PROCEDURE " + procInfo.resultType + " "
                                          + procInfo.procedureId + "(");
                       if ( procInfo.parameters == null ) {
                           Console.Out.Write("void");
                       } else {
                           for ( int pidx = 0; pidx < procInfo.parameters.Count; ++pidx ) {
                               JrpcgenParamInfo paramInfo = (JrpcgenParamInfo)
                                   procInfo.parameters[pidx];
                               if ( pidx > 0 ) {
                                   Console.Out.Write(",");
                               }
                               Console.Out.Write(paramInfo.parameterType);
                               if ( paramInfo.parameterName != null ) {
                                   Console.Out.Write(" " + paramInfo.parameterName);
                               }
                           }
                       }
                       Console.Out.WriteLine(") = "
                                          + procInfo.procedureNumber);
                   }
               }
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(18/*version_def*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-7)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 31: // version_defs ::= version_defs version_def 
            {
              ArrayList RESULT = null;
		int versionsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int versionsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		ArrayList versions = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		int versionleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int versionright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenVersionInfo version = (JrpcgenVersionInfo)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                versions.Add(version);
                RESULT = versions;
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(17/*version_defs*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 30: // version_defs ::= version_def 
            {
              ArrayList RESULT = null;
		int versionleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int versionright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenVersionInfo version = (JrpcgenVersionInfo)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                RESULT = new ArrayList();
                RESULT.Add(version);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(17/*version_defs*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 29: // program_def ::= PROGRAM IDENTIFIER LBRACE version_defs RBRACE EQUAL value SEMICOLON 
            {
              JrpcgenProgramInfo RESULT = null;
		int progIdleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).left;
		int progIdright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).right;
		string progId = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-6)).value;
		int versionsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left;
		int versionsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).right;
		ArrayList versions = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).value;
		int progNumberleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int progNumberright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string progNumber = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               JrpcgenConst prog = new JrpcgenConst(progId, progNumber, jrpcgen.baseClassname);
               RESULT = new JrpcgenProgramInfo(progId, progNumber, versions);
               if ( jrpcgen.globalIdentifiers.ContainsKey(progId)) {
                   parser.report_error("program identifier \"" + progId + "\" already defined", progIdleft);
               }
               jrpcgen.globalIdentifiers.Add(progId, prog);
               if ( jrpcgen.debug ) {
                   Console.Out.WriteLine("PROGRAM " + progId + " = " + progNumber);
               }
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*program_def*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-7)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 28: // typedef_def ::= TYPEDEF declaration SEMICOLON 
            {
              object RESULT = null;
		int declleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int declright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		JrpcgenDeclaration decl = (JrpcgenDeclaration)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               if ( jrpcgen.globalIdentifiers.ContainsKey(decl.identifier)) {
                   parser.report_error("typedef identifier \"" + decl.identifier + "\" already defined", declleft);
               }
               jrpcgen.globalIdentifiers.Add(decl.identifier, decl);
               if ( jrpcgen.debug ) {
                   Console.Out.Write("TYPEDEF ");
                   decl.dump();
               }
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13/*typedef_def*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 27: // union_case ::= DEFAULT COLON declaration SEMICOLON 
            {
              JrpcgenUnionArm RESULT = null;
		int elementleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int elementright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		JrpcgenDeclaration element = (JrpcgenDeclaration)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               RESULT = new JrpcgenUnionArm(null, element);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*union_case*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 26: // union_case ::= CASE value COLON declaration SEMICOLON 
            {
              JrpcgenUnionArm RESULT = null;
		int valleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int valright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		string val = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int elementleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int elementright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		JrpcgenDeclaration element = (JrpcgenDeclaration)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               RESULT = new JrpcgenUnionArm(val, element);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*union_case*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 25: // union_case ::= CASE value COLON 
            {
              JrpcgenUnionArm RESULT = null;
		int valleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int valright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string val = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               RESULT = new JrpcgenUnionArm(val, null);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*union_case*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 24: // union_cases ::= union_cases union_case 
            {
              ArrayList RESULT = null;
		int armsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int armsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		ArrayList arms = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		int armleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int armright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenUnionArm arm = (JrpcgenUnionArm)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                arms.Add(arm);
                RESULT = arms;
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*union_cases*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 23: // union_cases ::= union_case 
            {
              ArrayList RESULT = null;
		int armleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int armright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenUnionArm arm = (JrpcgenUnionArm)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                RESULT = new ArrayList();
                RESULT.Add(arm);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*union_cases*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 22: // union_def ::= UNION IDENTIFIER SWITCH LPAREN declaration RPAREN LBRACE union_cases RBRACE SEMICOLON 
            {
              object RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-8)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-8)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-8)).value;
		int descrimleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-5)).left;
		int descrimright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-5)).right;
		JrpcgenDeclaration descrim = (JrpcgenDeclaration)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-5)).value;
		int elementsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int elementsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		ArrayList elements = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		
               JrpcgenUnion uni = new JrpcgenUnion(id, descrim, elements);
               if ( jrpcgen.globalIdentifiers.ContainsKey(id)) {
                   parser.report_error("union identifier \"" + id + "\" already defined", idleft);
               }
               jrpcgen.globalIdentifiers.Add(id, uni);
               if ( jrpcgen.debug ) {
                   uni.dump();
               }
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(10/*union_def*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-9)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 21: // struct_def ::= STRUCT IDENTIFIER LBRACE declarations RBRACE SEMICOLON 
            {
              object RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).value;
		int elementsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int elementsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		ArrayList elements = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		
               JrpcgenStruct strct = new JrpcgenStruct(id, elements);
               if ( jrpcgen.globalIdentifiers.ContainsKey(id)) {
                   parser.report_error("struct identifier \"" + id + "\" already defined", idleft);
               }
               jrpcgen.globalIdentifiers.Add(id, strct);
               if ( jrpcgen.debug ) {
                   strct.dump();
               }
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(9/*struct_def*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 20: // enum_element ::= IDENTIFIER EQUAL value 
            {
              JrpcgenConst RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		int valleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int valright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string val = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               RESULT = new JrpcgenConst(id, val);
               if ( jrpcgen.globalIdentifiers.ContainsKey(id)) {
                   parser.report_error("identifier \"" + id + "\" already defined", idleft);
               }
               jrpcgen.globalIdentifiers.Add(id, RESULT);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8/*enum_element*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 19: // enum_element ::= IDENTIFIER 
            {
              JrpcgenConst RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               //
               // We don't know yet the value, so we don't specify one. The
               // value will be fixed up when the production for the complete
               // enumeration triggers.
               //
               RESULT = new JrpcgenConst(id, null);
               if ( jrpcgen.globalIdentifiers.ContainsKey(id)) {
                   parser.report_error("identifier \"" + id + "\" already defined", idleft);
               }
               jrpcgen.globalIdentifiers.Add(id, RESULT);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8/*enum_element*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 18: // enum_elements ::= enum_elements COMMA enum_element 
            {
              ArrayList RESULT = null;
		int elementsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int elementsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		ArrayList elements = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenConst el = (JrpcgenConst)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               //
               // If no specific value has been assigned to this element of
               // an enumeration, increment value of previous element and
               // assign the new value to this element. BTW -- we let the
               // Java compiler do the calculation, so references to
               // other constants by name are valid.
               //
               if ( el.value == null ) {
                   el.value = ((JrpcgenConst)elements[elements.Count - 1]).value
                              + "+1";
               }
               elements.Add(el);
               RESULT = elements;
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*enum_elements*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 17: // enum_elements ::= enum_element 
            {
              ArrayList RESULT = null;
		int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenConst el = (JrpcgenConst)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
               //
               // If no specific value has been assigned to this element of
               // an enumeration, assign zero by default.
               //
               if ( el.value == null ) {
                   el.value = "0";
               }
               RESULT = new ArrayList();
               RESULT.Add(el);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*enum_elements*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 16: // enum_def ::= ENUM IDENTIFIER LBRACE enum_elements RBRACE SEMICOLON 
            {
              object RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).value;
		int elementsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).left;
		int elementsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).right;
		ArrayList elements = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-2)).value;
		
               //
               // Fix up enclosure of enumeration elements, so we can later
               // use a full qualified identifier.
               //
               int size = elements.Count;
               for ( int idx = 0; idx < size; ++idx ) {
                   JrpcgenConst c = (JrpcgenConst) elements[idx];
                   c.enclosure = id;
               }
               JrpcgenEnum type = new JrpcgenEnum(id, elements);
               if ( jrpcgen.globalIdentifiers.ContainsKey(id)) {
                   parser.report_error("enum identifier \"" + id + "\" already defined", idleft);
               }
               jrpcgen.globalIdentifiers.Add(id, type);
               if ( jrpcgen.debug ) {
                   type.dump();
               }
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*enum_def*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // constant_def ::= CONST IDENTIFIER EQUAL value SEMICOLON 
            {
              object RESULT = null;
		int idleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).left;
		int idright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).right;
		string id = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-3)).value;
		int valueleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int valueright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		string value = (string)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		
               JrpcgenConst type = new JrpcgenConst(id, value, jrpcgen.baseClassname);
               if ( jrpcgen.globalIdentifiers.ContainsKey(id)) {
                   parser.report_error("const identifier \"" + id + "\" already defined", idleft);
               }
               jrpcgen.globalIdentifiers.Add(id, type);
               if ( jrpcgen.debug ) {
                   Console.Out.Write("CONST ");
                   type.dump();
                   Console.Out.WriteLine();
               }
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5/*constant_def*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 14: // definition ::= typedef_def 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*definition*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // definition ::= union_def 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*definition*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 12: // definition ::= struct_def 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*definition*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // definition ::= enum_def 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*definition*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 10: // definition ::= constant_def 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*definition*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // definitions ::= definitions definition 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*definitions*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 8: // definitions ::= definition 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*definitions*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // definitions_opt ::= definitions 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*definitions_opt*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // definitions_opt ::= 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*definitions_opt*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 5: // program_defs ::= program_defs program_def 
            {
              ArrayList RESULT = null;
		int progDefsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int progDefsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		ArrayList progDefs = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		int progDefleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int progDefright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenProgramInfo progDef = (JrpcgenProgramInfo)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                progDefs.Add(progDef);
                RESULT = progDefs;
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(14/*program_defs*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 4: // program_defs ::= program_def 
            {
              ArrayList RESULT = null;
		int progDefleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int progDefright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		JrpcgenProgramInfo progDef = (JrpcgenProgramInfo)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                RESULT = new ArrayList();
                RESULT.Add(progDef);
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(14/*program_defs*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // program_defs_opt ::= program_defs 
            {
              object RESULT = null;
		int progDefsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left;
		int progDefsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right;
		ArrayList progDefs = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).value;
		
                jrpcgen.programInfos = progDefs;
            
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(15/*program_defs_opt*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // program_defs_opt ::= 
            {
              object RESULT = null;
		
				jrpcgen.programInfos = new ArrayList();
			
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(15/*program_defs_opt*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 1: // compilation_unit ::= definitions_opt program_defs_opt 
            {
              object RESULT = null;

              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(1/*compilation_unit*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          return CUP_JrpcgenParser_result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 0: // $START ::= compilation_unit EOF 
            {
              object RESULT = null;
		int start_valleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left;
		int start_valright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).right;
		object start_val = (object)((TUVienna.CS_CUP.Runtime.Symbol) CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).value;
		RESULT = start_val;
              CUP_JrpcgenParser_result = new TUVienna.CS_CUP.Runtime.Symbol(0/*$START*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_JrpcgenParser_stack.elementAt(CUP_JrpcgenParser_top-0)).right, RESULT);
            }
          /* ACCEPT */
          CUP_JrpcgenParser_parser.done_parsing();
          return CUP_JrpcgenParser_result;

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

        }
    }
Exemplo n.º 5
0
 public new void syntax_error(Symbol cur_token) {
     StringBuilder msg = new StringBuilder("jrpcgen: syntax error in line ");
     msg.Append(cur_token.left);
     Console.Out.WriteLine(msg);
     throw(new JrpcgenParserException());
 }
Exemplo n.º 6
0
        /** Method with the actual generated action code. */
        public TUVienna.CS_CUP.Runtime.Symbol CUP_TinyParser_do_action(
            int CUP_TinyParser_act_num,
            TUVienna.CS_CUP.Runtime.lr_parser CUP_TinyParser_parser,
            System.Collections.Stack xstack1,
            int CUP_TinyParser_top)
        {
            /* Symbol object for return from actions */
            mStack CUP_TinyParser_stack = new mStack(xstack1);

            TUVienna.CS_CUP.Runtime.Symbol CUP_TinyParser_result;

            /* select the action based on the action number */
            switch (CUP_TinyParser_act_num)
            {
            /*. . . . . . . . . . . . . . . . . . . .*/
            case 30: // factor ::= error
            {
                Expresion RESULT = null;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13 /*factor*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 29: // factor ::= IDENTIFICADOR
            {
                Expresion        RESULT = null;
                SimboloAbstracto id     = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Variable(id, id.Linea, id.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13 /*factor*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 28: // factor ::= LIT_ENTERO
            {
                Expresion        RESULT = null;
                SimboloAbstracto val    = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new NumeroEntero(val, val.Linea, val.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13 /*factor*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 27: // factor ::= PARENT_IZQ exp PARENT_DER
            {
                Expresion RESULT = null;
                Expresion e      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;

                RESULT = e;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13 /*factor*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 26: // term ::= factor
            {
                Expresion RESULT = null;
                Expresion e      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = e;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12 /*term*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 25: // term ::= term DIVISION factor
            {
                Expresion        RESULT = null;
                Expresion        e1     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                SimboloAbstracto d      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                Expresion        e2     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Division(e1, e2, d.Linea, d.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12 /*term*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 24: // term ::= term MULTIPLICACION factor
            {
                Expresion        RESULT = null;
                Expresion        e1     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                SimboloAbstracto m      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                Expresion        e2     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Multiplicacion(e1, e2, m.Linea, m.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12 /*term*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 23: // exp_simple ::= term
            {
                Expresion RESULT = null;
                Expresion e      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = e;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(11 /*exp_simple*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 22: // exp_simple ::= exp_simple RESTA term
            {
                Expresion        RESULT = null;
                Expresion        e1     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                SimboloAbstracto r      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                Expresion        e2     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Resta(e1, e2, r.Linea, r.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(11 /*exp_simple*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 21: // exp_simple ::= exp_simple SUMA term
            {
                Expresion        RESULT = null;
                Expresion        e1     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                SimboloAbstracto s      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                Expresion        e2     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Suma(e1, e2, s.Linea, s.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(11 /*exp_simple*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 20: // exp ::= exp_simple
            {
                Expresion RESULT = null;
                Expresion e      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = e;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(10 /*exp*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 19: // exp ::= exp_simple IGUAL exp_simple
            {
                Expresion        RESULT = null;
                Expresion        e1     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                SimboloAbstracto i      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                Expresion        e2     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Igual(e1, e2, i.Linea, i.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(10 /*exp*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 18: // exp ::= exp_simple MENOR exp_simple
            {
                Expresion        RESULT = null;
                Expresion        e1     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                SimboloAbstracto m      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                Expresion        e2     = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Menor(e1, e2, m.Linea, m.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(10 /*exp*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 17: // args ::= args COMA exp
            {
                ListaParametros RESULT = null;
                ListaParametros p      = (ListaParametros)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                Expresion       e      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                p.agregarElemento(e);
                RESULT = p;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(9 /*args*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 16: // args ::= exp
            {
                ListaParametros RESULT = null;
                Expresion       e      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new ListaParametros();
                RESULT.agregarElemento(e);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(9 /*args*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 15: // opt_args ::=
            {
                ListaParametros RESULT = null;

                RESULT = new ListaParametros();

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8 /*opt_args*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 14: // opt_args ::= args
            {
                ListaParametros RESULT = null;
                ListaParametros p      = (ListaParametros)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = p;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8 /*opt_args*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 13: // fuction_call ::= IDENTIFICADOR opt_args
            {
                Sentencia        RESULT = null;
                SimboloAbstracto id     = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                ListaParametros  p      = (ListaParametros)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new LLamadaFuncion(id, p, id.Linea, id.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(7 /*fuction_call*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 12: // sent_assign ::= IDENTIFICADOR ASIGNACION exp
            {
                Sentencia        RESULT = null;
                SimboloAbstracto id     = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                SimboloAbstracto a      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                Expresion        e      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Asignacion(new Variable(id, id.Linea, id.Columna), e, a.Linea, a.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(6 /*sent_assign*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 11: // sent_repeat ::= REPITA secuencia_sent HASTA exp
            {
                Sentencia        RESULT = null;
                SimboloAbstracto r      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 3)).value;
                ListaSentencia   s      = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                Expresion        c      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new RepitaHasta(c, s, r.Linea, r.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sent_repeat*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 10: // sent_if ::= SI exp ENTONCES secuencia_sent SINO secuencia_sent FIN
            {
                Sentencia        RESULT = null;
                SimboloAbstracto s      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 6)).value;
                Expresion        c      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 5)).value;
                ListaSentencia   en     = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 3)).value;
                ListaSentencia   sn     = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;

                RESULT = new Condicional(c, en, sn, s.Linea, s.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sent_if*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 9: // sent_if ::= SI exp ENTONCES secuencia_sent FIN
            {
                Sentencia        RESULT = null;
                SimboloAbstracto s      = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 4)).value;
                Expresion        c      = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 3)).value;
                ListaSentencia   en     = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;

                RESULT = new Condicional(c, en, null, s.Linea, s.Columna);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sent_if*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 8: // sent ::= error
            {
                Sentencia RESULT = null;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3 /*sent*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 7: // sent ::= fuction_call
            {
                Sentencia RESULT = null;
                Sentencia s      = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;
                RESULT = s;
                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3 /*sent*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 6: // sent ::= sent_assign
            {
                Sentencia RESULT = null;
                Sentencia s      = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;
                RESULT = s;
                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3 /*sent*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 5: // sent ::= sent_repeat
            {
                Sentencia RESULT = null;
                Sentencia s      = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;
                RESULT = s;
                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3 /*sent*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 4: // sent ::= sent_if
            {
                Sentencia RESULT = null;
                Sentencia s      = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;
                RESULT = s;
                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3 /*sent*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 3: // secuencia_sent ::= sent
            {
                ListaSentencia RESULT = null;
                Sentencia      s      = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new ListaSentencia();
                RESULT.agregarElemento(s);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2 /*secuencia_sent*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 2: // secuencia_sent ::= secuencia_sent PUNTO_Y_COMA sent
            {
                ListaSentencia RESULT = null;
                ListaSentencia sc     = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 2)).value;
                Sentencia      s      = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                sc.agregarElemento(s);
                RESULT = sc;

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2 /*secuencia_sent*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 1: // programa ::= secuencia_sent
            {
                Programa       RESULT = null;
                ListaSentencia sc     = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 0)).value;

                RESULT = new Programa(sc, 1, 0);

                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(1 /*programa*/, RESULT);
            }
                return(CUP_TinyParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 0: // $START ::= programa EOF
            {
                object   RESULT    = null;
                Programa start_val = (Programa)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyParser_stack.elementAt(CUP_TinyParser_top - 1)).value;
                RESULT = start_val;
                CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(0 /*$START*/, RESULT);
            }
                /* ACCEPT */
                CUP_TinyParser_parser.done_parsing();
                return(CUP_TinyParser_result);

            /* . . . . . .*/
            default:
                throw new System.Exception(
                          "Invalid action number found in internal parse table");
            }
        }
Exemplo n.º 7
0
 public override void syntax_error(Symbol cur_token)
 {
     int lineno = action_obj.getLinea();
     int column = action_obj.getColumna();
     string filename = action_obj.getNombreArchivo().Texto;
     System.Console.Error.Write(filename + ": " + lineno
          + ":" + column + ": error de sintáxis cerca de ");
     Utilidades.imprimirToken(cur_token);
     omerrs++;
     if (omerrs>50) {
     System.Console.Error.Write("El análisis se ha detenido porque se encontraron muchos errores");
     System.Environment.Exit(1);
     }
 }
Exemplo n.º 8
0
 /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
 /** This method is called if it is determined that syntax error recovery
    *  has been unsuccessful.  Here in the base class we report a fatal error.
    *
    * @param cur_token the current lookahead Symbol.
    */
 public void unrecovered_syntax_error(Symbol cur_token)
 {
     report_fatal_error("Couldn't repair and continue parse", cur_token);
 }
Exemplo n.º 9
0
        /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
        /** This method provides the main parsing routine.  It returns only when
           *  done_parsing() has been called (typically because the parser has
           *  accepted, or a fatal error has been reported).  See the header
           *  documentation for the class regarding how shift/reduce parsers operate
           *  and how the various tables are used.
           */
        public Symbol parse()
        {
            /* the current action code */
              int act;

              /* the Symbol/stack element returned by a reduce */
              Symbol lhs_sym = null;

              /* information about production being reduced with */
              short handle_size, lhs_sym_num;

              /* Set up direct reference to tables to drive the parser */

              production_tab = production_table();
              action_tab     = action_table();
              reduce_tab     = reduce_table();

              /* initialize the action encapsulation object */
              init_actions();

              /* do user initialization */
              user_init();

              /* get the first token */
              cur_token = scan();

              /* push dummy Symbol with start state to get us underway */
              stack.Clear();
              stack.Push(new Symbol(0, start_state()));
              tos = 0;

              /* continue until we are told to stop */
              for (_done_parsing = false; !_done_parsing; )
            {
              /* Check current token for freshness. */
              if (cur_token.used_by_parser)
            throw new System.Exception("Symbol recycling detected (fix your scanner).");

              /* current state is always on the top of the stack */

              /* look up action out of the current state with the current input */
              act = get_action(((Symbol)stack.Peek()).parse_state, cur_token.sym);

              /* decode the action -- > 0 encodes shift */
              if (act > 0)
            {
              /* shift to the encoded state by pushing it on the stack */
              cur_token.parse_state = act-1;
              cur_token.used_by_parser = true;
              stack.Push(cur_token);
              tos++;

              /* advance to the next Symbol */
              cur_token = scan();
            }
              /* if its less than zero, then it encodes a reduce action */
              else if (act < 0)
            {
              /* perform the action for the reduce */
              lhs_sym = do_action((-act)-1, this, stack, tos);

              /* look up information about the production */
              lhs_sym_num = production_tab[(-act)-1][0];
              handle_size = production_tab[(-act)-1][1];

              /* pop the handle off the stack */
              for (int i = 0; i < handle_size; i++)
            {
              stack.Pop();
              tos--;
            }

              /* look up the state to go to from the one popped back to */
              act = get_reduce(((Symbol)stack.Peek()).parse_state, lhs_sym_num);

              /* shift to that state */
              lhs_sym.parse_state = act;
              lhs_sym.used_by_parser = true;
              stack.Push(lhs_sym);
              tos++;
            }
              /* finally if the entry is zero, we have an error */
              else if (act == 0)
            {
              /* call user syntax error reporting routine */
              syntax_error(cur_token);

              /* try to error recover */
              if (!error_recovery(false))
            {
              /* if that fails give up with a fatal syntax error */
              unrecovered_syntax_error(cur_token);

              /* just in case that wasn't fatal enough, end parse */
              done_parsing();
            } else {
              lhs_sym = (Symbol)stack.Peek();
            }
            }
            }
              return lhs_sym;
        }
Exemplo n.º 10
0
 public void syntax_error(Symbol cur_token)
 {
 }
Exemplo n.º 11
0
 public static string tokenEnTexto(Symbol s)
 {
     switch (s.sym)
     {
         case TokenDef.EOF:
             return "FIN_ARCHIVO";
         case TokenDef.SUMA:
             return "+";
         case TokenDef.RESTA:
             return "-";
         case TokenDef.DIVISION:
             return "/";
         case TokenDef.MULTIPLICACION:
             return "*";
         case TokenDef.PUNTO_Y_COMA:
             return ";";
         case TokenDef.MENOR:
             return "<";
         case TokenDef.IGUAL:
             return "=";
         case TokenDef.PARENT_IZQ:
             return "(";
         case TokenDef.PARENT_DER:
             return ")";
         case TokenDef.ASIGNACION:
             return ":=";
         case TokenDef.LIT_ENTERO:
             return "ENTERO";
         case TokenDef.IDENTIFICADOR:
             return "ID";
         case TokenDef.SI:
             return "SI";
         case TokenDef.ENTONCES:
             return "ENTONCES";
         case TokenDef.SINO:
             return "SINO";
         case TokenDef.FIN:
             return "FIN";
         case TokenDef.REPITA:
             return "REPITA";
         case TokenDef.HASTA:
             return "HASTA";
         case TokenDef.ERROR:
             return "ERROR";
         default:
             return ("<Token inválido: " + s.sym + ">");
     }
 }
Exemplo n.º 12
0
  /*
  public parser (java.io.InputStream input) {
    super(new Yylex(input));
  }
  */

  /*public static void main(String args[]){
    try {
      parser p = new parser(System.in);
      Object result = p.parse().value;
      //System.out.println(((Expr)result).evalNumber(null));
      System.out.println(((Expr)result));
    }
    catch (Exception e) {
		System.out.println("caught: "+e);
    }
  }*/
  public override void unrecovered_syntax_error(Symbol cur_token){
      
      if ((cur_token.sym==sym.EOF) && (prev_token.sym == sym.DSLASH
              || prev_token.sym == sym.SLASH))
          throw new XPathParseException("'/' and '//' can't terminate a location path");
      throw new XPathParseException("XPath Syntax error: "+cur_token);
  }
        /** Method with the actual generated action code. */
        public TUVienna.CS_CUP.Runtime.Symbol CUP_TinyMachineParser_do_action(
            int CUP_TinyMachineParser_act_num,
            TUVienna.CS_CUP.Runtime.lr_parser CUP_TinyMachineParser_parser,
            System.Collections.Stack xstack1,
            int CUP_TinyMachineParser_top)
        {
            /* Symbol object for return from actions */
            mStack CUP_TinyMachineParser_stack = new mStack(xstack1);

            TUVienna.CS_CUP.Runtime.Symbol CUP_TinyMachineParser_result;

            /* select the action based on the action number */
            switch (CUP_TinyMachineParser_act_num)
            {
            /*. . . . . . . . . . . . . . . . . . . .*/
            case 30: // argRO ::= ENTERO COMA ENTERO PARENT_IZQ ENTERO PARENT_DER
            {
                Operacion RESULT = null;
                Symbol    r      = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 5)).value;
                Symbol    s      = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 3)).value;
                Symbol    t      = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                RESULT = new Operacion(r, s, t);
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(7 /*argRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 29: // sentenciaRO ::= JNE argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 28: // sentenciaRO ::= JEQ argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 27: // sentenciaRO ::= JGT argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 26: // sentenciaRO ::= JGE argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 25: // sentenciaRO ::= JLE argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 24: // sentenciaRO ::= JLT argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 23: // sentenciaRO ::= ST argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 22: // sentenciaRO ::= LDC argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 21: // sentenciaRO ::= LDA argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 20: // sentenciaRO ::= LD argRO
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5 /*sentenciaRO*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 19: // argRM ::= ENTERO COMA ENTERO COMA ENTERO
            {
                Operacion RESULT = null;
                Symbol    r      = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 4)).value;
                Symbol    s      = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 2)).value;
                Symbol    t      = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                RESULT = new Operacion(r, s, t);
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(6 /*argRM*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 18: // sentenciaRM ::= DIV argRM
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sentenciaRM*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 17: // sentenciaRM ::= MUL argRM
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sentenciaRM*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 16: // sentenciaRM ::= SUB argRM
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sentenciaRM*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 15: // sentenciaRM ::= ADD argRM
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sentenciaRM*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 14: // sentenciaRM ::= OUT argRM
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sentenciaRM*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 13: // sentenciaRM ::= IN argRM
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sentenciaRM*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 12: // sentenciaRM ::= HALT argRM
            {
                Operacion RESULT = null;
                Symbol    op     = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.Opcode = op; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4 /*sentenciaRM*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 11: // fin_sent ::=
            {
                string RESULT = null;

                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8 /*fin_sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 10: // fin_sent ::= COMENTARIO_LINEA
            {
                string RESULT = null;
                string c      = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                RESULT = c;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8 /*fin_sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 9: // fin_sent ::= COMENTARIO_FIN
            {
                string RESULT = null;
                string c      = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                RESULT = c;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8 /*fin_sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 8: // fin_sent ::= FIN_LINEA
            {
                string RESULT = null;
                RESULT = "";
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8 /*fin_sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 7: // sent ::= ENTERO COLON sentenciaRO fin_sent
            {
                Operacion RESULT = null;
                Symbol    l      = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 3)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                string    c      = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.NumeroOp = (int)l.value; i.Comentario = c; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3 /*sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 6: // sent ::= ENTERO COLON sentenciaRM fin_sent
            {
                Operacion RESULT = null;
                Symbol    l      = (Symbol)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 3)).value;
                Operacion i      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                string    c      = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                i.NumeroOp = (int)l.value; i.Comentario = c; RESULT = i;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3 /*sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 5: // sent ::= COMENTARIO_LINEA
            {
                Operacion RESULT = null;
                RESULT = null;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3 /*sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 4: // secuencia_sent ::= error
            {
                Programa RESULT = null;

                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2 /*secuencia_sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 3: // secuencia_sent ::= sent
            {
                Programa  RESULT = null;
                Operacion s      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                RESULT = new Programa(); if (s != null)
                {
                    RESULT.Instrucciones[s.NumeroOp] = s;
                }
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2 /*secuencia_sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 2: // secuencia_sent ::= secuencia_sent sent
            {
                Programa  RESULT = null;
                Programa  sc     = (Programa)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                Operacion s      = (Operacion)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                if (s != null)
                {
                    sc.Instrucciones[s.NumeroOp] = s;
                }
                RESULT = sc;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2 /*secuencia_sent*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 1: // programa ::= secuencia_sent
            {
                Programa RESULT = null;
                Programa sc     = (Programa)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 0)).value;
                RESULT = sc;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(1 /*programa*/, RESULT);
            }
                return(CUP_TinyMachineParser_result);

            /*. . . . . . . . . . . . . . . . . . . .*/
            case 0: // $START ::= programa EOF
            {
                object   RESULT    = null;
                Programa start_val = (Programa)((TUVienna.CS_CUP.Runtime.Symbol)CUP_TinyMachineParser_stack.elementAt(CUP_TinyMachineParser_top - 1)).value;
                RESULT = start_val;
                CUP_TinyMachineParser_result = new TUVienna.CS_CUP.Runtime.Symbol(0 /*$START*/, RESULT);
            }
                /* ACCEPT */
                CUP_TinyMachineParser_parser.done_parsing();
                return(CUP_TinyMachineParser_result);

            /* . . . . . .*/
            default:
                throw new System.Exception(
                          "Invalid action number found in internal parse table");
            }
        }
Exemplo n.º 14
0
 public override void unrecovered_syntax_error(Symbol cur_token)
 {
 }
Exemplo n.º 15
0
        /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
        /** Reset the parse ahead input to one Symbol past where we started error
           *  recovery (this consumes one new Symbol from the real input).
           */
        protected void restart_lookahead()
        {
            /* move all the existing input over */
              for (int i = 1; i < error_sync_size(); i++)
            lookahead[i-1] = lookahead[i];

              /* read a new Symbol into the last spot */
              // BUG Fix by Bruce Hutton
              // Computer Science Department, University of Auckland,
              // Auckland, New Zealand. [applied 5-sep-1999 by csa]
              // The following two lines were out of order!!
              lookahead[error_sync_size()-1] = cur_token;
              cur_token = scan();

              /* reset our internal position marker */
              lookahead_pos = 0;
        }
Exemplo n.º 16
0
 public override void unrecovered_syntax_error(Symbol cur_token)
 {
     Yylex scanner = (Yylex)getScanner();
     throw new XPathParseException("XPath Syntax error: "+cur_token, scanner.getOffset() );
 }
Exemplo n.º 17
0
 /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
 /** Do debug output for shift.
    *
    * @param shift_tkn the Symbol being shifted onto the stack.
    */
 public void debug_shift(Symbol shift_tkn)
 {
     debug_message("# Shift under term #" + shift_tkn.sym +
     " to state #" + shift_tkn.parse_state);
 }
Exemplo n.º 18
0
        /** Method with the actual generated action code. */
        public TUVienna.CS_CUP.Runtime.Symbol CUP_parser_do_action(
    int                        CUP_parser_act_num,
    TUVienna.CS_CUP.Runtime.lr_parser CUP_parser_parser,
    System.Collections.Stack            xstack1,
    int                        CUP_parser_top)
        {
            /* Symbol object for return from actions */
              mStack CUP_parser_stack =new mStack(xstack1);
              TUVienna.CS_CUP.Runtime.Symbol CUP_parser_result;

              /* select the action based on the action number */
              switch (CUP_parser_act_num)
            {
              /*. . . . . . . . . . . . . . . . . . . .*/
              case 65: // FunctionName ::= FNAME
            {
              FuncName RESULT = null;
            int fnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int fnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            FuncName fn = (FuncName)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = fn;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*FunctionName*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 64: // VariableReference ::= DOLLAR NAME
            {
              Expr RESULT = null;
            int nleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int nright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            NameType n = (NameType)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;

               		  if (my_parser.symbolHash[n.qname]==null)
               		    throw new XPathParseException("variableExpression not declared ==> $"+n.qname);
               		    RESULT = new VariableExpr(n.qname, (Expr)my_parser.symbolHash[n.qname]);

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(13/*VariableReference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 63: // Predicate ::= LB Expr RB
            {
              Predicate RESULT = null;
            int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left;
            int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).right;
            Expr e = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-1)).value;
            RESULT = new Predicate();
            if (e.isFinal() && e.Numerical)
            {
                RESULT.d = e.evalNumber((VTDNav)null);
                Yylex scanner = (Yylex)my_parser.getScanner();
                if (RESULT.d < 1)
                    throw new XPathParseException("invalid index number for predicate",
                            scanner.getOffset());
                RESULT.type = Predicate.simple;
            }
            RESULT.expr = e;
            RESULT.requireContext = e.requireContextSize();

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*Predicate*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 62: // AbbreviatedRelativeLocationPath ::= Step DSLASH RelativeLocationPath
            {
              Step RESULT = null;
            int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Step s = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int rlpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int rlpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step rlp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new Step();
              RESULT.AxisType = AxisType.DESCENDANT_OR_SELF;
              my_parser.tempNt = new NodeTest();

              my_parser.tempNt.TestType = NodeTest.NODE;
              RESULT.NodeTest = my_parser.tempNt;
              s.NextStep=RESULT;
              RESULT.PrevStep=s;
              RESULT.NextStep=rlp;
              rlp.PrevStep=RESULT;
              RESULT = s;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*AbbreviatedRelativeLocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 61: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath
            {
              Step RESULT = null;
            int rlpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int rlpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step rlp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;

              RESULT = new Step();
              RESULT.AxisType=AxisType.DESCENDANT_OR_SELF;
              my_parser.tempNt = new NodeTest();
              my_parser.tempNt.TestType=NodeTest.NODE;
              RESULT.NodeTest=my_parser.tempNt;
              RESULT.NextStep=rlp;
              rlp.PrevStep=RESULT;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*AbbreviatedAbsoluteLocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 60: // AbbreviatedStep ::= DDOT
            {
              Step RESULT = null;
              RESULT = new Step();
            my_parser.tempNt = new NodeTest();
              		    my_parser.tempNt.TestType=NodeTest.NODE;
            RESULT.AxisType=AxisType.PARENT;
            RESULT.NodeTest=my_parser.tempNt;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*AbbreviatedStep*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 59: // AbbreviatedStep ::= DOT
            {
              Step RESULT = null;
              RESULT = new Step();
            my_parser.tempNt = new NodeTest();
              		    my_parser.tempNt.TestType=NodeTest.NODE;
            RESULT.AxisType=AxisType.SELF;
            RESULT.NodeTest=my_parser.tempNt;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*AbbreviatedStep*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 58: // AbbreviatedAxisSpecifier ::= AT
            {
              AxisType RESULT = null;
             RESULT = new AxisType(); RESULT.i = AxisType.ATTRIBUTE;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(20/*AbbreviatedAxisSpecifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 57: // AbbreviatedAxisSpecifier ::=
            {
              AxisType RESULT = null;
             RESULT = new AxisType(); RESULT.i = AxisType.CHILD;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(20/*AbbreviatedAxisSpecifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 56: // AxisSpecifier ::= AbbreviatedAxisSpecifier
            {
              AxisType RESULT = null;
            int aasleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aasright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            AxisType aas = (AxisType)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
              RESULT = aas;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(19/*AxisSpecifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 55: // AxisSpecifier ::= AXISNAME
            {
              AxisType RESULT = null;
            int anleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int anright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            AxisType an = (AxisType)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
              RESULT = an;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(19/*AxisSpecifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 54: // PredicateList ::= Predicate PredicateList
            {
              Predicate RESULT = null;
            int pleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left;
            int pright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).right;
            Predicate p = (Predicate)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-1)).value;
            int plleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int plright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Predicate pl = (Predicate)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
              p.nextP = pl;
            RESULT = p;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*PredicateList*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 53: // PredicateList ::=
            {
              Predicate RESULT = null;
             RESULT = null;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*PredicateList*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 52: // nodetest ::= NTEST
            {
              NodeTest RESULT = null;
            int n2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int n2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Ntest n2 = (Ntest)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new NodeTest();
              		   if (n2.i!=3)
               	RESULT.TestType=n2.i;
               else {
               	if (n2.arg ==null)
               	   RESULT.TestType=n2.i; //PI0
               	else {
               		RESULT.TestType=4; //PI1
               		RESULT.NodeName=n2.arg;
               	}
               }

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(21/*nodetest*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 51: // nodetest ::= NAME
            {
              NodeTest RESULT = null;
            int nleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int nright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            NameType n = (NameType)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new NodeTest();
             	   RESULT.TestType=NodeTest.NAMETEST;
               RESULT.NodeName=n.qname;
               if (n.localname!=null){
               	 RESULT.setNodeNameNS(n.prefix,n.localname);
               	 if (my_parser.nsHash==null || my_parser.nsHash[n.prefix] ==null)

               	    throw new XPathParseException("No URL found for prefix:"+n.prefix);
               	 RESULT.URL = (String) my_parser.nsHash[n.prefix];
               }

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(21/*nodetest*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 50: // Step ::= AbbreviatedStep
            {
              Step RESULT = null;
            int absleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int absright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step abs = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = abs; /*System.out.println(" step 4");*/

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*Step*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 49: // Step ::= AxisSpecifier nodetest PredicateList
            {
              Step RESULT = null;
            int as1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int as1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            AxisType as1 = (AxisType)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int ntleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left;
            int ntright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).right;
            NodeTest nt = (NodeTest)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-1)).value;
            int plleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int plright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Predicate pl = (Predicate)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new Step();
              	   RESULT.AxisType=as1.i;
              	   if ( (as1.i== AxisType.ATTRIBUTE
              	         || as1.i == AxisType.NAMESPACE) &&
              	        (nt.testType>1)){
              	          Yylex scanner = (Yylex)my_parser.getScanner();
              	          throw new XPathParseException(as1.getAxisString()+" axis can't operate on"+
              	                 " comment(), pi(), or text()",
              	         	scanner.getOffset());
              	         	}

              	   RESULT.NodeTest=nt;
               RESULT.Predicate=pl;
               //System.out.println(" Step 3 ");

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*Step*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 48: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath
            {
              Step RESULT = null;
            int arlpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int arlpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step arlp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = arlp;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*RelativeLocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 47: // RelativeLocationPath ::= Step SLASH RelativeLocationPath
            {
              Step RESULT = null;
            int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Step s = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int rlpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int rlpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step rlp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             //if (s == rlp) throw new XPathParseException("$1 = $3!!!!");
               s.NextStep= rlp;
               rlp.PrevStep = s;
               RESULT= s;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*RelativeLocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 46: // RelativeLocationPath ::= Step
            {
              Step RESULT = null;
            int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step s = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = s;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*RelativeLocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 45: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath
            {
              Step RESULT = null;
            int aalpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aalpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step aalp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
              RESULT = aalp;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*AbsoluteLocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 44: // AbsoluteLocationPath ::= SLASH RelativeLocationPath
            {
              Step RESULT = null;
            int rlpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int rlpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step rlp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
              RESULT = rlp;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*AbsoluteLocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 43: // AbsoluteLocationPath ::= SLASH
            {
              Step RESULT = null;
              RESULT = null;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*AbsoluteLocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 42: // LocationPath ::= AbsoluteLocationPath
            {
              LocationPathExpr RESULT = null;
            int alpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int alpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step alp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new LocationPathExpr();
               RESULT.PathType=LocationPathExpr.ABSOLUTE_PATH;
               //System.out.println(" absolute ");
               RESULT.Step=alp;
               RESULT.optimize();
               //startStep = currentStep=null;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(18/*LocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 41: // LocationPath ::= RelativeLocationPath
            {
              LocationPathExpr RESULT = null;
            int rlpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int rlpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step rlp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new LocationPathExpr();
               RESULT.Step=rlp;
               RESULT.optimize();
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(18/*LocationPath*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 40: // Argument ::= Expr
            {
              Expr RESULT = null;
            int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr e = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = e;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(17/*Argument*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 39: // ArgumentList ::= Argument COMMA ArgumentList
            {
              Alist RESULT = null;
            int aleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int aright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr a = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int alleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int alright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Alist al = (Alist)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new Alist();
               RESULT.e = a;
               RESULT.next = al;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(15/*ArgumentList*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 38: // ArgumentList ::= Argument
            {
              Alist RESULT = null;
            int aleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr a = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new Alist();
               RESULT.e = a;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(15/*ArgumentList*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 37: // ArgumentList ::=
            {
              Alist RESULT = null;
             RESULT = null;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(15/*ArgumentList*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 36: // FunctionCall ::= FunctionName LP ArgumentList RP
            {
              FuncExpr RESULT = null;
            int fnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-3)).left;
            int fnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-3)).right;
            FuncName fn = (FuncName)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-3)).value;
            int alleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left;
            int alright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).right;
            Alist al = (Alist)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-1)).value;
             //RESULT = new FuncExpr(fn.i, al);
             FuncExpr tfe = new FuncExpr(fn.i, al);
             if (!tfe.checkArgumentCount())
             throw new XPathParseException(" argument input for function " + tfe.fname() + " incorrect");
             RESULT = tfe;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(1/*FunctionCall*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 35: // PrimaryExpr ::= FunctionCall
            {
              Expr RESULT = null;
            int fcleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int fcright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            FuncExpr fc = (FuncExpr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = fc;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*PrimaryExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 34: // PrimaryExpr ::= NUMBER
            {
              Expr RESULT = null;
            int neleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int neright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Double ne = (Double)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new NumExpr(ne);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*PrimaryExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 33: // PrimaryExpr ::= LITERAL
            {
              Expr RESULT = null;
            int leleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int leright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            String le = (String)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new LiteralExpr(le);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*PrimaryExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 32: // PrimaryExpr ::= LP Expr RP
            {
              Expr RESULT = null;
            int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left;
            int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).right;
            Expr e = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-1)).value;
             RESULT = e;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*PrimaryExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 31: // PrimaryExpr ::= VariableReference
            {
              Expr RESULT = null;
            int veleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int veright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ve = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = ve;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*PrimaryExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 30: // FilterExpr ::= FilterExpr Predicate
            {
              Expr RESULT = null;
            int feleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left;
            int feright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).right;
            Expr fe = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-1)).value;
            int pleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int pright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Predicate p = (Predicate)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new FilterExpr(fe, p);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*FilterExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 29: // FilterExpr ::= PrimaryExpr
            {
              Expr RESULT = null;
            int peleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int peright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr pe = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = pe;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*FilterExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 28: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath
            {
              Expr RESULT = null;
            int feleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int feright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr fe = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int rlpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int rlpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step rlp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
               my_parser.tempStep = new Step();

             my_parser.tempStep.AxisType=AxisType.DESCENDANT_OR_SELF;
             my_parser.tempNt = new NodeTest();
             my_parser.tempNt.TestType=NodeTest.NODE;

             my_parser.tempStep.NodeTest=my_parser.tempNt;

             my_parser.tempStep.NextStep=rlp;
             rlp.PrevStep=my_parser.tempStep;

             /*parser.tempStep2 = new Step();
             parser.tempNt = new NodeTest();
             parser.tempStep2.AxisType=AxisType.SELF;
             parser.tempNt.TestType=NodeTest.NODE;

             parser.tempStep2.NodeTest=parser.tempNt;

              		     parser.tempStep2.NextStep=parser.tempStep;
             parser.tempStep.PrevStep=parser.tempStep2;*/

             my_parser.tempLPExpr = new LocationPathExpr();
             my_parser.tempLPExpr.Step=my_parser.tempStep;
             RESULT = new PathExpr(fe, my_parser.tempLPExpr);

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*PathExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 27: // PathExpr ::= FilterExpr SLASH RelativeLocationPath
            {
              Expr RESULT = null;
            int feleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int feright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr fe = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int rlpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int rlpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Step rlp = (Step)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
               my_parser.tempLPExpr = new LocationPathExpr();
             my_parser.tempLPExpr.Step=rlp;
             RESULT = new PathExpr(fe, my_parser.tempLPExpr);

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*PathExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 26: // PathExpr ::= FilterExpr
            {
              Expr RESULT = null;
            int feleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int feright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr fe = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
              RESULT = fe;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*PathExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 25: // PathExpr ::= LocationPath
            {
              Expr RESULT = null;
            int lpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int lpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            LocationPathExpr lp = (LocationPathExpr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
              RESULT = lp;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*PathExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 24: // UnionExpr ::= PathExpr UNION UnionExpr
            {
              UnionExpr RESULT = null;
            int peleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int peright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr pe = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int uneleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int uneright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            UnionExpr une = (UnionExpr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;

               		   RESULT = new UnionExpr(pe);
               		   RESULT.next = une;

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(14/*UnionExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 23: // UnionExpr ::= PathExpr
            {
              UnionExpr RESULT = null;
            int peleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int peright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr pe = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT =  new UnionExpr(pe);

              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(14/*UnionExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 22: // UnaryExpr ::= SUB UnaryExpr
            {
              Expr RESULT = null;
            int ueleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int ueright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ue = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new UnaryExpr( BinaryExpr.SUB, ue);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(10/*UnaryExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 21: // UnaryExpr ::= UnionExpr
            {
              Expr RESULT = null;
            int ueleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int ueright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            UnionExpr ue = (UnionExpr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
            if (ue.next == null)
            RESULT = ue.e;
            else
            RESULT = ue;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(10/*UnaryExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 20: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr
            {
              Expr RESULT = null;
            int meleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int meright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr me = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int ueleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int ueright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ue = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(me, BinaryExpr.MOD, ue);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(9/*MultiplicativeExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 19: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr
            {
              Expr RESULT = null;
            int meleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int meright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr me = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int ueleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int ueright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ue = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(me, BinaryExpr.DIV, ue);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(9/*MultiplicativeExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 18: // MultiplicativeExpr ::= MultiplicativeExpr MULT UnaryExpr
            {
              Expr RESULT = null;
            int meleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int meright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr me = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int ueleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int ueright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ue = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(me, BinaryExpr.MULT, ue);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(9/*MultiplicativeExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 17: // MultiplicativeExpr ::= UnaryExpr
            {
              Expr RESULT = null;
            int ueleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int ueright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ue = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = ue;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(9/*MultiplicativeExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 16: // AdditiveExpr ::= AdditiveExpr SUB MultiplicativeExpr
            {
              Expr RESULT = null;
            int aeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int aeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr ae = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int meleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int meright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr me = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(ae, BinaryExpr.SUB, me);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(8/*AdditiveExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 15: // AdditiveExpr ::= AdditiveExpr ADD MultiplicativeExpr
            {
              Expr RESULT = null;
            int aeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int aeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr ae = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int meleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int meright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr me = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(ae, BinaryExpr.ADD, me);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(8/*AdditiveExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 14: // AdditiveExpr ::= MultiplicativeExpr
            {
              Expr RESULT = null;
            int meleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int meright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr me = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = me;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(8/*AdditiveExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 13: // RelationalExpr ::= RelationalExpr GE AdditiveExpr
            {
              Expr RESULT = null;
            int releft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int reright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr re = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int aeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ae = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(re, BinaryExpr.GE, ae);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*RelationalExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 12: // RelationalExpr ::= RelationalExpr LE AdditiveExpr
            {
              Expr RESULT = null;
            int releft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int reright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr re = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int aeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ae = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(re, BinaryExpr.LE, ae);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*RelationalExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 11: // RelationalExpr ::= RelationalExpr GT AdditiveExpr
            {
              Expr RESULT = null;
            int releft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int reright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr re = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int aeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ae = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(re, BinaryExpr.GT, ae);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*RelationalExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 10: // RelationalExpr ::= RelationalExpr LT AdditiveExpr
            {
              Expr RESULT = null;
            int releft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int reright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr re = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int aeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ae = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(re, BinaryExpr.LT, ae);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*RelationalExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 9: // RelationalExpr ::= AdditiveExpr
            {
              Expr RESULT = null;
            int aeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ae = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = ae;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*RelationalExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 8: // EqualityExpr ::= EqualityExpr NE RelationalExpr
            {
              Expr RESULT = null;
            int eeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int eeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr ee = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int releft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int reright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr re = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(ee, BinaryExpr.NE, re);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(5/*EqualityExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 7: // EqualityExpr ::= EqualityExpr EQ RelationalExpr
            {
              Expr RESULT = null;
            int eeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int eeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr ee = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int releft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int reright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr re = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(ee, BinaryExpr.EQ, re);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(5/*EqualityExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 6: // EqualityExpr ::= RelationalExpr
            {
              Expr RESULT = null;
            int releft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int reright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr re = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = re;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(5/*EqualityExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 5: // AndExpr ::= AndExpr AND EqualityExpr
            {
              Expr RESULT = null;
            int aleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int aright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr a = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int eeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int eeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ee = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(a, BinaryExpr.AND, ee);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*AndExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 4: // AndExpr ::= EqualityExpr
            {
              Expr RESULT = null;
            int eeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int eeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr ee = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = ee;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*AndExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 3: // OrExpr ::= OrExpr OR AndExpr
            {
              Expr RESULT = null;
            int oleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left;
            int oright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).right;
            Expr o = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-2)).value;
            int aleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr a = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = new BinaryExpr(o,BinaryExpr.OR,a);
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*OrExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 2: // OrExpr ::= AndExpr
            {
              Expr RESULT = null;
            int aleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int aright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr a = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = a;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*OrExpr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 1: // $START ::= Expr EOF
            {
              object RESULT = null;
            int start_valleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left;
            int start_valright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).right;
            Expr start_val = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-1)).value;
            RESULT = start_val;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(0/*$START*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              /* ACCEPT */
              CUP_parser_parser.done_parsing();
              return CUP_parser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 0: // Expr ::= OrExpr
            {
              Expr RESULT = null;
            int oleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left;
            int oright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right;
            Expr o = (Expr)((TUVienna.CS_CUP.Runtime.Symbol) CUP_parser_stack.elementAt(CUP_parser_top-0)).value;
             RESULT = o;
              CUP_parser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*Expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_parser_stack.elementAt(CUP_parser_top-0)).right, RESULT);
            }
              return CUP_parser_result;

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

            }
        }
Exemplo n.º 19
0
 /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
 /** This method is called when a syntax error has been detected and recovery
    *  is about to be invoked.  Here in the base class we just emit a
    *  "Syntax error" error message.
    *
    * @param cur_token the current lookahead Symbol.
    */
 public void syntax_error(Symbol cur_token)
 {
     report_error("Syntax error", cur_token);
 }
Exemplo n.º 20
0
    /** Method with the actual generated action code. */
    public TUVienna.CS_CUP.Runtime.Symbol CUP_Parser_do_action(
		int                        CUP_Parser_act_num,
		TUVienna.CS_CUP.Runtime.lr_parser CUP_Parser_parser,
		System.Collections.Stack            xstack1,
		int                        CUP_Parser_top)
    {
        /* Symbol object for return from actions */
        mStack CUP_Parser_stack = new mStack(xstack1);
        TUVienna.CS_CUP.Runtime.Symbol CUP_Parser_result;

        /* select the action based on the action number */
        switch (CUP_Parser_act_num) {
        /*. . . . . . . . . . . . . . . . . . . .*/
            case 358: // class_constant ::= fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING
                {
                    Expression RESULT = null;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new PAAMAYIM_NEKUDOTAYIM(fqcn, new VARIABLE(s, sleft, sright), fqcnleft, fqcnright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(48/*class_constant*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 357: // isset_variables ::= isset_variables COMMA variable
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(105/*isset_variables*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 356: // isset_variables ::= variable
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(105/*isset_variables*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 355: // internal_functions_in_yacc ::= T_REQUIRE_ONCE expr
                {
                    object RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(104/*internal_functions_in_yacc*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 354: // internal_functions_in_yacc ::= T_REQUIRE expr
                {
                    object RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(104/*internal_functions_in_yacc*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 353: // internal_functions_in_yacc ::= T_EVAL BRACE_OPEN expr BRACE_CLOSE
                {
                    object RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(104/*internal_functions_in_yacc*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 352: // internal_functions_in_yacc ::= T_INCLUDE_ONCE expr
                {
                    object RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(104/*internal_functions_in_yacc*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 351: // internal_functions_in_yacc ::= T_INCLUDE expr
                {
                    object RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(104/*internal_functions_in_yacc*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 350: // internal_functions_in_yacc ::= T_EMPTY BRACE_OPEN variable BRACE_CLOSE
                {
                    object RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(104/*internal_functions_in_yacc*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 349: // internal_functions_in_yacc ::= T_ISSET BRACE_OPEN isset_variables BRACE_CLOSE
                {
                    object RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(104/*internal_functions_in_yacc*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 348: // encaps_var_offset ::= T_VARIABLE
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new VARIABLE(v, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(47/*encaps_var_offset*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 347: // encaps_var_offset ::= T_NUM_STRING
                {
                    Expression RESULT = null;
                    int nsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int nsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string ns = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new STRING_SCALAR(ns, nsleft, nsright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(47/*encaps_var_offset*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 346: // encaps_var_offset ::= T_STRING
                {
                    Expression RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new STRING_SCALAR(s, sleft, sright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(47/*encaps_var_offset*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 345: // encaps_var ::= T_CURLY_OPEN variable CURLY_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    Report.Error(900, "variable variables");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(46/*encaps_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 344: // encaps_var ::= T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME SQUARE_BRACE_OPEN expr SQUARE_BRACE_CLOSE CURLY_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    Report.Error(900, "variable variables");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(46/*encaps_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 343: // encaps_var ::= T_DOLLAR_OPEN_CURLY_BRACES expr CURLY_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    Report.Error(900, "variable variables");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(46/*encaps_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 342: // encaps_var ::= T_VARIABLE T_OBJECT_OPERATOR T_STRING
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new OBJECT_OPERATOR(new VARIABLE(v, vleft, vright), new VARIABLE(s, sleft, sright), vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(46/*encaps_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 341: // encaps_var ::= T_VARIABLE SQUARE_BRACE_OPEN encaps_var_offset SQUARE_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int evoleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int evoright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression evo = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new VARIABLE(v, new OFFSET(OFFSET.SQUARE, evo, tleft, tright), vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(46/*encaps_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 340: // encaps_var ::= T_VARIABLE
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new VARIABLE(v, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(46/*encaps_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 339: // encaps_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 338: // encaps_list ::= encaps_list T_OBJECT_OPERATOR
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int ooleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ooright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string oo = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(oo);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 337: // encaps_list ::= encaps_list CURLY_BRACE_CLOSE
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int cbcleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cbcright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string cbc = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(cbc);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 336: // encaps_list ::= encaps_list CURLY_BRACE_OPEN
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int cboleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cboright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string cbo = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(cbo);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 335: // encaps_list ::= encaps_list SQUARE_BRACE_CLOSE
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int sbcleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sbcright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string sbc = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(sbc);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 334: // encaps_list ::= encaps_list SQUARE_BRACE_OPEN
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int sboleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sboright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string sbo = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(sbo);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 333: // encaps_list ::= encaps_list T_BAD_CHARACTER
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int bcleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int bcright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string bc = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(bc);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 332: // encaps_list ::= encaps_list T_CHARACTER
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int cleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string c = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(c);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 331: // encaps_list ::= encaps_list T_ENCAPSED_AND_WHITESPACE
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eawleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eawright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string eaw = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(eaw);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 330: // encaps_list ::= encaps_list T_NUM_STRING
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int nsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int nsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string ns = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(ns);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 329: // encaps_list ::= encaps_list T_STRING
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(s);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 328: // encaps_list ::= encaps_list encaps_var
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int evleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int evright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ev = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(ev);
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(82/*encaps_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 327: // non_empty_array_pair_list ::= AND w_variable
                {
                    ArrayList RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList neapl = new ArrayList();
                    neapl.Add(new ARRAY_PAIR(null, new REFERENCE(wv, tleft, tright), tleft, tright));
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(81/*non_empty_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 326: // non_empty_array_pair_list ::= expr T_DOUBLE_ARROW AND w_variable
                {
                    ArrayList RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList neapl = new ArrayList();
                    neapl.Add(new ARRAY_PAIR(e, new REFERENCE(wv, tleft, tright), eleft, eright));
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(81/*non_empty_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 325: // non_empty_array_pair_list ::= non_empty_array_pair_list COMMA AND w_variable
                {
                    ArrayList RESULT = null;
                    int neaplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int neaplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    ArrayList neapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    neapl.Add(new ARRAY_PAIR(null, new REFERENCE(wv, tleft, tright), tleft, tright));
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(81/*non_empty_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 324: // non_empty_array_pair_list ::= non_empty_array_pair_list COMMA expr T_DOUBLE_ARROW AND w_variable
                {
                    ArrayList RESULT = null;
                    int neaplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int neaplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    ArrayList neapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    neapl.Add(new ARRAY_PAIR(e, new REFERENCE(wv, tleft, tright), eleft, eright));
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(81/*non_empty_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 323: // non_empty_array_pair_list ::= expr
                {
                    ArrayList RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList neapl = new ArrayList();
                    neapl.Add(new ARRAY_PAIR(null, e, eleft, eright));
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(81/*non_empty_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 322: // non_empty_array_pair_list ::= expr T_DOUBLE_ARROW expr
                {
                    ArrayList RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList neapl = new ArrayList();
                    neapl.Add(new ARRAY_PAIR(e1, e2, e1left, e1right));
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(81/*non_empty_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 321: // non_empty_array_pair_list ::= non_empty_array_pair_list COMMA expr
                {
                    ArrayList RESULT = null;
                    int neaplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int neaplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ArrayList neapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    neapl.Add(new ARRAY_PAIR(null, e, eleft, eright));
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(81/*non_empty_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 320: // non_empty_array_pair_list ::= non_empty_array_pair_list COMMA expr T_DOUBLE_ARROW expr
                {
                    ArrayList RESULT = null;
                    int neaplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int neaplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    ArrayList neapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    neapl.Add(new ARRAY_PAIR(e1, e2, e1left, e1right));
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(81/*non_empty_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 319: // array_pair_list ::= non_empty_array_pair_list possible_comma
                {
                    ArrayList RESULT = null;
                    int neaplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int neaplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList neapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = neapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(80/*array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 318: // array_pair_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(80/*array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 317: // assignment_list_element ::=
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(103/*assignment_list_element*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 316: // assignment_list_element ::= T_LIST BRACE_OPEN assignment_list BRACE_CLOSE
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(103/*assignment_list_element*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 315: // assignment_list_element ::= variable
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(103/*assignment_list_element*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 314: // assignment_list ::= assignment_list_element
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(102/*assignment_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 313: // assignment_list ::= assignment_list COMMA assignment_list_element
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(102/*assignment_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 312: // simple_indirect_reference ::= simple_indirect_reference DOLLAR
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(101/*simple_indirect_reference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 311: // simple_indirect_reference ::= DOLLAR
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(101/*simple_indirect_reference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 310: // variable_name ::= CURLY_BRACE_OPEN expr CURLY_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    Report.Error(900, "variable variables");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(45/*variable_name*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 309: // variable_name ::= T_STRING
                {
                    Expression RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new VARIABLE(s, sleft, sright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(45/*variable_name*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 308: // object_dim_list ::= variable_name
                {
                    Expression RESULT = null;
                    int vnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression vn = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = vn;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(44/*object_dim_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 307: // object_dim_list ::= object_dim_list CURLY_BRACE_OPEN expr CURLY_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    Report.Error(900, "offset");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(44/*object_dim_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 306: // object_dim_list ::= object_dim_list SQUARE_BRACE_OPEN dim_offset SQUARE_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int odlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int odlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression odl = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int dosleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int dosright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression dos = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    ((VARIABLE)odl).Offset = new OFFSET(OFFSET.SQUARE, dos, tleft, tright);
                    RESULT = odl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(44/*object_dim_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 305: // object_property ::= variable_without_objects
                {
                    Expression RESULT = null;
                    int wvoleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvoright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wvo = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = wvo;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(43/*object_property*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 304: // object_property ::= object_dim_list
                {
                    Expression RESULT = null;
                    int odlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int odlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression odl = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = odl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(43/*object_property*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 303: // dim_offset ::= expr
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = e;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(42/*dim_offset*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 302: // dim_offset ::=
                {
                    Expression RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(42/*dim_offset*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 301: // compound_variable ::= DOLLAR CURLY_BRACE_OPEN expr CURLY_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    Report.Error(900, "variable variables");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(41/*compound_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 300: // compound_variable ::= T_VARIABLE
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new VARIABLE(v, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(41/*compound_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 299: // reference_variable ::= compound_variable
                {
                    Expression RESULT = null;
                    int cvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression cv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = cv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(40/*reference_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 298: // reference_variable ::= reference_variable CURLY_BRACE_OPEN expr CURLY_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    Report.Error(900, "offset");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(40/*reference_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 297: // reference_variable ::= reference_variable SQUARE_BRACE_OPEN dim_offset SQUARE_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int rvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int rvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression rv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int dofleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int dofright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression dof = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    ((VARIABLE)rv).Offset = new OFFSET(OFFSET.SQUARE, dof, tleft, tright);
                    RESULT = rv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(40/*reference_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 296: // base_variable ::= static_member
                {
                    Expression RESULT = null;
                    int smleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int smright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression sm = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = sm;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(39/*base_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 295: // base_variable ::= simple_indirect_reference reference_variable
                {
                    Expression RESULT = null;
                    Report.Error(900, "variable variables");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(39/*base_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 294: // base_variable ::= reference_variable
                {
                    Expression RESULT = null;
                    int rvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int rvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression rv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = rv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(39/*base_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 293: // base_variable_with_function_calls ::= function_call
                {
                    Expression RESULT = null;
                    int fcleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fcright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression fc = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = fc;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(38/*base_variable_with_function_calls*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 292: // base_variable_with_function_calls ::= base_variable
                {
                    Expression RESULT = null;
                    int bvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int bvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression bv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = bv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(38/*base_variable_with_function_calls*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 291: // static_member ::= fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects
                {
                    Expression RESULT = null;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int vwoleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vworight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression vwo = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new PAAMAYIM_NEKUDOTAYIM(fqcn, vwo, fqcnleft, fqcnright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(37/*static_member*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 290: // variable_without_objects ::= simple_indirect_reference reference_variable
                {
                    Expression RESULT = null;
                    Report.Error(900, "variable variables");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(36/*variable_without_objects*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 289: // variable_without_objects ::= reference_variable
                {
                    Expression RESULT = null;
                    int rvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int rvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression rv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = rv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(36/*variable_without_objects*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 288: // method_or_not ::=
                {
                    ExpressionList RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(63/*method_or_not*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 287: // method_or_not ::= BRACE_OPEN function_call_parameter_list BRACE_CLOSE
                {
                    ExpressionList RESULT = null;
                    int fcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int fcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList fcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = fcpl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(63/*method_or_not*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 286: // variable_property ::= T_OBJECT_OPERATOR object_property method_or_not
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int opleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int opright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression op = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int monleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int monright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ExpressionList mon = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    Expression expr2;
                    if (mon == null)
                        expr2 = (VARIABLE)op;
                    else
                        expr2 = new FUNCTION_CALL(((VARIABLE)op).Name, mon, opleft, opright);
                    RESULT = new OBJECT_OPERATOR(null, expr2, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(35/*variable_property*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 285: // variable_properties ::=
                {
                    ExpressionList RESULT = null;
                    RESULT = new ExpressionList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(62/*variable_properties*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 284: // variable_properties ::= variable_properties variable_property
                {
                    ExpressionList RESULT = null;
                    int vpsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int vpsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList vps = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int vpleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vpright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression vp = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    vps.Add(vp);
                    RESULT = vps;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(62/*variable_properties*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 283: // variable ::= base_variable_with_function_calls
                {
                    Expression RESULT = null;
                    int bvwfcleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int bvwfcright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression bvwfc = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = bvwfc;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(34/*variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 282: // variable ::= base_variable_with_function_calls T_OBJECT_OPERATOR object_property method_or_not variable_properties
                {
                    Expression RESULT = null;
                    int bvwfcleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int bvwfcright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    Expression bvwfc = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int opleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int opright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression op = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int monleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int monright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList mon = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int vpsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vpsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ExpressionList vps = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    Expression expr;
                    if (mon == null)
                        expr = (VARIABLE)op;
                    else
                        expr = new FUNCTION_CALL(((VARIABLE)op).Name, mon, opleft, opright);
                    if (vps.Count() == 0) {
                        RESULT = new OBJECT_OPERATOR(bvwfc, expr, bvwfcleft, bvwfcright);
                    } else {
                        for (int i = vps.Count() - 1; i > 0; i--) {
                            OBJECT_OPERATOR curr = (OBJECT_OPERATOR)vps.Get(i);
                            OBJECT_OPERATOR prev = (OBJECT_OPERATOR)vps.Get(i - 1);
                            curr.Expr1 = prev.Expr2;
                            prev.Expr2 = curr;
                        }
                        ((OBJECT_OPERATOR)vps.Get(0)).Expr1 = expr;
                        RESULT = new OBJECT_OPERATOR(bvwfc, vps.Get(0), bvwfcleft, bvwfcright);
                    }

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(34/*variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 281: // rw_variable ::= variable
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = v;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(33/*rw_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 280: // w_variable ::= variable
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = v;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(32/*w_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 279: // r_variable ::= variable
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = v;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(31/*r_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 278: // expr ::= expr_without_variable
                {
                    Expression RESULT = null;
                    int ewvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ewvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ewv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = ewv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(30/*expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 277: // expr ::= r_variable
                {
                    Expression RESULT = null;
                    int rleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int rright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression r = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = r;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(30/*expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 276: // non_empty_static_array_pair_list ::= static_scalar
                {
                    ArrayList RESULT = null;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList nesapl = new ArrayList();
                    nesapl.Add(new ARRAY_PAIR(null, ss, ssleft, ssright));
                    RESULT = nesapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(79/*non_empty_static_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 275: // non_empty_static_array_pair_list ::= static_scalar T_DOUBLE_ARROW static_scalar
                {
                    ArrayList RESULT = null;
                    int ss1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int ss1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression ss1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ss2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ss2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList nesapl = new ArrayList();
                    nesapl.Add(new ARRAY_PAIR(ss1, ss2, ss1left, ss1right));
                    RESULT = nesapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(79/*non_empty_static_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 274: // non_empty_static_array_pair_list ::= non_empty_static_array_pair_list COMMA static_scalar
                {
                    ArrayList RESULT = null;
                    int nesaplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int nesaplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ArrayList nesapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nesapl.Add(new ARRAY_PAIR(null, ss, ssleft, ssright));
                    RESULT = nesapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(79/*non_empty_static_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 273: // non_empty_static_array_pair_list ::= non_empty_static_array_pair_list COMMA static_scalar T_DOUBLE_ARROW static_scalar
                {
                    ArrayList RESULT = null;
                    int nesaplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int nesaplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    ArrayList nesapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int ss1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int ss1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression ss1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ss2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ss2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nesapl.Add(new ARRAY_PAIR(ss1, ss2, ss1left, ss1right));
                    RESULT = nesapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(79/*non_empty_static_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 272: // possible_comma ::= COMMA
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(94/*possible_comma*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 271: // possible_comma ::=
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(94/*possible_comma*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 270: // static_array_pair_list ::= non_empty_static_array_pair_list
                {
                    ArrayList RESULT = null;
                    int nesaplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int nesaplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList nesapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = nesapl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(78/*static_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 269: // static_array_pair_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(78/*static_array_pair_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 268: // scalar ::= T_START_HEREDOC encaps_list T_END_HEREDOC
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new HEREDOC(el, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 267: // scalar ::= SINGLE_QUOTE encaps_list SINGLE_QUOTE
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new SINGLE_QUOTES(el, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 266: // scalar ::= DOUBLE_QUOTES encaps_list DOUBLE_QUOTES
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new DOUBLE_QUOTES(el, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 265: // scalar ::= common_scalar
                {
                    Expression RESULT = null;
                    int csleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int csright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression cs = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = cs;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 264: // scalar ::= class_constant
                {
                    Expression RESULT = null;
                    int ccleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ccright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression cc = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = cc;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 263: // scalar ::= T_STRING_VARNAME
                {
                    Expression RESULT = null;
                    int svleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int svright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string sv = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new VARIABLE(sv, svleft, svright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 262: // scalar ::= T_STRING
                {
                    Expression RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    if (s == "true".ToLower() || s == "false".ToLower())
                        RESULT = new STRING_SCALAR(s, sleft, sright);
                    else
                        RESULT = new CONSTANT(s, sleft, sright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(29/*scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 261: // static_class_constant ::= T_STRING T_PAAMAYIM_NEKUDOTAYIM T_STRING
                {
                    Expression RESULT = null;
                    int s1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int s1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string s1 = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int s2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int s2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s2 = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new PAAMAYIM_NEKUDOTAYIM(s1, new VARIABLE(s2, s1left, s1right), s1left, s1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(28/*static_class_constant*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 260: // static_scalar ::= static_class_constant
                {
                    Expression RESULT = null;
                    int sccleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sccright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression scc = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = scc;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*static_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 259: // static_scalar ::= T_ARRAY BRACE_OPEN static_array_pair_list BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int saplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int saplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList sapl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new ARRAY(sapl, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*static_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 258: // static_scalar ::= MINUS static_scalar
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MINUS(new LNUMBER_SCALAR(0, tleft, tright), ss, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*static_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 257: // static_scalar ::= PLUS static_scalar
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new PLUS(new LNUMBER_SCALAR(0, tleft, tright), ss, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*static_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 256: // static_scalar ::= T_STRING
                {
                    Expression RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    if (s == "true".ToLower() || s == "false".ToLower())
                        RESULT = new STRING_SCALAR(s, sleft, sright);
                    else
                        RESULT = new CONSTANT(s, sleft, sright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*static_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 255: // static_scalar ::= common_scalar
                {
                    Expression RESULT = null;
                    int csleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int csright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression cs = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = cs;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(27/*static_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 254: // common_scalar ::= T_FUNC_C
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MAGIC_CONSTANT(MAGIC_CONSTANT.FUNCTION, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*common_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 253: // common_scalar ::= T_METHOD_C
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MAGIC_CONSTANT(MAGIC_CONSTANT.METHOD, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*common_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 252: // common_scalar ::= T_CLASS_C
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MAGIC_CONSTANT(MAGIC_CONSTANT.CLASS, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*common_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 251: // common_scalar ::= T_FILE
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MAGIC_CONSTANT(MAGIC_CONSTANT.FILE, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*common_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 250: // common_scalar ::= T_LINE
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MAGIC_CONSTANT(MAGIC_CONSTANT.LINE, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*common_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 249: // common_scalar ::= T_CONSTANT_ENCAPSED_STRING
                {
                    Expression RESULT = null;
                    int cesleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cesright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string ces = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new STRING_SCALAR(ces, cesleft, cesright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*common_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 248: // common_scalar ::= T_DNUMBER
                {
                    Expression RESULT = null;
                    int dleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int dright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string d = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new DNUMBER_SCALAR(System.Convert.ToDouble(d), dleft, dright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*common_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 247: // common_scalar ::= T_LNUMBER
                {
                    Expression RESULT = null;
                    int lleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int lright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string l = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new LNUMBER_SCALAR(System.Convert.ToInt32(l), lleft, lright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(26/*common_scalar*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 246: // ctor_arguments ::= BRACE_OPEN function_call_parameter_list BRACE_CLOSE
                {
                    ExpressionList RESULT = null;
                    int fcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int fcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList fcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = fcpl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(61/*ctor_arguments*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 245: // ctor_arguments ::=
                {
                    ExpressionList RESULT = null;
                    RESULT = new ExpressionList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(61/*ctor_arguments*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 244: // exit_expr ::= BRACE_OPEN expr BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = e;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*exit_expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 243: // exit_expr ::= BRACE_OPEN BRACE_CLOSE
                {
                    Expression RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*exit_expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 242: // exit_expr ::=
                {
                    Expression RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(25/*exit_expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 241: // dynamic_class_name_variable_property ::= T_OBJECT_OPERATOR object_property
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(100/*dynamic_class_name_variable_property*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 240: // dynamic_class_name_variable_properties ::=
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(99/*dynamic_class_name_variable_properties*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 239: // dynamic_class_name_variable_properties ::= dynamic_class_name_variable_properties dynamic_class_name_variable_property
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(99/*dynamic_class_name_variable_properties*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 238: // dynamic_class_name_reference ::= base_variable
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(98/*dynamic_class_name_reference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 237: // dynamic_class_name_reference ::= base_variable T_OBJECT_OPERATOR object_property dynamic_class_name_variable_properties
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(98/*dynamic_class_name_reference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 236: // class_name_reference ::= dynamic_class_name_reference
                {
                    string RESULT = null;
                    Report.Error(900, "dynamic class name references");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(87/*class_name_reference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 235: // class_name_reference ::= fully_qualified_class_name
                {
                    string RESULT = null;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = fqcn;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(87/*class_name_reference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 234: // fully_qualified_class_name ::= fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING
                {
                    string RESULT = null;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = fqcn + "::" + s;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(86/*fully_qualified_class_name*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 233: // fully_qualified_class_name ::= T_STRING
                {
                    string RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = s;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(86/*fully_qualified_class_name*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 232: // function_call ::= variable_without_objects BRACE_OPEN function_call_parameter_list BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int vwoleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int vworight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression vwo = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int fcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int fcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList fcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    Report.Error(900, "variable functions");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*function_call*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 231: // function_call ::= fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects BRACE_OPEN function_call_parameter_list BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    Report.Error(900, "variable functions");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*function_call*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 230: // function_call ::= fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING BRACE_OPEN function_call_parameter_list BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int fcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int fcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList fcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new PAAMAYIM_NEKUDOTAYIM(fqcn, new FUNCTION_CALL(s, fcpl, fqcnleft, fqcnright), fqcnleft, fqcnright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*function_call*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 229: // function_call ::= T_STRING BRACE_OPEN function_call_parameter_list BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int fcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int fcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList fcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new FUNCTION_CALL(s, fcpl, sleft, sright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(24/*function_call*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 228: // expr_without_variable ::= T_PRINT expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new PRINT(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 227: // expr_without_variable ::= BACK_QUOTE encaps_list BACK_QUOTE
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 226: // expr_without_variable ::= T_ARRAY BRACE_OPEN array_pair_list BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int aplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int aplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList apl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new ARRAY(apl, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 225: // expr_without_variable ::= scalar
                {
                    Expression RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression s = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = s;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 224: // expr_without_variable ::= AT expr
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 223: // expr_without_variable ::= T_EXIT exit_expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eeright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ee = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new EXIT(ee, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 222: // expr_without_variable ::= T_UNSET_CAST expr
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 221: // expr_without_variable ::= T_BOOL_CAST expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new BOOL_CAST(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 220: // expr_without_variable ::= T_OBJECT_CAST expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new OBJECT_CAST(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 219: // expr_without_variable ::= T_ARRAY_CAST expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new ARRAY_CAST(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 218: // expr_without_variable ::= T_STRING_CAST expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new STRING_CAST(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 217: // expr_without_variable ::= T_DOUBLE_CAST expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new DOUBLE_CAST(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 216: // expr_without_variable ::= T_INT_CAST expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new INT_CAST(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 215: // expr_without_variable ::= internal_functions_in_yacc
                {
                    Expression RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 214: // expr_without_variable ::= expr QUESTION expr COLON expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e3left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e3right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e3 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new IF_EXPR(e1, e2, e3, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 213: // expr_without_variable ::= BRACE_OPEN expr BRACE_CLOSE
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = e;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 212: // expr_without_variable ::= expr T_INSTANCEOF class_name_reference
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int cnrleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cnrright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string cnr = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new INSTANCEOF(e, cnr, eleft, eright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 211: // expr_without_variable ::= expr T_IS_GREATER_OR_EQUAL expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new IS_GREATER_OR_EQUAL(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 210: // expr_without_variable ::= expr GREATER expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new GREATER(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 209: // expr_without_variable ::= expr T_IS_LOWER_OR_EQUAL expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new IS_LOWER_OR_EQUAL(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 208: // expr_without_variable ::= expr LOWER expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new LOWER(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 207: // expr_without_variable ::= expr T_IS_NOT_EQUAL expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new IS_NOT_EQUAL(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 206: // expr_without_variable ::= expr T_IS_EQUAL expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new IS_EQUAL(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 205: // expr_without_variable ::= expr T_IS_NOT_IDENTICAL expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new IS_NOT_IDENTICAL(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 204: // expr_without_variable ::= expr T_IS_IDENTICAL expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new IS_IDENTICAL(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 203: // expr_without_variable ::= NOT expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new NOT(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 202: // expr_without_variable ::= BOOLEAN_NOT expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new BOOLEAN_NOT(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 201: // expr_without_variable ::= MINUS expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MINUS(new LNUMBER_SCALAR(0, tleft, tright), e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 200: // expr_without_variable ::= PLUS expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new PLUS(new LNUMBER_SCALAR(0, tleft, tright), e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 199: // expr_without_variable ::= expr T_SR expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new SR(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 198: // expr_without_variable ::= expr T_SL expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new SL(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 197: // expr_without_variable ::= expr MOD expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MOD(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 196: // expr_without_variable ::= expr DIV expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new DIV(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 195: // expr_without_variable ::= expr TIMES expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new TIMES(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 194: // expr_without_variable ::= expr MINUS expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MINUS(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 193: // expr_without_variable ::= expr PLUS expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new PLUS(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 192: // expr_without_variable ::= expr CONCAT expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new CONCAT(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 191: // expr_without_variable ::= expr XOR expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new XOR(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 190: // expr_without_variable ::= expr AND expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new AND(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 189: // expr_without_variable ::= expr OR expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new OR(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 188: // expr_without_variable ::= expr T_LOGICAL_XOR expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new LOGICAL_XOR(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 187: // expr_without_variable ::= expr T_LOGICAL_AND expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new LOGICAL_AND(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 186: // expr_without_variable ::= expr T_LOGICAL_OR expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new LOGICAL_OR(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 185: // expr_without_variable ::= expr T_BOOLEAN_AND expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new BOOLEAN_AND(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 184: // expr_without_variable ::= expr T_BOOLEAN_OR expr
                {
                    Expression RESULT = null;
                    int e1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int e1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int e2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int e2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new BOOLEAN_OR(e1, e2, e1left, e1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 183: // expr_without_variable ::= T_DEC rw_variable
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int rwleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int rwright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression rw = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new DEC(rw, 0, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 182: // expr_without_variable ::= rw_variable T_DEC
                {
                    Expression RESULT = null;
                    int rwleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int rwright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression rw = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new DEC(rw, 1, rwleft, rwright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 181: // expr_without_variable ::= T_INC rw_variable
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int rwleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int rwright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression rw = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new INC(rw, 0, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 180: // expr_without_variable ::= rw_variable T_INC
                {
                    Expression RESULT = null;
                    int rwleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int rwright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression rw = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new INC(rw, 1, rwleft, rwright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 179: // expr_without_variable ::= variable T_SR_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new SR_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 178: // expr_without_variable ::= variable T_SL_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new SL_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 177: // expr_without_variable ::= variable T_XOR_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new XOR_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 176: // expr_without_variable ::= variable T_OR_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new OR_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 175: // expr_without_variable ::= variable T_AND_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new AND_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 174: // expr_without_variable ::= variable T_MOD_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MOD_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 173: // expr_without_variable ::= variable T_CONCAT_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new CONCAT_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 172: // expr_without_variable ::= variable T_DIV_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new DIV_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 171: // expr_without_variable ::= variable T_MUL_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MUL_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 170: // expr_without_variable ::= variable T_MINUS_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new MINUS_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 169: // expr_without_variable ::= variable T_PLUS_EQUAL expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new PLUS_EQUAL(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 168: // expr_without_variable ::= T_CLONE expr
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new CLONE(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 167: // expr_without_variable ::= T_NEW class_name_reference ctor_arguments
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int cnrleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int cnrright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string cnr = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int caleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int caright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ExpressionList ca = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new NEW(cnr, ca, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 166: // expr_without_variable ::= variable EQUALS AND T_NEW class_name_reference ctor_arguments
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int cnrleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int cnrright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string cnr = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int caleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int caright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ExpressionList ca = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    Report.Warn(303);
                    RESULT = new EQUALS(v, new NEW(cnr, ca, tleft, tright), vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 165: // expr_without_variable ::= variable EQUALS AND variable
                {
                    Expression RESULT = null;
                    int v1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int v1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression v1 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int v2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int v2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression v2 = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new EQUALS(v1, new REFERENCE(v2, v1left, v1right), v1left, v1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 164: // expr_without_variable ::= variable EQUALS expr
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new EQUALS(v, e, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 163: // expr_without_variable ::= T_LIST BRACE_OPEN assignment_list BRACE_CLOSE EQUALS expr
                {
                    Expression RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(23/*expr_without_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 162: // non_empty_for_expr ::= expr
                {
                    ExpressionList RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ExpressionList nefe = new ExpressionList();
                    nefe.Add(e);
                    RESULT = nefe;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(60/*non_empty_for_expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 161: // non_empty_for_expr ::= non_empty_for_expr COMMA expr
                {
                    ExpressionList RESULT = null;
                    int nefeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int neferight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList nefe = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nefe.Add(e);
                    RESULT = nefe;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(60/*non_empty_for_expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 160: // for_expr ::= non_empty_for_expr
                {
                    ExpressionList RESULT = null;
                    int nefeleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int neferight = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ExpressionList nefe = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = nefe;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(59/*for_expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 159: // for_expr ::=
                {
                    ExpressionList RESULT = null;
                    RESULT = new ExpressionList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(59/*for_expr*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 158: // echo_expr_list ::= expr
                {
                    ExpressionList RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ExpressionList eel = new ExpressionList();
                    eel.Add(e);
                    RESULT = eel;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(58/*echo_expr_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 157: // echo_expr_list ::= echo_expr_list COMMA expr
                {
                    ExpressionList RESULT = null;
                    int eelleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int eelright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList eel = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    eel.Add(e);
                    RESULT = eel;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(58/*echo_expr_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 156: // class_constant_declaration ::= T_CONST T_STRING EQUALS static_scalar
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList modifiers = new ArrayList();
                    modifiers.Add(Modifiers.CONST);
                    ArrayList names = new ArrayList();
                    names.Add(s);
                    RESULT = new CLASS_VARIABLE_DECLARATION(modifiers, names, new ExpressionList(ss), tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(18/*class_constant_declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 155: // class_constant_declaration ::= class_constant_declaration COMMA T_STRING EQUALS static_scalar
                {
                    Statement RESULT = null;
                    int ccdleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int ccdright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    Statement ccd = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ((CLASS_VARIABLE_DECLARATION)ccd).Names.Add(s);
                    ((CLASS_VARIABLE_DECLARATION)ccd).Values.Add(ss);
                    RESULT = ccd;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(18/*class_constant_declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 154: // class_variable_declaration ::= T_VARIABLE EQUALS static_scalar
                {
                    Statement RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList names = new ArrayList();
                    names.Add(v);
                    RESULT = new CLASS_VARIABLE_DECLARATION(new ArrayList(), names, new ExpressionList(ss), vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(17/*class_variable_declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 153: // class_variable_declaration ::= T_VARIABLE
                {
                    Statement RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList names = new ArrayList();
                    names.Add(v);
                    RESULT = new CLASS_VARIABLE_DECLARATION(new ArrayList(), names, new ExpressionList(null), vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(17/*class_variable_declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 152: // class_variable_declaration ::= class_variable_declaration COMMA T_VARIABLE EQUALS static_scalar
                {
                    Statement RESULT = null;
                    int cvdleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int cvdright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    Statement cvd = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ((CLASS_VARIABLE_DECLARATION)cvd).Names.Add(v);
                    ((CLASS_VARIABLE_DECLARATION)cvd).Values.Add(ss);
                    RESULT = cvd;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(17/*class_variable_declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 151: // class_variable_declaration ::= class_variable_declaration COMMA T_VARIABLE
                {
                    Statement RESULT = null;
                    int cvdleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int cvdright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Statement cvd = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ((CLASS_VARIABLE_DECLARATION)cvd).Names.Add(v);
                    ((CLASS_VARIABLE_DECLARATION)cvd).Values.Add(null);
                    RESULT = cvd;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(17/*class_variable_declaration*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 150: // member_modifier ::= T_FINAL
                {
                    object RESULT = null;
                    RESULT = PHP.Compiler.Modifiers.FINAL;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(93/*member_modifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 149: // member_modifier ::= T_ABSTRACT
                {
                    object RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = PHP.Compiler.Modifiers.ABSTRACT;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(93/*member_modifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 148: // member_modifier ::= T_STATIC
                {
                    object RESULT = null;
                    RESULT = PHP.Compiler.Modifiers.STATIC;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(93/*member_modifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 147: // member_modifier ::= T_PRIVATE
                {
                    object RESULT = null;
                    RESULT = PHP.Compiler.Modifiers.PRIVATE;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(93/*member_modifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 146: // member_modifier ::= T_PROTECTED
                {
                    object RESULT = null;
                    RESULT = PHP.Compiler.Modifiers.PROTECTED;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(93/*member_modifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 145: // member_modifier ::= T_PUBLIC
                {
                    object RESULT = null;
                    RESULT = PHP.Compiler.Modifiers.PUBLIC;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(93/*member_modifier*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 144: // non_empty_member_modifiers ::= non_empty_member_modifiers member_modifier
                {
                    ArrayList RESULT = null;
                    int nemmleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int nemmright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList nemm = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int mmleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int mmright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    object mm = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nemm.Add(mm);
                    RESULT = nemm;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(77/*non_empty_member_modifiers*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 143: // non_empty_member_modifiers ::= member_modifier
                {
                    ArrayList RESULT = null;
                    int mmleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int mmright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    object mm = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList nemm = new ArrayList();
                    nemm.Add(mm);
                    RESULT = nemm;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(77/*non_empty_member_modifiers*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 142: // method_modifiers ::= non_empty_member_modifiers
                {
                    ArrayList RESULT = null;
                    int nemmleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int nemmright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList nemm = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = nemm;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(76/*method_modifiers*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 141: // method_modifiers ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(76/*method_modifiers*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 140: // variable_modifiers ::= T_VAR
                {
                    ArrayList RESULT = null;
                    ArrayList vm = new ArrayList();
                    vm.Add(6);
                    RESULT = vm;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(75/*variable_modifiers*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 139: // variable_modifiers ::= non_empty_member_modifiers
                {
                    ArrayList RESULT = null;
                    int nemmleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int nemmright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList nemm = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = nemm;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(75/*variable_modifiers*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 138: // method_body ::= CURLY_BRACE_OPEN inner_statement_list CURLY_BRACE_CLOSE
                {
                    StatementList RESULT = null;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = istl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(52/*method_body*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 137: // method_body ::= SEMICOLON
                {
                    StatementList RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(52/*method_body*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 136: // class_statement ::= method_modifiers T_FUNCTION is_reference T_STRING BRACE_OPEN parameter_list BRACE_CLOSE method_body
                {
                    Statement RESULT = null;
                    int mmleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left;
                    int mmright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).right;
                    ArrayList mm = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).value;
                    int fleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left;
                    int fright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).right;
                    string f = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).value;
                    int irleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int irright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    object ir = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int plleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int plright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ArrayList pl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int mbleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int mbright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    StatementList mb = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new FUNCTION_DECLARATION(mm, (bool)ir, s, pl, mb, (mmleft == 1) ? fleft : mmleft, (mmright == 1) ? fright : mmright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*class_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 135: // class_statement ::= class_constant_declaration SEMICOLON
                {
                    Statement RESULT = null;
                    int ccdleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int ccdright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Statement ccd = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = ccd;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*class_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 134: // class_statement ::= variable_modifiers class_variable_declaration SEMICOLON
                {
                    Statement RESULT = null;
                    int vmleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vmright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ArrayList vm = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int cvdleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int cvdright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Statement cvd = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    ((CLASS_VARIABLE_DECLARATION)cvd).Modifiers = vm;
                    RESULT = cvd;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(16/*class_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 133: // class_statement_list ::=
                {
                    StatementList RESULT = null;
                    RESULT = new StatementList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(51/*class_statement_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 132: // class_statement_list ::= class_statement_list class_statement
                {
                    StatementList RESULT = null;
                    int cstlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int cstlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList cstl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int cstleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cstright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement cst = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    cstl.Add(cst);
                    RESULT = cstl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(51/*class_statement_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 131: // static_var_list ::= T_VARIABLE EQUALS static_scalar
                {
                    ExpressionList RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new ExpressionList(new EQUALS(new VARIABLE(v, vleft, vright), ss, vleft, vright));
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(57/*static_var_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 130: // static_var_list ::= T_VARIABLE
                {
                    ExpressionList RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new ExpressionList(new VARIABLE(v, vleft, vright));
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(57/*static_var_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 129: // static_var_list ::= static_var_list COMMA T_VARIABLE EQUALS static_scalar
                {
                    ExpressionList RESULT = null;
                    int svlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int svlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    ExpressionList svl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    svl.Add(new EQUALS(new VARIABLE(v, vleft, vright), ss, vleft, vright));
                    RESULT = svl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(57/*static_var_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 128: // static_var_list ::= static_var_list COMMA T_VARIABLE
                {
                    ExpressionList RESULT = null;
                    int svlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int svlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList svl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    svl.Add(new VARIABLE(v, vleft, vright));
                    RESULT = svl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(57/*static_var_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 127: // global_var ::= DOLLAR CURLY_BRACE_OPEN expr CURLY_BRACE_CLOSE
                {
                    Expression RESULT = null;
                    Report.Error(900, "variable variables");
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*global_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 126: // global_var ::= DOLLAR r_variable
                {
                    Expression RESULT = null;
                    int rvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int rvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression rv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = (VARIABLE)rv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*global_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 125: // global_var ::= T_VARIABLE
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new VARIABLE(v, vleft, vright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(22/*global_var*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 124: // global_var_list ::= global_var
                {
                    ExpressionList RESULT = null;
                    int gvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int gvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression gv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new ExpressionList(gv);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(56/*global_var_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 123: // global_var_list ::= global_var_list COMMA global_var
                {
                    ExpressionList RESULT = null;
                    int gvlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int gvlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList gvl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int gvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int gvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression gv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    gvl.Add(gv);
                    RESULT = gvl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(56/*global_var_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 122: // non_empty_function_call_parameter_list ::= non_empty_function_call_parameter_list COMMA AND w_variable
                {
                    ExpressionList RESULT = null;
                    int nefcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int nefcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    ExpressionList nefcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nefcpl.Add(new REFERENCE(wv, tleft, tright));
                    RESULT = nefcpl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(55/*non_empty_function_call_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 121: // non_empty_function_call_parameter_list ::= non_empty_function_call_parameter_list COMMA variable
                {
                    ExpressionList RESULT = null;
                    int nefcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int nefcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList nefcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nefcpl.Add(v);
                    RESULT = nefcpl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(55/*non_empty_function_call_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 120: // non_empty_function_call_parameter_list ::= non_empty_function_call_parameter_list COMMA expr_without_variable
                {
                    ExpressionList RESULT = null;
                    int nefcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int nefcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList nefcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ewvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ewvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ewv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nefcpl.Add(ewv);
                    RESULT = nefcpl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(55/*non_empty_function_call_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 119: // non_empty_function_call_parameter_list ::= AND w_variable
                {
                    ExpressionList RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new ExpressionList(new REFERENCE(wv, tleft, tright));
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(55/*non_empty_function_call_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 118: // non_empty_function_call_parameter_list ::= variable
                {
                    ExpressionList RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new ExpressionList(v);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(55/*non_empty_function_call_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 117: // non_empty_function_call_parameter_list ::= expr_without_variable
                {
                    ExpressionList RESULT = null;
                    int ewvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ewvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ewv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new ExpressionList(ewv);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(55/*non_empty_function_call_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 116: // function_call_parameter_list ::=
                {
                    ExpressionList RESULT = null;
                    RESULT = new ExpressionList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(54/*function_call_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 115: // function_call_parameter_list ::= non_empty_function_call_parameter_list
                {
                    ExpressionList RESULT = null;
                    int nefcplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int nefcplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ExpressionList nefcpl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = nefcpl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(54/*function_call_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 114: // optional_class_type ::= T_STRING
                {
                    string RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = s;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(85/*optional_class_type*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 113: // optional_class_type ::=
                {
                    string RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(85/*optional_class_type*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 112: // non_empty_parameter_list ::= non_empty_parameter_list COMMA optional_class_type T_VARIABLE EQUALS static_scalar
                {
                    ArrayList RESULT = null;
                    int neplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int neplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    ArrayList nepl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int octleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int octright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string oct = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nepl.Add(new PARAMETER_DECLARATION(oct, false, v, ss, octleft, octright));
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(74/*non_empty_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 111: // non_empty_parameter_list ::= non_empty_parameter_list COMMA optional_class_type AND T_VARIABLE EQUALS static_scalar
                {
                    ArrayList RESULT = null;
                    int neplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left;
                    int neplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).right;
                    ArrayList nepl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).value;
                    int octleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int octright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string oct = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nepl.Add(new PARAMETER_DECLARATION(oct, true, v, ss, octleft, octright));
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(74/*non_empty_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 110: // non_empty_parameter_list ::= non_empty_parameter_list COMMA optional_class_type AND T_VARIABLE
                {
                    ArrayList RESULT = null;
                    int neplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int neplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    ArrayList nepl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int octleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int octright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string oct = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nepl.Add(new PARAMETER_DECLARATION(oct, true, v, null, octleft, octright));
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(74/*non_empty_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 109: // non_empty_parameter_list ::= non_empty_parameter_list COMMA optional_class_type T_VARIABLE
                {
                    ArrayList RESULT = null;
                    int neplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int neplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    ArrayList nepl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int octleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int octright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string oct = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nepl.Add(new PARAMETER_DECLARATION(oct, false, v, null, octleft, octright));
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(74/*non_empty_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 108: // non_empty_parameter_list ::= optional_class_type T_VARIABLE EQUALS static_scalar
                {
                    ArrayList RESULT = null;
                    int octleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int octright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string oct = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList nepl = new ArrayList();
                    nepl.Add(new PARAMETER_DECLARATION(oct, false, v, ss, octleft, octright));
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(74/*non_empty_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 107: // non_empty_parameter_list ::= optional_class_type AND T_VARIABLE EQUALS static_scalar
                {
                    ArrayList RESULT = null;
                    int octleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int octright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string oct = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ssleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ssright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression ss = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList nepl = new ArrayList();
                    nepl.Add(new PARAMETER_DECLARATION(oct, true, v, ss, octleft, octright));
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(74/*non_empty_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 106: // non_empty_parameter_list ::= optional_class_type AND T_VARIABLE
                {
                    ArrayList RESULT = null;
                    int octleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int octright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string oct = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList nepl = new ArrayList();
                    nepl.Add(new PARAMETER_DECLARATION(oct, true, v, null, octleft, octright));
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(74/*non_empty_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 105: // non_empty_parameter_list ::= optional_class_type T_VARIABLE
                {
                    ArrayList RESULT = null;
                    int octleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int octright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string oct = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList nepl = new ArrayList();
                    nepl.Add(new PARAMETER_DECLARATION(oct, false, v, null, octleft, octright));
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(74/*non_empty_parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 104: // parameter_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(73/*parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 103: // parameter_list ::= non_empty_parameter_list
                {
                    ArrayList RESULT = null;
                    int neplleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int neplright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList nepl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = nepl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(73/*parameter_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 102: // new_else_single ::= T_ELSE COLON inner_statement_list
                {
                    Statement RESULT = null;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = istl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(15/*new_else_single*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 101: // new_else_single ::=
                {
                    Statement RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(15/*new_else_single*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 100: // else_single ::= T_ELSE statement
                {
                    Statement RESULT = null;
                    int stleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int stright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement st = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = st;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(14/*else_single*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 99: // else_single ::=
                {
                    Statement RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(14/*else_single*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 98: // new_elseif_list ::= new_elseif_list T_ELSEIF BRACE_OPEN expr BRACE_CLOSE COLON inner_statement_list
                {
                    ArrayList RESULT = null;
                    int nelleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left;
                    int nelright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).right;
                    ArrayList nel = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    nel.Add(new ELSEIF(e, istl, tleft, tright));
                    RESULT = nel;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(72/*new_elseif_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 97: // new_elseif_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(72/*new_elseif_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 96: // elseif_list ::= elseif_list T_ELSEIF BRACE_OPEN expr BRACE_CLOSE statement
                {
                    ArrayList RESULT = null;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int stleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int stright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement st = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    el.Add(new ELSEIF(e, st, tleft, tright));
                    RESULT = el;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(71/*elseif_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 95: // elseif_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(71/*elseif_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 94: // while_statement ::= COLON inner_statement_list T_ENDWHILE SEMICOLON
                {
                    Statement RESULT = null;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    RESULT = istl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(13/*while_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 93: // while_statement ::= statement
                {
                    Statement RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement s = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = s;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(13/*while_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 92: // case_separator ::= SEMICOLON
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(92/*case_separator*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 91: // case_separator ::= COLON
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(92/*case_separator*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 90: // case_list ::= case_list T_DEFAULT case_separator inner_statement_list
                {
                    ArrayList RESULT = null;
                    int clleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int clright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    ArrayList cl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int csleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int csright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    object cs = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    cl.Add(new DEFAULT(istl, tleft, tright));
                    RESULT = cl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(70/*case_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 89: // case_list ::= case_list T_CASE expr case_separator inner_statement_list
                {
                    ArrayList RESULT = null;
                    int clleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int clright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    ArrayList cl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int csleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int csright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    object cs = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    cl.Add(new CASE(e, istl, tleft, tright));
                    RESULT = cl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(70/*case_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 88: // case_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(70/*case_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 87: // switch_case_list ::= COLON SEMICOLON case_list T_ENDSWITCH SEMICOLON
                {
                    ArrayList RESULT = null;
                    int csleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int csright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ArrayList cs = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    RESULT = cs;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(69/*switch_case_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 86: // switch_case_list ::= COLON case_list T_ENDSWITCH SEMICOLON
                {
                    ArrayList RESULT = null;
                    int csleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int csright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ArrayList cs = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    RESULT = cs;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(69/*switch_case_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 85: // switch_case_list ::= CURLY_BRACE_OPEN SEMICOLON case_list CURLY_BRACE_CLOSE
                {
                    ArrayList RESULT = null;
                    int csleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int csright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList cs = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = cs;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(69/*switch_case_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 84: // switch_case_list ::= CURLY_BRACE_OPEN case_list CURLY_BRACE_CLOSE
                {
                    ArrayList RESULT = null;
                    int csleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int csright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList cs = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = cs;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(69/*switch_case_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 83: // declare_list ::= declare_list COMMA T_STRING EQUALS static_scalar
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(97/*declare_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 82: // declare_list ::= T_STRING EQUALS static_scalar
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(97/*declare_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 81: // declare_statement ::= COLON inner_statement_list T_ENDDECLARE SEMICOLON
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(96/*declare_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 80: // declare_statement ::= statement
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(96/*declare_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 79: // foreach_statement ::= COLON inner_statement_list T_ENDFOREACH SEMICOLON
                {
                    Statement RESULT = null;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    RESULT = istl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*foreach_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 78: // foreach_statement ::= statement
                {
                    Statement RESULT = null;
                    int stleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int stright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement st = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = st;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*foreach_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 77: // for_statement ::= COLON inner_statement_list T_ENDFOR SEMICOLON
                {
                    Statement RESULT = null;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    RESULT = istl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*for_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 76: // for_statement ::= statement
                {
                    Statement RESULT = null;
                    int stleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int stright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement st = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = st;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*for_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 75: // foreach_variable ::= AND w_variable
                {
                    Expression RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new REFERENCE(wv, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(21/*foreach_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 74: // foreach_variable ::= w_variable
                {
                    Expression RESULT = null;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = wv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(21/*foreach_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 73: // foreach_optional_arg ::= T_DOUBLE_ARROW foreach_variable
                {
                    Expression RESULT = null;
                    int fvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression fv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = fv;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(20/*foreach_optional_arg*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 72: // foreach_optional_arg ::=
                {
                    Expression RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(20/*foreach_optional_arg*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 71: // interface_list ::= interface_list COMMA fully_qualified_class_name
                {
                    ArrayList RESULT = null;
                    int illeft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int ilright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ArrayList il = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    il.Add(fqcn);
                    RESULT = il;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(68/*interface_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 70: // interface_list ::= fully_qualified_class_name
                {
                    ArrayList RESULT = null;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList il = new ArrayList();
                    il.Add(fqcn);
                    RESULT = il;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(68/*interface_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 69: // implements_list ::= T_IMPLEMENTS interface_list
                {
                    ArrayList RESULT = null;
                    int illeft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ilright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList il = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = il;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(67/*implements_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 68: // implements_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(67/*implements_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 67: // interface_extends_list ::= T_EXTENDS interface_list
                {
                    ArrayList RESULT = null;
                    int illeft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ilright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList il = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = il;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(66/*interface_extends_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 66: // interface_extends_list ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(66/*interface_extends_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 65: // interface_entry ::= T_INTERFACE
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(91/*interface_entry*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 64: // extends_from ::= T_EXTENDS fully_qualified_class_name
                {
                    string RESULT = null;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = fqcn;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(84/*extends_from*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 63: // extends_from ::=
                {
                    string RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(84/*extends_from*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 62: // class_entry_type ::= T_FINAL T_CLASS
                {
                    object RESULT = null;
                    RESULT = PHP.Compiler.Modifiers.FINAL;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(90/*class_entry_type*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 61: // class_entry_type ::= T_ABSTRACT T_CLASS
                {
                    object RESULT = null;
                    RESULT = PHP.Compiler.Modifiers.ABSTRACT;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(90/*class_entry_type*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 60: // class_entry_type ::= T_CLASS
                {
                    object RESULT = null;
                    RESULT = PHP.Compiler.Modifiers.PUBLIC;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(90/*class_entry_type*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 59: // unticked_class_declaration_statement ::= interface_entry T_STRING interface_extends_list CURLY_BRACE_OPEN class_statement_list CURLY_BRACE_CLOSE
                {
                    Statement RESULT = null;
                    int ieleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int ieright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    object ie = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int ielleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int ielright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    ArrayList iel = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int cstlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int cstlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList cstl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new INTERFACE_DECLARATION(s, iel, cstl, ieleft, ieright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(10/*unticked_class_declaration_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 58: // unticked_class_declaration_statement ::= class_entry_type T_STRING extends_from implements_list CURLY_BRACE_OPEN class_statement_list CURLY_BRACE_CLOSE
                {
                    Statement RESULT = null;
                    int cetleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left;
                    int cetright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).right;
                    object cet = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int efleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int efright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string ef = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int illeft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int ilright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    ArrayList il = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int cstlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int cstlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList cstl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new CLASS_DECLARATION((int)cet, s, ef, il, cstl, cetleft, cetright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(10/*unticked_class_declaration_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 57: // unticked_function_declaration_statement ::= T_FUNCTION is_reference T_STRING BRACE_OPEN parameter_list BRACE_CLOSE CURLY_BRACE_OPEN inner_statement_list CURLY_BRACE_CLOSE
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).value;
                    int irleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left;
                    int irright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).right;
                    object ir = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).value;
                    int plleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int plright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    ArrayList pl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new FUNCTION_DECLARATION(new ArrayList(), (bool)ir, s, pl, istl, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(9/*unticked_function_declaration_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 56: // is_reference ::= AND
                {
                    object RESULT = null;
                    RESULT = true;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(89/*is_reference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 55: // is_reference ::=
                {
                    object RESULT = null;
                    RESULT = false;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(89/*is_reference*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 54: // class_declaration_statement ::= unticked_class_declaration_statement
                {
                    Statement RESULT = null;
                    int ucdsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ucdsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement ucds = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = ucds;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(8/*class_declaration_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 53: // function_declaration_statement ::= unticked_function_declaration_statement
                {
                    Statement RESULT = null;
                    int ufdsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int ufdsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement ufds = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = ufds;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*function_declaration_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 52: // use_filename ::= BRACE_OPEN T_CONSTANT_ENCAPSED_STRING BRACE_CLOSE
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(95/*use_filename*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 51: // use_filename ::= T_CONSTANT_ENCAPSED_STRING
                {
                    object RESULT = null;

                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(95/*use_filename*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 50: // unset_variable ::= variable
                {
                    Expression RESULT = null;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = v;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(19/*unset_variable*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 49: // unset_variables ::= unset_variables COMMA unset_variable
                {
                    ExpressionList RESULT = null;
                    int uvsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int uvsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList uvs = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int uvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int uvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression uv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    uvs.Add(uv);
                    RESULT = uvs;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(53/*unset_variables*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 48: // unset_variables ::= unset_variable
                {
                    ExpressionList RESULT = null;
                    int uvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int uvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Expression uv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new ExpressionList(uv);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(53/*unset_variables*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 47: // additional_catch ::= T_CATCH BRACE_OPEN fully_qualified_class_name T_VARIABLE BRACE_CLOSE CURLY_BRACE_OPEN inner_statement_list CURLY_BRACE_CLOSE
                {
                    object RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).value;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new CATCH(fqcn, v, istl, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(88/*additional_catch*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 46: // non_empty_additional_catches ::= non_empty_additional_catches additional_catch
                {
                    ArrayList RESULT = null;
                    int neacleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int neacright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList neac = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int acleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int acright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    object ac = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    neac.Add(ac);
                    RESULT = neac;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(65/*non_empty_additional_catches*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 45: // non_empty_additional_catches ::= additional_catch
                {
                    ArrayList RESULT = null;
                    int acleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int acright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    object ac = (object)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ArrayList al = new ArrayList();
                    al.Add(ac);
                    RESULT = al;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(65/*non_empty_additional_catches*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 44: // additional_catches ::=
                {
                    ArrayList RESULT = null;
                    RESULT = new ArrayList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(64/*additional_catches*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 43: // additional_catches ::= non_empty_additional_catches
                {
                    ArrayList RESULT = null;
                    int neacleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int neacright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList neac = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = neac;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(64/*additional_catches*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 42: // unticked_statement ::= T_THROW expr SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new THROW(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 41: // unticked_statement ::= T_TRY CURLY_BRACE_OPEN inner_statement_list CURLY_BRACE_CLOSE T_CATCH BRACE_OPEN fully_qualified_class_name T_VARIABLE BRACE_CLOSE CURLY_BRACE_OPEN inner_statement_list CURLY_BRACE_CLOSE additional_catches
                {
                    Statement RESULT = null;
                    int t1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 12)).left;
                    int t1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 12)).right;
                    string t1 = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 12)).value;
                    int istl1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 10)).left;
                    int istl1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 10)).right;
                    StatementList istl1 = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 10)).value;
                    int t2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).left;
                    int t2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).right;
                    string t2 = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).value;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    string v = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int istl2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int istl2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    StatementList istl2 = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int acleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int acright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList ac = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    ac.Add(new CATCH(fqcn, v, istl2, t2left, t2right));
                    RESULT = new TRY(istl1, ac, t1left, t1right);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 12)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 40: // unticked_statement ::= SEMICOLON
                {
                    Statement RESULT = null;
                    RESULT = null;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 39: // unticked_statement ::= T_DECLARE BRACE_OPEN declare_list BRACE_CLOSE declare_statement
                {
                    Statement RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 38: // unticked_statement ::= T_FOREACH BRACE_OPEN expr_without_variable T_AS w_variable foreach_optional_arg BRACE_CLOSE foreach_statement
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).value;
                    int ewvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int ewvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    Expression ewv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int wvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int wvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression wv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int foaleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int foaright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression foa = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int fstleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fstright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement fst = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    Expression array = ewv;
                    Expression key = (foa == null) ? null : wv;
                    Expression value = (foa == null) ? wv : foa;
                    RESULT = new FOREACH(array, key, value, fst, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 37: // unticked_statement ::= T_FOREACH BRACE_OPEN variable T_AS foreach_variable foreach_optional_arg BRACE_CLOSE foreach_statement
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int fvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int fvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    Expression fv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int foaleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int foaright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression foa = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int fstleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fstright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement fst = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    Expression array = v;
                    Expression key = (foa == null) ? null : fv;
                    Expression value = (foa == null) ? fv : foa;
                    RESULT = new FOREACH(array, key, value, fst, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 36: // unticked_statement ::= T_UNSET BRACE_OPEN unset_variables BRACE_CLOSE SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int uvsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int uvsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList uvs = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    RESULT = new UNSET(uvs, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 35: // unticked_statement ::= T_USE use_filename SEMICOLON
                {
                    Statement RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string e = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    Report.Error(900, e);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 34: // unticked_statement ::= expr SEMICOLON
                {
                    Statement RESULT = null;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new EXPRESSION_AS_STATEMENT(e, eleft, eright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 33: // unticked_statement ::= T_INLINE_HTML
                {
                    Statement RESULT = null;
                    /* This case will never be entered as HTML code is filtered by the parser */
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 32: // unticked_statement ::= T_ECHO echo_expr_list SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eelleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eelright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList eel = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new ECHO(eel, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 31: // unticked_statement ::= T_STATIC static_var_list SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int svlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int svlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList svl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new STATIC_DECLARATION((ExpressionList)svl, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 30: // unticked_statement ::= T_GLOBAL global_var_list SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int gvlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int gvlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ExpressionList gvl = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new GLOBAL(gvl, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 29: // unticked_statement ::= T_RETURN variable SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int vleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int vright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression v = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new RETURN(v, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 28: // unticked_statement ::= T_RETURN expr_without_variable SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int ewvleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int ewvright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression ewv = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new RETURN(ewv, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 27: // unticked_statement ::= T_RETURN SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new RETURN(null, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 26: // unticked_statement ::= T_CONTINUE expr SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new CONTINUE(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 25: // unticked_statement ::= T_CONTINUE SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new CONTINUE(null, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 24: // unticked_statement ::= T_BREAK expr SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new BREAK(e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 23: // unticked_statement ::= T_BREAK SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new BREAK(null, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 22: // unticked_statement ::= T_SWITCH BRACE_OPEN expr BRACE_CLOSE switch_case_list
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int sclleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sclright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    ArrayList scl = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new SWITCH(e, scl, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 21: // unticked_statement ::= T_FOR BRACE_OPEN for_expr SEMICOLON for_expr SEMICOLON for_expr BRACE_CLOSE for_statement
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).value;
                    int fe1left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left;
                    int fe1right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).right;
                    ExpressionList fe1 = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).value;
                    int fe2left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int fe2right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    ExpressionList fe2 = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int fe3left = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int fe3right = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    ExpressionList fe3 = (ExpressionList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int fsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement fs = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new FOR(fe1, fe2, fe3, fs, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 8)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 20: // unticked_statement ::= T_DO statement T_WHILE BRACE_OPEN expr BRACE_CLOSE
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    Statement s = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new DO(s, e, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 5)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 19: // unticked_statement ::= T_WHILE BRACE_OPEN expr BRACE_CLOSE while_statement
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int wstleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int wstright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement wst = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new WHILE(e, wst, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 18: // unticked_statement ::= T_IF BRACE_OPEN expr BRACE_CLOSE COLON inner_statement_list new_elseif_list new_else_single T_ENDIF SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 9)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 9)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 9)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 7)).value;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int nelleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int nelright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    ArrayList nel = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int nesleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int nesright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Statement nes = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    RESULT = new IF(e, istl, nel, nes, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 9)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 17: // unticked_statement ::= T_IF BRACE_OPEN expr BRACE_CLOSE statement elseif_list else_single
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).value;
                    int eleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int eright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    Expression e = (Expression)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int stleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int stright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    Statement st = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int elleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int elright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    ArrayList el = (ArrayList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int esleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int esright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement es = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new IF(e, st, el, es, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 6)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 16: // unticked_statement ::= CURLY_BRACE_OPEN inner_statement_list CURLY_BRACE_CLOSE
                {
                    Statement RESULT = null;
                    int cleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int cright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string c = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new BLOCK(istl, cleft, cright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*unticked_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 15: // statement ::= unticked_statement
                {
                    Statement RESULT = null;
                    int usleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int usright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement us = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = us;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(5/*statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 14: // inner_statement ::= class_declaration_statement
                {
                    Statement RESULT = null;
                    int cdsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cdsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement cds = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = cds;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*inner_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 13: // inner_statement ::= function_declaration_statement
                {
                    Statement RESULT = null;
                    int fdsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fdsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement fds = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = fds;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*inner_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 12: // inner_statement ::= statement
                {
                    Statement RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement s = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = s;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*inner_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 11: // inner_statement_list ::=
                {
                    StatementList RESULT = null;
                    RESULT = new StatementList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(50/*inner_statement_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 10: // inner_statement_list ::= inner_statement_list inner_statement
                {
                    StatementList RESULT = null;
                    int istlleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int istlright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList istl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int istleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int istright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement ist = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    istl.Add(ist);
                    RESULT = istl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(50/*inner_statement_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 9: // using_statement ::= T_USING T_STRING EQUALS fully_qualified_class_name SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).value;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).right;
                    string s = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 3)).value;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new USING(fqcn, s, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*using_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 4)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 8: // using_statement ::= T_USING fully_qualified_class_name SEMICOLON
                {
                    Statement RESULT = null;
                    int tleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left;
                    int tright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).right;
                    string t = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).value;
                    int fqcnleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int fqcnright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    string fqcn = (string)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = new USING(fqcn, null, tleft, tright);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*using_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 2)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 7: // top_statement ::= using_statement
                {
                    Statement RESULT = null;
                    int usleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int usright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement us = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = us;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*top_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 6: // top_statement ::= class_declaration_statement
                {
                    Statement RESULT = null;
                    int cdsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int cdsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement cds = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = cds;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*top_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 5: // top_statement ::= function_declaration_statement
                {
                    Statement RESULT = null;
                    int fdsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int fdsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement fds = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = fds;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*top_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 4: // top_statement ::= statement
                {
                    Statement RESULT = null;
                    int sleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int sright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement s = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = s;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*top_statement*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 3: // top_statement_list ::=
                {
                    StatementList RESULT = null;
                    RESULT = new StatementList();
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(49/*top_statement_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 2: // top_statement_list ::= top_statement_list top_statement
                {
                    StatementList RESULT = null;
                    int tslleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int tslright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    StatementList tsl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    int tsleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int tsright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    Statement ts = (Statement)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    tsl.Add(ts);
                    RESULT = tsl;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(49/*top_statement_list*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 1: // $START ::= begin EOF
                {
                    object RESULT = null;
                    int start_valleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left;
                    int start_valright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).right;
                    AST start_val = (AST)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).value;
                    RESULT = start_val;
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(0/*$START*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 1)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
          /* ACCEPT */
                CUP_Parser_parser.done_parsing();
                return CUP_Parser_result;

        /*. . . . . . . . . . . . . . . . . . . .*/
            case 0: // begin ::= top_statement_list
                {
                    AST RESULT = null;
                    int tslleft = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left;
                    int tslright = ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right;
                    StatementList tsl = (StatementList)((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).value;
                    RESULT = new AST(tsl);
                    CUP_Parser_result = new TUVienna.CS_CUP.Runtime.Symbol(1/*begin*/, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).left, ((TUVienna.CS_CUP.Runtime.Symbol)CUP_Parser_stack.elementAt(CUP_Parser_top - 0)).right, RESULT);
                }
                return CUP_Parser_result;

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

        }
    }
Exemplo n.º 21
0
        /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
        /** Put the (real) parse stack into error recovery configuration by
           *  popping the stack down to a state that can shift on the special
           *  error Symbol, then doing the shift.  If no suitable state exists on
           *  the stack we return false
           *
           * @param debug should we produce debugging messages as we parse.
           */
        protected bool find_recovery_config(bool debug)
        {
            Symbol error_token;
              int act;

              if (debug) debug_message("# Finding recovery state on stack");

              /* Remember the right-position of the top symbol on the stack */
              int right_pos = ((Symbol)stack.Peek()).right;
              int left_pos  = ((Symbol)stack.Peek()).left;

              /* pop down until we can shift under error Symbol */
              while (!shift_under_error())
            {
              /* pop the stack */
              if (debug)
            debug_message("# Pop stack by one, state was # " +
                      ((Symbol)stack.Peek()).parse_state);
              left_pos = ((Symbol)stack.Pop()).left;
              tos--;

              /* if we have hit bottom, we fail */
              if (stack.Count==0)
            {
              if (debug) debug_message("# No recovery state found on stack");
              return false;
            }
            }

              /* state on top of the stack can shift under error, find the shift */
              act = get_action(((Symbol)stack.Peek()).parse_state, error_sym());
              if (debug)
            {
              debug_message("# Recover state found (#" +
            ((Symbol)stack.Peek()).parse_state + ")");
              debug_message("# Shifting on error to state #" + (act-1));
            }

              /* build and shift a special error Symbol */
              error_token = new Symbol(error_sym(), left_pos, right_pos);
              error_token.parse_state = act-1;
              error_token.used_by_parser = true;
              stack.Push(error_token);
              tos++;

              return true;
        }
Exemplo n.º 22
0
        /** Method with the actual generated action code. */
        public TUVienna.CS_CUP.Runtime.Symbol CUP_TinyParser_do_action(
    int                        CUP_TinyParser_act_num,
    TUVienna.CS_CUP.Runtime.lr_parser CUP_TinyParser_parser,
    System.Collections.Stack            xstack1,
    int                        CUP_TinyParser_top)
        {
            /* Symbol object for return from actions */
              mStack CUP_TinyParser_stack =new mStack(xstack1);
              TUVienna.CS_CUP.Runtime.Symbol CUP_TinyParser_result;

              /* select the action based on the action number */
              switch (CUP_TinyParser_act_num)
            {
              /*. . . . . . . . . . . . . . . . . . . .*/
              case 30: // factor ::= error
            {
              Expresion RESULT = null;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13/*factor*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 29: // factor ::= IDENTIFICADOR
            {
              Expresion RESULT = null;
            SimboloAbstracto id = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Variable(id, id.Linea, id.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13/*factor*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 28: // factor ::= LIT_ENTERO
            {
              Expresion RESULT = null;
            SimboloAbstracto val = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new NumeroEntero(val, val.Linea, val.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13/*factor*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 27: // factor ::= PARENT_IZQ exp PARENT_DER
            {
              Expresion RESULT = null;
            Expresion e = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;

            RESULT = e;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(13/*factor*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 26: // term ::= factor
            {
              Expresion RESULT = null;
            Expresion e = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = e;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*term*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 25: // term ::= term DIVISION factor
            {
              Expresion RESULT = null;
            Expresion e1 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            SimboloAbstracto d = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            Expresion e2 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Division(e1, e2, d.Linea, d.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*term*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 24: // term ::= term MULTIPLICACION factor
            {
              Expresion RESULT = null;
            Expresion e1 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            SimboloAbstracto m = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            Expresion e2 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Multiplicacion(e1, e2, m.Linea, m.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(12/*term*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 23: // exp_simple ::= term
            {
              Expresion RESULT = null;
            Expresion e = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = e;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*exp_simple*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 22: // exp_simple ::= exp_simple RESTA term
            {
              Expresion RESULT = null;
            Expresion e1 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            SimboloAbstracto r = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            Expresion e2 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Resta(e1, e2, r.Linea, r.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*exp_simple*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 21: // exp_simple ::= exp_simple SUMA term
            {
              Expresion RESULT = null;
            Expresion e1 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            SimboloAbstracto s = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            Expresion e2 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Suma(e1, e2, s.Linea, s.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(11/*exp_simple*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 20: // exp ::= exp_simple
            {
              Expresion RESULT = null;
            Expresion e = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = e;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(10/*exp*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 19: // exp ::= exp_simple IGUAL exp_simple
            {
              Expresion RESULT = null;
            Expresion e1 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            SimboloAbstracto i = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            Expresion e2 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Igual(e1, e2, i.Linea, i.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(10/*exp*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 18: // exp ::= exp_simple MENOR exp_simple
            {
              Expresion RESULT = null;
            Expresion e1 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            SimboloAbstracto m = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            Expresion e2 = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Menor(e1, e2, m.Linea, m.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(10/*exp*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 17: // args ::= args COMA exp
            {
              ListaParametros RESULT = null;
            ListaParametros p = (ListaParametros)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            Expresion e = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            p.agregarElemento(e);
            RESULT = p;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(9/*args*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 16: // args ::= exp
            {
              ListaParametros RESULT = null;
            Expresion e = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new ListaParametros();
            RESULT.agregarElemento(e);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(9/*args*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 15: // opt_args ::=
            {
              ListaParametros RESULT = null;

            RESULT = new ListaParametros();

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8/*opt_args*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 14: // opt_args ::= args
            {
              ListaParametros RESULT = null;
            ListaParametros p = (ListaParametros)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = p;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(8/*opt_args*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 13: // fuction_call ::= IDENTIFICADOR opt_args
            {
              Sentencia RESULT = null;
            SimboloAbstracto id = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            ListaParametros p = (ListaParametros)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new LLamadaFuncion(id, p, id.Linea, id.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(7/*fuction_call*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 12: // sent_assign ::= IDENTIFICADOR ASIGNACION exp
            {
              Sentencia RESULT = null;
            SimboloAbstracto id = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            SimboloAbstracto a = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            Expresion e = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Asignacion(new Variable(id, id.Linea, id.Columna), e, a.Linea, a.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(6/*sent_assign*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 11: // sent_repeat ::= REPITA secuencia_sent HASTA exp
            {
              Sentencia RESULT = null;
            SimboloAbstracto r = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-3)).value;
            ListaSentencia s = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            Expresion c = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new RepitaHasta(c, s, r.Linea, r.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(5/*sent_repeat*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 10: // sent_if ::= SI exp ENTONCES secuencia_sent SINO secuencia_sent FIN
            {
              Sentencia RESULT = null;
            SimboloAbstracto s = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-6)).value;
            Expresion c = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-5)).value;
            ListaSentencia en = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-3)).value;
            ListaSentencia sn = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;

            RESULT = new Condicional(c, en, sn, s.Linea, s.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*sent_if*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 9: // sent_if ::= SI exp ENTONCES secuencia_sent FIN
            {
              Sentencia RESULT = null;
            SimboloAbstracto s = (SimboloAbstracto)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-4)).value;
            Expresion c = (Expresion)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-3)).value;
            ListaSentencia en = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;

            RESULT = new Condicional(c, en, null, s.Linea, s.Columna);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(4/*sent_if*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 8: // sent ::= error
            {
              Sentencia RESULT = null;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*sent*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 7: // sent ::= fuction_call
            {
              Sentencia RESULT = null;
            Sentencia s = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;
             RESULT = s;
              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*sent*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 6: // sent ::= sent_assign
            {
              Sentencia RESULT = null;
            Sentencia s = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;
             RESULT = s;
              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*sent*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 5: // sent ::= sent_repeat
            {
              Sentencia RESULT = null;
            Sentencia s = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;
             RESULT = s;
              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*sent*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 4: // sent ::= sent_if
            {
              Sentencia RESULT = null;
            Sentencia s = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;
             RESULT = s;
              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(3/*sent*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 3: // secuencia_sent ::= sent
            {
              ListaSentencia RESULT = null;
            Sentencia s = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new ListaSentencia();
            RESULT.agregarElemento(s);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*secuencia_sent*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 2: // secuencia_sent ::= secuencia_sent PUNTO_Y_COMA sent
            {
              ListaSentencia RESULT = null;
            ListaSentencia sc = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-2)).value;
            Sentencia s = (Sentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            sc.agregarElemento(s);
            RESULT = sc;

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(2/*secuencia_sent*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 1: // programa ::= secuencia_sent
            {
              Programa RESULT = null;
            ListaSentencia sc = (ListaSentencia)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-0)).value;

            RESULT = new Programa(sc, 1, 0);

              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(1/*programa*/, RESULT);
            }
              return CUP_TinyParser_result;

              /*. . . . . . . . . . . . . . . . . . . .*/
              case 0: // $START ::= programa EOF
            {
              object RESULT = null;
            Programa start_val = (Programa)((TUVienna.CS_CUP.Runtime.Symbol) CUP_TinyParser_stack.elementAt(CUP_TinyParser_top-1)).value;
            RESULT = start_val;
              CUP_TinyParser_result = new TUVienna.CS_CUP.Runtime.Symbol(0/*$START*/, RESULT);
            }
              /* ACCEPT */
              CUP_TinyParser_parser.done_parsing();
              return CUP_TinyParser_result;

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

            }
        }