All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ximpleware.xpath.XSLParser Maven / Gradle / Ivy

/* 
 * Copyright (C) 2002-2011 XimpleWare, [email protected]
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
//----------------------------------------------------
// The following code was generated by CUP v0.10k
// Fri Feb 11 18:18:03 PST 2011
//----------------------------------------------------

package com.ximpleware.xpath;

import java_cup.runtime.*;
import com.ximpleware.*;
import com.ximpleware.xpath.*;
import java.io.*;
import java.util.*;

/** CUP v0.10k generated parser.
  * @version Fri Feb 11 18:18:03 PST 2011
  */
public class XSLParser extends java_cup.runtime.lr_parser {

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

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

  /** Production table. */
  protected static final short _production_table[][] = 
    unpackFromStrings(new String[] {
    "\000\110\000\002\007\003\000\002\002\004\000\002\010" +
    "\003\000\002\010\005\000\002\012\003\000\002\012\005" +
    "\000\002\011\003\000\002\011\005\000\002\011\005\000" +
    "\002\013\003\000\002\013\005\000\002\013\005\000\002" +
    "\013\005\000\002\013\005\000\002\014\003\000\002\014" +
    "\005\000\002\014\005\000\002\015\003\000\002\015\005" +
    "\000\002\015\005\000\002\015\005\000\002\016\003\000" +
    "\002\016\004\000\002\022\003\000\002\022\005\000\002" +
    "\017\003\000\002\017\003\000\002\017\005\000\002\017" +
    "\005\000\002\020\003\000\002\020\004\000\002\024\003" +
    "\000\002\024\005\000\002\024\003\000\002\024\003\000" +
    "\002\024\003\000\002\003\006\000\002\004\006\000\002" +
    "\023\002\000\002\023\003\000\002\023\005\000\002\025" +
    "\003\000\002\026\003\000\002\026\003\000\002\026\003" +
    "\000\002\027\003\000\002\027\005\000\002\027\005\000" +
    "\002\036\003\000\002\036\004\000\002\036\003\000\002" +
    "\035\003\000\002\035\005\000\002\035\003\000\002\033" +
    "\005\000\002\033\003\000\002\032\003\000\002\032\003" +
    "\000\002\042\002\000\002\042\004\000\002\030\003\000" +
    "\002\030\003\000\002\031\002\000\002\031\003\000\002" +
    "\034\003\000\002\034\003\000\002\037\004\000\002\040" +
    "\005\000\002\041\005\000\002\021\004\000\002\005\003" +
    "\000\002\006\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\154\000\040\005\050\006\022\007\020\010\045\012" +
    "\017\025\004\026\006\035\042\036\034\037\041\040\026" +
    "\041\025\042\uffc3\043\uffc3\044\046\001\002\000\062\002" +
    "\uffd1\004\uffd1\005\uffd1\006\022\007\020\010\045\011\uffd1" +
    "\013\uffd1\015\uffd1\016\uffd1\017\uffd1\020\uffd1\021\uffd1\022" +
    "\uffd1\023\uffd1\024\uffd1\027\uffd1\030\uffd1\031\uffd1\032\uffd1" +
    "\033\uffd1\042\uffc3\043\uffc3\044\046\001\002\000\032\002" +
    "\ufffb\011\ufffb\013\ufffb\015\ufffb\016\133\017\132\020\135" +
    "\021\134\022\ufffb\023\ufffb\031\ufffb\032\ufffb\001\002\000" +
    "\016\006\022\007\020\010\045\042\uffc3\043\uffc3\044\046" +
    "\001\002\000\046\002\uffcf\004\uffcf\005\uffcf\011\uffcf\013" +
    "\uffcf\015\uffcf\016\uffcf\017\uffcf\020\uffcf\021\uffcf\022\uffcf" +
    "\023\uffcf\024\uffcf\027\uffcf\030\uffcf\031\uffcf\032\uffcf\033" +
    "\uffcf\001\002\000\054\002\uffde\004\uffde\005\uffde\011\uffde" +
    "\013\uffde\014\uffde\015\uffde\016\uffde\017\uffde\020\uffde\021" +
    "\uffde\022\uffde\023\uffde\024\uffde\025\uffde\026\uffde\027\uffde" +
    "\030\uffde\031\uffde\032\uffde\033\uffde\001\002\000\006\042" +
    "\151\043\147\001\002\000\016\002\uffff\011\uffff\013\uffff" +
    "\015\uffff\031\145\032\uffff\001\002\000\006\042\uffc4\043" +
    "\uffc4\001\002\000\014\002\001\011\001\013\001\015\001" +
    "\032\143\001\002\000\046\002\uffd5\004\uffd5\005\uffd5\011" +
    "\uffd5\013\uffd5\015\uffd5\016\uffd5\017\uffd5\020\uffd5\021\uffd5" +
    "\022\uffd5\023\uffd5\024\uffd5\027\uffd5\030\uffd5\031\uffd5\032" +
    "\uffd5\033\uffd5\001\002\000\022\002\ufffd\011\ufffd\013\ufffd" +
    "\015\ufffd\022\127\023\130\031\ufffd\032\ufffd\001\002\000" +
    "\040\005\050\006\022\007\020\010\045\012\017\025\004" +
    "\026\006\035\042\036\034\037\041\040\026\041\025\042" +
    "\uffc3\043\uffc3\044\046\001\002\000\052\002\uffc0\004\uffc0" +
    "\005\uffc0\011\uffc0\013\uffc0\015\uffc0\016\uffc0\017\uffc0\020" +
    "\uffc0\021\uffc0\022\uffc0\023\uffc0\024\uffc0\025\uffc0\026\uffc0" +
    "\027\uffc0\030\uffc0\031\uffc0\032\uffc0\033\uffc0\001\002\000" +
    "\046\002\uffd6\004\uffd6\005\uffd6\011\uffd6\013\uffd6\015\uffd6" +
    "\016\uffd6\017\uffd6\020\uffd6\021\uffd6\022\uffd6\023\uffd6\024" +
    "\uffd6\027\uffd6\030\uffd6\031\uffd6\032\uffd6\033\uffd6\001\002" +
    "\000\052\002\uffc1\004\uffc1\005\uffc1\011\uffc1\013\uffc1\015" +
    "\uffc1\016\uffc1\017\uffc1\020\uffc1\021\uffc1\022\uffc1\023\uffc1" +
    "\024\uffc1\025\uffc1\026\uffc1\027\uffc1\030\uffc1\031\uffc1\032" +
    "\uffc1\033\uffc1\001\002\000\036\002\ufff8\004\122\005\121" +
    "\011\ufff8\013\ufff8\015\ufff8\016\ufff8\017\ufff8\020\ufff8\021" +
    "\ufff8\022\ufff8\023\ufff8\031\ufff8\032\ufff8\001\002\000\044" +
    "\002\ufff0\004\ufff0\005\ufff0\011\ufff0\013\ufff0\015\ufff0\016" +
    "\ufff0\017\ufff0\020\ufff0\021\ufff0\022\ufff0\023\ufff0\024\ufff0" +
    "\027\ufff0\030\ufff0\031\ufff0\032\ufff0\001\002\000\004\012" +
    "\uffba\001\002\000\004\012\uffbb\001\002\000\004\012\116" +
    "\001\002\000\052\002\uffce\004\uffce\005\uffce\011\uffce\013" +
    "\uffce\015\uffce\016\uffce\017\uffce\020\uffce\021\uffce\022\uffce" +
    "\023\uffce\024\uffce\025\113\026\112\027\uffce\030\uffce\031" +
    "\uffce\032\uffce\033\uffce\001\002\000\046\002\uffe8\004\uffe8" +
    "\005\uffe8\011\uffe8\013\uffe8\015\uffe8\016\uffe8\017\uffe8\020" +
    "\uffe8\021\uffe8\022\uffe8\023\uffe8\024\uffe8\027\uffe8\030\uffe8" +
    "\031\uffe8\032\uffe8\033\uffe8\001\002\000\054\002\uffe4\004" +
    "\uffe4\005\uffe4\011\uffe4\013\uffe4\014\uffe4\015\uffe4\016\uffe4" +
    "\017\uffe4\020\uffe4\021\uffe4\022\uffe4\023\uffe4\024\uffe4\025" +
    "\uffe4\026\uffe4\027\uffe4\030\uffe4\031\uffe4\032\uffe4\033\uffe4" +
    "\001\002\000\046\002\uffea\004\uffea\005\uffea\011\uffea\013" +
    "\uffea\015\uffea\016\uffea\017\uffea\020\uffea\021\uffea\022\uffea" +
    "\023\uffea\024\uffea\027\uffea\030\uffea\031\uffea\032\uffea\033" +
    "\110\001\002\000\054\002\uffdf\004\uffdf\005\uffdf\011\uffdf" +
    "\013\uffdf\014\uffdf\015\uffdf\016\uffdf\017\uffdf\020\uffdf\021" +
    "\uffdf\022\uffdf\023\uffdf\024\uffdf\025\uffdf\026\uffdf\027\uffdf" +
    "\030\uffdf\031\uffdf\032\uffdf\033\uffdf\001\002\000\054\002" +
    "\uffe2\004\uffe2\005\uffe2\011\uffe2\013\uffe2\014\uffe2\015\uffe2" +
    "\016\uffe2\017\uffe2\020\uffe2\021\uffe2\022\uffe2\023\uffe2\024" +
    "\uffe2\025\uffe2\026\uffe2\027\uffe2\030\uffe2\031\uffe2\032\uffe2" +
    "\033\uffe2\001\002\000\054\002\uffe7\004\uffe7\005\uffe7\011" +
    "\uffe7\013\uffe7\014\103\015\uffe7\016\uffe7\017\uffe7\020\uffe7" +
    "\021\uffe7\022\uffe7\023\uffe7\024\uffe7\025\102\026\101\027" +
    "\uffe7\030\uffe7\031\uffe7\032\uffe7\033\uffe7\001\002\000\004" +
    "\012\071\001\002\000\004\002\070\001\002\000\054\002" +
    "\uffe0\004\uffe0\005\uffe0\011\uffe0\013\uffe0\014\uffe0\015\uffe0" +
    "\016\uffe0\017\uffe0\020\uffe0\021\uffe0\022\uffe0\023\uffe0\024" +
    "\uffe0\025\uffe0\026\uffe0\027\uffe0\030\uffe0\031\uffe0\032\uffe0" +
    "\033\uffe0\001\002\000\004\043\067\001\002\000\046\002" +
    "\uffcc\004\uffcc\005\uffcc\011\uffcc\013\uffcc\015\uffcc\016\uffcc" +
    "\017\uffcc\020\uffcc\021\uffcc\022\uffcc\023\uffcc\024\uffcc\027" +
    "\uffcc\030\uffcc\031\uffcc\032\uffcc\033\uffcc\001\002\000\052" +
    "\002\uffca\004\uffca\005\uffca\011\uffca\013\uffca\015\uffca\016" +
    "\uffca\017\uffca\020\uffca\021\uffca\022\uffca\023\uffca\024\uffca" +
    "\025\uffca\026\uffca\027\uffca\030\uffca\031\uffca\032\uffca\033" +
    "\uffca\001\002\000\006\042\uffc2\043\uffc2\001\002\000\006" +
    "\042\uffc5\043\uffc5\001\002\000\044\002\uffec\004\uffec\005" +
    "\uffec\011\uffec\013\uffec\015\uffec\016\uffec\017\uffec\020\uffec" +
    "\021\uffec\022\uffec\023\uffec\024\uffec\027\uffec\030\uffec\031" +
    "\uffec\032\uffec\001\002\000\040\005\050\006\022\007\020" +
    "\010\045\012\017\025\004\026\006\035\042\036\034\037" +
    "\041\040\026\041\025\042\uffc3\043\uffc3\044\046\001\002" +
    "\000\052\002\uffd4\004\uffd4\005\uffd4\011\uffd4\013\uffd4\015" +
    "\uffd4\016\uffd4\017\uffd4\020\uffd4\021\uffd4\022\uffd4\023\uffd4" +
    "\024\uffd4\025\063\026\062\027\uffd4\030\uffd4\031\uffd4\032" +
    "\uffd4\033\uffd4\001\002\000\044\002\ufff3\004\ufff3\005\ufff3" +
    "\011\ufff3\013\ufff3\015\ufff3\016\ufff3\017\ufff3\020\ufff3\021" +
    "\ufff3\022\ufff3\023\ufff3\024\055\027\056\030\054\031\ufff3" +
    "\032\ufff3\001\002\000\046\002\uffd7\004\uffd7\005\uffd7\011" +
    "\uffd7\013\uffd7\015\uffd7\016\uffd7\017\uffd7\020\uffd7\021\uffd7" +
    "\022\uffd7\023\uffd7\024\uffd7\027\uffd7\030\uffd7\031\uffd7\032" +
    "\uffd7\033\uffd7\001\002\000\040\005\050\006\022\007\020" +
    "\010\045\012\017\025\004\026\006\035\042\036\034\037" +
    "\041\040\026\041\025\042\uffc3\043\uffc3\044\046\001\002" +
    "\000\040\005\050\006\022\007\020\010\045\012\017\025" +
    "\004\026\006\035\042\036\034\037\041\040\026\041\025" +
    "\042\uffc3\043\uffc3\044\046\001\002\000\040\005\050\006" +
    "\022\007\020\010\045\012\017\025\004\026\006\035\042" +
    "\036\034\037\041\040\026\041\025\042\uffc3\043\uffc3\044" +
    "\046\001\002\000\044\002\uffee\004\uffee\005\uffee\011\uffee" +
    "\013\uffee\015\uffee\016\uffee\017\uffee\020\uffee\021\uffee\022" +
    "\uffee\023\uffee\024\uffee\027\uffee\030\uffee\031\uffee\032\uffee" +
    "\001\002\000\044\002\uffef\004\uffef\005\uffef\011\uffef\013" +
    "\uffef\015\uffef\016\uffef\017\uffef\020\uffef\021\uffef\022\uffef" +
    "\023\uffef\024\uffef\027\uffef\030\uffef\031\uffef\032\uffef\001" +
    "\002\000\044\002\uffed\004\uffed\005\uffed\011\uffed\013\uffed" +
    "\015\uffed\016\uffed\017\uffed\020\uffed\021\uffed\022\uffed\023" +
    "\uffed\024\uffed\027\uffed\030\uffed\031\uffed\032\uffed\001\002" +
    "\000\016\006\022\007\020\010\045\042\uffc3\043\uffc3\044" +
    "\046\001\002\000\016\006\022\007\020\010\045\042\uffc3" +
    "\043\uffc3\044\046\001\002\000\046\002\uffd3\004\uffd3\005" +
    "\uffd3\011\uffd3\013\uffd3\015\uffd3\016\uffd3\017\uffd3\020\uffd3" +
    "\021\uffd3\022\uffd3\023\uffd3\024\uffd3\027\uffd3\030\uffd3\031" +
    "\uffd3\032\uffd3\033\uffd3\001\002\000\046\002\uffd2\004\uffd2" +
    "\005\uffd2\011\uffd2\013\uffd2\015\uffd2\016\uffd2\017\uffd2\020" +
    "\uffd2\021\uffd2\022\uffd2\023\uffd2\024\uffd2\027\uffd2\030\uffd2" +
    "\031\uffd2\032\uffd2\033\uffd2\001\002\000\044\002\uffeb\004" +
    "\uffeb\005\uffeb\011\uffeb\013\uffeb\015\uffeb\016\uffeb\017\uffeb" +
    "\020\uffeb\021\uffeb\022\uffeb\023\uffeb\024\uffeb\027\uffeb\030" +
    "\uffeb\031\uffeb\032\uffeb\001\002\000\054\002\uffbc\004\uffbc" +
    "\005\uffbc\011\uffbc\013\uffbc\014\uffbc\015\uffbc\016\uffbc\017" +
    "\uffbc\020\uffbc\021\uffbc\022\uffbc\023\uffbc\024\uffbc\025\uffbc" +
    "\026\uffbc\027\uffbc\030\uffbc\031\uffbc\032\uffbc\033\uffbc\001" +
    "\002\000\004\002\000\001\002\000\042\005\050\006\022" +
    "\007\020\010\045\012\017\013\uffdb\025\004\026\006\035" +
    "\042\036\034\037\041\040\026\041\025\042\uffc3\043\uffc3" +
    "\044\046\001\002\000\004\013\077\001\002\000\006\011" +
    "\075\013\uffda\001\002\000\006\011\uffd8\013\uffd8\001\002" +
    "\000\042\005\050\006\022\007\020\010\045\012\017\013" +
    "\uffdb\025\004\026\006\035\042\036\034\037\041\040\026" +
    "\041\025\042\uffc3\043\uffc3\044\046\001\002\000\004\013" +
    "\uffd9\001\002\000\052\002\uffdc\004\uffdc\005\uffdc\011\uffdc" +
    "\013\uffdc\015\uffdc\016\uffdc\017\uffdc\020\uffdc\021\uffdc\022" +
    "\uffdc\023\uffdc\024\uffdc\025\uffdc\026\uffdc\027\uffdc\030\uffdc" +
    "\031\uffdc\032\uffdc\033\uffdc\001\002\000\054\002\uffe3\004" +
    "\uffe3\005\uffe3\011\uffe3\013\uffe3\014\uffe3\015\uffe3\016\uffe3" +
    "\017\uffe3\020\uffe3\021\uffe3\022\uffe3\023\uffe3\024\uffe3\025" +
    "\uffe3\026\uffe3\027\uffe3\030\uffe3\031\uffe3\032\uffe3\033\uffe3" +
    "\001\002\000\016\006\022\007\020\010\045\042\uffc3\043" +
    "\uffc3\044\046\001\002\000\016\006\022\007\020\010\045" +
    "\042\uffc3\043\uffc3\044\046\001\002\000\040\005\050\006" +
    "\022\007\020\010\045\012\017\025\004\026\006\035\042" +
    "\036\034\037\041\040\026\041\025\042\uffc3\043\uffc3\044" +
    "\046\001\002\000\004\015\105\001\002\000\054\002\uffbd" +
    "\004\uffbd\005\uffbd\011\uffbd\013\uffbd\014\uffbd\015\uffbd\016" +
    "\uffbd\017\uffbd\020\uffbd\021\uffbd\022\uffbd\023\uffbd\024\uffbd" +
    "\025\uffbd\026\uffbd\027\uffbd\030\uffbd\031\uffbd\032\uffbd\033" +
    "\uffbd\001\002\000\046\002\uffe6\004\uffe6\005\uffe6\011\uffe6" +
    "\013\uffe6\015\uffe6\016\uffe6\017\uffe6\020\uffe6\021\uffe6\022" +
    "\uffe6\023\uffe6\024\uffe6\027\uffe6\030\uffe6\031\uffe6\032\uffe6" +
    "\033\uffe6\001\002\000\046\002\uffe5\004\uffe5\005\uffe5\011" +
    "\uffe5\013\uffe5\015\uffe5\016\uffe5\017\uffe5\020\uffe5\021\uffe5" +
    "\022\uffe5\023\uffe5\024\uffe5\027\uffe5\030\uffe5\031\uffe5\032" +
    "\uffe5\033\uffe5\001\002\000\036\006\022\007\020\010\045" +
    "\012\017\025\004\026\006\035\042\036\034\037\041\040" +
    "\026\041\025\042\uffc3\043\uffc3\044\046\001\002\000\044" +
    "\002\uffe9\004\uffe9\005\uffe9\011\uffe9\013\uffe9\015\uffe9\016" +
    "\uffe9\017\uffe9\020\uffe9\021\uffe9\022\uffe9\023\uffe9\024\uffe9" +
    "\027\uffe9\030\uffe9\031\uffe9\032\uffe9\001\002\000\016\006" +
    "\022\007\020\010\045\042\uffc3\043\uffc3\044\046\001\002" +
    "\000\016\006\022\007\020\010\045\042\uffc3\043\uffc3\044" +
    "\046\001\002\000\046\002\uffcd\004\uffcd\005\uffcd\011\uffcd" +
    "\013\uffcd\015\uffcd\016\uffcd\017\uffcd\020\uffcd\021\uffcd\022" +
    "\uffcd\023\uffcd\024\uffcd\027\uffcd\030\uffcd\031\uffcd\032\uffcd" +
    "\033\uffcd\001\002\000\046\002\uffbe\004\uffbe\005\uffbe\011" +
    "\uffbe\013\uffbe\015\uffbe\016\uffbe\017\uffbe\020\uffbe\021\uffbe" +
    "\022\uffbe\023\uffbe\024\uffbe\027\uffbe\030\uffbe\031\uffbe\032" +
    "\uffbe\033\uffbe\001\002\000\042\005\050\006\022\007\020" +
    "\010\045\012\017\013\uffdb\025\004\026\006\035\042\036" +
    "\034\037\041\040\026\041\025\042\uffc3\043\uffc3\044\046" +
    "\001\002\000\004\013\120\001\002\000\054\002\uffdd\004" +
    "\uffdd\005\uffdd\011\uffdd\013\uffdd\014\uffdd\015\uffdd\016\uffdd" +
    "\017\uffdd\020\uffdd\021\uffdd\022\uffdd\023\uffdd\024\uffdd\025" +
    "\uffdd\026\uffdd\027\uffdd\030\uffdd\031\uffdd\032\uffdd\033\uffdd" +
    "\001\002\000\040\005\050\006\022\007\020\010\045\012" +
    "\017\025\004\026\006\035\042\036\034\037\041\040\026" +
    "\041\025\042\uffc3\043\uffc3\044\046\001\002\000\040\005" +
    "\050\006\022\007\020\010\045\012\017\025\004\026\006" +
    "\035\042\036\034\037\041\040\026\041\025\042\uffc3\043" +
    "\uffc3\044\046\001\002\000\044\002\ufff2\004\ufff2\005\ufff2" +
    "\011\ufff2\013\ufff2\015\ufff2\016\ufff2\017\ufff2\020\ufff2\021" +
    "\ufff2\022\ufff2\023\ufff2\024\055\027\056\030\054\031\ufff2" +
    "\032\ufff2\001\002\000\044\002\ufff1\004\ufff1\005\ufff1\011" +
    "\ufff1\013\ufff1\015\ufff1\016\ufff1\017\ufff1\020\ufff1\021\ufff1" +
    "\022\ufff1\023\ufff1\024\055\027\056\030\054\031\ufff1\032" +
    "\ufff1\001\002\000\004\013\126\001\002\000\054\002\uffe1" +
    "\004\uffe1\005\uffe1\011\uffe1\013\uffe1\014\uffe1\015\uffe1\016" +
    "\uffe1\017\uffe1\020\uffe1\021\uffe1\022\uffe1\023\uffe1\024\uffe1" +
    "\025\uffe1\026\uffe1\027\uffe1\030\uffe1\031\uffe1\032\uffe1\033" +
    "\uffe1\001\002\000\040\005\050\006\022\007\020\010\045" +
    "\012\017\025\004\026\006\035\042\036\034\037\041\040" +
    "\026\041\025\042\uffc3\043\uffc3\044\046\001\002\000\040" +
    "\005\050\006\022\007\020\010\045\012\017\025\004\026" +
    "\006\035\042\036\034\037\041\040\026\041\025\042\uffc3" +
    "\043\uffc3\044\046\001\002\000\032\002\ufff9\011\ufff9\013" +
    "\ufff9\015\ufff9\016\133\017\132\020\135\021\134\022\ufff9" +
    "\023\ufff9\031\ufff9\032\ufff9\001\002\000\040\005\050\006" +
    "\022\007\020\010\045\012\017\025\004\026\006\035\042" +
    "\036\034\037\041\040\026\041\025\042\uffc3\043\uffc3\044" +
    "\046\001\002\000\040\005\050\006\022\007\020\010\045" +
    "\012\017\025\004\026\006\035\042\036\034\037\041\040" +
    "\026\041\025\042\uffc3\043\uffc3\044\046\001\002\000\040" +
    "\005\050\006\022\007\020\010\045\012\017\025\004\026" +
    "\006\035\042\036\034\037\041\040\026\041\025\042\uffc3" +
    "\043\uffc3\044\046\001\002\000\040\005\050\006\022\007" +
    "\020\010\045\012\017\025\004\026\006\035\042\036\034" +
    "\037\041\040\026\041\025\042\uffc3\043\uffc3\044\046\001" +
    "\002\000\036\002\ufff4\004\122\005\121\011\ufff4\013\ufff4" +
    "\015\ufff4\016\ufff4\017\ufff4\020\ufff4\021\ufff4\022\ufff4\023" +
    "\ufff4\031\ufff4\032\ufff4\001\002\000\036\002\ufff5\004\122" +
    "\005\121\011\ufff5\013\ufff5\015\ufff5\016\ufff5\017\ufff5\020" +
    "\ufff5\021\ufff5\022\ufff5\023\ufff5\031\ufff5\032\ufff5\001\002" +
    "\000\036\002\ufff6\004\122\005\121\011\ufff6\013\ufff6\015" +
    "\ufff6\016\ufff6\017\ufff6\020\ufff6\021\ufff6\022\ufff6\023\ufff6" +
    "\031\ufff6\032\ufff6\001\002\000\036\002\ufff7\004\122\005" +
    "\121\011\ufff7\013\ufff7\015\ufff7\016\ufff7\017\ufff7\020\ufff7" +
    "\021\ufff7\022\ufff7\023\ufff7\031\ufff7\032\ufff7\001\002\000" +
    "\032\002\ufffa\011\ufffa\013\ufffa\015\ufffa\016\133\017\132" +
    "\020\135\021\134\022\ufffa\023\ufffa\031\ufffa\032\ufffa\001" +
    "\002\000\040\005\050\006\022\007\020\010\045\012\017" +
    "\025\004\026\006\035\042\036\034\037\041\040\026\041" +
    "\025\042\uffc3\043\uffc3\044\046\001\002\000\016\002\ufffe" +
    "\011\ufffe\013\ufffe\015\ufffe\031\145\032\ufffe\001\002\000" +
    "\040\005\050\006\022\007\020\010\045\012\017\025\004" +
    "\026\006\035\042\036\034\037\041\040\026\041\025\042" +
    "\uffc3\043\uffc3\044\046\001\002\000\022\002\ufffc\011\ufffc" +
    "\013\ufffc\015\ufffc\022\127\023\130\031\ufffc\032\ufffc\001" +
    "\002\000\054\002\uffc9\004\uffc9\005\uffc9\011\uffc9\013\uffc9" +
    "\014\uffc9\015\uffc9\016\uffc9\017\uffc9\020\uffc9\021\uffc9\022" +
    "\uffc9\023\uffc9\024\uffc9\025\uffc9\026\uffc9\027\uffc9\030\uffc9" +
    "\031\uffc9\032\uffc9\033\uffc9\001\002\000\054\002\uffc7\004" +
    "\uffc7\005\uffc7\011\uffc7\013\uffc7\014\103\015\uffc7\016\uffc7" +
    "\017\uffc7\020\uffc7\021\uffc7\022\uffc7\023\uffc7\024\uffc7\025" +
    "\uffc7\026\uffc7\027\uffc7\030\uffc7\031\uffc7\032\uffc7\033\uffc7" +
    "\001\002\000\054\002\uffc8\004\uffc8\005\uffc8\011\uffc8\013" +
    "\uffc8\014\uffc8\015\uffc8\016\uffc8\017\uffc8\020\uffc8\021\uffc8" +
    "\022\uffc8\023\uffc8\024\uffc8\025\uffc8\026\uffc8\027\uffc8\030" +
    "\uffc8\031\uffc8\032\uffc8\033\uffc8\001\002\000\054\002\uffc7" +
    "\004\uffc7\005\uffc7\011\uffc7\013\uffc7\014\103\015\uffc7\016" +
    "\uffc7\017\uffc7\020\uffc7\021\uffc7\022\uffc7\023\uffc7\024\uffc7" +
    "\025\uffc7\026\uffc7\027\uffc7\030\uffc7\031\uffc7\032\uffc7\033" +
    "\uffc7\001\002\000\052\002\uffcb\004\uffcb\005\uffcb\011\uffcb" +
    "\013\uffcb\015\uffcb\016\uffcb\017\uffcb\020\uffcb\021\uffcb\022" +
    "\uffcb\023\uffcb\024\uffcb\025\uffcb\026\uffcb\027\uffcb\030\uffcb" +
    "\031\uffcb\032\uffcb\033\uffcb\001\002\000\052\002\uffc6\004" +
    "\uffc6\005\uffc6\011\uffc6\013\uffc6\015\uffc6\016\uffc6\017\uffc6" +
    "\020\uffc6\021\uffc6\022\uffc6\023\uffc6\024\uffc6\025\uffc6\026" +
    "\uffc6\027\uffc6\030\uffc6\031\uffc6\032\uffc6\033\uffc6\001\002" +
    "\000\046\002\uffbf\004\uffbf\005\uffbf\011\uffbf\013\uffbf\015" +
    "\uffbf\016\uffbf\017\uffbf\020\uffbf\021\uffbf\022\uffbf\023\uffbf" +
    "\024\uffbf\027\uffbf\030\uffbf\031\uffbf\032\uffbf\033\uffbf\001" +
    "\002\000\046\002\uffd0\004\uffd0\005\uffd0\011\uffd0\013\uffd0" +
    "\015\uffd0\016\uffd0\017\uffd0\020\uffd0\021\uffd0\022\uffd0\023" +
    "\uffd0\024\uffd0\027\uffd0\030\uffd0\031\uffd0\032\uffd0\033\uffd0" +
    "\001\002" });

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

