Package org.olap4j.mdx.parser.impl

Source Code of org.olap4j.mdx.parser.impl.CUP$DefaultMdxParser$actions

//----------------------------------------------------
// The following code was generated by CUP v0.10k
// Wed Dec 22 14:03:40 EST 2010
//----------------------------------------------------

package org.olap4j.mdx.parser.impl;

import java_cup.runtime.*;
import java.math.BigDecimal;
import java.util.*;
import org.olap4j.Axis;
import org.olap4j.mdx.*;
import org.olap4j.mdx.parser.MdxParseException;

/** CUP v0.10k generated parser.
  * @version Wed Dec 22 14:03:40 EST 2010
  */
public class DefaultMdxParser extends java_cup.runtime.lr_parser {

  /** Default constructor. */
  public DefaultMdxParser() {super();}

  /** Constructor which sets the default scanner. */
  public DefaultMdxParser(java_cup.runtime.Scanner s) {super(s);}

  /** Production table. */
  protected static final short _production_table[][] =
    unpackFromStrings(new String[] {
    "\000\211\000\002\002\004\000\002\042\003\000\002\043" +
    "\003\000\002\043\003\000\002\041\003\000\002\047\003" +
    "\000\002\047\004\000\002\044\003\000\002\044\003\000" +
    "\002\045\003\000\002\046\003\000\002\040\003\000\002" +
    "\040\003\000\002\040\003\000\002\037\003\000\002\037" +
    "\003\000\002\030\003\000\002\030\005\000\002\031\003" +
    "\000\002\020\003\000\002\020\005\000\002\020\005\000" +
    "\002\017\003\000\002\017\005\000\002\016\003\000\002" +
    "\016\004\000\002\015\003\000\002\015\005\000\002\015" +
    "\005\000\002\015\005\000\002\015\005\000\002\015\005" +
    "\000\002\015\006\000\002\015\005\000\002\015\006\000" +
    "\002\014\003\000\002\014\005\000\002\014\005\000\002" +
    "\014\005\000\002\013\003\000\002\013\005\000\002\013" +
    "\005\000\002\011\003\000\002\011\004\000\002\011\004" +
    "\000\002\022\003\000\002\022\003\000\002\022\003\000" +
    "\002\022\005\000\002\022\005\000\002\022\005\000\002" +
    "\022\010\000\002\022\006\000\002\022\010\000\002\022" +
    "\005\000\002\022\005\000\002\022\003\000\002\022\003" +
    "\000\002\004\007\000\002\021\002\000\002\021\003\000" +
    "\002\075\002\000\002\075\004\000\002\077\006\000\002" +
    "\006\002\000\002\006\004\000\002\036\003\000\002\036" +
    "\003\000\002\036\003\000\002\036\003\000\002\036\003" +
    "\000\002\036\003\000\002\007\005\000\002\007\003\000" +
    "\002\010\003\000\002\010\002\000\002\070\002\000\002" +
    "\070\003\000\002\067\003\000\002\067\005\000\002\026" +
    "\003\000\002\026\004\000\002\005\003\000\002\005\005" +
    "\000\002\024\011\000\002\076\002\000\002\076\004\000" +
    "\002\061\002\000\002\061\003\000\002\060\003\000\002" +
    "\060\005\000\002\023\002\000\002\023\004\000\002\063" +
    "\002\000\002\063\003\000\002\071\003\000\002\071\004" +
    "\000\002\025\003\000\002\025\003\000\002\050\007\000" +
    "\002\050\007\000\002\064\002\000\002\064\004\000\002" +
    "\072\003\000\002\072\005\000\002\033\003\000\002\052" +
    "\005\000\002\051\006\000\002\051\006\000\002\034\003" +
    "\000\002\003\007\000\002\003\007\000\002\057\002\000" +
    "\002\057\004\000\002\066\002\000\002\066\003\000\002" +
    "\035\003\000\002\035\003\000\002\035\003\000\002\035" +
    "\003\000\002\035\003\000\002\100\003\000\002\100\006" +
    "\000\002\065\005\000\002\054\002\000\002\054\003\000" +
    "\002\073\003\000\002\073\005\000\002\055\003\000\002" +
    "\032\003\000\002\012\003\000\002\062\005\000\002\053" +
    "\002\000\002\053\003\000\002\074\003\000\002\074\005" +
    "\000\002\027\003" });

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

