1 /*
   2  * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package com.sun.org.apache.xalan.internal.xsltc.compiler;
  27 
  28 import com.sun.java_cup.internal.runtime.*;
  29 import com.sun.org.apache.xalan.internal.xsltc.DOM;
  30 import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
  31 import com.sun.org.apache.xalan.internal.xsltc.runtime.Operators;
  32 import com.sun.org.apache.xml.internal.dtm.Axis;
  33 import com.sun.org.apache.xml.internal.dtm.DTM;
  34 import java.util.ArrayList;
  35 import java.util.List;
  36 import java.util.Stack;
  37 
  38 /**
  39  * CUP v0.10j generated parser.
  40  * This class was generated by CUP v0.10j on Thu Oct 06 10:09:26 PDT 2005.
  41  */
  42 public class XPathParser extends lr_parser {
  43 
  44   /** Default constructor. */
  45   public XPathParser() {super();}
  46 
  47   /** Constructor which sets the default scanner. */
  48   public XPathParser(Scanner s) {super(s);}
  49 
  50   /** Production table. */
  51   protected static final short _production_table[][] =
  52     unpackFromStrings(new String[] {
  53     "\000\215\000\002\002\004\000\002\003\004\000\002\003" +
  54     "\004\000\002\036\003\000\002\036\005\000\002\037\003" +
  55     "\000\002\037\004\000\002\037\003\000\002\037\005\000" +
  56     "\002\037\005\000\002\037\004\000\002\037\003\000\002" +
  57     "\035\006\000\002\035\010\000\002\040\006\000\002\041" +
  58     "\003\000\002\041\005\000\002\041\005\000\002\042\003" +
  59     "\000\002\042\004\000\002\042\003\000\002\042\004\000" +
  60     "\002\042\004\000\002\042\005\000\002\042\004\000\002" +
  61     "\042\005\000\002\043\003\000\002\043\003\000\002\043" +
  62     "\003\000\002\043\003\000\002\043\003\000\002\044\003" +
  63     "\000\002\044\003\000\002\054\003\000\002\054\004\000" +
  64     "\002\054\004\000\002\045\003\000\002\045\004\000\002" +
  65     "\007\005\000\002\004\003\000\002\012\003\000\002\012" +
  66     "\005\000\002\013\003\000\002\013\005\000\002\014\003" +
  67     "\000\002\014\005\000\002\014\005\000\002\015\003\000" +
  68     "\002\015\005\000\002\015\005\000\002\015\005\000\002" +
  69     "\015\005\000\002\016\003\000\002\016\005\000\002\016" +
  70     "\005\000\002\017\003\000\002\017\005\000\002\017\005" +
  71     "\000\002\017\005\000\002\020\003\000\002\020\004\000" +
  72     "\002\024\003\000\002\024\005\000\002\025\003\000\002" +
  73     "\025\003\000\002\025\005\000\002\025\005\000\002\006" +
  74     "\003\000\002\006\003\000\002\027\003\000\002\027\005" +
  75     "\000\002\027\003\000\002\031\003\000\002\031\004\000" +
  76     "\002\031\003\000\002\030\005\000\002\032\004\000\002" +
  77     "\011\003\000\002\011\004\000\002\011\005\000\002\011" +
  78     "\004\000\002\011\003\000\002\053\004\000\002\053\003" +
  79     "\000\002\052\003\000\002\052\003\000\002\052\003\000" +
  80     "\002\052\003\000\002\052\003\000\002\052\003\000\002" +
  81     "\052\003\000\002\052\003\000\002\052\003\000\002\052" +
  82     "\003\000\002\052\003\000\002\052\003\000\002\052\003" +
  83     "\000\002\026\003\000\002\026\003\000\002\010\003\000" +
  84     "\002\010\004\000\002\023\003\000\002\023\005\000\002" +
  85     "\023\003\000\002\023\003\000\002\023\003\000\002\023" +
  86     "\003\000\002\021\004\000\002\022\005\000\002\022\006" +
  87     "\000\002\046\003\000\002\046\005\000\002\050\003\000" +
  88     "\002\051\003\000\002\005\003\000\002\033\003\000\002" +
  89     "\033\003\000\002\033\003\000\002\033\003\000\002\033" +
  90     "\006\000\002\033\003\000\002\034\003\000\002\034\003" +
  91     "\000\002\047\003\000\002\047\003\000\002\047\003\000" +
  92     "\002\047\003\000\002\047\003\000\002\047\003\000\002" +
  93     "\047\003\000\002\047\003\000\002\047\003\000\002\047" +
  94     "\003\000\002\047\003\000\002\047\003\000\002\047\003" +
  95     "\000\002\047\003\000\002\047\003\000\002\047\003\000" +
  96     "\002\047\003\000\002\047\003" });
  97 
  98   /** Access to production table. */
  99   public short[][] production_table() {return _production_table;}
 100 
 101   /** Parse-action table. */
 102   protected static final short[][] _action_table =
 103     unpackFromStrings(new String[] {
 104     "\000\307\000\006\066\006\067\005\001\002\000\004\002" +
 105     "\311\001\002\000\110\004\061\005\111\011\071\013\103" +
 106     "\015\134\016\066\017\106\021\070\031\075\032\031\033" +
 107     "\040\034\057\035\034\036\113\037\141\040\142\041\145" +
 108     "\044\063\045\062\046\065\047\115\050\123\051\136\052" +
 109     "\077\053\143\054\131\055\125\056\116\057\104\060\140" +
 110     "\061\067\062\060\063\127\064\132\065\072\001\002\000" +
 111     "\070\004\013\013\027\016\020\021\023\032\031\033\040" +
 112     "\035\034\036\033\037\046\040\047\041\051\044\015\045" +
 113     "\014\046\016\047\036\050\037\051\044\052\025\053\050" +
 114     "\054\043\055\041\056\035\057\030\060\045\061\021\062" +
 115     "\012\063\042\001\002\000\006\002\ufffe\010\306\001\002" +
 116     "\000\004\002\000\001\002\000\014\002\uffe7\004\uffe7\006" +
 117     "\uffe7\010\uffe7\021\uffe7\001\002\000\054\002\uff7a\004\uff7a" +
 118     "\006\uff7a\007\uff7a\010\uff7a\012\uff7a\013\uff7a\014\uff7a\021" +
 119     "\uff7a\022\uff7a\023\uff7a\024\uff7a\025\uff7a\026\uff7a\027\uff7a" +
 120     "\030\uff7a\031\uff7a\032\uff7a\033\uff7a\042\uff7a\043\uff7a\001" +
 121     "\002\000\070\002\ufffc\010\ufffc\013\027\016\020\032\031" +
 122     "\033\040\035\034\036\113\037\141\040\047\041\051\044" +
 123     "\015\045\014\046\016\047\036\050\037\051\044\052\025" +
 124     "\053\050\054\043\055\041\056\035\057\030\060\045\061" +
 125     "\021\062\012\063\042\001\002\000\014\002\uffe3\004\uffe3" +
 126     "\006\uffe3\010\uffe3\021\uffe3\001\002\000\014\002\uffe4\004" +
 127     "\uffe4\006\uffe4\010\uffe4\021\uffe4\001\002\000\004\011\302" +
 128     "\001\002\000\012\002\ufffa\004\277\010\ufffa\021\276\001" +
 129     "\002\000\062\013\uffe0\032\uffe0\033\uffe0\035\uffe0\036\uffe0" +
 130     "\037\uffe0\040\uffe0\041\uffe0\044\uffe0\045\uffe0\046\uffe0\047" +
 131     "\uffe0\050\uffe0\051\uffe0\052\uffe0\053\uffe0\054\uffe0\055\uffe0" +
 132     "\056\uffe0\057\uffe0\060\uffe0\061\uffe0\062\uffe0\063\uffe0\001" +
 133     "\002\000\054\002\uff7b\004\uff7b\006\uff7b\007\uff7b\010\uff7b" +
 134     "\012\uff7b\013\uff7b\014\uff7b\021\uff7b\022\uff7b\023\uff7b\024" +
 135     "\uff7b\025\uff7b\026\uff7b\027\uff7b\030\uff7b\031\uff7b\032\uff7b" +
 136     "\033\uff7b\042\uff7b\043\uff7b\001\002\000\062\013\027\032" +
 137     "\031\033\040\035\034\036\113\037\141\040\047\041\051" +
 138     "\044\015\045\014\046\016\047\036\050\037\051\044\052" +
 139     "\170\053\166\054\043\055\041\056\035\057\030\060\045" +
 140     "\061\021\062\012\063\042\001\002\000\064\013\027\016" +
 141     "\020\032\031\033\040\035\034\036\113\037\141\040\047" +
 142     "\041\051\044\015\045\014\046\016\047\036\050\037\051" +
 143     "\044\052\025\053\050\054\043\055\041\056\035\057\030" +
 144     "\060\045\061\021\062\012\063\042\001\002\000\012\002" +
 145     "\ufff2\004\266\010\ufff2\021\265\001\002\000\016\002\uff7f" +
 146     "\004\uff7f\006\uff7f\010\uff7f\020\264\021\uff7f\001\002\000" +
 147     "\006\002\ufff6\010\ufff6\001\002\000\014\002\uffe2\004\uffe2" +
 148     "\006\uffe2\010\uffe2\021\uffe2\001\002\000\054\002\uff7d\004" +
 149     "\uff7d\006\uff7d\007\uff7d\010\uff7d\012\uff7d\013\uff7d\014\uff7d" +
 150     "\021\uff7d\022\uff7d\023\uff7d\024\uff7d\025\uff7d\026\uff7d\027" +
 151     "\uff7d\030\uff7d\031\uff7d\032\uff7d\033\uff7d\042\uff7d\043\uff7d" +
 152     "\001\002\000\056\002\uff85\004\uff85\006\uff85\007\uff85\010" +
 153     "\uff85\011\uff85\012\uff85\013\uff85\014\uff85\021\uff85\022\uff85" +
 154     "\023\uff85\024\uff85\025\uff85\026\uff85\027\uff85\030\uff85\031" +
 155     "\uff85\032\uff85\033\uff85\042\uff85\043\uff85\001\002\000\014" +
 156     "\002\uffed\004\uffed\006\055\010\uffed\021\uffed\001\002\000" +
 157     "\016\002\uff75\004\uff75\006\uff75\010\uff75\011\260\021\uff75" +
 158     "\001\002\000\056\002\uff86\004\uff86\006\uff86\007\uff86\010" +
 159     "\uff86\011\uff86\012\uff86\013\uff86\014\uff86\021\uff86\022\uff86" +
 160     "\023\uff86\024\uff86\025\uff86\026\uff86\027\uff86\030\uff86\031" +
 161     "\uff86\032\uff86\033\uff86\042\uff86\043\uff86\001\002\000\054" +
 162     "\002\uff7e\004\uff7e\006\uff7e\007\uff7e\010\uff7e\012\uff7e\013" +
 163     "\uff7e\014\uff7e\021\uff7e\022\uff7e\023\uff7e\024\uff7e\025\uff7e" +
 164     "\026\uff7e\027\uff7e\030\uff7e\031\uff7e\032\uff7e\033\uff7e\042" +
 165     "\uff7e\043\uff7e\001\002\000\054\002\uff77\004\uff77\006\uff77" +
 166     "\007\uff77\010\uff77\012\uff77\013\uff77\014\uff77\021\uff77\022" +
 167     "\uff77\023\uff77\024\uff77\025\uff77\026\uff77\027\uff77\030\uff77" +
 168     "\031\uff77\032\uff77\033\uff77\042\uff77\043\uff77\001\002\000" +
 169     "\054\002\uff76\004\uff76\006\uff76\007\uff76\010\uff76\012\uff76" +
 170     "\013\uff76\014\uff76\021\uff76\022\uff76\023\uff76\024\uff76\025" +
 171     "\uff76\026\uff76\027\uff76\030\uff76\031\uff76\032\uff76\033\uff76" +
 172     "\042\uff76\043\uff76\001\002\000\056\002\uff84\004\uff84\006" +
 173     "\uff84\007\uff84\010\uff84\011\uff84\012\uff84\013\uff84\014\uff84" +
 174     "\021\uff84\022\uff84\023\uff84\024\uff84\025\uff84\026\uff84\027" +
 175     "\uff84\030\uff84\031\uff84\032\uff84\033\uff84\042\uff84\043\uff84" +
 176     "\001\002\000\054\002\uff81\004\uff81\006\uff81\007\uff81\010" +
 177     "\uff81\012\uff81\013\uff81\014\uff81\021\uff81\022\uff81\023\uff81" +
 178     "\024\uff81\025\uff81\026\uff81\027\uff81\030\uff81\031\uff81\032" +
 179     "\uff81\033\uff81\042\uff81\043\uff81\001\002\000\054\002\uff78" +
 180     "\004\uff78\006\uff78\007\uff78\010\uff78\012\uff78\013\uff78\014" +
 181     "\uff78\021\uff78\022\uff78\023\uff78\024\uff78\025\uff78\026\uff78" +
 182     "\027\uff78\030\uff78\031\uff78\032\uff78\033\uff78\042\uff78\043" +
 183     "\uff78\001\002\000\054\002\uff82\004\uff82\006\uff82\007\uff82" +
 184     "\010\uff82\012\uff82\013\uff82\014\uff82\021\uff82\022\uff82\023" +
 185     "\uff82\024\uff82\025\uff82\026\uff82\027\uff82\030\uff82\031\uff82" +
 186     "\032\uff82\033\uff82\042\uff82\043\uff82\001\002\000\054\002" +
 187     "\uff79\004\uff79\006\uff79\007\uff79\010\uff79\012\uff79\013\uff79" +
 188     "\014\uff79\021\uff79\022\uff79\023\uff79\024\uff79\025\uff79\026" +
 189     "\uff79\027\uff79\030\uff79\031\uff79\032\uff79\033\uff79\042\uff79" +
 190     "\043\uff79\001\002\000\054\002\uff7c\004\uff7c\006\uff7c\007" +
 191     "\uff7c\010\uff7c\012\uff7c\013\uff7c\014\uff7c\021\uff7c\022\uff7c" +
 192     "\023\uff7c\024\uff7c\025\uff7c\026\uff7c\027\uff7c\030\uff7c\031" +
 193     "\uff7c\032\uff7c\033\uff7c\042\uff7c\043\uff7c\001\002\000\016" +
 194     "\002\uff83\004\uff83\006\uff83\010\uff83\011\253\021\uff83\001" +
 195     "\002\000\014\002\uffe5\004\uffe5\006\uffe5\010\uffe5\021\uffe5" +
 196     "\001\002\000\016\002\uff80\004\uff80\006\uff80\010\uff80\020" +
 197     "\252\021\uff80\001\002\000\014\002\uffe6\004\uffe6\006\uffe6" +
 198     "\010\uffe6\021\uffe6\001\002\000\014\002\uffe1\004\uffe1\006" +
 199     "\uffe1\010\uffe1\021\uffe1\001\002\000\014\002\uffef\004\uffef" +
 200     "\006\055\010\uffef\021\uffef\001\002\000\054\002\uffdd\004" +
 201     "\uffdd\006\055\007\uffdd\010\uffdd\012\uffdd\013\uffdd\014\uffdd" +
 202     "\021\uffdd\022\uffdd\023\uffdd\024\uffdd\025\uffdd\026\uffdd\027" +
 203     "\uffdd\030\uffdd\031\uffdd\032\uffdd\033\uffdd\042\uffdd\043\uffdd" +
 204     "\001\002\000\110\004\061\005\111\011\071\013\103\015" +
 205     "\134\016\066\017\106\021\070\031\075\032\031\033\040" +
 206     "\034\057\035\034\036\113\037\141\040\142\041\145\044" +
 207     "\063\045\062\046\065\047\115\050\123\051\136\052\077" +
 208     "\053\143\054\131\055\125\056\116\057\104\060\140\061" +
 209     "\067\062\060\063\127\064\132\065\072\001\002\000\012" +
 210     "\002\uffee\004\uffee\010\uffee\021\uffee\001\002\000\054\002" +
 211     "\uff9a\004\uff9a\006\uff9a\007\uff9a\010\uff9a\012\uff9a\013\uff9a" +
 212     "\014\uff9a\021\uff9a\022\uff9a\023\uff9a\024\uff9a\025\uff9a\026" +
 213     "\uff9a\027\uff9a\030\uff9a\031\uff9a\032\uff9a\033\uff9a\042\uff9a" +
 214     "\043\uff9a\001\002\000\060\002\uff7a\004\uff7a\006\uff7a\007" +
 215     "\uff7a\010\uff7a\011\uff7a\012\uff7a\013\uff7a\014\uff7a\020\uffa5" +
 216     "\021\uff7a\022\uff7a\023\uff7a\024\uff7a\025\uff7a\026\uff7a\027" +
 217     "\uff7a\030\uff7a\031\uff7a\032\uff7a\033\uff7a\042\uff7a\043\uff7a" +
 218     "\001\002\000\126\002\uffb9\005\111\007\uffb9\010\uffb9\012" +
 219     "\uffb9\013\103\014\uffb9\016\066\017\106\022\uffb9\023\uffb9" +
 220     "\024\uffb9\025\uffb9\026\uffb9\027\uffb9\030\uffb9\031\uffb9\032" +
 221     "\031\033\040\035\034\036\113\037\141\040\142\041\145" +
 222     "\042\uffb9\043\uffb9\044\063\045\062\046\065\047\115\050" +
 223     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
 224     "\057\104\060\140\061\067\062\060\063\127\001\002\000" +
 225     "\054\002\uff89\004\uff89\006\uff89\007\uff89\010\uff89\012\uff89" +
 226     "\013\uff89\014\uff89\021\uff89\022\uff89\023\uff89\024\uff89\025" +
 227     "\uff89\026\uff89\027\uff89\030\uff89\031\uff89\032\uff89\033\uff89" +
 228     "\042\uff89\043\uff89\001\002\000\054\002\uff8b\004\uff8b\006" +
 229     "\uff8b\007\uff8b\010\uff8b\012\uff8b\013\uff8b\014\uff8b\021\uff8b" +
 230     "\022\uff8b\023\uff8b\024\uff8b\025\uff8b\026\uff8b\027\uff8b\030" +
 231     "\uff8b\031\uff8b\032\uff8b\033\uff8b\042\uff8b\043\uff8b\001\002" +
 232     "\000\032\002\uffd5\007\uffd5\012\uffd5\014\uffd5\022\uffd5\023" +
 233     "\uffd5\024\221\025\222\026\223\027\224\042\uffd5\043\uffd5" +
 234     "\001\002\000\004\011\245\001\002\000\062\013\uffae\032" +
 235     "\uffae\033\uffae\035\uffae\036\uffae\037\uffae\040\uffae\041\uffae" +
 236     "\044\uffae\045\uffae\046\uffae\047\uffae\050\uffae\051\uffae\052" +
 237     "\uffae\053\uffae\054\uffae\055\uffae\056\uffae\057\uffae\060\uffae" +
 238     "\061\uffae\062\uffae\063\uffae\001\002\000\060\002\uff7b\004" +
 239     "\uff7b\006\uff7b\007\uff7b\010\uff7b\011\uff7b\012\uff7b\013\uff7b" +
 240     "\014\uff7b\020\uffa6\021\uff7b\022\uff7b\023\uff7b\024\uff7b\025" +
 241     "\uff7b\026\uff7b\027\uff7b\030\uff7b\031\uff7b\032\uff7b\033\uff7b" +
 242     "\042\uff7b\043\uff7b\001\002\000\070\005\111\013\103\016" +
 243     "\066\017\106\032\031\033\040\035\034\036\113\037\141" +
 244     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
 245     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
 246     "\057\104\060\140\061\067\062\060\063\127\001\002\000" +
 247     "\110\004\061\005\111\011\071\013\103\015\134\016\066" +
 248     "\017\106\021\070\031\075\032\031\033\040\034\057\035" +
 249     "\034\036\113\037\141\040\142\041\145\044\063\045\062" +
 250     "\046\065\047\115\050\123\051\136\052\077\053\143\054" +
 251     "\131\055\125\056\116\057\104\060\140\061\067\062\060" +
 252     "\063\127\064\132\065\072\001\002\000\054\002\uff99\004" +
 253     "\uff99\006\uff99\007\uff99\010\uff99\012\uff99\013\uff99\014\uff99" +
 254     "\021\uff99\022\uff99\023\uff99\024\uff99\025\uff99\026\uff99\027" +
 255     "\uff99\030\uff99\031\uff99\032\uff99\033\uff99\042\uff99\043\uff99" +
 256     "\001\002\000\046\002\uffb7\007\uffb7\010\uffb7\012\uffb7\013" +
 257     "\uffb7\014\uffb7\022\uffb7\023\uffb7\024\uffb7\025\uffb7\026\uffb7" +
 258     "\027\uffb7\030\uffb7\031\uffb7\032\uffb7\033\uffb7\042\uffb7\043" +
 259     "\uffb7\001\002\000\054\002\uff97\004\uff97\006\uff97\007\uff97" +
 260     "\010\uff97\012\uff97\013\uff97\014\uff97\021\uff97\022\uff97\023" +
 261     "\uff97\024\uff97\025\uff97\026\uff97\027\uff97\030\uff97\031\uff97" +
 262     "\032\uff97\033\uff97\042\uff97\043\uff97\001\002\000\110\004" +
 263     "\061\005\111\011\071\013\103\015\134\016\066\017\106" +
 264     "\021\070\031\075\032\031\033\040\034\057\035\034\036" +
 265     "\113\037\141\040\142\041\145\044\063\045\062\046\065" +
 266     "\047\115\050\123\051\136\052\077\053\143\054\131\055" +
 267     "\125\056\116\057\104\060\140\061\067\062\060\063\127" +
 268     "\064\132\065\072\001\002\000\016\002\uffd9\007\uffd9\012" +
 269     "\uffd9\014\uffd9\042\uffd9\043\234\001\002\000\060\002\uff7f" +
 270     "\004\uff7f\006\uff7f\007\uff7f\010\uff7f\011\uff7f\012\uff7f\013" +
 271     "\uff7f\014\uff7f\020\uffaa\021\uff7f\022\uff7f\023\uff7f\024\uff7f" +
 272     "\025\uff7f\026\uff7f\027\uff7f\030\uff7f\031\uff7f\032\uff7f\033" +
 273     "\uff7f\042\uff7f\043\uff7f\001\002\000\062\013\103\032\031" +
 274     "\033\040\035\034\036\113\037\141\040\142\041\145\044" +
 275     "\063\045\062\046\065\047\036\050\037\051\044\052\170" +
 276     "\053\166\054\043\055\041\056\035\057\030\060\045\061" +
 277     "\021\062\012\063\042\001\002\000\004\020\236\001\002" +
 278     "\000\014\002\uffda\007\uffda\012\uffda\014\uffda\042\232\001" +
 279     "\002\000\054\002\uff88\004\uff88\006\uff88\007\uff88\010\uff88" +
 280     "\012\uff88\013\uff88\014\uff88\021\uff88\022\uff88\023\uff88\024" +
 281     "\uff88\025\uff88\026\uff88\027\uff88\030\uff88\031\uff88\032\uff88" +
 282     "\033\uff88\042\uff88\043\uff88\001\002\000\060\002\uff7d\004" +
 283     "\uff7d\006\uff7d\007\uff7d\010\uff7d\011\uff7d\012\uff7d\013\uff7d" +
 284     "\014\uff7d\020\uffa8\021\uff7d\022\uff7d\023\uff7d\024\uff7d\025" +
 285     "\uff7d\026\uff7d\027\uff7d\030\uff7d\031\uff7d\032\uff7d\033\uff7d" +
 286     "\042\uff7d\043\uff7d\001\002\000\022\002\uffd7\007\uffd7\012" +
 287     "\uffd7\014\uffd7\022\216\023\217\042\uffd7\043\uffd7\001\002" +
 288     "\000\052\002\uff9f\004\uff9f\007\uff9f\010\uff9f\012\uff9f\013" +
 289     "\uff9f\014\uff9f\021\uff9f\022\uff9f\023\uff9f\024\uff9f\025\uff9f" +
 290     "\026\uff9f\027\uff9f\030\uff9f\031\uff9f\032\uff9f\033\uff9f\042" +
 291     "\uff9f\043\uff9f\001\002\000\054\002\uffb4\004\uffb4\006\055" +
 292     "\007\uffb4\010\uffb4\012\uffb4\013\uffb4\014\uffb4\021\uffb4\022" +
 293     "\uffb4\023\uffb4\024\uffb4\025\uffb4\026\uffb4\027\uffb4\030\uffb4" +
 294     "\031\uffb4\032\uffb4\033\uffb4\042\uffb4\043\uffb4\001\002\000" +
 295     "\046\002\uffbd\007\uffbd\010\uffbd\012\uffbd\013\uffbd\014\uffbd" +
 296     "\022\uffbd\023\uffbd\024\uffbd\025\uffbd\026\uffbd\027\uffbd\030" +
 297     "\uffbd\031\uffbd\032\uffbd\033\uffbd\042\uffbd\043\uffbd\001\002" +
 298     "\000\052\002\uffa0\004\uffa0\007\uffa0\010\uffa0\012\uffa0\013" +
 299     "\uffa0\014\uffa0\021\uffa0\022\uffa0\023\uffa0\024\uffa0\025\uffa0" +
 300     "\026\uffa0\027\uffa0\030\uffa0\031\uffa0\032\uffa0\033\uffa0\042" +
 301     "\uffa0\043\uffa0\001\002\000\036\002\uffd2\007\uffd2\012\uffd2" +
 302     "\014\uffd2\022\uffd2\023\uffd2\024\uffd2\025\uffd2\026\uffd2\027" +
 303     "\uffd2\030\211\031\212\042\uffd2\043\uffd2\001\002\000\056" +
 304     "\002\uff75\004\uff75\006\uff75\007\uff75\010\uff75\011\uff75\012" +
 305     "\uff75\013\uff75\014\uff75\021\uff75\022\uff75\023\uff75\024\uff75" +
 306     "\025\uff75\026\uff75\027\uff75\030\uff75\031\uff75\032\uff75\033" +
 307     "\uff75\042\uff75\043\uff75\001\002\000\044\002\uffca\007\uffca" +
 308     "\012\uffca\013\uffca\014\uffca\022\uffca\023\uffca\024\uffca\025" +
 309     "\uffca\026\uffca\027\uffca\030\uffca\031\uffca\032\uffca\033\uffca" +
 310     "\042\uffca\043\uffca\001\002\000\060\002\uff77\004\uff77\006" +
 311     "\uff77\007\uff77\010\uff77\011\uff77\012\uff77\013\uff77\014\uff77" +
 312     "\020\uffa2\021\uff77\022\uff77\023\uff77\024\uff77\025\uff77\026" +
 313     "\uff77\027\uff77\030\uff77\031\uff77\032\uff77\033\uff77\042\uff77" +
 314     "\043\uff77\001\002\000\060\002\uff7e\004\uff7e\006\uff7e\007" +
 315     "\uff7e\010\uff7e\011\uff7e\012\uff7e\013\uff7e\014\uff7e\020\uffa9" +
 316     "\021\uff7e\022\uff7e\023\uff7e\024\uff7e\025\uff7e\026\uff7e\027" +
 317     "\uff7e\030\uff7e\031\uff7e\032\uff7e\033\uff7e\042\uff7e\043\uff7e" +
 318     "\001\002\000\004\011\201\001\002\000\052\002\uffbc\004" +
 319     "\uffbc\007\uffbc\010\uffbc\012\uffbc\013\uffbc\014\uffbc\021\uffbc" +
 320     "\022\uffbc\023\uffbc\024\uffbc\025\uffbc\026\uffbc\027\uffbc\030" +
 321     "\uffbc\031\uffbc\032\uffbc\033\uffbc\042\uffbc\043\uffbc\001\002" +
 322     "\000\046\002\uffc2\007\uffc2\010\uffc2\012\uffc2\013\uffc2\014" +
 323     "\uffc2\022\uffc2\023\uffc2\024\uffc2\025\uffc2\026\uffc2\027\uffc2" +
 324     "\030\uffc2\031\uffc2\032\uffc2\033\uffc2\042\uffc2\043\uffc2\001" +
 325     "\002\000\054\002\uff9e\004\uff9e\006\055\007\uff9e\010\uff9e" +
 326     "\012\uff9e\013\uff9e\014\uff9e\021\uff9e\022\uff9e\023\uff9e\024" +
 327     "\uff9e\025\uff9e\026\uff9e\027\uff9e\030\uff9e\031\uff9e\032\uff9e" +
 328     "\033\uff9e\042\uff9e\043\uff9e\001\002\000\060\002\uff76\004" +
 329     "\uff76\006\uff76\007\uff76\010\uff76\011\uff76\012\uff76\013\uff76" +
 330     "\014\uff76\020\uffa1\021\uff76\022\uff76\023\uff76\024\uff76\025" +
 331     "\uff76\026\uff76\027\uff76\030\uff76\031\uff76\032\uff76\033\uff76" +
 332     "\042\uff76\043\uff76\001\002\000\046\002\uffc4\007\uffc4\010" +
 333     "\176\012\uffc4\013\uffc4\014\uffc4\022\uffc4\023\uffc4\024\uffc4" +
 334     "\025\uffc4\026\uffc4\027\uffc4\030\uffc4\031\uffc4\032\uffc4\033" +
 335     "\uffc4\042\uffc4\043\uffc4\001\002\000\060\002\uff81\004\uff81" +
 336     "\006\uff81\007\uff81\010\uff81\011\uff81\012\uff81\013\uff81\014" +
 337     "\uff81\020\uffac\021\uff81\022\uff81\023\uff81\024\uff81\025\uff81" +
 338     "\026\uff81\027\uff81\030\uff81\031\uff81\032\uff81\033\uff81\042" +
 339     "\uff81\043\uff81\001\002\000\054\002\uff9c\004\uff9c\006\uff9c" +
 340     "\007\uff9c\010\uff9c\012\uff9c\013\uff9c\014\uff9c\021\uff9c\022" +
 341     "\uff9c\023\uff9c\024\uff9c\025\uff9c\026\uff9c\027\uff9c\030\uff9c" +
 342     "\031\uff9c\032\uff9c\033\uff9c\042\uff9c\043\uff9c\001\002\000" +
 343     "\060\002\uff78\004\uff78\006\uff78\007\uff78\010\uff78\011\uff78" +
 344     "\012\uff78\013\uff78\014\uff78\020\uffa3\021\uff78\022\uff78\023" +
 345     "\uff78\024\uff78\025\uff78\026\uff78\027\uff78\030\uff78\031\uff78" +
 346     "\032\uff78\033\uff78\042\uff78\043\uff78\001\002\000\052\002" +
 347     "\uffc1\004\173\007\uffc1\010\uffc1\012\uffc1\013\uffc1\014\uffc1" +
 348     "\021\172\022\uffc1\023\uffc1\024\uffc1\025\uffc1\026\uffc1\027" +
 349     "\uffc1\030\uffc1\031\uffc1\032\uffc1\033\uffc1\042\uffc1\043\uffc1" +
 350     "\001\002\000\060\002\uff82\004\uff82\006\uff82\007\uff82\010" +
 351     "\uff82\011\uff82\012\uff82\013\uff82\014\uff82\020\uffad\021\uff82" +
 352     "\022\uff82\023\uff82\024\uff82\025\uff82\026\uff82\027\uff82\030" +
 353     "\uff82\031\uff82\032\uff82\033\uff82\042\uff82\043\uff82\001\002" +
 354     "\000\054\002\uff98\004\uff98\006\uff98\007\uff98\010\uff98\012" +
 355     "\uff98\013\uff98\014\uff98\021\uff98\022\uff98\023\uff98\024\uff98" +
 356     "\025\uff98\026\uff98\027\uff98\030\uff98\031\uff98\032\uff98\033" +
 357     "\uff98\042\uff98\043\uff98\001\002\000\004\007\171\001\002" +
 358     "\000\046\032\031\033\040\035\034\036\113\037\141\047" +
 359     "\036\050\037\051\044\052\170\053\166\054\043\055\041" +
 360     "\056\035\057\030\060\045\061\021\062\012\063\042\001" +
 361     "\002\000\052\002\uffba\004\uffba\007\uffba\010\uffba\012\uffba" +
 362     "\013\uffba\014\uffba\021\uffba\022\uffba\023\uffba\024\uffba\025" +
 363     "\uffba\026\uffba\027\uffba\030\uffba\031\uffba\032\uffba\033\uffba" +
 364     "\042\uffba\043\uffba\001\002\000\060\002\uff79\004\uff79\006" +
 365     "\uff79\007\uff79\010\uff79\011\uff79\012\uff79\013\uff79\014\uff79" +
 366     "\020\uffa4\021\uff79\022\uff79\023\uff79\024\uff79\025\uff79\026" +
 367     "\uff79\027\uff79\030\uff79\031\uff79\032\uff79\033\uff79\042\uff79" +
 368     "\043\uff79\001\002\000\052\002\uffb0\004\uffb0\007\uffb0\010" +
 369     "\uffb0\012\uffb0\013\uffb0\014\uffb0\021\uffb0\022\uffb0\023\uffb0" +
 370     "\024\uffb0\025\uffb0\026\uffb0\027\uffb0\030\uffb0\031\uffb0\032" +
 371     "\uffb0\033\uffb0\042\uffb0\043\uffb0\001\002\000\060\002\uff7c" +
 372     "\004\uff7c\006\uff7c\007\uff7c\010\uff7c\011\uff7c\012\uff7c\013" +
 373     "\uff7c\014\uff7c\020\uffa7\021\uff7c\022\uff7c\023\uff7c\024\uff7c" +
 374     "\025\uff7c\026\uff7c\027\uff7c\030\uff7c\031\uff7c\032\uff7c\033" +
 375     "\uff7c\042\uff7c\043\uff7c\001\002\000\056\002\uff83\004\uff83" +
 376     "\006\uff83\007\uff83\010\uff83\011\uff83\012\uff83\013\uff83\014" +
 377     "\uff83\021\uff83\022\uff83\023\uff83\024\uff83\025\uff83\026\uff83" +
 378     "\027\uff83\030\uff83\031\uff83\032\uff83\033\uff83\042\uff83\043" +
 379     "\uff83\001\002\000\054\002\uff8c\004\uff8c\006\uff8c\007\uff8c" +
 380     "\010\uff8c\012\uff8c\013\uff8c\014\uff8c\021\uff8c\022\uff8c\023" +
 381     "\uff8c\024\uff8c\025\uff8c\026\uff8c\027\uff8c\030\uff8c\031\uff8c" +
 382     "\032\uff8c\033\uff8c\042\uff8c\043\uff8c\001\002\000\060\002" +
 383     "\uff80\004\uff80\006\uff80\007\uff80\010\uff80\011\uff80\012\uff80" +
 384     "\013\uff80\014\uff80\020\uffab\021\uff80\022\uff80\023\uff80\024" +
 385     "\uff80\025\uff80\026\uff80\027\uff80\030\uff80\031\uff80\032\uff80" +
 386     "\033\uff80\042\uff80\043\uff80\001\002\000\044\002\uffc6\007" +
 387     "\uffc6\012\uffc6\013\uffc6\014\uffc6\022\uffc6\023\uffc6\024\uffc6" +
 388     "\025\uffc6\026\uffc6\027\uffc6\030\uffc6\031\uffc6\032\uffc6\033" +
 389     "\uffc6\042\uffc6\043\uffc6\001\002\000\054\002\uff8d\004\uff8d" +
 390     "\006\uff8d\007\uff8d\010\uff8d\012\uff8d\013\uff8d\014\uff8d\021" +
 391     "\uff8d\022\uff8d\023\uff8d\024\uff8d\025\uff8d\026\uff8d\027\uff8d" +
 392     "\030\uff8d\031\uff8d\032\uff8d\033\uff8d\042\uff8d\043\uff8d\001" +
 393     "\002\000\044\002\uffcd\007\uffcd\012\uffcd\013\160\014\uffcd" +
 394     "\022\uffcd\023\uffcd\024\uffcd\025\uffcd\026\uffcd\027\uffcd\030" +
 395     "\uffcd\031\uffcd\032\161\033\157\042\uffcd\043\uffcd\001\002" +
 396     "\000\052\002\uffbe\004\153\007\uffbe\010\uffbe\012\uffbe\013" +
 397     "\uffbe\014\uffbe\021\152\022\uffbe\023\uffbe\024\uffbe\025\uffbe" +
 398     "\026\uffbe\027\uffbe\030\uffbe\031\uffbe\032\uffbe\033\uffbe\042" +
 399     "\uffbe\043\uffbe\001\002\000\054\002\uff8e\004\uff8e\006\uff8e" +
 400     "\007\uff8e\010\uff8e\012\uff8e\013\uff8e\014\uff8e\021\uff8e\022" +
 401     "\uff8e\023\uff8e\024\uff8e\025\uff8e\026\uff8e\027\uff8e\030\uff8e" +
 402     "\031\uff8e\032\uff8e\033\uff8e\042\uff8e\043\uff8e\001\002\000" +
 403     "\056\002\uff87\004\uff87\006\uff87\007\uff87\010\uff87\011\uff91" +
 404     "\012\uff87\013\uff87\014\uff87\021\uff87\022\uff87\023\uff87\024" +
 405     "\uff87\025\uff87\026\uff87\027\uff87\030\uff87\031\uff87\032\uff87" +
 406     "\033\uff87\042\uff87\043\uff87\001\002\000\070\005\111\013" +
 407     "\103\016\066\017\106\032\031\033\040\035\034\036\113" +
 408     "\037\141\040\142\041\145\044\063\045\062\046\065\047" +
 409     "\115\050\123\051\136\052\077\053\143\054\131\055\125" +
 410     "\056\116\057\104\060\140\061\067\062\060\063\127\001" +
 411     "\002\000\070\005\111\013\103\016\066\017\106\032\031" +
 412     "\033\040\035\034\036\113\037\141\040\142\041\145\044" +
 413     "\063\045\062\046\065\047\115\050\123\051\136\052\077" +
 414     "\053\143\054\131\055\125\056\116\057\104\060\140\061" +
 415     "\067\062\060\063\127\001\002\000\054\002\uff87\004\uff87" +
 416     "\006\uff87\007\uff87\010\uff87\012\uff87\013\uff87\014\uff87\021" +
 417     "\uff87\022\uff87\023\uff87\024\uff87\025\uff87\026\uff87\027\uff87" +
 418     "\030\uff87\031\uff87\032\uff87\033\uff87\042\uff87\043\uff87\001" +
 419     "\002\000\052\002\uffbb\004\uffbb\007\uffbb\010\uffbb\012\uffbb" +
 420     "\013\uffbb\014\uffbb\021\uffbb\022\uffbb\023\uffbb\024\uffbb\025" +
 421     "\uffbb\026\uffbb\027\uffbb\030\uffbb\031\uffbb\032\uffbb\033\uffbb" +
 422     "\042\uffbb\043\uffbb\001\002\000\052\002\uffb6\004\uffb6\007" +
 423     "\uffb6\010\uffb6\012\uffb6\013\uffb6\014\uffb6\021\uffb6\022\uffb6" +
 424     "\023\uffb6\024\uffb6\025\uffb6\026\uffb6\027\uffb6\030\uffb6\031" +
 425     "\uffb6\032\uffb6\033\uffb6\042\uffb6\043\uffb6\001\002\000\110" +
 426     "\004\061\005\111\011\071\013\103\015\134\016\066\017" +
 427     "\106\021\070\031\075\032\031\033\040\034\057\035\034" +
 428     "\036\113\037\141\040\142\041\145\044\063\045\062\046" +
 429     "\065\047\115\050\123\051\136\052\077\053\143\054\131" +
 430     "\055\125\056\116\057\104\060\140\061\067\062\060\063" +
 431     "\127\064\132\065\072\001\002\000\110\004\061\005\111" +
 432     "\011\071\013\103\015\134\016\066\017\106\021\070\031" +
 433     "\075\032\031\033\040\034\057\035\034\036\113\037\141" +
 434     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
 435     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
 436     "\057\104\060\140\061\067\062\060\063\127\064\132\065" +
 437     "\072\001\002\000\110\004\061\005\111\011\071\013\103" +
 438     "\015\134\016\066\017\106\021\070\031\075\032\031\033" +
 439     "\040\034\057\035\034\036\113\037\141\040\142\041\145" +
 440     "\044\063\045\062\046\065\047\115\050\123\051\136\052" +
 441     "\077\053\143\054\131\055\125\056\116\057\104\060\140" +
 442     "\061\067\062\060\063\127\064\132\065\072\001\002\000" +
 443     "\044\002\uffc8\007\uffc8\012\uffc8\013\uffc8\014\uffc8\022\uffc8" +
 444     "\023\uffc8\024\uffc8\025\uffc8\026\uffc8\027\uffc8\030\uffc8\031" +
 445     "\uffc8\032\uffc8\033\uffc8\042\uffc8\043\uffc8\001\002\000\044" +
 446     "\002\uffc9\007\uffc9\012\uffc9\013\uffc9\014\uffc9\022\uffc9\023" +
 447     "\uffc9\024\uffc9\025\uffc9\026\uffc9\027\uffc9\030\uffc9\031\uffc9" +
 448     "\032\uffc9\033\uffc9\042\uffc9\043\uffc9\001\002\000\044\002" +
 449     "\uffc7\007\uffc7\012\uffc7\013\uffc7\014\uffc7\022\uffc7\023\uffc7" +
 450     "\024\uffc7\025\uffc7\026\uffc7\027\uffc7\030\uffc7\031\uffc7\032" +
 451     "\uffc7\033\uffc7\042\uffc7\043\uffc7\001\002\000\054\002\uff90" +
 452     "\004\uff90\006\uff90\007\uff90\010\uff90\012\uff90\013\uff90\014" +
 453     "\uff90\021\uff90\022\uff90\023\uff90\024\uff90\025\uff90\026\uff90" +
 454     "\027\uff90\030\uff90\031\uff90\032\uff90\033\uff90\042\uff90\043" +
 455     "\uff90\001\002\000\054\002\uff80\004\uff80\006\uff80\007\uff80" +
 456     "\010\uff80\012\uff80\013\uff80\014\uff80\021\uff80\022\uff80\023" +
 457     "\uff80\024\uff80\025\uff80\026\uff80\027\uff80\030\uff80\031\uff80" +
 458     "\032\uff80\033\uff80\042\uff80\043\uff80\001\002\000\054\002" +
 459     "\uff96\004\uff96\006\uff96\007\uff96\010\uff96\012\uff96\013\uff96" +
 460     "\014\uff96\021\uff96\022\uff96\023\uff96\024\uff96\025\uff96\026" +
 461     "\uff96\027\uff96\030\uff96\031\uff96\032\uff96\033\uff96\042\uff96" +
 462     "\043\uff96\001\002\000\054\002\uff7f\004\uff7f\006\uff7f\007" +
 463     "\uff7f\010\uff7f\012\uff7f\013\uff7f\014\uff7f\021\uff7f\022\uff7f" +
 464     "\023\uff7f\024\uff7f\025\uff7f\026\uff7f\027\uff7f\030\uff7f\031" +
 465     "\uff7f\032\uff7f\033\uff7f\042\uff7f\043\uff7f\001\002\000\054" +
 466     "\002\uffdb\004\uffdb\006\uffdb\007\uffdb\010\uffdb\012\uffdb\013" +
 467     "\uffdb\014\uffdb\021\uffdb\022\uffdb\023\uffdb\024\uffdb\025\uffdb" +
 468     "\026\uffdb\027\uffdb\030\uffdb\031\uffdb\032\uffdb\033\uffdb\042" +
 469     "\uffdb\043\uffdb\001\002\000\070\005\111\013\103\016\066" +
 470     "\017\106\032\031\033\040\035\034\036\113\037\141\040" +
 471     "\142\041\145\044\063\045\062\046\065\047\115\050\123" +
 472     "\051\136\052\077\053\143\054\131\055\125\056\116\057" +
 473     "\104\060\140\061\067\062\060\063\127\001\002\000\070" +
 474     "\005\111\013\103\016\066\017\106\032\031\033\040\035" +
 475     "\034\036\113\037\141\040\142\041\145\044\063\045\062" +
 476     "\046\065\047\115\050\123\051\136\052\077\053\143\054" +
 477     "\131\055\125\056\116\057\104\060\140\061\067\062\060" +
 478     "\063\127\001\002\000\052\002\uffc0\004\153\007\uffc0\010" +
 479     "\uffc0\012\uffc0\013\uffc0\014\uffc0\021\152\022\uffc0\023\uffc0" +
 480     "\024\uffc0\025\uffc0\026\uffc0\027\uffc0\030\uffc0\031\uffc0\032" +
 481     "\uffc0\033\uffc0\042\uffc0\043\uffc0\001\002\000\052\002\uffbf" +
 482     "\004\153\007\uffbf\010\uffbf\012\uffbf\013\uffbf\014\uffbf\021" +
 483     "\152\022\uffbf\023\uffbf\024\uffbf\025\uffbf\026\uffbf\027\uffbf" +
 484     "\030\uffbf\031\uffbf\032\uffbf\033\uffbf\042\uffbf\043\uffbf\001" +
 485     "\002\000\106\004\061\005\111\011\071\013\103\015\134" +
 486     "\016\066\017\106\021\070\032\031\033\040\034\057\035" +
 487     "\034\036\113\037\141\040\142\041\145\044\063\045\062" +
 488     "\046\065\047\115\050\123\051\136\052\077\053\143\054" +
 489     "\131\055\125\056\116\057\104\060\140\061\067\062\060" +
 490     "\063\127\064\132\065\072\001\002\000\044\002\uffc3\007" +
 491     "\uffc3\012\uffc3\013\uffc3\014\uffc3\022\uffc3\023\uffc3\024\uffc3" +
 492     "\025\uffc3\026\uffc3\027\uffc3\030\uffc3\031\uffc3\032\uffc3\033" +
 493     "\uffc3\042\uffc3\043\uffc3\001\002\000\052\002\uff9d\004\uff9d" +
 494     "\007\uff9d\010\uff9d\012\uff9d\013\uff9d\014\uff9d\021\uff9d\022" +
 495     "\uff9d\023\uff9d\024\uff9d\025\uff9d\026\uff9d\027\uff9d\030\uff9d" +
 496     "\031\uff9d\032\uff9d\033\uff9d\042\uff9d\043\uff9d\001\002\000" +
 497     "\112\004\061\005\111\011\071\012\202\013\103\015\134" +
 498     "\016\066\017\106\021\070\031\075\032\031\033\040\034" +
 499     "\057\035\034\036\113\037\141\040\142\041\145\044\063" +
 500     "\045\062\046\065\047\115\050\123\051\136\052\077\053" +
 501     "\143\054\131\055\125\056\116\057\104\060\140\061\067" +
 502     "\062\060\063\127\064\132\065\072\001\002\000\054\002" +
 503     "\uff95\004\uff95\006\uff95\007\uff95\010\uff95\012\uff95\013\uff95" +
 504     "\014\uff95\021\uff95\022\uff95\023\uff95\024\uff95\025\uff95\026" +
 505     "\uff95\027\uff95\030\uff95\031\uff95\032\uff95\033\uff95\042\uff95" +
 506     "\043\uff95\001\002\000\006\012\uff93\014\207\001\002\000" +
 507     "\006\012\uff8f\014\uff8f\001\002\000\004\012\206\001\002" +
 508     "\000\054\002\uff94\004\uff94\006\uff94\007\uff94\010\uff94\012" +
 509     "\uff94\013\uff94\014\uff94\021\uff94\022\uff94\023\uff94\024\uff94" +
 510     "\025\uff94\026\uff94\027\uff94\030\uff94\031\uff94\032\uff94\033" +
 511     "\uff94\042\uff94\043\uff94\001\002\000\110\004\061\005\111" +
 512     "\011\071\013\103\015\134\016\066\017\106\021\070\031" +
 513     "\075\032\031\033\040\034\057\035\034\036\113\037\141" +
 514     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
 515     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
 516     "\057\104\060\140\061\067\062\060\063\127\064\132\065" +
 517     "\072\001\002\000\004\012\uff92\001\002\000\110\004\061" +
 518     "\005\111\011\071\013\103\015\134\016\066\017\106\021" +
 519     "\070\031\075\032\031\033\040\034\057\035\034\036\113" +
 520     "\037\141\040\142\041\145\044\063\045\062\046\065\047" +
 521     "\115\050\123\051\136\052\077\053\143\054\131\055\125" +
 522     "\056\116\057\104\060\140\061\067\062\060\063\127\064" +
 523     "\132\065\072\001\002\000\110\004\061\005\111\011\071" +
 524     "\013\103\015\134\016\066\017\106\021\070\031\075\032" +
 525     "\031\033\040\034\057\035\034\036\113\037\141\040\142" +
 526     "\041\145\044\063\045\062\046\065\047\115\050\123\051" +
 527     "\136\052\077\053\143\054\131\055\125\056\116\057\104" +
 528     "\060\140\061\067\062\060\063\127\064\132\065\072\001" +
 529     "\002\000\044\002\uffcb\007\uffcb\012\uffcb\013\160\014\uffcb" +
 530     "\022\uffcb\023\uffcb\024\uffcb\025\uffcb\026\uffcb\027\uffcb\030" +
 531     "\uffcb\031\uffcb\032\161\033\157\042\uffcb\043\uffcb\001\002" +
 532     "\000\044\002\uffcc\007\uffcc\012\uffcc\013\160\014\uffcc\022" +
 533     "\uffcc\023\uffcc\024\uffcc\025\uffcc\026\uffcc\027\uffcc\030\uffcc" +
 534     "\031\uffcc\032\161\033\157\042\uffcc\043\uffcc\001\002\000" +
 535     "\052\002\uffb3\004\uffb3\007\uffb3\010\uffb3\012\uffb3\013\uffb3" +
 536     "\014\uffb3\021\uffb3\022\uffb3\023\uffb3\024\uffb3\025\uffb3\026" +
 537     "\uffb3\027\uffb3\030\uffb3\031\uffb3\032\uffb3\033\uffb3\042\uffb3" +
 538     "\043\uffb3\001\002\000\110\004\061\005\111\011\071\013" +
 539     "\103\015\134\016\066\017\106\021\070\031\075\032\031" +
 540     "\033\040\034\057\035\034\036\113\037\141\040\142\041" +
 541     "\145\044\063\045\062\046\065\047\115\050\123\051\136" +
 542     "\052\077\053\143\054\131\055\125\056\116\057\104\060" +
 543     "\140\061\067\062\060\063\127\064\132\065\072\001\002" +
 544     "\000\110\004\061\005\111\011\071\013\103\015\134\016" +
 545     "\066\017\106\021\070\031\075\032\031\033\040\034\057" +
 546     "\035\034\036\113\037\141\040\142\041\145\044\063\045" +
 547     "\062\046\065\047\115\050\123\051\136\052\077\053\143" +
 548     "\054\131\055\125\056\116\057\104\060\140\061\067\062" +
 549     "\060\063\127\064\132\065\072\001\002\000\032\002\uffd3" +
 550     "\007\uffd3\012\uffd3\014\uffd3\022\uffd3\023\uffd3\024\221\025" +
 551     "\222\026\223\027\224\042\uffd3\043\uffd3\001\002\000\110" +
 552     "\004\061\005\111\011\071\013\103\015\134\016\066\017" +
 553     "\106\021\070\031\075\032\031\033\040\034\057\035\034" +
 554     "\036\113\037\141\040\142\041\145\044\063\045\062\046" +
 555     "\065\047\115\050\123\051\136\052\077\053\143\054\131" +
 556     "\055\125\056\116\057\104\060\140\061\067\062\060\063" +
 557     "\127\064\132\065\072\001\002\000\110\004\061\005\111" +
 558     "\011\071\013\103\015\134\016\066\017\106\021\070\031" +
 559     "\075\032\031\033\040\034\057\035\034\036\113\037\141" +
 560     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
 561     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
 562     "\057\104\060\140\061\067\062\060\063\127\064\132\065" +
 563     "\072\001\002\000\110\004\061\005\111\011\071\013\103" +
 564     "\015\134\016\066\017\106\021\070\031\075\032\031\033" +
 565     "\040\034\057\035\034\036\113\037\141\040\142\041\145" +
 566     "\044\063\045\062\046\065\047\115\050\123\051\136\052" +
 567     "\077\053\143\054\131\055\125\056\116\057\104\060\140" +
 568     "\061\067\062\060\063\127\064\132\065\072\001\002\000" +
 569     "\110\004\061\005\111\011\071\013\103\015\134\016\066" +
 570     "\017\106\021\070\031\075\032\031\033\040\034\057\035" +
 571     "\034\036\113\037\141\040\142\041\145\044\063\045\062" +
 572     "\046\065\047\115\050\123\051\136\052\077\053\143\054" +
 573     "\131\055\125\056\116\057\104\060\140\061\067\062\060" +
 574     "\063\127\064\132\065\072\001\002\000\036\002\uffce\007" +
 575     "\uffce\012\uffce\014\uffce\022\uffce\023\uffce\024\uffce\025\uffce" +
 576     "\026\uffce\027\uffce\030\211\031\212\042\uffce\043\uffce\001" +
 577     "\002\000\036\002\uffcf\007\uffcf\012\uffcf\014\uffcf\022\uffcf" +
 578     "\023\uffcf\024\uffcf\025\uffcf\026\uffcf\027\uffcf\030\211\031" +
 579     "\212\042\uffcf\043\uffcf\001\002\000\036\002\uffd0\007\uffd0" +
 580     "\012\uffd0\014\uffd0\022\uffd0\023\uffd0\024\uffd0\025\uffd0\026" +
 581     "\uffd0\027\uffd0\030\211\031\212\042\uffd0\043\uffd0\001\002" +
 582     "\000\036\002\uffd1\007\uffd1\012\uffd1\014\uffd1\022\uffd1\023" +
 583     "\uffd1\024\uffd1\025\uffd1\026\uffd1\027\uffd1\030\211\031\212" +
 584     "\042\uffd1\043\uffd1\001\002\000\032\002\uffd4\007\uffd4\012" +
 585     "\uffd4\014\uffd4\022\uffd4\023\uffd4\024\221\025\222\026\223" +
 586     "\027\224\042\uffd4\043\uffd4\001\002\000\110\004\061\005" +
 587     "\111\011\071\013\103\015\134\016\066\017\106\021\070" +
 588     "\031\075\032\031\033\040\034\057\035\034\036\113\037" +
 589     "\141\040\142\041\145\044\063\045\062\046\065\047\115" +
 590     "\050\123\051\136\052\077\053\143\054\131\055\125\056" +
 591     "\116\057\104\060\140\061\067\062\060\063\127\064\132" +
 592     "\065\072\001\002\000\016\002\uffd8\007\uffd8\012\uffd8\014" +
 593     "\uffd8\042\uffd8\043\234\001\002\000\110\004\061\005\111" +
 594     "\011\071\013\103\015\134\016\066\017\106\021\070\031" +
 595     "\075\032\031\033\040\034\057\035\034\036\113\037\141" +
 596     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
 597     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
 598     "\057\104\060\140\061\067\062\060\063\127\064\132\065" +
 599     "\072\001\002\000\022\002\uffd6\007\uffd6\012\uffd6\014\uffd6" +
 600     "\022\216\023\217\042\uffd6\043\uffd6\001\002\000\062\013" +
 601     "\uffaf\032\uffaf\033\uffaf\035\uffaf\036\uffaf\037\uffaf\040\uffaf" +
 602     "\041\uffaf\044\uffaf\045\uffaf\046\uffaf\047\uffaf\050\uffaf\051" +
 603     "\uffaf\052\uffaf\053\uffaf\054\uffaf\055\uffaf\056\uffaf\057\uffaf" +
 604     "\060\uffaf\061\uffaf\062\uffaf\063\uffaf\001\002\000\054\002" +
 605     "\uffb1\004\uffb1\006\055\007\uffb1\010\uffb1\012\uffb1\013\uffb1" +
 606     "\014\uffb1\021\uffb1\022\uffb1\023\uffb1\024\uffb1\025\uffb1\026" +
 607     "\uffb1\027\uffb1\030\uffb1\031\uffb1\032\uffb1\033\uffb1\042\uffb1" +
 608     "\043\uffb1\001\002\000\052\002\uffb2\004\uffb2\007\uffb2\010" +
 609     "\uffb2\012\uffb2\013\uffb2\014\uffb2\021\uffb2\022\uffb2\023\uffb2" +
 610     "\024\uffb2\025\uffb2\026\uffb2\027\uffb2\030\uffb2\031\uffb2\032" +
 611     "\uffb2\033\uffb2\042\uffb2\043\uffb2\001\002\000\044\002\uffc5" +
 612     "\007\uffc5\012\uffc5\013\uffc5\014\uffc5\022\uffc5\023\uffc5\024" +
 613     "\uffc5\025\uffc5\026\uffc5\027\uffc5\030\uffc5\031\uffc5\032\uffc5" +
 614     "\033\uffc5\042\uffc5\043\uffc5\001\002\000\004\012\243\001" +
 615     "\002\000\054\002\uff9b\004\uff9b\006\uff9b\007\uff9b\010\uff9b" +
 616     "\012\uff9b\013\uff9b\014\uff9b\021\uff9b\022\uff9b\023\uff9b\024" +
 617     "\uff9b\025\uff9b\026\uff9b\027\uff9b\030\uff9b\031\uff9b\032\uff9b" +
 618     "\033\uff9b\042\uff9b\043\uff9b\001\002\000\052\002\uffb5\004" +
 619     "\153\007\uffb5\010\uffb5\012\uffb5\013\uffb5\014\uffb5\021\152" +
 620     "\022\uffb5\023\uffb5\024\uffb5\025\uffb5\026\uffb5\027\uffb5\030" +
 621     "\uffb5\031\uffb5\032\uffb5\033\uffb5\042\uffb5\043\uffb5\001\002" +
 622     "\000\004\034\246\001\002\000\004\012\247\001\002\000" +
 623     "\054\002\uff8a\004\uff8a\006\uff8a\007\uff8a\010\uff8a\012\uff8a" +
 624     "\013\uff8a\014\uff8a\021\uff8a\022\uff8a\023\uff8a\024\uff8a\025" +
 625     "\uff8a\026\uff8a\027\uff8a\030\uff8a\031\uff8a\032\uff8a\033\uff8a" +
 626     "\042\uff8a\043\uff8a\001\002\000\052\002\uffb8\004\153\007" +
 627     "\uffb8\010\uffb8\012\uffb8\013\uffb8\014\uffb8\021\152\022\uffb8" +
 628     "\023\uffb8\024\uffb8\025\uffb8\026\uffb8\027\uffb8\030\uffb8\031" +
 629     "\uffb8\032\uffb8\033\uffb8\042\uffb8\043\uffb8\001\002\000\052" +
 630     "\002\uffdc\004\uffdc\007\uffdc\010\uffdc\012\uffdc\013\uffdc\014" +
 631     "\uffdc\021\uffdc\022\uffdc\023\uffdc\024\uffdc\025\uffdc\026\uffdc" +
 632     "\027\uffdc\030\uffdc\031\uffdc\032\uffdc\033\uffdc\042\uffdc\043" +
 633     "\uffdc\001\002\000\062\013\uffde\032\uffde\033\uffde\035\uffde" +
 634     "\036\uffde\037\uffde\040\uffde\041\uffde\044\uffde\045\uffde\046" +
 635     "\uffde\047\uffde\050\uffde\051\uffde\052\uffde\053\uffde\054\uffde" +
 636     "\055\uffde\056\uffde\057\uffde\060\uffde\061\uffde\062\uffde\063" +
 637     "\uffde\001\002\000\004\034\254\001\002\000\004\014\255" +
 638     "\001\002\000\004\034\256\001\002\000\004\012\257\001" +
 639     "\002\000\012\002\ufff4\004\ufff4\010\ufff4\021\ufff4\001\002" +
 640     "\000\004\034\261\001\002\000\004\012\262\001\002\000" +
 641     "\012\002\ufff5\004\ufff5\010\ufff5\021\ufff5\001\002\000\012" +
 642     "\002\uffec\004\uffec\010\uffec\021\uffec\001\002\000\062\013" +
 643     "\uffdf\032\uffdf\033\uffdf\035\uffdf\036\uffdf\037\uffdf\040\uffdf" +
 644     "\041\uffdf\044\uffdf\045\uffdf\046\uffdf\047\uffdf\050\uffdf\051" +
 645     "\uffdf\052\uffdf\053\uffdf\054\uffdf\055\uffdf\056\uffdf\057\uffdf" +
 646     "\060\uffdf\061\uffdf\062\uffdf\063\uffdf\001\002\000\064\013" +
 647     "\027\016\020\032\031\033\040\035\034\036\113\037\141" +
 648     "\040\047\041\051\044\015\045\014\046\016\047\036\050" +
 649     "\037\051\044\052\025\053\050\054\043\055\041\056\035" +
 650     "\057\030\060\045\061\021\062\012\063\042\001\002\000" +
 651     "\064\013\027\016\020\032\031\033\040\035\034\036\113" +
 652     "\037\141\040\047\041\051\044\015\045\014\046\016\047" +
 653     "\036\050\037\051\044\052\025\053\050\054\043\055\041" +
 654     "\056\035\057\030\060\045\061\021\062\012\063\042\001" +
 655     "\002\000\006\002\ufff1\010\ufff1\001\002\000\006\002\ufff0" +
 656     "\010\ufff0\001\002\000\006\002\ufff7\010\ufff7\001\002\000" +
 657     "\014\002\uffe9\004\uffe9\006\055\010\uffe9\021\uffe9\001\002" +
 658     "\000\014\002\uffeb\004\uffeb\006\055\010\uffeb\021\uffeb\001" +
 659     "\002\000\012\002\uffea\004\uffea\010\uffea\021\uffea\001\002" +
 660     "\000\012\002\uffe8\004\uffe8\010\uffe8\021\uffe8\001\002\000" +
 661     "\064\013\027\016\020\032\031\033\040\035\034\036\113" +
 662     "\037\141\040\047\041\051\044\015\045\014\046\016\047" +
 663     "\036\050\037\051\044\052\025\053\050\054\043\055\041" +
 664     "\056\035\057\030\060\045\061\021\062\012\063\042\001" +
 665     "\002\000\064\013\027\016\020\032\031\033\040\035\034" +
 666     "\036\113\037\141\040\047\041\051\044\015\045\014\046" +
 667     "\016\047\036\050\037\051\044\052\025\053\050\054\043" +
 668     "\055\041\056\035\057\030\060\045\061\021\062\012\063" +
 669     "\042\001\002\000\006\002\ufff9\010\ufff9\001\002\000\006" +
 670     "\002\ufff8\010\ufff8\001\002\000\004\034\303\001\002\000" +
 671     "\004\012\304\001\002\000\014\002\ufff3\004\ufff3\006\ufff3" +
 672     "\010\ufff3\021\ufff3\001\002\000\006\002\ufffb\010\ufffb\001" +
 673     "\002\000\070\004\013\013\027\016\020\021\023\032\031" +
 674     "\033\040\035\034\036\033\037\046\040\047\041\051\044" +
 675     "\015\045\014\046\016\047\036\050\037\051\044\052\025" +
 676     "\053\050\054\043\055\041\056\035\057\030\060\045\061" +
 677     "\021\062\012\063\042\001\002\000\004\002\ufffd\001\002" +
 678     "\000\004\002\uffff\001\002\000\004\002\001\001\002" });
 679 
 680   /** Access to parse-action table. */
 681   public short[][] action_table() {return _action_table;}
 682 
 683   /** <code>reduce_goto</code> table. */
 684   protected static final short[][] _reduce_table =
 685     unpackFromStrings(new String[] {
 686     "\000\307\000\004\003\003\001\001\000\002\001\001\000" +
 687     "\070\004\307\006\120\010\127\011\117\012\101\013\075" +
 688     "\014\104\015\063\016\111\017\145\020\113\021\125\022" +
 689     "\073\023\121\024\143\025\123\026\136\027\146\030\134" +
 690     "\031\107\032\072\033\106\034\147\047\150\050\116\052" +
 691     "\100\053\077\001\001\000\026\035\016\036\007\037\006" +
 692     "\040\031\041\025\042\023\043\052\044\010\047\051\054" +
 693     "\021\001\001\000\002\001\001\000\002\001\001\000\002" +
 694     "\001\001\000\002\001\001\000\020\040\031\041\304\042" +
 695     "\023\043\052\044\010\047\051\054\021\001\001\000\002" +
 696     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 697     "\001\000\002\001\001\000\002\001\001\000\012\040\271" +
 698     "\043\272\044\010\047\051\001\001\000\020\040\031\041" +
 699     "\270\042\023\043\052\044\010\047\051\054\021\001\001" +
 700     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 701     "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
 702     "\007\053\045\262\001\001\000\002\001\001\000\002\001" +
 703     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 704     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 705     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
 706     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 707     "\001\000\002\001\001\000\006\007\053\045\055\001\001" +
 708     "\000\006\007\053\045\250\001\001\000\070\004\132\006" +
 709     "\120\010\127\011\117\012\101\013\075\014\104\015\063" +
 710     "\016\111\017\145\020\113\021\125\022\073\023\121\024" +
 711     "\143\025\123\026\136\027\146\030\134\031\107\032\072" +
 712     "\033\106\034\147\047\150\050\116\052\100\053\077\001" +
 713     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 714     "\000\024\011\117\026\136\027\247\030\134\033\106\034" +
 715     "\147\047\153\052\100\053\077\001\001\000\002\001\001" +
 716     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 717     "\002\001\001\000\002\001\001\000\024\011\117\026\136" +
 718     "\027\243\030\134\033\106\034\147\047\153\052\100\053" +
 719     "\077\001\001\000\070\004\241\006\120\010\127\011\117" +
 720     "\012\101\013\075\014\104\015\063\016\111\017\145\020" +
 721     "\113\021\125\022\073\023\121\024\143\025\123\026\136" +
 722     "\027\146\030\134\031\107\032\072\033\106\034\147\047" +
 723     "\150\050\116\052\100\053\077\001\001\000\002\001\001" +
 724     "\000\002\001\001\000\002\001\001\000\052\006\120\010" +
 725     "\127\011\117\020\240\021\125\022\073\023\121\024\143" +
 726     "\025\123\026\136\027\146\030\134\031\107\032\072\033" +
 727     "\106\034\147\047\150\050\116\052\100\053\077\001\001" +
 728     "\000\002\001\001\000\002\001\001\000\010\033\236\034" +
 729     "\147\047\153\001\001\000\002\001\001\000\002\001\001" +
 730     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 731     "\002\001\001\000\006\007\053\045\214\001\001\000\002" +
 732     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 733     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 734     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 735     "\006\007\053\045\177\001\001\000\002\001\001\000\002" +
 736     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 737     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 738     "\000\002\001\001\000\006\047\164\051\166\001\001\000" +
 739     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
 740     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 741     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 742     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 743     "\020\011\155\026\136\033\106\034\147\047\153\052\100" +
 744     "\053\077\001\001\000\020\011\154\026\136\033\106\034" +
 745     "\147\047\153\052\100\053\077\001\001\000\002\001\001" +
 746     "\000\002\001\001\000\002\001\001\000\052\006\120\010" +
 747     "\127\011\117\020\163\021\125\022\073\023\121\024\143" +
 748     "\025\123\026\136\027\146\030\134\031\107\032\072\033" +
 749     "\106\034\147\047\150\050\116\052\100\053\077\001\001" +
 750     "\000\052\006\120\010\127\011\117\020\162\021\125\022" +
 751     "\073\023\121\024\143\025\123\026\136\027\146\030\134" +
 752     "\031\107\032\072\033\106\034\147\047\150\050\116\052" +
 753     "\100\053\077\001\001\000\052\006\120\010\127\011\117" +
 754     "\020\161\021\125\022\073\023\121\024\143\025\123\026" +
 755     "\136\027\146\030\134\031\107\032\072\033\106\034\147" +
 756     "\047\150\050\116\052\100\053\077\001\001\000\002\001" +
 757     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 758     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 759     "\002\001\001\000\024\011\117\026\136\027\174\030\134" +
 760     "\033\106\034\147\047\153\052\100\053\077\001\001\000" +
 761     "\024\011\117\026\136\027\173\030\134\033\106\034\147" +
 762     "\047\153\052\100\053\077\001\001\000\002\001\001\000" +
 763     "\002\001\001\000\050\006\120\010\127\011\117\021\125" +
 764     "\022\073\023\121\024\176\025\123\026\136\027\146\030" +
 765     "\134\031\107\032\072\033\106\034\147\047\150\050\116" +
 766     "\052\100\053\077\001\001\000\002\001\001\000\002\001" +
 767     "\001\000\074\004\203\005\202\006\120\010\127\011\117" +
 768     "\012\101\013\075\014\104\015\063\016\111\017\145\020" +
 769     "\113\021\125\022\073\023\121\024\143\025\123\026\136" +
 770     "\027\146\030\134\031\107\032\072\033\106\034\147\046" +
 771     "\204\047\150\050\116\052\100\053\077\001\001\000\002" +
 772     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 773     "\001\000\002\001\001\000\074\004\203\005\202\006\120" +
 774     "\010\127\011\117\012\101\013\075\014\104\015\063\016" +
 775     "\111\017\145\020\113\021\125\022\073\023\121\024\143" +
 776     "\025\123\026\136\027\146\030\134\031\107\032\072\033" +
 777     "\106\034\147\046\207\047\150\050\116\052\100\053\077" +
 778     "\001\001\000\002\001\001\000\054\006\120\010\127\011" +
 779     "\117\017\213\020\113\021\125\022\073\023\121\024\143" +
 780     "\025\123\026\136\027\146\030\134\031\107\032\072\033" +
 781     "\106\034\147\047\150\050\116\052\100\053\077\001\001" +
 782     "\000\054\006\120\010\127\011\117\017\212\020\113\021" +
 783     "\125\022\073\023\121\024\143\025\123\026\136\027\146" +
 784     "\030\134\031\107\032\072\033\106\034\147\047\150\050" +
 785     "\116\052\100\053\077\001\001\000\002\001\001\000\002" +
 786     "\001\001\000\002\001\001\000\060\006\120\010\127\011" +
 787     "\117\015\230\016\111\017\145\020\113\021\125\022\073" +
 788     "\023\121\024\143\025\123\026\136\027\146\030\134\031" +
 789     "\107\032\072\033\106\034\147\047\150\050\116\052\100" +
 790     "\053\077\001\001\000\060\006\120\010\127\011\117\015" +
 791     "\217\016\111\017\145\020\113\021\125\022\073\023\121" +
 792     "\024\143\025\123\026\136\027\146\030\134\031\107\032" +
 793     "\072\033\106\034\147\047\150\050\116\052\100\053\077" +
 794     "\001\001\000\002\001\001\000\056\006\120\010\127\011" +
 795     "\117\016\227\017\145\020\113\021\125\022\073\023\121" +
 796     "\024\143\025\123\026\136\027\146\030\134\031\107\032" +
 797     "\072\033\106\034\147\047\150\050\116\052\100\053\077" +
 798     "\001\001\000\056\006\120\010\127\011\117\016\226\017" +
 799     "\145\020\113\021\125\022\073\023\121\024\143\025\123" +
 800     "\026\136\027\146\030\134\031\107\032\072\033\106\034" +
 801     "\147\047\150\050\116\052\100\053\077\001\001\000\056" +
 802     "\006\120\010\127\011\117\016\225\017\145\020\113\021" +
 803     "\125\022\073\023\121\024\143\025\123\026\136\027\146" +
 804     "\030\134\031\107\032\072\033\106\034\147\047\150\050" +
 805     "\116\052\100\053\077\001\001\000\056\006\120\010\127" +
 806     "\011\117\016\224\017\145\020\113\021\125\022\073\023" +
 807     "\121\024\143\025\123\026\136\027\146\030\134\031\107" +
 808     "\032\072\033\106\034\147\047\150\050\116\052\100\053" +
 809     "\077\001\001\000\002\001\001\000\002\001\001\000\002" +
 810     "\001\001\000\002\001\001\000\002\001\001\000\064\006" +
 811     "\120\010\127\011\117\013\232\014\104\015\063\016\111" +
 812     "\017\145\020\113\021\125\022\073\023\121\024\143\025" +
 813     "\123\026\136\027\146\030\134\031\107\032\072\033\106" +
 814     "\034\147\047\150\050\116\052\100\053\077\001\001\000" +
 815     "\002\001\001\000\062\006\120\010\127\011\117\014\234" +
 816     "\015\063\016\111\017\145\020\113\021\125\022\073\023" +
 817     "\121\024\143\025\123\026\136\027\146\030\134\031\107" +
 818     "\032\072\033\106\034\147\047\150\050\116\052\100\053" +
 819     "\077\001\001\000\002\001\001\000\002\001\001\000\006" +
 820     "\007\053\045\237\001\001\000\002\001\001\000\002\001" +
 821     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 822     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 823     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
 824     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 825     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 826     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 827     "\020\040\031\041\267\042\023\043\052\044\010\047\051" +
 828     "\054\021\001\001\000\020\040\031\041\266\042\023\043" +
 829     "\052\044\010\047\051\054\021\001\001\000\002\001\001" +
 830     "\000\002\001\001\000\002\001\001\000\006\007\053\045" +
 831     "\274\001\001\000\006\007\053\045\273\001\001\000\002" +
 832     "\001\001\000\002\001\001\000\020\040\031\041\300\042" +
 833     "\023\043\052\044\010\047\051\054\021\001\001\000\020" +
 834     "\040\031\041\277\042\023\043\052\044\010\047\051\054" +
 835     "\021\001\001\000\002\001\001\000\002\001\001\000\002" +
 836     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 837     "\001\000\026\035\016\036\306\037\006\040\031\041\025" +
 838     "\042\023\043\052\044\010\047\051\054\021\001\001\000" +
 839     "\002\001\001\000\002\001\001\000\002\001\001" });
 840 
 841   /** Access to <code>reduce_goto</code> table. */
 842   public short[][] reduce_table() {return _reduce_table;}
 843 
 844   /** Instance of action encapsulation class. */
 845   protected parser_actions action_obj;
 846 
 847   /** Action encapsulation object initializer. */
 848   protected void init_actions()
 849     {
 850       action_obj = new parser_actions(this);
 851     }
 852 
 853   /** Invoke a user supplied parse action. */
 854   public Symbol do_action(
 855     int                        act_num,
 856     lr_parser parser,
 857     Stack<Symbol>            stack,
 858     int                        top)
 859     throws java.lang.Exception
 860   {
 861     /* call code in generated class */
 862     return action_obj.parser_do_action(act_num, parser, stack, top);
 863   }
 864 
 865   /** Indicates start state. */
 866   public int start_state() {return 0;}
 867   /** Indicates start production. */
 868   public int start_production() {return 0;}
 869 
 870   /** <code>EOF</code> Symbol index. */
 871   public int EOF_sym() {return 0;}
 872 
 873   /** <code>error</code> Symbol index. */
 874   public int error_sym() {return 1;}
 875 
 876 
 877 
 878     /**
 879      * Used by function calls with no args.
 880      */
 881     static public final List<Expression> EmptyArgs = new ArrayList<>(0);
 882 
 883     /**
 884      * Reference to non-existing variable.
 885      */
 886     static public final VariableRef DummyVarRef = null;
 887 
 888     /**
 889      * Reference to the Parser class.
 890      */
 891     private Parser _parser;
 892     private XSLTC  _xsltc;
 893 
 894     /**
 895      * String representation of the expression being parsed.
 896      */
 897     private String _expression;
 898 
 899     /**
 900      * Line number where this expression/pattern was declared.
 901      */
 902     private int _lineNumber = 0;
 903 
 904     /**
 905      * Reference to the symbol table.
 906      */
 907     public SymbolTable _symbolTable;
 908 
 909     public XPathParser(Parser parser) {
 910         _parser = parser;
 911         _xsltc = parser.getXSLTC();
 912         _symbolTable = parser.getSymbolTable();
 913     }
 914 
 915     public int getLineNumber() {
 916         return _lineNumber;
 917     }
 918 
 919     public QName getQNameIgnoreDefaultNs(String name) {
 920           return _parser.getQNameIgnoreDefaultNs(name);
 921     }
 922 
 923     public QName getQName(String namespace, String prefix, String localname) {
 924         return _parser.getQName(namespace, prefix, localname);
 925     }
 926 
 927     public void setMultiDocument(boolean flag) {
 928           _xsltc.setMultiDocument(flag);
 929     }
 930 
 931     public void setCallsNodeset(boolean flag) {
 932           _xsltc.setCallsNodeset(flag);
 933     }
 934 
 935     public void setHasIdCall(boolean flag) {
 936           _xsltc.setHasIdCall(flag);
 937     }
 938 
 939 
 940     /**
 941      * This method is similar to findNodeType(int, Object) except that it
 942      * creates a StepPattern instead of just returning a node type. It also
 943      * differs in the way it handles "{uri}:*" and "{uri}:@*". The last two
 944      * patterns are expanded as "*[namespace-uri() = 'uri']" and
 945      * "@*[namespace-uri() = 'uri']", respectively. This expansion considerably
 946      * simplifies the grouping of patterns in the Mode class. For this
 947      * expansion to be correct, the priority of the pattern/template must be
 948      * set to -0.25 (when no other predicates are present).
 949      */
 950     public StepPattern createStepPattern(int axis, Object test, List<Predicate> predicates) {
 951         int nodeType;
 952 
 953         if (test == null) {  // "*"
 954             nodeType = (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE :
 955                 (axis == Axis.NAMESPACE) ? -1 : NodeTest.ELEMENT;
 956 
 957             return new StepPattern(axis, nodeType, predicates);
 958         }
 959         else if (test instanceof Integer) {
 960             nodeType = ((Integer) test).intValue();
 961 
 962             return new StepPattern(axis, nodeType, predicates);
 963         }
 964         else {
 965             QName name = (QName)test;
 966             boolean setPriority = false;
 967 
 968             if (axis == Axis.NAMESPACE) {
 969                 nodeType = (name.toString().equals("*")) ? -1
 970                                 : _xsltc.registerNamespacePrefix(name);;
 971             }
 972             else {
 973                 final String uri = name.getNamespace();
 974                 final String local = name.getLocalPart();
 975                 final QName namespace_uri =
 976                     _parser.getQNameIgnoreDefaultNs("namespace-uri");
 977 
 978                 // Expand {uri}:* to *[namespace-uri() = 'uri'] - same for @*
 979                 if (uri != null && (local.equals("*") || local.equals("@*"))) {
 980                     if (predicates == null) {
 981                         predicates = new ArrayList<>(2);
 982                     }
 983 
 984                     // Priority is set by hand if no other predicates exist
 985                     setPriority = (predicates.size() == 0);
 986 
 987                     predicates.add(
 988                         new Predicate(
 989                             new EqualityExpr(Operators.EQ,
 990                                 new NamespaceUriCall(namespace_uri),
 991                                 new LiteralExpr(uri))));
 992                 }
 993 
 994                 if (local.equals("*")) {
 995                     nodeType = (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE
 996                         : NodeTest.ELEMENT;
 997                 }
 998                 else if (local.equals("@*")) {
 999                     nodeType = NodeTest.ATTRIBUTE;
1000                 }
1001                 else {
1002                     nodeType = (axis == Axis.ATTRIBUTE) ? _xsltc.registerAttribute(name)
1003                         : _xsltc.registerElement(name);
1004                 }
1005             }
1006 
1007             final StepPattern result = new StepPattern(axis, nodeType, predicates);
1008 
1009             // Set priority for case prefix:* and prefix:@* (no predicates)
1010             if (setPriority) {
1011                 result.setPriority(-0.25);
1012             }
1013 
1014             return result;
1015         }
1016     }
1017 
1018     public int findNodeType(int axis, Object test) {
1019         if (test == null) {  // *
1020             return (axis == Axis.ATTRIBUTE) ?
1021                 NodeTest.ATTRIBUTE :
1022                 (axis == Axis.NAMESPACE) ? -1 : NodeTest.ELEMENT;
1023         }
1024         else if (test instanceof Integer) {
1025             return ((Integer)test).intValue();
1026         }
1027         else {
1028             QName name = (QName)test;
1029 
1030             if (axis == Axis.NAMESPACE) {
1031                 return (name.toString().equals("*")) ? -1
1032                     : _xsltc.registerNamespacePrefix(name);
1033             }
1034 
1035             if (name.getNamespace() == null) {
1036                 final String local = name.getLocalPart();
1037 
1038                 if (local.equals("*")) {
1039                     return (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE
1040                         : NodeTest.ELEMENT;
1041                 }
1042                 else if (local.equals("@*")) {
1043                     return NodeTest.ATTRIBUTE;
1044                 }
1045             }
1046 
1047             return (axis == Axis.ATTRIBUTE) ? _xsltc.registerAttribute(name)
1048                 : _xsltc.registerElement(name);
1049         }
1050     }
1051 
1052     /**
1053      * Parse the expression passed to the current scanner. If this
1054      * expression contains references to local variables and it will be
1055      * compiled in an external module (not in the main class) request
1056      * the current template to create a new variable stack frame.
1057      *
1058      * @param lineNumber Line where the current expression is defined.
1059      * @param external   Set to <tt>true</tt> if this expression is
1060      *                   compiled in a separate module.
1061      *
1062      */
1063     public Symbol parse(String expression, int lineNumber) throws Exception {
1064         try {
1065             _expression = expression;
1066             _lineNumber = lineNumber;
1067             return super.parse();
1068         }
1069         catch (IllegalCharException e) {
1070             ErrorMsg err = new ErrorMsg(ErrorMsg.ILLEGAL_CHAR_ERR,
1071                                         lineNumber, e.getMessage());
1072             _parser.reportError(Constants.FATAL, err);
1073         }
1074         return null;
1075     }
1076 
1077     /**
1078      * Lookup a variable or parameter in the symbol table given its name.
1079      *
1080      * @param name Name of the symbol being looked up.
1081      */
1082     final SyntaxTreeNode lookupName(QName name) {
1083         // Is it a local var or param ?
1084         final SyntaxTreeNode result = _parser.lookupVariable(name);
1085         if (result != null)
1086             return(result);
1087         else
1088             return(_symbolTable.lookupName(name));
1089     }
1090 
1091     public final void addError(ErrorMsg error) {
1092         _parser.reportError(Constants.ERROR, error);
1093     }
1094 
1095     public void report_error(String message, Object info) {
1096         final ErrorMsg err = new ErrorMsg(ErrorMsg.SYNTAX_ERR, _lineNumber,
1097             _expression);
1098         _parser.reportError(Constants.FATAL, err);
1099     }
1100 
1101     public void report_fatal_error(String message, Object info) {
1102         // empty
1103     }
1104 
1105     public RelativeLocationPath insertStep(Step step, RelativeLocationPath rlp) {
1106         if (rlp instanceof Step) {
1107             return new ParentLocationPath(step, (Step) rlp);
1108         }
1109         else if (rlp instanceof ParentLocationPath) {
1110             final ParentLocationPath plp = (ParentLocationPath) rlp;
1111             final RelativeLocationPath newrlp = insertStep(step, plp.getPath());
1112             return new ParentLocationPath(newrlp, plp.getStep());
1113         }
1114         else {
1115             addError(new ErrorMsg(ErrorMsg.INTERNAL_ERR, "XPathParser.insertStep"));
1116             return rlp;
1117         }
1118     }
1119 
1120     /**
1121      * Returns true if the axis applies to elements only. The axes
1122      * child, attribute, namespace, descendant result in non-empty
1123      * nodesets only if the context node is of type element.
1124      */
1125     public boolean isElementAxis(int axis) {
1126         return (axis == Axis.CHILD || axis == Axis.ATTRIBUTE ||
1127                 axis == Axis.NAMESPACE || axis == Axis.DESCENDANT);
1128     }
1129 
1130 }
1131 
1132 /** Cup generated class to encapsulate user supplied action code.*/
1133 class parser_actions {
1134   private final XPathParser parser;
1135 
1136   /** Constructor */
1137   parser_actions(XPathParser parser) {
1138     this.parser = parser;
1139   }
1140 
1141   /** Method with the actual generated action code. */
1142   public final Symbol parser_do_action(
1143     int                        parser_act_num,
1144     lr_parser parser_parser,
1145     Stack<Symbol>            parser_stack,
1146     int                        parser_top)
1147     throws java.lang.Exception
1148     {
1149       /* Symbol object for return from actions */
1150       Symbol parser_result;
1151 
1152       /* select the action based on the action number */
1153       switch (parser_act_num)
1154         {
1155           /*. . . . . . . . . . . . . . . . . . . .*/
1156           case 140: // QName ::= ID
1157             {
1158               QName RESULT = null;
1159                  RESULT = parser.getQNameIgnoreDefaultNs("id");
1160               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1161             }
1162           return parser_result;
1163 
1164           /*. . . . . . . . . . . . . . . . . . . .*/
1165           case 139: // QName ::= SELF
1166             {
1167               QName RESULT = null;
1168                  RESULT = parser.getQNameIgnoreDefaultNs("self");
1169               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1170             }
1171           return parser_result;
1172 
1173           /*. . . . . . . . . . . . . . . . . . . .*/
1174           case 138: // QName ::= PRECEDINGSIBLING
1175             {
1176               QName RESULT = null;
1177                  RESULT = parser.getQNameIgnoreDefaultNs("preceding-sibling");
1178               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1179             }
1180           return parser_result;
1181 
1182           /*. . . . . . . . . . . . . . . . . . . .*/
1183           case 137: // QName ::= PRECEDING
1184             {
1185               QName RESULT = null;
1186                  RESULT = parser.getQNameIgnoreDefaultNs("preceding");
1187               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1188             }
1189           return parser_result;
1190 
1191           /*. . . . . . . . . . . . . . . . . . . .*/
1192           case 136: // QName ::= PARENT
1193             {
1194               QName RESULT = null;
1195                  RESULT = parser.getQNameIgnoreDefaultNs("parent");
1196               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1197             }
1198           return parser_result;
1199 
1200           /*. . . . . . . . . . . . . . . . . . . .*/
1201           case 135: // QName ::= NAMESPACE
1202             {
1203               QName RESULT = null;
1204                  RESULT = parser.getQNameIgnoreDefaultNs("namespace");
1205               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1206             }
1207           return parser_result;
1208 
1209           /*. . . . . . . . . . . . . . . . . . . .*/
1210           case 134: // QName ::= FOLLOWINGSIBLING
1211             {
1212               QName RESULT = null;
1213                  RESULT = parser.getQNameIgnoreDefaultNs("following-sibling");
1214               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1215             }
1216           return parser_result;
1217 
1218           /*. . . . . . . . . . . . . . . . . . . .*/
1219           case 133: // QName ::= FOLLOWING
1220             {
1221               QName RESULT = null;
1222                  RESULT = parser.getQNameIgnoreDefaultNs("following");
1223               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1224             }
1225           return parser_result;
1226 
1227           /*. . . . . . . . . . . . . . . . . . . .*/
1228           case 132: // QName ::= DESCENDANTORSELF
1229             {
1230               QName RESULT = null;
1231                  RESULT = parser.getQNameIgnoreDefaultNs("decendant-or-self");
1232               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1233             }
1234           return parser_result;
1235 
1236           /*. . . . . . . . . . . . . . . . . . . .*/
1237           case 131: // QName ::= DESCENDANT
1238             {
1239               QName RESULT = null;
1240                  RESULT = parser.getQNameIgnoreDefaultNs("decendant");
1241               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1242             }
1243           return parser_result;
1244 
1245           /*. . . . . . . . . . . . . . . . . . . .*/
1246           case 130: // QName ::= CHILD
1247             {
1248               QName RESULT = null;
1249                  RESULT = parser.getQNameIgnoreDefaultNs("child");
1250               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1251             }
1252           return parser_result;
1253 
1254           /*. . . . . . . . . . . . . . . . . . . .*/
1255           case 129: // QName ::= ATTRIBUTE
1256             {
1257               QName RESULT = null;
1258                  RESULT = parser.getQNameIgnoreDefaultNs("attribute");
1259               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1260             }
1261           return parser_result;
1262 
1263           /*. . . . . . . . . . . . . . . . . . . .*/
1264           case 128: // QName ::= ANCESTORORSELF
1265             {
1266               QName RESULT = null;
1267                  RESULT = parser.getQNameIgnoreDefaultNs("ancestor-or-self");
1268               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1269             }
1270           return parser_result;
1271 
1272           /*. . . . . . . . . . . . . . . . . . . .*/
1273           case 127: // QName ::= ANCESTOR
1274             {
1275               QName RESULT = null;
1276                  RESULT = parser.getQNameIgnoreDefaultNs("child");
1277               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1278             }
1279           return parser_result;
1280 
1281           /*. . . . . . . . . . . . . . . . . . . .*/
1282           case 126: // QName ::= KEY
1283             {
1284               QName RESULT = null;
1285                  RESULT = parser.getQNameIgnoreDefaultNs("key");
1286               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1287             }
1288           return parser_result;
1289 
1290           /*. . . . . . . . . . . . . . . . . . . .*/
1291           case 125: // QName ::= MOD
1292             {
1293               QName RESULT = null;
1294                  RESULT = parser.getQNameIgnoreDefaultNs("mod");
1295               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1296             }
1297           return parser_result;
1298 
1299           /*. . . . . . . . . . . . . . . . . . . .*/
1300           case 124: // QName ::= DIV
1301             {
1302               QName RESULT = null;
1303                  RESULT = parser.getQNameIgnoreDefaultNs("div");
1304               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1305             }
1306           return parser_result;
1307 
1308           /*. . . . . . . . . . . . . . . . . . . .*/
1309           case 123: // QName ::= QNAME
1310             {
1311               QName RESULT = null;
1312                 int qnameleft = (parser_stack.get(parser_top-0)).left;
1313                 int qnameright = (parser_stack.get(parser_top-0)).right;
1314                 String qname = (String)((Symbol) parser_stack.get(parser_top-0)).value;
1315                  RESULT = parser.getQNameIgnoreDefaultNs(qname);
1316               parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1317             }
1318           return parser_result;
1319 
1320           /*. . . . . . . . . . . . . . . . . . . .*/
1321           case 122: // NameTest ::= QName
1322             {
1323               Object RESULT = null;
1324                 int qnleft = (parser_stack.get(parser_top-0)).left;
1325                 int qnright = (parser_stack.get(parser_top-0)).right;
1326                 QName qn = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
1327                  RESULT = qn;
1328               parser_result = new Symbol(26/*NameTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1329             }
1330           return parser_result;
1331 
1332           /*. . . . . . . . . . . . . . . . . . . .*/
1333           case 121: // NameTest ::= STAR
1334             {
1335               Object RESULT = null;
1336                  RESULT = null;
1337               parser_result = new Symbol(26/*NameTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1338             }
1339           return parser_result;
1340 
1341           /*. . . . . . . . . . . . . . . . . . . .*/
1342           case 120: // NodeTest ::= PI
1343             {
1344               Object RESULT = null;
1345                  RESULT = Integer.valueOf(NodeTest.PI);
1346               parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1347             }
1348           return parser_result;
1349 
1350           /*. . . . . . . . . . . . . . . . . . . .*/
1351           case 119: // NodeTest ::= PIPARAM LPAREN Literal RPAREN
1352             {
1353               Object RESULT = null;
1354                 int lleft = (parser_stack.get(parser_top-1)).left;
1355                 int lright = (parser_stack.get(parser_top-1)).right;
1356                 String l = (String)((Symbol) parser_stack.get(parser_top-1)).value;
1357 
1358            QName name = parser.getQNameIgnoreDefaultNs("name");
1359            Expression exp = new EqualityExpr(Operators.EQ,
1360                                              new NameCall(name),
1361                                              new LiteralExpr(l));
1362            List<Predicate> predicates = new ArrayList<>();
1363            predicates.add(new Predicate(exp));
1364            RESULT = new Step(Axis.CHILD, NodeTest.PI, predicates);
1365 
1366               parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1367             }
1368           return parser_result;
1369 
1370           /*. . . . . . . . . . . . . . . . . . . .*/
1371           case 118: // NodeTest ::= COMMENT
1372             {
1373               Object RESULT = null;
1374                  RESULT = Integer.valueOf(NodeTest.COMMENT);
1375               parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1376             }
1377           return parser_result;
1378 
1379           /*. . . . . . . . . . . . . . . . . . . .*/
1380           case 117: // NodeTest ::= TEXT
1381             {
1382               Object RESULT = null;
1383                  RESULT = Integer.valueOf(NodeTest.TEXT);
1384               parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1385             }
1386           return parser_result;
1387 
1388           /*. . . . . . . . . . . . . . . . . . . .*/
1389           case 116: // NodeTest ::= NODE
1390             {
1391               Object RESULT = null;
1392                  RESULT = Integer.valueOf(NodeTest.ANODE);
1393               parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1394             }
1395           return parser_result;
1396 
1397           /*. . . . . . . . . . . . . . . . . . . .*/
1398           case 115: // NodeTest ::= NameTest
1399             {
1400               Object RESULT = null;
1401                 int ntleft = (parser_stack.get(parser_top-0)).left;
1402                 int ntright = (parser_stack.get(parser_top-0)).right;
1403                 Object nt = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
1404                  RESULT = nt;
1405               parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1406             }
1407           return parser_result;
1408 
1409           /*. . . . . . . . . . . . . . . . . . . .*/
1410           case 114: // Argument ::= Expr
1411             {
1412               Expression RESULT = null;
1413                 int exleft = (parser_stack.get(parser_top-0)).left;
1414                 int exright = (parser_stack.get(parser_top-0)).right;
1415                 Expression ex = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1416                  RESULT = ex;
1417               parser_result = new Symbol(3/*Argument*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1418             }
1419           return parser_result;
1420 
1421           /*. . . . . . . . . . . . . . . . . . . .*/
1422           case 113: // VariableName ::= QName
1423             {
1424               QName RESULT = null;
1425                 int vnameleft = (parser_stack.get(parser_top-0)).left;
1426                 int vnameright = (parser_stack.get(parser_top-0)).right;
1427                 QName vname = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
1428 
1429             RESULT = vname;
1430 
1431               parser_result = new Symbol(39/*VariableName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1432             }
1433           return parser_result;
1434 
1435           /*. . . . . . . . . . . . . . . . . . . .*/
1436           case 112: // FunctionName ::= QName
1437             {
1438               QName RESULT = null;
1439                 int fnameleft = (parser_stack.get(parser_top-0)).left;
1440                 int fnameright = (parser_stack.get(parser_top-0)).right;
1441                 QName fname = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
1442 
1443             RESULT = fname;
1444 
1445               parser_result = new Symbol(38/*FunctionName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1446             }
1447           return parser_result;
1448 
1449           /*. . . . . . . . . . . . . . . . . . . .*/
1450           case 111: // NonemptyArgumentList ::= Argument COMMA NonemptyArgumentList
1451             {
1452                 List<Expression> RESULT = null;
1453                 int argleft = (parser_stack.get(parser_top-2)).left;
1454                 int argright = (parser_stack.get(parser_top-2)).right;
1455                 Expression arg = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
1456                 int arglleft = (parser_stack.get(parser_top-0)).left;
1457                 int arglright = (parser_stack.get(parser_top-0)).right;
1458                 @SuppressWarnings("unchecked")
1459                 List<Expression> argl = (ArrayList<Expression>)((Symbol) parser_stack.get(parser_top-0)).value;
1460                 argl.add(0, arg);
1461                 RESULT = argl;
1462               parser_result = new Symbol(36/*NonemptyArgumentList*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1463             }
1464           return parser_result;
1465 
1466           /*. . . . . . . . . . . . . . . . . . . .*/
1467           case 110: // NonemptyArgumentList ::= Argument
1468             {
1469               List<Expression> RESULT = null;
1470                 int argleft = (parser_stack.get(parser_top-0)).left;
1471                 int argright = (parser_stack.get(parser_top-0)).right;
1472                 Expression arg = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1473 
1474             List<Expression> temp = new ArrayList<>();
1475             temp.add(arg);
1476             RESULT = temp;
1477 
1478               parser_result = new Symbol(36/*NonemptyArgumentList*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1479             }
1480           return parser_result;
1481 
1482           /*. . . . . . . . . . . . . . . . . . . .*/
1483           case 109: // FunctionCall ::= FunctionName LPAREN NonemptyArgumentList RPAREN
1484             {
1485                 Expression RESULT = null;
1486                 int fnameleft = (parser_stack.get(parser_top-3)).left;
1487                 int fnameright = (parser_stack.get(parser_top-3)).right;
1488                 QName fname = (QName)((Symbol) parser_stack.get(parser_top-3)).value;
1489                 int arglleft = (parser_stack.get(parser_top-1)).left;
1490                 int arglright = (parser_stack.get(parser_top-1)).right;
1491                 @SuppressWarnings("unchecked")
1492                 List<Expression> argl = (ArrayList<Expression>)((Symbol) parser_stack.get(parser_top-1)).value;
1493 
1494           if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1495             RESULT = new ConcatCall(fname, argl);
1496           }
1497           else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1498             RESULT = new NumberCall(fname, argl);
1499           }
1500           else if (fname == parser.getQNameIgnoreDefaultNs("document")) {
1501             parser.setMultiDocument(true);
1502             RESULT = new DocumentCall(fname, argl);
1503           }
1504           else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1505             RESULT = new StringCall(fname, argl);
1506           }
1507           else if (fname == parser.getQNameIgnoreDefaultNs("boolean")) {
1508             RESULT = new BooleanCall(fname, argl);
1509           }
1510           else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
1511             RESULT = new NameCall(fname, argl);
1512           }
1513           else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
1514             RESULT = new GenerateIdCall(fname, argl);
1515           }
1516           else if (fname == parser.getQNameIgnoreDefaultNs("not")) {
1517             RESULT = new NotCall(fname, argl);
1518           }
1519           else if (fname == parser.getQNameIgnoreDefaultNs("format-number")) {
1520             RESULT = new FormatNumberCall(fname, argl);
1521           }
1522           else if (fname == parser.getQNameIgnoreDefaultNs("unparsed-entity-uri")) {
1523             RESULT = new UnparsedEntityUriCall(fname, argl);
1524           }
1525           else if (fname == parser.getQNameIgnoreDefaultNs("key")) {
1526             RESULT = new KeyCall(fname, argl);
1527           }
1528           else if (fname == parser.getQNameIgnoreDefaultNs("id")) {
1529             RESULT = new KeyCall(fname, argl);
1530             parser.setHasIdCall(true);
1531           }
1532           else if (fname == parser.getQNameIgnoreDefaultNs("ceiling")) {
1533             RESULT = new CeilingCall(fname, argl);
1534           }
1535           else if (fname == parser.getQNameIgnoreDefaultNs("round")) {
1536             RESULT = new RoundCall(fname, argl);
1537           }
1538           else if (fname == parser.getQNameIgnoreDefaultNs("floor")) {
1539             RESULT = new FloorCall(fname, argl);
1540           }
1541           else if (fname == parser.getQNameIgnoreDefaultNs("contains")) {
1542             RESULT = new ContainsCall(fname, argl);
1543           }
1544           else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) {
1545             RESULT = new StringLengthCall(fname, argl);
1546           }
1547           else if (fname == parser.getQNameIgnoreDefaultNs("starts-with")) {
1548             RESULT = new StartsWithCall(fname, argl);
1549           }
1550           else if (fname == parser.getQNameIgnoreDefaultNs("function-available")) {
1551             RESULT = new FunctionAvailableCall(fname, argl);
1552           }
1553           else if (fname == parser.getQNameIgnoreDefaultNs("element-available")) {
1554             RESULT = new ElementAvailableCall(fname, argl);
1555           }
1556           else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
1557             RESULT = new LocalNameCall(fname, argl);
1558           }
1559           else if (fname == parser.getQNameIgnoreDefaultNs("lang")) {
1560             RESULT = new LangCall(fname, argl);
1561           }
1562           else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
1563             RESULT = new NamespaceUriCall(fname, argl);
1564           }
1565           else if (fname == parser.getQName(Constants.TRANSLET_URI, "xsltc", "cast")) {
1566             RESULT = new CastCall(fname, argl);
1567           }
1568           // Special case for extension function nodeset()
1569           else if (fname.getLocalPart().equals("nodeset") || fname.getLocalPart().equals("node-set")) {
1570             parser.setCallsNodeset(true);  // implies MultiDOM
1571             RESULT = new FunctionCall(fname, argl);
1572           }
1573           else {
1574             RESULT = new FunctionCall(fname, argl);
1575           }
1576 
1577               parser_result = new Symbol(16/*FunctionCall*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1578             }
1579           return parser_result;
1580 
1581           /*. . . . . . . . . . . . . . . . . . . .*/
1582           case 108: // FunctionCall ::= FunctionName LPAREN RPAREN
1583             {
1584               Expression RESULT = null;
1585                 int fnameleft = (parser_stack.get(parser_top-2)).left;
1586                 int fnameright = (parser_stack.get(parser_top-2)).right;
1587                 QName fname = (QName)((Symbol) parser_stack.get(parser_top-2)).value;
1588 
1589 
1590           if (fname == parser.getQNameIgnoreDefaultNs("current")) {
1591             RESULT = new CurrentCall(fname);
1592           }
1593           else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1594             RESULT = new NumberCall(fname, XPathParser.EmptyArgs);
1595           }
1596           else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1597             RESULT = new StringCall(fname, XPathParser.EmptyArgs);
1598           }
1599           else if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1600             RESULT = new ConcatCall(fname, XPathParser.EmptyArgs);
1601           }
1602           else if (fname == parser.getQNameIgnoreDefaultNs("true")) {
1603             RESULT = new BooleanExpr(true);
1604           }
1605           else if (fname == parser.getQNameIgnoreDefaultNs("false")) {
1606             RESULT = new BooleanExpr(false);
1607           }
1608           else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
1609             RESULT = new NameCall(fname);
1610           }
1611           else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
1612             RESULT = new GenerateIdCall(fname, XPathParser.EmptyArgs);
1613           }
1614           else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) {
1615             RESULT = new StringLengthCall(fname, XPathParser.EmptyArgs);
1616           }
1617           else if (fname == parser.getQNameIgnoreDefaultNs("position")) {
1618             RESULT = new PositionCall(fname);
1619           }
1620           else if (fname == parser.getQNameIgnoreDefaultNs("last")) {
1621             RESULT = new LastCall(fname);
1622           }
1623           else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
1624             RESULT = new LocalNameCall(fname);
1625           }
1626           else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
1627             RESULT = new NamespaceUriCall(fname);
1628           }
1629           else {
1630             RESULT = new FunctionCall(fname, XPathParser.EmptyArgs);
1631           }
1632 
1633               parser_result = new Symbol(16/*FunctionCall*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1634             }
1635           return parser_result;
1636 
1637           /*. . . . . . . . . . . . . . . . . . . .*/
1638           case 107: // VariableReference ::= DOLLAR VariableName
1639             {
1640               Expression RESULT = null;
1641                 int varNameleft = (parser_stack.get(parser_top-0)).left;
1642                 int varNameright = (parser_stack.get(parser_top-0)).right;
1643                 QName varName = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
1644 
1645             // An empty qname prefix for a variable or parameter reference
1646             // should map to the null namespace and not the default URI.
1647             SyntaxTreeNode node = parser.lookupName(varName);
1648 
1649             if (node != null) {
1650                 if (node instanceof Variable) {
1651                     RESULT = new VariableRef((Variable)node);
1652                 }
1653                 else if (node instanceof Param) {
1654                     RESULT = new ParameterRef((Param)node);
1655                 }
1656                 else {
1657                     RESULT = new UnresolvedRef(varName);
1658                 }
1659             }
1660 
1661             if (node == null) {
1662                 RESULT = new UnresolvedRef(varName);
1663             }
1664 
1665               parser_result = new Symbol(15/*VariableReference*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1666             }
1667           return parser_result;
1668 
1669           /*. . . . . . . . . . . . . . . . . . . .*/
1670           case 106: // PrimaryExpr ::= FunctionCall
1671             {
1672               Expression RESULT = null;
1673                 int fcleft = (parser_stack.get(parser_top-0)).left;
1674                 int fcright = (parser_stack.get(parser_top-0)).right;
1675                 Expression fc = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1676                  RESULT = fc;
1677               parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1678             }
1679           return parser_result;
1680 
1681           /*. . . . . . . . . . . . . . . . . . . .*/
1682           case 105: // PrimaryExpr ::= REAL
1683             {
1684               Expression RESULT = null;
1685                 int numleft = (parser_stack.get(parser_top-0)).left;
1686                 int numright = (parser_stack.get(parser_top-0)).right;
1687                 Double num = (Double)((Symbol) parser_stack.get(parser_top-0)).value;
1688                  RESULT = new RealExpr(num.doubleValue());
1689               parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1690             }
1691           return parser_result;
1692 
1693           /*. . . . . . . . . . . . . . . . . . . .*/
1694           case 104: // PrimaryExpr ::= INT
1695             {
1696               Expression RESULT = null;
1697                 int numleft = (parser_stack.get(parser_top-0)).left;
1698                 int numright = (parser_stack.get(parser_top-0)).right;
1699                 Long num = (Long)((Symbol) parser_stack.get(parser_top-0)).value;
1700 
1701            long value = num.longValue();
1702            if (value < Integer.MIN_VALUE || value > Integer.MAX_VALUE) {
1703                 RESULT = new RealExpr(value);
1704            }
1705            else {
1706                if (num.doubleValue() == -0)
1707                    RESULT = new RealExpr(num.doubleValue());
1708                else if (num.intValue() == 0)
1709                    RESULT = new IntExpr(num.intValue());
1710                else if (num.doubleValue() == 0.0)
1711                    RESULT = new RealExpr(num.doubleValue());
1712                else
1713                    RESULT = new IntExpr(num.intValue());
1714            }
1715 
1716               parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1717             }
1718           return parser_result;
1719 
1720           /*. . . . . . . . . . . . . . . . . . . .*/
1721           case 103: // PrimaryExpr ::= Literal
1722             {
1723               Expression RESULT = null;
1724                 int stringleft = (parser_stack.get(parser_top-0)).left;
1725                 int stringright = (parser_stack.get(parser_top-0)).right;
1726                 String string = (String)((Symbol) parser_stack.get(parser_top-0)).value;
1727 
1728         /*
1729         * If the string appears to have the syntax of a QName, store
1730         * namespace info in the literal expression. This is used for
1731         * element-available and function-available functions, among
1732         * others. Also, the default namespace must be ignored.
1733         */
1734         String namespace = null;
1735         final int index = string.lastIndexOf(':');
1736 
1737         if (index > 0) {
1738             final String prefix = string.substring(0, index);
1739             namespace = parser._symbolTable.lookupNamespace(prefix);
1740         }
1741         RESULT = (namespace == null) ? new LiteralExpr(string)
1742                      : new LiteralExpr(string, namespace);
1743 
1744               parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1745             }
1746           return parser_result;
1747 
1748           /*. . . . . . . . . . . . . . . . . . . .*/
1749           case 102: // PrimaryExpr ::= LPAREN Expr RPAREN
1750             {
1751               Expression RESULT = null;
1752                 int exleft = (parser_stack.get(parser_top-1)).left;
1753                 int exright = (parser_stack.get(parser_top-1)).right;
1754                 Expression ex = (Expression)((Symbol) parser_stack.get(parser_top-1)).value;
1755                  RESULT = ex;
1756               parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1757             }
1758           return parser_result;
1759 
1760           /*. . . . . . . . . . . . . . . . . . . .*/
1761           case 101: // PrimaryExpr ::= VariableReference
1762             {
1763               Expression RESULT = null;
1764                 int vrleft = (parser_stack.get(parser_top-0)).left;
1765                 int vrright = (parser_stack.get(parser_top-0)).right;
1766                 Expression vr = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1767                  RESULT = vr;
1768               parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1769             }
1770           return parser_result;
1771 
1772           /*. . . . . . . . . . . . . . . . . . . .*/
1773           case 100: // FilterExpr ::= PrimaryExpr Predicates
1774             {
1775               Expression RESULT = null;
1776                 int primaryleft = (parser_stack.get(parser_top-1)).left;
1777                 int primaryright = (parser_stack.get(parser_top-1)).right;
1778                 Expression primary = (Expression)((Symbol) parser_stack.get(parser_top-1)).value;
1779                 int ppleft = (parser_stack.get(parser_top-0)).left;
1780                 int ppright = (parser_stack.get(parser_top-0)).right;
1781                 @SuppressWarnings("unchecked")
1782                 List<Expression> pp = (ArrayList<Expression>)((Symbol) parser_stack.get(parser_top-0)).value;
1783                  RESULT = new FilterExpr(primary, pp);
1784               parser_result = new Symbol(6/*FilterExpr*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1785             }
1786           return parser_result;
1787 
1788           /*. . . . . . . . . . . . . . . . . . . .*/
1789           case 99: // FilterExpr ::= PrimaryExpr
1790             {
1791               Expression RESULT = null;
1792                 int primaryleft = (parser_stack.get(parser_top-0)).left;
1793                 int primaryright = (parser_stack.get(parser_top-0)).right;
1794                 Expression primary = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1795                  RESULT = primary;
1796               parser_result = new Symbol(6/*FilterExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1797             }
1798           return parser_result;
1799 
1800           /*. . . . . . . . . . . . . . . . . . . .*/
1801           case 98: // AbbreviatedStep ::= DDOT
1802             {
1803               Expression RESULT = null;
1804                  RESULT = new Step(Axis.PARENT, NodeTest.ANODE, null);
1805               parser_result = new Symbol(20/*AbbreviatedStep*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1806             }
1807           return parser_result;
1808 
1809           /*. . . . . . . . . . . . . . . . . . . .*/
1810           case 97: // AbbreviatedStep ::= DOT
1811             {
1812               Expression RESULT = null;
1813                  RESULT = new Step(Axis.SELF, NodeTest.ANODE, null);
1814               parser_result = new Symbol(20/*AbbreviatedStep*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1815             }
1816           return parser_result;
1817 
1818           /*. . . . . . . . . . . . . . . . . . . .*/
1819           case 96: // AxisName ::= SELF
1820             {
1821               Integer RESULT = null;
1822                  RESULT = Integer.valueOf(Axis.SELF);
1823               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1824             }
1825           return parser_result;
1826 
1827           /*. . . . . . . . . . . . . . . . . . . .*/
1828           case 95: // AxisName ::= PRECEDINGSIBLING
1829             {
1830               Integer RESULT = null;
1831                  RESULT = Integer.valueOf(Axis.PRECEDINGSIBLING);
1832               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1833             }
1834           return parser_result;
1835 
1836           /*. . . . . . . . . . . . . . . . . . . .*/
1837           case 94: // AxisName ::= PRECEDING
1838             {
1839               Integer RESULT = null;
1840                  RESULT = Integer.valueOf(Axis.PRECEDING);
1841               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1842             }
1843           return parser_result;
1844 
1845           /*. . . . . . . . . . . . . . . . . . . .*/
1846           case 93: // AxisName ::= PARENT
1847             {
1848               Integer RESULT = null;
1849                  RESULT = Integer.valueOf(Axis.PARENT);
1850               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1851             }
1852           return parser_result;
1853 
1854           /*. . . . . . . . . . . . . . . . . . . .*/
1855           case 92: // AxisName ::= NAMESPACE
1856             {
1857               Integer RESULT = null;
1858                  RESULT = Integer.valueOf(Axis.NAMESPACE);
1859               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1860             }
1861           return parser_result;
1862 
1863           /*. . . . . . . . . . . . . . . . . . . .*/
1864           case 91: // AxisName ::= FOLLOWINGSIBLING
1865             {
1866               Integer RESULT = null;
1867                  RESULT = Integer.valueOf(Axis.FOLLOWINGSIBLING);
1868               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1869             }
1870           return parser_result;
1871 
1872           /*. . . . . . . . . . . . . . . . . . . .*/
1873           case 90: // AxisName ::= FOLLOWING
1874             {
1875               Integer RESULT = null;
1876                  RESULT = Integer.valueOf(Axis.FOLLOWING);
1877               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1878             }
1879           return parser_result;
1880 
1881           /*. . . . . . . . . . . . . . . . . . . .*/
1882           case 89: // AxisName ::= DESCENDANTORSELF
1883             {
1884               Integer RESULT = null;
1885                  RESULT = Integer.valueOf(Axis.DESCENDANTORSELF);
1886               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1887             }
1888           return parser_result;
1889 
1890           /*. . . . . . . . . . . . . . . . . . . .*/
1891           case 88: // AxisName ::= DESCENDANT
1892             {
1893               Integer RESULT = null;
1894                  RESULT = Integer.valueOf(Axis.DESCENDANT);
1895               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1896             }
1897           return parser_result;
1898 
1899           /*. . . . . . . . . . . . . . . . . . . .*/
1900           case 87: // AxisName ::= CHILD
1901             {
1902               Integer RESULT = null;
1903                  RESULT = Integer.valueOf(Axis.CHILD);
1904               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1905             }
1906           return parser_result;
1907 
1908           /*. . . . . . . . . . . . . . . . . . . .*/
1909           case 86: // AxisName ::= ATTRIBUTE
1910             {
1911               Integer RESULT = null;
1912                  RESULT = Integer.valueOf(Axis.ATTRIBUTE);
1913               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1914             }
1915           return parser_result;
1916 
1917           /*. . . . . . . . . . . . . . . . . . . .*/
1918           case 85: // AxisName ::= ANCESTORORSELF
1919             {
1920               Integer RESULT = null;
1921                  RESULT = Integer.valueOf(Axis.ANCESTORORSELF);
1922               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1923             }
1924           return parser_result;
1925 
1926           /*. . . . . . . . . . . . . . . . . . . .*/
1927           case 84: // AxisName ::= ANCESTOR
1928             {
1929               Integer RESULT = null;
1930                  RESULT = Integer.valueOf(Axis.ANCESTOR);
1931               parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1932             }
1933           return parser_result;
1934 
1935           /*. . . . . . . . . . . . . . . . . . . .*/
1936           case 83: // AxisSpecifier ::= ATSIGN
1937             {
1938               Integer RESULT = null;
1939                  RESULT = Integer.valueOf(Axis.ATTRIBUTE);
1940               parser_result = new Symbol(41/*AxisSpecifier*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1941             }
1942           return parser_result;
1943 
1944           /*. . . . . . . . . . . . . . . . . . . .*/
1945           case 82: // AxisSpecifier ::= AxisName DCOLON
1946             {
1947               Integer RESULT = null;
1948                 int anleft = (parser_stack.get(parser_top-1)).left;
1949                 int anright = (parser_stack.get(parser_top-1)).right;
1950                 Integer an = (Integer)((Symbol) parser_stack.get(parser_top-1)).value;
1951                  RESULT = an;
1952               parser_result = new Symbol(41/*AxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1953             }
1954           return parser_result;
1955 
1956           /*. . . . . . . . . . . . . . . . . . . .*/
1957           case 81: // Step ::= AbbreviatedStep
1958             {
1959               Expression RESULT = null;
1960                 int abbrevleft = (parser_stack.get(parser_top-0)).left;
1961                 int abbrevright = (parser_stack.get(parser_top-0)).right;
1962                 Expression abbrev = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1963                  RESULT = abbrev;
1964               parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1965             }
1966           return parser_result;
1967 
1968           /*. . . . . . . . . . . . . . . . . . . .*/
1969           case 80: // Step ::= AxisSpecifier NodeTest
1970             {
1971               Expression RESULT = null;
1972                 int axisleft = (parser_stack.get(parser_top-1)).left;
1973                 int axisright = (parser_stack.get(parser_top-1)).right;
1974                 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-1)).value;
1975                 int ntestleft = (parser_stack.get(parser_top-0)).left;
1976                 int ntestright = (parser_stack.get(parser_top-0)).right;
1977                 Object ntest = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
1978                  RESULT = new Step(axis.intValue(),
1979                              parser.findNodeType(axis.intValue(), ntest),
1980                              null);
1981 
1982               parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1983             }
1984           return parser_result;
1985 
1986           /*. . . . . . . . . . . . . . . . . . . .*/
1987           case 79: // Step ::= AxisSpecifier NodeTest Predicates
1988             {
1989               Expression RESULT = null;
1990                 int axisleft = (parser_stack.get(parser_top-2)).left;
1991                 int axisright = (parser_stack.get(parser_top-2)).right;
1992                 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-2)).value;
1993                 int ntestleft = (parser_stack.get(parser_top-1)).left;
1994                 int ntestright = (parser_stack.get(parser_top-1)).right;
1995                 Object ntest = (Object)((Symbol) parser_stack.get(parser_top-1)).value;
1996                 int ppleft = (parser_stack.get(parser_top-0)).left;
1997                 int ppright = (parser_stack.get(parser_top-0)).right;
1998                 @SuppressWarnings("unchecked")
1999                 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2000                  RESULT = new Step(axis.intValue(),
2001                              parser.findNodeType(axis.intValue(), ntest),
2002                              pp);
2003 
2004               parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2005             }
2006           return parser_result;
2007 
2008           /*. . . . . . . . . . . . . . . . . . . .*/
2009           case 78: // Step ::= NodeTest Predicates
2010             {
2011               Expression RESULT = null;
2012                 int ntestleft = (parser_stack.get(parser_top-1)).left;
2013                 int ntestright = (parser_stack.get(parser_top-1)).right;
2014                 Object ntest = (Object)((Symbol) parser_stack.get(parser_top-1)).value;
2015                 int ppleft = (parser_stack.get(parser_top-0)).left;
2016                 int ppright = (parser_stack.get(parser_top-0)).right;
2017                 @SuppressWarnings("unchecked")
2018                 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2019 
2020             if (ntest instanceof Step) {
2021                 Step step = (Step)ntest;
2022                 step.addPredicates(pp);
2023                 RESULT = (Step)ntest;
2024             }
2025             else {
2026                 RESULT = new Step(Axis.CHILD,
2027                              parser.findNodeType(Axis.CHILD, ntest), pp);
2028             }
2029 
2030               parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2031             }
2032           return parser_result;
2033 
2034           /*. . . . . . . . . . . . . . . . . . . .*/
2035           case 77: // Step ::= NodeTest
2036             {
2037               Expression RESULT = null;
2038                 int ntestleft = (parser_stack.get(parser_top-0)).left;
2039                 int ntestright = (parser_stack.get(parser_top-0)).right;
2040                 Object ntest = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
2041 
2042             if (ntest instanceof Step) {
2043                 RESULT = (Step)ntest;
2044             }
2045             else {
2046                 RESULT = new Step(Axis.CHILD,
2047                              parser.findNodeType(Axis.CHILD, ntest),
2048                              null);
2049             }
2050 
2051               parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2052             }
2053           return parser_result;
2054 
2055           /*. . . . . . . . . . . . . . . . . . . .*/
2056           case 76: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath
2057             {
2058               Expression RESULT = null;
2059                 int rlpleft = (parser_stack.get(parser_top-0)).left;
2060                 int rlpright = (parser_stack.get(parser_top-0)).right;
2061                 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2062 
2063            //
2064            // Expand '//' into '/descendant-or-self::node()/' or
2065            // into /descendant-or-self::*/
2066            //
2067            int nodeType = DOM.NO_TYPE;
2068            if (rlp instanceof Step &&
2069                parser.isElementAxis(((Step) rlp).getAxis()))
2070            {
2071                nodeType = DTM.ELEMENT_NODE;
2072            }
2073            final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2074            RESULT = new AbsoluteLocationPath(parser.insertStep(step,
2075                                 (RelativeLocationPath) rlp));
2076 
2077               parser_result = new Symbol(24/*AbbreviatedAbsoluteLocationPath*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2078             }
2079           return parser_result;
2080 
2081           /*. . . . . . . . . . . . . . . . . . . .*/
2082           case 75: // AbbreviatedRelativeLocationPath ::= RelativeLocationPath DSLASH Step
2083             {
2084               Expression RESULT = null;
2085                 int rlpleft = (parser_stack.get(parser_top-2)).left;
2086                 int rlpright = (parser_stack.get(parser_top-2)).right;
2087                 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2088                 int stepleft = (parser_stack.get(parser_top-0)).left;
2089                 int stepright = (parser_stack.get(parser_top-0)).right;
2090                 Expression step = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2091 
2092            final Step right  = (Step)step;
2093            final int  axis   = right.getAxis();
2094            final int  type   = right.getNodeType();
2095            final List<Predicate> predicates = right.getPredicates();
2096 
2097            if ((axis == Axis.CHILD) && (type != NodeTest.ATTRIBUTE)) {
2098                // Compress './/child:E' into 'descendant::E' - if possible
2099                if (predicates == null) {
2100                    right.setAxis(Axis.DESCENDANT);
2101                    if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) {
2102                        RESULT = right;
2103                    }
2104                    else {
2105                        // Expand 'rlp//child::E' into 'rlp/descendant::E'
2106                        RelativeLocationPath left = (RelativeLocationPath)rlp;
2107                        RESULT = new ParentLocationPath(left, right);
2108                    }
2109                }
2110                else {
2111                    // Expand './/step' -> 'descendant-or-self::*/step'
2112                    if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) {
2113                        Step left = new Step(Axis.DESCENDANTORSELF,
2114                             DTM.ELEMENT_NODE, null);
2115                        RESULT = new ParentLocationPath(left, right);
2116                    }
2117                    else {
2118                        // Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step'
2119                        RelativeLocationPath left = (RelativeLocationPath)rlp;
2120                        Step mid = new Step(Axis.DESCENDANTORSELF,
2121                             DTM.ELEMENT_NODE, null);
2122                        ParentLocationPath ppl = new ParentLocationPath(mid, right);
2123                        RESULT = new ParentLocationPath(left, ppl);
2124                    }
2125                }
2126            }
2127            else if ((axis == Axis.ATTRIBUTE) || (type == NodeTest.ATTRIBUTE)) {
2128                // Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step'
2129                RelativeLocationPath left = (RelativeLocationPath)rlp;
2130                Step middle = new Step(Axis.DESCENDANTORSELF,
2131                     DTM.ELEMENT_NODE, null);
2132                ParentLocationPath ppl = new ParentLocationPath(middle, right);
2133                RESULT = new ParentLocationPath(left, ppl);
2134            }
2135            else {
2136                // Expand 'rlp//step' -> 'rlp/descendant-or-self::node()/step'
2137                RelativeLocationPath left = (RelativeLocationPath)rlp;
2138                Step middle = new Step(Axis.DESCENDANTORSELF,
2139                     DOM.NO_TYPE, null);
2140                ParentLocationPath ppl = new ParentLocationPath(middle, right);
2141                RESULT = new ParentLocationPath(left, ppl);
2142            }
2143 
2144               parser_result = new Symbol(22/*AbbreviatedRelativeLocationPath*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2145             }
2146           return parser_result;
2147 
2148           /*. . . . . . . . . . . . . . . . . . . .*/
2149           case 74: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath
2150             {
2151               Expression RESULT = null;
2152                 int aalpleft = (parser_stack.get(parser_top-0)).left;
2153                 int aalpright = (parser_stack.get(parser_top-0)).right;
2154                 Expression aalp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2155                  RESULT = aalp;
2156               parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2157             }
2158           return parser_result;
2159 
2160           /*. . . . . . . . . . . . . . . . . . . .*/
2161           case 73: // AbsoluteLocationPath ::= SLASH RelativeLocationPath
2162             {
2163               Expression RESULT = null;
2164                 int rlpleft = (parser_stack.get(parser_top-0)).left;
2165                 int rlpright = (parser_stack.get(parser_top-0)).right;
2166                 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2167                  RESULT = new AbsoluteLocationPath(rlp);
2168               parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2169             }
2170           return parser_result;
2171 
2172           /*. . . . . . . . . . . . . . . . . . . .*/
2173           case 72: // AbsoluteLocationPath ::= SLASH
2174             {
2175               Expression RESULT = null;
2176                  RESULT = new AbsoluteLocationPath();
2177               parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2178             }
2179           return parser_result;
2180 
2181           /*. . . . . . . . . . . . . . . . . . . .*/
2182           case 71: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath
2183             {
2184               Expression RESULT = null;
2185                 int arlpleft = (parser_stack.get(parser_top-0)).left;
2186                 int arlpright = (parser_stack.get(parser_top-0)).right;
2187                 Expression arlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2188                  RESULT = arlp;
2189               parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2190             }
2191           return parser_result;
2192 
2193           /*. . . . . . . . . . . . . . . . . . . .*/
2194           case 70: // RelativeLocationPath ::= RelativeLocationPath SLASH Step
2195             {
2196               Expression RESULT = null;
2197                 int rlpleft = (parser_stack.get(parser_top-2)).left;
2198                 int rlpright = (parser_stack.get(parser_top-2)).right;
2199                 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2200                 int stepleft = (parser_stack.get(parser_top-0)).left;
2201                 int stepright = (parser_stack.get(parser_top-0)).right;
2202                 Expression step = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2203 
2204         if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) {
2205               RESULT = step;       // Remove './' from the middle
2206         }
2207         else if (((Step) step).isAbbreviatedDot()) {
2208               RESULT = rlp;        // Remove '/.' from the end
2209         }
2210         else {
2211              RESULT =
2212                 new ParentLocationPath((RelativeLocationPath) rlp, step);
2213            }
2214 
2215               parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2216             }
2217           return parser_result;
2218 
2219           /*. . . . . . . . . . . . . . . . . . . .*/
2220           case 69: // RelativeLocationPath ::= Step
2221             {
2222               Expression RESULT = null;
2223                 int stepleft = (parser_stack.get(parser_top-0)).left;
2224                 int stepright = (parser_stack.get(parser_top-0)).right;
2225                 Expression step = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2226                  RESULT = step;
2227               parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2228             }
2229           return parser_result;
2230 
2231           /*. . . . . . . . . . . . . . . . . . . .*/
2232           case 68: // LocationPath ::= AbsoluteLocationPath
2233             {
2234               Expression RESULT = null;
2235                 int alpleft = (parser_stack.get(parser_top-0)).left;
2236                 int alpright = (parser_stack.get(parser_top-0)).right;
2237                 Expression alp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2238                  RESULT = alp;
2239               parser_result = new Symbol(4/*LocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2240             }
2241           return parser_result;
2242 
2243           /*. . . . . . . . . . . . . . . . . . . .*/
2244           case 67: // LocationPath ::= RelativeLocationPath
2245             {
2246               Expression RESULT = null;
2247                 int rlpleft = (parser_stack.get(parser_top-0)).left;
2248                 int rlpright = (parser_stack.get(parser_top-0)).right;
2249                 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2250                  RESULT = rlp;
2251               parser_result = new Symbol(4/*LocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2252             }
2253           return parser_result;
2254 
2255           /*. . . . . . . . . . . . . . . . . . . .*/
2256           case 66: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath
2257             {
2258               Expression RESULT = null;
2259                 int fexpleft = (parser_stack.get(parser_top-2)).left;
2260                 int fexpright = (parser_stack.get(parser_top-2)).right;
2261                 Expression fexp = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2262                 int rlpleft = (parser_stack.get(parser_top-0)).left;
2263                 int rlpright = (parser_stack.get(parser_top-0)).right;
2264                 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2265 
2266            //
2267            // Expand '//' into '/descendant-or-self::node()/' or
2268            // into /descendant-or-self::*/
2269            //
2270            int nodeType = DOM.NO_TYPE;
2271            if (rlp instanceof Step &&
2272                parser.isElementAxis(((Step) rlp).getAxis()))
2273            {
2274                nodeType = DTM.ELEMENT_NODE;
2275            }
2276            final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2277            FilterParentPath fpp = new FilterParentPath(fexp, step);
2278            fpp = new FilterParentPath(fpp, rlp);
2279            if (fexp instanceof KeyCall == false) {
2280                fpp.setDescendantAxis();
2281            }
2282            RESULT = fpp;
2283 
2284               parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2285             }
2286           return parser_result;
2287 
2288           /*. . . . . . . . . . . . . . . . . . . .*/
2289           case 65: // PathExpr ::= FilterExpr SLASH RelativeLocationPath
2290             {
2291               Expression RESULT = null;
2292                 int fexpleft = (parser_stack.get(parser_top-2)).left;
2293                 int fexpright = (parser_stack.get(parser_top-2)).right;
2294                 Expression fexp = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2295                 int rlpleft = (parser_stack.get(parser_top-0)).left;
2296                 int rlpright = (parser_stack.get(parser_top-0)).right;
2297                 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2298                  RESULT = new FilterParentPath(fexp, rlp);
2299               parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2300             }
2301           return parser_result;
2302 
2303           /*. . . . . . . . . . . . . . . . . . . .*/
2304           case 64: // PathExpr ::= FilterExpr
2305             {
2306               Expression RESULT = null;
2307                 int fexpleft = (parser_stack.get(parser_top-0)).left;
2308                 int fexpright = (parser_stack.get(parser_top-0)).right;
2309                 Expression fexp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2310                  RESULT = fexp;
2311               parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2312             }
2313           return parser_result;
2314 
2315           /*. . . . . . . . . . . . . . . . . . . .*/
2316           case 63: // PathExpr ::= LocationPath
2317             {
2318               Expression RESULT = null;
2319                 int lpleft = (parser_stack.get(parser_top-0)).left;
2320                 int lpright = (parser_stack.get(parser_top-0)).right;
2321                 Expression lp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2322                  RESULT = lp;
2323               parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2324             }
2325           return parser_result;
2326 
2327           /*. . . . . . . . . . . . . . . . . . . .*/
2328           case 62: // UnionExpr ::= PathExpr VBAR UnionExpr
2329             {
2330               Expression RESULT = null;
2331                 int peleft = (parser_stack.get(parser_top-2)).left;
2332                 int peright = (parser_stack.get(parser_top-2)).right;
2333                 Expression pe = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2334                 int restleft = (parser_stack.get(parser_top-0)).left;
2335                 int restright = (parser_stack.get(parser_top-0)).right;
2336                 Expression rest = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2337                  RESULT = new UnionPathExpr(pe, rest);
2338               parser_result = new Symbol(18/*UnionExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2339             }
2340           return parser_result;
2341 
2342           /*. . . . . . . . . . . . . . . . . . . .*/
2343           case 61: // UnionExpr ::= PathExpr
2344             {
2345               Expression RESULT = null;
2346                 int peleft = (parser_stack.get(parser_top-0)).left;
2347                 int peright = (parser_stack.get(parser_top-0)).right;
2348                 Expression pe = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2349                  RESULT = pe;
2350               parser_result = new Symbol(18/*UnionExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2351             }
2352           return parser_result;
2353 
2354           /*. . . . . . . . . . . . . . . . . . . .*/
2355           case 60: // UnaryExpr ::= MINUS UnaryExpr
2356             {
2357               Expression RESULT = null;
2358                 int ueleft = (parser_stack.get(parser_top-0)).left;
2359                 int ueright = (parser_stack.get(parser_top-0)).right;
2360                 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2361                  RESULT = new UnaryOpExpr(ue);
2362               parser_result = new Symbol(14/*UnaryExpr*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2363             }
2364           return parser_result;
2365 
2366           /*. . . . . . . . . . . . . . . . . . . .*/
2367           case 59: // UnaryExpr ::= UnionExpr
2368             {
2369               Expression RESULT = null;
2370                 int ueleft = (parser_stack.get(parser_top-0)).left;
2371                 int ueright = (parser_stack.get(parser_top-0)).right;
2372                 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2373                  RESULT = ue;
2374               parser_result = new Symbol(14/*UnaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2375             }
2376           return parser_result;
2377 
2378           /*. . . . . . . . . . . . . . . . . . . .*/
2379           case 58: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr
2380             {
2381               Expression RESULT = null;
2382                 int meleft = (parser_stack.get(parser_top-2)).left;
2383                 int meright = (parser_stack.get(parser_top-2)).right;
2384                 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2385                 int ueleft = (parser_stack.get(parser_top-0)).left;
2386                 int ueright = (parser_stack.get(parser_top-0)).right;
2387                 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2388                  RESULT = new BinOpExpr(BinOpExpr.MOD, me, ue);
2389               parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2390             }
2391           return parser_result;
2392 
2393           /*. . . . . . . . . . . . . . . . . . . .*/
2394           case 57: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr
2395             {
2396               Expression RESULT = null;
2397                 int meleft = (parser_stack.get(parser_top-2)).left;
2398                 int meright = (parser_stack.get(parser_top-2)).right;
2399                 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2400                 int ueleft = (parser_stack.get(parser_top-0)).left;
2401                 int ueright = (parser_stack.get(parser_top-0)).right;
2402                 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2403                  RESULT = new BinOpExpr(BinOpExpr.DIV, me, ue);
2404               parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2405             }
2406           return parser_result;
2407 
2408           /*. . . . . . . . . . . . . . . . . . . .*/
2409           case 56: // MultiplicativeExpr ::= MultiplicativeExpr STAR UnaryExpr
2410             {
2411               Expression RESULT = null;
2412                 int meleft = (parser_stack.get(parser_top-2)).left;
2413                 int meright = (parser_stack.get(parser_top-2)).right;
2414                 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2415                 int ueleft = (parser_stack.get(parser_top-0)).left;
2416                 int ueright = (parser_stack.get(parser_top-0)).right;
2417                 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2418                  RESULT = new BinOpExpr(BinOpExpr.TIMES, me, ue);
2419               parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2420             }
2421           return parser_result;
2422 
2423           /*. . . . . . . . . . . . . . . . . . . .*/
2424           case 55: // MultiplicativeExpr ::= UnaryExpr
2425             {
2426               Expression RESULT = null;
2427                 int ueleft = (parser_stack.get(parser_top-0)).left;
2428                 int ueright = (parser_stack.get(parser_top-0)).right;
2429                 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2430                  RESULT = ue;
2431               parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2432             }
2433           return parser_result;
2434 
2435           /*. . . . . . . . . . . . . . . . . . . .*/
2436           case 54: // AdditiveExpr ::= AdditiveExpr MINUS MultiplicativeExpr
2437             {
2438               Expression RESULT = null;
2439                 int aeleft = (parser_stack.get(parser_top-2)).left;
2440                 int aeright = (parser_stack.get(parser_top-2)).right;
2441                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2442                 int meleft = (parser_stack.get(parser_top-0)).left;
2443                 int meright = (parser_stack.get(parser_top-0)).right;
2444                 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2445                  RESULT = new BinOpExpr(BinOpExpr.MINUS, ae, me);
2446               parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2447             }
2448           return parser_result;
2449 
2450           /*. . . . . . . . . . . . . . . . . . . .*/
2451           case 53: // AdditiveExpr ::= AdditiveExpr PLUS MultiplicativeExpr
2452             {
2453               Expression RESULT = null;
2454                 int aeleft = (parser_stack.get(parser_top-2)).left;
2455                 int aeright = (parser_stack.get(parser_top-2)).right;
2456                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2457                 int meleft = (parser_stack.get(parser_top-0)).left;
2458                 int meright = (parser_stack.get(parser_top-0)).right;
2459                 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2460                  RESULT = new BinOpExpr(BinOpExpr.PLUS, ae, me);
2461               parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2462             }
2463           return parser_result;
2464 
2465           /*. . . . . . . . . . . . . . . . . . . .*/
2466           case 52: // AdditiveExpr ::= MultiplicativeExpr
2467             {
2468               Expression RESULT = null;
2469                 int meleft = (parser_stack.get(parser_top-0)).left;
2470                 int meright = (parser_stack.get(parser_top-0)).right;
2471                 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2472                  RESULT = me;
2473               parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2474             }
2475           return parser_result;
2476 
2477           /*. . . . . . . . . . . . . . . . . . . .*/
2478           case 51: // RelationalExpr ::= RelationalExpr GE AdditiveExpr
2479             {
2480               Expression RESULT = null;
2481                 int releft = (parser_stack.get(parser_top-2)).left;
2482                 int reright = (parser_stack.get(parser_top-2)).right;
2483                 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2484                 int aeleft = (parser_stack.get(parser_top-0)).left;
2485                 int aeright = (parser_stack.get(parser_top-0)).right;
2486                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2487                  RESULT = new RelationalExpr(Operators.GE, re, ae);
2488               parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2489             }
2490           return parser_result;
2491 
2492           /*. . . . . . . . . . . . . . . . . . . .*/
2493           case 50: // RelationalExpr ::= RelationalExpr LE AdditiveExpr
2494             {
2495               Expression RESULT = null;
2496                 int releft = (parser_stack.get(parser_top-2)).left;
2497                 int reright = (parser_stack.get(parser_top-2)).right;
2498                 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2499                 int aeleft = (parser_stack.get(parser_top-0)).left;
2500                 int aeright = (parser_stack.get(parser_top-0)).right;
2501                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2502                  RESULT = new RelationalExpr(Operators.LE, re, ae);
2503               parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2504             }
2505           return parser_result;
2506 
2507           /*. . . . . . . . . . . . . . . . . . . .*/
2508           case 49: // RelationalExpr ::= RelationalExpr GT AdditiveExpr
2509             {
2510               Expression RESULT = null;
2511                 int releft = (parser_stack.get(parser_top-2)).left;
2512                 int reright = (parser_stack.get(parser_top-2)).right;
2513                 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2514                 int aeleft = (parser_stack.get(parser_top-0)).left;
2515                 int aeright = (parser_stack.get(parser_top-0)).right;
2516                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2517                  RESULT = new RelationalExpr(Operators.GT, re, ae);
2518               parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2519             }
2520           return parser_result;
2521 
2522           /*. . . . . . . . . . . . . . . . . . . .*/
2523           case 48: // RelationalExpr ::= RelationalExpr LT AdditiveExpr
2524             {
2525               Expression RESULT = null;
2526                 int releft = (parser_stack.get(parser_top-2)).left;
2527                 int reright = (parser_stack.get(parser_top-2)).right;
2528                 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2529                 int aeleft = (parser_stack.get(parser_top-0)).left;
2530                 int aeright = (parser_stack.get(parser_top-0)).right;
2531                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2532                  RESULT = new RelationalExpr(Operators.LT, re, ae);
2533               parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2534             }
2535           return parser_result;
2536 
2537           /*. . . . . . . . . . . . . . . . . . . .*/
2538           case 47: // RelationalExpr ::= AdditiveExpr
2539             {
2540               Expression RESULT = null;
2541                 int aeleft = (parser_stack.get(parser_top-0)).left;
2542                 int aeright = (parser_stack.get(parser_top-0)).right;
2543                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2544                  RESULT = ae;
2545               parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2546             }
2547           return parser_result;
2548 
2549           /*. . . . . . . . . . . . . . . . . . . .*/
2550           case 46: // EqualityExpr ::= EqualityExpr NE RelationalExpr
2551             {
2552               Expression RESULT = null;
2553                 int eeleft = (parser_stack.get(parser_top-2)).left;
2554                 int eeright = (parser_stack.get(parser_top-2)).right;
2555                 Expression ee = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2556                 int releft = (parser_stack.get(parser_top-0)).left;
2557                 int reright = (parser_stack.get(parser_top-0)).right;
2558                 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2559                  RESULT = new EqualityExpr(Operators.NE, ee, re);
2560               parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2561             }
2562           return parser_result;
2563 
2564           /*. . . . . . . . . . . . . . . . . . . .*/
2565           case 45: // EqualityExpr ::= EqualityExpr EQ RelationalExpr
2566             {
2567               Expression RESULT = null;
2568                 int eeleft = (parser_stack.get(parser_top-2)).left;
2569                 int eeright = (parser_stack.get(parser_top-2)).right;
2570                 Expression ee = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2571                 int releft = (parser_stack.get(parser_top-0)).left;
2572                 int reright = (parser_stack.get(parser_top-0)).right;
2573                 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2574                  RESULT = new EqualityExpr(Operators.EQ, ee, re);
2575               parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2576             }
2577           return parser_result;
2578 
2579           /*. . . . . . . . . . . . . . . . . . . .*/
2580           case 44: // EqualityExpr ::= RelationalExpr
2581             {
2582               Expression RESULT = null;
2583                 int releft = (parser_stack.get(parser_top-0)).left;
2584                 int reright = (parser_stack.get(parser_top-0)).right;
2585                 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2586                  RESULT = re;
2587               parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2588             }
2589           return parser_result;
2590 
2591           /*. . . . . . . . . . . . . . . . . . . .*/
2592           case 43: // AndExpr ::= AndExpr AND EqualityExpr
2593             {
2594               Expression RESULT = null;
2595                 int aeleft = (parser_stack.get(parser_top-2)).left;
2596                 int aeright = (parser_stack.get(parser_top-2)).right;
2597                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2598                 int eeleft = (parser_stack.get(parser_top-0)).left;
2599                 int eeright = (parser_stack.get(parser_top-0)).right;
2600                 Expression ee = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2601                  RESULT = new LogicalExpr(LogicalExpr.AND, ae, ee);
2602               parser_result = new Symbol(9/*AndExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2603             }
2604           return parser_result;
2605 
2606           /*. . . . . . . . . . . . . . . . . . . .*/
2607           case 42: // AndExpr ::= EqualityExpr
2608             {
2609               Expression RESULT = null;
2610                 int eleft = (parser_stack.get(parser_top-0)).left;
2611                 int eright = (parser_stack.get(parser_top-0)).right;
2612                 Expression e = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2613                  RESULT = e;
2614               parser_result = new Symbol(9/*AndExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2615             }
2616           return parser_result;
2617 
2618           /*. . . . . . . . . . . . . . . . . . . .*/
2619           case 41: // OrExpr ::= OrExpr OR AndExpr
2620             {
2621               Expression RESULT = null;
2622                 int oeleft = (parser_stack.get(parser_top-2)).left;
2623                 int oeright = (parser_stack.get(parser_top-2)).right;
2624                 Expression oe = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2625                 int aeleft = (parser_stack.get(parser_top-0)).left;
2626                 int aeright = (parser_stack.get(parser_top-0)).right;
2627                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2628                  RESULT = new LogicalExpr(LogicalExpr.OR, oe, ae);
2629               parser_result = new Symbol(8/*OrExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2630             }
2631           return parser_result;
2632 
2633           /*. . . . . . . . . . . . . . . . . . . .*/
2634           case 40: // OrExpr ::= AndExpr
2635             {
2636               Expression RESULT = null;
2637                 int aeleft = (parser_stack.get(parser_top-0)).left;
2638                 int aeright = (parser_stack.get(parser_top-0)).right;
2639                 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2640                  RESULT = ae;
2641               parser_result = new Symbol(8/*OrExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2642             }
2643           return parser_result;
2644 
2645           /*. . . . . . . . . . . . . . . . . . . .*/
2646           case 39: // Expr ::= OrExpr
2647             {
2648               Expression RESULT = null;
2649                 int exleft = (parser_stack.get(parser_top-0)).left;
2650                 int exright = (parser_stack.get(parser_top-0)).right;
2651                 Expression ex = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2652                  RESULT = ex;
2653               parser_result = new Symbol(2/*Expr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2654             }
2655           return parser_result;
2656 
2657           /*. . . . . . . . . . . . . . . . . . . .*/
2658           case 38: // Predicate ::= LBRACK Expr RBRACK
2659             {
2660               Expression RESULT = null;
2661                 int eleft = (parser_stack.get(parser_top-1)).left;
2662                 int eright = (parser_stack.get(parser_top-1)).right;
2663                 Expression e = (Expression)((Symbol) parser_stack.get(parser_top-1)).value;
2664 
2665                 RESULT = new Predicate(e);
2666 
2667               parser_result = new Symbol(5/*Predicate*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2668             }
2669           return parser_result;
2670 
2671           /*. . . . . . . . . . . . . . . . . . . .*/
2672           case 37: // Predicates ::= Predicate Predicates
2673             {
2674                 List<Expression> RESULT = null;
2675                 int pleft = (parser_stack.get(parser_top-1)).left;
2676                 int pright = (parser_stack.get(parser_top-1)).right;
2677                 Expression p = (Expression)((Symbol) parser_stack.get(parser_top-1)).value;
2678                 int ppleft = (parser_stack.get(parser_top-0)).left;
2679                 int ppright = (parser_stack.get(parser_top-0)).right;
2680                 @SuppressWarnings("unchecked")
2681                 List<Expression> pp = (ArrayList<Expression>)((Symbol) parser_stack.get(parser_top-0)).value;
2682                 pp.add(0, p); RESULT = pp;
2683               parser_result = new Symbol(35/*Predicates*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2684             }
2685           return parser_result;
2686 
2687           /*. . . . . . . . . . . . . . . . . . . .*/
2688           case 36: // Predicates ::= Predicate
2689             {
2690                 List<Expression> RESULT = null;
2691                 int pleft = (parser_stack.get(parser_top-0)).left;
2692                 int pright = (parser_stack.get(parser_top-0)).right;
2693                 Expression p = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2694 
2695                 List<Expression> temp = new ArrayList<>();
2696                 temp.add(p);
2697                 RESULT = temp;
2698 
2699               parser_result = new Symbol(35/*Predicates*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2700             }
2701           return parser_result;
2702 
2703           /*. . . . . . . . . . . . . . . . . . . .*/
2704           case 35: // ChildOrAttributeAxisSpecifier ::= ATTRIBUTE DCOLON
2705             {
2706               Integer RESULT = null;
2707                  RESULT = Integer.valueOf(Axis.ATTRIBUTE);
2708               parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2709             }
2710           return parser_result;
2711 
2712           /*. . . . . . . . . . . . . . . . . . . .*/
2713           case 34: // ChildOrAttributeAxisSpecifier ::= CHILD DCOLON
2714             {
2715               Integer RESULT = null;
2716                  RESULT = Integer.valueOf(Axis.CHILD);
2717               parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2718             }
2719           return parser_result;
2720 
2721           /*. . . . . . . . . . . . . . . . . . . .*/
2722           case 33: // ChildOrAttributeAxisSpecifier ::= ATSIGN
2723             {
2724               Integer RESULT = null;
2725                  RESULT = Integer.valueOf(Axis.ATTRIBUTE);
2726               parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2727             }
2728           return parser_result;
2729 
2730           /*. . . . . . . . . . . . . . . . . . . .*/
2731           case 32: // NameTestPattern ::= QName
2732             {
2733               Object RESULT = null;
2734                 int qnleft = (parser_stack.get(parser_top-0)).left;
2735                 int qnright = (parser_stack.get(parser_top-0)).right;
2736                 QName qn = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
2737                  RESULT = qn;
2738               parser_result = new Symbol(34/*NameTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2739             }
2740           return parser_result;
2741 
2742           /*. . . . . . . . . . . . . . . . . . . .*/
2743           case 31: // NameTestPattern ::= STAR
2744             {
2745               Object RESULT = null;
2746                  RESULT = null;
2747               parser_result = new Symbol(34/*NameTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2748             }
2749           return parser_result;
2750 
2751           /*. . . . . . . . . . . . . . . . . . . .*/
2752           case 30: // NodeTestPattern ::= PI
2753             {
2754               Object RESULT = null;
2755                  RESULT = Integer.valueOf(NodeTest.PI);
2756               parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2757             }
2758           return parser_result;
2759 
2760           /*. . . . . . . . . . . . . . . . . . . .*/
2761           case 29: // NodeTestPattern ::= COMMENT
2762             {
2763               Object RESULT = null;
2764                  RESULT = Integer.valueOf(NodeTest.COMMENT);
2765               parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2766             }
2767           return parser_result;
2768 
2769           /*. . . . . . . . . . . . . . . . . . . .*/
2770           case 28: // NodeTestPattern ::= TEXT
2771             {
2772               Object RESULT = null;
2773                  RESULT = Integer.valueOf(NodeTest.TEXT);
2774               parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2775             }
2776           return parser_result;
2777 
2778           /*. . . . . . . . . . . . . . . . . . . .*/
2779           case 27: // NodeTestPattern ::= NODE
2780             {
2781               Object RESULT = null;
2782                  RESULT = Integer.valueOf(NodeTest.ANODE);
2783               parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2784             }
2785           return parser_result;
2786 
2787           /*. . . . . . . . . . . . . . . . . . . .*/
2788           case 26: // NodeTestPattern ::= NameTestPattern
2789             {
2790               Object RESULT = null;
2791                 int ntleft = (parser_stack.get(parser_top-0)).left;
2792                 int ntright = (parser_stack.get(parser_top-0)).right;
2793                 Object nt = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
2794                  RESULT = nt;
2795               parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2796             }
2797           return parser_result;
2798 
2799           /*. . . . . . . . . . . . . . . . . . . .*/
2800           case 25: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern Predicates
2801             {
2802               StepPattern RESULT = null;
2803                 int axisleft = (parser_stack.get(parser_top-2)).left;
2804                 int axisright = (parser_stack.get(parser_top-2)).right;
2805                 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-2)).value;
2806                 int pipleft = (parser_stack.get(parser_top-1)).left;
2807                 int pipright = (parser_stack.get(parser_top-1)).right;
2808                 StepPattern pip = (StepPattern)((Symbol) parser_stack.get(parser_top-1)).value;
2809                 int ppleft = (parser_stack.get(parser_top-0)).left;
2810                 int ppright = (parser_stack.get(parser_top-0)).right;
2811                 @SuppressWarnings("unchecked")
2812                 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2813 
2814                // TODO: report error if axis is attribute
2815                RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2816 
2817               parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2818             }
2819           return parser_result;
2820 
2821           /*. . . . . . . . . . . . . . . . . . . .*/
2822           case 24: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern
2823             {
2824               StepPattern RESULT = null;
2825                 int axisleft = (parser_stack.get(parser_top-1)).left;
2826                 int axisright = (parser_stack.get(parser_top-1)).right;
2827                 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-1)).value;
2828                 int pipleft = (parser_stack.get(parser_top-0)).left;
2829                 int pipright = (parser_stack.get(parser_top-0)).right;
2830                 StepPattern pip = (StepPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2831 
2832                RESULT = pip;    // TODO: report error if axis is attribute
2833 
2834               parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2835             }
2836           return parser_result;
2837 
2838           /*. . . . . . . . . . . . . . . . . . . .*/
2839           case 23: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern Predicates
2840             {
2841               StepPattern RESULT = null;
2842                 int axisleft = (parser_stack.get(parser_top-2)).left;
2843                 int axisright = (parser_stack.get(parser_top-2)).right;
2844                 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-2)).value;
2845                 int ntleft = (parser_stack.get(parser_top-1)).left;
2846                 int ntright = (parser_stack.get(parser_top-1)).right;
2847                 Object nt = (Object)((Symbol) parser_stack.get(parser_top-1)).value;
2848                 int ppleft = (parser_stack.get(parser_top-0)).left;
2849                 int ppright = (parser_stack.get(parser_top-0)).right;
2850                 @SuppressWarnings("unchecked")
2851                List<Predicate>pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2852 
2853                RESULT = parser.createStepPattern(axis.intValue(), nt, pp);
2854 
2855               parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2856             }
2857           return parser_result;
2858 
2859           /*. . . . . . . . . . . . . . . . . . . .*/
2860           case 22: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern
2861             {
2862               StepPattern RESULT = null;
2863                 int axisleft = (parser_stack.get(parser_top-1)).left;
2864                 int axisright = (parser_stack.get(parser_top-1)).right;
2865                 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-1)).value;
2866                 int ntleft = (parser_stack.get(parser_top-0)).left;
2867                 int ntright = (parser_stack.get(parser_top-0)).right;
2868                 Object nt = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
2869 
2870                RESULT = parser.createStepPattern(axis.intValue(), nt, null);
2871 
2872               parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2873             }
2874           return parser_result;
2875 
2876           /*. . . . . . . . . . . . . . . . . . . .*/
2877           case 21: // StepPattern ::= ProcessingInstructionPattern Predicates
2878             {
2879               StepPattern RESULT = null;
2880                 int pipleft = (parser_stack.get(parser_top-1)).left;
2881                 int pipright = (parser_stack.get(parser_top-1)).right;
2882                 StepPattern pip = (StepPattern)((Symbol) parser_stack.get(parser_top-1)).value;
2883                 int ppleft = (parser_stack.get(parser_top-0)).left;
2884                 int ppright = (parser_stack.get(parser_top-0)).right;
2885                 @SuppressWarnings("unchecked")
2886                 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2887                  RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2888               parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2889             }
2890           return parser_result;
2891 
2892           /*. . . . . . . . . . . . . . . . . . . .*/
2893           case 20: // StepPattern ::= ProcessingInstructionPattern
2894             {
2895               StepPattern RESULT = null;
2896                 int pipleft = (parser_stack.get(parser_top-0)).left;
2897                 int pipright = (parser_stack.get(parser_top-0)).right;
2898                 StepPattern pip = (StepPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2899                  RESULT = pip;
2900               parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2901             }
2902           return parser_result;
2903 
2904           /*. . . . . . . . . . . . . . . . . . . .*/
2905           case 19: // StepPattern ::= NodeTestPattern Predicates
2906             {
2907               StepPattern RESULT = null;
2908                 int ntleft = (parser_stack.get(parser_top-1)).left;
2909                 int ntright = (parser_stack.get(parser_top-1)).right;
2910                 Object nt = (Object)((Symbol) parser_stack.get(parser_top-1)).value;
2911                 int ppleft = (parser_stack.get(parser_top-0)).left;
2912                 int ppright = (parser_stack.get(parser_top-0)).right;
2913                 @SuppressWarnings("unchecked")
2914                 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2915 
2916                 RESULT = parser.createStepPattern(Axis.CHILD, nt, pp);
2917 
2918               parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2919             }
2920           return parser_result;
2921 
2922           /*. . . . . . . . . . . . . . . . . . . .*/
2923           case 18: // StepPattern ::= NodeTestPattern
2924             {
2925               StepPattern RESULT = null;
2926                 int ntleft = (parser_stack.get(parser_top-0)).left;
2927                 int ntright = (parser_stack.get(parser_top-0)).right;
2928                 Object nt = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
2929 
2930                 RESULT = parser.createStepPattern(Axis.CHILD, nt, null);
2931 
2932               parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2933             }
2934           return parser_result;
2935 
2936           /*. . . . . . . . . . . . . . . . . . . .*/
2937           case 17: // RelativePathPattern ::= StepPattern DSLASH RelativePathPattern
2938             {
2939               RelativePathPattern RESULT = null;
2940                 int spleft = (parser_stack.get(parser_top-2)).left;
2941                 int spright = (parser_stack.get(parser_top-2)).right;
2942                 StepPattern sp = (StepPattern)((Symbol) parser_stack.get(parser_top-2)).value;
2943                 int rppleft = (parser_stack.get(parser_top-0)).left;
2944                 int rppright = (parser_stack.get(parser_top-0)).right;
2945                 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2946                  RESULT = new AncestorPattern(sp, rpp);
2947               parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2948             }
2949           return parser_result;
2950 
2951           /*. . . . . . . . . . . . . . . . . . . .*/
2952           case 16: // RelativePathPattern ::= StepPattern SLASH RelativePathPattern
2953             {
2954               RelativePathPattern RESULT = null;
2955                 int spleft = (parser_stack.get(parser_top-2)).left;
2956                 int spright = (parser_stack.get(parser_top-2)).right;
2957                 StepPattern sp = (StepPattern)((Symbol) parser_stack.get(parser_top-2)).value;
2958                 int rppleft = (parser_stack.get(parser_top-0)).left;
2959                 int rppright = (parser_stack.get(parser_top-0)).right;
2960                 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2961                  RESULT = new ParentPattern(sp, rpp);
2962               parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2963             }
2964           return parser_result;
2965 
2966           /*. . . . . . . . . . . . . . . . . . . .*/
2967           case 15: // RelativePathPattern ::= StepPattern
2968             {
2969               RelativePathPattern RESULT = null;
2970                 int spleft = (parser_stack.get(parser_top-0)).left;
2971                 int spright = (parser_stack.get(parser_top-0)).right;
2972                 StepPattern sp = (StepPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2973                  RESULT = sp;
2974               parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2975             }
2976           return parser_result;
2977 
2978           /*. . . . . . . . . . . . . . . . . . . .*/
2979           case 14: // ProcessingInstructionPattern ::= PIPARAM LPAREN Literal RPAREN
2980             {
2981               StepPattern RESULT = null;
2982                 int lleft = (parser_stack.get(parser_top-1)).left;
2983                 int lright = (parser_stack.get(parser_top-1)).right;
2984                 String l = (String)((Symbol) parser_stack.get(parser_top-1)).value;
2985                  RESULT = new ProcessingInstructionPattern(l);
2986               parser_result = new Symbol(30/*ProcessingInstructionPattern*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2987             }
2988           return parser_result;
2989 
2990           /*. . . . . . . . . . . . . . . . . . . .*/
2991           case 13: // IdKeyPattern ::= KEY LPAREN Literal COMMA Literal RPAREN
2992             {
2993               IdKeyPattern RESULT = null;
2994                 int l1left = (parser_stack.get(parser_top-3)).left;
2995                 int l1right = (parser_stack.get(parser_top-3)).right;
2996                 String l1 = (String)((Symbol) parser_stack.get(parser_top-3)).value;
2997                 int l2left = (parser_stack.get(parser_top-1)).left;
2998                 int l2right = (parser_stack.get(parser_top-1)).right;
2999                 String l2 = (String)((Symbol) parser_stack.get(parser_top-1)).value;
3000                  RESULT = new KeyPattern(l1, l2);
3001               parser_result = new Symbol(27/*IdKeyPattern*/, (parser_stack.get(parser_top-5)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3002             }
3003           return parser_result;
3004 
3005           /*. . . . . . . . . . . . . . . . . . . .*/
3006           case 12: // IdKeyPattern ::= ID LPAREN Literal RPAREN
3007             {
3008               IdKeyPattern RESULT = null;
3009                 int lleft = (parser_stack.get(parser_top-1)).left;
3010                 int lright = (parser_stack.get(parser_top-1)).right;
3011                 String l = (String)((Symbol) parser_stack.get(parser_top-1)).value;
3012                  RESULT = new IdPattern(l);
3013                parser.setHasIdCall(true);
3014 
3015               parser_result = new Symbol(27/*IdKeyPattern*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3016             }
3017           return parser_result;
3018 
3019           /*. . . . . . . . . . . . . . . . . . . .*/
3020           case 11: // LocationPathPattern ::= RelativePathPattern
3021             {
3022               Pattern RESULT = null;
3023                 int rppleft = (parser_stack.get(parser_top-0)).left;
3024                 int rppright = (parser_stack.get(parser_top-0)).right;
3025                 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3026                  RESULT = rpp;
3027               parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3028             }
3029           return parser_result;
3030 
3031           /*. . . . . . . . . . . . . . . . . . . .*/
3032           case 10: // LocationPathPattern ::= DSLASH RelativePathPattern
3033             {
3034               Pattern RESULT = null;
3035                 int rppleft = (parser_stack.get(parser_top-0)).left;
3036                 int rppright = (parser_stack.get(parser_top-0)).right;
3037                 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3038                  RESULT = new AncestorPattern(rpp);
3039               parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3040             }
3041           return parser_result;
3042 
3043           /*. . . . . . . . . . . . . . . . . . . .*/
3044           case 9: // LocationPathPattern ::= IdKeyPattern DSLASH RelativePathPattern
3045             {
3046               Pattern RESULT = null;
3047                 int ikpleft = (parser_stack.get(parser_top-2)).left;
3048                 int ikpright = (parser_stack.get(parser_top-2)).right;
3049                 IdKeyPattern ikp = (IdKeyPattern)((Symbol) parser_stack.get(parser_top-2)).value;
3050                 int rppleft = (parser_stack.get(parser_top-0)).left;
3051                 int rppright = (parser_stack.get(parser_top-0)).right;
3052                 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3053                  RESULT = new AncestorPattern(ikp, rpp);
3054               parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3055             }
3056           return parser_result;
3057 
3058           /*. . . . . . . . . . . . . . . . . . . .*/
3059           case 8: // LocationPathPattern ::= IdKeyPattern SLASH RelativePathPattern
3060             {
3061               Pattern RESULT = null;
3062                 int ikpleft = (parser_stack.get(parser_top-2)).left;
3063                 int ikpright = (parser_stack.get(parser_top-2)).right;
3064                 IdKeyPattern ikp = (IdKeyPattern)((Symbol) parser_stack.get(parser_top-2)).value;
3065                 int rppleft = (parser_stack.get(parser_top-0)).left;
3066                 int rppright = (parser_stack.get(parser_top-0)).right;
3067                 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3068                  RESULT = new ParentPattern(ikp, rpp);
3069               parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3070             }
3071           return parser_result;
3072 
3073           /*. . . . . . . . . . . . . . . . . . . .*/
3074           case 7: // LocationPathPattern ::= IdKeyPattern
3075             {
3076               Pattern RESULT = null;
3077                 int ikpleft = (parser_stack.get(parser_top-0)).left;
3078                 int ikpright = (parser_stack.get(parser_top-0)).right;
3079                 IdKeyPattern ikp = (IdKeyPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3080                  RESULT = ikp;
3081               parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3082             }
3083           return parser_result;
3084 
3085           /*. . . . . . . . . . . . . . . . . . . .*/
3086           case 6: // LocationPathPattern ::= SLASH RelativePathPattern
3087             {
3088               Pattern RESULT = null;
3089                 int rppleft = (parser_stack.get(parser_top-0)).left;
3090                 int rppright = (parser_stack.get(parser_top-0)).right;
3091                 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3092                  RESULT = new AbsolutePathPattern(rpp);
3093               parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3094             }
3095           return parser_result;
3096 
3097           /*. . . . . . . . . . . . . . . . . . . .*/
3098           case 5: // LocationPathPattern ::= SLASH
3099             {
3100               Pattern RESULT = null;
3101                  RESULT = new AbsolutePathPattern(null);
3102               parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3103             }
3104           return parser_result;
3105 
3106           /*. . . . . . . . . . . . . . . . . . . .*/
3107           case 4: // Pattern ::= LocationPathPattern VBAR Pattern
3108             {
3109               Pattern RESULT = null;
3110                 int lppleft = (parser_stack.get(parser_top-2)).left;
3111                 int lppright = (parser_stack.get(parser_top-2)).right;
3112                 Pattern lpp = (Pattern)((Symbol) parser_stack.get(parser_top-2)).value;
3113                 int pleft = (parser_stack.get(parser_top-0)).left;
3114                 int pright = (parser_stack.get(parser_top-0)).right;
3115                 Pattern p = (Pattern)((Symbol) parser_stack.get(parser_top-0)).value;
3116                  RESULT = new AlternativePattern(lpp, p);
3117               parser_result = new Symbol(28/*Pattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3118             }
3119           return parser_result;
3120 
3121           /*. . . . . . . . . . . . . . . . . . . .*/
3122           case 3: // Pattern ::= LocationPathPattern
3123             {
3124               Pattern RESULT = null;
3125                 int lppleft = (parser_stack.get(parser_top-0)).left;
3126                 int lppright = (parser_stack.get(parser_top-0)).right;
3127                 Pattern lpp = (Pattern)((Symbol) parser_stack.get(parser_top-0)).value;
3128                  RESULT = lpp;
3129               parser_result = new Symbol(28/*Pattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3130             }
3131           return parser_result;
3132 
3133           /*. . . . . . . . . . . . . . . . . . . .*/
3134           case 2: // TopLevel ::= EXPRESSION Expr
3135             {
3136               SyntaxTreeNode RESULT = null;
3137                 int exprleft = (parser_stack.get(parser_top-0)).left;
3138                 int exprright = (parser_stack.get(parser_top-0)).right;
3139                 Expression expr = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
3140                  RESULT = expr;
3141               parser_result = new Symbol(1/*TopLevel*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3142             }
3143           return parser_result;
3144 
3145           /*. . . . . . . . . . . . . . . . . . . .*/
3146           case 1: // TopLevel ::= PATTERN Pattern
3147             {
3148               SyntaxTreeNode RESULT = null;
3149                 int patternleft = (parser_stack.get(parser_top-0)).left;
3150                 int patternright = (parser_stack.get(parser_top-0)).right;
3151                 Pattern pattern = (Pattern)((Symbol) parser_stack.get(parser_top-0)).value;
3152                  RESULT = pattern;
3153               parser_result = new Symbol(1/*TopLevel*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3154             }
3155           return parser_result;
3156 
3157           /*. . . . . . . . . . . . . . . . . . . .*/
3158           case 0: // $START ::= TopLevel EOF
3159             {
3160               Object RESULT = null;
3161                 int start_valleft = (parser_stack.get(parser_top-1)).left;
3162                 int start_valright = (parser_stack.get(parser_top-1)).right;
3163                 SyntaxTreeNode start_val = (SyntaxTreeNode)((Symbol) parser_stack.get(parser_top-1)).value;
3164                 RESULT = start_val;
3165               parser_result = new Symbol(0/*$START*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3166             }
3167           /* ACCEPT */
3168           parser_parser.done_parsing();
3169           return parser_result;
3170 
3171           /* . . . . . .*/
3172           default:
3173             throw new Exception(
3174                "Invalid action number found in internal parse table");
3175 
3176         }
3177     }
3178 }