Extending parser for struct/enum (policy) definition files; Removing parser support...
[iot2.git] / iotjava / iotpolicy / parser / Parser.java
index 5f3158a24323ecd4dc5117bb44e8969b2d9d967c..12a80492d76886cf08e5d1c2b45edbeb1d58ce80 100644 (file)
@@ -2,7 +2,6 @@
 //----------------------------------------------------
 // The following code was generated by CUP v0.11b 20160615 (GIT 4ac7450)
 //----------------------------------------------------
-package iotpolicy.parser;
 
 import java_cup.runtime.ComplexSymbolFactory;
 import java_cup.runtime.ScannerBuffer;
@@ -14,8 +13,6 @@ import javax.xml.transform.*;
 import javax.xml.transform.stream.*;
 import java_cup.runtime.XMLElement;
 
-import iotpolicy.tree.ParseNode;
-
 /** CUP v0.11b 20160615 (GIT 4ac7450) generated parser.
   */
 @SuppressWarnings({"rawtypes"})
@@ -39,19 +36,20 @@ public class Parser extends java_cup.runtime.lr_parser {
   /** Production table. */
   protected static final short _production_table[][] = 
     unpackFromStrings(new String[] {
-    "\000\047\000\002\002\003\000\002\002\004\000\002\002" +
-    "\003\000\002\003\011\000\002\004\004\000\002\004\002" +
-    "\000\002\005\011\000\002\005\011\000\002\006\004\000" +
-    "\002\006\002\000\002\007\005\000\002\007\004\000\002" +
-    "\007\005\000\002\007\004\000\002\007\007\000\002\007" +
-    "\007\000\002\007\011\000\002\007\011\000\002\007\011" +
-    "\000\002\007\011\000\002\007\010\000\002\007\010\000" +
-    "\002\007\012\000\002\007\012\000\002\007\012\000\002" +
-    "\007\012\000\002\011\004\000\002\011\002\000\002\012" +
-    "\007\000\002\013\004\000\002\013\002\000\002\014\006" +
-    "\000\002\014\006\000\002\015\004\000\002\015\002\000" +
-    "\002\016\012\000\002\017\003\000\002\017\005\000\002" +
-    "\017\002" });
+    "\000\054\000\002\002\003\000\002\002\004\000\002\002" +
+    "\003\000\002\002\003\000\002\002\003\000\002\003\011" +
+    "\000\002\004\004\000\002\004\002\000\002\005\011\000" +
+    "\002\005\011\000\002\006\004\000\002\006\002\000\002" +
+    "\007\005\000\002\007\004\000\002\007\005\000\002\007" +
+    "\004\000\002\007\007\000\002\007\007\000\002\007\010" +
+    "\000\002\007\010\000\002\011\004\000\002\011\002\000" +
+    "\002\012\007\000\002\013\004\000\002\013\002\000\002" +
+    "\014\006\000\002\014\006\000\002\015\004\000\002\015" +
+    "\002\000\002\016\012\000\002\017\003\000\002\017\005" +
+    "\000\002\017\002\000\002\020\007\000\002\021\004\000" +
+    "\002\021\002\000\002\022\004\000\002\022\003\000\002" +
+    "\023\007\000\002\024\004\000\002\024\002\000\002\025" +
+    "\005\000\002\025\005\000\002\025\010" });
 
   /** Access to production table. */
   public short[][] production_table() {return _production_table;}