  /** Parse-action table. */
  protected static final short[][] _action_table =
    unpackFromStrings(new String[] {
    "\000\317\000\010\036\uffac\044\005\045\007\001\002\000" +
    "\004\002\uffb1\001\002\000\006\024\274\037\272\001\002" +
    "\000\004\002\266\001\002\000\042\007\055\010\033\014" +
    "\044\026\026\027\061\033\035\056\032\060\031\062\053" +
    "\064\022\070\042\071\034\072\050\073\037\074\045\075" +
    "\036\001\002\000\004\036\011\001\002\000\046\007\uff91" +
    "\010\uff91\014\uff91\020\uffaa\025\015\026\uff91\027\uff91\033" +
    "\uff91\056\uff91\060\uff91\062\uff91\064\uff91\070\uff91\071\uff91" +
    "\072\uff91\073\uff91\074\uff91\075\uff91\001\002\000\004\020" +
    "\237\001\002\000\042\007\055\010\033\014\044\026\026" +
    "\027\061\033\035\056\032\060\031\062\053\064\022\070" +
    "\042\071\034\072\050\073\037\074\045\075\036\001\002" +
    "\000\006\020\uffa8\050\020\001\002\000\004\016\017\001" +
    "\002\000\004\020\uffa9\001\002\000\042\007\uff90\010\uff90" +
    "\014\uff90\026\uff90\027\uff90\033\uff90\056\uff90\060\uff90\062" +
    "\uff90\064\uff90\070\uff90\071\uff90\072\uff90\073\uff90\074\uff90" +
    "\075\uff90\001\002\000\044\007\uff91\010\uff91\014\uff91\025" +
    "\015\026\uff91\027\uff91\033\uff91\056\uff91\060\uff91\062\uff91" +
    "\064\uff91\070\uff91\071\uff91\072\uff91\073\uff91\074\uff91\075" +
    "\uff91\001\002\000\004\020\uffa7\001\002\000\034\007\055" +
    "\010\033\014\044\027\061\033\035\056\032\060\031\070" +
    "\042\071\034\072\050\073\037\074\045\075\036\001\002" +
    "\000\114\002\uffd2\004\uffd2\005\uffd2\011\uffd2\014\uffd2\015" +
    "\uffd2\017\uffd2\021\uffd2\022\uffd2\023\uffd2\024\uffd2\026\uffd2" +
    "\030\uffd2\031\uffd2\033\uffd2\036\uffd2\037\uffd2\040\uffd2\041" +
    "\uffd2\043\uffd2\046\uffd2\047\uffd2\050\uffd2\051\uffd2\052\uffd2" +
    "\053\uffd2\054\uffd2\055\uffd2\057\uffd2\060\233\061\uffd2\062" +
    "\uffd2\063\uffd2\064\uffd2\065\uffd2\066\uffd2\067\uffd2\001\002" +
    "\000\112\002\uffc8\004\uffc8\005\uffc8\011\uffc8\014\uffc8\015" +
    "\uffc8\017\uffc8\021\uffc8\022\uffc8\023\uffc8\024\uffc8\026\uffc8" +
    "\030\uffc8\031\uffc8\033\uffc8\036\uffc8\037\uffc8\040\uffc8\041" +
    "\uffc8\043\uffc8\046\uffc8\047\uffc8\050\uffc8\051\uffc8\052\uffc8" +
    "\053\uffc8\054\uffc8\055\uffc8\057\uffc8\061\uffc8\062\uffc8\063" +
    "\uffc8\064\uffc8\065\uffc8\066\uffc8\067\uffc8\001\002\000\122" +
    "\002\ufff9\004\ufff9\005\ufff9\011\ufff9\014\ufff9\015\ufff9\017" +
    "\ufff9\021\ufff9\022\ufff9\023\ufff9\024\ufff9\026\ufff9\030\ufff9" +
    "\031\ufff9\033\ufff9\036\ufff9\037\ufff9\040\ufff9\041\ufff9\042" +
    "\ufff9\043\ufff9\046\ufff9\047\ufff9\050\ufff9\051\ufff9\052\ufff9" +
    "\053\ufff9\054\ufff9\055\ufff9\057\ufff9\060\ufff9\061\ufff9\062" +
    "\ufff9\063\ufff9\064\ufff9\065\ufff9\066\ufff9\067\ufff9\073\ufff9" +
    "\074\ufff9\001\002\000\042\007\055\010\033\014\044\026" +
    "\026\027\061\033\035\056\032\060\031\062\053\064\022" +
    "\070\042\071\034\072\050\073\037\074\045\075\036\001" +
    "\002\000\122\002\ufffc\004\ufffc\005\ufffc\011\ufffc\014\ufffc" +
    "\015\ufffc\017\ufffc\021\ufffc\022\ufffc\023\ufffc\024\ufffc\026" +
    "\ufffc\030\ufffc\031\ufffc\033\ufffc\036\ufffc\037\ufffc\040\ufffc" +
    "\041\ufffc\042\ufffc\043\ufffc\046\ufffc\047\ufffc\050\ufffc\051" +
    "\ufffc\052\ufffc\053\ufffc\054\ufffc\055\ufffc\057\ufffc\060\ufffc" +
    "\061\ufffc\062\ufffc\063\ufffc\064\ufffc\065\ufffc\066\ufffc\067" +
    "\ufffc\073\ufffc\074\ufffc\001\002\000\116\002\ufff4\004\ufff4" +
    "\005\ufff4\011\ufff4\014\ufff4\015\ufff4\017\ufff4\021\ufff4\022" +
    "\ufff4\023\ufff4\024\ufff4\026\ufff4\030\ufff4\031\ufff4\033\ufff4" +
    "\036\ufff4\037\ufff4\040\ufff4\041\ufff4\042\ufff4\043\ufff4\046" +
    "\ufff4\047\ufff4\050\ufff4\051\ufff4\052\ufff4\053\ufff4\054\ufff4" +
    "\055\ufff4\057\ufff4\060\ufff4\061\ufff4\062\ufff4\063\ufff4\064" +
    "\ufff4\065\ufff4\066\ufff4\067\ufff4\001\002\000\044\007\055" +
    "\010\033\014\044\026\026\027\061\033\035\050\uffb6\056" +
    "\032\060\031\062\053\064\022\070\042\071\034\072\050" +
    "\073\037\074\045\075\036\001\002\000\046\007\055\010" +
    "\033\014\044\026\026\027\061\033\035\050\uffb6\056\032" +
    "\060\031\062\053\064\022\065\uffb5\070\042\071\034\072" +
    "\050\073\037\074\045\075\036\001\002\000\004\060\221" +
    "\001\002\000\116\002\uffff\004\uffff\005\uffff\011\uffff\014" +
    "\uffff\015\uffff\017\uffff\021\uffff\022\uffff\023\uffff\024\uffff" +
    "\026\uffff\030\uffff\031\uffff\033\uffff\036\uffff\037\uffff\040" +
    "\uffff\041\uffff\042\uffff\043\uffff\046\uffff\047\uffff\050\uffff" +
    "\051\uffff\052\uffff\053\uffff\054\uffff\055\uffff\057\uffff\060" +
    "\uffff\061\uffff\062\uffff\063\uffff\064\uffff\065\uffff\066\uffff" +
    "\067\uffff\001\002\000\116\002\ufff2\004\ufff2\005\ufff2\011" +
    "\ufff2\014\ufff2\015\ufff2\017\ufff2\021\ufff2\022\ufff2\023\ufff2" +
    "\024\ufff2\026\ufff2\030\ufff2\031\ufff2\033\ufff2\036\ufff2\037" +
    "\ufff2\040\ufff2\041\ufff2\042\ufff2\043\ufff2\046\ufff2\047\ufff2" +
    "\050\ufff2\051\ufff2\052\ufff2\053\ufff2\054\ufff2\055\ufff2\057" +
    "\ufff2\060\ufff2\061\ufff2\062\ufff2\063\ufff2\064\ufff2\065\ufff2" +
    "\066\ufff2\067\ufff2\001\002\000\112\002\uffd4\004\uffd4\005" +
    "\uffd4\011\uffd4\014\uffd4\015\uffd4\017\uffd4\021\uffd4\022\uffd4" +
    "\023\uffd4\024\uffd4\026\uffd4\030\uffd4\031\uffd4\033\uffd4\036" +
    "\uffd4\037\uffd4\040\uffd4\041\uffd4\043\uffd4\046\uffd4\047\uffd4" +
    "\050\uffd4\051\uffd4\052\uffd4\053\uffd4\054\uffd4\055\uffd4\057" +
    "\uffd4\061\uffd4\062\uffd4\063\uffd4\064\uffd4\065\uffd4\066\uffd4" +
    "\067\uffd4\001\002\000\122\002\ufff8\004\ufff8\005\ufff8\011" +
    "\ufff8\014\ufff8\015\ufff8\017\ufff8\021\ufff8\022\ufff8\023\ufff8" +
    "\024\ufff8\026\ufff8\030\ufff8\031\ufff8\033\ufff8\036\ufff8\037" +
    "\ufff8\040\ufff8\041\ufff8\042\ufff8\043\ufff8\046\ufff8\047\ufff8" +
    "\050\ufff8\051\ufff8\052\ufff8\053\ufff8\054\ufff8\055\ufff8\057" +
    "\ufff8\060\ufff8\061\ufff8\062\ufff8\063\ufff8\064\ufff8\065\ufff8" +
    "\066\ufff8\067\ufff8\073\ufff8\074\ufff8\001\002\000\012\014" +
    "\170\030\uff8f\033\uff85\047\077\001\002\000\040\002\uffb8" +
    "\005\uffb8\011\uffb8\014\uffb8\024\uffb8\030\uffb8\031\101\033" +
    "\uffb8\036\uffb8\037\uffb8\043\102\047\uffb8\050\uffb8\065\uffb8" +
    "\066\uffb8\001\002\000\112\002\uffd3\004\uffd3\005\uffd3\011" +
    "\uffd3\014\uffd3\015\uffd3\017\uffd3\021\uffd3\022\uffd3\023\uffd3" +
    "\024\uffd3\026\uffd3\030\uffd3\031\uffd3\033\uffd3\036\uffd3\037" +
    "\uffd3\040\uffd3\041\uffd3\043\uffd3\046\uffd3\047\uffd3\050\uffd3" +
    "\051\uffd3\052\uffd3\053\uffd3\054\uffd3\055\uffd3\057\uffd3\061" +
    "\uffd3\062\uffd3\063\uffd3\064\uffd3\065\uffd3\066\uffd3\067\uffd3" +
    "\001\002\000\110\002\uffda\004\uffda\005\uffda\011\uffda\014" +
    "\uffda\015\uffda\017\uffda\021\uffda\022\uffda\023\uffda\024\uffda" +
    "\026\uffda\030\uffda\031\uffda\033\uffda\036\uffda\037\uffda\040" +
    "\uffda\041\uffda\043\uffda\046\uffda\047\uffda\050\uffda\051\uffda" +
    "\053\uffda\054\uffda\055\uffda\057\uffda\061\uffda\062\uffda\063" +
    "\uffda\064\uffda\065\uffda\066\uffda\067\uffda\001\002\000\116" +
    "\002\ufff3\004\ufff3\005\ufff3\011\ufff3\014\ufff3\015\ufff3\017" +
    "\ufff3\021\ufff3\022\ufff3\023\ufff3\024\ufff3\026\ufff3\030\ufff3" +
    "\031\ufff3\033\ufff3\036\ufff3\037\ufff3\040\ufff3\041\ufff3\042" +
    "\ufff3\043\ufff3\046\ufff3\047\ufff3\050\ufff3\051\ufff3\052\ufff3" +
    "\053\ufff3\054\ufff3\055\ufff3\057\ufff3\060\ufff3\061\ufff3\062" +
    "\ufff3\063\ufff3\064\ufff3\065\ufff3\066\ufff3\067\ufff3\001\002" +
    "\000\122\002\ufff7\004\ufff7\005\ufff7\011\ufff7\014\ufff7\015" +
    "\ufff7\017\ufff7\021\ufff7\022\ufff7\023\ufff7\024\ufff7\026\ufff7" +
    "\030\ufff7\031\ufff7\033\ufff7\036\ufff7\037\ufff7\040\ufff7\041" +
    "\ufff7\042\ufff7\043\ufff7\046\ufff7\047\ufff7\050\ufff7\051\ufff7" +
    "\052\ufff7\053\ufff7\054\ufff7\055\ufff7\057\ufff7\060\ufff7\061" +
    "\ufff7\062\ufff7\063\ufff7\064\ufff7\065\ufff7\066\ufff7\067\ufff7" +
    "\073\ufff7\074\ufff7\001\002\000\110\002\uffde\004\uffde\005" +
    "\uffde\011\uffde\014\uffde\015\uffde\017\uffde\021\uffde\022\uffde" +
    "\023\uffde\024\uffde\026\uffde\030\uffde\031\uffde\033\uffde\036" +
    "\uffde\037\uffde\040\uffde\041\uffde\043\uffde\046\116\047\uffde" +
    "\050\uffde\051\uffde\053\uffde\054\uffde\055\uffde\057\uffde\061" +
    "\uffde\062\uffde\063\uffde\064\uffde\065\uffde\066\uffde\067\117" +
    "\001\002\000\122\002\ufffd\004\ufffd\005\ufffd\011\ufffd\014" +
    "\ufffd\015\ufffd\017\ufffd\021\ufffd\022\ufffd\023\ufffd\024\ufffd" +
    "\026\ufffd\030\ufffd\031\ufffd\033\ufffd\036\ufffd\037\ufffd\040" +
    "\ufffd\041\ufffd\042\ufffd\043\ufffd\046\ufffd\047\ufffd\050\ufffd" +
    "\051\ufffd\052\ufffd\053\ufffd\054\ufffd\055\ufffd\057\ufffd\060" +
    "\ufffd\061\ufffd\062\ufffd\063\ufffd\064\ufffd\065\ufffd\066\ufffd" +
    "\067\ufffd\073\037\074\045\001\002\000\116\002\000\004" +
    "\000\005\000\011\000\014\000\015\000\017\000\021\000" +
    "\022\000\023\000\024\000\026\000\030\000\031\000\033" +
    "\000\036\000\037\000\040\000\041\000\042\000\043\000" +
    "\046\000\047\000\050\000\051\000\052\000\053\000\054" +
    "\000\055\000\057\000\060\000\061\000\062\000\063\000" +
    "\064\000\065\000\066\000\067\000\001\002\000\052\002" +
    "\uffee\004\104\005\uffee\011\uffee\014\uffee\015\uffee\017\uffee" +
    "\024\uffee\030\uffee\031\uffee\033\uffee\036\uffee\037\uffee\040" +
    "\uffee\041\uffee\043\uffee\047\uffee\050\uffee\065\uffee\066\uffee" +
    "\001\002\000\052\002\uffeb\004\uffeb\005\uffeb\011\uffeb\014" +
    "\uffeb\015\uffeb\017\uffeb\024\uffeb\030\uffeb\031\uffeb\033\uffeb" +
    "\036\uffeb\037\uffeb\040\uffeb\041\uffeb\043\uffeb\047\uffeb\050" +
    "\uffeb\065\uffeb\066\uffeb\001\002\000\034\007\055\010\033" +
    "\014\044\027\061\033\035\056\032\060\031\070\042\071" +
    "\034\072\050\073\037\074\045\075\036\001\002\000\076" +
    "\002\uffe9\004\uffe9\005\uffe9\011\uffe9\014\uffe9\015\uffe9\017" +
    "\uffe9\021\140\022\152\023\150\024\uffe9\026\146\030\uffe9" +
    "\031\uffe9\033\uffe9\036\uffe9\037\uffe9\040\uffe9\041\uffe9\043" +
    "\uffe9\047\uffe9\050\uffe9\053\143\054\142\055\145\057\144" +
    "\061\151\063\147\065\uffe9\066\uffe9\001\002\000\050\007" +
    "\055\010\033\014\044\015\uffc6\017\uffc6\026\026\027\061" +
    "\033\035\041\uffc6\056\032\060\031\062\053\064\022\070" +
    "\042\071\034\072\050\073\037\074\045\075\036\001\002" +
    "\000\104\002\uffe7\004\uffe7\005\uffe7\011\uffe7\014\uffe7\015" +
    "\uffe7\017\uffe7\021\uffe7\022\uffe7\023\uffe7\024\uffe7\026\uffe7" +
    "\030\uffe7\031\uffe7\033\uffe7\036\uffe7\037\uffe7\040\uffe7\041" +
    "\uffe7\043\uffe7\047\uffe7\050\uffe7\051\113\053\uffe7\054\uffe7" +
    "\055\uffe7\057\uffe7\061\uffe7\062\114\063\uffe7\064\112\065" +
    "\uffe7\066\uffe7\001\002\000\112\002\uffd7\004\uffd7\005\uffd7" +
    "\011\uffd7\014\uffd7\015\uffd7\017\uffd7\021\uffd7\022\uffd7\023" +
    "\uffd7\024\uffd7\026\uffd7\030\uffd7\031\uffd7\033\uffd7\036\uffd7" +
    "\037\uffd7\040\uffd7\041\uffd7\043\uffd7\046\uffd7\047\uffd7\050" +
    "\uffd7\051\uffd7\052\065\053\uffd7\054\uffd7\055\uffd7\057\uffd7" +
    "\061\uffd7\062\uffd7\063\uffd7\064\uffd7\065\uffd7\066\uffd7\067" +
    "\uffd7\001\002\000\122\002\ufffa\004\ufffa\005\ufffa\011\ufffa" +
    "\014\ufffa\015\ufffa\017\ufffa\021\ufffa\022\ufffa\023\ufffa\024" +
    "\ufffa\026\ufffa\030\ufffa\031\ufffa\033\ufffa\036\ufffa\037\ufffa" +
    "\040\ufffa\041\ufffa\042\ufffa\043\ufffa\046\ufffa\047\ufffa\050" +
    "\ufffa\051\ufffa\052\ufffa\053\ufffa\054\ufffa\055\ufffa\057\ufffa" +
    "\060\ufffa\061\ufffa\062\ufffa\063\ufffa\064\ufffa\065\ufffa\066" +
    "\ufffa\067\ufffa\073\ufffa\074\ufffa\001\002\000\112\002\uffc9" +
    "\004\uffc9\005\uffc9\011\uffc9\014\uffc9\015\uffc9\017\uffc9\021" +
    "\uffc9\022\uffc9\023\uffc9\024\uffc9\026\uffc9\030\uffc9\031\uffc9" +
    "\033\uffc9\036\uffc9\037\uffc9\040\uffc9\041\uffc9\043\uffc9\046" +
    "\uffc9\047\uffc9\050\uffc9\051\uffc9\052\uffc9\053\uffc9\054\uffc9" +
    "\055\uffc9\057\uffc9\061\uffc9\062\uffc9\063\uffc9\064\uffc9\065" +
    "\uffc9\066\uffc9\067\uffc9\001\002\000\116\002\ufffe\004\ufffe" +
    "\005\ufffe\011\ufffe\014\ufffe\015\ufffe\017\ufffe\021\ufffe\022" +
    "\ufffe\023\ufffe\024\ufffe\026\ufffe\030\ufffe\031\ufffe\033\ufffe" +
    "\036\ufffe\037\ufffe\040\ufffe\041\ufffe\042\ufffe\043\ufffe\046" +
    "\ufffe\047\ufffe\050\ufffe\051\ufffe\052\ufffe\053\ufffe\054\ufffe" +
    "\055\ufffe\057\ufffe\060\ufffe\061\ufffe\062\ufffe\063\ufffe\064" +
    "\ufffe\065\ufffe\066\ufffe\067\ufffe\001\002\000\116\002\ufff6" +
    "\004\ufff6\005\ufff6\011\ufff6\014\ufff6\015\ufff6\017\ufff6\021" +
    "\ufff6\022\ufff6\023\ufff6\024\ufff6\026\ufff6\030\ufff6\031\ufff6" +
    "\033\ufff6\036\ufff6\037\ufff6\040\ufff6\041\ufff6\042\ufff6\043" +
    "\ufff6\046\ufff6\047\ufff6\050\ufff6\051\ufff6\052\ufff6\053\ufff6" +
    "\054\ufff6\055\ufff6\057\ufff6\060\ufff6\061\ufff6\062\ufff6\063" +
    "\ufff6\064\ufff6\065\ufff6\066\ufff6\067\ufff6\001\002\000\116" +
    "\002\ufff5\004\ufff5\005\ufff5\011\ufff5\014\ufff5\015\ufff5\017" +
    "\ufff5\021\ufff5\022\ufff5\023\ufff5\024\ufff5\026\ufff5\030\ufff5" +
    "\031\ufff5\033\ufff5\036\ufff5\037\ufff5\040\ufff5\041\ufff5\042" +
    "\ufff5\043\ufff5\046\ufff5\047\ufff5\050\ufff5\051\ufff5\052\ufff5" +
    "\053\ufff5\054\ufff5\055\ufff5\057\ufff5\060\ufff5\061\ufff5\062" +
    "\ufff5\063\ufff5\064\ufff5\065\ufff5\066\ufff5\067\ufff5\001\002" +
    "\000\016\014\044\033\035\071\034\072\050\073\037\074" +
    "\045\001\002\000\004\060\072\001\002\000\114\002\uffd1" +
    "\004\uffd1\005\uffd1\011\uffd1\014\uffd1\015\uffd1\017\uffd1\021" +
    "\uffd1\022\uffd1\023\uffd1\024\uffd1\026\uffd1\030\uffd1\031\uffd1" +
    "\033\uffd1\036\uffd1\037\uffd1\040\uffd1\041\uffd1\043\uffd1\046" +
    "\uffd1\047\uffd1\050\uffd1\051\uffd1\052\uffd1\053\uffd1\054\uffd1" +
    "\055\uffd1\057\uffd1\060\ufff6\061\uffd1\062\uffd1\063\uffd1\064" +
    "\uffd1\065\uffd1\066\uffd1\067\uffd1\001\002\000\114\002\uffd0" +
    "\004\uffd0\005\uffd0\011\uffd0\014\uffd0\015\uffd0\017\uffd0\021" +
    "\uffd0\022\uffd0\023\uffd0\024\uffd0\026\uffd0\030\uffd0\031\uffd0" +
    "\033\uffd0\036\uffd0\037\uffd0\040\uffd0\041\uffd0\043\uffd0\046" +
    "\uffd0\047\uffd0\050\uffd0\051\uffd0\052\uffd0\053\uffd0\054\uffd0" +
    "\055\uffd0\057\uffd0\060\ufff5\061\uffd0\062\uffd0\063\uffd0\064" +
    "\uffd0\065\uffd0\066\uffd0\067\uffd0\001\002\000\114\002\uffcf" +
    "\004\uffcf\005\uffcf\011\uffcf\014\uffcf\015\uffcf\017\uffcf\021" +
    "\uffcf\022\uffcf\023\uffcf\024\uffcf\026\uffcf\030\uffcf\031\uffcf" +
    "\033\uffcf\036\uffcf\037\uffcf\040\uffcf\041\uffcf\043\uffcf\046" +
    "\uffcf\047\uffcf\050\uffcf\051\uffcf\052\uffcf\053\uffcf\054\uffcf" +
    "\055\uffcf\057\uffcf\060\ufff4\061\uffcf\062\uffcf\063\uffcf\064" +
    "\uffcf\065\uffcf\066\uffcf\067\uffcf\001\002\000\046\007\055" +
    "\010\033\014\044\026\026\027\061\033\035\050\uffb6\056" +
    "\032\060\031\062\053\064\022\066\uffb5\070\042\071\034" +
    "\072\050\073\037\074\045\075\036\001\002\000\004\066" +
    "\111\001\002\000\004\050\107\001\002\000\006\065\uffb4" +
    "\066\uffb4\001\002\000\012\047\077\050\uffb7\065\uffb3\066" +
    "\uffb3\001\002\000\042\007\055\010\033\014\044\026\026" +
    "\027\061\033\035\056\032\060\031\062\053\064\022\070" +
    "\042\071\034\072\050\073\037\074\045\075\036\001\002" +
    "\000\040\002\uffb9\005\uffb9\011\uffb9\014\uffb9\024\uffb9\030" +
    "\uffb9\031\101\033\uffb9\036\uffb9\037\uffb9\043\102\047\uffb9" +
    "\050\uffb9\065\uffb9\066\uffb9\001\002\000\042\007\055\010" +
    "\033\014\044\026\026\027\061\033\035\056\032\060\031" +
    "\062\053\064\022\070\042\071\034\072\050\073\037\074" +
    "\045\075\036\001\002\000\042\007\055\010\033\014\044" +
    "\026\026\027\061\033\035\056\032\060\031\062\053\064" +
    "\022\070\042\071\034\072\050\073\037\074\045\075\036" +
    "\001\002\000\052\002\uffec\004\104\005\uffec\011\uffec\014" +
    "\uffec\015\uffec\017\uffec\024\uffec\030\uffec\031\uffec\033\uffec" +
    "\036\uffec\037\uffec\040\uffec\041\uffec\043\uffec\047\uffec\050" +
    "\uffec\065\uffec\066\uffec\001\002\000\042\007\055\010\033" +
    "\014\044\026\026\027\061\033\035\056\032\060\031\062" +
    "\053\064\022\070\042\071\034\072\050\073\037\074\045" +
    "\075\036\001\002\000\052\002\uffea\004\uffea\005\uffea\011" +
    "\uffea\014\uffea\015\uffea\017\uffea\024\uffea\030\uffea\031\uffea" +
    "\033\uffea\036\uffea\037\uffea\040\uffea\041\uffea\043\uffea\047" +
    "\uffea\050\uffea\065\uffea\066\uffea\001\002\000\052\002\uffed" +
    "\004\104\005\uffed\011\uffed\014\uffed\015\uffed\017\uffed\024" +
    "\uffed\030\uffed\031\uffed\033\uffed\036\uffed\037\uffed\040\uffed" +
    "\041\uffed\043\uffed\047\uffed\050\uffed\065\uffed\066\uffed\001" +
    "\002\000\044\007\055\010\033\014\044\026\026\027\061" +
    "\033\035\050\uffb6\056\032\060\031\062\053\064\022\070" +
    "\042\071\034\072\050\073\037\074\045\075\036\001\002" +
    "\000\006\065\uffb2\066\uffb2\001\002\000\112\002\uffce\004" +
    "\uffce\005\uffce\011\uffce\014\uffce\015\uffce\017\uffce\021\uffce" +
    "\022\uffce\023\uffce\024\uffce\026\uffce\030\uffce\031\uffce\033" +
    "\uffce\036\uffce\037\uffce\040\uffce\041\uffce\043\uffce\046\uffce" +
    "\047\uffce\050\uffce\051\uffce\052\uffce\053\uffce\054\uffce\055" +
    "\uffce\057\uffce\061\uffce\062\uffce\063\uffce\064\uffce\065\uffce" +
    "\066\uffce\067\uffce\001\002\000\040\007\055\010\033\014" +
    "\044\027\061\033\035\056\032\060\031\062\053\064\022" +
    "\070\042\071\034\072\050\073\037\074\045\075\036\001" +
    "\002\000\040\007\055\010\033\014\044\027\061\033\035" +
    "\056\032\060\031\062\053\064\022\070\042\071\034\072" +
    "\050\073\037\074\045\075\036\001\002\000\040\007\055" +
    "\010\033\014\044\027\061\033\035\056\032\060\031\062" +
    "\053\064\022\070\042\071\034\072\050\073\037\074\045" +
    "\075\036\001\002\000\110\002\uffdc\004\uffdc\005\uffdc\011" +
    "\uffdc\014\uffdc\015\uffdc\017\uffdc\021\uffdc\022\uffdc\023\uffdc" +
    "\024\uffdc\026\uffdc\030\uffdc\031\uffdc\033\uffdc\036\uffdc\037" +
    "\uffdc\040\uffdc\041\uffdc\043\uffdc\046\116\047\uffdc\050\uffdc" +
    "\051\uffdc\053\uffdc\054\uffdc\055\uffdc\057\uffdc\061\uffdc\062" +
    "\uffdc\063\uffdc\064\uffdc\065\uffdc\066\uffdc\067\117\001\002" +
    "\000\040\007\055\010\033\014\044\027\061\033\035\056" +
    "\032\060\031\062\053\064\022\070\042\071\034\072\050" +
    "\073\037\074\045\075\036\001\002\000\040\007\055\010" +
    "\033\014\044\027\061\033\035\056\032\060\031\062\053" +
    "\064\022\070\042\071\034\072\050\073\037\074\045\075" +
    "\036\001\002\000\110\002\uffd8\004\uffd8\005\uffd8\011\uffd8" +
    "\014\uffd8\015\uffd8\017\uffd8\021\uffd8\022\uffd8\023\uffd8\024" +
    "\uffd8\026\uffd8\030\uffd8\031\uffd8\033\uffd8\036\uffd8\037\uffd8" +
    "\040\uffd8\041\uffd8\043\uffd8\046\uffd8\047\uffd8\050\uffd8\051" +
    "\uffd8\053\uffd8\054\uffd8\055\uffd8\057\uffd8\061\uffd8\062\uffd8" +
    "\063\uffd8\064\uffd8\065\uffd8\066\uffd8\067\uffd8\001\002\000" +
    "\110\002\uffd9\004\uffd9\005\uffd9\011\uffd9\014\uffd9\015\uffd9" +
    "\017\uffd9\021\uffd9\022\uffd9\023\uffd9\024\uffd9\026\uffd9\030" +
    "\uffd9\031\uffd9\033\uffd9\036\uffd9\037\uffd9\040\uffd9\041\uffd9" +
    "\043\uffd9\046\uffd9\047\uffd9\050\uffd9\051\uffd9\053\uffd9\054" +
    "\uffd9\055\uffd9\057\uffd9\061\uffd9\062\uffd9\063\uffd9\064\uffd9" +
    "\065\uffd9\066\uffd9\067\uffd9\001\002\000\110\002\uffdb\004" +
    "\uffdb\005\uffdb\011\uffdb\014\uffdb\015\uffdb\017\uffdb\021\uffdb" +
    "\022\uffdb\023\uffdb\024\uffdb\026\uffdb\030\uffdb\031\uffdb\033" +
    "\uffdb\036\uffdb\037\uffdb\040\uffdb\041\uffdb\043\uffdb\046\116" +
    "\047\uffdb\050\uffdb\051\uffdb\053\uffdb\054\uffdb\055\uffdb\057" +
    "\uffdb\061\uffdb\062\uffdb\063\uffdb\064\uffdb\065\uffdb\066\uffdb" +
    "\067\117\001\002\000\110\002\uffdd\004\uffdd\005\uffdd\011" +
    "\uffdd\014\uffdd\015\uffdd\017\uffdd\021\uffdd\022\uffdd\023\uffdd" +
    "\024\uffdd\026\uffdd\030\uffdd\031\uffdd\033\uffdd\036\uffdd\037" +
    "\uffdd\040\uffdd\041\uffdd\043\uffdd\046\116\047\uffdd\050\uffdd" +
    "\051\uffdd\053\uffdd\054\uffdd\055\uffdd\057\uffdd\061\uffdd\062" +
    "\uffdd\063\uffdd\064\uffdd\065\uffdd\066\uffdd\067\117\001\002" +
    "\000\014\015\uffc5\017\uffc5\031\101\041\uffc5\043\102\001" +
    "\002\000\010\015\uffc4\017\uffc4\041\uffc4\001\002\000\010" +
    "\015\130\017\uffc1\041\131\001\002\000\004\017\137\001" +
    "\002\000\042\007\055\010\033\014\044\026\026\027\061" +
    "\033\035\056\032\060\031\062\053\064\022\070\042\071" +
    "\034\072\050\073\037\074\045\075\036\001\002\000\042" +
    "\007\055\010\033\014\044\026\026\027\061\033\035\056" +
    "\032\060\031\062\053\064\022\070\042\071\034\072\050" +
    "\073\037\074\045\075\036\001\002\000\010\015\uffc3\017" +
    "\uffc3\041\uffc3\001\002\000\010\031\101\040\134\043\102" +
    "\001\002\000\042\007\055\010\033\014\044\026\026\027" +
    "\061\033\035\056\032\060\031\062\053\064\022\070\042" +
    "\071\034\072\050\073\037\074\045\075\036\001\002\000" +
    "\014\015\uffc2\017\uffc2\031\101\041\uffc2\043\102\001\002" +
    "\000\010\017\uffc0\031\101\043\102\001\002\000\112\002" +
    "\uffc7\004\uffc7\005\uffc7\011\uffc7\014\uffc7\015\uffc7\017\uffc7" +
    "\021\uffc7\022\uffc7\023\uffc7\024\uffc7\026\uffc7\030\uffc7\031" +
    "\uffc7\033\uffc7\036\uffc7\037\uffc7\040\uffc7\041\uffc7\043\uffc7" +
    "\046\uffc7\047\uffc7\050\uffc7\051\uffc7\052\uffc7\053\uffc7\054" +
    "\uffc7\055\uffc7\057\uffc7\061\uffc7\062\uffc7\063\uffc7\064\uffc7" +
    "\065\uffc7\066\uffc7\067\uffc7\001\002\000\040\007\055\010" +
    "\033\014\044\027\061\033\035\056\032\060\031\062\053" +
    "\064\022\070\042\071\034\072\050\073\037\074\045\075" +
    "\036\001\002\000\040\007\055\010\033\014\044\027\061" +
    "\033\035\056\032\060\031\062\053\064\022\070\042\071" +
    "\034\072\050\073\037\074\045\075\036\001\002\000\040" +
    "\007\uffba\010\uffba\014\uffba\027\uffba\033\uffba\056\uffba\060" +
    "\uffba\062\uffba\064\uffba\070\uffba\071\uffba\072\uffba\073\uffba" +
    "\074\uffba\075\uffba\001\002\000\040\007\uffbf\010\uffbf\014" +
    "\uffbf\027\uffbf\033\uffbf\056\uffbf\060\uffbf\062\uffbf\064\uffbf" +
    "\070\uffbf\071\uffbf\072\uffbf\073\uffbf\074\uffbf\075\uffbf\001" +
    "\002\000\040\007\uffbb\010\uffbb\014\uffbb\027\uffbb\033\uffbb" +
    "\056\uffbb\060\uffbb\062\uffbb\064\uffbb\070\uffbb\071\uffbb\072" +
    "\uffbb\073\uffbb\074\uffbb\075\uffbb\001\002\000\040\007\uffbc" +
    "\010\uffbc\014\uffbc\027\uffbc\033\uffbc\056\uffbc\060\uffbc\062" +
    "\uffbc\064\uffbc\070\uffbc\071\uffbc\072\uffbc\073\uffbc\074\uffbc" +
    "\075\uffbc\001\002\000\006\021\157\023\160\001\002\000" +
    "\040\007\uffbe\010\uffbe\014\uffbe\027\uffbe\033\uffbe\056\uffbe" +
    "\060\uffbe\062\uffbe\064\uffbe\070\uffbe\071\uffbe\072\uffbe\073" +
    "\uffbe\074\uffbe\075\uffbe\001\002\000\040\007\055\010\033" +
    "\014\044\027\061\033\035\056\032\060\031\062\053\064" +
    "\022\070\042\071\034\072\050\073\037\074\045\075\036" +
    "\001\002\000\040\007\uffbd\010\uffbd\014\uffbd\027\uffbd\033" +
    "\uffbd\056\uffbd\060\uffbd\062\uffbd\064\uffbd\070\uffbd\071\uffbd" +
    "\072\uffbd\073\uffbd\074\uffbd\075\uffbd\001\002\000\042\007" +
    "\055\010\033\014\044\016\155\027\154\033\035\056\032" +
    "\060\031\062\053\064\022\070\042\071\034\072\050\073" +
    "\037\074\045\075\036\001\002\000\104\002\uffe4\004\uffe4" +
    "\005\uffe4\011\uffe4\014\uffe4\015\uffe4\017\uffe4\021\uffe4\022" +
    "\uffe4\023\uffe4\024\uffe4\026\uffe4\030\uffe4\031\uffe4\033\uffe4" +
    "\036\uffe4\037\uffe4\040\uffe4\041\uffe4\043\uffe4\047\uffe4\050" +
    "\uffe4\051\113\053\uffe4\054\uffe4\055\uffe4\057\uffe4\061\uffe4" +
    "\062\114\063\uffe4\064\112\065\uffe4\066\uffe4\001\002\000" +
    "\112\002\uffe5\004\uffe5\005\uffe5\011\uffe5\014\uffe5\015\uffe5" +
    "\017\uffe5\021\uffe5\022\uffe5\023\uffe5\024\uffe5\026\uffe5\030" +
    "\uffe5\031\uffe5\033\uffe5\036\uffe5\037\uffe5\040\uffe5\041\uffe5" +
    "\043\uffe5\046\uffc9\047\uffe5\050\uffe5\051\uffc9\052\uffc9\053" +
    "\uffe5\054\uffe5\055\uffe5\057\uffe5\061\uffe5\062\uffc9\063\uffe5" +
    "\064\uffc9\065\uffe5\066\uffe5\067\uffc9\001\002\000\076\002" +
    "\uffe3\004\uffe3\005\uffe3\011\uffe3\014\uffe3\015\uffe3\017\uffe3" +
    "\021\uffe3\022\uffe3\023\uffe3\024\uffe3\026\uffe3\030\uffe3\031" +
    "\uffe3\033\uffe3\036\uffe3\037\uffe3\040\uffe3\041\uffe3\043\uffe3" +
    "\047\uffe3\050\uffe3\053\uffe3\054\uffe3\055\uffe3\057\uffe3\061" +
    "\uffe3\063\uffe3\065\uffe3\066\uffe3\001\002\000\104\002\uffe2" +
    "\004\uffe2\005\uffe2\011\uffe2\014\uffe2\015\uffe2\017\uffe2\021" +
    "\uffe2\022\uffe2\023\uffe2\024\uffe2\026\uffe2\030\uffe2\031\uffe2" +
    "\033\uffe2\036\uffe2\037\uffe2\040\uffe2\041\uffe2\043\uffe2\047" +
    "\uffe2\050\uffe2\051\113\053\uffe2\054\uffe2\055\uffe2\057\uffe2" +
    "\061\uffe2\062\114\063\uffe2\064\112\065\uffe2\066\uffe2\001" +
    "\002\000\040\007\055\010\033\014\044\027\061\033\035" +
    "\056\032\060\031\062\053\064\022\070\042\071\034\072" +
    "\050\073\037\074\045\075\036\001\002\000\040\007\055" +
    "\010\033\014\044\027\061\033\035\056\032\060\031\062" +
    "\053\064\022\070\042\071\034\072\050\073\037\074\045" +
    "\075\036\001\002\000\104\002\uffe1\004\uffe1\005\uffe1\011" +
    "\uffe1\014\uffe1\015\uffe1\017\uffe1\021\uffe1\022\uffe1\023\uffe1" +
    "\024\uffe1\026\uffe1\030\uffe1\031\uffe1\033\uffe1\036\uffe1\037" +
    "\uffe1\040\uffe1\041\uffe1\043\uffe1\047\uffe1\050\uffe1\051\113" +
    "\053\uffe1\054\uffe1\055\uffe1\057\uffe1\061\uffe1\062\114\063" +
    "\uffe1\064\112\065\uffe1\066\uffe1\001\002\000\104\002\uffdf" +
    "\004\uffdf\005\uffdf\011\uffdf\014\uffdf\015\uffdf\017\uffdf\021" +
    "\uffdf\022\uffdf\023\uffdf\024\uffdf\026\uffdf\030\uffdf\031\uffdf" +
    "\033\uffdf\036\uffdf\037\uffdf\040\uffdf\041\uffdf\043\uffdf\047" +
    "\uffdf\050\uffdf\051\113\053\uffdf\054\uffdf\055\uffdf\057\uffdf" +
    "\061\uffdf\062\114\063\uffdf\064\112\065\uffdf\066\uffdf\001" +
    "\002\000\104\002\uffe6\004\uffe6\005\uffe6\011\uffe6\014\uffe6" +
    "\015\uffe6\017\uffe6\021\uffe6\022\uffe6\023\uffe6\024\uffe6\026" +
    "\uffe6\030\uffe6\031\uffe6\033\uffe6\036\uffe6\037\uffe6\040\uffe6" +
    "\041\uffe6\043\uffe6\047\uffe6\050\uffe6\051\113\053\uffe6\054" +
    "\uffe6\055\uffe6\057\uffe6\061\uffe6\062\114\063\uffe6\064\112" +
    "\065\uffe6\066\uffe6\001\002\000\104\002\uffe0\004\uffe0\005" +
    "\uffe0\011\uffe0\014\uffe0\015\uffe0\017\uffe0\021\uffe0\022\uffe0" +
    "\023\uffe0\024\uffe0\026\uffe0\030\uffe0\031\uffe0\033\uffe0\036" +
    "\uffe0\037\uffe0\040\uffe0\041\uffe0\043\uffe0\047\uffe0\050\uffe0" +
    "\051\113\053\uffe0\054\uffe0\055\uffe0\057\uffe0\061\uffe0\062" +
    "\114\063\uffe0\064\112\065\uffe0\066\uffe0\001\002\000\112" +
    "\002\uffd5\004\uffd5\005\uffd5\011\uffd5\014\uffd5\015\uffd5\017" +
    "\uffd5\021\uffd5\022\uffd5\023\uffd5\024\uffd5\026\uffd5\030\uffd5" +
    "\031\uffd5\033\uffd5\036\uffd5\037\uffd5\040\uffd5\041\uffd5\043" +
    "\uffd5\046\uffd5\047\uffd5\050\uffd5\051\uffd5\052\065\053\uffd5" +
    "\054\uffd5\055\uffd5\057\uffd5\061\uffd5\062\uffd5\063\uffd5\064" +
    "\uffd5\065\uffd5\066\uffd5\067\uffd5\001\002\000\122\002\ufffb" +
    "\004\ufffb\005\ufffb\011\ufffb\014\ufffb\015\ufffb\017\ufffb\021" +
    "\ufffb\022\ufffb\023\ufffb\024\ufffb\026\ufffb\030\ufffb\031\ufffb" +
    "\033\ufffb\036\ufffb\037\ufffb\040\ufffb\041\ufffb\042\ufffb\043" +
    "\ufffb\046\ufffb\047\ufffb\050\ufffb\051\ufffb\052\ufffb\053\ufffb" +
    "\054\ufffb\055\ufffb\057\ufffb\060\ufffb\061\ufffb\062\ufffb\063" +
    "\ufffb\064\ufffb\065\ufffb\066\ufffb\067\ufffb\073\ufffb\074\ufffb" +
    "\001\002\000\004\030\uff8e\001\002\000\004\033\uff84\001" +
    "\002\000\004\030\204\001\002\000\004\033\173\001\002" +
    "\000\016\014\044\033\035\071\034\072\050\073\037\074" +
    "\045\001\002\000\010\030\uff81\050\uff81\052\202\001\002" +
    "\000\024\002\ufff1\005\ufff1\011\ufff1\030\ufff1\033\ufff1\042" +
    "\ufff1\050\ufff1\052\ufff1\066\ufff1\001\002\000\006\030\uff83" +
    "\050\200\001\002\000\004\030\uff86\001\002\000\016\014" +
    "\044\033\035\071\034\072\050\073\037\074\045\001\002" +
    "\000\004\030\uff82\001\002\000\016\014\044\033\035\071" +
    "\034\072\050\073\037\074\045\001\002\000\024\002\ufff0" +
    "\005\ufff0\011\ufff0\030\ufff0\033\ufff0\042\ufff0\050\ufff0\052" +
    "\ufff0\066\ufff0\001\002\000\020\006\207\012\206\013\213" +
    "\032\214\034\215\035\205\070\210\001\002\000\006\020" +
    "\uff8a\050\uff8a\001\002\000\006\020\uff89\050\uff89\001\002" +
    "\000\004\060\216\001\002\000\006\020\uff88\050\uff88\001" +
    "\002\000\006\020\uff93\050\uff93\001\002\000\006\020\uff92" +
    "\050\uff92\001\002\000\006\020\uff8d\050\uff8d\001\002\000" +
    "\006\020\uff8b\050\uff8b\001\002\000\006\020\uff8c\050\uff8c" +
    "\001\002\000\004\070\217\001\002\000\004\066\220\001" +
    "\002\000\006\020\uff87\050\uff87\001\002\000\042\007\055" +
    "\010\033\014\044\026\026\027\061\033\035\056\032\060" +
    "\031\062\053\064\022\070\042\071\034\072\050\073\037" +
    "\074\045\075\036\001\002\000\006\005\223\047\077\001" +
    "\002\000\016\014\044\033\035\071\034\072\050\073\037" +
    "\074\045\001\002\000\004\066\225\001\002\000\112\002" +
    "\uffcc\004\uffcc\005\uffcc\011\uffcc\014\uffcc\015\uffcc\017\uffcc" +
    "\021\uffcc\022\uffcc\023\uffcc\024\uffcc\026\uffcc\030\uffcc\031" +
    "\uffcc\033\uffcc\036\uffcc\037\uffcc\040\uffcc\041\uffcc\043\uffcc" +
    "\046\uffcc\047\uffcc\050\uffcc\051\uffcc\052\uffcc\053\uffcc\054" +
    "\uffcc\055\uffcc\057\uffcc\061\uffcc\062\uffcc\063\uffcc\064\uffcc" +
    "\065\uffcc\066\uffcc\067\uffcc\001\002\000\004\065\227\001" +
    "\002\000\112\002\uffca\004\uffca\005\uffca\011\uffca\014\uffca" +
    "\015\uffca\017\uffca\021\uffca\022\uffca\023\uffca\024\uffca\026" +
    "\uffca\030\uffca\031\uffca\033\uffca\036\uffca\037\uffca\040\uffca" +
    "\041\uffca\043\uffca\046\uffca\047\uffca\050\uffca\051\uffca\052" +
    "\uffca\053\uffca\054\uffca\055\uffca\057\uffca\061\uffca\062\uffca" +
    "\063\uffca\064\uffca\065\uffca\066\uffca\067\uffca\001\002\000" +
    "\004\066\231\001\002\000\112\002\uffcb\004\uffcb\005\uffcb" +
    "\011\uffcb\014\uffcb\015\uffcb\017\uffcb\021\uffcb\022\uffcb\023" +
    "\uffcb\024\uffcb\026\uffcb\030\uffcb\031\uffcb\033\uffcb\036\uffcb" +
    "\037\uffcb\040\uffcb\041\uffcb\043\uffcb\046\uffcb\047\uffcb\050" +
    "\uffcb\051\uffcb\052\uffcb\053\uffcb\054\uffcb\055\uffcb\057\uffcb" +
    "\061\uffcb\062\uffcb\063\uffcb\064\uffcb\065\uffcb\066\uffcb\067" +
    "\uffcb\001\002\000\052\002\uffe8\004\uffe8\005\uffe8\011\uffe8" +
    "\014\uffe8\015\uffe8\017\uffe8\024\uffe8\030\uffe8\031\uffe8\033" +
    "\uffe8\036\uffe8\037\uffe8\040\uffe8\041\uffe8\043\uffe8\047\uffe8" +
    "\050\uffe8\065\uffe8\066\uffe8\001\002\000\046\007\055\010" +
    "\033\014\044\026\026\027\061\033\035\050\uffb6\056\032" +
    "\060\031\062\053\064\022\066\uffb5\070\042\071\034\072" +
    "\050\073\037\074\045\075\036\001\002\000\004\066\235" +
    "\001\002\000\112\002\uffcd\004\uffcd\005\uffcd\011\uffcd\014" +
    "\uffcd\015\uffcd\017\uffcd\021\uffcd\022\uffcd\023\uffcd\024\uffcd" +
    "\026\uffcd\030\uffcd\031\uffcd\033\uffcd\036\uffcd\037\uffcd\040" +
    "\uffcd\041\uffcd\043\uffcd\046\uffcd\047\uffcd\050\uffcd\051\uffcd" +
    "\052\uffcd\053\uffcd\054\uffcd\055\uffcd\057\uffcd\061\uffcd\062" +
    "\uffcd\063\uffcd\064\uffcd\065\uffcd\066\uffcd\067\uffcd\001\002" +
    "\000\112\002\uffd6\004\uffd6\005\uffd6\011\uffd6\014\uffd6\015" +
    "\uffd6\017\uffd6\021\uffd6\022\uffd6\023\uffd6\024\uffd6\026\uffd6" +
    "\030\uffd6\031\uffd6\033\uffd6\036\uffd6\037\uffd6\040\uffd6\041" +
    "\uffd6\043\uffd6\046\uffd6\047\uffd6\050\uffd6\051\uffd6\052\065" +
    "\053\uffd6\054\uffd6\055\uffd6\057\uffd6\061\uffd6\062\uffd6\063" +
    "\uffd6\064\uffd6\065\uffd6\066\uffd6\067\uffd6\001\002\000\020" +
    "\014\044\033\035\060\241\071\034\072\050\073\037\074" +
    "\045\001\002\000\016\002\uffef\011\uffef\033\uffef\042\uffef" +
    "\052\202\066\uffef\001\002\000\006\036\uffac\044\005\001" +
    "\002\000\014\002\uffa6\011\uffa6\033\uffa6\042\245\066\uffa6" +
    "\001\002\000\014\002\uffaf\011\uffaf\033\uffaf\042\uffaf\066" +
    "\uffaf\001\002\000\014\002\uff80\011\uff80\033\uff80\042\uff80" +
    "\066\uff80\001\002\000\042\007\055\010\033\014\044\026" +
    "\026\027\061\033\035\056\032\060\031\062\053\064\022" +
    "\070\042\071\034\072\050\073\037\074\045\075\036\001" +
    "\002\000\012\002\uffa4\011\252\033\uff7d\066\uffa4\001\002" +
    "\000\006\002\uffa3\066\uffa3\001\002\000\004\033\253\001" +
    "\002\000\006\002\uffad\066\uffad\001\002\000\004\033\uff7c" +
    "\001\002\000\016\014\044\033\035\071\034\072\050\073" +
    "\037\074\045\001\002\000\012\002\uff79\050\uff79\052\202" +
    "\066\uff79\001\002\000\006\002\uff7e\066\uff7e\001\002\000" +
    "\010\002\uff7b\050\257\066\uff7b\001\002\000\016\014\044" +
    "\033\035\071\034\072\050\073\037\074\045\001\002\000" +
    "\006\002\uff7a\066\uff7a\001\002\000\012\002\uffa5\011\uffa5" +
    "\033\uffa5\066\uffa5\001\002\000\014\002\uff7f\011\uff7f\033" +
    "\uff7f\047\077\066\uff7f\001\002\000\004\066\264\001\002" +
    "\000\014\002\uffae\011\uffae\033\uffae\042\uffae\066\uffae\001" +
    "\002\000\010\002\uffb0\031\101\043\102\001\002\000\004" +
    "\002\001\001\002\000\004\036\uffab\001\002\000\010\024" +
    "\uffa0\036\uffa0\037\uffa0\001\002\000\010\024\274\036\uffa2" +
    "\037\272\001\002\000\016\014\044\033\035\071\034\072" +
    "\050\073\037\074\045\001\002\000\010\024\uff9f\036\uff9f" +
    "\037\uff9f\001\002\000\016\014\044\033\035\071\034\072" +
    "\050\073\037\074\045\001\002\000\004\005\277\001\002" +
    "\000\006\005\uff98\052\202\001\002\000\044\007\055\010" +
    "\033\014\044\026\026\027\061\033\035\056\032\060\031" +
    "\062\053\064\022\070\042\071\034\072\050\073\037\074" +
    "\045\075\036\076\301\001\002\000\016\024\uff9c\031\101" +
    "\036\uff9c\037\uff9c\043\102\050\302\001\002\000\012\024" +
    "\uff9c\036\uff9c\037\uff9c\050\302\001\002\000\016\014\044" +
    "\033\035\071\034\072\050\073\037\074\045\001\002\000" +
    "\010\024\uff9e\036\uff9e\037\uff9e\001\002\000\010\024\uff9b" +
    "\036\uff9b\037\uff9b\001\002\000\012\024\uff9a\036\uff9a\037" +
    "\uff9a\050\311\001\002\000\004\053\307\001\002\000\042" +
    "\007\055\010\033\014\044\026\026\027\061\033\035\056" +
    "\032\060\031\062\053\064\022\070\042\071\034\072\050" +
    "\073\037\074\045\075\036\001\002\000\016\024\uff97\031" +
    "\101\036\uff97\037\uff97\043\102\050\uff97\001\002\000\016" +
    "\014\044\033\035\071\034\072\050\073\037\074\045\001" +
    "\002\000\010\024\uff99\036\uff99\037\uff99\001\002\000\010" +
    "\024\uff9d\036\uff9d\037\uff9d\001\002\000\004\005\316\001" +
    "\002\000\006\005\uff94\052\202\001\002\000\044\007\055" +
    "\010\033\014\044\026\026\027\061\033\035\056\032\060" +
    "\031\062\053\064\022\070\042\071\034\072\050\073\037" +
    "\074\045\075\036\076\317\001\002\000\010\024\uff96\036" +
    "\uff96\037\uff96\001\002\000\012\024\uff95\036\uff95\037\uff95" +
    "\047\077\001\002\000\004\036\uffa1\001\002" });

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

