001    
002    //----------------------------------------------------
003    // The following code was generated by CUP v0.10k
004    // Sat May 17 09:06:51 GMT-08:00 2008
005    //----------------------------------------------------
006    
007    package mondrian.olap;
008    
009    import java_cup.runtime.*;
010    import java.util.*;
011    import mondrian.resource.MondrianResource;
012    import mondrian.mdx.*;
013    
014    /** CUP v0.10k generated parser.
015      * @version Sat May 17 09:06:51 GMT-08:00 2008
016      */
017    public class Parser extends java_cup.runtime.lr_parser {
018    
019      /** Default constructor. */
020      public Parser() {super();}
021    
022      /** Constructor which sets the default scanner. */
023      public Parser(java_cup.runtime.Scanner s) {super(s);}
024    
025      /** Production table. */
026      protected static final short _production_table[][] = 
027        unpackFromStrings(new String[] {
028        "\000\176\000\002\002\004\000\002\037\003\000\002\041" +
029        "\003\000\002\040\003\000\002\040\003\000\002\036\003" +
030        "\000\002\036\003\000\002\035\003\000\002\035\003\000" +
031        "\002\026\003\000\002\026\005\000\002\025\003\000\002" +
032        "\025\005\000\002\027\003\000\002\017\003\000\002\017" +
033        "\005\000\002\017\005\000\002\016\003\000\002\016\005" +
034        "\000\002\015\003\000\002\015\004\000\002\014\003\000" +
035        "\002\014\005\000\002\014\005\000\002\014\005\000\002" +
036        "\014\005\000\002\014\005\000\002\014\006\000\002\014" +
037        "\005\000\002\014\006\000\002\013\003\000\002\013\005" +
038        "\000\002\013\005\000\002\013\005\000\002\012\003\000" +
039        "\002\012\005\000\002\012\005\000\002\010\003\000\002" +
040        "\010\004\000\002\010\004\000\002\021\003\000\002\021" +
041        "\003\000\002\021\003\000\002\021\005\000\002\021\005" +
042        "\000\002\021\005\000\002\021\010\000\002\021\006\000" +
043        "\002\021\010\000\002\021\005\000\002\021\005\000\002" +
044        "\021\003\000\002\021\003\000\002\004\007\000\002\020" +
045        "\002\000\002\020\003\000\002\071\002\000\002\071\004" +
046        "\000\002\073\006\000\002\005\002\000\002\005\004\000" +
047        "\002\034\003\000\002\034\003\000\002\034\003\000\002" +
048        "\034\003\000\002\034\003\000\002\034\003\000\002\006" +
049        "\005\000\002\006\003\000\002\007\003\000\002\007\002" +
050        "\000\002\064\002\000\002\064\003\000\002\063\003\000" +
051        "\002\063\005\000\002\024\003\000\002\024\004\000\002" +
052        "\023\011\000\002\072\002\000\002\072\004\000\002\055" +
053        "\002\000\002\055\003\000\002\054\003\000\002\054\005" +
054        "\000\002\022\002\000\002\022\004\000\002\057\002\000" +
055        "\002\057\003\000\002\065\003\000\002\065\004\000\002" +
056        "\044\003\000\002\044\003\000\002\042\007\000\002\042" +
057        "\007\000\002\060\002\000\002\060\004\000\002\066\003" +
058        "\000\002\066\005\000\002\031\003\000\002\045\005\000" +
059        "\002\043\006\000\002\043\006\000\002\032\003\000\002" +
060        "\003\007\000\002\003\007\000\002\053\002\000\002\053" +
061        "\004\000\002\062\002\000\002\062\003\000\002\033\003" +
062        "\000\002\074\003\000\002\074\006\000\002\061\005\000" +
063        "\002\050\002\000\002\050\003\000\002\067\003\000\002" +
064        "\067\005\000\002\051\003\000\002\030\003\000\002\011" +
065        "\003\000\002\056\005\000\002\046\002\000\002\046\003" +
066        "\000\002\070\003\000\002\070\005\000\002\047\003" });
067    
068      /** Access to production table. */
069      public short[][] production_table() {return _production_table;}
070    
071      /** Parse-action table. */
072      protected static final short[][] _action_table = 
073        unpackFromStrings(new String[] {
074        "\000\303\000\010\031\uffb3\037\005\040\007\001\002\000" +
075        "\004\002\uffb6\001\002\000\006\022\257\032\256\001\002" +
076        "\000\004\002\252\001\002\000\036\007\050\010\031\012" +
077        "\040\024\025\025\053\030\033\052\027\054\026\056\046" +
078        "\060\022\064\037\065\030\066\043\070\034\001\002\000" +
079        "\004\031\011\001\002\000\042\007\uff98\010\uff98\012\uff98" +
080        "\016\uffb1\023\015\024\uff98\025\uff98\030\uff98\052\uff98\054" +
081        "\uff98\056\uff98\060\uff98\064\uff98\065\uff98\066\uff98\070\uff98" +
082        "\001\002\000\004\016\227\001\002\000\036\007\050\010" +
083        "\031\012\040\024\025\025\053\030\033\052\027\054\026" +
084        "\056\046\060\022\064\037\065\030\066\043\070\034\001" +
085        "\002\000\006\016\uffaf\044\020\001\002\000\004\014\017" +
086        "\001\002\000\004\016\uffb0\001\002\000\036\007\uff97\010" +
087        "\uff97\012\uff97\024\uff97\025\uff97\030\uff97\052\uff97\054\uff97" +
088        "\056\uff97\060\uff97\064\uff97\065\uff97\066\uff97\070\uff97\001" +
089        "\002\000\040\007\uff98\010\uff98\012\uff98\023\015\024\uff98" +
090        "\025\uff98\030\uff98\052\uff98\054\uff98\056\uff98\060\uff98\064" +
091        "\uff98\065\uff98\066\uff98\070\uff98\001\002\000\004\016\uffae" +
092        "\001\002\000\030\007\050\010\031\012\040\025\053\030" +
093        "\033\052\027\054\026\064\037\065\030\066\043\070\034" +
094        "\001\002\000\116\002\uffd7\004\uffd7\005\uffd7\011\uffd7\012" +
095        "\uffd7\013\uffd7\015\uffd7\017\uffd7\020\uffd7\021\uffd7\022\uffd7" +
096        "\024\uffd7\026\uffd7\027\uffd7\030\uffd7\031\uffd7\032\uffd7\033" +
097        "\uffd7\034\uffd7\036\uffd7\041\uffd7\042\ufff6\043\uffd7\044\uffd7" +
098        "\045\uffd7\046\uffd7\047\uffd7\050\uffd7\051\uffd7\053\uffd7\054" +
099        "\ufff6\055\uffd7\056\uffd7\057\uffd7\060\uffd7\061\uffd7\062\uffd7" +
100        "\063\uffd7\001\002\000\112\002\uffcd\004\uffcd\005\uffcd\011" +
101        "\uffcd\012\uffcd\013\uffcd\015\uffcd\017\uffcd\020\uffcd\021\uffcd" +
102        "\022\uffcd\024\uffcd\026\uffcd\027\uffcd\030\uffcd\031\uffcd\032" +
103        "\uffcd\033\uffcd\034\uffcd\036\uffcd\041\uffcd\043\uffcd\044\uffcd" +
104        "\045\uffcd\046\uffcd\047\uffcd\050\uffcd\051\uffcd\053\uffcd\055" +
105        "\uffcd\056\uffcd\057\uffcd\060\uffcd\061\uffcd\062\uffcd\063\uffcd" +
106        "\001\002\000\036\007\050\010\031\012\040\024\025\025" +
107        "\053\030\033\052\027\054\026\056\046\060\022\064\037" +
108        "\065\030\066\043\070\034\001\002\000\040\007\050\010" +
109        "\031\012\040\024\025\025\053\030\033\044\uffbb\052\027" +
110        "\054\026\056\046\060\022\064\037\065\030\066\043\070" +
111        "\034\001\002\000\042\007\050\010\031\012\040\024\025" +
112        "\025\053\030\033\044\uffbb\052\027\054\026\056\046\060" +
113        "\022\061\uffba\064\037\065\030\066\043\070\034\001\002" +
114        "\000\122\002\ufffe\004\ufffe\005\ufffe\011\ufffe\012\ufffe\013" +
115        "\ufffe\015\ufffe\016\ufffe\017\ufffe\020\ufffe\021\ufffe\022\ufffe" +
116        "\024\ufffe\026\ufffe\027\ufffe\030\ufffe\031\ufffe\032\ufffe\033" +
117        "\ufffe\034\ufffe\035\ufffe\036\ufffe\041\ufffe\042\ufffe\043\ufffe" +
118        "\044\ufffe\045\ufffe\046\ufffe\047\ufffe\050\ufffe\051\ufffe\053" +
119        "\ufffe\054\ufffe\055\ufffe\056\ufffe\057\ufffe\060\ufffe\061\ufffe" +
120        "\062\ufffe\063\ufffe\001\002\000\004\054\214\001\002\000" +
121        "\006\042\207\054\210\001\002\000\122\002\ufff9\004\ufff9" +
122        "\005\ufff9\011\ufff9\012\ufff9\013\ufff9\015\ufff9\016\ufff9\017" +
123        "\ufff9\020\ufff9\021\ufff9\022\ufff9\024\ufff9\026\ufff9\027\ufff9" +
124        "\030\ufff9\031\ufff9\032\ufff9\033\ufff9\034\ufff9\035\ufff9\036" +
125        "\ufff9\041\ufff9\042\ufff9\043\ufff9\044\ufff9\045\ufff9\046\ufff9" +
126        "\047\ufff9\050\ufff9\051\ufff9\053\ufff9\054\ufff9\055\ufff9\056" +
127        "\ufff9\057\ufff9\060\ufff9\061\ufff9\062\ufff9\063\ufff9\001\002" +
128        "\000\112\002\uffd9\004\uffd9\005\uffd9\011\uffd9\012\uffd9\013" +
129        "\uffd9\015\uffd9\017\uffd9\020\uffd9\021\uffd9\022\uffd9\024\uffd9" +
130        "\026\uffd9\027\uffd9\030\uffd9\031\uffd9\032\uffd9\033\uffd9\034" +
131        "\uffd9\036\uffd9\041\uffd9\043\uffd9\044\uffd9\045\uffd9\046\uffd9" +
132        "\047\uffd9\050\uffd9\051\uffd9\053\uffd9\055\uffd9\056\uffd9\057" +
133        "\uffd9\060\uffd9\061\uffd9\062\uffd9\063\uffd9\001\002\000\012" +
134        "\012\162\026\uff96\030\uff90\043\074\001\002\000\040\002" +
135        "\uffbd\005\uffbd\011\uffbd\012\uffbd\022\uffbd\026\uffbd\027\076" +
136        "\030\uffbd\031\uffbd\032\uffbd\036\077\043\uffbd\044\uffbd\061" +
137        "\uffbd\062\uffbd\001\002\000\112\002\uffd8\004\uffd8\005\uffd8" +
138        "\011\uffd8\012\uffd8\013\uffd8\015\uffd8\017\uffd8\020\uffd8\021" +
139        "\uffd8\022\uffd8\024\uffd8\026\uffd8\027\uffd8\030\uffd8\031\uffd8" +
140        "\032\uffd8\033\uffd8\034\uffd8\036\uffd8\041\uffd8\043\uffd8\044" +
141        "\uffd8\045\uffd8\046\uffd8\047\uffd8\050\uffd8\051\uffd8\053\uffd8" +
142        "\055\uffd8\056\uffd8\057\uffd8\060\uffd8\061\uffd8\062\uffd8\063" +
143        "\uffd8\001\002\000\122\002\ufffa\004\ufffa\005\ufffa\011\ufffa" +
144        "\012\ufffa\013\ufffa\015\ufffa\016\ufffa\017\ufffa\020\ufffa\021" +
145        "\ufffa\022\ufffa\024\ufffa\026\ufffa\027\ufffa\030\ufffa\031\ufffa" +
146        "\032\ufffa\033\ufffa\034\ufffa\035\ufffa\036\ufffa\041\ufffa\042" +
147        "\ufffa\043\ufffa\044\ufffa\045\ufffa\046\ufffa\047\ufffa\050\ufffa" +
148        "\051\ufffa\053\ufffa\054\ufffa\055\ufffa\056\ufffa\057\ufffa\060" +
149        "\ufffa\061\ufffa\062\ufffa\063\ufffa\001\002\000\110\002\uffdf" +
150        "\004\uffdf\005\uffdf\011\uffdf\012\uffdf\013\uffdf\015\uffdf\017" +
151        "\uffdf\020\uffdf\021\uffdf\022\uffdf\024\uffdf\026\uffdf\027\uffdf" +
152        "\030\uffdf\031\uffdf\032\uffdf\033\uffdf\034\uffdf\036\uffdf\041" +
153        "\uffdf\043\uffdf\044\uffdf\045\uffdf\047\uffdf\050\uffdf\051\uffdf" +
154        "\053\uffdf\055\uffdf\056\uffdf\057\uffdf\060\uffdf\061\uffdf\062" +
155        "\uffdf\063\uffdf\001\002\000\110\002\uffe3\004\uffe3\005\uffe3" +
156        "\011\uffe3\012\uffe3\013\uffe3\015\uffe3\017\uffe3\020\uffe3\021" +
157        "\uffe3\022\uffe3\024\uffe3\026\uffe3\027\uffe3\030\uffe3\031\uffe3" +
158        "\032\uffe3\033\uffe3\034\uffe3\036\uffe3\041\111\043\uffe3\044" +
159        "\uffe3\045\uffe3\047\uffe3\050\uffe3\051\uffe3\053\uffe3\055\uffe3" +
160        "\056\uffe3\057\uffe3\060\uffe3\061\uffe3\062\uffe3\063\112\001" +
161        "\002\000\122\002\000\004\000\005\000\011\000\012\000" +
162        "\013\000\015\000\016\000\017\000\020\000\021\000\022" +
163        "\000\024\000\026\000\027\000\030\000\031\000\032\000" +
164        "\033\000\034\000\035\000\036\000\041\000\042\000\043" +
165        "\000\044\000\045\000\046\000\047\000\050\000\051\000" +
166        "\053\000\054\000\055\000\056\000\057\000\060\000\061" +
167        "\000\062\000\063\000\001\002\000\052\002\ufff3\004\101" +
168        "\005\ufff3\011\ufff3\012\ufff3\013\ufff3\015\ufff3\022\ufff3\026" +
169        "\ufff3\027\ufff3\030\ufff3\031\ufff3\032\ufff3\033\ufff3\034\ufff3" +
170        "\036\ufff3\043\ufff3\044\ufff3\061\ufff3\062\ufff3\001\002\000" +
171        "\052\002\ufff0\004\ufff0\005\ufff0\011\ufff0\012\ufff0\013\ufff0" +
172        "\015\ufff0\022\ufff0\026\ufff0\027\ufff0\030\ufff0\031\ufff0\032" +
173        "\ufff0\033\ufff0\034\ufff0\036\ufff0\043\ufff0\044\ufff0\061\ufff0" +
174        "\062\ufff0\001\002\000\030\007\050\010\031\012\040\025" +
175        "\053\030\033\052\027\054\026\064\037\065\030\066\043" +
176        "\070\034\001\002\000\076\002\uffee\004\uffee\005\uffee\011" +
177        "\uffee\012\uffee\013\uffee\015\uffee\017\133\020\145\021\142" +
178        "\022\uffee\024\141\026\uffee\027\uffee\030\uffee\031\uffee\032" +
179        "\uffee\033\uffee\034\uffee\036\uffee\043\uffee\044\uffee\047\136" +
180        "\050\135\051\140\053\137\055\144\057\143\061\uffee\062" +
181        "\uffee\001\002\000\044\007\050\010\031\012\040\013\uffcb" +
182        "\015\uffcb\024\025\025\053\030\033\034\uffcb\052\027\054" +
183        "\026\056\046\060\022\064\037\065\030\066\043\070\034" +
184        "\001\002\000\104\002\uffec\004\uffec\005\uffec\011\uffec\012" +
185        "\uffec\013\uffec\015\uffec\017\uffec\020\uffec\021\uffec\022\uffec" +
186        "\024\uffec\026\uffec\027\uffec\030\uffec\031\uffec\032\uffec\033" +
187        "\uffec\034\uffec\036\uffec\043\uffec\044\uffec\045\106\047\uffec" +
188        "\050\uffec\051\uffec\053\uffec\055\uffec\056\107\057\uffec\060" +
189        "\105\061\uffec\062\uffec\001\002\000\112\002\uffdc\004\uffdc" +
190        "\005\uffdc\011\uffdc\012\uffdc\013\uffdc\015\uffdc\017\uffdc\020" +
191        "\uffdc\021\uffdc\022\uffdc\024\uffdc\026\uffdc\027\uffdc\030\uffdc" +
192        "\031\uffdc\032\uffdc\033\uffdc\034\uffdc\036\uffdc\041\uffdc\043" +
193        "\uffdc\044\uffdc\045\uffdc\046\057\047\uffdc\050\uffdc\051\uffdc" +
194        "\053\uffdc\055\uffdc\056\uffdc\057\uffdc\060\uffdc\061\uffdc\062" +
195        "\uffdc\063\uffdc\001\002\000\112\002\uffce\004\uffce\005\uffce" +
196        "\011\uffce\012\uffce\013\uffce\015\uffce\017\uffce\020\uffce\021" +
197        "\uffce\022\uffce\024\uffce\026\uffce\027\uffce\030\uffce\031\uffce" +
198        "\032\uffce\033\uffce\034\uffce\036\uffce\041\uffce\043\uffce\044" +
199        "\uffce\045\uffce\046\uffce\047\uffce\050\uffce\051\uffce\053\uffce" +
200        "\055\uffce\056\uffce\057\uffce\060\uffce\061\uffce\062\uffce\063" +
201        "\uffce\001\002\000\122\002\ufffd\004\ufffd\005\ufffd\011\ufffd" +
202        "\012\ufffd\013\ufffd\015\ufffd\016\ufffd\017\ufffd\020\ufffd\021" +
203        "\ufffd\022\ufffd\024\ufffd\026\ufffd\027\ufffd\030\ufffd\031\ufffd" +
204        "\032\ufffd\033\ufffd\034\ufffd\035\ufffd\036\ufffd\041\ufffd\042" +
205        "\ufffd\043\ufffd\044\ufffd\045\ufffd\046\ufffd\047\ufffd\050\ufffd" +
206        "\051\ufffd\053\ufffd\054\ufffd\055\ufffd\056\ufffd\057\ufffd\060" +
207        "\ufffd\061\ufffd\062\ufffd\063\ufffd\001\002\000\122\002\ufffc" +
208        "\004\ufffc\005\ufffc\011\ufffc\012\ufffc\013\ufffc\015\ufffc\016" +
209        "\ufffc\017\ufffc\020\ufffc\021\ufffc\022\ufffc\024\ufffc\026\ufffc" +
210        "\027\ufffc\030\ufffc\031\ufffc\032\ufffc\033\ufffc\034\ufffc\035" +
211        "\ufffc\036\ufffc\041\ufffc\042\ufffc\043\ufffc\044\ufffc\045\ufffc" +
212        "\046\ufffc\047\ufffc\050\ufffc\051\ufffc\053\ufffc\054\ufffc\055" +
213        "\ufffc\056\ufffc\057\ufffc\060\ufffc\061\ufffc\062\ufffc\063\ufffc" +
214        "\001\002\000\122\002\ufffb\004\ufffb\005\ufffb\011\ufffb\012" +
215        "\ufffb\013\ufffb\015\ufffb\016\ufffb\017\ufffb\020\ufffb\021\ufffb" +
216        "\022\ufffb\024\ufffb\026\ufffb\027\ufffb\030\ufffb\031\ufffb\032" +
217        "\ufffb\033\ufffb\034\ufffb\035\ufffb\036\ufffb\041\ufffb\042\ufffb" +
218        "\043\ufffb\044\ufffb\045\ufffb\046\ufffb\047\ufffb\050\ufffb\051" +
219        "\ufffb\053\ufffb\054\ufffb\055\ufffb\056\ufffb\057\ufffb\060\ufffb" +
220        "\061\ufffb\062\ufffb\063\ufffb\001\002\000\014\012\040\030" +
221        "\033\065\030\066\043\067\064\001\002\000\112\002\uffd4" +
222        "\004\uffd4\005\uffd4\011\uffd4\012\uffd4\013\uffd4\015\uffd4\017" +
223        "\uffd4\020\uffd4\021\uffd4\022\uffd4\024\uffd4\026\uffd4\027\uffd4" +
224        "\030\uffd4\031\uffd4\032\uffd4\033\uffd4\034\uffd4\036\uffd4\041" +
225        "\uffd4\043\uffd4\044\uffd4\045\uffd4\046\uffd4\047\uffd4\050\uffd4" +
226        "\051\uffd4\053\uffd4\055\uffd4\056\uffd4\057\uffd4\060\uffd4\061" +
227        "\uffd4\062\uffd4\063\uffd4\001\002\000\004\054\065\001\002" +
228        "\000\114\002\uffd6\004\uffd6\005\uffd6\011\uffd6\012\uffd6\013" +
229        "\uffd6\015\uffd6\017\uffd6\020\uffd6\021\uffd6\022\uffd6\024\uffd6" +
230        "\026\uffd6\027\uffd6\030\uffd6\031\uffd6\032\uffd6\033\uffd6\034" +
231        "\uffd6\036\uffd6\041\uffd6\043\uffd6\044\uffd6\045\uffd6\046\uffd6" +
232        "\047\uffd6\050\uffd6\051\uffd6\053\uffd6\054\ufffc\055\uffd6\056" +
233        "\uffd6\057\uffd6\060\uffd6\061\uffd6\062\uffd6\063\uffd6\001\002" +
234        "\000\114\002\uffd5\004\uffd5\005\uffd5\011\uffd5\012\uffd5\013" +
235        "\uffd5\015\uffd5\017\uffd5\020\uffd5\021\uffd5\022\uffd5\024\uffd5" +
236        "\026\uffd5\027\uffd5\030\uffd5\031\uffd5\032\uffd5\033\uffd5\034" +
237        "\uffd5\036\uffd5\041\uffd5\043\uffd5\044\uffd5\045\uffd5\046\uffd5" +
238        "\047\uffd5\050\uffd5\051\uffd5\053\uffd5\054\ufffb\055\uffd5\056" +
239        "\uffd5\057\uffd5\060\uffd5\061\uffd5\062\uffd5\063\uffd5\001\002" +
240        "\000\112\002\uffff\004\uffff\005\uffff\011\uffff\012\uffff\013" +
241        "\uffff\015\uffff\017\uffff\020\uffff\021\uffff\022\uffff\024\uffff" +
242        "\026\uffff\027\uffff\030\uffff\031\uffff\032\uffff\033\uffff\034" +
243        "\uffff\036\uffff\041\uffff\043\uffff\044\uffff\045\uffff\046\uffff" +
244        "\047\uffff\050\uffff\051\uffff\053\uffff\055\uffff\056\uffff\057" +
245        "\uffff\060\uffff\061\uffff\062\uffff\063\uffff\001\002\000\042" +
246        "\007\050\010\031\012\040\024\025\025\053\030\033\044" +
247        "\uffbb\052\027\054\026\056\046\060\022\062\uffba\064\037" +
248        "\065\030\066\043\070\034\001\002\000\004\062\104\001" +
249        "\002\000\006\061\uffb9\062\uffb9\001\002\000\012\043\074" +
250        "\044\uffbc\061\uffb8\062\uffb8\001\002\000\004\044\072\001" +
251        "\002\000\040\007\050\010\031\012\040\024\025\025\053" +
252        "\030\033\044\uffbb\052\027\054\026\056\046\060\022\064" +
253        "\037\065\030\066\043\070\034\001\002\000\006\061\uffb7" +
254        "\062\uffb7\001\002\000\036\007\050\010\031\012\040\024" +
255        "\025\025\053\030\033\052\027\054\026\056\046\060\022" +
256        "\064\037\065\030\066\043\070\034\001\002\000\040\002" +
257        "\uffbe\005\uffbe\011\uffbe\012\uffbe\022\uffbe\026\uffbe\027\076" +
258        "\030\uffbe\031\uffbe\032\uffbe\036\077\043\uffbe\044\uffbe\061" +
259        "\uffbe\062\uffbe\001\002\000\036\007\050\010\031\012\040" +
260        "\024\025\025\053\030\033\052\027\054\026\056\046\060" +
261        "\022\064\037\065\030\066\043\070\034\001\002\000\036" +
262        "\007\050\010\031\012\040\024\025\025\053\030\033\052" +
263        "\027\054\026\056\046\060\022\064\037\065\030\066\043" +
264        "\070\034\001\002\000\052\002\ufff1\004\101\005\ufff1\011" +
265        "\ufff1\012\ufff1\013\ufff1\015\ufff1\022\ufff1\026\ufff1\027\ufff1" +
266        "\030\ufff1\031\ufff1\032\ufff1\033\ufff1\034\ufff1\036\ufff1\043" +
267        "\ufff1\044\ufff1\061\ufff1\062\ufff1\001\002\000\036\007\050" +
268        "\010\031\012\040\024\025\025\053\030\033\052\027\054" +
269        "\026\056\046\060\022\064\037\065\030\066\043\070\034" +
270        "\001\002\000\052\002\uffef\004\uffef\005\uffef\011\uffef\012" +
271        "\uffef\013\uffef\015\uffef\022\uffef\026\uffef\027\uffef\030\uffef" +
272        "\031\uffef\032\uffef\033\uffef\034\uffef\036\uffef\043\uffef\044" +
273        "\uffef\061\uffef\062\uffef\001\002\000\052\002\ufff2\004\101" +
274        "\005\ufff2\011\ufff2\012\ufff2\013\ufff2\015\ufff2\022\ufff2\026" +
275        "\ufff2\027\ufff2\030\ufff2\031\ufff2\032\ufff2\033\ufff2\034\ufff2" +
276        "\036\ufff2\043\ufff2\044\ufff2\061\ufff2\062\ufff2\001\002\000" +
277        "\112\002\uffd3\004\uffd3\005\uffd3\011\uffd3\012\uffd3\013\uffd3" +
278        "\015\uffd3\017\uffd3\020\uffd3\021\uffd3\022\uffd3\024\uffd3\026" +
279        "\uffd3\027\uffd3\030\uffd3\031\uffd3\032\uffd3\033\uffd3\034\uffd3" +
280        "\036\uffd3\041\uffd3\043\uffd3\044\uffd3\045\uffd3\046\uffd3\047" +
281        "\uffd3\050\uffd3\051\uffd3\053\uffd3\055\uffd3\056\uffd3\057\uffd3" +
282        "\060\uffd3\061\uffd3\062\uffd3\063\uffd3\001\002\000\034\007" +
283        "\050\010\031\012\040\025\053\030\033\052\027\054\026" +
284        "\056\046\060\022\064\037\065\030\066\043\070\034\001" +
285        "\002\000\034\007\050\010\031\012\040\025\053\030\033" +
286        "\052\027\054\026\056\046\060\022\064\037\065\030\066" +
287        "\043\070\034\001\002\000\034\007\050\010\031\012\040" +
288        "\025\053\030\033\052\027\054\026\056\046\060\022\064" +
289        "\037\065\030\066\043\070\034\001\002\000\110\002\uffe1" +
290        "\004\uffe1\005\uffe1\011\uffe1\012\uffe1\013\uffe1\015\uffe1\017" +
291        "\uffe1\020\uffe1\021\uffe1\022\uffe1\024\uffe1\026\uffe1\027\uffe1" +
292        "\030\uffe1\031\uffe1\032\uffe1\033\uffe1\034\uffe1\036\uffe1\041" +
293        "\111\043\uffe1\044\uffe1\045\uffe1\047\uffe1\050\uffe1\051\uffe1" +
294        "\053\uffe1\055\uffe1\056\uffe1\057\uffe1\060\uffe1\061\uffe1\062" +
295        "\uffe1\063\112\001\002\000\034\007\050\010\031\012\040" +
296        "\025\053\030\033\052\027\054\026\056\046\060\022\064" +
297        "\037\065\030\066\043\070\034\001\002\000\034\007\050" +
298        "\010\031\012\040\025\053\030\033\052\027\054\026\056" +
299        "\046\060\022\064\037\065\030\066\043\070\034\001\002" +
300        "\000\110\002\uffdd\004\uffdd\005\uffdd\011\uffdd\012\uffdd\013" +
301        "\uffdd\015\uffdd\017\uffdd\020\uffdd\021\uffdd\022\uffdd\024\uffdd" +
302        "\026\uffdd\027\uffdd\030\uffdd\031\uffdd\032\uffdd\033\uffdd\034" +
303        "\uffdd\036\uffdd\041\uffdd\043\uffdd\044\uffdd\045\uffdd\047\uffdd" +
304        "\050\uffdd\051\uffdd\053\uffdd\055\uffdd\056\uffdd\057\uffdd\060" +
305        "\uffdd\061\uffdd\062\uffdd\063\uffdd\001\002\000\110\002\uffde" +
306        "\004\uffde\005\uffde\011\uffde\012\uffde\013\uffde\015\uffde\017" +
307        "\uffde\020\uffde\021\uffde\022\uffde\024\uffde\026\uffde\027\uffde" +
308        "\030\uffde\031\uffde\032\uffde\033\uffde\034\uffde\036\uffde\041" +
309        "\uffde\043\uffde\044\uffde\045\uffde\047\uffde\050\uffde\051\uffde" +
310        "\053\uffde\055\uffde\056\uffde\057\uffde\060\uffde\061\uffde\062" +
311        "\uffde\063\uffde\001\002\000\110\002\uffe0\004\uffe0\005\uffe0" +
312        "\011\uffe0\012\uffe0\013\uffe0\015\uffe0\017\uffe0\020\uffe0\021" +
313        "\uffe0\022\uffe0\024\uffe0\026\uffe0\027\uffe0\030\uffe0\031\uffe0" +
314        "\032\uffe0\033\uffe0\034\uffe0\036\uffe0\041\111\043\uffe0\044" +
315        "\uffe0\045\uffe0\047\uffe0\050\uffe0\051\uffe0\053\uffe0\055\uffe0" +
316        "\056\uffe0\057\uffe0\060\uffe0\061\uffe0\062\uffe0\063\112\001" +
317        "\002\000\110\002\uffe2\004\uffe2\005\uffe2\011\uffe2\012\uffe2" +
318        "\013\uffe2\015\uffe2\017\uffe2\020\uffe2\021\uffe2\022\uffe2\024" +
319        "\uffe2\026\uffe2\027\uffe2\030\uffe2\031\uffe2\032\uffe2\033\uffe2" +
320        "\034\uffe2\036\uffe2\041\111\043\uffe2\044\uffe2\045\uffe2\047" +
321        "\uffe2\050\uffe2\051\uffe2\053\uffe2\055\uffe2\056\uffe2\057\uffe2" +
322        "\060\uffe2\061\uffe2\062\uffe2\063\112\001\002\000\014\013" +
323        "\uffca\015\uffca\027\076\034\uffca\036\077\001\002\000\010" +
324        "\013\uffc9\015\uffc9\034\uffc9\001\002\000\010\013\123\015" +
325        "\uffc6\034\124\001\002\000\004\015\132\001\002\000\036" +
326        "\007\050\010\031\012\040\024\025\025\053\030\033\052" +
327        "\027\054\026\056\046\060\022\064\037\065\030\066\043" +
328        "\070\034\001\002\000\036\007\050\010\031\012\040\024" +
329        "\025\025\053\030\033\052\027\054\026\056\046\060\022" +
330        "\064\037\065\030\066\043\070\034\001\002\000\010\013" +
331        "\uffc8\015\uffc8\034\uffc8\001\002\000\010\027\076\033\127" +
332        "\036\077\001\002\000\036\007\050\010\031\012\040\024" +
333        "\025\025\053\030\033\052\027\054\026\056\046\060\022" +
334        "\064\037\065\030\066\043\070\034\001\002\000\014\013" +
335        "\uffc7\015\uffc7\027\076\034\uffc7\036\077\001\002\000\010" +
336        "\015\uffc5\027\076\036\077\001\002\000\112\002\uffcc\004" +
337        "\uffcc\005\uffcc\011\uffcc\012\uffcc\013\uffcc\015\uffcc\017\uffcc" +
338        "\020\uffcc\021\uffcc\022\uffcc\024\uffcc\026\uffcc\027\uffcc\030" +
339        "\uffcc\031\uffcc\032\uffcc\033\uffcc\034\uffcc\036\uffcc\041\uffcc" +
340        "\043\uffcc\044\uffcc\045\uffcc\046\uffcc\047\uffcc\050\uffcc\051" +
341        "\uffcc\053\uffcc\055\uffcc\056\uffcc\057\uffcc\060\uffcc\061\uffcc" +
342        "\062\uffcc\063\uffcc\001\002\000\034\007\050\010\031\012" +
343        "\040\025\053\030\033\052\027\054\026\056\046\060\022" +
344        "\064\037\065\030\066\043\070\034\001\002\000\034\007" +
345        "\050\010\031\012\040\025\053\030\033\052\027\054\026" +
346        "\056\046\060\022\064\037\065\030\066\043\070\034\001" +
347        "\002\000\034\007\uffbf\010\uffbf\012\uffbf\025\uffbf\030\uffbf" +
348        "\052\uffbf\054\uffbf\056\uffbf\060\uffbf\064\uffbf\065\uffbf\066" +
349        "\uffbf\070\uffbf\001\002\000\034\007\uffc4\010\uffc4\012\uffc4" +
350        "\025\uffc4\030\uffc4\052\uffc4\054\uffc4\056\uffc4\060\uffc4\064" +
351        "\uffc4\065\uffc4\066\uffc4\070\uffc4\001\002\000\034\007\uffc0" +
352        "\010\uffc0\012\uffc0\025\uffc0\030\uffc0\052\uffc0\054\uffc0\056" +
353        "\uffc0\060\uffc0\064\uffc0\065\uffc0\066\uffc0\070\uffc0\001\002" +
354        "\000\034\007\uffc1\010\uffc1\012\uffc1\025\uffc1\030\uffc1\052" +
355        "\uffc1\054\uffc1\056\uffc1\060\uffc1\064\uffc1\065\uffc1\066\uffc1" +
356        "\070\uffc1\001\002\000\006\017\152\021\153\001\002\000" +
357        "\034\007\050\010\031\012\040\025\053\030\033\052\027" +
358        "\054\026\056\046\060\022\064\037\065\030\066\043\070" +
359        "\034\001\002\000\034\007\uffc3\010\uffc3\012\uffc3\025\uffc3" +
360        "\030\uffc3\052\uffc3\054\uffc3\056\uffc3\060\uffc3\064\uffc3\065" +
361        "\uffc3\066\uffc3\070\uffc3\001\002\000\034\007\uffc2\010\uffc2" +
362        "\012\uffc2\025\uffc2\030\uffc2\052\uffc2\054\uffc2\056\uffc2\060" +
363        "\uffc2\064\uffc2\065\uffc2\066\uffc2\070\uffc2\001\002\000\036" +
364        "\007\050\010\031\012\040\014\150\025\147\030\033\052" +
365        "\027\054\026\056\046\060\022\064\037\065\030\066\043" +
366        "\070\034\001\002\000\104\002\uffe9\004\uffe9\005\uffe9\011" +
367        "\uffe9\012\uffe9\013\uffe9\015\uffe9\017\uffe9\020\uffe9\021\uffe9" +
368        "\022\uffe9\024\uffe9\026\uffe9\027\uffe9\030\uffe9\031\uffe9\032" +
369        "\uffe9\033\uffe9\034\uffe9\036\uffe9\043\uffe9\044\uffe9\045\106" +
370        "\047\uffe9\050\uffe9\051\uffe9\053\uffe9\055\uffe9\056\107\057" +
371        "\uffe9\060\105\061\uffe9\062\uffe9\001\002\000\112\002\uffea" +
372        "\004\uffea\005\uffea\011\uffea\012\uffea\013\uffea\015\uffea\017" +
373        "\uffea\020\uffea\021\uffea\022\uffea\024\uffea\026\uffea\027\uffea" +
374        "\030\uffea\031\uffea\032\uffea\033\uffea\034\uffea\036\uffea\041" +
375        "\uffce\043\uffea\044\uffea\045\uffce\046\uffce\047\uffea\050\uffea" +
376        "\051\uffea\053\uffea\055\uffea\056\uffce\057\uffea\060\uffce\061" +
377        "\uffea\062\uffea\063\uffce\001\002\000\076\002\uffe8\004\uffe8" +
378        "\005\uffe8\011\uffe8\012\uffe8\013\uffe8\015\uffe8\017\uffe8\020" +
379        "\uffe8\021\uffe8\022\uffe8\024\uffe8\026\uffe8\027\uffe8\030\uffe8" +
380        "\031\uffe8\032\uffe8\033\uffe8\034\uffe8\036\uffe8\043\uffe8\044" +
381        "\uffe8\047\uffe8\050\uffe8\051\uffe8\053\uffe8\055\uffe8\057\uffe8" +
382        "\061\uffe8\062\uffe8\001\002\000\104\002\uffe7\004\uffe7\005" +
383        "\uffe7\011\uffe7\012\uffe7\013\uffe7\015\uffe7\017\uffe7\020\uffe7" +
384        "\021\uffe7\022\uffe7\024\uffe7\026\uffe7\027\uffe7\030\uffe7\031" +
385        "\uffe7\032\uffe7\033\uffe7\034\uffe7\036\uffe7\043\uffe7\044\uffe7" +
386        "\045\106\047\uffe7\050\uffe7\051\uffe7\053\uffe7\055\uffe7\056" +
387        "\107\057\uffe7\060\105\061\uffe7\062\uffe7\001\002\000\034" +
388        "\007\050\010\031\012\040\025\053\030\033\052\027\054" +
389        "\026\056\046\060\022\064\037\065\030\066\043\070\034" +
390        "\001\002\000\034\007\050\010\031\012\040\025\053\030" +
391        "\033\052\027\054\026\056\046\060\022\064\037\065\030" +
392        "\066\043\070\034\001\002\000\104\002\uffe6\004\uffe6\005" +
393        "\uffe6\011\uffe6\012\uffe6\013\uffe6\015\uffe6\017\uffe6\020\uffe6" +
394        "\021\uffe6\022\uffe6\024\uffe6\026\uffe6\027\uffe6\030\uffe6\031" +
395        "\uffe6\032\uffe6\033\uffe6\034\uffe6\036\uffe6\043\uffe6\044\uffe6" +
396        "\045\106\047\uffe6\050\uffe6\051\uffe6\053\uffe6\055\uffe6\056" +
397        "\107\057\uffe6\060\105\061\uffe6\062\uffe6\001\002\000\104" +
398        "\002\uffe4\004\uffe4\005\uffe4\011\uffe4\012\uffe4\013\uffe4\015" +
399        "\uffe4\017\uffe4\020\uffe4\021\uffe4\022\uffe4\024\uffe4\026\uffe4" +
400        "\027\uffe4\030\uffe4\031\uffe4\032\uffe4\033\uffe4\034\uffe4\036" +
401        "\uffe4\043\uffe4\044\uffe4\045\106\047\uffe4\050\uffe4\051\uffe4" +
402        "\053\uffe4\055\uffe4\056\107\057\uffe4\060\105\061\uffe4\062" +
403        "\uffe4\001\002\000\104\002\uffeb\004\uffeb\005\uffeb\011\uffeb" +
404        "\012\uffeb\013\uffeb\015\uffeb\017\uffeb\020\uffeb\021\uffeb\022" +
405        "\uffeb\024\uffeb\026\uffeb\027\uffeb\030\uffeb\031\uffeb\032\uffeb" +
406        "\033\uffeb\034\uffeb\036\uffeb\043\uffeb\044\uffeb\045\106\047" +
407        "\uffeb\050\uffeb\051\uffeb\053\uffeb\055\uffeb\056\107\057\uffeb" +
408        "\060\105\061\uffeb\062\uffeb\001\002\000\104\002\uffe5\004" +
409        "\uffe5\005\uffe5\011\uffe5\012\uffe5\013\uffe5\015\uffe5\017\uffe5" +
410        "\020\uffe5\021\uffe5\022\uffe5\024\uffe5\026\uffe5\027\uffe5\030" +
411        "\uffe5\031\uffe5\032\uffe5\033\uffe5\034\uffe5\036\uffe5\043\uffe5" +
412        "\044\uffe5\045\106\047\uffe5\050\uffe5\051\uffe5\053\uffe5\055" +
413        "\uffe5\056\107\057\uffe5\060\105\061\uffe5\062\uffe5\001\002" +
414        "\000\112\002\uffda\004\uffda\005\uffda\011\uffda\012\uffda\013" +
415        "\uffda\015\uffda\017\uffda\020\uffda\021\uffda\022\uffda\024\uffda" +
416        "\026\uffda\027\uffda\030\uffda\031\uffda\032\uffda\033\uffda\034" +
417        "\uffda\036\uffda\041\uffda\043\uffda\044\uffda\045\uffda\046\057" +
418        "\047\uffda\050\uffda\051\uffda\053\uffda\055\uffda\056\uffda\057" +
419        "\uffda\060\uffda\061\uffda\062\uffda\063\uffda\001\002\000\004" +
420        "\026\uff95\001\002\000\004\030\uff8f\001\002\000\004\026" +
421        "\176\001\002\000\004\030\165\001\002\000\012\012\040" +
422        "\030\033\065\030\066\043\001\002\000\004\026\uff91\001" +
423        "\002\000\022\002\ufff8\005\ufff8\011\ufff8\026\ufff8\030\ufff8" +
424        "\035\ufff8\044\ufff8\046\ufff8\001\002\000\006\026\uff8e\044" +
425        "\174\001\002\000\010\026\uff8c\044\uff8c\046\172\001\002" +
426        "\000\012\012\040\030\033\065\030\066\043\001\002\000" +
427        "\022\002\ufff7\005\ufff7\011\ufff7\026\ufff7\030\ufff7\035\ufff7" +
428        "\044\ufff7\046\ufff7\001\002\000\012\012\040\030\033\065" +
429        "\030\066\043\001\002\000\004\026\uff8d\001\002\000\016" +
430        "\006\177\012\040\030\033\064\200\065\030\066\043\001" +
431        "\002\000\004\054\204\001\002\000\006\016\uff93\044\uff93" +
432        "\001\002\000\006\016\uff9a\044\uff9a\001\002\000\006\016" +
433        "\uff99\044\uff99\001\002\000\006\016\uff94\044\uff94\001\002" +
434        "\000\004\064\205\001\002\000\004\062\206\001\002\000" +
435        "\006\016\uff92\044\uff92\001\002\000\012\012\040\030\033" +
436        "\065\030\066\043\001\002\000\042\007\050\010\031\012" +
437        "\040\024\025\025\053\030\033\044\uffbb\052\027\054\026" +
438        "\056\046\060\022\062\uffba\064\037\065\030\066\043\070" +
439        "\034\001\002\000\004\062\212\001\002\000\112\002\uffd2" +
440        "\004\uffd2\005\uffd2\011\uffd2\012\uffd2\013\uffd2\015\uffd2\017" +
441        "\uffd2\020\uffd2\021\uffd2\022\uffd2\024\uffd2\026\uffd2\027\uffd2" +
442        "\030\uffd2\031\uffd2\032\uffd2\033\uffd2\034\uffd2\036\uffd2\041" +
443        "\uffd2\043\uffd2\044\uffd2\045\uffd2\046\uffd2\047\uffd2\050\uffd2" +
444        "\051\uffd2\053\uffd2\055\uffd2\056\uffd2\057\uffd2\060\uffd2\061" +
445        "\uffd2\062\uffd2\063\uffd2\001\002\000\006\042\ufff5\054\ufff5" +
446        "\001\002\000\036\007\050\010\031\012\040\024\025\025" +
447        "\053\030\033\052\027\054\026\056\046\060\022\064\037" +
448        "\065\030\066\043\070\034\001\002\000\006\005\216\043" +
449        "\074\001\002\000\012\012\040\030\033\065\030\066\043" +
450        "\001\002\000\004\062\220\001\002\000\112\002\uffd1\004" +
451        "\uffd1\005\uffd1\011\uffd1\012\uffd1\013\uffd1\015\uffd1\017\uffd1" +
452        "\020\uffd1\021\uffd1\022\uffd1\024\uffd1\026\uffd1\027\uffd1\030" +
453        "\uffd1\031\uffd1\032\uffd1\033\uffd1\034\uffd1\036\uffd1\041\uffd1" +
454        "\043\uffd1\044\uffd1\045\uffd1\046\uffd1\047\uffd1\050\uffd1\051" +
455        "\uffd1\053\uffd1\055\uffd1\056\uffd1\057\uffd1\060\uffd1\061\uffd1" +
456        "\062\uffd1\063\uffd1\001\002\000\004\061\222\001\002\000" +
457        "\112\002\uffcf\004\uffcf\005\uffcf\011\uffcf\012\uffcf\013\uffcf" +
458        "\015\uffcf\017\uffcf\020\uffcf\021\uffcf\022\uffcf\024\uffcf\026" +
459        "\uffcf\027\uffcf\030\uffcf\031\uffcf\032\uffcf\033\uffcf\034\uffcf" +
460        "\036\uffcf\041\uffcf\043\uffcf\044\uffcf\045\uffcf\046\uffcf\047" +
461        "\uffcf\050\uffcf\051\uffcf\053\uffcf\055\uffcf\056\uffcf\057\uffcf" +
462        "\060\uffcf\061\uffcf\062\uffcf\063\uffcf\001\002\000\004\062" +
463        "\224\001\002\000\112\002\uffd0\004\uffd0\005\uffd0\011\uffd0" +
464        "\012\uffd0\013\uffd0\015\uffd0\017\uffd0\020\uffd0\021\uffd0\022" +
465        "\uffd0\024\uffd0\026\uffd0\027\uffd0\030\uffd0\031\uffd0\032\uffd0" +
466        "\033\uffd0\034\uffd0\036\uffd0\041\uffd0\043\uffd0\044\uffd0\045" +
467        "\uffd0\046\uffd0\047\uffd0\050\uffd0\051\uffd0\053\uffd0\055\uffd0" +
468        "\056\uffd0\057\uffd0\060\uffd0\061\uffd0\062\uffd0\063\uffd0\001" +
469        "\002\000\052\002\uffed\004\uffed\005\uffed\011\uffed\012\uffed" +
470        "\013\uffed\015\uffed\022\uffed\026\uffed\027\uffed\030\uffed\031" +
471        "\uffed\032\uffed\033\uffed\034\uffed\036\uffed\043\uffed\044\uffed" +
472        "\061\uffed\062\uffed\001\002\000\112\002\uffdb\004\uffdb\005" +
473        "\uffdb\011\uffdb\012\uffdb\013\uffdb\015\uffdb\017\uffdb\020\uffdb" +
474        "\021\uffdb\022\uffdb\024\uffdb\026\uffdb\027\uffdb\030\uffdb\031" +
475        "\uffdb\032\uffdb\033\uffdb\034\uffdb\036\uffdb\041\uffdb\043\uffdb" +
476        "\044\uffdb\045\uffdb\046\057\047\uffdb\050\uffdb\051\uffdb\053" +
477        "\uffdb\055\uffdb\056\uffdb\057\uffdb\060\uffdb\061\uffdb\062\uffdb" +
478        "\063\uffdb\001\002\000\012\012\040\030\033\065\030\066" +
479        "\043\001\002\000\012\002\uff8b\011\uff8b\030\uff8b\035\uff8b" +
480        "\001\002\000\014\002\ufff4\011\ufff4\030\ufff4\035\ufff4\046" +
481        "\172\001\002\000\012\002\uffad\011\uffad\030\uffad\035\233" +
482        "\001\002\000\036\007\050\010\031\012\040\024\025\025" +
483        "\053\030\033\052\027\054\026\056\046\060\022\064\037" +
484        "\065\030\066\043\070\034\001\002\000\010\002\uffab\011" +
485        "\237\030\uff88\001\002\000\004\002\uffaa\001\002\000\004" +
486        "\030\241\001\002\000\004\030\uff87\001\002\000\004\002" +
487        "\uffb4\001\002\000\012\012\040\030\033\065\030\066\043" +
488        "\001\002\000\006\002\uff86\044\245\001\002\000\004\002" +
489        "\uff89\001\002\000\010\002\uff84\044\uff84\046\172\001\002" +
490        "\000\012\012\040\030\033\065\030\066\043\001\002\000" +
491        "\004\002\uff85\001\002\000\010\002\uffac\011\uffac\030\uffac" +
492        "\001\002\000\012\002\uff8a\011\uff8a\030\uff8a\043\074\001" +
493        "\002\000\006\002\uffb5\043\074\001\002\000\004\002\001" +
494        "\001\002\000\004\031\uffb2\001\002\000\010\022\uffa7\031" +
495        "\uffa7\032\uffa7\001\002\000\010\022\257\031\uffa9\032\256" +
496        "\001\002\000\012\012\040\030\033\065\030\066\043\001" +
497        "\002\000\012\012\040\030\033\065\030\066\043\001\002" +
498        "\000\010\022\uffa6\031\uffa6\032\uffa6\001\002\000\004\005" +
499        "\263\001\002\000\006\005\uff9f\046\172\001\002\000\040" +
500        "\007\050\010\031\012\040\024\025\025\053\030\033\052" +
501        "\027\054\026\056\046\060\022\064\037\065\030\066\043" +
502        "\070\034\071\265\001\002\000\016\022\uffa3\027\076\031" +
503        "\uffa3\032\uffa3\036\077\044\266\001\002\000\012\022\uffa3" +
504        "\031\uffa3\032\uffa3\044\266\001\002\000\012\012\040\030" +
505        "\033\065\030\066\043\001\002\000\010\022\uffa5\031\uffa5" +
506        "\032\uffa5\001\002\000\010\022\uffa2\031\uffa2\032\uffa2\001" +
507        "\002\000\012\022\uffa1\031\uffa1\032\uffa1\044\275\001\002" +
508        "\000\004\047\273\001\002\000\036\007\050\010\031\012" +
509        "\040\024\025\025\053\030\033\052\027\054\026\056\046" +
510        "\060\022\064\037\065\030\066\043\070\034\001\002\000" +
511        "\016\022\uff9e\027\076\031\uff9e\032\uff9e\036\077\044\uff9e" +
512        "\001\002\000\012\012\040\030\033\065\030\066\043\001" +
513        "\002\000\010\022\uffa0\031\uffa0\032\uffa0\001\002\000\010" +
514        "\022\uffa4\031\uffa4\032\uffa4\001\002\000\004\005\302\001" +
515        "\002\000\006\005\uff9b\046\172\001\002\000\040\007\050" +
516        "\010\031\012\040\024\025\025\053\030\033\052\027\054" +
517        "\026\056\046\060\022\064\037\065\030\066\043\070\034" +
518        "\071\304\001\002\000\012\022\uff9c\031\uff9c\032\uff9c\043" +
519        "\074\001\002\000\010\022\uff9d\031\uff9d\032\uff9d\001\002" +
520        "\000\004\031\uffa8\001\002" });
521    
522      /** Access to parse-action table. */
523      public short[][] action_table() {return _action_table;}
524    
525      /** <code>reduce_goto</code> table. */
526      protected static final short[][] _reduce_table = 
527        unpackFromStrings(new String[] {
528        "\000\303\000\010\023\003\024\005\072\007\001\001\000" +
529        "\002\001\001\000\012\042\253\043\257\044\254\065\252" +
530        "\001\001\000\002\001\001\000\040\004\023\006\250\010" +
531        "\040\012\041\013\050\014\046\015\044\016\043\017\035" +
532        "\021\051\025\031\035\053\036\022\037\055\040\054\001" +
533        "\001\000\002\001\001\000\012\003\013\053\012\054\015" +
534        "\055\011\001\001\000\002\001\001\000\040\004\023\006" +
535        "\034\010\040\012\041\013\050\014\046\015\044\016\043" +
536        "\017\035\021\051\025\031\035\053\036\022\037\055\040" +
537        "\054\001\001\000\002\001\001\000\002\001\001\000\002" +
538        "\001\001\000\002\001\001\000\010\003\013\053\012\054" +
539        "\020\001\001\000\002\001\001\000\020\004\023\021\225" +
540        "\025\031\035\053\036\022\037\055\040\054\001\001\000" +
541        "\002\001\001\000\002\001\001\000\032\004\023\010\040" +
542        "\012\041\013\050\014\046\015\224\021\051\025\031\035" +
543        "\053\036\022\037\055\040\054\001\001\000\044\004\023" +
544        "\006\067\007\070\010\040\012\041\013\050\014\046\015" +
545        "\044\016\043\017\035\021\051\025\031\035\053\036\022" +
546        "\037\055\040\054\063\222\001\001\000\046\004\023\006" +
547        "\067\007\070\010\040\012\041\013\050\014\046\015\044" +
548        "\016\043\017\035\021\051\025\031\035\053\036\022\037" +
549        "\055\040\054\063\066\064\220\001\001\000\002\001\001" +
550        "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
551        "\002\001\001\000\010\050\163\061\160\062\162\001\001" +
552        "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
553        "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
554        "\001\001\000\002\001\001\000\020\004\023\021\157\025" +
555        "\031\035\053\036\022\037\055\040\054\001\001\000\004" +
556        "\034\133\001\001\000\040\004\023\010\040\012\041\013" +
557        "\050\014\046\015\044\016\043\017\116\020\117\021\051" +
558        "\025\031\035\053\036\022\037\055\040\054\001\001\000" +
559        "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
560        "\001\001\000\002\001\001\000\002\001\001\000\014\035" +
561        "\053\036\060\037\062\040\061\041\057\001\001\000\002" +
562        "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
563        "\001\000\002\001\001\000\046\004\023\006\067\007\070" +
564        "\010\040\012\041\013\050\014\046\015\044\016\043\017" +
565        "\035\021\051\025\031\035\053\036\022\037\055\040\054" +
566        "\063\066\064\065\001\001\000\002\001\001\000\002\001" +
567        "\001\000\002\001\001\000\002\001\001\000\044\004\023" +
568        "\006\067\007\070\010\040\012\041\013\050\014\046\015" +
569        "\044\016\043\017\035\021\051\025\031\035\053\036\022" +
570        "\037\055\040\054\063\072\001\001\000\002\001\001\000" +
571        "\036\004\023\010\040\012\041\013\050\014\046\015\044" +
572        "\016\043\017\074\021\051\025\031\035\053\036\022\037" +
573        "\055\040\054\001\001\000\002\001\001\000\034\004\023" +
574        "\010\040\012\041\013\050\014\046\015\044\016\102\021" +
575        "\051\025\031\035\053\036\022\037\055\040\054\001\001" +
576        "\000\034\004\023\010\040\012\041\013\050\014\046\015" +
577        "\044\016\077\021\051\025\031\035\053\036\022\037\055" +
578        "\040\054\001\001\000\002\001\001\000\032\004\023\010" +
579        "\040\012\041\013\050\014\046\015\101\021\051\025\031" +
580        "\035\053\036\022\037\055\040\054\001\001\000\002\001" +
581        "\001\000\002\001\001\000\002\001\001\000\024\004\023" +
582        "\010\040\012\115\021\051\025\031\035\053\036\022\037" +
583        "\055\040\054\001\001\000\024\004\023\010\040\012\114" +
584        "\021\051\025\031\035\053\036\022\037\055\040\054\001" +
585        "\001\000\024\004\023\010\040\012\107\021\051\025\031" +
586        "\035\053\036\022\037\055\040\054\001\001\000\002\001" +
587        "\001\000\022\004\023\010\113\021\051\025\031\035\053" +
588        "\036\022\037\055\040\054\001\001\000\022\004\023\010" +
589        "\112\021\051\025\031\035\053\036\022\037\055\040\054" +
590        "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
591        "\001\000\002\001\001\000\002\001\001\000\004\071\120" +
592        "\001\001\000\006\005\121\073\124\001\001\000\002\001" +
593        "\001\000\036\004\023\010\040\012\041\013\050\014\046" +
594        "\015\044\016\043\017\130\021\051\025\031\035\053\036" +
595        "\022\037\055\040\054\001\001\000\036\004\023\010\040" +
596        "\012\041\013\050\014\046\015\044\016\043\017\125\021" +
597        "\051\025\031\035\053\036\022\037\055\040\054\001\001" +
598        "\000\002\001\001\000\002\001\001\000\036\004\023\010" +
599        "\040\012\041\013\050\014\046\015\044\016\043\017\127" +
600        "\021\051\025\031\035\053\036\022\037\055\040\054\001" +
601        "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
602        "\000\026\004\023\010\040\012\041\013\156\021\051\025" +
603        "\031\035\053\036\022\037\055\040\054\001\001\000\026" +
604        "\004\023\010\040\012\041\013\155\021\051\025\031\035" +
605        "\053\036\022\037\055\040\054\001\001\000\002\001\001" +
606        "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
607        "\002\001\001\000\026\004\023\010\040\012\041\013\150" +
608        "\021\051\025\031\035\053\036\022\037\055\040\054\001" +
609        "\001\000\002\001\001\000\002\001\001\000\026\004\023" +
610        "\010\040\012\041\013\145\021\051\025\031\035\053\036" +
611        "\022\037\055\040\054\001\001\000\002\001\001\000\002" +
612        "\001\001\000\002\001\001\000\002\001\001\000\026\004" +
613        "\023\010\040\012\041\013\154\021\051\025\031\035\053" +
614        "\036\022\037\055\040\054\001\001\000\026\004\023\010" +
615        "\040\012\041\013\153\021\051\025\031\035\053\036\022" +
616        "\037\055\040\054\001\001\000\002\001\001\000\002\001" +
617        "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
618        "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
619        "\002\001\001\000\020\026\170\035\053\036\166\037\055" +
620        "\040\054\051\167\067\165\001\001\000\002\001\001\000" +
621        "\002\001\001\000\002\001\001\000\002\001\001\000\012" +
622        "\035\053\036\172\037\055\040\054\001\001\000\002\001" +
623        "\001\000\020\026\170\035\053\036\166\037\055\040\054" +
624        "\051\167\067\174\001\001\000\002\001\001\000\016\033" +
625        "\200\035\053\036\202\037\055\040\054\074\201\001\001" +
626        "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
627        "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
628        "\001\001\000\002\001\001\000\012\035\053\036\212\037" +
629        "\055\040\054\001\001\000\046\004\023\006\067\007\070" +
630        "\010\040\012\041\013\050\014\046\015\044\016\043\017" +
631        "\035\021\051\025\031\035\053\036\022\037\055\040\054" +
632        "\063\066\064\210\001\001\000\002\001\001\000\002\001" +
633        "\001\000\002\001\001\000\040\004\023\006\214\010\040" +
634        "\012\041\013\050\014\046\015\044\016\043\017\035\021" +
635        "\051\025\031\035\053\036\022\037\055\040\054\001\001" +
636        "\000\002\001\001\000\012\035\053\036\216\037\055\040" +
637        "\054\001\001\000\002\001\001\000\002\001\001\000\002" +
638        "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
639        "\001\000\002\001\001\000\002\001\001\000\020\026\230" +
640        "\027\227\030\231\035\053\036\166\037\055\040\054\001" +
641        "\001\000\002\001\001\000\002\001\001\000\004\022\233" +
642        "\001\001\000\042\004\023\006\247\010\040\011\246\012" +
643        "\041\013\050\014\046\015\044\016\043\017\035\021\051" +
644        "\025\031\035\053\036\022\037\055\040\054\001\001\000" +
645        "\010\046\235\056\234\057\237\001\001\000\002\001\001" +
646        "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
647        "\020\026\243\035\053\036\166\037\055\040\054\047\241" +
648        "\070\242\001\001\000\002\001\001\000\002\001\001\000" +
649        "\002\001\001\000\020\026\243\035\053\036\166\037\055" +
650        "\040\054\047\241\070\245\001\001\000\002\001\001\000" +
651        "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
652        "\001\001\000\002\001\001\000\002\001\001\000\012\042" +
653        "\253\043\257\044\254\065\304\001\001\000\016\026\300" +
654        "\032\277\035\053\036\166\037\055\040\054\001\001\000" +
655        "\016\026\261\031\260\035\053\036\166\037\055\040\054" +
656        "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
657        "\001\000\036\004\023\010\040\012\041\013\050\014\046" +
658        "\015\044\016\043\017\263\021\051\025\031\035\053\036" +
659        "\022\037\055\040\054\001\001\000\004\060\276\001\001" +
660        "\000\004\060\266\001\001\000\016\035\053\036\271\037" +
661        "\055\040\054\045\270\066\267\001\001\000\002\001\001" +
662        "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
663        "\036\004\023\010\040\012\041\013\050\014\046\015\044" +
664        "\016\043\017\273\021\051\025\031\035\053\036\022\037" +
665        "\055\040\054\001\001\000\002\001\001\000\016\035\053" +
666        "\036\271\037\055\040\054\045\270\066\275\001\001\000" +
667        "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
668        "\001\001\000\040\004\023\006\302\010\040\012\041\013" +
669        "\050\014\046\015\044\016\043\017\035\021\051\025\031" +
670        "\035\053\036\022\037\055\040\054\001\001\000\002\001" +
671        "\001\000\002\001\001\000\002\001\001" });
672    
673      /** Access to <code>reduce_goto</code> table. */
674      public short[][] reduce_table() {return _reduce_table;}
675    
676      /** Instance of action encapsulation class. */
677      protected CUP$Parser$actions action_obj;
678    
679      /** Action encapsulation object initializer. */
680      protected void init_actions()
681        {
682          action_obj = new CUP$Parser$actions(this);
683        }
684    
685      /** Invoke a user supplied parse action. */
686      public java_cup.runtime.Symbol do_action(
687        int                        act_num,
688        java_cup.runtime.lr_parser parser,
689        java.util.Stack            stack,
690        int                        top)
691        throws java.lang.Exception
692      {
693        /* call code in generated class */
694        return action_obj.CUP$Parser$do_action(act_num, parser, stack, top);
695      }
696    
697      /** Indicates start state. */
698      public int start_state() {return 0;}
699      /** Indicates start production. */
700      public int start_production() {return 0;}
701    
702      /** <code>EOF</code> Symbol index. */
703      public int EOF_sym() {return 0;}
704    
705      /** <code>error</code> Symbol index. */
706      public int error_sym() {return 1;}
707    
708    
709      /** User initialization code. */
710      public void user_init() throws java.lang.Exception
711        {
712    
713        scanner.init();
714    
715        }
716    
717      /** Scan to get the next Symbol. */
718      public java_cup.runtime.Symbol scan()
719        throws java.lang.Exception
720        {
721    
722        return scanner.next_token();
723    
724        }
725    
726    
727        // Generated from $Id: //open/mondrian/src/main/mondrian/olap/Parser.cup#39 $
728        private Scanner scanner;
729        private String queryString;
730        private Connection mdxConnection;
731        private FunTable funTable;
732        private boolean load;
733    
734        /**
735          * Recursively parses an expression.
736          */
737        Exp recursivelyParseExp(String s)
738        {
739            return new Parser().parseExpression(
740                mdxConnection, s, false, funTable);
741        }
742    
743        /**
744          * Parses a string to create a {@link Query}.
745          * Called only by {@link ConnectionBase#parseQuery}.
746          */
747        Query parseInternal(
748            Connection mdxConnection,
749            String queryString,
750            boolean debug,
751            FunTable funTable,
752            boolean load)
753        {
754            Symbol parse_tree = null;
755            this.scanner = new StringScanner(queryString, debug);
756            this.mdxConnection = mdxConnection;
757            this.queryString = queryString;
758            this.funTable = funTable;
759            this.load = load;
760            try {
761                if (debug) {
762                    parse_tree = debug_parse();
763                } else {
764                    parse_tree = parse();
765                }
766                return (Query) parse_tree.value;
767            } catch (Exception e) {
768                // "Error while parsing MDX statement '%1'"
769                throw MondrianResource.instance().WhileParsingMdx.ex(queryString, e);
770            } finally {
771                this.scanner = null;
772                this.mdxConnection = null;
773                this.queryString = null;
774                this.funTable = null;
775            }
776        }
777    
778        /**
779          * Parses a string to create an {@link Exp}.
780          * Called only by {@link ConnectionBase#parseExpression}.
781          */
782        Exp parseExpression(
783            Connection mdxConnection,
784            String queryString,
785            boolean debug,
786            FunTable funTable)
787        {
788            Symbol parse_tree = null;
789            this.scanner = new PrefixScanner(
790                debug,
791                new StringScanner(queryString, debug),
792                new int[] {ParserSym._VALUE_EXPRESSION});
793            this.mdxConnection = mdxConnection;
794            this.queryString = queryString;
795            this.funTable = funTable;
796            try {
797                if (debug) {
798                    parse_tree = debug_parse();
799                } else {
800                    parse_tree = parse();
801                }
802                return (Exp) parse_tree.value;
803            } catch (Exception e) {
804                // "Syntax error while parsing MDX expression '%1'"
805                throw MondrianResource.instance().WhileParsingMdxExpression.ex(queryString, e);
806            } finally {
807                this.scanner = null;
808                this.mdxConnection = null;
809                this.queryString = null;
810                this.funTable = null;
811            }
812        }
813    
814        /**
815          * Scanner which returns a list of pre-programmed tokens, then switches
816          * to a parent scanner.
817          */
818        private static class PrefixScanner extends Scanner {
819            private final Scanner parent;
820            private final int tokens[];
821            private int i;
822    
823            PrefixScanner(boolean debug, Scanner parent, int[] tokens) {
824                super(debug);
825                this.parent = parent;
826                this.tokens = tokens;
827            }
828    
829            public void init() throws java.io.IOException {
830                i = 0;
831                parent.init();
832            }
833    
834            public Symbol next_token() throws java.io.IOException {
835                if (i < tokens.length) {
836                    return new Symbol(tokens[i++], 0, 0, null);
837                }
838                return parent.next_token();
839            }
840    
841            void getLocation(Symbol symbol, int[] loc) {
842                parent.getLocation(symbol, loc);
843            }
844        }
845    
846        /**
847         * Creates a {@link Query} object.
848         * Override this function to make your kind of query.
849         */
850        protected Query makeQuery(
851            Formula[] formulae, QueryAxis[] axes,
852            String cube, Exp slicer, QueryPart[] cellProps)
853        {
854            final QueryAxis slicerAxis =
855                slicer == null ?
856                    null :
857                    new QueryAxis(
858                        false, slicer, AxisOrdinal.SLICER,
859                        QueryAxis.SubtotalVisibility.Undefined, new Id[0]);
860            return new Query(
861                mdxConnection, formulae, axes, cube, slicerAxis, cellProps, load);
862        }
863    
864        // Override lr_parser methods for NLS.  With this error handling scheme,
865        // all errors are fatal.
866        public void report_fatal_error(
867            String   message,
868            Object   info)
869            throws java.lang.Exception
870        {
871            done_parsing();
872            try {
873                report_error(message, info);
874            } catch (Throwable e) {
875                // "MDX parser cannot recover from previous error(s)"
876                throw MondrianResource.instance().MdxFatalError.ex(e);
877            }
878        }
879    
880        // override lr_parser method
881        public void report_error(String message, Object info)
882        {
883            // "Error: %1"
884            throw MondrianResource.instance().MdxError.ex(message);
885        }
886    
887        // override lr_parser method
888        public void syntax_error(Symbol cur_token)
889        {
890            String s = cur_token.value.toString();
891            if (cur_token.left != -1) {
892                int loc[] = new int[2];
893                scanner.getLocation(cur_token, loc);
894                // "Syntax error at line %2, column %3, token '%1'"
895                throw MondrianResource.instance().MdxSyntaxErrorAt.ex(
896                    s, Integer.toString(loc[0] + 1), Integer.toString(loc[1] + 1));
897            } else {
898                // "Syntax error at token '%1'"
899                throw MondrianResource.instance().MdxSyntaxError.ex(s);
900            }
901        }
902    
903        public void unrecovered_syntax_error(Symbol cur_token)
904            throws java.lang.Exception
905        {
906            // "Couldn't repair and continue parse"
907            String sFatalSyntaxError = MondrianResource.instance().MdxFatalSyntaxError.str();
908            report_fatal_error(sFatalSyntaxError, cur_token);
909        }
910    
911        /**
912         * Returns whether the given identifier can possibly the name of an operator
913         * with property syntax.
914         *
915         * <p>For example, <code>isFunCall("ORDINAL")</code>
916         * returns true because there is a "&lt;Level&gt;.Ordinal" property.</p>
917         */
918        protected boolean isFunCall(String s) {
919           return funTable.isProperty(s);
920        }
921    
922        static Id[] toIdArray(List idList) {
923            if (idList == null || idList.size() == 0) {
924                return EmptyIdArray;
925            } else {
926                return (Id []) idList.toArray(new Id[idList.size()]);
927            }
928        }
929    
930        static Exp[] toExpArray(List expList) {
931            if (expList == null || expList.size() == 0) {
932                return EmptyExpArray;
933            } else {
934                return (Exp []) expList.toArray(new Exp[expList.size()]);
935            }
936        }
937    
938        static Formula[] toFormulaArray(List formulaList) {
939            if (formulaList == null || formulaList.size() == 0) {
940                return EmptyFormulaArray;
941            } else {
942                return (Formula []) formulaList.toArray(new Formula[formulaList.size()]);
943            }
944        }
945    
946        static MemberProperty[] toMemberPropertyArray(List mpList) {
947            if (mpList == null || mpList.size() == 0) {
948                return EmptyMemberPropertyArray;
949            } else {
950                return (MemberProperty []) mpList.toArray(new MemberProperty[mpList.size()]);
951            }
952        }
953    
954        static QueryPart[] toQueryPartArray(List qpList) {
955            if (qpList == null || qpList.size() == 0) {
956                return EmptyQueryPartArray;
957            } else {
958                return (QueryPart []) qpList.toArray(new QueryPart[qpList.size()]);
959            }
960        }
961    
962        static QueryAxis[] toQueryAxisArray(List qpList) {
963            if (qpList == null || qpList.size() == 0) {
964                return EmptyQueryAxisArray;
965            } else {
966                return (QueryAxis []) qpList.toArray(new QueryAxis[qpList.size()]);
967            }
968        }
969    
970        private static final MemberProperty[] EmptyMemberPropertyArray = new MemberProperty[0];
971        private static final Exp[] EmptyExpArray = new Exp[0];
972        private static final Formula[] EmptyFormulaArray = new Formula[0];
973        private static final Id[] EmptyIdArray = new Id[0];
974        private static final QueryPart[] EmptyQueryPartArray = new QueryPart[0];
975        private static final QueryAxis[] EmptyQueryAxisArray = new QueryAxis[0];
976    
977    }
978    
979    /** Cup generated class to encapsulate user supplied action code.*/
980    class CUP$Parser$actions {
981      private final Parser parser;
982    
983      /** Constructor */
984      CUP$Parser$actions(Parser parser) {
985        this.parser = parser;
986      }
987    
988      /** Method with the actual generated action code. */
989      public final java_cup.runtime.Symbol CUP$Parser$do_action(
990        int                        CUP$Parser$act_num,
991        java_cup.runtime.lr_parser CUP$Parser$parser,
992        java.util.Stack            CUP$Parser$stack,
993        int                        CUP$Parser$top)
994        throws java.lang.Exception
995        {
996          /* Symbol object for return from actions */
997          java_cup.runtime.Symbol CUP$Parser$result;
998    
999          /* select the action based on the action number */
1000          switch (CUP$Parser$act_num)
1001            {
1002              /*. . . . . . . . . . . . . . . . . . . .*/
1003              case 125: // cell_property ::= compound_id 
1004                {
1005                  Object RESULT = null;
1006    
1007                    // Default action for single-symbol production
1008                    RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1009                  CUP$Parser$result = new java_cup.runtime.Symbol(37/*cell_property*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1010                }
1011              return CUP$Parser$result;
1012    
1013              /*. . . . . . . . . . . . . . . . . . . .*/
1014              case 124: // cell_property_list ::= cell_property COMMA cell_property_list 
1015                {
1016                  List RESULT = null;
1017                    int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1018                    int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1019                    Object p = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1020                    int p1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1021                    int p1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1022                    List p1 = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1023                    
1024            p1.add(0, new CellProperty(p));
1025            RESULT = p1;
1026        
1027                  CUP$Parser$result = new java_cup.runtime.Symbol(54/*cell_property_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1028                }
1029              return CUP$Parser$result;
1030    
1031              /*. . . . . . . . . . . . . . . . . . . .*/
1032              case 123: // cell_property_list ::= cell_property 
1033                {
1034                  List RESULT = null;
1035                    int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1036                    int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1037                    Object p = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1038                    
1039            RESULT = new LinkedList();
1040            RESULT.add(new CellProperty(p));
1041        
1042                  CUP$Parser$result = new java_cup.runtime.Symbol(54/*cell_property_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1043                }
1044              return CUP$Parser$result;
1045    
1046              /*. . . . . . . . . . . . . . . . . . . .*/
1047              case 122: // cell_opt ::= CELL 
1048                {
1049                  Object RESULT = null;
1050    
1051                    // Default action for single-symbol production
1052                    RESULT = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1053                  CUP$Parser$result = new java_cup.runtime.Symbol(36/*cell_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1054                }
1055              return CUP$Parser$result;
1056    
1057              /*. . . . . . . . . . . . . . . . . . . .*/
1058              case 121: // cell_opt ::= 
1059                {
1060                  Object RESULT = null;
1061    
1062                  CUP$Parser$result = new java_cup.runtime.Symbol(36/*cell_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1063                }
1064              return CUP$Parser$result;
1065    
1066              /*. . . . . . . . . . . . . . . . . . . .*/
1067              case 120: // cell_props ::= cell_opt PROPERTIES cell_property_list 
1068                {
1069                  List RESULT = null;
1070                    int p1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1071                    int p1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1072                    List p1 = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1073                     RESULT = p1; 
1074                  CUP$Parser$result = new java_cup.runtime.Symbol(44/*cell_props*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1075                }
1076              return CUP$Parser$result;
1077    
1078              /*. . . . . . . . . . . . . . . . . . . .*/
1079              case 119: // slicer_specification ::= expression 
1080                {
1081                  Exp RESULT = null;
1082    
1083                    // Default action for single-symbol production
1084                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1085                  CUP$Parser$result = new java_cup.runtime.Symbol(7/*slicer_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1086                }
1087              return CUP$Parser$result;
1088    
1089              /*. . . . . . . . . . . . . . . . . . . .*/
1090              case 118: // cube_specification ::= cube_name 
1091                {
1092                  Id RESULT = null;
1093    
1094                    // Default action for single-symbol production
1095                    RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1096                  CUP$Parser$result = new java_cup.runtime.Symbol(22/*cube_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1097                }
1098              return CUP$Parser$result;
1099    
1100              /*. . . . . . . . . . . . . . . . . . . .*/
1101              case 117: // property ::= compound_id 
1102                {
1103                  Object RESULT = null;
1104    
1105                    // Default action for single-symbol production
1106                    RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1107                  CUP$Parser$result = new java_cup.runtime.Symbol(39/*property*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1108                }
1109              return CUP$Parser$result;
1110    
1111              /*. . . . . . . . . . . . . . . . . . . .*/
1112              case 116: // property_list ::= property COMMA property_list 
1113                {
1114                  List RESULT = null;
1115                    int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1116                    int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1117                    Object p = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1118                    int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1119                    int plright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1120                    List pl = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1121                    
1122                pl.add(0, p);
1123                RESULT = pl;
1124            
1125                  CUP$Parser$result = new java_cup.runtime.Symbol(53/*property_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1126                }
1127              return CUP$Parser$result;
1128    
1129              /*. . . . . . . . . . . . . . . . . . . .*/
1130              case 115: // property_list ::= property 
1131                {
1132                  List RESULT = null;
1133                    int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1134                    int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1135                    Object p = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1136                    
1137                RESULT = new LinkedList();
1138                RESULT.add(p);
1139            
1140                  CUP$Parser$result = new java_cup.runtime.Symbol(53/*property_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1141                }
1142              return CUP$Parser$result;
1143    
1144              /*. . . . . . . . . . . . . . . . . . . .*/
1145              case 114: // dimension_opt ::= DIMENSION 
1146                {
1147                  Object RESULT = null;
1148    
1149                    // Default action for single-symbol production
1150                    RESULT = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1151                  CUP$Parser$result = new java_cup.runtime.Symbol(38/*dimension_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1152                }
1153              return CUP$Parser$result;
1154    
1155              /*. . . . . . . . . . . . . . . . . . . .*/
1156              case 113: // dimension_opt ::= 
1157                {
1158                  Object RESULT = null;
1159    
1160                  CUP$Parser$result = new java_cup.runtime.Symbol(38/*dimension_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1161                }
1162              return CUP$Parser$result;
1163    
1164              /*. . . . . . . . . . . . . . . . . . . .*/
1165              case 112: // dim_props ::= dimension_opt PROPERTIES property_list 
1166                {
1167                  List RESULT = null;
1168                    int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1169                    int plright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1170                    List pl = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1171                     RESULT = pl; 
1172                  CUP$Parser$result = new java_cup.runtime.Symbol(47/*dim_props*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1173                }
1174              return CUP$Parser$result;
1175    
1176              /*. . . . . . . . . . . . . . . . . . . .*/
1177              case 111: // axis_number ::= AXIS LPAREN NUMBER RPAREN 
1178                {
1179                  Double RESULT = null;
1180                    int nleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
1181                    int nright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
1182                    Double n = (Double)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
1183                     RESULT = n; 
1184                  CUP$Parser$result = new java_cup.runtime.Symbol(58/*axis_number*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1185                }
1186              return CUP$Parser$result;
1187    
1188              /*. . . . . . . . . . . . . . . . . . . .*/
1189              case 110: // axis_number ::= NUMBER 
1190                {
1191                  Double RESULT = null;
1192    
1193                    // Default action for single-symbol production
1194                    RESULT = (Double)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1195                  CUP$Parser$result = new java_cup.runtime.Symbol(58/*axis_number*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1196                }
1197              return CUP$Parser$result;
1198    
1199              /*. . . . . . . . . . . . . . . . . . . .*/
1200              case 109: // axis_name ::= identifier 
1201                {
1202                  String RESULT = null;
1203                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1204                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1205                    Id.Segment i = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1206                     RESULT = i.name; 
1207                  CUP$Parser$result = new java_cup.runtime.Symbol(25/*axis_name*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1208                }
1209              return CUP$Parser$result;
1210    
1211              /*. . . . . . . . . . . . . . . . . . . .*/
1212              case 108: // dim_props_opt ::= dim_props 
1213                {
1214                  List RESULT = null;
1215    
1216                    // Default action for single-symbol production
1217                    RESULT = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1218                  CUP$Parser$result = new java_cup.runtime.Symbol(48/*dim_props_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1219                }
1220              return CUP$Parser$result;
1221    
1222              /*. . . . . . . . . . . . . . . . . . . .*/
1223              case 107: // dim_props_opt ::= 
1224                {
1225                  List RESULT = null;
1226    
1227                  CUP$Parser$result = new java_cup.runtime.Symbol(48/*dim_props_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1228                }
1229              return CUP$Parser$result;
1230    
1231              /*. . . . . . . . . . . . . . . . . . . .*/
1232              case 106: // non_empty_opt ::= NON EMPTY 
1233                {
1234                  Boolean RESULT = null;
1235                     RESULT = Boolean.TRUE; 
1236                  CUP$Parser$result = new java_cup.runtime.Symbol(41/*non_empty_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1237                }
1238              return CUP$Parser$result;
1239    
1240              /*. . . . . . . . . . . . . . . . . . . .*/
1241              case 105: // non_empty_opt ::= 
1242                {
1243                  Boolean RESULT = null;
1244                     RESULT = Boolean.FALSE; 
1245                  CUP$Parser$result = new java_cup.runtime.Symbol(41/*non_empty_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1246                }
1247              return CUP$Parser$result;
1248    
1249              /*. . . . . . . . . . . . . . . . . . . .*/
1250              case 104: // axis_specification ::= non_empty_opt expression dim_props_opt ON axis_number 
1251                {
1252                  QueryAxis RESULT = null;
1253                    int bleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
1254                    int bright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
1255                    Boolean b = (Boolean)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
1256                    int sleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
1257                    int sright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
1258                    Exp s = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
1259                    int dpleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1260                    int dpright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1261                    List dp = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1262                    int nleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1263                    int nright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1264                    Double n = (Double)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1265                    
1266                double d = n.doubleValue();
1267                int index = (int)d;
1268    
1269                // AxisOrdinal values go from -2 to 4. The negative values represent
1270                // special cases, so are ignored.
1271                if (index < 0 || index != d || index >= AxisOrdinal.MaxLogicalOrdinal) {
1272                    throw MondrianResource.instance().InvalidAxis.ex(
1273                        AxisOrdinal.MaxLogicalOrdinal,
1274                        d);
1275                }
1276    
1277                AxisOrdinal axis = AxisOrdinal.forLogicalOrdinal(index);
1278                RESULT = new QueryAxis(b.booleanValue(), s, axis,
1279                        QueryAxis.SubtotalVisibility.Undefined,
1280                        Parser.toIdArray(dp));
1281            
1282                  CUP$Parser$result = new java_cup.runtime.Symbol(1/*axis_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1283                }
1284              return CUP$Parser$result;
1285    
1286              /*. . . . . . . . . . . . . . . . . . . .*/
1287              case 103: // axis_specification ::= non_empty_opt expression dim_props_opt ON axis_name 
1288                {
1289                  QueryAxis RESULT = null;
1290                    int bleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
1291                    int bright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
1292                    Boolean b = (Boolean)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
1293                    int sleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
1294                    int sright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
1295                    Exp s = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
1296                    int dpleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1297                    int dpright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1298                    List dp = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1299                    int aleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1300                    int aright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1301                    String a = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1302                    
1303                AxisOrdinal axis = AxisOrdinal.valueOf(a.toUpperCase());
1304                RESULT = new QueryAxis(
1305                        b.booleanValue(), s, axis,
1306                        QueryAxis.SubtotalVisibility.Undefined,
1307                        Parser.toIdArray(dp));
1308            
1309                  CUP$Parser$result = new java_cup.runtime.Symbol(1/*axis_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1310                }
1311              return CUP$Parser$result;
1312    
1313              /*. . . . . . . . . . . . . . . . . . . .*/
1314              case 102: // set_name ::= compound_id 
1315                {
1316                  Id RESULT = null;
1317    
1318                    // Default action for single-symbol production
1319                    RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1320                  CUP$Parser$result = new java_cup.runtime.Symbol(24/*set_name*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1321                }
1322              return CUP$Parser$result;
1323    
1324              /*. . . . . . . . . . . . . . . . . . . .*/
1325              case 101: // set_specification ::= SET set_name AS expression 
1326                {
1327                  Formula RESULT = null;
1328                    int nleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1329                    int nright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1330                    Id n = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1331                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1332                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1333                    Exp e = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1334                    
1335                RESULT = new Formula(n, e);
1336            
1337                  CUP$Parser$result = new java_cup.runtime.Symbol(33/*set_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1338                }
1339              return CUP$Parser$result;
1340    
1341              /*. . . . . . . . . . . . . . . . . . . .*/
1342              case 100: // set_specification ::= SET set_name AS FORMULA_STRING 
1343                {
1344                  Formula RESULT = null;
1345                    int nleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1346                    int nright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1347                    Id n = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1348                    int sleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1349                    int sright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1350                    String s = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1351                    
1352                Exp e = parser.recursivelyParseExp(s);
1353                RESULT = new Formula(n, e);
1354            
1355                  CUP$Parser$result = new java_cup.runtime.Symbol(33/*set_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1356                }
1357              return CUP$Parser$result;
1358    
1359              /*. . . . . . . . . . . . . . . . . . . .*/
1360              case 99: // member_property_definition ::= identifier EQ value_expression 
1361                {
1362                  MemberProperty RESULT = null;
1363                    int idleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1364                    int idright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1365                    Id.Segment id = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1366                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1367                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1368                    Exp e = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1369                    
1370                RESULT = new MemberProperty(id.name, e);
1371            
1372                  CUP$Parser$result = new java_cup.runtime.Symbol(35/*member_property_definition*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1373                }
1374              return CUP$Parser$result;
1375    
1376              /*. . . . . . . . . . . . . . . . . . . .*/
1377              case 98: // member_name ::= compound_id 
1378                {
1379                  Id RESULT = null;
1380    
1381                    // Default action for single-symbol production
1382                    RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1383                  CUP$Parser$result = new java_cup.runtime.Symbol(23/*member_name*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1384                }
1385              return CUP$Parser$result;
1386    
1387              /*. . . . . . . . . . . . . . . . . . . .*/
1388              case 97: // member_property_def_list ::= member_property_definition COMMA member_property_def_list 
1389                {
1390                  List RESULT = null;
1391                    int hdleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1392                    int hdright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1393                    MemberProperty hd = (MemberProperty)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1394                    int tlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1395                    int tlright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1396                    List tl = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1397                    
1398                RESULT = tl;
1399                RESULT.add(0,hd);
1400            
1401                  CUP$Parser$result = new java_cup.runtime.Symbol(52/*member_property_def_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1402                }
1403              return CUP$Parser$result;
1404    
1405              /*. . . . . . . . . . . . . . . . . . . .*/
1406              case 96: // member_property_def_list ::= member_property_definition 
1407                {
1408                  List RESULT = null;
1409                    int mleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1410                    int mright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1411                    MemberProperty m = (MemberProperty)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1412                    
1413                RESULT = new LinkedList();
1414                RESULT.add(m);
1415            
1416                  CUP$Parser$result = new java_cup.runtime.Symbol(52/*member_property_def_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1417                }
1418              return CUP$Parser$result;
1419    
1420              /*. . . . . . . . . . . . . . . . . . . .*/
1421              case 95: // comma_member_property_def_list_opt ::= COMMA member_property_def_list 
1422                {
1423                  List RESULT = null;
1424                    int lleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1425                    int lright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1426                    List l = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1427                    
1428                RESULT = l;
1429            
1430                  CUP$Parser$result = new java_cup.runtime.Symbol(46/*comma_member_property_def_list_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1431                }
1432              return CUP$Parser$result;
1433    
1434              /*. . . . . . . . . . . . . . . . . . . .*/
1435              case 94: // comma_member_property_def_list_opt ::= 
1436                {
1437                  List RESULT = null;
1438                    
1439                RESULT = new LinkedList();
1440            
1441                  CUP$Parser$result = new java_cup.runtime.Symbol(46/*comma_member_property_def_list_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1442                }
1443              return CUP$Parser$result;
1444    
1445              /*. . . . . . . . . . . . . . . . . . . .*/
1446              case 93: // member_specification ::= MEMBER member_name AS value_expression comma_member_property_def_list_opt 
1447                {
1448                  Formula RESULT = null;
1449                    int mleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
1450                    int mright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
1451                    Id m = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
1452                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
1453                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
1454                    Exp e = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
1455                    int lleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1456                    int lright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1457                    List l = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1458                    
1459                RESULT = new Formula(
1460                    m,
1461                    e,
1462                    Parser.toMemberPropertyArray(l));
1463            
1464                  CUP$Parser$result = new java_cup.runtime.Symbol(32/*member_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1465                }
1466              return CUP$Parser$result;
1467    
1468              /*. . . . . . . . . . . . . . . . . . . .*/
1469              case 92: // member_specification ::= MEMBER member_name AS FORMULA_STRING comma_member_property_def_list_opt 
1470                {
1471                  Formula RESULT = null;
1472                    int mleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
1473                    int mright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
1474                    Id m = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
1475                    int sleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
1476                    int sright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
1477                    String s = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
1478                    int lleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1479                    int lright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1480                    List l = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1481                    
1482                Exp e = parser.recursivelyParseExp(s);
1483                RESULT = new Formula(
1484                    m,
1485                    e,
1486                    Parser.toMemberPropertyArray(l));
1487            
1488                  CUP$Parser$result = new java_cup.runtime.Symbol(32/*member_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1489                }
1490              return CUP$Parser$result;
1491    
1492              /*. . . . . . . . . . . . . . . . . . . .*/
1493              case 91: // single_formula_specification ::= set_specification 
1494                {
1495                  Formula RESULT = null;
1496    
1497                    // Default action for single-symbol production
1498                    RESULT = (Formula)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1499                  CUP$Parser$result = new java_cup.runtime.Symbol(34/*single_formula_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1500                }
1501              return CUP$Parser$result;
1502    
1503              /*. . . . . . . . . . . . . . . . . . . .*/
1504              case 90: // single_formula_specification ::= member_specification 
1505                {
1506                  Formula RESULT = null;
1507    
1508                    // Default action for single-symbol production
1509                    RESULT = (Formula)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1510                  CUP$Parser$result = new java_cup.runtime.Symbol(34/*single_formula_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1511                }
1512              return CUP$Parser$result;
1513    
1514              /*. . . . . . . . . . . . . . . . . . . .*/
1515              case 89: // formula_specification ::= single_formula_specification formula_specification 
1516                {
1517                  List RESULT = null;
1518                    int hdleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
1519                    int hdright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
1520                    Formula hd = (Formula)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
1521                    int tlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1522                    int tlright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1523                    List tl = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1524                    
1525                tl.add(0,hd); RESULT = tl;
1526            
1527                  CUP$Parser$result = new java_cup.runtime.Symbol(51/*formula_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1528                }
1529              return CUP$Parser$result;
1530    
1531              /*. . . . . . . . . . . . . . . . . . . .*/
1532              case 88: // formula_specification ::= single_formula_specification 
1533                {
1534                  List RESULT = null;
1535                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1536                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1537                    Formula e = (Formula)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1538                    
1539                RESULT = new LinkedList();
1540                RESULT.add(e);
1541            
1542                  CUP$Parser$result = new java_cup.runtime.Symbol(51/*formula_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1543                }
1544              return CUP$Parser$result;
1545    
1546              /*. . . . . . . . . . . . . . . . . . . .*/
1547              case 87: // cell_props_opt ::= cell_props 
1548                {
1549                  List RESULT = null;
1550    
1551                    // Default action for single-symbol production
1552                    RESULT = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1553                  CUP$Parser$result = new java_cup.runtime.Symbol(45/*cell_props_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1554                }
1555              return CUP$Parser$result;
1556    
1557              /*. . . . . . . . . . . . . . . . . . . .*/
1558              case 86: // cell_props_opt ::= 
1559                {
1560                  List RESULT = null;
1561                    
1562                RESULT = new LinkedList();
1563            
1564                  CUP$Parser$result = new java_cup.runtime.Symbol(45/*cell_props_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1565                }
1566              return CUP$Parser$result;
1567    
1568              /*. . . . . . . . . . . . . . . . . . . .*/
1569              case 85: // where_clause_opt ::= WHERE slicer_specification 
1570                {
1571                  Exp RESULT = null;
1572                    int sleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1573                    int sright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1574                    Exp s = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1575                     RESULT = s; 
1576                  CUP$Parser$result = new java_cup.runtime.Symbol(16/*where_clause_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1577                }
1578              return CUP$Parser$result;
1579    
1580              /*. . . . . . . . . . . . . . . . . . . .*/
1581              case 84: // where_clause_opt ::= 
1582                {
1583                  Exp RESULT = null;
1584    
1585                  CUP$Parser$result = new java_cup.runtime.Symbol(16/*where_clause_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1586                }
1587              return CUP$Parser$result;
1588    
1589              /*. . . . . . . . . . . . . . . . . . . .*/
1590              case 83: // axis_specification_list ::= axis_specification COMMA axis_specification_list 
1591                {
1592                  List RESULT = null;
1593                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1594                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1595                    QueryAxis e = (QueryAxis)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1596                    int listleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1597                    int listright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1598                    List list = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1599                    
1600                list.add(0, e);
1601                RESULT = list;
1602            
1603                  CUP$Parser$result = new java_cup.runtime.Symbol(42/*axis_specification_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1604                }
1605              return CUP$Parser$result;
1606    
1607              /*. . . . . . . . . . . . . . . . . . . .*/
1608              case 82: // axis_specification_list ::= axis_specification 
1609                {
1610                  List RESULT = null;
1611                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1612                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1613                    QueryAxis i = (QueryAxis)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1614                    
1615                RESULT = new LinkedList();
1616                RESULT.add(i);
1617            
1618                  CUP$Parser$result = new java_cup.runtime.Symbol(42/*axis_specification_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1619                }
1620              return CUP$Parser$result;
1621    
1622              /*. . . . . . . . . . . . . . . . . . . .*/
1623              case 81: // axis_specification_list_opt ::= axis_specification_list 
1624                {
1625                  List RESULT = null;
1626    
1627                    // Default action for single-symbol production
1628                    RESULT = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1629                  CUP$Parser$result = new java_cup.runtime.Symbol(43/*axis_specification_list_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1630                }
1631              return CUP$Parser$result;
1632    
1633              /*. . . . . . . . . . . . . . . . . . . .*/
1634              case 80: // axis_specification_list_opt ::= 
1635                {
1636                  List RESULT = null;
1637                    
1638                RESULT = new LinkedList();
1639            
1640                  CUP$Parser$result = new java_cup.runtime.Symbol(43/*axis_specification_list_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1641                }
1642              return CUP$Parser$result;
1643    
1644              /*. . . . . . . . . . . . . . . . . . . .*/
1645              case 79: // with_formula_specification_opt ::= WITH formula_specification 
1646                {
1647                  List RESULT = null;
1648                    int fleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1649                    int fright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1650                    List f = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1651                    
1652                RESULT = f;
1653            
1654                  CUP$Parser$result = new java_cup.runtime.Symbol(56/*with_formula_specification_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1655                }
1656              return CUP$Parser$result;
1657    
1658              /*. . . . . . . . . . . . . . . . . . . .*/
1659              case 78: // with_formula_specification_opt ::= 
1660                {
1661                  List RESULT = null;
1662                    
1663                RESULT = new LinkedList();
1664            
1665                  CUP$Parser$result = new java_cup.runtime.Symbol(56/*with_formula_specification_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1666                }
1667              return CUP$Parser$result;
1668    
1669              /*. . . . . . . . . . . . . . . . . . . .*/
1670              case 77: // select_statement ::= with_formula_specification_opt SELECT axis_specification_list_opt FROM cube_specification where_clause_opt cell_props_opt 
1671                {
1672                  QueryPart RESULT = null;
1673                    int fleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left;
1674                    int fright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right;
1675                    List f = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value;
1676                    int aleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
1677                    int aright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
1678                    List a = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
1679                    int cleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1680                    int cright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1681                    Id c = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1682                    int wleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
1683                    int wright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
1684                    Exp w = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
1685                    int cpleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1686                    int cpright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1687                    List cp = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1688                    
1689                Parser parser = (Parser) CUP$Parser$parser;
1690                // We want 'Sales', not '[Sales]', and can't handle 'Schema.Sales'
1691                // yet.
1692                String cubeName = c.getElement(0).name;
1693                RESULT = parser.makeQuery(
1694                    Parser.toFormulaArray(f),
1695                    Parser.toQueryAxisArray(a),
1696                    cubeName,
1697                    w,
1698                    Parser.toQueryPartArray(cp));
1699            
1700                  CUP$Parser$result = new java_cup.runtime.Symbol(17/*select_statement*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1701                }
1702              return CUP$Parser$result;
1703    
1704              /*. . . . . . . . . . . . . . . . . . . .*/
1705              case 76: // statement ::= _VALUE_EXPRESSION expression 
1706                {
1707                  QueryPart RESULT = null;
1708                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1709                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1710                    Exp e = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1711                     RESULT = (QueryPart) e; 
1712                  CUP$Parser$result = new java_cup.runtime.Symbol(18/*statement*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1713                }
1714              return CUP$Parser$result;
1715    
1716              /*. . . . . . . . . . . . . . . . . . . .*/
1717              case 75: // statement ::= select_statement 
1718                {
1719                  QueryPart RESULT = null;
1720    
1721                    // Default action for single-symbol production
1722                    RESULT = (QueryPart)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1723                  CUP$Parser$result = new java_cup.runtime.Symbol(18/*statement*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1724                }
1725              return CUP$Parser$result;
1726    
1727              /*. . . . . . . . . . . . . . . . . . . .*/
1728              case 74: // exp_list ::= expression_or_empty COMMA exp_list 
1729                {
1730                  List RESULT = null;
1731                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1732                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1733                    Exp e = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1734                    int listleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1735                    int listright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1736                    List list = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1737                    
1738                list.add(0, e); RESULT = list;
1739            
1740                  CUP$Parser$result = new java_cup.runtime.Symbol(49/*exp_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1741                }
1742              return CUP$Parser$result;
1743    
1744              /*. . . . . . . . . . . . . . . . . . . .*/
1745              case 73: // exp_list ::= expression 
1746                {
1747                  List RESULT = null;
1748                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1749                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1750                    Exp e = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1751                    
1752                RESULT = new LinkedList();
1753                RESULT.add(e);
1754            
1755                  CUP$Parser$result = new java_cup.runtime.Symbol(49/*exp_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1756                }
1757              return CUP$Parser$result;
1758    
1759              /*. . . . . . . . . . . . . . . . . . . .*/
1760              case 72: // exp_list_opt ::= exp_list 
1761                {
1762                  List RESULT = null;
1763    
1764                    // Default action for single-symbol production
1765                    RESULT = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1766                  CUP$Parser$result = new java_cup.runtime.Symbol(50/*exp_list_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1767                }
1768              return CUP$Parser$result;
1769    
1770              /*. . . . . . . . . . . . . . . . . . . .*/
1771              case 71: // exp_list_opt ::= 
1772                {
1773                  List RESULT = null;
1774                    
1775                RESULT = new LinkedList();
1776            
1777                  CUP$Parser$result = new java_cup.runtime.Symbol(50/*exp_list_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1778                }
1779              return CUP$Parser$result;
1780    
1781              /*. . . . . . . . . . . . . . . . . . . .*/
1782              case 70: // expression_or_empty ::= 
1783                {
1784                  Exp RESULT = null;
1785                    
1786                RESULT = new UnresolvedFunCall("", Syntax.Empty, new Exp[] {});
1787            
1788                  CUP$Parser$result = new java_cup.runtime.Symbol(5/*expression_or_empty*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1789                }
1790              return CUP$Parser$result;
1791    
1792              /*. . . . . . . . . . . . . . . . . . . .*/
1793              case 69: // expression_or_empty ::= expression 
1794                {
1795                  Exp RESULT = null;
1796    
1797                    // Default action for single-symbol production
1798                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1799                  CUP$Parser$result = new java_cup.runtime.Symbol(5/*expression_or_empty*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1800                }
1801              return CUP$Parser$result;
1802    
1803              /*. . . . . . . . . . . . . . . . . . . .*/
1804              case 68: // expression ::= value_expression 
1805                {
1806                  Exp RESULT = null;
1807    
1808                    // Default action for single-symbol production
1809                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1810                  CUP$Parser$result = new java_cup.runtime.Symbol(4/*expression*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1811                }
1812              return CUP$Parser$result;
1813    
1814              /*. . . . . . . . . . . . . . . . . . . .*/
1815              case 67: // expression ::= expression COLON value_expression 
1816                {
1817                  Exp RESULT = null;
1818                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1819                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1820                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1821                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1822                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1823                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1824                     // range yields set
1825                RESULT = new UnresolvedFunCall(":", Syntax.Infix, new Exp[] {x, y});
1826            
1827                  CUP$Parser$result = new java_cup.runtime.Symbol(4/*expression*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1828                }
1829              return CUP$Parser$result;
1830    
1831              /*. . . . . . . . . . . . . . . . . . . .*/
1832              case 66: // comp_op ::= GE 
1833                {
1834                  String RESULT = null;
1835                     RESULT = ">="; 
1836                  CUP$Parser$result = new java_cup.runtime.Symbol(26/*comp_op*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1837                }
1838              return CUP$Parser$result;
1839    
1840              /*. . . . . . . . . . . . . . . . . . . .*/
1841              case 65: // comp_op ::= LE 
1842                {
1843                  String RESULT = null;
1844                     RESULT = "<="; 
1845                  CUP$Parser$result = new java_cup.runtime.Symbol(26/*comp_op*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1846                }
1847              return CUP$Parser$result;
1848    
1849              /*. . . . . . . . . . . . . . . . . . . .*/
1850              case 64: // comp_op ::= GT 
1851                {
1852                  String RESULT = null;
1853                     RESULT = ">"; 
1854                  CUP$Parser$result = new java_cup.runtime.Symbol(26/*comp_op*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1855                }
1856              return CUP$Parser$result;
1857    
1858              /*. . . . . . . . . . . . . . . . . . . .*/
1859              case 63: // comp_op ::= LT 
1860                {
1861                  String RESULT = null;
1862                     RESULT = "<"; 
1863                  CUP$Parser$result = new java_cup.runtime.Symbol(26/*comp_op*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1864                }
1865              return CUP$Parser$result;
1866    
1867              /*. . . . . . . . . . . . . . . . . . . .*/
1868              case 62: // comp_op ::= NE 
1869                {
1870                  String RESULT = null;
1871                     RESULT = "<>"; 
1872                  CUP$Parser$result = new java_cup.runtime.Symbol(26/*comp_op*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1873                }
1874              return CUP$Parser$result;
1875    
1876              /*. . . . . . . . . . . . . . . . . . . .*/
1877              case 61: // comp_op ::= EQ 
1878                {
1879                  String RESULT = null;
1880                     RESULT = "="; 
1881                  CUP$Parser$result = new java_cup.runtime.Symbol(26/*comp_op*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1882                }
1883              return CUP$Parser$result;
1884    
1885              /*. . . . . . . . . . . . . . . . . . . .*/
1886              case 60: // else_clause_opt ::= ELSE value_expression 
1887                {
1888                  Exp RESULT = null;
1889                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1890                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1891                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1892                    
1893                RESULT = x;
1894            
1895                  CUP$Parser$result = new java_cup.runtime.Symbol(3/*else_clause_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1896                }
1897              return CUP$Parser$result;
1898    
1899              /*. . . . . . . . . . . . . . . . . . . .*/
1900              case 59: // else_clause_opt ::= 
1901                {
1902                  Exp RESULT = null;
1903    
1904                  CUP$Parser$result = new java_cup.runtime.Symbol(3/*else_clause_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1905                }
1906              return CUP$Parser$result;
1907    
1908              /*. . . . . . . . . . . . . . . . . . . .*/
1909              case 58: // when_clause ::= WHEN value_expression THEN value_expression 
1910                {
1911                  Exp[] RESULT = null;
1912                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1913                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1914                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1915                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1916                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1917                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1918                    
1919                RESULT = new Exp[] {x,y};
1920            
1921                  CUP$Parser$result = new java_cup.runtime.Symbol(57/*when_clause*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1922                }
1923              return CUP$Parser$result;
1924    
1925              /*. . . . . . . . . . . . . . . . . . . .*/
1926              case 57: // when_list ::= when_list when_clause 
1927                {
1928                  List RESULT = null;
1929                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
1930                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
1931                    List x = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
1932                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1933                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1934                    Exp[] y = (Exp[])((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1935                    
1936                RESULT = x;
1937                x.add(y);
1938            
1939                  CUP$Parser$result = new java_cup.runtime.Symbol(55/*when_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1940                }
1941              return CUP$Parser$result;
1942    
1943              /*. . . . . . . . . . . . . . . . . . . .*/
1944              case 56: // when_list ::= 
1945                {
1946                  List RESULT = null;
1947                    
1948                RESULT = new ArrayList();
1949            
1950                  CUP$Parser$result = new java_cup.runtime.Symbol(55/*when_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1951                }
1952              return CUP$Parser$result;
1953    
1954              /*. . . . . . . . . . . . . . . . . . . .*/
1955              case 55: // value_expression_opt ::= value_expression 
1956                {
1957                  Exp RESULT = null;
1958    
1959                    // Default action for single-symbol production
1960                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1961                  CUP$Parser$result = new java_cup.runtime.Symbol(14/*value_expression_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1962                }
1963              return CUP$Parser$result;
1964    
1965              /*. . . . . . . . . . . . . . . . . . . .*/
1966              case 54: // value_expression_opt ::= 
1967                {
1968                  Exp RESULT = null;
1969    
1970                  CUP$Parser$result = new java_cup.runtime.Symbol(14/*value_expression_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1971                }
1972              return CUP$Parser$result;
1973    
1974              /*. . . . . . . . . . . . . . . . . . . .*/
1975              case 53: // case_expression ::= CASE value_expression_opt when_list else_clause_opt END 
1976                {
1977                  Exp RESULT = null;
1978                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
1979                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
1980                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
1981                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1982                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1983                    List y = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1984                    int zleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
1985                    int zright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
1986                    Exp z = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
1987                    
1988                List v = new ArrayList();
1989                if (x != null) {
1990                    v.add(x);
1991                }
1992                for (int i = 0; i < y.size(); i++) {
1993                    Exp[] exps = (Exp[]) y.get(i);
1994                    Util.assertTrue(exps.length == 2);
1995                    v.add(exps[0]);
1996                    v.add(exps[1]);
1997                }
1998                if (z != null) {
1999                    v.add(z);
2000                }
2001                if (x == null) {
2002                    RESULT = new UnresolvedFunCall(
2003                        "_CaseTest", Syntax.Case, Parser.toExpArray(v));
2004                } else {
2005                    RESULT = new UnresolvedFunCall(
2006                        "_CaseMatch", Syntax.Case, Parser.toExpArray(v));
2007                }
2008            
2009                  CUP$Parser$result = new java_cup.runtime.Symbol(2/*case_expression*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2010                }
2011              return CUP$Parser$result;
2012    
2013              /*. . . . . . . . . . . . . . . . . . . .*/
2014              case 52: // value_expression_primary ::= case_expression 
2015                {
2016                  Exp RESULT = null;
2017    
2018                    // Default action for single-symbol production
2019                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2020                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2021                }
2022              return CUP$Parser$result;
2023    
2024              /*. . . . . . . . . . . . . . . . . . . .*/
2025              case 51: // value_expression_primary ::= NULL 
2026                {
2027                  Exp RESULT = null;
2028                    
2029                RESULT = Literal.nullValue;
2030            
2031                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2032                }
2033              return CUP$Parser$result;
2034    
2035              /*. . . . . . . . . . . . . . . . . . . .*/
2036              case 50: // value_expression_primary ::= LBRACE exp_list_opt RBRACE 
2037                {
2038                  Exp RESULT = null;
2039                    int lisleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
2040                    int lisright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
2041                    List lis = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
2042                     // set built from sets/tuples
2043                RESULT = new UnresolvedFunCall(
2044                    "{}", Syntax.Braces, Parser.toExpArray(lis));
2045            
2046                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2047                }
2048              return CUP$Parser$result;
2049    
2050              /*. . . . . . . . . . . . . . . . . . . .*/
2051              case 49: // value_expression_primary ::= LPAREN exp_list RPAREN 
2052                {
2053                  Exp RESULT = null;
2054                    int lisleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
2055                    int lisright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
2056                    List lis = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
2057                    
2058                // Whereas ([Sales],[Time]) and () are tuples, ([Sales]) and (5)
2059                // are just expressions.
2060                RESULT = new UnresolvedFunCall(
2061                    "()", Syntax.Parentheses, Parser.toExpArray(lis));
2062            
2063                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2064                }
2065              return CUP$Parser$result;
2066    
2067              /*. . . . . . . . . . . . . . . . . . . .*/
2068              case 48: // value_expression_primary ::= CAST LPAREN expression AS identifier RPAREN 
2069                {
2070                  Exp RESULT = null;
2071                    int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
2072                    int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
2073                    Exp e = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
2074                    int tleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
2075                    int tright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
2076                    Id.Segment t = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
2077                    
2078                RESULT = new UnresolvedFunCall(
2079                    "CAST", Syntax.Cast, new Exp[] {e, Literal.createSymbol(t.name)});
2080            
2081                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2082                }
2083              return CUP$Parser$result;
2084    
2085              /*. . . . . . . . . . . . . . . . . . . .*/
2086              case 47: // value_expression_primary ::= bang_compound_id LPAREN exp_list_opt RPAREN 
2087                {
2088                  Exp RESULT = null;
2089                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
2090                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
2091                    Id i = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
2092                    int lisleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
2093                    int lisright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
2094                    List lis = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
2095                    
2096                RESULT = new UnresolvedFunCall(
2097                    i.getSegments().get(i.getSegments().size() - 1).name,
2098                    Syntax.Function, Parser.toExpArray(lis));
2099            
2100                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2101                }
2102              return CUP$Parser$result;
2103    
2104              /*. . . . . . . . . . . . . . . . . . . .*/
2105              case 46: // value_expression_primary ::= value_expression_primary DOT identifier LPAREN exp_list_opt RPAREN 
2106                {
2107                  Exp RESULT = null;
2108                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
2109                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
2110                    Exp i = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
2111                    int jleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
2112                    int jright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
2113                    Id.Segment j = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
2114                    int lisleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
2115                    int lisright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
2116                    List lis = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
2117                    
2118                lis.add(0, i);
2119                RESULT = new UnresolvedFunCall(
2120                    j.name, Syntax.Method, Parser.toExpArray(lis));
2121            
2122                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2123                }
2124              return CUP$Parser$result;
2125    
2126              /*. . . . . . . . . . . . . . . . . . . .*/
2127              case 45: // value_expression_primary ::= value_expression_primary DOT amp_quoted_identifier 
2128                {
2129                  Exp RESULT = null;
2130                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2131                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2132                    Exp i = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2133                    int jleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2134                    int jright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2135                    Id.Segment j = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2136                    
2137                if (i instanceof Id) {
2138                    RESULT = ((Id) i).append(j);
2139                } else {
2140                    RESULT = new UnresolvedFunCall(
2141                        j.name, Syntax.AmpersandQuotedProperty, new Exp[] {i});
2142                }
2143            
2144                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2145                }
2146              return CUP$Parser$result;
2147    
2148              /*. . . . . . . . . . . . . . . . . . . .*/
2149              case 44: // value_expression_primary ::= value_expression_primary DOT quoted_identifier 
2150                {
2151                  Exp RESULT = null;
2152                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2153                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2154                    Exp i = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2155                    int jleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2156                    int jright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2157                    Id.Segment j = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2158                    
2159                if (i instanceof Id) {
2160                    RESULT = ((Id) i).append(j);
2161                } else {
2162                    RESULT = new UnresolvedFunCall(
2163                        j.name, Syntax.QuotedProperty, new Exp[] {i});
2164                }
2165            
2166                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2167                }
2168              return CUP$Parser$result;
2169    
2170              /*. . . . . . . . . . . . . . . . . . . .*/
2171              case 43: // value_expression_primary ::= value_expression_primary DOT unquoted_identifier 
2172                {
2173                  Exp RESULT = null;
2174                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2175                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2176                    Exp i = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2177                    int jleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2178                    int jright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2179                    Id.Segment j = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2180                    
2181                if (i instanceof Id && !parser.isFunCall(j.name)) {
2182                    RESULT = ((Id) i).append(j);
2183                } else {
2184                    RESULT = new UnresolvedFunCall(j.name, Syntax.Property, new Exp[] {i});
2185                }
2186            
2187                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2188                }
2189              return CUP$Parser$result;
2190    
2191              /*. . . . . . . . . . . . . . . . . . . .*/
2192              case 42: // value_expression_primary ::= identifier 
2193                {
2194                  Exp RESULT = null;
2195                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2196                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2197                    Id.Segment i = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2198                    
2199                RESULT = new Id(i);
2200            
2201                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2202                }
2203              return CUP$Parser$result;
2204    
2205              /*. . . . . . . . . . . . . . . . . . . .*/
2206              case 41: // value_expression_primary ::= NUMBER 
2207                {
2208                  Exp RESULT = null;
2209                    int dleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2210                    int dright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2211                    Double d = (Double)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2212                    
2213                RESULT = Literal.create(d);
2214            
2215                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2216                }
2217              return CUP$Parser$result;
2218    
2219              /*. . . . . . . . . . . . . . . . . . . .*/
2220              case 40: // value_expression_primary ::= STRING 
2221                {
2222                  Exp RESULT = null;
2223                    int sleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2224                    int sright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2225                    String s = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2226                    
2227                RESULT = Literal.createString(s);
2228            
2229                  CUP$Parser$result = new java_cup.runtime.Symbol(15/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2230                }
2231              return CUP$Parser$result;
2232    
2233              /*. . . . . . . . . . . . . . . . . . . .*/
2234              case 39: // factor ::= MINUS value_expression_primary 
2235                {
2236                  Exp RESULT = null;
2237                    int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2238                    int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2239                    Exp p = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2240                    
2241                RESULT = new UnresolvedFunCall("-", Syntax.Prefix, new Exp[] {p});
2242            
2243                  CUP$Parser$result = new java_cup.runtime.Symbol(6/*factor*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2244                }
2245              return CUP$Parser$result;
2246    
2247              /*. . . . . . . . . . . . . . . . . . . .*/
2248              case 38: // factor ::= PLUS value_expression_primary 
2249                {
2250                  Exp RESULT = null;
2251                    int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2252                    int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2253                    Exp p = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2254                    
2255                RESULT = p;
2256            
2257                  CUP$Parser$result = new java_cup.runtime.Symbol(6/*factor*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2258                }
2259              return CUP$Parser$result;
2260    
2261              /*. . . . . . . . . . . . . . . . . . . .*/
2262              case 37: // factor ::= value_expression_primary 
2263                {
2264                  Exp RESULT = null;
2265    
2266                    // Default action for single-symbol production
2267                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2268                  CUP$Parser$result = new java_cup.runtime.Symbol(6/*factor*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2269                }
2270              return CUP$Parser$result;
2271    
2272              /*. . . . . . . . . . . . . . . . . . . .*/
2273              case 36: // term ::= term SOLIDUS factor 
2274                {
2275                  Exp RESULT = null;
2276                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2277                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2278                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2279                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2280                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2281                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2282                    
2283                RESULT = new UnresolvedFunCall("/", Syntax.Infix, new Exp[] {x, y});
2284            
2285                  CUP$Parser$result = new java_cup.runtime.Symbol(8/*term*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2286                }
2287              return CUP$Parser$result;
2288    
2289              /*. . . . . . . . . . . . . . . . . . . .*/
2290              case 35: // term ::= term ASTERISK factor 
2291                {
2292                  Exp RESULT = null;
2293                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2294                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2295                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2296                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2297                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2298                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2299                    
2300                RESULT = new UnresolvedFunCall("*", Syntax.Infix, new Exp[] {x, y});
2301            
2302                  CUP$Parser$result = new java_cup.runtime.Symbol(8/*term*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2303                }
2304              return CUP$Parser$result;
2305    
2306              /*. . . . . . . . . . . . . . . . . . . .*/
2307              case 34: // term ::= factor 
2308                {
2309                  Exp RESULT = null;
2310    
2311                    // Default action for single-symbol production
2312                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2313                  CUP$Parser$result = new java_cup.runtime.Symbol(8/*term*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2314                }
2315              return CUP$Parser$result;
2316    
2317              /*. . . . . . . . . . . . . . . . . . . .*/
2318              case 33: // term2 ::= term2 CONCAT term 
2319                {
2320                  Exp RESULT = null;
2321                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2322                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2323                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2324                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2325                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2326                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2327                    
2328                RESULT = new UnresolvedFunCall("||", Syntax.Infix, new Exp[] {x, y});
2329            
2330                  CUP$Parser$result = new java_cup.runtime.Symbol(9/*term2*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2331                }
2332              return CUP$Parser$result;
2333    
2334              /*. . . . . . . . . . . . . . . . . . . .*/
2335              case 32: // term2 ::= term2 MINUS term 
2336                {
2337                  Exp RESULT = null;
2338                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2339                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2340                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2341                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2342                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2343                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2344                    
2345                RESULT = new UnresolvedFunCall("-", Syntax.Infix, new Exp[] {x, y});
2346            
2347                  CUP$Parser$result = new java_cup.runtime.Symbol(9/*term2*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2348                }
2349              return CUP$Parser$result;
2350    
2351              /*. . . . . . . . . . . . . . . . . . . .*/
2352              case 31: // term2 ::= term2 PLUS term 
2353                {
2354                  Exp RESULT = null;
2355                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2356                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2357                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2358                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2359                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2360                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2361                    
2362                RESULT = new UnresolvedFunCall("+", Syntax.Infix, new Exp[] {x, y});
2363            
2364                  CUP$Parser$result = new java_cup.runtime.Symbol(9/*term2*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2365                }
2366              return CUP$Parser$result;
2367    
2368              /*. . . . . . . . . . . . . . . . . . . .*/
2369              case 30: // term2 ::= term 
2370                {
2371                  Exp RESULT = null;
2372    
2373                    // Default action for single-symbol production
2374                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2375                  CUP$Parser$result = new java_cup.runtime.Symbol(9/*term2*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2376                }
2377              return CUP$Parser$result;
2378    
2379              /*. . . . . . . . . . . . . . . . . . . .*/
2380              case 29: // term3 ::= term3 NOT IN term2 
2381                {
2382                  Exp RESULT = null;
2383                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
2384                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
2385                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
2386                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2387                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2388                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2389                    
2390                RESULT = new UnresolvedFunCall(
2391                    "NOT", Syntax.Prefix, new Exp[]
2392                    {new UnresolvedFunCall("IN", Syntax.Infix, new Exp[] {x, y})});
2393            
2394                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2395                }
2396              return CUP$Parser$result;
2397    
2398              /*. . . . . . . . . . . . . . . . . . . .*/
2399              case 28: // term3 ::= term3 IN term2 
2400                {
2401                  Exp RESULT = null;
2402                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2403                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2404                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2405                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2406                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2407                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2408                    
2409                RESULT = new UnresolvedFunCall("IN", Syntax.Infix, new Exp[] {x, y});
2410            
2411                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2412                }
2413              return CUP$Parser$result;
2414    
2415              /*. . . . . . . . . . . . . . . . . . . .*/
2416              case 27: // term3 ::= term3 NOT MATCHES term2 
2417                {
2418                  Exp RESULT = null;
2419                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
2420                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
2421                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
2422                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2423                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2424                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2425                    
2426                RESULT = new UnresolvedFunCall(
2427                    "NOT", Syntax.Prefix, new Exp[]
2428                    {new UnresolvedFunCall("MATCHES", Syntax.Infix, new Exp[] {x, y})});
2429            
2430                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2431                }
2432              return CUP$Parser$result;
2433    
2434              /*. . . . . . . . . . . . . . . . . . . .*/
2435              case 26: // term3 ::= term3 MATCHES term2 
2436                {
2437                  Exp RESULT = null;
2438                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2439                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2440                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2441                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2442                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2443                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2444                    
2445                RESULT = new UnresolvedFunCall("MATCHES", Syntax.Infix, new Exp[] {x, y});
2446            
2447                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2448                }
2449              return CUP$Parser$result;
2450    
2451              /*. . . . . . . . . . . . . . . . . . . .*/
2452              case 25: // term3 ::= term3 IS EMPTY 
2453                {
2454                  Exp RESULT = null;
2455                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2456                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2457                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2458                    
2459                RESULT = new UnresolvedFunCall("IS EMPTY", Syntax.Postfix, new Exp[] {x});
2460            
2461                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2462                }
2463              return CUP$Parser$result;
2464    
2465              /*. . . . . . . . . . . . . . . . . . . .*/
2466              case 24: // term3 ::= term3 IS term2 
2467                {
2468                  Exp RESULT = null;
2469                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2470                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2471                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2472                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2473                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2474                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2475                     // e.g. "x IS y"; but "x IS NULL" is handled elsewhere
2476                RESULT = new UnresolvedFunCall("IS", Syntax.Infix, new Exp[] {x, y});
2477            
2478                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2479                }
2480              return CUP$Parser$result;
2481    
2482              /*. . . . . . . . . . . . . . . . . . . .*/
2483              case 23: // term3 ::= term3 IS NULL 
2484                {
2485                  Exp RESULT = null;
2486                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2487                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2488                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2489                    
2490                RESULT = new UnresolvedFunCall("IS NULL", Syntax.Postfix, new Exp[] {x});
2491            
2492                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2493                }
2494              return CUP$Parser$result;
2495    
2496              /*. . . . . . . . . . . . . . . . . . . .*/
2497              case 22: // term3 ::= term3 comp_op term2 
2498                {
2499                  Exp RESULT = null;
2500                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2501                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2502                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2503                    int opleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
2504                    int opright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
2505                    String op = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
2506                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2507                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2508                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2509                     // e.g. "1 < 5"
2510                RESULT = new UnresolvedFunCall(op, Syntax.Infix, new Exp[] {x, y});
2511            
2512                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2513                }
2514              return CUP$Parser$result;
2515    
2516              /*. . . . . . . . . . . . . . . . . . . .*/
2517              case 21: // term3 ::= term2 
2518                {
2519                  Exp RESULT = null;
2520    
2521                    // Default action for single-symbol production
2522                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2523                  CUP$Parser$result = new java_cup.runtime.Symbol(10/*term3*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2524                }
2525              return CUP$Parser$result;
2526    
2527              /*. . . . . . . . . . . . . . . . . . . .*/
2528              case 20: // term4 ::= NOT term4 
2529                {
2530                  Exp RESULT = null;
2531                    int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2532                    int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2533                    Exp p = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2534                    
2535                RESULT = new UnresolvedFunCall("NOT", Syntax.Prefix, new Exp[] {p});
2536            
2537                  CUP$Parser$result = new java_cup.runtime.Symbol(11/*term4*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2538                }
2539              return CUP$Parser$result;
2540    
2541              /*. . . . . . . . . . . . . . . . . . . .*/
2542              case 19: // term4 ::= term3 
2543                {
2544                  Exp RESULT = null;
2545    
2546                    // Default action for single-symbol production
2547                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2548                  CUP$Parser$result = new java_cup.runtime.Symbol(11/*term4*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2549                }
2550              return CUP$Parser$result;
2551    
2552              /*. . . . . . . . . . . . . . . . . . . .*/
2553              case 18: // term5 ::= term5 AND term4 
2554                {
2555                  Exp RESULT = null;
2556                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2557                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2558                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2559                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2560                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2561                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2562                    
2563                RESULT = new UnresolvedFunCall("AND", Syntax.Infix, new Exp[] {x, y});
2564            
2565                  CUP$Parser$result = new java_cup.runtime.Symbol(12/*term5*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2566                }
2567              return CUP$Parser$result;
2568    
2569              /*. . . . . . . . . . . . . . . . . . . .*/
2570              case 17: // term5 ::= term4 
2571                {
2572                  Exp RESULT = null;
2573    
2574                    // Default action for single-symbol production
2575                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2576                  CUP$Parser$result = new java_cup.runtime.Symbol(12/*term5*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2577                }
2578              return CUP$Parser$result;
2579    
2580              /*. . . . . . . . . . . . . . . . . . . .*/
2581              case 16: // value_expression ::= value_expression XOR term5 
2582                {
2583                  Exp RESULT = null;
2584                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2585                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2586                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2587                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2588                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2589                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2590                    
2591                RESULT = new UnresolvedFunCall("XOR", Syntax.Infix, new Exp[] {x, y});
2592            
2593                  CUP$Parser$result = new java_cup.runtime.Symbol(13/*value_expression*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2594                }
2595              return CUP$Parser$result;
2596    
2597              /*. . . . . . . . . . . . . . . . . . . .*/
2598              case 15: // value_expression ::= value_expression OR term5 
2599                {
2600                  Exp RESULT = null;
2601                    int xleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2602                    int xright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2603                    Exp x = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2604                    int yleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2605                    int yright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2606                    Exp y = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2607                    
2608                RESULT = new UnresolvedFunCall("OR", Syntax.Infix, new Exp[] {x, y});
2609            
2610                  CUP$Parser$result = new java_cup.runtime.Symbol(13/*value_expression*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2611                }
2612              return CUP$Parser$result;
2613    
2614              /*. . . . . . . . . . . . . . . . . . . .*/
2615              case 14: // value_expression ::= term5 
2616                {
2617                  Exp RESULT = null;
2618    
2619                    // Default action for single-symbol production
2620                    RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2621                  CUP$Parser$result = new java_cup.runtime.Symbol(13/*value_expression*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2622                }
2623              return CUP$Parser$result;
2624    
2625              /*. . . . . . . . . . . . . . . . . . . .*/
2626              case 13: // cube_name ::= compound_id 
2627                {
2628                  Id RESULT = null;
2629    
2630                    // Default action for single-symbol production
2631                    RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2632                  CUP$Parser$result = new java_cup.runtime.Symbol(21/*cube_name*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2633                }
2634              return CUP$Parser$result;
2635    
2636              /*. . . . . . . . . . . . . . . . . . . .*/
2637              case 12: // bang_compound_id ::= bang_compound_id BANG identifier 
2638                {
2639                  Id RESULT = null;
2640                    int hdleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2641                    int hdright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2642                    Id hd = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2643                    int tlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2644                    int tlright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2645                    Id.Segment tl = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2646                    
2647                RESULT = hd.append(tl);
2648            
2649                  CUP$Parser$result = new java_cup.runtime.Symbol(19/*bang_compound_id*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2650                }
2651              return CUP$Parser$result;
2652    
2653              /*. . . . . . . . . . . . . . . . . . . .*/
2654              case 11: // bang_compound_id ::= identifier 
2655                {
2656                  Id RESULT = null;
2657                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2658                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2659                    Id.Segment i = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2660                    
2661                RESULT = new Id(i);
2662            
2663                  CUP$Parser$result = new java_cup.runtime.Symbol(19/*bang_compound_id*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2664                }
2665              return CUP$Parser$result;
2666    
2667              /*. . . . . . . . . . . . . . . . . . . .*/
2668              case 10: // compound_id ::= compound_id DOT identifier 
2669                {
2670                  Id RESULT = null;
2671                    int hdleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
2672                    int hdright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
2673                    Id hd = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
2674                    int tlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2675                    int tlright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2676                    Id.Segment tl = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2677                    
2678                RESULT = hd.append(tl);
2679            
2680                  CUP$Parser$result = new java_cup.runtime.Symbol(20/*compound_id*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2681                }
2682              return CUP$Parser$result;
2683    
2684              /*. . . . . . . . . . . . . . . . . . . .*/
2685              case 9: // compound_id ::= identifier 
2686                {
2687                  Id RESULT = null;
2688                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2689                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2690                    Id.Segment i = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2691                    
2692                RESULT = new Id(i);
2693            
2694                  CUP$Parser$result = new java_cup.runtime.Symbol(20/*compound_id*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2695                }
2696              return CUP$Parser$result;
2697    
2698              /*. . . . . . . . . . . . . . . . . . . .*/
2699              case 8: // keyword ::= PROPERTIES 
2700                {
2701                  String RESULT = null;
2702                    
2703                RESULT = "Properties";
2704            
2705                  CUP$Parser$result = new java_cup.runtime.Symbol(27/*keyword*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2706                }
2707              return CUP$Parser$result;
2708    
2709              /*. . . . . . . . . . . . . . . . . . . .*/
2710              case 7: // keyword ::= DIMENSION 
2711                {
2712                  String RESULT = null;
2713                    
2714                RESULT = "Dimension";
2715            
2716                  CUP$Parser$result = new java_cup.runtime.Symbol(27/*keyword*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2717                }
2718              return CUP$Parser$result;
2719    
2720              /*. . . . . . . . . . . . . . . . . . . .*/
2721              case 6: // identifier ::= quoted_identifier 
2722                {
2723                  Id.Segment RESULT = null;
2724    
2725                    // Default action for single-symbol production
2726                    RESULT = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2727                  CUP$Parser$result = new java_cup.runtime.Symbol(28/*identifier*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2728                }
2729              return CUP$Parser$result;
2730    
2731              /*. . . . . . . . . . . . . . . . . . . .*/
2732              case 5: // identifier ::= unquoted_identifier 
2733                {
2734                  Id.Segment RESULT = null;
2735    
2736                    // Default action for single-symbol production
2737                    RESULT = (Id.Segment)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
2738                  CUP$Parser$result = new java_cup.runtime.Symbol(28/*identifier*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2739                }
2740              return CUP$Parser$result;
2741    
2742              /*. . . . . . . . . . . . . . . . . . . .*/
2743              case 4: // unquoted_identifier ::= keyword 
2744                {
2745                  Id.Segment RESULT = null;
2746                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2747                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2748                    String i = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2749                    
2750                RESULT = new Id.Segment(i, Id.Quoting.UNQUOTED);
2751            
2752                  CUP$Parser$result = new java_cup.runtime.Symbol(30/*unquoted_identifier*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2753                }
2754              return CUP$Parser$result;
2755    
2756              /*. . . . . . . . . . . . . . . . . . . .*/
2757              case 3: // unquoted_identifier ::= ID 
2758                {
2759                  Id.Segment RESULT = null;
2760                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2761                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2762                    String i = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2763                    
2764                RESULT = new Id.Segment(i, Id.Quoting.UNQUOTED);
2765            
2766                  CUP$Parser$result = new java_cup.runtime.Symbol(30/*unquoted_identifier*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2767                }
2768              return CUP$Parser$result;
2769    
2770              /*. . . . . . . . . . . . . . . . . . . .*/
2771              case 2: // amp_quoted_identifier ::= AMP_QUOTED_ID 
2772                {
2773                  Id.Segment RESULT = null;
2774                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2775                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2776                    String i = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2777                    
2778                RESULT = new Id.Segment(i, Id.Quoting.KEY);
2779            
2780                  CUP$Parser$result = new java_cup.runtime.Symbol(31/*amp_quoted_identifier*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2781                }
2782              return CUP$Parser$result;
2783    
2784              /*. . . . . . . . . . . . . . . . . . . .*/
2785              case 1: // quoted_identifier ::= QUOTED_ID 
2786                {
2787                  Id.Segment RESULT = null;
2788                    int ileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
2789                    int iright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
2790                    String i = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
2791                    
2792                RESULT = new Id.Segment(i, Id.Quoting.QUOTED);
2793            
2794                  CUP$Parser$result = new java_cup.runtime.Symbol(29/*quoted_identifier*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2795                }
2796              return CUP$Parser$result;
2797    
2798              /*. . . . . . . . . . . . . . . . . . . .*/
2799              case 0: // $START ::= statement EOF 
2800                {
2801                  Object RESULT = null;
2802                    int start_valleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
2803                    int start_valright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
2804                    QueryPart start_val = (QueryPart)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
2805                    RESULT = start_val;
2806                  CUP$Parser$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
2807                }
2808              /* ACCEPT */
2809              CUP$Parser$parser.done_parsing();
2810              return CUP$Parser$result;
2811    
2812              /* . . . . . .*/
2813              default:
2814                throw new Exception(
2815                   "Invalid action number found in internal parse table");
2816    
2817            }
2818        }
2819    }
2820