@@ -59,61 +57,64 @@ public class Parser extends java_cup.runtime.lr_parser {
   /** Parse-action table. */
   protected static final short[][] _action_table = 
     unpackFromStrings(new String[] {
-    "\000\127\000\010\002\uffdf\015\006\022\uffdf\001\002\000" +
-    "\004\002\001\001\002\000\006\002\uffff\022\117\001\002" +
-    "\000\004\016\011\001\002\000\004\002\010\001\002\000" +
-    "\004\002\000\001\002\000\004\026\012\001\002\000\004" +
-    "\012\013\001\002\000\010\013\ufffc\015\ufffc\017\ufffc\001" +
-    "\002\000\010\013\uffe6\015\016\017\uffe6\001\002\000\010" +
-    "\013\ufffd\015\ufffd\017\ufffd\001\002\000\006\025\041\026" +
-    "\040\001\002\000\006\013\022\017\021\001\002\000\006" +
-    "\013\uffe7\017\uffe7\001\002\000\004\026\023\001\002\000" +
-    "\004\002\ufffe\001\002\000\004\012\024\001\002\000\010" +
-    "\013\uffe3\020\uffe3\021\uffe3\001\002\000\010\013\030\020" +
-    "\027\021\031\001\002\000\010\013\uffe4\020\uffe4\021\uffe4" +
-    "\001\002\000\004\014\035\001\002\000\006\013\uffe5\017" +
-    "\uffe5\001\002\000\004\014\032\001\002\000\004\027\033" +
-    "\001\002\000\004\004\034\001\002\000\010\013\uffe1\020" +
-    "\uffe1\021\uffe1\001\002\000\004\027\036\001\002\000\004" +
-    "\004\037\001\002\000\010\013\uffe2\020\uffe2\021\uffe2\001" +
-    "\002\000\004\026\111\001\002\000\004\026\042\001\002" +
-    "\000\004\006\043\001\002\000\010\007\ufff8\025\ufff8\026" +
-    "\ufff8\001\002\000\010\007\046\025\050\026\045\001\002" +
-    "\000\006\010\054\026\055\001\002\000\004\004\053\001" +
-    "\002\000\010\007\ufff9\025\ufff9\026\ufff9\001\002\000\004" +
-    "\026\051\001\002\000\012\005\052\007\ufff6\025\ufff6\026" +
-    "\ufff6\001\002\000\010\007\ufff7\025\ufff7\026\ufff7\001\002" +
-    "\000\010\013\ufffb\015\ufffb\017\ufffb\001\002\000\006\025" +
-    "\060\026\057\001\002\000\012\005\056\007\ufff4\025\ufff4" +
-    "\026\ufff4\001\002\000\010\007\ufff5\025\ufff5\026\ufff5\001" +
-    "\002\000\006\005\075\011\076\001\002\000\006\005\061" +
-    "\011\062\001\002\000\006\025\066\026\065\001\002\000" +
-    "\004\026\063\001\002\000\012\005\064\007\ufff3\025\ufff3" +
-    "\026\ufff3\001\002\000\010\007\uffed\025\uffed\026\uffed\001" +
-    "\002\000\004\011\072\001\002\000\004\011\067\001\002" +
-    "\000\004\026\070\001\002\000\012\005\071\007\ufff1\025" +
-    "\ufff1\026\ufff1\001\002\000\010\007\uffeb\025\uffeb\026\uffeb" +
-    "\001\002\000\004\026\073\001\002\000\012\005\074\007" +
-    "\ufff0\025\ufff0\026\ufff0\001\002\000\010\007\uffea\025\uffea" +
-    "\026\uffea\001\002\000\006\025\102\026\101\001\002\000" +
-    "\004\026\077\001\002\000\012\005\100\007\ufff2\025\ufff2" +
-    "\026\ufff2\001\002\000\010\007\uffec\025\uffec\026\uffec\001" +
-    "\002\000\004\011\106\001\002\000\004\011\103\001\002" +
-    "\000\004\026\104\001\002\000\012\005\105\007\uffef\025" +
-    "\uffef\026\uffef\001\002\000\010\007\uffe9\025\uffe9\026\uffe9" +
-    "\001\002\000\004\026\107\001\002\000\012\005\110\007" +
-    "\uffee\025\uffee\026\uffee\001\002\000\010\007\uffe8\025\uffe8" +
-    "\026\uffe8\001\002\000\004\006\112\001\002\000\010\007" +
-    "\ufff8\025\ufff8\026\ufff8\001\002\000\010\007\114\025\050" +
-    "\026\045\001\002\000\004\004\115\001\002\000\010\013" +
-    "\ufffa\015\ufffa\017\ufffa\001\002\000\006\002\uffe0\022\uffe0" +
-    "\001\002\000\004\026\120\001\002\000\004\023\121\001" +
-    "\002\000\010\005\uffdb\024\uffdb\026\122\001\002\000\006" +
-    "\005\uffdd\024\uffdd\001\002\000\006\005\124\024\125\001" +
-    "\002\000\004\026\131\001\002\000\004\016\126\001\002" +
-    "\000\004\026\127\001\002\000\004\004\130\001\002\000" +
-    "\006\002\uffde\022\uffde\001\002\000\006\005\uffdc\024\uffdc" +
-    "\001\002" });
+    "\000\140\000\014\002\uffe5\015\012\022\uffe5\025\007\026" +
+    "\011\001\002\000\004\002\001\001\002\000\004\002\ufffd" +
+    "\001\002\000\004\002\ufffe\001\002\000\004\030\134\001" +
+    "\002\000\006\002\uffff\022\120\001\002\000\004\030\100" +
+    "\001\002\000\004\016\015\001\002\000\004\002\014\001" +
+    "\002\000\004\002\000\001\002\000\004\030\016\001\002" +
+    "\000\004\012\017\001\002\000\010\013\ufffa\015\ufffa\017" +
+    "\ufffa\001\002\000\010\013\uffec\015\022\017\uffec\001\002" +
+    "\000\010\013\ufffb\015\ufffb\017\ufffb\001\002\000\006\027" +
+    "\045\030\044\001\002\000\006\013\026\017\025\001\002" +
+    "\000\006\013\uffed\017\uffed\001\002\000\004\030\027\001" +
+    "\002\000\004\002\ufffc\001\002\000\004\012\030\001\002" +
+    "\000\010\013\uffe9\020\uffe9\021\uffe9\001\002\000\010\013" +
+    "\034\020\033\021\035\001\002\000\010\013\uffea\020\uffea" +
+    "\021\uffea\001\002\000\004\014\041\001\002\000\006\013" +
+    "\uffeb\017\uffeb\001\002\000\004\014\036\001\002\000\004" +
+    "\031\037\001\002\000\004\004\040\001\002\000\010\013" +
+    "\uffe7\020\uffe7\021\uffe7\001\002\000\004\031\042\001\002" +
+    "\000\004\004\043\001\002\000\010\013\uffe8\020\uffe8\021" +
+    "\uffe8\001\002\000\004\030\073\001\002\000\004\030\046" +
+    "\001\002\000\004\006\047\001\002\000\010\007\ufff6\027" +
+    "\ufff6\030\ufff6\001\002\000\010\007\052\027\054\030\051" +
+    "\001\002\000\006\010\060\030\061\001\002\000\004\004" +
+    "\057\001\002\000\010\007\ufff7\027\ufff7\030\ufff7\001\002" +
+    "\000\004\030\055\001\002\000\012\005\056\007\ufff4\027" +
+    "\ufff4\030\ufff4\001\002\000\010\007\ufff5\027\ufff5\030\ufff5" +
+    "\001\002\000\010\013\ufff9\015\ufff9\017\ufff9\001\002\000" +
+    "\006\027\064\030\063\001\002\000\012\005\062\007\ufff2" +
+    "\027\ufff2\030\ufff2\001\002\000\010\007\ufff3\027\ufff3\030" +
+    "\ufff3\001\002\000\004\011\070\001\002\000\004\011\065" +
+    "\001\002\000\004\030\066\001\002\000\012\005\067\007" +
+    "\ufff1\027\ufff1\030\ufff1\001\002\000\010\007\uffef\027\uffef" +
+    "\030\uffef\001\002\000\004\030\071\001\002\000\012\005" +
+    "\072\007\ufff0\027\ufff0\030\ufff0\001\002\000\010\007\uffee" +
+    "\027\uffee\030\uffee\001\002\000\004\006\074\001\002\000" +
+    "\010\007\ufff6\027\ufff6\030\ufff6\001\002\000\010\007\076" +
+    "\027\054\030\051\001\002\000\004\004\077\001\002\000" +
+    "\010\013\ufff8\015\ufff8\017\ufff8\001\002\000\004\012\101" +
+    "\001\002\000\010\013\uffd9\027\uffd9\030\uffd9\001\002\000" +
+    "\010\013\104\027\106\030\103\001\002\000\006\010\111" +
+    "\030\112\001\002\000\004\002\uffdb\001\002\000\010\013" +
+    "\uffda\027\uffda\030\uffda\001\002\000\004\030\107\001\002" +
+    "\000\004\004\110\001\002\000\010\013\uffd8\027\uffd8\030" +
+    "\uffd8\001\002\000\004\030\114\001\002\000\004\004\113" +
+    "\001\002\000\010\013\uffd7\027\uffd7\030\uffd7\001\002\000" +
+    "\004\011\115\001\002\000\004\030\116\001\002\000\004" +
+    "\004\117\001\002\000\010\013\uffd6\027\uffd6\030\uffd6\001" +
+    "\002\000\004\030\122\001\002\000\006\002\uffe6\022\uffe6" +
+    "\001\002\000\004\023\123\001\002\000\010\005\uffe1\024" +
+    "\uffe1\030\125\001\002\000\006\005\126\024\127\001\002" +
+    "\000\006\005\uffe3\024\uffe3\001\002\000\004\030\133\001" +
+    "\002\000\004\016\130\001\002\000\004\030\131\001\002" +
+    "\000\004\004\132\001\002\000\006\002\uffe4\022\uffe4\001" +
+    "\002\000\006\005\uffe2\024\uffe2\001\002\000\004\012\135" +
+    "\001\002\000\006\013\uffde\030\uffde\001\002\000\006\013" +
+    "\141\030\140\001\002\000\006\013\uffdf\030\uffdf\001\002" +
+    "\000\010\005\142\013\uffdc\030\uffdc\001\002\000\004\002" +
+    "\uffe0\001\002\000\006\013\uffdd\030\uffdd\001\002" });
 
   /** Access to parse-action table. */
   public short[][] action_table() {return _action_table;}
@@ -121,36 +122,39 @@ public class Parser extends java_cup.runtime.lr_parser {
   /** <code>reduce_goto</code> table. */
   protected static final short[][] _reduce_table = 
     unpackFromStrings(new String[] {
-    "\000\127\000\010\002\006\003\003\015\004\001\001\000" +
-    "\002\001\001\000\004\016\115\001\001\000\002\001\001" +
-    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\004\013\001\001\000\006\005\014" +
-    "\011\016\001\001\000\002\001\001\000\002\001\001\000" +
-    "\004\012\017\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\002\001\001\000\004\013\024\001" +
-    "\001\000\004\014\025\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\004\006\043\001\001" +
-    "\000\004\007\046\001\001\000\002\001\001\000\002\001" +
+    "\000\140\000\014\002\012\003\003\015\007\020\005\023" +
+    "\004\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\004\016\120\001\001\000" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\002\001\001\000\004\004" +
+    "\017\001\001\000\006\005\020\011\022\001\001\000\002" +
+    "\001\001\000\002\001\001\000\004\012\023\001\001\000" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\004\013\030\001\001\000\004\014\031\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\001\000\004\006\047\001\001\000\004\007\052\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
-    "\006\112\001\001\000\004\007\046\001\001\000\002\001" +
-    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\004\017\122\001\001\000\002\001" +
+    "\006\074\001\001\000\004\007\052\001\001\000\002\001" +
+    "\001\000\002\001\001\000\002\001\001\000\004\024\101" +
+    "\001\001\000\004\025\104\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001" });
+    "\002\001\001\000\002\001\001\000\004\017\123\001\001" +
+    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\002\001\001\000\004\021" +
+    "\135\001\001\000\004\022\136\001\001\000\002\001\001" +
+    "\000\002\001\001\000\002\001\001\000\002\001\001" });
 
   /** Access to <code>reduce_goto</code> table. */
   public short[][] reduce_table() {return _reduce_table;}
@@ -274,7 +278,39 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 3: // intface ::= PUBLIC INTERFACE IDENT BEGIN methlist capablist END 
+          case 3: // policy ::= enumdec 
+            {
+              ParseNode RESULT =null;
+               int enleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
+               int enright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
+               ParseNode en = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
+               
+               ParseNode pn = new ParseNode("policy");
+               pn.addChild(en);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("policy",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 4: // policy ::= structdec 
+            {
+              ParseNode RESULT =null;
+               int stleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
+               int stright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
+               ParseNode st = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
+               
+               ParseNode pn = new ParseNode("policy");
+               pn.addChild(st);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("policy",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 5: // intface ::= PUBLIC INTERFACE IDENT BEGIN methlist capablist END 
             {
               ParseNode RESULT =null;
                int idintleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
@@ -298,7 +334,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 4: // methlist ::= methlist meth 
+          case 6: // methlist ::= methlist meth 
             {
               ParseNode RESULT =null;
                int mlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
@@ -316,7 +352,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 5: // methlist ::= 
+          case 7: // methlist ::= 
             {
               ParseNode RESULT =null;
                
@@ -328,7 +364,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 6: // meth ::= PUBLIC TYPE IDENT LPAR paramlist RPAR SEMICOLON 
+          case 8: // meth ::= PUBLIC TYPE IDENT LPAR paramlist RPAR SEMICOLON 
             {
               ParseNode RESULT =null;
                int typemethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
@@ -352,7 +388,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 7: // meth ::= PUBLIC IDENT IDENT LPAR paramlist RPAR SEMICOLON 
+          case 9: // meth ::= PUBLIC IDENT IDENT LPAR paramlist RPAR SEMICOLON 
             {
               ParseNode RESULT =null;
                int clsmethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
@@ -376,7 +412,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 8: // paramlist ::= paramlist param 
+          case 10: // paramlist ::= paramlist param 
             {
               ParseNode RESULT =null;
                int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
@@ -394,7 +430,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 9: // paramlist ::= 
+          case 11: // paramlist ::= 
             {
               ParseNode RESULT =null;
                
@@ -406,7 +442,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 10: // param ::= TYPE IDENT COMMA 
+          case 12: // param ::= TYPE IDENT COMMA 
             {
               ParseNode RESULT =null;
                int typeprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
@@ -426,7 +462,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 11: // param ::= TYPE IDENT 
+          case 13: // param ::= TYPE IDENT 
             {
               ParseNode RESULT =null;
                int typeprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
@@ -446,7 +482,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 12: // param ::= IDENT IDENT COMMA 
+          case 14: // param ::= IDENT IDENT COMMA 
             {
               ParseNode RESULT =null;
                int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
@@ -466,7 +502,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 13: // param ::= IDENT IDENT 
+          case 15: // param ::= IDENT IDENT 
             {
               ParseNode RESULT =null;
                int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
@@ -486,7 +522,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 14: // param ::= IDENT LANG TYPE RANG IDENT 
+          case 16: // param ::= IDENT LANG TYPE RANG IDENT 
             {
               ParseNode RESULT =null;
                int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
@@ -509,7 +545,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 15: // param ::= IDENT LANG IDENT RANG IDENT 
+          case 17: // param ::= IDENT LANG IDENT RANG IDENT 
             {
               ParseNode RESULT =null;
                int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
@@ -532,115 +568,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 16: // param ::= IDENT LANG TYPE COMMA TYPE RANG IDENT 
-            {
-              ParseNode RESULT =null;
-               int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left;
-               int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right;
-               Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value;
-               int typegen1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
-               int typegen1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
-               Object typegen1 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
-               int typegen2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
-               int typegen2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
-               Object typegen2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
-               int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
-               int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
-               Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
-               
-               ParseNode pn = new ParseNode("param");
-               pn.addChild("param_class").setLiteral((String)clsprm 
-                       + "<" + typegen1 + "," + typegen2 + ">");
-               pn.addChild("param_ident").setLiteral(idprm);
-               RESULT = pn;
-       
-              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
-            }
-          return CUP$Parser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 17: // param ::= IDENT LANG TYPE COMMA IDENT RANG IDENT 
-            {
-              ParseNode RESULT =null;
-               int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left;
-               int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right;
-               Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value;
-               int typegenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
-               int typegenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
-               Object typegen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
-               int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
-               int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
-               Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
-               int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
-               int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
-               Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
-               
-               ParseNode pn = new ParseNode("param");
-               pn.addChild("param_class").setLiteral((String)clsprm 
-                       + "<" + typegen + "," + clsgen + ">");
-               pn.addChild("param_ident").setLiteral(idprm);
-               RESULT = pn;
-       
-              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
-            }
-          return CUP$Parser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 18: // param ::= IDENT LANG IDENT COMMA TYPE RANG IDENT 
-            {
-              ParseNode RESULT =null;
-               int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left;
-               int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right;
-               Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value;
-               int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
-               int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
-               Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
-               int typegenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
-               int typegenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
-               Object typegen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
-               int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
-               int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
-               Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
-               
-               ParseNode pn = new ParseNode("param");
-               pn.addChild("param_class").setLiteral((String)clsprm 
-                       + "<" + clsgen + "," + typegen + ">");
-               pn.addChild("param_ident").setLiteral(idprm);
-               RESULT = pn;
-       
-              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
-            }
-          return CUP$Parser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 19: // param ::= IDENT LANG IDENT COMMA IDENT RANG IDENT 
-            {
-              ParseNode RESULT =null;
-               int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left;
-               int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right;
-               Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value;
-               int clsgen1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
-               int clsgen1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
-               Object clsgen1 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
-               int clsgen2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
-               int clsgen2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
-               Object clsgen2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
-               int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
-               int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
-               Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
-               
-               ParseNode pn = new ParseNode("param");
-               pn.addChild("param_class").setLiteral((String)clsprm 
-                       + "<" + clsgen1 + "," + clsgen2 + ">");
-               pn.addChild("param_ident").setLiteral(idprm);
-               RESULT = pn;
-       
-              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
-            }
-          return CUP$Parser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 20: // param ::= IDENT LANG TYPE RANG IDENT COMMA 
+          case 18: // param ::= IDENT LANG TYPE RANG IDENT COMMA 
             {
               ParseNode RESULT =null;
                int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
@@ -663,7 +591,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 21: // param ::= IDENT LANG IDENT RANG IDENT COMMA 
+          case 19: // param ::= IDENT LANG IDENT RANG IDENT COMMA 
             {
               ParseNode RESULT =null;
                int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
@@ -686,115 +614,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 22: // param ::= IDENT LANG TYPE COMMA TYPE RANG IDENT COMMA 
-            {
-              ParseNode RESULT =null;
-               int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).left;
-               int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).right;
-               Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-7)).value;
-               int typegen1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
-               int typegen1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
-               Object typegen1 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
-               int typegen2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
-               int typegen2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
-               Object typegen2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
-               int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
-               int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
-               Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
-               
-               ParseNode pn = new ParseNode("param");
-               pn.addChild("param_class").setLiteral((String)clsprm 
-                       + "<" + typegen1 + "," + typegen2 + ">");
-               pn.addChild("param_ident").setLiteral(idprm);
-               RESULT = pn;
-       
-              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
-            }
-          return CUP$Parser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 23: // param ::= IDENT LANG TYPE COMMA IDENT RANG IDENT COMMA 
-            {
-              ParseNode RESULT =null;
-               int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).left;
-               int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).right;
-               Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-7)).value;
-               int typegenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
-               int typegenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
-               Object typegen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
-               int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
-               int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
-               Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
-               int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
-               int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
-               Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
-               
-               ParseNode pn = new ParseNode("param");
-               pn.addChild("param_class").setLiteral((String)clsprm 
-                       + "<" + typegen + "," + clsgen + ">");
-               pn.addChild("param_ident").setLiteral(idprm);
-               RESULT = pn;
-       
-              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
-            }
-          return CUP$Parser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 24: // param ::= IDENT LANG IDENT COMMA TYPE RANG IDENT COMMA 
-            {
-              ParseNode RESULT =null;
-               int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).left;
-               int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).right;
-               Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-7)).value;
-               int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
-               int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
-               Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
-               int typegenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
-               int typegenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
-               Object typegen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
-               int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
-               int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
-               Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
-               
-               ParseNode pn = new ParseNode("param");
-               pn.addChild("param_class").setLiteral((String)clsprm 
-                       + "<" + clsgen + "," + typegen + ">");
-               pn.addChild("param_ident").setLiteral(idprm);
-               RESULT = pn;
-       
-              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
-            }
-          return CUP$Parser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 25: // param ::= IDENT LANG IDENT COMMA IDENT RANG IDENT COMMA 
-            {
-              ParseNode RESULT =null;
-               int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).left;
-               int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).right;
-               Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-7)).value;
-               int clsgen1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
-               int clsgen1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
-               Object clsgen1 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
-               int clsgen2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
-               int clsgen2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
-               Object clsgen2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
-               int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
-               int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
-               Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
-               
-               ParseNode pn = new ParseNode("param");
-               pn.addChild("param_class").setLiteral((String)clsprm 
-                       + "<" + clsgen1 + "," + clsgen2 + ">");
-               pn.addChild("param_ident").setLiteral(idprm);
-               RESULT = pn;
-       
-              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
-            }
-          return CUP$Parser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 26: // capablist ::= capablist capab 
+          case 20: // capablist ::= capablist capab 
             {
               ParseNode RESULT =null;
                int clleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
@@ -812,7 +632,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 27: // capablist ::= 
+          case 21: // capablist ::= 
             {
               ParseNode RESULT =null;
                
@@ -824,7 +644,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 28: // capab ::= CAPABILITY IDENT BEGIN capabcont END 
+          case 22: // capab ::= CAPABILITY IDENT BEGIN capabcont END 
             {
               ParseNode RESULT =null;
                int idcapleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
@@ -844,7 +664,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 29: // capabcont ::= capabcont cont 
+          case 23: // capabcont ::= capabcont cont 
             {
               ParseNode RESULT =null;
                int ccontleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
@@ -862,7 +682,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 30: // capabcont ::= 
+          case 24: // capabcont ::= 
             {
               ParseNode RESULT =null;
                
@@ -874,7 +694,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 31: // cont ::= DESCRIPTION ASSIGN STRINGCONST SEMICOLON 
+          case 25: // cont ::= DESCRIPTION ASSIGN STRINGCONST SEMICOLON 
             {
               ParseNode RESULT =null;
                int dscleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
@@ -893,7 +713,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 32: // cont ::= METHOD ASSIGN STRINGCONST SEMICOLON 
+          case 26: // cont ::= METHOD ASSIGN STRINGCONST SEMICOLON 
             {
               ParseNode RESULT =null;
                int mtdleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
@@ -912,7 +732,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 33: // reqlist ::= reqlist require 
+          case 27: // reqlist ::= reqlist require 
             {
               ParseNode RESULT =null;
                int rlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
@@ -930,7 +750,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 34: // reqlist ::= 
+          case 28: // reqlist ::= 
             {
               ParseNode RESULT =null;
                
@@ -942,7 +762,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 35: // require ::= REQUIRES IDENT WITH capintlist AS INTERFACE IDENT SEMICOLON 
+          case 29: // require ::= REQUIRES IDENT WITH capintlist AS INTERFACE IDENT SEMICOLON 
             {
               ParseNode RESULT =null;
                int idintleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left;
@@ -966,7 +786,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 36: // capintlist ::= IDENT 
+          case 30: // capintlist ::= IDENT 
             {
               ParseNode RESULT =null;
                int idcapleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
@@ -982,7 +802,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 37: // capintlist ::= capintlist COMMA IDENT 
+          case 31: // capintlist ::= capintlist COMMA IDENT 
             {
               ParseNode RESULT =null;
                int cilleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
@@ -1000,7 +820,7 @@ class CUP$Parser$actions {
           return CUP$Parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 38: // capintlist ::= 
+          case 32: // capintlist ::= 
             {
               ParseNode RESULT =null;
                
@@ -1011,6 +831,201 @@ class CUP$Parser$actions {
             }
           return CUP$Parser$result;
 
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 33: // enumdec ::= ENUM IDENT BEGIN enumlist END 
+            {
+              ParseNode RESULT =null;
+               int idenumdecleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
+               int idenumdecright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
+               Object idenumdec = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
+               int elleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
+               int elright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
+               ParseNode el = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
+               
+               ParseNode pn = new ParseNode("enum_dec");
+               pn.addChild("enum_dec_ident").setLiteral(idenumdec);
+               pn.addChild(el);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("enumdec",14, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 34: // enumlist ::= enumlist enummem 
+            {
+              ParseNode RESULT =null;
+               int elleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
+               int elright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
+               ParseNode el = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
+               int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
+               int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
+               ParseNode e = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
+               
+               el.addChild(e);
+               RESULT = el;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("enumlist",15, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 35: // enumlist ::= 
+            {
+              ParseNode RESULT =null;
+               
+               ParseNode pn = new ParseNode("enum_list");
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("enumlist",15, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 36: // enummem ::= IDENT COMMA 
+            {
+              ParseNode RESULT =null;
+               int idenumleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
+               int idenumright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
+               Object idenum = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
+               
+               ParseNode pn = new ParseNode("enum_mem");
+               pn.addChild("enum_ident").setLiteral(idenum);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("enummem",16, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 37: // enummem ::= IDENT 
+            {
+              ParseNode RESULT =null;
+               int idenumleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
+               int idenumright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
+               Object idenum = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
+               
+               ParseNode pn = new ParseNode("enum_mem");
+               pn.addChild("enum_ident").setLiteral(idenum);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("enummem",16, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 38: // structdec ::= STRUCT IDENT BEGIN structlist END 
+            {
+              ParseNode RESULT =null;
+               int idstructdecleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
+               int idstructdecright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
+               Object idstructdec = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
+               int slleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
+               int slright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
+               ParseNode sl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
+               
+               ParseNode pn = new ParseNode("struct_dec");
+               pn.addChild("struct_dec_ident").setLiteral(idstructdec);
+               pn.addChild(sl);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("structdec",17, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 39: // structlist ::= structlist structmem 
+            {
+              ParseNode RESULT =null;
+               int slleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
+               int slright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
+               ParseNode sl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
+               int sleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
+               int sright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
+               ParseNode s = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
+               
+               sl.addChild(s);
+               RESULT = sl;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("structlist",18, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 40: // structlist ::= 
+            {
+              ParseNode RESULT =null;
+               
+               ParseNode pn = new ParseNode("enum_list");
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("structlist",18, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 41: // structmem ::= TYPE IDENT SEMICOLON 
+            {
+              ParseNode RESULT =null;
+               int typestrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
+               int typestrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
+               Object typestr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
+               int idstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
+               int idstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
+               Object idstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
+               
+               ParseNode pn = new ParseNode("struct_mem");
+               pn.addChild("struct_type").setLiteral(typestr);
+               pn.addChild("struct_ident").setLiteral(idstr);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("structmem",19, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 42: // structmem ::= IDENT IDENT SEMICOLON 
+            {
+              ParseNode RESULT =null;
+               int clsstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
+               int clsstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
+               Object clsstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
+               int idstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
+               int idstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
+               Object idstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
+               
+               ParseNode pn = new ParseNode("struct_mem");
+               pn.addChild("struct_class").setLiteral(clsstr);
+               pn.addChild("struct_ident").setLiteral(idstr);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("structmem",19, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 43: // structmem ::= IDENT LANG IDENT RANG IDENT SEMICOLON 
+            {
+              ParseNode RESULT =null;
+               int clsstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
+               int clsstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
+               Object clsstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
+               int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
+               int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
+               Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
+               int idstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
+               int idstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
+               Object idstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
+               
+               ParseNode pn = new ParseNode("struct_mem");
+               pn.addChild("struct_class").setLiteral((String)clsstr + "<" + clsgen + ">");
+               pn.addChild("struct_ident").setLiteral(idstr);
+               RESULT = pn;
+       
+              CUP$Parser$result = parser.getSymbolFactory().newSymbol("structmem",19, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
+            }
+          return CUP$Parser$result;
+
           /* . . . . . .*/
           default:
             throw new Exception(