  /** <code>reduce_goto</code> table. */
  protected static final short[][] _reduce_table =
    unpackFromStrings(new String[] {
    "\000\317\000\010\024\003\026\005\076\007\001\001\000" +
    "\002\001\001\000\012\025\270\050\267\051\272\071\266" +
    "\001\001\000\002\001\001\000\046\004\023\011\042\013" +
    "\045\014\055\015\053\016\051\017\050\020\264\022\056" +
    "\037\061\040\022\041\027\042\063\043\062\044\026\045" +
    "\057\046\024\047\046\001\001\000\002\001\001\000\012" +
    "\003\013\057\012\060\015\061\011\001\001\000\002\001" +
    "\001\000\050\004\023\007\037\011\042\013\045\014\055" +
    "\015\053\016\051\017\050\020\040\022\056\037\061\040" +
    "\022\041\027\042\063\043\062\044\026\045\057\046\024" +
    "\047\046\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\010\003\013\057\012" +
    "\060\020\001\001\000\002\001\001\000\030\004\023\022" +
    "\235\037\061\040\022\041\027\042\063\043\062\044\026" +
    "\045\057\046\024\047\046\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\042\004\023\011\042" +
    "\013\045\014\055\015\053\016\231\022\056\037\061\040" +
    "\022\041\027\042\063\043\062\044\026\045\057\046\024" +
    "\047\046\001\001\000\002\001\001\000\002\001\001\000" +
    "\054\004\023\007\075\010\073\011\042\013\045\014\055" +
    "\015\053\016\051\017\050\020\040\022\056\037\061\040" +
    "\022\041\027\042\063\043\062\044\026\045\057\046\024" +
    "\047\046\067\227\001\001\000\056\004\023\007\075\010" +
    "\073\011\042\013\045\014\055\015\053\016\051\017\050" +
    "\020\040\022\056\037\061\040\022\041\027\042\063\043" +
    "\062\044\026\045\057\046\024\047\046\067\074\070\225" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\010\054\171" +
    "\065\166\066\170\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\010\044\165\045\057\046\024\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\030\004\023\022\164\037\061\040\022\041\027\042" +
    "\063\043\062\044\026\045\057\046\024\047\046\001\001" +
    "\000\004\036\140\001\001\000\050\004\023\011\042\013" +
    "\045\014\055\015\053\016\051\017\050\020\123\021\124" +
    "\022\056\037\061\040\022\041\027\042\063\043\062\044" +
    "\026\045\057\046\024\047\046\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\024" +
    "\037\061\040\065\041\070\042\067\043\066\044\026\045" +
    "\057\046\024\047\046\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\056\004" +
    "\023\007\075\010\073\011\042\013\045\014\055\015\053" +
    "\016\051\017\050\020\040\022\056\037\061\040\022\041" +
    "\027\042\063\043\062\044\026\045\057\046\024\047\046" +
    "\067\074\070\072\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\046\004\023" +
    "\011\042\013\045\014\055\015\053\016\051\017\050\020" +
    "\077\022\056\037\061\040\022\041\027\042\063\043\062" +
    "\044\026\045\057\046\024\047\046\001\001\000\002\001" +
    "\001\000\044\004\023\011\042\013\045\014\055\015\053" +
    "\016\051\017\105\022\056\037\061\040\022\041\027\042" +
    "\063\043\062\044\026\045\057\046\024\047\046\001\001" +
    "\000\044\004\023\011\042\013\045\014\055\015\053\016" +
    "\051\017\102\022\056\037\061\040\022\041\027\042\063" +
    "\043\062\044\026\045\057\046\024\047\046\001\001\000" +
    "\002\001\001\000\042\004\023\011\042\013\045\014\055" +
    "\015\053\016\104\022\056\037\061\040\022\041\027\042" +
    "\063\043\062\044\026\045\057\046\024\047\046\001\001" +
    "\000\002\001\001\000\002\001\001\000\054\004\023\007" +
    "\075\010\073\011\042\013\045\014\055\015\053\016\051" +
    "\017\050\020\040\022\056\037\061\040\022\041\027\042" +
    "\063\043\062\044\026\045\057\046\024\047\046\067\107" +
    "\001\001\000\002\001\001\000\002\001\001\000\034\004" +
    "\023\011\042\013\122\022\056\037\061\040\022\041\027" +
    "\042\063\043\062\044\026\045\057\046\024\047\046\001" +
    "\001\000\034\004\023\011\042\013\121\022\056\037\061" +
    "\040\022\041\027\042\063\043\062\044\026\045\057\046" +
    "\024\047\046\001\001\000\034\004\023\011\042\013\114" +
    "\022\056\037\061\040\022\041\027\042\063\043\062\044" +
    "\026\045\057\046\024\047\046\001\001\000\002\001\001" +
    "\000\032\004\023\011\120\022\056\037\061\040\022\041" +
    "\027\042\063\043\062\044\026\045\057\046\024\047\046" +
    "\001\001\000\032\004\023\011\117\022\056\037\061\040" +
    "\022\041\027\042\063\043\062\044\026\045\057\046\024" +
    "\047\046\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
    "\075\125\001\001\000\006\006\126\077\131\001\001\000" +
    "\002\001\001\000\046\004\023\011\042\013\045\014\055" +
    "\015\053\016\051\017\050\020\135\022\056\037\061\040" +
    "\022\041\027\042\063\043\062\044\026\045\057\046\024" +
    "\047\046\001\001\000\046\004\023\011\042\013\045\014" +
    "\055\015\053\016\051\017\050\020\132\022\056\037\061" +
    "\040\022\041\027\042\063\043\062\044\026\045\057\046" +
    "\024\047\046\001\001\000\002\001\001\000\002\001\001" +
    "\000\046\004\023\011\042\013\045\014\055\015\053\016" +
    "\051\017\050\020\134\022\056\037\061\040\022\041\027" +
    "\042\063\043\062\044\026\045\057\046\024\047\046\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\036\004\023\011\042\013\045\014\163\022\056\037" +
    "\061\040\022\041\027\042\063\043\062\044\026\045\057" +
    "\046\024\047\046\001\001\000\036\004\023\011\042\013" +
    "\045\014\162\022\056\037\061\040\022\041\027\042\063" +
    "\043\062\044\026\045\057\046\024\047\046\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\036\004" +
    "\023\011\042\013\045\014\155\022\056\037\061\040\022" +
    "\041\027\042\063\043\062\044\026\045\057\046\024\047" +
    "\046\001\001\000\002\001\001\000\036\004\023\011\042" +
    "\013\045\014\152\022\056\037\061\040\022\041\027\042" +
    "\063\043\062\044\026\045\057\046\024\047\046\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\036\004\023\011\042\013\045\014\161" +
    "\022\056\037\061\040\022\041\027\042\063\043\062\044" +
    "\026\045\057\046\024\047\046\001\001\000\036\004\023" +
    "\011\042\013\045\014\160\022\056\037\061\040\022\041" +
    "\027\042\063\043\062\044\026\045\057\046\024\047\046" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\032\030\173\037\061\040\174\041\027" +
    "\042\063\043\062\044\026\045\057\046\024\047\046\055" +
    "\175\073\176\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\032\030\173\037" +
    "\061\040\174\041\027\042\063\043\062\044\026\045\057" +
    "\046\024\047\046\055\175\073\200\001\001\000\002\001" +
    "\001\000\024\037\061\040\202\041\027\042\063\043\062" +
    "\044\026\045\057\046\024\047\046\001\001\000\002\001" +
    "\001\000\006\035\210\100\211\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\050\004\023\007\221\011\042" +
    "\013\045\014\055\015\053\016\051\017\050\020\040\022" +
    "\056\037\061\040\022\041\027\042\063\043\062\044\026" +
    "\045\057\046\024\047\046\001\001\000\002\001\001\000" +
    "\024\037\061\040\223\041\027\042\063\043\062\044\026" +
    "\045\057\046\024\047\046\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\056\004" +
    "\023\007\075\010\073\011\042\013\045\014\055\015\053" +
    "\016\051\017\050\020\040\022\056\037\061\040\022\041" +
    "\027\042\063\043\062\044\026\045\057\046\024\047\046" +
    "\067\074\070\233\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\034\005\241\030\237\031\243" +
    "\032\242\037\061\040\174\041\027\042\063\043\062\044" +
    "\026\045\057\046\024\047\046\001\001\000\002\001\001" +
    "\000\006\024\262\076\007\001\001\000\004\023\245\001" +
    "\001\000\002\001\001\000\002\001\001\000\052\004\023" +
    "\007\261\011\042\012\260\013\045\014\055\015\053\016" +
    "\051\017\050\020\040\022\056\037\061\040\022\041\027" +
    "\042\063\043\062\044\026\045\057\046\024\047\046\001" +
    "\001\000\010\053\247\062\246\063\250\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\032\027\255\030\253\037\061\040\174\041\027" +
    "\042\063\043\062\044\026\045\057\046\024\047\046\074" +
    "\254\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\032\027\255\030\253\037\061\040\174\041" +
    "\027\042\063\043\062\044\026\045\057\046\024\047\046" +
    "\074\257\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\012\025\270\050\267\051\272\071\320\001\001" +
    "\000\030\030\314\034\313\037\061\040\174\041\027\042" +
    "\063\043\062\044\026\045\057\046\024\047\046\001\001" +
    "\000\002\001\001\000\030\030\275\033\274\037\061\040" +
    "\174\041\027\042\063\043\062\044\026\045\057\046\024" +
    "\047\046\001\001\000\002\001\001\000\002\001\001\000" +
    "\046\004\023\011\042\013\045\014\055\015\053\016\051" +
    "\017\050\020\277\022\056\037\061\040\022\041\027\042" +
    "\063\043\062\044\026\045\057\046\024\047\046\001\001" +
    "\000\004\064\312\001\001\000\004\064\302\001\001\000" +
    "\030\037\061\040\305\041\027\042\063\043\062\044\026" +
    "\045\057\046\024\047\046\052\304\072\303\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\046\004\023\011\042\013\045\014\055\015" +
    "\053\016\051\017\050\020\307\022\056\037\061\040\022" +
    "\041\027\042\063\043\062\044\026\045\057\046\024\047" +
    "\046\001\001\000\002\001\001\000\030\037\061\040\305" +
    "\041\027\042\063\043\062\044\026\045\057\046\024\047" +
    "\046\052\304\072\311\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\050\004" +
    "\023\007\317\011\042\013\045\014\055\015\053\016\051" +
    "\017\050\020\040\022\056\037\061\040\022\041\027\042" +
    "\063\043\062\044\026\045\057\046\024\047\046\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001" });

  /** Access to <code>reduce_goto</code> table. */
  public short[][] reduce_table() {return _reduce_table;}

  /** Instance of action encapsulation class. */
  protected CUP$DefaultMdxParser$actions action_obj;

  /** Action encapsulation object initializer. */
  protected void init_actions()
    {
      action_obj = new CUP$DefaultMdxParser$actions(this);
    }

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

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

  /** <code>EOF</code> Symbol index. */
  public int EOF_sym() {return 0;}

  /** <code>error</code> Symbol index. */
  public int error_sym() {return 1;}


  /** User initialization code. */
  public void user_init() throws java.lang.Exception
    {

    scanner.init();

    }

  /** Scan to get the next Symbol. */
  public java_cup.runtime.Symbol scan()
    throws java.lang.Exception
    {

    return scanner.next_token();

    }


    // Generated from $Id: DefaultMdxParser.cup 381 2010-12-17 07:49:03Z jhyde $
    Scanner scanner;
    private String queryString;
    private DefaultMdxParserImpl.FunTable funTable;

    /**
      * Recursively parses an expression.
      */
    ParseTreeNode recursivelyParseExp(String s)
    {
        return new DefaultMdxParser().parseExpression(
            s, false, funTable);
    }

    /**
      * Parses a string to create a {@link SelectNode}.
      */
    SelectNode parseSelect(
        String queryString,
        boolean debug,
        DefaultMdxParserImpl.FunTable funTable)
    {
        Symbol parse_tree = null;
        this.scanner = new StringScanner(queryString, debug);
        this.queryString = queryString;
        this.funTable = funTable;
        try {
            if (debug) {
                parse_tree = debug_parse();
            } else {
                parse_tree = parse();
            }
            return (SelectNode) parse_tree.value;
        } catch (Exception e) {
            throw new RuntimeException(
                "Error while parsing MDX statement '" + queryString + "'",
                e);
        } finally {
            this.scanner = null;
            this.queryString = null;
            this.funTable = null;
        }
    }

    /**
      * Parses a string to create an expression.
      */
    ParseTreeNode parseExpression(
        String queryString,
        boolean debug,
        DefaultMdxParserImpl.FunTable funTable)
    {
        Symbol parse_tree = null;
        this.scanner = new PrefixScanner(
            debug,
            new StringScanner(queryString, debug),
            new int[] {DefaultMdxParserSym._VALUE_EXPRESSION});
        this.queryString = queryString;
        this.funTable = funTable;
        try {
            if (debug) {
                parse_tree = debug_parse();
            } else {
                parse_tree = parse();
            }
            return (ParseTreeNode) parse_tree.value;
        } catch (Exception e) {
            throw new RuntimeException(
                "Syntax error while parsing MDX expression  '" + queryString
                + "'",
                e);
        } finally {
            this.scanner = null;
            this.queryString = null;
            this.funTable = null;
        }
    }

    /**
      * Scanner which returns a list of pre-programmed tokens, then switches
      * to a parent scanner.
      */
    private static class PrefixScanner extends Scanner {
        private final Scanner parent;
        private final int tokens[];
        private int i;

        PrefixScanner(boolean debug, Scanner parent, int[] tokens) {
            super(debug);
            this.parent = parent;
            this.tokens = tokens;
        }

        public void init() throws java.io.IOException {
            i = 0;
            parent.init();
        }

        public Symbol next_token() throws java.io.IOException {
            if (i < tokens.length) {
                return new Symbol(tokens[i++], 0, 0, null);
            }
            return parent.next_token();
        }

        ParseRegion createRegion(int left, int right) {
            return parent.createRegion(left, right);
        }
    }

    /**
     * Creates a {@link SelectNode} object.
     * Override this function to make your kind of query.
     */
    protected SelectNode newSelect(
        ParseRegion region,
        List<ParseTreeNode> withList,
        List<AxisNode> axisList,
        ParseTreeNode from,
        ParseTreeNode filter,
        List<IdentifierNode> cellProps)
    {
        final AxisNode filterAxis =
            filter == null
                ? null
                : new AxisNode(
                    filter.getRegion(), false, Axis.FILTER,
                    Collections.<IdentifierNode>emptyList(), filter);
        // sort axes by ordinal
        Collections.sort(
            axisList,
            new Comparator<AxisNode>() {
                public int compare(AxisNode o1, AxisNode o2) {
                    return o1.getAxis().axisOrdinal()
                        - o2.getAxis().axisOrdinal();
                }
            });
        return new SelectNode(
            region, withList, axisList, from, filterAxis, cellProps);
    }

    // Override lr_parser methods for NLS.  With this error handling scheme,
    // all errors are fatal.
    public void report_fatal_error(
        String   message,
        Object   info)
        throws java.lang.Exception
    {
        done_parsing();
        try {
            report_error(message, info);
        } catch (Throwable e) {
            throw new RuntimeException(
                "MDX parser cannot recover from previous error(s)",
                e);
        }
    }

    // override lr_parser method
    public void report_error(String message, Object info)
    {
        // "Error: %1"
        throw new RuntimeException("Error: " + message);
    }

    // override lr_parser method
    public void syntax_error(Symbol cur_token)
    {
        String s = cur_token.value.toString();
        if (cur_token.left != -1) {
            final ParseRegion region =
                scanner.createRegion(cur_token.left, cur_token.right);
            throw new MdxParseException(
                region,
                "Syntax error at " + region
                + ", token '" + s + "'");
        } else {
            throw new RuntimeException(
                "Syntax error at token '" + s + "'");
        }
    }

    public void unrecovered_syntax_error(Symbol cur_token)
        throws java.lang.Exception
    {
        report_fatal_error("Couldn't repair and continue parse", cur_token);
    }