  /** reduce_goto table. */
  protected static final short[][] _reduce_table = 
    unpackFromStrings(new String[] {
    "\000\154\000\070\003\007\004\050\005\026\006\036\007" +
    "\037\010\013\011\015\012\011\013\004\014\022\015\051" +
    "\016\023\017\032\020\035\021\034\022\046\024\031\026" +
    "\030\027\014\030\010\031\012\033\027\034\043\035\052" +
    "\036\020\037\006\040\042\001\001\000\016\030\010\031" +
    "\012\033\027\034\043\035\155\040\042\001\001\000\002" +
    "\001\001\000\016\030\010\031\012\033\027\034\043\035" +
    "\154\040\042\001\001\000\002\001\001\000\002\001\001" +
    "\000\004\032\147\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\070\003\007\004\050\005\026\006\036\007\124\010" +
    "\013\011\015\012\011\013\004\014\022\015\051\016\023" +
    "\017\032\020\035\021\034\022\046\024\031\026\030\027" +
    "\014\030\010\031\012\033\027\034\043\035\052\036\020" +
    "\037\006\040\042\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\004\041" +
    "\077\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\052\003\007\004\050\005\026\006\036\016\065\017" +
    "\032\020\035\021\034\022\046\024\031\026\030\027\014" +
    "\030\010\031\012\033\027\034\043\035\052\036\020\037" +
    "\006\040\042\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\052\003\007\004\050\005\026\006" +
    "\036\016\060\017\032\020\035\021\034\022\046\024\031" +
    "\026\030\027\014\030\010\031\012\033\027\034\043\035" +
    "\052\036\020\037\006\040\042\001\001\000\052\003\007" +
    "\004\050\005\026\006\036\016\057\017\032\020\035\021" +
    "\034\022\046\024\031\026\030\027\014\030\010\031\012" +
    "\033\027\034\043\035\052\036\020\037\006\040\042\001" +
    "\001\000\052\003\007\004\050\005\026\006\036\016\056" +
    "\017\032\020\035\021\034\022\046\024\031\026\030\027" +
    "\014\030\010\031\012\033\027\034\043\035\052\036\020" +
    "\037\006\040\042\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\016\030\010\031\012\033\027" +
    "\034\043\035\064\040\042\001\001\000\016\030\010\031" +
    "\012\033\027\034\043\035\063\040\042\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\074\003\007\004\050\005\026" +
    "\006\036\007\073\010\013\011\015\012\011\013\004\014" +
    "\022\015\051\016\023\017\032\020\035\021\034\022\046" +
    "\023\071\024\031\025\072\026\030\027\014\030\010\031" +
    "\012\033\027\034\043\035\052\036\020\037\006\040\042" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\074\003\007\004\050\005\026\006\036\007\073" +
    "\010\013\011\015\012\011\013\004\014\022\015\051\016" +
    "\023\017\032\020\035\021\034\022\046\023\075\024\031" +
    "\025\072\026\030\027\014\030\010\031\012\033\027\034" +
    "\043\035\052\036\020\037\006\040\042\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\016\030" +
    "\010\031\012\033\027\034\043\035\106\040\042\001\001" +
    "\000\016\030\010\031\012\033\027\034\043\035\105\040" +
    "\042\001\001\000\070\003\007\004\050\005\026\006\036" +
    "\007\103\010\013\011\015\012\011\013\004\014\022\015" +
    "\051\016\023\017\032\020\035\021\034\022\046\024\031" +
    "\026\030\027\014\030\010\031\012\033\027\034\043\035" +
    "\052\036\020\037\006\040\042\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\050\003\007\004\050\005\026\006\036\017\032\020\035" +
    "\021\034\022\110\024\031\026\030\027\014\030\010\031" +
    "\012\033\027\034\043\035\052\036\020\037\006\040\042" +
    "\001\001\000\002\001\001\000\016\030\010\031\012\033" +
    "\027\034\043\035\114\040\042\001\001\000\016\030\010" +
    "\031\012\033\027\034\043\035\113\040\042\001\001\000" +
    "\002\001\001\000\002\001\001\000\074\003\007\004\050" +
    "\005\026\006\036\007\073\010\013\011\015\012\011\013" +
    "\004\014\022\015\051\016\023\017\032\020\035\021\034" +
    "\022\046\023\116\024\031\025\072\026\030\027\014\030" +
    "\010\031\012\033\027\034\043\035\052\036\020\037\006" +
    "\040\042\001\001\000\002\001\001\000\002\001\001\000" +
    "\054\003\007\004\050\005\026\006\036\015\123\016\023" +
    "\017\032\020\035\021\034\022\046\024\031\026\030\027" +
    "\014\030\010\031\012\033\027\034\043\035\052\036\020" +
    "\037\006\040\042\001\001\000\054\003\007\004\050\005" +
    "\026\006\036\015\122\016\023\017\032\020\035\021\034" +
    "\022\046\024\031\026\030\027\014\030\010\031\012\033" +
    "\027\034\043\035\052\036\020\037\006\040\042\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\060\003\007\004\050\005\026\006\036" +
    "\013\141\014\022\015\051\016\023\017\032\020\035\021" +
    "\034\022\046\024\031\026\030\027\014\030\010\031\012" +
    "\033\027\034\043\035\052\036\020\037\006\040\042\001" +
    "\001\000\060\003\007\004\050\005\026\006\036\013\130" +
    "\014\022\015\051\016\023\017\032\020\035\021\034\022" +
    "\046\024\031\026\030\027\014\030\010\031\012\033\027" +
    "\034\043\035\052\036\020\037\006\040\042\001\001\000" +
    "\002\001\001\000\056\003\007\004\050\005\026\006\036" +
    "\014\140\015\051\016\023\017\032\020\035\021\034\022" +
    "\046\024\031\026\030\027\014\030\010\031\012\033\027" +
    "\034\043\035\052\036\020\037\006\040\042\001\001\000" +
    "\056\003\007\004\050\005\026\006\036\014\137\015\051" +
    "\016\023\017\032\020\035\021\034\022\046\024\031\026" +
    "\030\027\014\030\010\031\012\033\027\034\043\035\052" +
    "\036\020\037\006\040\042\001\001\000\056\003\007\004" +
    "\050\005\026\006\036\014\136\015\051\016\023\017\032" +
    "\020\035\021\034\022\046\024\031\026\030\027\014\030" +
    "\010\031\012\033\027\034\043\035\052\036\020\037\006" +
    "\040\042\001\001\000\056\003\007\004\050\005\026\006" +
    "\036\014\135\015\051\016\023\017\032\020\035\021\034" +
    "\022\046\024\031\026\030\027\014\030\010\031\012\033" +
    "\027\034\043\035\052\036\020\037\006\040\042\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\064\003\007\004\050" +
    "\005\026\006\036\011\015\012\143\013\004\014\022\015" +
    "\051\016\023\017\032\020\035\021\034\022\046\024\031" +
    "\026\030\027\014\030\010\031\012\033\027\034\043\035" +
    "\052\036\020\037\006\040\042\001\001\000\002\001\001" +
    "\000\062\003\007\004\050\005\026\006\036\011\145\013" +
    "\004\014\022\015\051\016\023\017\032\020\035\021\034" +
    "\022\046\024\031\026\030\027\014\030\010\031\012\033" +
    "\027\034\043\035\052\036\020\037\006\040\042\001\001" +
    "\000\002\001\001\000\002\001\001\000\006\041\151\042" +
    "\152\001\001\000\002\001\001\000\006\041\151\042\153" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001" });

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

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

  /** Action encapsulation object initializer. */
  protected void init_actions()
    {
      action_obj = new CUP$XSLParser$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$XSLParser$do_action(act_num, parser, stack, top);
  }

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

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

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


  
  public Hashtable nsHash;
  public Hashtable symbolHash;
  Step tempStep;
  NodeTest tempNt;
  LocationPathExpr tempLPExpr;
  //ExprList tmpEL1, tmpEL2;
  
  public XSLParser (java.io.Reader input) {
    super(new XSLScanner(input));
    nsHash = null;
  }
  
  public XSLParser (java.io.InputStream input) {
    super(new XSLScanner(input));
  }

  public static void main(String args[]){
    try {
      String s="//abc[document('',document(''))//a/b/c]";
      s="./.";
      XSLParser p = new XSLParser(new StringReader(s));
      Object result = p.parse().value;
      //System.out.println(((Expr)result).evalNumber(null));
      System.out.println(((Expr)result));
    }
    catch (Exception e) {
		System.out.println("caught: "+e);
    }
  }
  
  public void setStrictScanner(boolean b){
	((XSLScanner)getScanner()).setStrict(b);
  }
 
  public void report_error(String message, Object info) {
	//throw new XPathParseException("Syntax error during parsing");
  }

  public void report_fatal_error(String message, Object info) throws XPathParseException{
	throw new XPathParseException("Syntax error during parsing: "+ message);
  }

  public void syntax_error(Symbol cur_token) {
	
  }
  
  public void unrecovered_syntax_error(Symbol cur_token) throws XPathParseException{
	XSLScanner scanner = (XSLScanner)getScanner();
	throw new XPathParseException("XPath Syntax error: "+cur_token, scanner.getOffset());
  }
 
}

/** Cup generated class to encapsulate user supplied action code.*/
class CUP$XSLParser$actions {
  private final XSLParser parser;

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

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

      /* select the action based on the action number */
      switch (CUP$XSLParser$act_num)
        {
          /*. . . . . . . . . . . . . . . . . . . .*/
          case 71: // LocationPathFuncName ::= FNAME2 
            {
              FuncName RESULT = null;
		int fn2left = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int fn2right = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		FuncName fn2 = (FuncName)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		
			RESULT= fn2;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(4/*LocationPathFuncName*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 70: // FunctionName ::= FNAME 
            {
              FuncName RESULT = null;
		int fnleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int fnright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		FuncName fn = (FuncName)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = fn; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(3/*FunctionName*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 69: // VariableReference ::= DOLLAR NAME 
            {
              Expr RESULT = null;
		int nleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int nright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		NameType n = (NameType)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		
		    if (parser.symbolHash.get(n.qname)==null)
		      throw new XPathParseException("variableExpression not declared ==> $"+n.qname);
			RESULT = new VariableExpr(n.qname, (Expr)parser.symbolHash.get(n.qname));					
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(15/*VariableReference*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 68: // Predicate ::= LB Expr RB 
            {
              Predicate RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).right;
		Expr e = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).value;
			RESULT = new Predicate();
   		        RESULT.expr= e; 
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(31/*Predicate*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 67: // AbbreviatedRelativeLocationPath ::= Step DSLASH RelativeLocationPath 
            {
              Step RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Step s = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new Step();
		  RESULT.setAxisType(AxisType.DESCENDANT_OR_SELF);
		  parser.tempNt = new NodeTest();
					  
		  parser.tempNt.setTestType(NodeTest.NODE);
		  RESULT.setNodeTest(parser.tempNt);
		  s.setNextStep(RESULT);
		  RESULT.setPrevStep(s);
		  RESULT.setNextStep(rlp);
		  rlp.setPrevStep(RESULT);
		  RESULT = s;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(30/*AbbreviatedRelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 66: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath 
            {
              Step RESULT = null;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		
		  RESULT = new Step();
		  RESULT.setAxisType(AxisType.DESCENDANT_OR_SELF);
		  parser.tempNt = new NodeTest();
		  parser.tempNt.setTestType(NodeTest.NODE);
		  RESULT.setNodeTest(parser.tempNt);
		  RESULT.setNextStep(rlp);
		  rlp.setPrevStep(RESULT);
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(29/*AbbreviatedAbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 65: // AbbreviatedStep ::= DDOT 
            {
              Step RESULT = null;
		  RESULT = new Step();
		    parser.tempNt = new NodeTest();
  		    parser.tempNt.setTestType(NodeTest.NODE);
		    RESULT.setAxisType(AxisType.PARENT);
		    RESULT.setNodeTest(parser.tempNt);
		    // System.out.println("result  " + RESULT.toString());
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(26/*AbbreviatedStep*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 64: // AbbreviatedStep ::= DOT 
            {
              Step RESULT = null;
		  RESULT = new Step();
		    parser.tempNt = new NodeTest();
  		    parser.tempNt.setTestType(NodeTest.NODE);
		    RESULT.setAxisType(AxisType.SELF);
		    RESULT.setNodeTest(parser.tempNt);				 
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(26/*AbbreviatedStep*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 63: // AbbreviatedAxisSpecifier ::= AT 
            {
              AxisType RESULT = null;
		 RESULT = new AxisType(); RESULT.i = AxisType.ATTRIBUTE; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(23/*AbbreviatedAxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 62: // AbbreviatedAxisSpecifier ::= 
            {
              AxisType RESULT = null;
		 RESULT = new AxisType(); RESULT.i = AxisType.CHILD; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(23/*AbbreviatedAxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 61: // AxisSpecifier ::= AbbreviatedAxisSpecifier 
            {
              AxisType RESULT = null;
		int aasleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aasright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		AxisType aas = (AxisType)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		  RESULT = aas; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(22/*AxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 60: // AxisSpecifier ::= AXISNAME 
            {
              AxisType RESULT = null;
		int anleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int anright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		AxisType an = (AxisType)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		  RESULT = an; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(22/*AxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 59: // PredicateList ::= Predicate PredicateList 
            {
              Predicate RESULT = null;
		int pleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left;
		int pright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).right;
		Predicate p = (Predicate)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).value;
		int plleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int plright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Predicate pl = (Predicate)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		  p.nextP = pl;
		    RESULT = p;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(32/*PredicateList*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 58: // PredicateList ::= 
            {
              Predicate RESULT = null;
		 RESULT = null;
	      	
              CUP$XSLParser$result = new java_cup.runtime.Symbol(32/*PredicateList*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 57: // nodetest ::= NTEST 
            {
              NodeTest RESULT = null;
		int n2left = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Ntest n2 = (Ntest)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new NodeTest();
		   if (n2.i!=3)
		   	RESULT.setTestType(n2.i);
		   else {
		   	if (n2.arg ==null)
		   	   RESULT.setTestType(n2.i); //PI0
		   	else {
		   		RESULT.setTestType(4); //PI1
		   		RESULT.setNodeName(n2.arg);
		   	}
		   }		  		
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(24/*nodetest*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 56: // nodetest ::= NAME 
            {
              NodeTest RESULT = null;
		int nleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int nright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		NameType n = (NameType)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new NodeTest();
	 	   RESULT.setTestType(NodeTest.NAMETEST);
		   RESULT.setNodeName(n.qname);
		   if (n.localname!=null){
		   	 RESULT.setNodeNameNS(n.prefix,n.localname);
		   	 if (parser.nsHash==null || parser.nsHash.get(n.prefix) ==null)
		   	    throw new XPathParseException("No URL found for prefix:"+n.prefix);
		   	 RESULT.URL = (String) parser.nsHash.get(n.prefix);
		   }
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(24/*nodetest*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 55: // Step ::= AbbreviatedStep 
            {
              Step RESULT = null;
		int absleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int absright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step abs = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = abs; 
		   //System.out.println(" step 4"); 
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(25/*Step*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 54: // Step ::= AxisSpecifier nodetest PredicateList 
            {
              Step RESULT = null;
		int asleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int asright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		AxisType as = (AxisType)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int ntleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left;
		int ntright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).right;
		NodeTest nt = (NodeTest)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).value;
		int plleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int plright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Predicate pl = (Predicate)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new Step();
      	   RESULT.setAxisType(as.i);
      	   if ( (as.i== AxisType.ATTRIBUTE
	        	 || as.i == AxisType.DESCENDANT
      	         || as.i == AxisType.PRECEDING
      	         || as.i == AxisType.FOLLOWING
      	         || as.i == AxisType.FOLLOWING_SIBLING
      	         || as.i == AxisType.PRECEDING_SIBLING
      	         || as.i == AxisType.NAMESPACE) && 
      	        (nt.testType>1)){
      	          XSLScanner scanner = (XSLScanner)parser.getScanner();
      	          throw new XPathParseException(as.getAxisString()+" axis can't operate on"+
      	                 " comment(), pi(), or text()",
      	         	scanner.getOffset());
      	         	}
      	   
      	   RESULT.setNodeTest(nt);
		   RESULT.setPredicate(pl);
		   	
		   //System.out.println(" Step 3 ");
		   
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(25/*Step*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 53: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath 
            {
              Step RESULT = null;
		int arlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int arlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step arlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = arlp;	
              CUP$XSLParser$result = new java_cup.runtime.Symbol(27/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 52: // RelativeLocationPath ::= Step SLASH RelativeLocationPath 
            {
              Step RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Step s = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 //if (s == rlp) throw new XPathParseException("$1 = $3!!!!");
		   s.nextS = rlp;						
		   rlp.prevS = s;							 
		   RESULT= s;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(27/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 51: // RelativeLocationPath ::= Step 
            {
              Step RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step s = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = s; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(27/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 50: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath 
            {
              Step RESULT = null;
		int aalpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aalpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step aalp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		  RESULT = aalp;   
              CUP$XSLParser$result = new java_cup.runtime.Symbol(28/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 49: // AbsoluteLocationPath ::= SLASH RelativeLocationPath 
            {
              Step RESULT = null;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		  RESULT = rlp;   
              CUP$XSLParser$result = new java_cup.runtime.Symbol(28/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 48: // AbsoluteLocationPath ::= SLASH 
            {
              Step RESULT = null;
		  RESULT = null; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(28/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 47: // FunctionalLocationPath ::= LocationPathFunctionCall DSLASH RelativeLocationPath 
            {
              LocationPathExpr RESULT = null;
		int lpfcleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int lpfcright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		FuncExpr lpfc = (FuncExpr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		
 			parser.tempStep = new Step();
		     parser.tempStep.setAxisType(AxisType.DESCENDANT_OR_SELF);
		     parser.tempNt = new NodeTest();
		     parser.tempNt.setTestType(NodeTest.NODE);
		     parser.tempStep.setNodeTest(parser.tempNt);

		     parser.tempStep.setNextStep(rlp);
		     rlp.setPrevStep(parser.tempStep); 		
		     RESULT = new FunctionalLocationPathExpr(lpfc);
			 //RESULT.setFunc(lpfc);
			 //RESULT.setPathType(LocationPathExpr.FUNC_PATH);
			 RESULT.setStep(parser.tempStep);	
 		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(21/*FunctionalLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 46: // FunctionalLocationPath ::= LocationPathFunctionCall SLASH RelativeLocationPath 
            {
              LocationPathExpr RESULT = null;
		int lpfcleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int lpfcright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		FuncExpr lpfc = (FuncExpr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		
 			RESULT = new FunctionalLocationPathExpr(lpfc);
			//RESULT.setFunc(lpfc);
			//RESULT.setPathType(LocationPathExpr.FUNC_PATH);
			RESULT.setStep(rlp);		
 		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(21/*FunctionalLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 45: // FunctionalLocationPath ::= LocationPathFunctionCall 
            {
              LocationPathExpr RESULT = null;
		int lpfcleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int lpfcright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		FuncExpr lpfc = (FuncExpr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		
			RESULT = new FunctionalLocationPathExpr(lpfc);
			//RESULT.setFunc(lpfc);
			//RESULT.setPathType(LocationPathExpr.FUNC_PATH);
 		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(21/*FunctionalLocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 44: // LocationPath ::= FunctionalLocationPath 
            {
              LocationPathExpr RESULT = null;
		int flpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int flpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		LocationPathExpr flp = (LocationPathExpr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 
			RESULT = flp;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(20/*LocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 43: // LocationPath ::= AbsoluteLocationPath 
            {
              LocationPathExpr RESULT = null;
		int alpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int alpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step alp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new LocationPathExpr();
		   RESULT.setPathType(LocationPathExpr.ABSOLUTE_PATH);
		   //System.out.println(" absolute ");
		   RESULT.setStep(alp);
		   //startStep = currentStep=null;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(20/*LocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 42: // LocationPath ::= RelativeLocationPath 
            {
              LocationPathExpr RESULT = null;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new LocationPathExpr();
		   RESULT.setStep(rlp); 
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(20/*LocationPath*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 41: // Argument ::= Expr 
            {
              Expr RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr e = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = e; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(19/*Argument*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 40: // ArgumentList ::= Argument COMMA ArgumentList 
            {
              Alist RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr a = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int alleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int alright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Alist al = (Alist)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new Alist();
		   RESULT.e = a;
		   RESULT.next = al;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(17/*ArgumentList*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 39: // ArgumentList ::= Argument 
            {
              Alist RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr a = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new Alist();
		   RESULT.e = a; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(17/*ArgumentList*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 38: // ArgumentList ::= 
            {
              Alist RESULT = null;
		 RESULT = null; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(17/*ArgumentList*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 37: // LocationPathFunctionCall ::= LocationPathFuncName LP ArgumentList RP 
            {
              FuncExpr RESULT = null;
		int lpfnleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-3)).left;
		int lpfnright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-3)).right;
		FuncName lpfn = (FuncName)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-3)).value;
		int alleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left;
		int alright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).right;
		Alist al = (Alist)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).value;
		 FuncExpr tfe = new FuncExpr(lpfn.i, al); 
		   if (!tfe.checkArgumentCount())
		    	throw new XPathParseException(" argument input for function "+tfe.fname()+" incorrect");
		   RESULT = tfe;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(2/*LocationPathFunctionCall*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 36: // FunctionCall ::= FunctionName LP ArgumentList RP 
            {
              FuncExpr RESULT = null;
		int fnleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-3)).left;
		int fnright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-3)).right;
		FuncName fn = (FuncName)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-3)).value;
		int alleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left;
		int alright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).right;
		Alist al = (Alist)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).value;
		 FuncExpr tfe = new FuncExpr(fn.i, al); 
		   if (!tfe.checkArgumentCount())
		    	throw new XPathParseException(" argument input for function "+tfe.fname()+" incorrect");
		   RESULT = tfe;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(1/*FunctionCall*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 35: // PrimaryExpr ::= FunctionCall 
            {
              Expr RESULT = null;
		int fcleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int fcright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		FuncExpr fc = (FuncExpr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = fc; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(18/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 34: // PrimaryExpr ::= NUMBER 
            {
              Expr RESULT = null;
		int neleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int neright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Double ne = (Double)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new NumExpr(ne.doubleValue()); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(18/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 33: // PrimaryExpr ::= LITERAL 
            {
              Expr RESULT = null;
		int leleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int leright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		String le = (String)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new LiteralExpr(le); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(18/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 32: // PrimaryExpr ::= LP Expr RP 
            {
              Expr RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).right;
		Expr e = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).value;
		 RESULT = e; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(18/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 31: // PrimaryExpr ::= VariableReference 
            {
              Expr RESULT = null;
		int veleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int veright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ve = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = ve; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(18/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 30: // FilterExpr ::= FilterExpr Predicate 
            {
              Expr RESULT = null;
		int feleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left;
		int feright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).right;
		Expr fe = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).value;
		int pleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int pright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Predicate p = (Predicate)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new FilterExpr(fe, p);
              CUP$XSLParser$result = new java_cup.runtime.Symbol(14/*FilterExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 29: // FilterExpr ::= PrimaryExpr 
            {
              Expr RESULT = null;
		int peleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int peright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr pe = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = pe; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(14/*FilterExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 28: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath 
            {
              Expr RESULT = null;
		int feleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int feright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr fe = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		   parser.tempStep = new Step();

		     parser.tempStep.setAxisType(AxisType.DESCENDANT_OR_SELF);
		     parser.tempNt = new NodeTest();
		     parser.tempNt.setTestType(NodeTest.NODE);

		     parser.tempStep.setNodeTest(parser.tempNt);

		     parser.tempStep.setNextStep(rlp);
		     rlp.setPrevStep(parser.tempStep);
		     
		     /*parser.tempStep2 = new Step();
		     parser.tempNt = new NodeTest();
		     parser.tempStep2.setAxisType(AxisType.SELF);
		     parser.tempNt.setTestType(NodeTest.NODE);

		     parser.tempStep2.setNodeTest(parser.tempNt);
	
  		     parser.tempStep2.setNextStep(parser.tempStep);
		     parser.tempStep.setPrevStep(parser.tempStep2);*/

		     parser.tempLPExpr = new LocationPathExpr();
		     parser.tempLPExpr.setStep(parser.tempStep);
		     RESULT = new PathExpr(fe, parser.tempLPExpr);
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(13/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 27: // PathExpr ::= FilterExpr SLASH RelativeLocationPath 
            {
              Expr RESULT = null;
		int feleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int feright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr fe = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int rlpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int rlpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Step rlp = (Step)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		   parser.tempLPExpr = new LocationPathExpr();
		     parser.tempLPExpr.setStep(rlp);
		     RESULT = new PathExpr(fe, parser.tempLPExpr);	
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(13/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 26: // PathExpr ::= FilterExpr 
            {
              Expr RESULT = null;
		int feleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int feright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr fe = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		  RESULT = fe; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(13/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 25: // PathExpr ::= LocationPath 
            {
              Expr RESULT = null;
		int lpleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int lpright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		LocationPathExpr lp = (LocationPathExpr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		  RESULT = lp; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(13/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 24: // UnionExpr ::= PathExpr UNION UnionExpr 
            {
              UnionExpr RESULT = null;
		int peleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int peright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr pe = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int uneleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int uneright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		UnionExpr une = (UnionExpr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		
   		   RESULT = new UnionExpr(pe);
   		   RESULT.next = une;
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(16/*UnionExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 23: // UnionExpr ::= PathExpr 
            {
              UnionExpr RESULT = null;
		int peleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int peright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr pe = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT =  new UnionExpr(pe); 
		
              CUP$XSLParser$result = new java_cup.runtime.Symbol(16/*UnionExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 22: // UnaryExpr ::= SUB UnaryExpr 
            {
              Expr RESULT = null;
		int ueleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int ueright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ue = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new UnaryExpr( BinaryExpr.SUB, ue); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(12/*UnaryExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 21: // UnaryExpr ::= UnionExpr 
            {
              Expr RESULT = null;
		int ueleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int ueright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		UnionExpr ue = (UnionExpr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = ue; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(12/*UnaryExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 20: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr 
            {
              Expr RESULT = null;
		int meleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int meright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr me = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int ueleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int ueright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ue = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(me, BinaryExpr.MOD, ue); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(11/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 19: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr 
            {
              Expr RESULT = null;
		int meleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int meright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr me = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int ueleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int ueright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ue = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(me, BinaryExpr.DIV, ue); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(11/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 18: // MultiplicativeExpr ::= MultiplicativeExpr MULT UnaryExpr 
            {
              Expr RESULT = null;
		int meleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int meright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr me = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int ueleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int ueright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ue = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(me, BinaryExpr.MULT, ue); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(11/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 17: // MultiplicativeExpr ::= UnaryExpr 
            {
              Expr RESULT = null;
		int ueleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int ueright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ue = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = ue; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(11/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 16: // AdditiveExpr ::= AdditiveExpr SUB MultiplicativeExpr 
            {
              Expr RESULT = null;
		int aeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int aeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr ae = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int meleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int meright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr me = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(ae, BinaryExpr.SUB, me); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(10/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // AdditiveExpr ::= AdditiveExpr ADD MultiplicativeExpr 
            {
              Expr RESULT = null;
		int aeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int aeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr ae = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int meleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int meright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr me = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(ae, BinaryExpr.ADD, me); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(10/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 14: // AdditiveExpr ::= MultiplicativeExpr 
            {
              Expr RESULT = null;
		int meleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int meright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr me = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = me; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(10/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // RelationalExpr ::= RelationalExpr GE AdditiveExpr 
            {
              Expr RESULT = null;
		int releft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int reright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr re = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int aeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ae = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(re, BinaryExpr.GE, ae); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(9/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 12: // RelationalExpr ::= RelationalExpr LE AdditiveExpr 
            {
              Expr RESULT = null;
		int releft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int reright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr re = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int aeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ae = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(re, BinaryExpr.LE, ae);  
              CUP$XSLParser$result = new java_cup.runtime.Symbol(9/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // RelationalExpr ::= RelationalExpr GT AdditiveExpr 
            {
              Expr RESULT = null;
		int releft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int reright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr re = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int aeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ae = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(re, BinaryExpr.GT, ae); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(9/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 10: // RelationalExpr ::= RelationalExpr LT AdditiveExpr 
            {
              Expr RESULT = null;
		int releft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int reright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr re = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int aeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ae = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(re, BinaryExpr.LT, ae); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(9/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // RelationalExpr ::= AdditiveExpr 
            {
              Expr RESULT = null;
		int aeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ae = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = ae; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(9/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 8: // EqualityExpr ::= EqualityExpr NE RelationalExpr 
            {
              Expr RESULT = null;
		int eeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int eeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr ee = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int releft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int reright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr re = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(ee, BinaryExpr.NE, re); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(7/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // EqualityExpr ::= EqualityExpr EQ RelationalExpr 
            {
              Expr RESULT = null;
		int eeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int eeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr ee = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int releft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int reright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr re = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(ee, BinaryExpr.EQ, re); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(7/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // EqualityExpr ::= RelationalExpr 
            {
              Expr RESULT = null;
		int releft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int reright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr re = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = re; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(7/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 5: // AndExpr ::= AndExpr AND EqualityExpr 
            {
              Expr RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr a = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int eeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int eeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ee = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(a, BinaryExpr.AND, ee); 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(8/*AndExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 4: // AndExpr ::= EqualityExpr 
            {
              Expr RESULT = null;
		int eeleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int eeright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr ee = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = ee; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(8/*AndExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // OrExpr ::= OrExpr OR AndExpr 
            {
              Expr RESULT = null;
		int oleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).right;
		Expr o = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).value;
		int aleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr a = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = new BinaryExpr(o,BinaryExpr.OR,a);
              CUP$XSLParser$result = new java_cup.runtime.Symbol(6/*OrExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // OrExpr ::= AndExpr 
            {
              Expr RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr a = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = a; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(6/*OrExpr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

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

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 0: // Expr ::= OrExpr 
            {
              Expr RESULT = null;
		int oleft = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right;
		Expr o = (Expr)((java_cup.runtime.Symbol) CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).value;
		 RESULT = o; 
              CUP$XSLParser$result = new java_cup.runtime.Symbol(5/*Expr*/, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XSLParser$stack.elementAt(CUP$XSLParser$top-0)).right, RESULT);
            }
          return CUP$XSLParser$result;

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

        }
    }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy