Separating policy file into main policy and generated interfaces; fixing lexer, parse...
[iot2.git] / iotjava / iotpolicy / parser / Parser.java
1
2 //----------------------------------------------------
3 // The following code was generated by CUP v0.11b 20160615 (GIT 4ac7450)
4 //----------------------------------------------------
5 package iotpolicy.parser;
6
7 import java_cup.runtime.ComplexSymbolFactory;
8 import java_cup.runtime.ScannerBuffer;
9 import java_cup.runtime.XMLElement;
10 import javax.xml.stream.XMLOutputFactory;
11 import javax.xml.stream.XMLStreamWriter;
12 import java.io.*;
13 import javax.xml.transform.*;
14 import javax.xml.transform.stream.*;
15 import java_cup.runtime.XMLElement;
16
17 import iotpolicy.tree.ParseNode;
18
19 /** CUP v0.11b 20160615 (GIT 4ac7450) generated parser.
20   */
21 @SuppressWarnings({"rawtypes"})
22 public class Parser extends java_cup.runtime.lr_parser {
23
24  public final Class getSymbolContainer() {
25     return sym.class;
26 }
27
28   /** Default constructor. */
29   @Deprecated
30   public Parser() {super();}
31
32   /** Constructor which sets the default scanner. */
33   @Deprecated
34   public Parser(java_cup.runtime.Scanner s) {super(s);}
35
36   /** Constructor which sets the default scanner. */
37   public Parser(java_cup.runtime.Scanner s, java_cup.runtime.SymbolFactory sf) {super(s,sf);}
38
39   /** Production table. */
40   protected static final short _production_table[][] = 
41     unpackFromStrings(new String[] {
42     "\000\033\000\002\002\003\000\002\002\004\000\002\002" +
43     "\003\000\002\003\011\000\002\004\004\000\002\004\002" +
44     "\000\002\005\011\000\002\005\011\000\002\006\004\000" +
45     "\002\006\002\000\002\007\005\000\002\007\004\000\002" +
46     "\007\005\000\002\007\004\000\002\010\004\000\002\010" +
47     "\002\000\002\011\007\000\002\012\004\000\002\012\002" +
48     "\000\002\013\006\000\002\013\006\000\002\014\004\000" +
49     "\002\014\002\000\002\015\012\000\002\016\003\000\002" +
50     "\016\005\000\002\016\002" });
51
52   /** Access to production table. */
53   public short[][] production_table() {return _production_table;}
54
55   /** Parse-action table. */
56   protected static final short[][] _action_table = 
57     unpackFromStrings(new String[] {
58     "\000\074\000\010\002\uffeb\013\006\020\uffeb\001\002\000" +
59     "\004\002\001\001\002\000\006\002\uffff\020\063\001\002" +
60     "\000\004\014\011\001\002\000\004\002\010\001\002\000" +
61     "\004\002\000\001\002\000\004\024\012\001\002\000\004" +
62     "\010\013\001\002\000\010\011\ufffc\013\ufffc\015\ufffc\001" +
63     "\002\000\010\011\ufff2\013\016\015\ufff2\001\002\000\010" +
64     "\011\ufffd\013\ufffd\015\ufffd\001\002\000\006\023\041\024" +
65     "\040\001\002\000\006\011\022\015\021\001\002\000\006" +
66     "\011\ufff3\015\ufff3\001\002\000\004\024\023\001\002\000" +
67     "\004\002\ufffe\001\002\000\004\010\024\001\002\000\010" +
68     "\011\uffef\016\uffef\017\uffef\001\002\000\010\011\030\016" +
69     "\027\017\031\001\002\000\010\011\ufff0\016\ufff0\017\ufff0" +
70     "\001\002\000\004\012\035\001\002\000\006\011\ufff1\015" +
71     "\ufff1\001\002\000\004\012\032\001\002\000\004\025\033" +
72     "\001\002\000\004\004\034\001\002\000\010\011\uffed\016" +
73     "\uffed\017\uffed\001\002\000\004\025\036\001\002\000\004" +
74     "\004\037\001\002\000\010\011\uffee\016\uffee\017\uffee\001" +
75     "\002\000\004\024\056\001\002\000\004\024\042\001\002" +
76     "\000\004\006\043\001\002\000\010\007\ufff8\023\ufff8\024" +
77     "\ufff8\001\002\000\010\007\047\023\050\024\045\001\002" +
78     "\000\004\024\054\001\002\000\010\007\ufff9\023\ufff9\024" +
79     "\ufff9\001\002\000\004\004\053\001\002\000\004\024\051" +
80     "\001\002\000\012\005\052\007\ufff6\023\ufff6\024\ufff6\001" +
81     "\002\000\010\007\ufff7\023\ufff7\024\ufff7\001\002\000\010" +
82     "\011\ufffb\013\ufffb\015\ufffb\001\002\000\012\005\055\007" +
83     "\ufff4\023\ufff4\024\ufff4\001\002\000\010\007\ufff5\023\ufff5" +
84     "\024\ufff5\001\002\000\004\006\057\001\002\000\010\007" +
85     "\ufff8\023\ufff8\024\ufff8\001\002\000\010\007\061\023\050" +
86     "\024\045\001\002\000\004\004\062\001\002\000\010\011" +
87     "\ufffa\013\ufffa\015\ufffa\001\002\000\004\024\065\001\002" +
88     "\000\006\002\uffec\020\uffec\001\002\000\004\021\066\001" +
89     "\002\000\010\005\uffe7\022\uffe7\024\070\001\002\000\006" +
90     "\005\071\022\072\001\002\000\006\005\uffe9\022\uffe9\001" +
91     "\002\000\004\024\076\001\002\000\004\014\073\001\002" +
92     "\000\004\024\074\001\002\000\004\004\075\001\002\000" +
93     "\006\002\uffea\020\uffea\001\002\000\006\005\uffe8\022\uffe8" +
94     "\001\002" });
95
96   /** Access to parse-action table. */
97   public short[][] action_table() {return _action_table;}
98
99   /** <code>reduce_goto</code> table. */
100   protected static final short[][] _reduce_table = 
101     unpackFromStrings(new String[] {
102     "\000\074\000\010\002\006\003\003\014\004\001\001\000" +
103     "\002\001\001\000\004\015\063\001\001\000\002\001\001" +
104     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
105     "\002\001\001\000\004\004\013\001\001\000\006\005\014" +
106     "\010\016\001\001\000\002\001\001\000\002\001\001\000" +
107     "\004\011\017\001\001\000\002\001\001\000\002\001\001" +
108     "\000\002\001\001\000\002\001\001\000\004\012\024\001" +
109     "\001\000\004\013\025\001\001\000\002\001\001\000\002" +
110     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
111     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
112     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
113     "\002\001\001\000\002\001\001\000\004\006\043\001\001" +
114     "\000\004\007\045\001\001\000\002\001\001\000\002\001" +
115     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
116     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
117     "\002\001\001\000\002\001\001\000\004\006\057\001\001" +
118     "\000\004\007\045\001\001\000\002\001\001\000\002\001" +
119     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
120     "\000\004\016\066\001\001\000\002\001\001\000\002\001" +
121     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
122     "\000\002\001\001\000\002\001\001\000\002\001\001" });
123
124   /** Access to <code>reduce_goto</code> table. */
125   public short[][] reduce_table() {return _reduce_table;}
126
127   /** Instance of action encapsulation class. */
128   protected CUP$Parser$actions action_obj;
129
130   /** Action encapsulation object initializer. */
131   protected void init_actions()
132     {
133       action_obj = new CUP$Parser$actions(this);
134     }
135
136   /** Invoke a user supplied parse action. */
137   public java_cup.runtime.Symbol do_action(
138     int                        act_num,
139     java_cup.runtime.lr_parser parser,
140     java.util.Stack            stack,
141     int                        top)
142     throws java.lang.Exception
143   {
144     /* call code in generated class */
145     return action_obj.CUP$Parser$do_action(act_num, parser, stack, top);
146   }
147
148   /** Indicates start state. */
149   public int start_state() {return 0;}
150   /** Indicates start production. */
151   public int start_production() {return 1;}
152
153   /** <code>EOF</code> Symbol index. */
154   public int EOF_sym() {return 0;}
155
156   /** <code>error</code> Symbol index. */
157   public int error_sym() {return 1;}
158
159
160
161   public Parser(Lexer lex, ComplexSymbolFactory sf) {
162     super(lex,sf);
163   }
164   public static void main(String[] args) throws Exception {
165       // initialize the symbol factory
166       ComplexSymbolFactory csf = new ComplexSymbolFactory();
167       // create a buffering scanner wrapper
168       ScannerBuffer lexer = new ScannerBuffer(new Lexer(new BufferedReader(new FileReader(args[0])),csf));
169       // start parsing
170       Parser p = new Parser(lexer,csf);
171       ParseNode pn = (ParseNode) p.parse().value;
172   }
173
174
175 /** Cup generated class to encapsulate user supplied action code.*/
176 @SuppressWarnings({"rawtypes", "unchecked", "unused"})
177 class CUP$Parser$actions {
178   private final Parser parser;
179
180   /** Constructor */
181   CUP$Parser$actions(Parser parser) {
182     this.parser = parser;
183   }
184
185   /** Method 0 with the actual generated action code for actions 0 to 300. */
186   public final java_cup.runtime.Symbol CUP$Parser$do_action_part00000000(
187     int                        CUP$Parser$act_num,
188     java_cup.runtime.lr_parser CUP$Parser$parser,
189     java.util.Stack            CUP$Parser$stack,
190     int                        CUP$Parser$top)
191     throws java.lang.Exception
192     {
193       /* Symbol object for return from actions */
194       java_cup.runtime.Symbol CUP$Parser$result;
195
196       /* select the action based on the action number */
197       switch (CUP$Parser$act_num)
198         {
199           /*. . . . . . . . . . . . . . . . . . . .*/
200           case 0: // policy ::= intface 
201             {
202               ParseNode RESULT =null;
203                 int inleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
204                 int inright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
205                 ParseNode in = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
206                 
207                 ParseNode pn = new ParseNode("policy");
208                 pn.addChild(in);
209                 RESULT = pn;
210         
211               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);
212             }
213           return CUP$Parser$result;
214
215           /*. . . . . . . . . . . . . . . . . . . .*/
216           case 1: // $START ::= policy EOF 
217             {
218               Object RESULT =null;
219                 int start_valleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
220                 int start_valright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
221                 ParseNode start_val = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
222                 RESULT = start_val;
223               CUP$Parser$result = parser.getSymbolFactory().newSymbol("$START",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
224             }
225           /* ACCEPT */
226           CUP$Parser$parser.done_parsing();
227           return CUP$Parser$result;
228
229           /*. . . . . . . . . . . . . . . . . . . .*/
230           case 2: // policy ::= reqlist 
231             {
232               ParseNode RESULT =null;
233                 int rlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
234                 int rlright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
235                 ParseNode rl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
236                 
237                 ParseNode pn = new ParseNode("policy");
238                 pn.addChild(rl);
239                 RESULT = pn;
240         
241               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);
242             }
243           return CUP$Parser$result;
244
245           /*. . . . . . . . . . . . . . . . . . . .*/
246           case 3: // intface ::= PUBLIC INTERFACE IDENT BEGIN methlist capablist END 
247             {
248               ParseNode RESULT =null;
249                 int idintleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
250                 int idintright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
251                 Object idint = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
252                 int mlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
253                 int mlright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
254                 ParseNode ml = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
255                 int clleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
256                 int clright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
257                 ParseNode cl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
258                 
259                 ParseNode pn = new ParseNode("interface");
260                 pn.addChild("intface_ident").setLiteral(idint);
261                 pn.addChild(ml);
262                 pn.addChild(cl);
263                 RESULT = pn;
264         
265               CUP$Parser$result = parser.getSymbolFactory().newSymbol("intface",1, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
266             }
267           return CUP$Parser$result;
268
269           /*. . . . . . . . . . . . . . . . . . . .*/
270           case 4: // methlist ::= methlist meth 
271             {
272               ParseNode RESULT =null;
273                 int mlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
274                 int mlright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
275                 ParseNode ml = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
276                 int mleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
277                 int mright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
278                 ParseNode m = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
279                 
280                 ml.addChild(m);
281                 RESULT = ml;
282         
283               CUP$Parser$result = parser.getSymbolFactory().newSymbol("methlist",2, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
284             }
285           return CUP$Parser$result;
286
287           /*. . . . . . . . . . . . . . . . . . . .*/
288           case 5: // methlist ::= 
289             {
290               ParseNode RESULT =null;
291                 
292                 ParseNode pn = new ParseNode("method_list");
293                 RESULT = pn;
294         
295               CUP$Parser$result = parser.getSymbolFactory().newSymbol("methlist",2, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
296             }
297           return CUP$Parser$result;
298
299           /*. . . . . . . . . . . . . . . . . . . .*/
300           case 6: // meth ::= PUBLIC TYPE IDENT LPAR paramlist RPAR SEMICOLON 
301             {
302               ParseNode RESULT =null;
303                 int typemethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
304                 int typemethright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
305                 Object typemeth = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
306                 int idmethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
307                 int idmethright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
308                 Object idmeth = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
309                 int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
310                 int plright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
311                 ParseNode pl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
312                 
313                 ParseNode pn = new ParseNode("method");
314                 pn.addChild("method_type").setLiteral(typemeth);
315                 pn.addChild("method_ident").setLiteral(idmeth);
316                 pn.addChild(pl);
317                 RESULT = pn;
318         
319               CUP$Parser$result = parser.getSymbolFactory().newSymbol("meth",3, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
320             }
321           return CUP$Parser$result;
322
323           /*. . . . . . . . . . . . . . . . . . . .*/
324           case 7: // meth ::= PUBLIC IDENT IDENT LPAR paramlist RPAR SEMICOLON 
325             {
326               ParseNode RESULT =null;
327                 int clsmethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
328                 int clsmethright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
329                 Object clsmeth = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
330                 int idmethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
331                 int idmethright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
332                 Object idmeth = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
333                 int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
334                 int plright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
335                 ParseNode pl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
336                 
337                 ParseNode pn = new ParseNode("method");
338                 pn.addChild("method_class").setLiteral(clsmeth);
339                 pn.addChild("method_ident").setLiteral(idmeth);
340                 pn.addChild(pl);
341                 RESULT = pn;
342         
343               CUP$Parser$result = parser.getSymbolFactory().newSymbol("meth",3, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
344             }
345           return CUP$Parser$result;
346
347           /*. . . . . . . . . . . . . . . . . . . .*/
348           case 8: // paramlist ::= paramlist param 
349             {
350               ParseNode RESULT =null;
351                 int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
352                 int plright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
353                 ParseNode pl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
354                 int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
355                 int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
356                 ParseNode p = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
357                 
358                 pl.addChild(p);
359                 RESULT = pl;
360         
361               CUP$Parser$result = parser.getSymbolFactory().newSymbol("paramlist",4, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
362             }
363           return CUP$Parser$result;
364
365           /*. . . . . . . . . . . . . . . . . . . .*/
366           case 9: // paramlist ::= 
367             {
368               ParseNode RESULT =null;
369                 
370                 ParseNode pn = new ParseNode("param_list");
371                 RESULT = pn;
372         
373               CUP$Parser$result = parser.getSymbolFactory().newSymbol("paramlist",4, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
374             }
375           return CUP$Parser$result;
376
377           /*. . . . . . . . . . . . . . . . . . . .*/
378           case 10: // param ::= TYPE IDENT COMMA 
379             {
380               ParseNode RESULT =null;
381                 int typeprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
382                 int typeprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
383                 Object typeprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
384                 int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
385                 int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
386                 Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
387                 
388                 ParseNode pn = new ParseNode("param");
389                 pn.addChild("param_type").setLiteral(typeprm);
390                 pn.addChild("param_ident").setLiteral(idprm);
391                 RESULT = pn;
392         
393               CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
394             }
395           return CUP$Parser$result;
396
397           /*. . . . . . . . . . . . . . . . . . . .*/
398           case 11: // param ::= TYPE IDENT 
399             {
400               ParseNode RESULT =null;
401                 int typeprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
402                 int typeprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
403                 Object typeprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
404                 int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
405                 int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
406                 Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
407                 
408                 ParseNode pn = new ParseNode("param");
409                 pn.addChild("param_type").setLiteral(typeprm);
410                 pn.addChild("param_ident").setLiteral(idprm);
411                 RESULT = pn;
412         
413               CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
414             }
415           return CUP$Parser$result;
416
417           /*. . . . . . . . . . . . . . . . . . . .*/
418           case 12: // param ::= IDENT IDENT COMMA 
419             {
420               ParseNode RESULT =null;
421                 int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
422                 int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
423                 Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
424                 int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
425                 int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
426                 Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
427                 
428                 ParseNode pn = new ParseNode("param");
429                 pn.addChild("param_class").setLiteral(clsprm);
430                 pn.addChild("param_ident").setLiteral(idprm);
431                 RESULT = pn;
432         
433               CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
434             }
435           return CUP$Parser$result;
436
437           /*. . . . . . . . . . . . . . . . . . . .*/
438           case 13: // param ::= IDENT IDENT 
439             {
440               ParseNode RESULT =null;
441                 int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
442                 int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
443                 Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
444                 int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
445                 int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
446                 Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
447                 
448                 ParseNode pn = new ParseNode("param");
449                 pn.addChild("param_class").setLiteral(clsprm);
450                 pn.addChild("param_ident").setLiteral(idprm);
451                 RESULT = pn;
452         
453               CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
454             }
455           return CUP$Parser$result;
456
457           /*. . . . . . . . . . . . . . . . . . . .*/
458           case 14: // capablist ::= capablist capab 
459             {
460               ParseNode RESULT =null;
461                 int clleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
462                 int clright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
463                 ParseNode cl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
464                 int capleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
465                 int capright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
466                 ParseNode cap = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
467                 
468                 cl.addChild(cap);
469                 RESULT = cl;
470         
471               CUP$Parser$result = parser.getSymbolFactory().newSymbol("capablist",6, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
472             }
473           return CUP$Parser$result;
474
475           /*. . . . . . . . . . . . . . . . . . . .*/
476           case 15: // capablist ::= 
477             {
478               ParseNode RESULT =null;
479                 
480                 ParseNode pn = new ParseNode("capab_list");
481                 RESULT = pn;
482         
483               CUP$Parser$result = parser.getSymbolFactory().newSymbol("capablist",6, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
484             }
485           return CUP$Parser$result;
486
487           /*. . . . . . . . . . . . . . . . . . . .*/
488           case 16: // capab ::= CAPABILITY IDENT BEGIN capabcont END 
489             {
490               ParseNode RESULT =null;
491                 int idcapleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
492                 int idcapright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
493                 Object idcap = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
494                 int ccontleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
495                 int ccontright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
496                 ParseNode ccont = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
497                 
498                 ParseNode pn = new ParseNode("capability");
499                 pn.addChild("capab_ident").setLiteral(idcap);
500                 pn.addChild(ccont);
501                 RESULT = pn;
502         
503               CUP$Parser$result = parser.getSymbolFactory().newSymbol("capab",7, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
504             }
505           return CUP$Parser$result;
506
507           /*. . . . . . . . . . . . . . . . . . . .*/
508           case 17: // capabcont ::= capabcont cont 
509             {
510               ParseNode RESULT =null;
511                 int ccontleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
512                 int ccontright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
513                 ParseNode ccont = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
514                 int cntleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
515                 int cntright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
516                 ParseNode cnt = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
517                 
518                 ccont.addChild(cnt);
519                 RESULT = ccont;
520         
521               CUP$Parser$result = parser.getSymbolFactory().newSymbol("capabcont",8, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
522             }
523           return CUP$Parser$result;
524
525           /*. . . . . . . . . . . . . . . . . . . .*/
526           case 18: // capabcont ::= 
527             {
528               ParseNode RESULT =null;
529                 
530                 ParseNode pn = new ParseNode("capab_content");
531                 RESULT = pn;
532         
533               CUP$Parser$result = parser.getSymbolFactory().newSymbol("capabcont",8, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
534             }
535           return CUP$Parser$result;
536
537           /*. . . . . . . . . . . . . . . . . . . .*/
538           case 19: // cont ::= DESCRIPTION ASSIGN STRINGCONST SEMICOLON 
539             {
540               ParseNode RESULT =null;
541                 int dscleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
542                 int dscright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
543                 Object dsc = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
544                 int strdscleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
545                 int strdscright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
546                 Object strdsc = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
547                 
548                 ParseNode pn = new ParseNode("capab_content");
549                 pn.addChild("capab_desc").setLiteral(strdsc);
550                 RESULT = pn;
551         
552               CUP$Parser$result = parser.getSymbolFactory().newSymbol("cont",9, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
553             }
554           return CUP$Parser$result;
555
556           /*. . . . . . . . . . . . . . . . . . . .*/
557           case 20: // cont ::= METHOD ASSIGN STRINGCONST SEMICOLON 
558             {
559               ParseNode RESULT =null;
560                 int mtdleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
561                 int mtdright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
562                 Object mtd = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
563                 int strmethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
564                 int strmethright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
565                 Object strmeth = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
566                 
567                 ParseNode pn = new ParseNode("capab_content");
568                 pn.addChild("capab_meth").setLiteral(strmeth);
569                 RESULT = pn;
570         
571               CUP$Parser$result = parser.getSymbolFactory().newSymbol("cont",9, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
572             }
573           return CUP$Parser$result;
574
575           /*. . . . . . . . . . . . . . . . . . . .*/
576           case 21: // reqlist ::= reqlist require 
577             {
578               ParseNode RESULT =null;
579                 int rlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
580                 int rlright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
581                 ParseNode rl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
582                 int reqleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
583                 int reqright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
584                 ParseNode req = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
585                 
586                 rl.addChild(req);
587                 RESULT = rl;
588         
589               CUP$Parser$result = parser.getSymbolFactory().newSymbol("reqlist",10, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
590             }
591           return CUP$Parser$result;
592
593           /*. . . . . . . . . . . . . . . . . . . .*/
594           case 22: // reqlist ::= 
595             {
596               ParseNode RESULT =null;
597                 
598                 ParseNode pn = new ParseNode("reqlist");
599                 RESULT = pn;
600         
601               CUP$Parser$result = parser.getSymbolFactory().newSymbol("reqlist",10, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
602             }
603           return CUP$Parser$result;
604
605           /*. . . . . . . . . . . . . . . . . . . .*/
606           case 23: // require ::= REQUIRES IDENT WITH capintlist AS INTERFACE IDENT SEMICOLON 
607             {
608               ParseNode RESULT =null;
609                 int idintleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left;
610                 int idintright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right;
611                 Object idint = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value;
612                 int cilleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
613                 int cilright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
614                 ParseNode cil = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
615                 int idnewintleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
616                 int idnewintright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
617                 Object idnewint = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
618                 
619                 ParseNode pn = new ParseNode("requires");
620                 pn.addChild("intface_ident").setLiteral(idint);
621                 pn.addChild(cil);
622                 pn.addChild("new_intface_ident").setLiteral(idnewint);
623                 RESULT = pn;
624         
625               CUP$Parser$result = parser.getSymbolFactory().newSymbol("require",11, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
626             }
627           return CUP$Parser$result;
628
629           /*. . . . . . . . . . . . . . . . . . . .*/
630           case 24: // capintlist ::= IDENT 
631             {
632               ParseNode RESULT =null;
633                 int idcapleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
634                 int idcapright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
635                 Object idcap = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
636                 
637                 ParseNode pn = new ParseNode("capab_ident_list");
638                 pn.addChild("capab_ident").setLiteral(idcap);
639                 RESULT = pn;
640         
641               CUP$Parser$result = parser.getSymbolFactory().newSymbol("capintlist",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
642             }
643           return CUP$Parser$result;
644
645           /*. . . . . . . . . . . . . . . . . . . .*/
646           case 25: // capintlist ::= capintlist COMMA IDENT 
647             {
648               ParseNode RESULT =null;
649                 int cilleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
650                 int cilright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
651                 ParseNode cil = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
652                 int idcapleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
653                 int idcapright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
654                 Object idcap = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
655                 
656                 cil.addChild("capab_ident").setLiteral(idcap);
657                 RESULT = cil;
658         
659               CUP$Parser$result = parser.getSymbolFactory().newSymbol("capintlist",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
660             }
661           return CUP$Parser$result;
662
663           /*. . . . . . . . . . . . . . . . . . . .*/
664           case 26: // capintlist ::= 
665             {
666               ParseNode RESULT =null;
667                 
668                 ParseNode pn = new ParseNode("capab_ident_list");
669                 RESULT = pn;
670         
671               CUP$Parser$result = parser.getSymbolFactory().newSymbol("capintlist",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
672             }
673           return CUP$Parser$result;
674
675           /* . . . . . .*/
676           default:
677             throw new Exception(
678                "Invalid action number "+CUP$Parser$act_num+"found in internal parse table");
679
680         }
681     } /* end of method */
682
683   /** Method splitting the generated action code into several parts. */
684   public final java_cup.runtime.Symbol CUP$Parser$do_action(
685     int                        CUP$Parser$act_num,
686     java_cup.runtime.lr_parser CUP$Parser$parser,
687     java.util.Stack            CUP$Parser$stack,
688     int                        CUP$Parser$top)
689     throws java.lang.Exception
690     {
691               return CUP$Parser$do_action_part00000000(
692                                CUP$Parser$act_num,
693                                CUP$Parser$parser,
694                                CUP$Parser$stack,
695                                CUP$Parser$top);
696     }
697 }
698
699 }