    /**
     * Returns whether the given identifier can possibly the name of an operator
     * with property syntax.
     *
     * <p>For example, <code>isFunCall("ORDINAL")</code>
     * returns true because there is a "&lt;Level&gt;.Ordinal" property.</p>
     */
    protected boolean isFunCall(String s) {
        return funTable.isProperty(s);
    }

}

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


    ParseRegion createRegion(final int... ordinals) {
        assert ordinals.length % 2 == 0;
        return ParseRegion.sum(
            new Iterable<ParseRegion>() {
                public Iterator<ParseRegion> iterator() {
                    return new Iterator<ParseRegion>() {
                        int i = 0;
                        public boolean hasNext() {
                            return i < ordinals.length;
                        }

                        public ParseRegion next() {
                            return parser.scanner.createRegion(
                                ordinals[i++], ordinals[i++]);
                        }

                        public void remove() {
                            throw new UnsupportedOperationException();
                        }
                    };
                }
            }
        );
    }


    static <T> List<T> emptyList(List<T> list) {
        if (list == null) {
            return Collections.emptyList();
        }
        return list;
    }

  private final DefaultMdxParser parser;

  /** Constructor */
  CUP$DefaultMdxParser$actions(DefaultMdxParser parser) {
    this.parser = parser;
  }

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

      /* select the action based on the action number */
      switch (CUP$DefaultMdxParser$act_num)
        {
          /*. . . . . . . . . . . . . . . . . . . .*/
          case 136: // cell_property ::= compound_id
            {
              IdentifierNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(21/*cell_property*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 135: // cell_property_list ::= cell_property COMMA cell_property_list
            {
              List RESULT = null;
    int pleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int pright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    IdentifierNode p = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int p1left = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int p1right = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List p1 = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
        p1.add(0, p);
        RESULT = p1;
   
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(58/*cell_property_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 134: // cell_property_list ::= cell_property
            {
              List RESULT = null;
    int pleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int pright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierNode p = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
        RESULT = new LinkedList();
        RESULT.add(p);
   
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(58/*cell_property_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 133: // cell_opt ::= CELL
            {
              Object RESULT = null;

    // Default action for single-symbol production
    RESULT = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(41/*cell_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 132: // cell_opt ::=
            {
              Object RESULT = null;

              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(41/*cell_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 131: // cell_props ::= cell_opt PROPERTIES cell_property_list
            {
              List RESULT = null;
    int p1left = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int p1right = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List p1 = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = p1;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(48/*cell_props*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 130: // filter_specification ::= expression
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(8/*filter_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 129: // cube_specification ::= cube_name
            {
              IdentifierNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(24/*cube_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 128: // property ::= compound_id
            {
              Object RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(43/*property*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 127: // property_list ::= property COMMA property_list
            {
              List RESULT = null;
    int pleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int pright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    Object p = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int plleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int plright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List pl = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            pl.add(0, p);
            RESULT = pl;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(57/*property_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 126: // property_list ::= property
            {
              List RESULT = null;
    int pleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int pright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object p = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new LinkedList();
            RESULT.add(p);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(57/*property_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 125: // dimension_opt ::= DIMENSION
            {
              Object RESULT = null;

    // Default action for single-symbol production
    RESULT = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(42/*dimension_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 124: // dimension_opt ::=
            {
              Object RESULT = null;

              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(42/*dimension_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 123: // dim_props ::= dimension_opt PROPERTIES property_list
            {
              List RESULT = null;
    int plleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int plright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List pl = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = pl;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(51/*dim_props*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 122: // axis_number ::= AXIS LPAREN NUMBER RPAREN
            {
              BigDecimal RESULT = null;
    int nleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int nright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    BigDecimal n = (BigDecimal)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
   
            RESULT = n;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(62/*axis_number*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 121: // axis_number ::= NUMBER
            {
              BigDecimal RESULT = null;

    // Default action for single-symbol production
    RESULT = (BigDecimal)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(62/*axis_number*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 120: // axis_name ::= CHAPTERS
            {
              Axis.Standard RESULT = null;
   
            RESULT = Axis.CHAPTERS;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(27/*axis_name*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 119: // axis_name ::= SECTIONS
            {
              Axis.Standard RESULT = null;
   
            RESULT = Axis.SECTIONS;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(27/*axis_name*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 118: // axis_name ::= PAGES
            {
              Axis.Standard RESULT = null;
   
            RESULT = Axis.PAGES;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(27/*axis_name*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 117: // axis_name ::= ROWS
            {
              Axis.Standard RESULT = null;
   
            RESULT = Axis.ROWS;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(27/*axis_name*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 116: // axis_name ::= COLUMNS
            {
              Axis.Standard RESULT = null;
   
            RESULT = Axis.COLUMNS;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(27/*axis_name*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 115: // dim_props_opt ::= dim_props
            {
              List RESULT = null;

    // Default action for single-symbol production
    RESULT = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(52/*dim_props_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 114: // dim_props_opt ::=
            {
              List RESULT = null;

              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(52/*dim_props_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 113: // non_empty_opt ::= NON EMPTY
            {
              Boolean RESULT = null;
   
            RESULT = Boolean.TRUE;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(45/*non_empty_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 112: // non_empty_opt ::=
            {
              Boolean RESULT = null;
   
            RESULT = Boolean.FALSE;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(45/*non_empty_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 111: // axis_specification ::= non_empty_opt expression dim_props_opt ON axis_number
            {
              AxisNode RESULT = null;
    int bleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left;
    int bright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).right;
    Boolean b = (Boolean)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).value;
    int sleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int sright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    ParseTreeNode s = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int dpleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int dpright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    List dp = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int nleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int nright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    BigDecimal n = (BigDecimal)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            double d = n.doubleValue();
            int index = (int)d;

            // AxisOrdinal values go from -2 to 4 for standard axis, but higher
            // ordinals are allowed. The negative values represent
            // special cases, so are ignored.
            if (index < 0 || index != d) {
                throw new MdxParseException(
                    createRegion(nleft, nright),
                    "Invalid axis specification. The axis number must be a "
                    + "non-negative integer, but it was " + d + ".");
            }

            Axis axis = Axis.Factory.forOrdinal(index);
            ParseRegion region = createRegion(
                bleft, bright, sleft, sright, dpleft, dpright, nleft, nright);
            RESULT = new AxisNode(region, b, axis, emptyList(dp), s);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(1/*axis_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 110: // axis_specification ::= non_empty_opt expression dim_props_opt ON axis_name
            {
              AxisNode RESULT = null;
    int bleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left;
    int bright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).right;
    Boolean b = (Boolean)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).value;
    int sleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int sright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    ParseTreeNode s = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int dpleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int dpright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    List dp = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int aleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int aright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Axis.Standard a = (Axis.Standard)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(
                bleft, bright, sleft, sright, dpleft, dpright, aleft, aright);
            RESULT = new AxisNode(region, b, a, emptyList(dp), s);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(1/*axis_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 109: // set_name ::= compound_id
            {
              IdentifierNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(26/*set_name*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 108: // set_specification ::= SET set_name AS expression
            {
              WithSetNode RESULT = null;
    int setleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int setright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    Object set = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int nleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int nright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    IdentifierNode n = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode e = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(setleft, eright);
            RESULT = new WithSetNode(region, n, e);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(39/*set_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 107: // set_specification ::= SET set_name AS FORMULA_STRING
            {
              WithSetNode RESULT = null;
    int setleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int setright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    Object set = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int nleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int nright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    IdentifierNode n = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int sleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int sright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    String s = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseTreeNode e = parser.recursivelyParseExp(s);
            ParseRegion region = createRegion(setleft, sright);
            RESULT = new WithSetNode(region, n, e);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(39/*set_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 106: // member_property_definition ::= identifier EQ value_expression
            {
              PropertyValueNode RESULT = null;
    int idleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int idright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    IdentifierSegment id = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode e = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(idleft, eright);
            RESULT = new PropertyValueNode(region, id.getName(), e);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(40/*member_property_definition*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 105: // member_name ::= compound_id
            {
              IdentifierNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(25/*member_name*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 104: // member_property_def_list ::= member_property_definition COMMA member_property_def_list
            {
              List RESULT = null;
    int hdleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int hdright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    PropertyValueNode hd = (PropertyValueNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int tlleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int tlright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List tl = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = tl;
            RESULT.add(0, hd);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(56/*member_property_def_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 103: // member_property_def_list ::= member_property_definition
            {
              List RESULT = null;
    int mleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int mright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    PropertyValueNode m = (PropertyValueNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new LinkedList();
            RESULT.add(m);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(56/*member_property_def_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 102: // comma_member_property_def_list_opt ::= COMMA member_property_def_list
            {
              List RESULT = null;
    int lleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int lright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List l = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = l;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(50/*comma_member_property_def_list_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 101: // comma_member_property_def_list_opt ::=
            {
              List RESULT = null;
   
            RESULT = new LinkedList();
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(50/*comma_member_property_def_list_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 100: // member_specification ::= MEMBER member_name AS value_expression comma_member_property_def_list_opt
            {
              WithMemberNode RESULT = null;
    int memberleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left;
    int memberright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).right;
    Object member = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).value;
    int mleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int mright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    IdentifierNode m = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    ParseTreeNode e = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int lleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int lright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List l = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(memberleft, eright);
            RESULT = new WithMemberNode(region, m, e, l);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(38/*member_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 99: // member_specification ::= MEMBER member_name AS FORMULA_STRING comma_member_property_def_list_opt
            {
              WithMemberNode RESULT = null;
    int memberleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left;
    int memberright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).right;
    Object member = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).value;
    int mleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int mright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    IdentifierNode m = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int sleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int sright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    String s = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int lleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int lright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List l = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseTreeNode e = parser.recursivelyParseExp(s);
            ParseRegion region = createRegion(memberleft, sright);
            RESULT = new WithMemberNode(region, m, e, l);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(38/*member_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 98: // single_formula_specification ::= set_specification
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (WithSetNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(19/*single_formula_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 97: // single_formula_specification ::= member_specification
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (WithMemberNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(19/*single_formula_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 96: // formula_specification ::= single_formula_specification formula_specification
            {
              List RESULT = null;
    int hdleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int hdright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    ParseTreeNode hd = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int tlleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int tlright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List tl = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            tl.add(0, hd);
            RESULT = tl;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(55/*formula_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 95: // formula_specification ::= single_formula_specification
            {
              List RESULT = null;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode e = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new LinkedList();
            RESULT.add(e);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(55/*formula_specification*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 94: // cell_props_opt ::= cell_props
            {
              List RESULT = null;

    // Default action for single-symbol production
    RESULT = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(49/*cell_props_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 93: // cell_props_opt ::=
            {
              List RESULT = null;
   
            RESULT = new LinkedList();
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(49/*cell_props_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 92: // where_clause_opt ::= WHERE filter_specification
            {
              ParseTreeNode RESULT = null;
    int sleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int sright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode s = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = s;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(17/*where_clause_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 91: // where_clause_opt ::=
            {
              ParseTreeNode RESULT = null;

              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(17/*where_clause_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 90: // axis_specification_list ::= axis_specification COMMA axis_specification_list
            {
              List RESULT = null;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    AxisNode e = (AxisNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int listleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int listright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List list = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            list.add(0, e);
            RESULT = list;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(46/*axis_specification_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 89: // axis_specification_list ::= axis_specification
            {
              List RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    AxisNode i = (AxisNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new LinkedList();
            RESULT.add(i);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(46/*axis_specification_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 88: // axis_specification_list_opt ::= axis_specification_list
            {
              List RESULT = null;

    // Default action for single-symbol production
    RESULT = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(47/*axis_specification_list_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 87: // axis_specification_list_opt ::=
            {
              List RESULT = null;
   
            RESULT = new LinkedList();
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(47/*axis_specification_list_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 86: // with_formula_specification_opt ::= WITH formula_specification
            {
              List RESULT = null;
    int fleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int fright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List f = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = f;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(60/*with_formula_specification_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 85: // with_formula_specification_opt ::=
            {
              List RESULT = null;
   
            RESULT = new LinkedList();
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(60/*with_formula_specification_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 84: // select_statement ::= with_formula_specification_opt SELECT axis_specification_list_opt FROM cube_specification_or_select_statement where_clause_opt cell_props_opt
            {
              ParseTreeNode RESULT = null;
    int fleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-6)).left;
    int fright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-6)).right;
    List f = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-6)).value;
    int selectleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).left;
    int selectright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).right;
    Object select = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).value;
    int aleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left;
    int aright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).right;
    List a = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).value;
    int cleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int cright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode c = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int wleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int wright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    ParseTreeNode w = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int cpleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int cpright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List cp = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(selectleft, selectright);
            RESULT = parser.newSelect(region, f, a, c, w, cp);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(18/*select_statement*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-6)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 83: // cube_specification_or_select_statement ::= LPAREN select_statement RPAREN
            {
              ParseTreeNode RESULT = null;
    int sleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int sright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    ParseTreeNode s = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
   
            RESULT = s;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(3/*cube_specification_or_select_statement*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 82: // cube_specification_or_select_statement ::= cube_specification
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(3/*cube_specification_or_select_statement*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 81: // statement ::= _VALUE_EXPRESSION value_expression
            {
              ParseTreeNode RESULT = null;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode e = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = (ParseTreeNode) e;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(20/*statement*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 80: // statement ::= select_statement
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(20/*statement*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 79: // exp_list ::= expression_or_empty COMMA exp_list
            {
              List RESULT = null;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode e = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int listleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int listright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List list = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            list.add(0, e); RESULT = list;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(53/*exp_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 78: // exp_list ::= expression
            {
              List RESULT = null;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode e = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new LinkedList();
            RESULT.add(e);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(53/*exp_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 77: // exp_list_opt ::= exp_list
            {
              List RESULT = null;

    // Default action for single-symbol production
    RESULT = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(54/*exp_list_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 76: // exp_list_opt ::=
            {
              List RESULT = null;
   
            RESULT = new LinkedList();
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(54/*exp_list_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 75: // expression_or_empty ::=
            {
              ParseTreeNode RESULT = null;
   
            final ParseRegion region = createRegion(0, 0);
            RESULT = new CallNode(region, "", Syntax.Empty);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(6/*expression_or_empty*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 74: // expression_or_empty ::= expression
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(6/*expression_or_empty*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 73: // expression ::= value_expression
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(5/*expression*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 72: // expression ::= expression COLON value_expression
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
     // range yields set
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, ":", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(5/*expression*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 71: // comp_op ::= GE
            {
              String RESULT = null;
   
            RESULT = ">=";
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(28/*comp_op*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 70: // comp_op ::= LE
            {
              String RESULT = null;
   
            RESULT = "<=";
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(28/*comp_op*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 69: // comp_op ::= GT
            {
              String RESULT = null;
   
            RESULT = ">";
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(28/*comp_op*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 68: // comp_op ::= LT
            {
              String RESULT = null;
   
            RESULT = "<";
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(28/*comp_op*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 67: // comp_op ::= NE
            {
              String RESULT = null;
   
            RESULT = "<>";
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(28/*comp_op*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 66: // comp_op ::= EQ
            {
              String RESULT = null;
   
            RESULT = "=";
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(28/*comp_op*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 65: // else_clause_opt ::= ELSE value_expression
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = x;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(4/*else_clause_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 64: // else_clause_opt ::=
            {
              ParseTreeNode RESULT = null;

              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(4/*else_clause_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 63: // when_clause ::= WHEN value_expression THEN value_expression
            {
              ParseTreeNode[] RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new ParseTreeNode[] {x, y};
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(61/*when_clause*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 62: // when_list ::= when_list when_clause
            {
              List RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    List x = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode[] y = (ParseTreeNode[])((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = x;
            x.add(y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(59/*when_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 61: // when_list ::=
            {
              List RESULT = null;
   
            RESULT = new ArrayList();
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(59/*when_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 60: // value_expression_opt ::= value_expression
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(15/*value_expression_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 59: // value_expression_opt ::=
            {
              ParseTreeNode RESULT = null;

              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(15/*value_expression_opt*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 58: // case_expression ::= CASE value_expression_opt when_list else_clause_opt END
            {
              ParseTreeNode RESULT = null;
    int kaseleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left;
    int kaseright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).right;
    Object kase = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).value;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    List y = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int zleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int zright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    ParseTreeNode z = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
   
            List v = new ArrayList();
            if (x != null) {
                v.add(x);
            }
            for (int i = 0; i < y.size(); i++) {
                ParseTreeNode[] exps = (ParseTreeNode[]) y.get(i);
                assert exps.length == 2;
                v.add(exps[0]);
                v.add(exps[1]);
            }
            if (z != null) {
                v.add(z);
            }
            ParseRegion region = createRegion(kaseleft, zright);
            if (x == null) {
                RESULT = new CallNode(region, "_CaseTest", Syntax.Case, v);
            } else {
                RESULT = new CallNode(region, "_CaseMatch", Syntax.Case, v);
            }
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(2/*case_expression*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-4)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 57: // value_expression_primary ::= case_expression
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 56: // value_expression_primary ::= NULL
            {
              ParseTreeNode RESULT = null;
    int nleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int nright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object n = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(nleft, nright);
            RESULT = LiteralNode.createNull(region);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 55: // value_expression_primary ::= LBRACE exp_list_opt RBRACE
            {
              ParseTreeNode RESULT = null;
    int lbraceleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int lbraceright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    Object lbrace = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int lisleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int lisright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    List lis = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int rbraceleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int rbraceright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object rbrace = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            // set built from sets/tuples
            ParseRegion region = createRegion(lbraceleft, rbraceright);
            RESULT = new CallNode(region, "{}", Syntax.Braces, lis);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 54: // value_expression_primary ::= LPAREN exp_list RPAREN
            {
              ParseTreeNode RESULT = null;
    int lparenleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int lparenright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    Object lparen = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int lisleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int lisright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    List lis = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int rparenleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int rparenright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object rparen = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            // Whereas ([Sales],[Time]) and () are tuples, ([Sales]) and (5)
            // are just expressions.
            ParseRegion region = createRegion(lparenleft, rparenright);
            RESULT = new CallNode(region, "()", Syntax.Parentheses, lis);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 53: // value_expression_primary ::= CAST LPAREN expression AS identifier RPAREN
            {
              ParseTreeNode RESULT = null;
    int castleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).left;
    int castright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).right;
    Object cast = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).value;
    int eleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int eright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    ParseTreeNode e = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int tleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int tright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    IdentifierSegment t = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int rparenleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int rparenright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object rparen = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            LiteralNode symbol =
                LiteralNode.createSymbol(t.getRegion(), t.getName());
            ParseRegion region = createRegion(castleft, rparenright);
            RESULT = new CallNode(region, "CAST", Syntax.Cast, e, symbol);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 52: // value_expression_primary ::= identifier LPAREN exp_list_opt RPAREN
            {
              ParseTreeNode RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    IdentifierSegment i = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int lisleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int lisright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    List lis = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int rparenleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int rparenright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object rparen = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(ileft, rparenright);
            RESULT = new CallNode(region, i.getName(), Syntax.Function, lis);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 51: // value_expression_primary ::= value_expression_primary DOT identifier LPAREN exp_list_opt RPAREN
            {
              ParseTreeNode RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).right;
    ParseTreeNode i = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).value;
    int jleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int jright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    IdentifierSegment j = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int lisleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int lisright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    List lis = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int rparenleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int rparenright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object rparen = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            lis.add(0, i);
            ParseRegion region = createRegion(ileft, rparenright);
            RESULT = new CallNode(region, j.getName(), Syntax.Method, lis);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-5)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 50: // value_expression_primary ::= value_expression_primary DOT key_identifier
            {
              ParseTreeNode RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode i = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int jleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int jright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierSegment j = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            if (i instanceof IdentifierNode) {
                RESULT = ((IdentifierNode) i).append(j);
            } else {
                ParseRegion region = createRegion(ileft, jright);
                RESULT = new CallNode(
                    region, j.getName(), Syntax.AmpersandQuotedProperty, i);
            }
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 49: // value_expression_primary ::= value_expression_primary DOT quoted_identifier
            {
              ParseTreeNode RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode i = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int jleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int jright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierSegment j = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            if (i instanceof IdentifierNode) {
                RESULT = ((IdentifierNode) i).append(j);
            } else {
                ParseRegion region = createRegion(ileft, jright);
                RESULT = new CallNode(
                    region, j.getName(), Syntax.QuotedProperty, i);
            }
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 48: // value_expression_primary ::= value_expression_primary DOT unquoted_identifier
            {
              ParseTreeNode RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode i = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int jleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int jright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierSegment j = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            if (i instanceof IdentifierNode && !parser.isFunCall(j.getName())) {
                RESULT = ((IdentifierNode) i).append(j);
            } else {
                ParseRegion region = createRegion(ileft, jright);
                RESULT = new CallNode(region, j.getName(), Syntax.Property, i);
            }
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 47: // value_expression_primary ::= identifier
            {
              ParseTreeNode RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierSegment i = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new IdentifierNode(i);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 46: // value_expression_primary ::= NUMBER
            {
              ParseTreeNode RESULT = null;
    int dleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int dright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    BigDecimal d = (BigDecimal)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(dleft, dright);
            RESULT = LiteralNode.createNumeric(region, d, false);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 45: // value_expression_primary ::= STRING
            {
              ParseTreeNode RESULT = null;
    int sleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int sright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    String s = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(sleft, sright);
            RESULT = LiteralNode.createString(region, s);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(16/*value_expression_primary*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 44: // factor ::= MINUS value_expression_primary
            {
              ParseTreeNode RESULT = null;
    int minusleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int minusright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    Object minus = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int pleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int pright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode p = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(minusleft, pright);
            RESULT = new CallNode(region, "-", Syntax.Prefix, p);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(7/*factor*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 43: // factor ::= PLUS value_expression_primary
            {
              ParseTreeNode RESULT = null;
    int pleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int pright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode p = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = p;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(7/*factor*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 42: // factor ::= value_expression_primary
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(7/*factor*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 41: // term ::= term SOLIDUS factor
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "/", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(9/*term*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 40: // term ::= term ASTERISK factor
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "*", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(9/*term*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 39: // term ::= factor
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(9/*term*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 38: // term2 ::= term2 CONCAT term
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "||", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(10/*term2*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 37: // term2 ::= term2 MINUS term
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "-", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(10/*term2*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 36: // term2 ::= term2 PLUS term
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "+", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(10/*term2*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 35: // term2 ::= term
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(10/*term2*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 34: // term3 ::= term3 NOT IN term2
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT =
                new CallNode(
                    region, "NOT", Syntax.Prefix,
                    new CallNode(region, "IN", Syntax.Infix, x, y));
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 33: // term3 ::= term3 IN term2
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "IN", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 32: // term3 ::= term3 NOT MATCHES term2
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT =
                new CallNode(
                    region, "NOT", Syntax.Prefix,
                    new CallNode(region, "MATCHES", Syntax.Infix, x, y));
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 31: // term3 ::= term3 MATCHES term2
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "MATCHES", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 30: // term3 ::= term3 IS EMPTY
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int emptyleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int emptyright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object empty = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, emptyright);
            RESULT = new CallNode(region, "IS EMPTY", Syntax.Postfix, x);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 29: // term3 ::= term3 IS term2
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            // e.g. "x IS y"; but "x IS NULL" is handled elsewhere
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "IS", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 28: // term3 ::= term3 IS NULL
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int nleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int nright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    Object n = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, nright);
            RESULT = new CallNode(region, "IS NULL", Syntax.Postfix, x);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 27: // term3 ::= term3 comp_op term2
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int opleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int opright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    String op = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
     // e.g. "1 < 5"
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, op, Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 26: // term3 ::= term2
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(11/*term3*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 25: // term4 ::= NOT term4
            {
              ParseTreeNode RESULT = null;
    int notleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int notright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    Object not = (Object)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int pleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int pright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode p = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(notleft, pright);
            RESULT = new CallNode(region, "NOT", Syntax.Prefix, p);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(12/*term4*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 24: // term4 ::= term3
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(12/*term4*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 23: // term5 ::= term5 AND term4
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "AND", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(13/*term5*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 22: // term5 ::= term4
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(13/*term5*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 21: // value_expression ::= value_expression XOR term5
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "XOR", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(14/*value_expression*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 20: // value_expression ::= value_expression OR term5
            {
              ParseTreeNode RESULT = null;
    int xleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int xright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    ParseTreeNode x = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int yleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int yright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    ParseTreeNode y = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(xleft, yright);
            RESULT = new CallNode(region, "OR", Syntax.Infix, x, y);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(14/*value_expression*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 19: // value_expression ::= term5
            {
              ParseTreeNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (ParseTreeNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(14/*value_expression*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 18: // cube_name ::= compound_id
            {
              IdentifierNode RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(23/*cube_name*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 17: // compound_id ::= compound_id DOT identifier
            {
              IdentifierNode RESULT = null;
    int hdleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left;
    int hdright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).right;
    IdentifierNode hd = (IdentifierNode)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).value;
    int tlleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int tlright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierSegment tl = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = hd.append(tl);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(22/*compound_id*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 16: // compound_id ::= identifier
            {
              IdentifierNode RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierSegment i = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new IdentifierNode(i);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(22/*compound_id*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // keyword ::= PROPERTIES
            {
              String RESULT = null;
   
            RESULT = "Properties";
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(29/*keyword*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 14: // keyword ::= DIMENSION
            {
              String RESULT = null;
   
            RESULT = "Dimension";
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(29/*keyword*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // identifier ::= key_identifier
            {
              IdentifierSegment RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(30/*identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 12: // identifier ::= quoted_identifier
            {
              IdentifierSegment RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(30/*identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // identifier ::= unquoted_identifier
            {
              IdentifierSegment RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(30/*identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 10: // amp_unquoted_identifier ::= AMP_UNQUOTED_ID
            {
              IdentifierSegment RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    String i = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(ileft, iright);
            RESULT = new NameSegment(region, i, Quoting.UNQUOTED);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(36/*amp_unquoted_identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // amp_quoted_identifier ::= AMP_QUOTED_ID
            {
              IdentifierSegment RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    String i = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(ileft, iright);
            RESULT = new NameSegment(region, i, Quoting.QUOTED);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(35/*amp_quoted_identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 8: // amp_identifier ::= amp_unquoted_identifier
            {
              IdentifierSegment RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(34/*amp_identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // amp_identifier ::= amp_quoted_identifier
            {
              IdentifierSegment RESULT = null;

    // Default action for single-symbol production
    RESULT = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top)).value;
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(34/*amp_identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // amp_identifier_list ::= amp_identifier_list amp_identifier
            {
              List RESULT = null;
    int listleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left;
    int listright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).right;
    List list = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).value;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierSegment i = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            list.add(i);
            RESULT = list;
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(37/*amp_identifier_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 5: // amp_identifier_list ::= amp_identifier
            {
              List RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    IdentifierSegment i = (IdentifierSegment)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new ArrayList<NameSegment>();
            RESULT.add(i);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(37/*amp_identifier_list*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 4: // key_identifier ::= amp_identifier_list
            {
              IdentifierSegment RESULT = null;
    int listleft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int listright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    List list = (List)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            RESULT = new KeySegment(list);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(31/*key_identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // unquoted_identifier ::= keyword
            {
              IdentifierSegment RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    String i = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(ileft, iright);
            RESULT = new NameSegment(region, i, Quoting.UNQUOTED);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(33/*unquoted_identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // unquoted_identifier ::= ID
            {
              IdentifierSegment RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    String i = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(ileft, iright);
            RESULT = new NameSegment(region, i, Quoting.UNQUOTED);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(33/*unquoted_identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 1: // quoted_identifier ::= QUOTED_ID
            {
              IdentifierSegment RESULT = null;
    int ileft = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left;
    int iright = ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right;
    String i = (String)((java_cup.runtime.Symbol) CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).value;
   
            ParseRegion region = createRegion(ileft, iright);
            RESULT = new NameSegment(region, i, Quoting.QUOTED);
       
              CUP$DefaultMdxParser$result = new java_cup.runtime.Symbol(32/*quoted_identifier*/, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$DefaultMdxParser$stack.elementAt(CUP$DefaultMdxParser$top-0)).right, RESULT);
            }
          return CUP$DefaultMdxParser$result;

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

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

        }
    }
}

TOP

Related Classes of org.olap4j.mdx.parser.impl.CUP$DefaultMdxParser$actions

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.