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
26package com.sun.org.apache.xalan.internal.xsltc.compiler;
27
28import java.util.Stack;
29import java.util.Vector;
30import java.io.StringReader;
31import com.sun.java_cup.internal.runtime.*;
32import com.sun.org.apache.xml.internal.dtm.DTM;
33import com.sun.org.apache.xalan.internal.xsltc.DOM;
34import com.sun.org.apache.xml.internal.dtm.Axis;
35import com.sun.org.apache.xalan.internal.xsltc.runtime.Operators;
36import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
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 */
42public class XPathParser extends com.sun.java_cup.internal.runtime.lr_parser {
43
44  /** Default constructor. */
45  public XPathParser() {super();}
46
47  /** Constructor which sets the default scanner. */
48  public XPathParser(com.sun.java_cup.internal.runtime.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 CUP$XPathParser$actions action_obj;
846
847  /** Action encapsulation object initializer. */
848  protected void init_actions()
849    {
850      action_obj = new CUP$XPathParser$actions(this);
851    }
852
853  /** Invoke a user supplied parse action. */
854  public com.sun.java_cup.internal.runtime.Symbol do_action(
855    int                        act_num,
856    com.sun.java_cup.internal.runtime.lr_parser parser,
857    java.util.Stack            stack,
858    int                        top)
859    throws java.lang.Exception
860  {
861    /* call code in generated class */
862    return action_obj.CUP$XPathParser$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 Vector EmptyArgs = new Vector(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, Vector 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 Vector(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.*/
1133class CUP$XPathParser$actions {
1134  private final XPathParser parser;
1135
1136  /** Constructor */
1137  CUP$XPathParser$actions(XPathParser parser) {
1138    this.parser = parser;
1139  }
1140
1141  /** Method with the actual generated action code. */
1142  public final com.sun.java_cup.internal.runtime.Symbol CUP$XPathParser$do_action(
1143    int                        CUP$XPathParser$act_num,
1144    com.sun.java_cup.internal.runtime.lr_parser CUP$XPathParser$parser,
1145    java.util.Stack            CUP$XPathParser$stack,
1146    int                        CUP$XPathParser$top)
1147    throws java.lang.Exception
1148    {
1149      /* Symbol object for return from actions */
1150      com.sun.java_cup.internal.runtime.Symbol CUP$XPathParser$result;
1151
1152      /* select the action based on the action number */
1153      switch (CUP$XPathParser$act_num)
1154        {
1155          /*. . . . . . . . . . . . . . . . . . . .*/
1156          case 140: // QName ::= ID
1157            {
1158              QName RESULT = null;
1159                 RESULT = parser.getQNameIgnoreDefaultNs("id");
1160              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1161            }
1162          return CUP$XPathParser$result;
1163
1164          /*. . . . . . . . . . . . . . . . . . . .*/
1165          case 139: // QName ::= SELF
1166            {
1167              QName RESULT = null;
1168                 RESULT = parser.getQNameIgnoreDefaultNs("self");
1169              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1170            }
1171          return CUP$XPathParser$result;
1172
1173          /*. . . . . . . . . . . . . . . . . . . .*/
1174          case 138: // QName ::= PRECEDINGSIBLING
1175            {
1176              QName RESULT = null;
1177                 RESULT = parser.getQNameIgnoreDefaultNs("preceding-sibling");
1178              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1179            }
1180          return CUP$XPathParser$result;
1181
1182          /*. . . . . . . . . . . . . . . . . . . .*/
1183          case 137: // QName ::= PRECEDING
1184            {
1185              QName RESULT = null;
1186                 RESULT = parser.getQNameIgnoreDefaultNs("preceding");
1187              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1188            }
1189          return CUP$XPathParser$result;
1190
1191          /*. . . . . . . . . . . . . . . . . . . .*/
1192          case 136: // QName ::= PARENT
1193            {
1194              QName RESULT = null;
1195                 RESULT = parser.getQNameIgnoreDefaultNs("parent");
1196              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1197            }
1198          return CUP$XPathParser$result;
1199
1200          /*. . . . . . . . . . . . . . . . . . . .*/
1201          case 135: // QName ::= NAMESPACE
1202            {
1203              QName RESULT = null;
1204                 RESULT = parser.getQNameIgnoreDefaultNs("namespace");
1205              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1206            }
1207          return CUP$XPathParser$result;
1208
1209          /*. . . . . . . . . . . . . . . . . . . .*/
1210          case 134: // QName ::= FOLLOWINGSIBLING
1211            {
1212              QName RESULT = null;
1213                 RESULT = parser.getQNameIgnoreDefaultNs("following-sibling");
1214              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1215            }
1216          return CUP$XPathParser$result;
1217
1218          /*. . . . . . . . . . . . . . . . . . . .*/
1219          case 133: // QName ::= FOLLOWING
1220            {
1221              QName RESULT = null;
1222                 RESULT = parser.getQNameIgnoreDefaultNs("following");
1223              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1224            }
1225          return CUP$XPathParser$result;
1226
1227          /*. . . . . . . . . . . . . . . . . . . .*/
1228          case 132: // QName ::= DESCENDANTORSELF
1229            {
1230              QName RESULT = null;
1231                 RESULT = parser.getQNameIgnoreDefaultNs("decendant-or-self");
1232              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1233            }
1234          return CUP$XPathParser$result;
1235
1236          /*. . . . . . . . . . . . . . . . . . . .*/
1237          case 131: // QName ::= DESCENDANT
1238            {
1239              QName RESULT = null;
1240                 RESULT = parser.getQNameIgnoreDefaultNs("decendant");
1241              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1242            }
1243          return CUP$XPathParser$result;
1244
1245          /*. . . . . . . . . . . . . . . . . . . .*/
1246          case 130: // QName ::= CHILD
1247            {
1248              QName RESULT = null;
1249                 RESULT = parser.getQNameIgnoreDefaultNs("child");
1250              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1251            }
1252          return CUP$XPathParser$result;
1253
1254          /*. . . . . . . . . . . . . . . . . . . .*/
1255          case 129: // QName ::= ATTRIBUTE
1256            {
1257              QName RESULT = null;
1258                 RESULT = parser.getQNameIgnoreDefaultNs("attribute");
1259              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1260            }
1261          return CUP$XPathParser$result;
1262
1263          /*. . . . . . . . . . . . . . . . . . . .*/
1264          case 128: // QName ::= ANCESTORORSELF
1265            {
1266              QName RESULT = null;
1267                 RESULT = parser.getQNameIgnoreDefaultNs("ancestor-or-self");
1268              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1269            }
1270          return CUP$XPathParser$result;
1271
1272          /*. . . . . . . . . . . . . . . . . . . .*/
1273          case 127: // QName ::= ANCESTOR
1274            {
1275              QName RESULT = null;
1276                 RESULT = parser.getQNameIgnoreDefaultNs("child");
1277              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1278            }
1279          return CUP$XPathParser$result;
1280
1281          /*. . . . . . . . . . . . . . . . . . . .*/
1282          case 126: // QName ::= KEY
1283            {
1284              QName RESULT = null;
1285                 RESULT = parser.getQNameIgnoreDefaultNs("key");
1286              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1287            }
1288          return CUP$XPathParser$result;
1289
1290          /*. . . . . . . . . . . . . . . . . . . .*/
1291          case 125: // QName ::= MOD
1292            {
1293              QName RESULT = null;
1294                 RESULT = parser.getQNameIgnoreDefaultNs("mod");
1295              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1296            }
1297          return CUP$XPathParser$result;
1298
1299          /*. . . . . . . . . . . . . . . . . . . .*/
1300          case 124: // QName ::= DIV
1301            {
1302              QName RESULT = null;
1303                 RESULT = parser.getQNameIgnoreDefaultNs("div");
1304              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1305            }
1306          return CUP$XPathParser$result;
1307
1308          /*. . . . . . . . . . . . . . . . . . . .*/
1309          case 123: // QName ::= QNAME
1310            {
1311              QName RESULT = null;
1312                int qnameleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1313                int qnameright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1314                String qname = (String)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1315                 RESULT = parser.getQNameIgnoreDefaultNs(qname);
1316              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(37/*QName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1317            }
1318          return CUP$XPathParser$result;
1319
1320          /*. . . . . . . . . . . . . . . . . . . .*/
1321          case 122: // NameTest ::= QName
1322            {
1323              Object RESULT = null;
1324                int qnleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1325                int qnright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1326                QName qn = (QName)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1327                 RESULT = qn;
1328              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(26/*NameTest*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1329            }
1330          return CUP$XPathParser$result;
1331
1332          /*. . . . . . . . . . . . . . . . . . . .*/
1333          case 121: // NameTest ::= STAR
1334            {
1335              Object RESULT = null;
1336                 RESULT = null;
1337              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(26/*NameTest*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1338            }
1339          return CUP$XPathParser$result;
1340
1341          /*. . . . . . . . . . . . . . . . . . . .*/
1342          case 120: // NodeTest ::= PI
1343            {
1344              Object RESULT = null;
1345                 RESULT = Integer.valueOf(NodeTest.PI);
1346              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(25/*NodeTest*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1347            }
1348          return CUP$XPathParser$result;
1349
1350          /*. . . . . . . . . . . . . . . . . . . .*/
1351          case 119: // NodeTest ::= PIPARAM LPAREN Literal RPAREN
1352            {
1353              Object RESULT = null;
1354                int lleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1355                int lright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1356                String l = (String)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$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           Vector predicates = new Vector();
1363           predicates.addElement(new Predicate(exp));
1364           RESULT = new Step(Axis.CHILD, NodeTest.PI, predicates);
1365
1366              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(25/*NodeTest*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1367            }
1368          return CUP$XPathParser$result;
1369
1370          /*. . . . . . . . . . . . . . . . . . . .*/
1371          case 118: // NodeTest ::= COMMENT
1372            {
1373              Object RESULT = null;
1374                 RESULT = Integer.valueOf(NodeTest.COMMENT);
1375              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(25/*NodeTest*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1376            }
1377          return CUP$XPathParser$result;
1378
1379          /*. . . . . . . . . . . . . . . . . . . .*/
1380          case 117: // NodeTest ::= TEXT
1381            {
1382              Object RESULT = null;
1383                 RESULT = Integer.valueOf(NodeTest.TEXT);
1384              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(25/*NodeTest*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1385            }
1386          return CUP$XPathParser$result;
1387
1388          /*. . . . . . . . . . . . . . . . . . . .*/
1389          case 116: // NodeTest ::= NODE
1390            {
1391              Object RESULT = null;
1392                 RESULT = Integer.valueOf(NodeTest.ANODE);
1393              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(25/*NodeTest*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1394            }
1395          return CUP$XPathParser$result;
1396
1397          /*. . . . . . . . . . . . . . . . . . . .*/
1398          case 115: // NodeTest ::= NameTest
1399            {
1400              Object RESULT = null;
1401                int ntleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1402                int ntright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1403                Object nt = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1404                 RESULT = nt;
1405              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(25/*NodeTest*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1406            }
1407          return CUP$XPathParser$result;
1408
1409          /*. . . . . . . . . . . . . . . . . . . .*/
1410          case 114: // Argument ::= Expr
1411            {
1412              Expression RESULT = null;
1413                int exleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1414                int exright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1415                Expression ex = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1416                 RESULT = ex;
1417              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(3/*Argument*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1418            }
1419          return CUP$XPathParser$result;
1420
1421          /*. . . . . . . . . . . . . . . . . . . .*/
1422          case 113: // VariableName ::= QName
1423            {
1424              QName RESULT = null;
1425                int vnameleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1426                int vnameright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1427                QName vname = (QName)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1428
1429            RESULT = vname;
1430
1431              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(39/*VariableName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1432            }
1433          return CUP$XPathParser$result;
1434
1435          /*. . . . . . . . . . . . . . . . . . . .*/
1436          case 112: // FunctionName ::= QName
1437            {
1438              QName RESULT = null;
1439                int fnameleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1440                int fnameright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1441                QName fname = (QName)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1442
1443            RESULT = fname;
1444
1445              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(38/*FunctionName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1446            }
1447          return CUP$XPathParser$result;
1448
1449          /*. . . . . . . . . . . . . . . . . . . .*/
1450          case 111: // NonemptyArgumentList ::= Argument COMMA NonemptyArgumentList
1451            {
1452              Vector RESULT = null;
1453                int argleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
1454                int argright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
1455                Expression arg = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
1456                int arglleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1457                int arglright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1458                Vector argl = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1459                 argl.insertElementAt(arg, 0); RESULT = argl;
1460              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(36/*NonemptyArgumentList*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1461            }
1462          return CUP$XPathParser$result;
1463
1464          /*. . . . . . . . . . . . . . . . . . . .*/
1465          case 110: // NonemptyArgumentList ::= Argument
1466            {
1467              Vector RESULT = null;
1468                int argleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1469                int argright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1470                Expression arg = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1471
1472            Vector temp = new Vector();
1473            temp.addElement(arg);
1474            RESULT = temp;
1475
1476              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(36/*NonemptyArgumentList*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1477            }
1478          return CUP$XPathParser$result;
1479
1480          /*. . . . . . . . . . . . . . . . . . . .*/
1481          case 109: // FunctionCall ::= FunctionName LPAREN NonemptyArgumentList RPAREN
1482            {
1483              Expression RESULT = null;
1484                int fnameleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left;
1485                int fnameright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).right;
1486                QName fname = (QName)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).value;
1487                int arglleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1488                int arglright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1489                Vector argl = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1490
1491          if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1492            RESULT = new ConcatCall(fname, argl);
1493          }
1494          else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1495            RESULT = new NumberCall(fname, argl);
1496          }
1497          else if (fname == parser.getQNameIgnoreDefaultNs("document")) {
1498            parser.setMultiDocument(true);
1499            RESULT = new DocumentCall(fname, argl);
1500          }
1501          else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1502            RESULT = new StringCall(fname, argl);
1503          }
1504          else if (fname == parser.getQNameIgnoreDefaultNs("boolean")) {
1505            RESULT = new BooleanCall(fname, argl);
1506          }
1507          else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
1508            RESULT = new NameCall(fname, argl);
1509          }
1510          else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
1511            RESULT = new GenerateIdCall(fname, argl);
1512          }
1513          else if (fname == parser.getQNameIgnoreDefaultNs("not")) {
1514            RESULT = new NotCall(fname, argl);
1515          }
1516          else if (fname == parser.getQNameIgnoreDefaultNs("format-number")) {
1517            RESULT = new FormatNumberCall(fname, argl);
1518          }
1519          else if (fname == parser.getQNameIgnoreDefaultNs("unparsed-entity-uri")) {
1520            RESULT = new UnparsedEntityUriCall(fname, argl);
1521          }
1522          else if (fname == parser.getQNameIgnoreDefaultNs("key")) {
1523            RESULT = new KeyCall(fname, argl);
1524          }
1525          else if (fname == parser.getQNameIgnoreDefaultNs("id")) {
1526            RESULT = new KeyCall(fname, argl);
1527            parser.setHasIdCall(true);
1528          }
1529          else if (fname == parser.getQNameIgnoreDefaultNs("ceiling")) {
1530            RESULT = new CeilingCall(fname, argl);
1531          }
1532          else if (fname == parser.getQNameIgnoreDefaultNs("round")) {
1533            RESULT = new RoundCall(fname, argl);
1534          }
1535          else if (fname == parser.getQNameIgnoreDefaultNs("floor")) {
1536            RESULT = new FloorCall(fname, argl);
1537          }
1538          else if (fname == parser.getQNameIgnoreDefaultNs("contains")) {
1539            RESULT = new ContainsCall(fname, argl);
1540          }
1541          else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) {
1542            RESULT = new StringLengthCall(fname, argl);
1543          }
1544          else if (fname == parser.getQNameIgnoreDefaultNs("starts-with")) {
1545            RESULT = new StartsWithCall(fname, argl);
1546          }
1547          else if (fname == parser.getQNameIgnoreDefaultNs("function-available")) {
1548            RESULT = new FunctionAvailableCall(fname, argl);
1549          }
1550          else if (fname == parser.getQNameIgnoreDefaultNs("element-available")) {
1551            RESULT = new ElementAvailableCall(fname, argl);
1552          }
1553          else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
1554            RESULT = new LocalNameCall(fname, argl);
1555          }
1556          else if (fname == parser.getQNameIgnoreDefaultNs("lang")) {
1557            RESULT = new LangCall(fname, argl);
1558          }
1559          else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
1560            RESULT = new NamespaceUriCall(fname, argl);
1561          }
1562          else if (fname == parser.getQName(Constants.TRANSLET_URI, "xsltc", "cast")) {
1563            RESULT = new CastCall(fname, argl);
1564          }
1565          // Special case for extension function nodeset()
1566          else if (fname.getLocalPart().equals("nodeset") || fname.getLocalPart().equals("node-set")) {
1567            parser.setCallsNodeset(true);  // implies MultiDOM
1568            RESULT = new FunctionCall(fname, argl);
1569          }
1570          else {
1571            RESULT = new FunctionCall(fname, argl);
1572          }
1573
1574              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(16/*FunctionCall*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1575            }
1576          return CUP$XPathParser$result;
1577
1578          /*. . . . . . . . . . . . . . . . . . . .*/
1579          case 108: // FunctionCall ::= FunctionName LPAREN RPAREN
1580            {
1581              Expression RESULT = null;
1582                int fnameleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
1583                int fnameright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
1584                QName fname = (QName)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
1585
1586
1587          if (fname == parser.getQNameIgnoreDefaultNs("current")) {
1588            RESULT = new CurrentCall(fname);
1589          }
1590          else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1591            RESULT = new NumberCall(fname, parser.EmptyArgs);
1592          }
1593          else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1594            RESULT = new StringCall(fname, parser.EmptyArgs);
1595          }
1596          else if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1597            RESULT = new ConcatCall(fname, parser.EmptyArgs);
1598          }
1599          else if (fname == parser.getQNameIgnoreDefaultNs("true")) {
1600            RESULT = new BooleanExpr(true);
1601          }
1602          else if (fname == parser.getQNameIgnoreDefaultNs("false")) {
1603            RESULT = new BooleanExpr(false);
1604          }
1605          else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
1606            RESULT = new NameCall(fname);
1607          }
1608          else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
1609            RESULT = new GenerateIdCall(fname, parser.EmptyArgs);
1610          }
1611          else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) {
1612            RESULT = new StringLengthCall(fname, parser.EmptyArgs);
1613          }
1614          else if (fname == parser.getQNameIgnoreDefaultNs("position")) {
1615            RESULT = new PositionCall(fname);
1616          }
1617          else if (fname == parser.getQNameIgnoreDefaultNs("last")) {
1618            RESULT = new LastCall(fname);
1619          }
1620          else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
1621            RESULT = new LocalNameCall(fname);
1622          }
1623          else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
1624            RESULT = new NamespaceUriCall(fname);
1625          }
1626          else {
1627            RESULT = new FunctionCall(fname, parser.EmptyArgs);
1628          }
1629
1630              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(16/*FunctionCall*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1631            }
1632          return CUP$XPathParser$result;
1633
1634          /*. . . . . . . . . . . . . . . . . . . .*/
1635          case 107: // VariableReference ::= DOLLAR VariableName
1636            {
1637              Expression RESULT = null;
1638                int varNameleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1639                int varNameright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1640                QName varName = (QName)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1641
1642            // An empty qname prefix for a variable or parameter reference
1643            // should map to the null namespace and not the default URI.
1644            SyntaxTreeNode node = parser.lookupName(varName);
1645
1646            if (node != null) {
1647                if (node instanceof Variable) {
1648                    RESULT = new VariableRef((Variable)node);
1649                }
1650                else if (node instanceof Param) {
1651                    RESULT = new ParameterRef((Param)node);
1652                }
1653                else {
1654                    RESULT = new UnresolvedRef(varName);
1655                }
1656            }
1657
1658            if (node == null) {
1659                RESULT = new UnresolvedRef(varName);
1660            }
1661
1662              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(15/*VariableReference*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1663            }
1664          return CUP$XPathParser$result;
1665
1666          /*. . . . . . . . . . . . . . . . . . . .*/
1667          case 106: // PrimaryExpr ::= FunctionCall
1668            {
1669              Expression RESULT = null;
1670                int fcleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1671                int fcright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1672                Expression fc = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1673                 RESULT = fc;
1674              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(17/*PrimaryExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1675            }
1676          return CUP$XPathParser$result;
1677
1678          /*. . . . . . . . . . . . . . . . . . . .*/
1679          case 105: // PrimaryExpr ::= REAL
1680            {
1681              Expression RESULT = null;
1682                int numleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1683                int numright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1684                Double num = (Double)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1685                 RESULT = new RealExpr(num.doubleValue());
1686              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(17/*PrimaryExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1687            }
1688          return CUP$XPathParser$result;
1689
1690          /*. . . . . . . . . . . . . . . . . . . .*/
1691          case 104: // PrimaryExpr ::= INT
1692            {
1693              Expression RESULT = null;
1694                int numleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1695                int numright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1696                Long num = (Long)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1697
1698           long value = num.longValue();
1699           if (value < Integer.MIN_VALUE || value > Integer.MAX_VALUE) {
1700                RESULT = new RealExpr(value);
1701           }
1702           else {
1703               if (num.doubleValue() == -0)
1704                   RESULT = new RealExpr(num.doubleValue());
1705               else if (num.intValue() == 0)
1706                   RESULT = new IntExpr(num.intValue());
1707               else if (num.doubleValue() == 0.0)
1708                   RESULT = new RealExpr(num.doubleValue());
1709               else
1710                   RESULT = new IntExpr(num.intValue());
1711           }
1712
1713              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(17/*PrimaryExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1714            }
1715          return CUP$XPathParser$result;
1716
1717          /*. . . . . . . . . . . . . . . . . . . .*/
1718          case 103: // PrimaryExpr ::= Literal
1719            {
1720              Expression RESULT = null;
1721                int stringleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1722                int stringright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1723                String string = (String)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1724
1725        /*
1726        * If the string appears to have the syntax of a QName, store
1727        * namespace info in the literal expression. This is used for
1728        * element-available and function-available functions, among
1729        * others. Also, the default namespace must be ignored.
1730        */
1731        String namespace = null;
1732        final int index = string.lastIndexOf(':');
1733
1734        if (index > 0) {
1735            final String prefix = string.substring(0, index);
1736            namespace = parser._symbolTable.lookupNamespace(prefix);
1737        }
1738        RESULT = (namespace == null) ? new LiteralExpr(string)
1739                     : new LiteralExpr(string, namespace);
1740
1741              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(17/*PrimaryExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1742            }
1743          return CUP$XPathParser$result;
1744
1745          /*. . . . . . . . . . . . . . . . . . . .*/
1746          case 102: // PrimaryExpr ::= LPAREN Expr RPAREN
1747            {
1748              Expression RESULT = null;
1749                int exleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1750                int exright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1751                Expression ex = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1752                 RESULT = ex;
1753              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(17/*PrimaryExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1754            }
1755          return CUP$XPathParser$result;
1756
1757          /*. . . . . . . . . . . . . . . . . . . .*/
1758          case 101: // PrimaryExpr ::= VariableReference
1759            {
1760              Expression RESULT = null;
1761                int vrleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1762                int vrright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1763                Expression vr = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1764                 RESULT = vr;
1765              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(17/*PrimaryExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1766            }
1767          return CUP$XPathParser$result;
1768
1769          /*. . . . . . . . . . . . . . . . . . . .*/
1770          case 100: // FilterExpr ::= PrimaryExpr Predicates
1771            {
1772              Expression RESULT = null;
1773                int primaryleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1774                int primaryright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1775                Expression primary = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1776                int ppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1777                int ppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1778                Vector pp = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1779                 RESULT = new FilterExpr(primary, pp);
1780              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(6/*FilterExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1781            }
1782          return CUP$XPathParser$result;
1783
1784          /*. . . . . . . . . . . . . . . . . . . .*/
1785          case 99: // FilterExpr ::= PrimaryExpr
1786            {
1787              Expression RESULT = null;
1788                int primaryleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1789                int primaryright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1790                Expression primary = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1791                 RESULT = primary;
1792              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(6/*FilterExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1793            }
1794          return CUP$XPathParser$result;
1795
1796          /*. . . . . . . . . . . . . . . . . . . .*/
1797          case 98: // AbbreviatedStep ::= DDOT
1798            {
1799              Expression RESULT = null;
1800                 RESULT = new Step(Axis.PARENT, NodeTest.ANODE, null);
1801              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(20/*AbbreviatedStep*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1802            }
1803          return CUP$XPathParser$result;
1804
1805          /*. . . . . . . . . . . . . . . . . . . .*/
1806          case 97: // AbbreviatedStep ::= DOT
1807            {
1808              Expression RESULT = null;
1809                 RESULT = new Step(Axis.SELF, NodeTest.ANODE, null);
1810              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(20/*AbbreviatedStep*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1811            }
1812          return CUP$XPathParser$result;
1813
1814          /*. . . . . . . . . . . . . . . . . . . .*/
1815          case 96: // AxisName ::= SELF
1816            {
1817              Integer RESULT = null;
1818                 RESULT = Integer.valueOf(Axis.SELF);
1819              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1820            }
1821          return CUP$XPathParser$result;
1822
1823          /*. . . . . . . . . . . . . . . . . . . .*/
1824          case 95: // AxisName ::= PRECEDINGSIBLING
1825            {
1826              Integer RESULT = null;
1827                 RESULT = Integer.valueOf(Axis.PRECEDINGSIBLING);
1828              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1829            }
1830          return CUP$XPathParser$result;
1831
1832          /*. . . . . . . . . . . . . . . . . . . .*/
1833          case 94: // AxisName ::= PRECEDING
1834            {
1835              Integer RESULT = null;
1836                 RESULT = Integer.valueOf(Axis.PRECEDING);
1837              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1838            }
1839          return CUP$XPathParser$result;
1840
1841          /*. . . . . . . . . . . . . . . . . . . .*/
1842          case 93: // AxisName ::= PARENT
1843            {
1844              Integer RESULT = null;
1845                 RESULT = Integer.valueOf(Axis.PARENT);
1846              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1847            }
1848          return CUP$XPathParser$result;
1849
1850          /*. . . . . . . . . . . . . . . . . . . .*/
1851          case 92: // AxisName ::= NAMESPACE
1852            {
1853              Integer RESULT = null;
1854                 RESULT = Integer.valueOf(Axis.NAMESPACE);
1855              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1856            }
1857          return CUP$XPathParser$result;
1858
1859          /*. . . . . . . . . . . . . . . . . . . .*/
1860          case 91: // AxisName ::= FOLLOWINGSIBLING
1861            {
1862              Integer RESULT = null;
1863                 RESULT = Integer.valueOf(Axis.FOLLOWINGSIBLING);
1864              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1865            }
1866          return CUP$XPathParser$result;
1867
1868          /*. . . . . . . . . . . . . . . . . . . .*/
1869          case 90: // AxisName ::= FOLLOWING
1870            {
1871              Integer RESULT = null;
1872                 RESULT = Integer.valueOf(Axis.FOLLOWING);
1873              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1874            }
1875          return CUP$XPathParser$result;
1876
1877          /*. . . . . . . . . . . . . . . . . . . .*/
1878          case 89: // AxisName ::= DESCENDANTORSELF
1879            {
1880              Integer RESULT = null;
1881                 RESULT = Integer.valueOf(Axis.DESCENDANTORSELF);
1882              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1883            }
1884          return CUP$XPathParser$result;
1885
1886          /*. . . . . . . . . . . . . . . . . . . .*/
1887          case 88: // AxisName ::= DESCENDANT
1888            {
1889              Integer RESULT = null;
1890                 RESULT = Integer.valueOf(Axis.DESCENDANT);
1891              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1892            }
1893          return CUP$XPathParser$result;
1894
1895          /*. . . . . . . . . . . . . . . . . . . .*/
1896          case 87: // AxisName ::= CHILD
1897            {
1898              Integer RESULT = null;
1899                 RESULT = Integer.valueOf(Axis.CHILD);
1900              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1901            }
1902          return CUP$XPathParser$result;
1903
1904          /*. . . . . . . . . . . . . . . . . . . .*/
1905          case 86: // AxisName ::= ATTRIBUTE
1906            {
1907              Integer RESULT = null;
1908                 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
1909              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1910            }
1911          return CUP$XPathParser$result;
1912
1913          /*. . . . . . . . . . . . . . . . . . . .*/
1914          case 85: // AxisName ::= ANCESTORORSELF
1915            {
1916              Integer RESULT = null;
1917                 RESULT = Integer.valueOf(Axis.ANCESTORORSELF);
1918              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1919            }
1920          return CUP$XPathParser$result;
1921
1922          /*. . . . . . . . . . . . . . . . . . . .*/
1923          case 84: // AxisName ::= ANCESTOR
1924            {
1925              Integer RESULT = null;
1926                 RESULT = Integer.valueOf(Axis.ANCESTOR);
1927              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(40/*AxisName*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1928            }
1929          return CUP$XPathParser$result;
1930
1931          /*. . . . . . . . . . . . . . . . . . . .*/
1932          case 83: // AxisSpecifier ::= ATSIGN
1933            {
1934              Integer RESULT = null;
1935                 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
1936              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(41/*AxisSpecifier*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1937            }
1938          return CUP$XPathParser$result;
1939
1940          /*. . . . . . . . . . . . . . . . . . . .*/
1941          case 82: // AxisSpecifier ::= AxisName DCOLON
1942            {
1943              Integer RESULT = null;
1944                int anleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1945                int anright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1946                Integer an = (Integer)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1947                 RESULT = an;
1948              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(41/*AxisSpecifier*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1949            }
1950          return CUP$XPathParser$result;
1951
1952          /*. . . . . . . . . . . . . . . . . . . .*/
1953          case 81: // Step ::= AbbreviatedStep
1954            {
1955              Expression RESULT = null;
1956                int abbrevleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1957                int abbrevright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1958                Expression abbrev = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1959                 RESULT = abbrev;
1960              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(7/*Step*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1961            }
1962          return CUP$XPathParser$result;
1963
1964          /*. . . . . . . . . . . . . . . . . . . .*/
1965          case 80: // Step ::= AxisSpecifier NodeTest
1966            {
1967              Expression RESULT = null;
1968                int axisleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1969                int axisright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1970                Integer axis = (Integer)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1971                int ntestleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1972                int ntestright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1973                Object ntest = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1974                 RESULT = new Step(axis.intValue(),
1975                             parser.findNodeType(axis.intValue(), ntest),
1976                             null);
1977
1978              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(7/*Step*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1979            }
1980          return CUP$XPathParser$result;
1981
1982          /*. . . . . . . . . . . . . . . . . . . .*/
1983          case 79: // Step ::= AxisSpecifier NodeTest Predicates
1984            {
1985              Expression RESULT = null;
1986                int axisleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
1987                int axisright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
1988                Integer axis = (Integer)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
1989                int ntestleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1990                int ntestright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1991                Object ntest = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1992                int ppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1993                int ppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1994                Vector pp = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1995                 RESULT = new Step(axis.intValue(),
1996                             parser.findNodeType(axis.intValue(), ntest),
1997                             pp);
1998
1999              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(7/*Step*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2000            }
2001          return CUP$XPathParser$result;
2002
2003          /*. . . . . . . . . . . . . . . . . . . .*/
2004          case 78: // Step ::= NodeTest Predicates
2005            {
2006              Expression RESULT = null;
2007                int ntestleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2008                int ntestright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2009                Object ntest = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2010                int ppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2011                int ppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2012                Vector pp = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2013
2014            if (ntest instanceof Step) {
2015                Step step = (Step)ntest;
2016                step.addPredicates(pp);
2017                RESULT = (Step)ntest;
2018            }
2019            else {
2020                RESULT = new Step(Axis.CHILD,
2021                             parser.findNodeType(Axis.CHILD, ntest), pp);
2022            }
2023
2024              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(7/*Step*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2025            }
2026          return CUP$XPathParser$result;
2027
2028          /*. . . . . . . . . . . . . . . . . . . .*/
2029          case 77: // Step ::= NodeTest
2030            {
2031              Expression RESULT = null;
2032                int ntestleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2033                int ntestright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2034                Object ntest = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2035
2036            if (ntest instanceof Step) {
2037                RESULT = (Step)ntest;
2038            }
2039            else {
2040                RESULT = new Step(Axis.CHILD,
2041                             parser.findNodeType(Axis.CHILD, ntest),
2042                             null);
2043            }
2044
2045              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(7/*Step*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2046            }
2047          return CUP$XPathParser$result;
2048
2049          /*. . . . . . . . . . . . . . . . . . . .*/
2050          case 76: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath
2051            {
2052              Expression RESULT = null;
2053                int rlpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2054                int rlpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2055                Expression rlp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2056
2057           //
2058           // Expand '//' into '/descendant-or-self::node()/' or
2059           // into /descendant-or-self::*/
2060           //
2061           int nodeType = DOM.NO_TYPE;
2062           if (rlp instanceof Step &&
2063               parser.isElementAxis(((Step) rlp).getAxis()))
2064           {
2065               nodeType = DTM.ELEMENT_NODE;
2066           }
2067           final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2068           RESULT = new AbsoluteLocationPath(parser.insertStep(step,
2069                                (RelativeLocationPath) rlp));
2070
2071              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(24/*AbbreviatedAbsoluteLocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2072            }
2073          return CUP$XPathParser$result;
2074
2075          /*. . . . . . . . . . . . . . . . . . . .*/
2076          case 75: // AbbreviatedRelativeLocationPath ::= RelativeLocationPath DSLASH Step
2077            {
2078              Expression RESULT = null;
2079                int rlpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2080                int rlpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2081                Expression rlp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2082                int stepleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2083                int stepright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2084                Expression step = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2085
2086           final Step right  = (Step)step;
2087           final int  axis   = right.getAxis();
2088           final int  type   = right.getNodeType();
2089           final Vector predicates = right.getPredicates();
2090
2091           if ((axis == Axis.CHILD) && (type != NodeTest.ATTRIBUTE)) {
2092               // Compress './/child:E' into 'descendant::E' - if possible
2093               if (predicates == null) {
2094                   right.setAxis(Axis.DESCENDANT);
2095                   if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) {
2096                       RESULT = right;
2097                   }
2098                   else {
2099                       // Expand 'rlp//child::E' into 'rlp/descendant::E'
2100                       RelativeLocationPath left = (RelativeLocationPath)rlp;
2101                       RESULT = new ParentLocationPath(left, right);
2102                   }
2103               }
2104               else {
2105                   // Expand './/step' -> 'descendant-or-self::*/step'
2106                   if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) {
2107                       Step left = new Step(Axis.DESCENDANTORSELF,
2108                            DTM.ELEMENT_NODE, null);
2109                       RESULT = new ParentLocationPath(left, right);
2110                   }
2111                   else {
2112                       // Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step'
2113                       RelativeLocationPath left = (RelativeLocationPath)rlp;
2114                       Step mid = new Step(Axis.DESCENDANTORSELF,
2115                            DTM.ELEMENT_NODE, null);
2116                       ParentLocationPath ppl = new ParentLocationPath(mid, right);
2117                       RESULT = new ParentLocationPath(left, ppl);
2118                   }
2119               }
2120           }
2121           else if ((axis == Axis.ATTRIBUTE) || (type == NodeTest.ATTRIBUTE)) {
2122               // Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step'
2123               RelativeLocationPath left = (RelativeLocationPath)rlp;
2124               Step middle = new Step(Axis.DESCENDANTORSELF,
2125                    DTM.ELEMENT_NODE, null);
2126               ParentLocationPath ppl = new ParentLocationPath(middle, right);
2127               RESULT = new ParentLocationPath(left, ppl);
2128           }
2129           else {
2130               // Expand 'rlp//step' -> 'rlp/descendant-or-self::node()/step'
2131               RelativeLocationPath left = (RelativeLocationPath)rlp;
2132               Step middle = new Step(Axis.DESCENDANTORSELF,
2133                    DOM.NO_TYPE, null);
2134               ParentLocationPath ppl = new ParentLocationPath(middle, right);
2135               RESULT = new ParentLocationPath(left, ppl);
2136           }
2137
2138              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(22/*AbbreviatedRelativeLocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2139            }
2140          return CUP$XPathParser$result;
2141
2142          /*. . . . . . . . . . . . . . . . . . . .*/
2143          case 74: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath
2144            {
2145              Expression RESULT = null;
2146                int aalpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2147                int aalpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2148                Expression aalp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2149                 RESULT = aalp;
2150              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(23/*AbsoluteLocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2151            }
2152          return CUP$XPathParser$result;
2153
2154          /*. . . . . . . . . . . . . . . . . . . .*/
2155          case 73: // AbsoluteLocationPath ::= SLASH RelativeLocationPath
2156            {
2157              Expression RESULT = null;
2158                int rlpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2159                int rlpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2160                Expression rlp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2161                 RESULT = new AbsoluteLocationPath(rlp);
2162              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(23/*AbsoluteLocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2163            }
2164          return CUP$XPathParser$result;
2165
2166          /*. . . . . . . . . . . . . . . . . . . .*/
2167          case 72: // AbsoluteLocationPath ::= SLASH
2168            {
2169              Expression RESULT = null;
2170                 RESULT = new AbsoluteLocationPath();
2171              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(23/*AbsoluteLocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2172            }
2173          return CUP$XPathParser$result;
2174
2175          /*. . . . . . . . . . . . . . . . . . . .*/
2176          case 71: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath
2177            {
2178              Expression RESULT = null;
2179                int arlpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2180                int arlpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2181                Expression arlp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2182                 RESULT = arlp;
2183              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(21/*RelativeLocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2184            }
2185          return CUP$XPathParser$result;
2186
2187          /*. . . . . . . . . . . . . . . . . . . .*/
2188          case 70: // RelativeLocationPath ::= RelativeLocationPath SLASH Step
2189            {
2190              Expression RESULT = null;
2191                int rlpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2192                int rlpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2193                Expression rlp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2194                int stepleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2195                int stepright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2196                Expression step = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2197
2198        if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) {
2199              RESULT = step;       // Remove './' from the middle
2200        }
2201        else if (((Step) step).isAbbreviatedDot()) {
2202              RESULT = rlp;        // Remove '/.' from the end
2203        }
2204        else {
2205             RESULT =
2206                new ParentLocationPath((RelativeLocationPath) rlp, step);
2207           }
2208
2209              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(21/*RelativeLocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2210            }
2211          return CUP$XPathParser$result;
2212
2213          /*. . . . . . . . . . . . . . . . . . . .*/
2214          case 69: // RelativeLocationPath ::= Step
2215            {
2216              Expression RESULT = null;
2217                int stepleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2218                int stepright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2219                Expression step = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2220                 RESULT = step;
2221              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(21/*RelativeLocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2222            }
2223          return CUP$XPathParser$result;
2224
2225          /*. . . . . . . . . . . . . . . . . . . .*/
2226          case 68: // LocationPath ::= AbsoluteLocationPath
2227            {
2228              Expression RESULT = null;
2229                int alpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2230                int alpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2231                Expression alp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2232                 RESULT = alp;
2233              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(4/*LocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2234            }
2235          return CUP$XPathParser$result;
2236
2237          /*. . . . . . . . . . . . . . . . . . . .*/
2238          case 67: // LocationPath ::= RelativeLocationPath
2239            {
2240              Expression RESULT = null;
2241                int rlpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2242                int rlpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2243                Expression rlp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2244                 RESULT = rlp;
2245              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(4/*LocationPath*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2246            }
2247          return CUP$XPathParser$result;
2248
2249          /*. . . . . . . . . . . . . . . . . . . .*/
2250          case 66: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath
2251            {
2252              Expression RESULT = null;
2253                int fexpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2254                int fexpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2255                Expression fexp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2256                int rlpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2257                int rlpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2258                Expression rlp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2259
2260           //
2261           // Expand '//' into '/descendant-or-self::node()/' or
2262           // into /descendant-or-self::*/
2263           //
2264           int nodeType = DOM.NO_TYPE;
2265           if (rlp instanceof Step &&
2266               parser.isElementAxis(((Step) rlp).getAxis()))
2267           {
2268               nodeType = DTM.ELEMENT_NODE;
2269           }
2270           final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2271           FilterParentPath fpp = new FilterParentPath(fexp, step);
2272           fpp = new FilterParentPath(fpp, rlp);
2273           if (fexp instanceof KeyCall == false) {
2274               fpp.setDescendantAxis();
2275           }
2276           RESULT = fpp;
2277
2278              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(19/*PathExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2279            }
2280          return CUP$XPathParser$result;
2281
2282          /*. . . . . . . . . . . . . . . . . . . .*/
2283          case 65: // PathExpr ::= FilterExpr SLASH RelativeLocationPath
2284            {
2285              Expression RESULT = null;
2286                int fexpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2287                int fexpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2288                Expression fexp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2289                int rlpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2290                int rlpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2291                Expression rlp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2292                 RESULT = new FilterParentPath(fexp, rlp);
2293              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(19/*PathExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2294            }
2295          return CUP$XPathParser$result;
2296
2297          /*. . . . . . . . . . . . . . . . . . . .*/
2298          case 64: // PathExpr ::= FilterExpr
2299            {
2300              Expression RESULT = null;
2301                int fexpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2302                int fexpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2303                Expression fexp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2304                 RESULT = fexp;
2305              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(19/*PathExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2306            }
2307          return CUP$XPathParser$result;
2308
2309          /*. . . . . . . . . . . . . . . . . . . .*/
2310          case 63: // PathExpr ::= LocationPath
2311            {
2312              Expression RESULT = null;
2313                int lpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2314                int lpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2315                Expression lp = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2316                 RESULT = lp;
2317              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(19/*PathExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2318            }
2319          return CUP$XPathParser$result;
2320
2321          /*. . . . . . . . . . . . . . . . . . . .*/
2322          case 62: // UnionExpr ::= PathExpr VBAR UnionExpr
2323            {
2324              Expression RESULT = null;
2325                int peleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2326                int peright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2327                Expression pe = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2328                int restleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2329                int restright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2330                Expression rest = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2331                 RESULT = new UnionPathExpr(pe, rest);
2332              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(18/*UnionExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2333            }
2334          return CUP$XPathParser$result;
2335
2336          /*. . . . . . . . . . . . . . . . . . . .*/
2337          case 61: // UnionExpr ::= PathExpr
2338            {
2339              Expression RESULT = null;
2340                int peleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2341                int peright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2342                Expression pe = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2343                 RESULT = pe;
2344              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(18/*UnionExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2345            }
2346          return CUP$XPathParser$result;
2347
2348          /*. . . . . . . . . . . . . . . . . . . .*/
2349          case 60: // UnaryExpr ::= MINUS UnaryExpr
2350            {
2351              Expression RESULT = null;
2352                int ueleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2353                int ueright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2354                Expression ue = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2355                 RESULT = new UnaryOpExpr(ue);
2356              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(14/*UnaryExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2357            }
2358          return CUP$XPathParser$result;
2359
2360          /*. . . . . . . . . . . . . . . . . . . .*/
2361          case 59: // UnaryExpr ::= UnionExpr
2362            {
2363              Expression RESULT = null;
2364                int ueleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2365                int ueright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2366                Expression ue = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2367                 RESULT = ue;
2368              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(14/*UnaryExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2369            }
2370          return CUP$XPathParser$result;
2371
2372          /*. . . . . . . . . . . . . . . . . . . .*/
2373          case 58: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr
2374            {
2375              Expression RESULT = null;
2376                int meleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2377                int meright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2378                Expression me = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2379                int ueleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2380                int ueright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2381                Expression ue = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2382                 RESULT = new BinOpExpr(BinOpExpr.MOD, me, ue);
2383              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(13/*MultiplicativeExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2384            }
2385          return CUP$XPathParser$result;
2386
2387          /*. . . . . . . . . . . . . . . . . . . .*/
2388          case 57: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr
2389            {
2390              Expression RESULT = null;
2391                int meleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2392                int meright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2393                Expression me = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2394                int ueleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2395                int ueright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2396                Expression ue = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2397                 RESULT = new BinOpExpr(BinOpExpr.DIV, me, ue);
2398              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(13/*MultiplicativeExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2399            }
2400          return CUP$XPathParser$result;
2401
2402          /*. . . . . . . . . . . . . . . . . . . .*/
2403          case 56: // MultiplicativeExpr ::= MultiplicativeExpr STAR UnaryExpr
2404            {
2405              Expression RESULT = null;
2406                int meleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2407                int meright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2408                Expression me = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2409                int ueleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2410                int ueright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2411                Expression ue = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2412                 RESULT = new BinOpExpr(BinOpExpr.TIMES, me, ue);
2413              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(13/*MultiplicativeExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2414            }
2415          return CUP$XPathParser$result;
2416
2417          /*. . . . . . . . . . . . . . . . . . . .*/
2418          case 55: // MultiplicativeExpr ::= UnaryExpr
2419            {
2420              Expression RESULT = null;
2421                int ueleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2422                int ueright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2423                Expression ue = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2424                 RESULT = ue;
2425              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(13/*MultiplicativeExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2426            }
2427          return CUP$XPathParser$result;
2428
2429          /*. . . . . . . . . . . . . . . . . . . .*/
2430          case 54: // AdditiveExpr ::= AdditiveExpr MINUS MultiplicativeExpr
2431            {
2432              Expression RESULT = null;
2433                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2434                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2435                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2436                int meleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2437                int meright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2438                Expression me = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2439                 RESULT = new BinOpExpr(BinOpExpr.MINUS, ae, me);
2440              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(12/*AdditiveExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2441            }
2442          return CUP$XPathParser$result;
2443
2444          /*. . . . . . . . . . . . . . . . . . . .*/
2445          case 53: // AdditiveExpr ::= AdditiveExpr PLUS MultiplicativeExpr
2446            {
2447              Expression RESULT = null;
2448                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2449                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2450                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2451                int meleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2452                int meright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2453                Expression me = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2454                 RESULT = new BinOpExpr(BinOpExpr.PLUS, ae, me);
2455              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(12/*AdditiveExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2456            }
2457          return CUP$XPathParser$result;
2458
2459          /*. . . . . . . . . . . . . . . . . . . .*/
2460          case 52: // AdditiveExpr ::= MultiplicativeExpr
2461            {
2462              Expression RESULT = null;
2463                int meleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2464                int meright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2465                Expression me = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2466                 RESULT = me;
2467              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(12/*AdditiveExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2468            }
2469          return CUP$XPathParser$result;
2470
2471          /*. . . . . . . . . . . . . . . . . . . .*/
2472          case 51: // RelationalExpr ::= RelationalExpr GE AdditiveExpr
2473            {
2474              Expression RESULT = null;
2475                int releft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2476                int reright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2477                Expression re = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2478                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2479                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2480                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2481                 RESULT = new RelationalExpr(Operators.GE, re, ae);
2482              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(11/*RelationalExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2483            }
2484          return CUP$XPathParser$result;
2485
2486          /*. . . . . . . . . . . . . . . . . . . .*/
2487          case 50: // RelationalExpr ::= RelationalExpr LE AdditiveExpr
2488            {
2489              Expression RESULT = null;
2490                int releft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2491                int reright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2492                Expression re = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2493                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2494                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2495                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2496                 RESULT = new RelationalExpr(Operators.LE, re, ae);
2497              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(11/*RelationalExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2498            }
2499          return CUP$XPathParser$result;
2500
2501          /*. . . . . . . . . . . . . . . . . . . .*/
2502          case 49: // RelationalExpr ::= RelationalExpr GT AdditiveExpr
2503            {
2504              Expression RESULT = null;
2505                int releft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2506                int reright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2507                Expression re = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2508                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2509                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2510                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2511                 RESULT = new RelationalExpr(Operators.GT, re, ae);
2512              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(11/*RelationalExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2513            }
2514          return CUP$XPathParser$result;
2515
2516          /*. . . . . . . . . . . . . . . . . . . .*/
2517          case 48: // RelationalExpr ::= RelationalExpr LT AdditiveExpr
2518            {
2519              Expression RESULT = null;
2520                int releft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2521                int reright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2522                Expression re = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2523                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2524                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2525                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2526                 RESULT = new RelationalExpr(Operators.LT, re, ae);
2527              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(11/*RelationalExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2528            }
2529          return CUP$XPathParser$result;
2530
2531          /*. . . . . . . . . . . . . . . . . . . .*/
2532          case 47: // RelationalExpr ::= AdditiveExpr
2533            {
2534              Expression RESULT = null;
2535                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2536                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2537                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2538                 RESULT = ae;
2539              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(11/*RelationalExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2540            }
2541          return CUP$XPathParser$result;
2542
2543          /*. . . . . . . . . . . . . . . . . . . .*/
2544          case 46: // EqualityExpr ::= EqualityExpr NE RelationalExpr
2545            {
2546              Expression RESULT = null;
2547                int eeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2548                int eeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2549                Expression ee = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2550                int releft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2551                int reright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2552                Expression re = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2553                 RESULT = new EqualityExpr(Operators.NE, ee, re);
2554              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(10/*EqualityExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2555            }
2556          return CUP$XPathParser$result;
2557
2558          /*. . . . . . . . . . . . . . . . . . . .*/
2559          case 45: // EqualityExpr ::= EqualityExpr EQ RelationalExpr
2560            {
2561              Expression RESULT = null;
2562                int eeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2563                int eeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2564                Expression ee = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2565                int releft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2566                int reright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2567                Expression re = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2568                 RESULT = new EqualityExpr(Operators.EQ, ee, re);
2569              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(10/*EqualityExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2570            }
2571          return CUP$XPathParser$result;
2572
2573          /*. . . . . . . . . . . . . . . . . . . .*/
2574          case 44: // EqualityExpr ::= RelationalExpr
2575            {
2576              Expression RESULT = null;
2577                int releft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2578                int reright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2579                Expression re = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2580                 RESULT = re;
2581              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(10/*EqualityExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2582            }
2583          return CUP$XPathParser$result;
2584
2585          /*. . . . . . . . . . . . . . . . . . . .*/
2586          case 43: // AndExpr ::= AndExpr AND EqualityExpr
2587            {
2588              Expression RESULT = null;
2589                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2590                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2591                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2592                int eeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2593                int eeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2594                Expression ee = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2595                 RESULT = new LogicalExpr(LogicalExpr.AND, ae, ee);
2596              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(9/*AndExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2597            }
2598          return CUP$XPathParser$result;
2599
2600          /*. . . . . . . . . . . . . . . . . . . .*/
2601          case 42: // AndExpr ::= EqualityExpr
2602            {
2603              Expression RESULT = null;
2604                int eleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2605                int eright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2606                Expression e = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2607                 RESULT = e;
2608              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(9/*AndExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2609            }
2610          return CUP$XPathParser$result;
2611
2612          /*. . . . . . . . . . . . . . . . . . . .*/
2613          case 41: // OrExpr ::= OrExpr OR AndExpr
2614            {
2615              Expression RESULT = null;
2616                int oeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2617                int oeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2618                Expression oe = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2619                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2620                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2621                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2622                 RESULT = new LogicalExpr(LogicalExpr.OR, oe, ae);
2623              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(8/*OrExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2624            }
2625          return CUP$XPathParser$result;
2626
2627          /*. . . . . . . . . . . . . . . . . . . .*/
2628          case 40: // OrExpr ::= AndExpr
2629            {
2630              Expression RESULT = null;
2631                int aeleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2632                int aeright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2633                Expression ae = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2634                 RESULT = ae;
2635              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(8/*OrExpr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2636            }
2637          return CUP$XPathParser$result;
2638
2639          /*. . . . . . . . . . . . . . . . . . . .*/
2640          case 39: // Expr ::= OrExpr
2641            {
2642              Expression RESULT = null;
2643                int exleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2644                int exright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2645                Expression ex = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2646                 RESULT = ex;
2647              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(2/*Expr*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2648            }
2649          return CUP$XPathParser$result;
2650
2651          /*. . . . . . . . . . . . . . . . . . . .*/
2652          case 38: // Predicate ::= LBRACK Expr RBRACK
2653            {
2654              Expression RESULT = null;
2655                int eleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2656                int eright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2657                Expression e = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2658
2659                RESULT = new Predicate(e);
2660
2661              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(5/*Predicate*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2662            }
2663          return CUP$XPathParser$result;
2664
2665          /*. . . . . . . . . . . . . . . . . . . .*/
2666          case 37: // Predicates ::= Predicate Predicates
2667            {
2668              Vector RESULT = null;
2669                int pleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2670                int pright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2671                Expression p = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2672                int ppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2673                int ppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2674                Vector pp = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2675                 pp.insertElementAt(p, 0); RESULT = pp;
2676              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(35/*Predicates*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2677            }
2678          return CUP$XPathParser$result;
2679
2680          /*. . . . . . . . . . . . . . . . . . . .*/
2681          case 36: // Predicates ::= Predicate
2682            {
2683              Vector RESULT = null;
2684                int pleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2685                int pright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2686                Expression p = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2687
2688                Vector temp = new Vector();
2689                temp.addElement(p);
2690                RESULT = temp;
2691
2692              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(35/*Predicates*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2693            }
2694          return CUP$XPathParser$result;
2695
2696          /*. . . . . . . . . . . . . . . . . . . .*/
2697          case 35: // ChildOrAttributeAxisSpecifier ::= ATTRIBUTE DCOLON
2698            {
2699              Integer RESULT = null;
2700                 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
2701              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2702            }
2703          return CUP$XPathParser$result;
2704
2705          /*. . . . . . . . . . . . . . . . . . . .*/
2706          case 34: // ChildOrAttributeAxisSpecifier ::= CHILD DCOLON
2707            {
2708              Integer RESULT = null;
2709                 RESULT = Integer.valueOf(Axis.CHILD);
2710              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2711            }
2712          return CUP$XPathParser$result;
2713
2714          /*. . . . . . . . . . . . . . . . . . . .*/
2715          case 33: // ChildOrAttributeAxisSpecifier ::= ATSIGN
2716            {
2717              Integer RESULT = null;
2718                 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
2719              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2720            }
2721          return CUP$XPathParser$result;
2722
2723          /*. . . . . . . . . . . . . . . . . . . .*/
2724          case 32: // NameTestPattern ::= QName
2725            {
2726              Object RESULT = null;
2727                int qnleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2728                int qnright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2729                QName qn = (QName)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2730                 RESULT = qn;
2731              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(34/*NameTestPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2732            }
2733          return CUP$XPathParser$result;
2734
2735          /*. . . . . . . . . . . . . . . . . . . .*/
2736          case 31: // NameTestPattern ::= STAR
2737            {
2738              Object RESULT = null;
2739                 RESULT = null;
2740              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(34/*NameTestPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2741            }
2742          return CUP$XPathParser$result;
2743
2744          /*. . . . . . . . . . . . . . . . . . . .*/
2745          case 30: // NodeTestPattern ::= PI
2746            {
2747              Object RESULT = null;
2748                 RESULT = Integer.valueOf(NodeTest.PI);
2749              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(33/*NodeTestPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2750            }
2751          return CUP$XPathParser$result;
2752
2753          /*. . . . . . . . . . . . . . . . . . . .*/
2754          case 29: // NodeTestPattern ::= COMMENT
2755            {
2756              Object RESULT = null;
2757                 RESULT = Integer.valueOf(NodeTest.COMMENT);
2758              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(33/*NodeTestPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2759            }
2760          return CUP$XPathParser$result;
2761
2762          /*. . . . . . . . . . . . . . . . . . . .*/
2763          case 28: // NodeTestPattern ::= TEXT
2764            {
2765              Object RESULT = null;
2766                 RESULT = Integer.valueOf(NodeTest.TEXT);
2767              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(33/*NodeTestPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2768            }
2769          return CUP$XPathParser$result;
2770
2771          /*. . . . . . . . . . . . . . . . . . . .*/
2772          case 27: // NodeTestPattern ::= NODE
2773            {
2774              Object RESULT = null;
2775                 RESULT = Integer.valueOf(NodeTest.ANODE);
2776              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(33/*NodeTestPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2777            }
2778          return CUP$XPathParser$result;
2779
2780          /*. . . . . . . . . . . . . . . . . . . .*/
2781          case 26: // NodeTestPattern ::= NameTestPattern
2782            {
2783              Object RESULT = null;
2784                int ntleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2785                int ntright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2786                Object nt = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2787                 RESULT = nt;
2788              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(33/*NodeTestPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2789            }
2790          return CUP$XPathParser$result;
2791
2792          /*. . . . . . . . . . . . . . . . . . . .*/
2793          case 25: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern Predicates
2794            {
2795              StepPattern RESULT = null;
2796                int axisleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2797                int axisright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2798                Integer axis = (Integer)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2799                int pipleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2800                int pipright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2801                StepPattern pip = (StepPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2802                int ppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2803                int ppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2804                Vector pp = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2805
2806               // TODO: report error if axis is attribute
2807               RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2808
2809              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(32/*StepPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2810            }
2811          return CUP$XPathParser$result;
2812
2813          /*. . . . . . . . . . . . . . . . . . . .*/
2814          case 24: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern
2815            {
2816              StepPattern RESULT = null;
2817                int axisleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2818                int axisright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2819                Integer axis = (Integer)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2820                int pipleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2821                int pipright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2822                StepPattern pip = (StepPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2823
2824               RESULT = pip;    // TODO: report error if axis is attribute
2825
2826              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(32/*StepPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2827            }
2828          return CUP$XPathParser$result;
2829
2830          /*. . . . . . . . . . . . . . . . . . . .*/
2831          case 23: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern Predicates
2832            {
2833              StepPattern RESULT = null;
2834                int axisleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2835                int axisright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2836                Integer axis = (Integer)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2837                int ntleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2838                int ntright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2839                Object nt = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2840                int ppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2841                int ppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2842                Vector pp = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2843
2844               RESULT = parser.createStepPattern(axis.intValue(), nt, pp);
2845
2846              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(32/*StepPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2847            }
2848          return CUP$XPathParser$result;
2849
2850          /*. . . . . . . . . . . . . . . . . . . .*/
2851          case 22: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern
2852            {
2853              StepPattern RESULT = null;
2854                int axisleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2855                int axisright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2856                Integer axis = (Integer)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2857                int ntleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2858                int ntright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2859                Object nt = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2860
2861               RESULT = parser.createStepPattern(axis.intValue(), nt, null);
2862
2863              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(32/*StepPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2864            }
2865          return CUP$XPathParser$result;
2866
2867          /*. . . . . . . . . . . . . . . . . . . .*/
2868          case 21: // StepPattern ::= ProcessingInstructionPattern Predicates
2869            {
2870              StepPattern RESULT = null;
2871                int pipleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2872                int pipright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2873                StepPattern pip = (StepPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2874                int ppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2875                int ppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2876                Vector pp = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2877                 RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2878              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(32/*StepPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2879            }
2880          return CUP$XPathParser$result;
2881
2882          /*. . . . . . . . . . . . . . . . . . . .*/
2883          case 20: // StepPattern ::= ProcessingInstructionPattern
2884            {
2885              StepPattern RESULT = null;
2886                int pipleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2887                int pipright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2888                StepPattern pip = (StepPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2889                 RESULT = pip;
2890              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(32/*StepPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2891            }
2892          return CUP$XPathParser$result;
2893
2894          /*. . . . . . . . . . . . . . . . . . . .*/
2895          case 19: // StepPattern ::= NodeTestPattern Predicates
2896            {
2897              StepPattern RESULT = null;
2898                int ntleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2899                int ntright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2900                Object nt = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2901                int ppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2902                int ppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2903                Vector pp = (Vector)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2904
2905                RESULT = parser.createStepPattern(Axis.CHILD, nt, pp);
2906
2907              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(32/*StepPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2908            }
2909          return CUP$XPathParser$result;
2910
2911          /*. . . . . . . . . . . . . . . . . . . .*/
2912          case 18: // StepPattern ::= NodeTestPattern
2913            {
2914              StepPattern RESULT = null;
2915                int ntleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2916                int ntright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2917                Object nt = (Object)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2918
2919                RESULT = parser.createStepPattern(Axis.CHILD, nt, null);
2920
2921              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(32/*StepPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2922            }
2923          return CUP$XPathParser$result;
2924
2925          /*. . . . . . . . . . . . . . . . . . . .*/
2926          case 17: // RelativePathPattern ::= StepPattern DSLASH RelativePathPattern
2927            {
2928              RelativePathPattern RESULT = null;
2929                int spleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2930                int spright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2931                StepPattern sp = (StepPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2932                int rppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2933                int rppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2934                RelativePathPattern rpp = (RelativePathPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2935                 RESULT = new AncestorPattern(sp, rpp);
2936              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(31/*RelativePathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2937            }
2938          return CUP$XPathParser$result;
2939
2940          /*. . . . . . . . . . . . . . . . . . . .*/
2941          case 16: // RelativePathPattern ::= StepPattern SLASH RelativePathPattern
2942            {
2943              RelativePathPattern RESULT = null;
2944                int spleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2945                int spright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2946                StepPattern sp = (StepPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2947                int rppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2948                int rppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2949                RelativePathPattern rpp = (RelativePathPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2950                 RESULT = new ParentPattern(sp, rpp);
2951              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(31/*RelativePathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2952            }
2953          return CUP$XPathParser$result;
2954
2955          /*. . . . . . . . . . . . . . . . . . . .*/
2956          case 15: // RelativePathPattern ::= StepPattern
2957            {
2958              RelativePathPattern RESULT = null;
2959                int spleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2960                int spright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2961                StepPattern sp = (StepPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2962                 RESULT = sp;
2963              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(31/*RelativePathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2964            }
2965          return CUP$XPathParser$result;
2966
2967          /*. . . . . . . . . . . . . . . . . . . .*/
2968          case 14: // ProcessingInstructionPattern ::= PIPARAM LPAREN Literal RPAREN
2969            {
2970              StepPattern RESULT = null;
2971                int lleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2972                int lright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2973                String l = (String)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2974                 RESULT = new ProcessingInstructionPattern(l);
2975              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(30/*ProcessingInstructionPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2976            }
2977          return CUP$XPathParser$result;
2978
2979          /*. . . . . . . . . . . . . . . . . . . .*/
2980          case 13: // IdKeyPattern ::= KEY LPAREN Literal COMMA Literal RPAREN
2981            {
2982              IdKeyPattern RESULT = null;
2983                int l1left = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left;
2984                int l1right = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).right;
2985                String l1 = (String)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).value;
2986                int l2left = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2987                int l2right = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2988                String l2 = (String)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2989                 RESULT = new KeyPattern(l1, l2);
2990              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(27/*IdKeyPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-5)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2991            }
2992          return CUP$XPathParser$result;
2993
2994          /*. . . . . . . . . . . . . . . . . . . .*/
2995          case 12: // IdKeyPattern ::= ID LPAREN Literal RPAREN
2996            {
2997              IdKeyPattern RESULT = null;
2998                int lleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2999                int lright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
3000                String l = (String)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
3001                 RESULT = new IdPattern(l);
3002               parser.setHasIdCall(true);
3003
3004              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(27/*IdKeyPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3005            }
3006          return CUP$XPathParser$result;
3007
3008          /*. . . . . . . . . . . . . . . . . . . .*/
3009          case 11: // LocationPathPattern ::= RelativePathPattern
3010            {
3011              Pattern RESULT = null;
3012                int rppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3013                int rppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3014                RelativePathPattern rpp = (RelativePathPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3015                 RESULT = rpp;
3016              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(29/*LocationPathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3017            }
3018          return CUP$XPathParser$result;
3019
3020          /*. . . . . . . . . . . . . . . . . . . .*/
3021          case 10: // LocationPathPattern ::= DSLASH RelativePathPattern
3022            {
3023              Pattern RESULT = null;
3024                int rppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3025                int rppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3026                RelativePathPattern rpp = (RelativePathPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3027                 RESULT = new AncestorPattern(rpp);
3028              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(29/*LocationPathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3029            }
3030          return CUP$XPathParser$result;
3031
3032          /*. . . . . . . . . . . . . . . . . . . .*/
3033          case 9: // LocationPathPattern ::= IdKeyPattern DSLASH RelativePathPattern
3034            {
3035              Pattern RESULT = null;
3036                int ikpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
3037                int ikpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
3038                IdKeyPattern ikp = (IdKeyPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
3039                int rppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3040                int rppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3041                RelativePathPattern rpp = (RelativePathPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3042                 RESULT = new AncestorPattern(ikp, rpp);
3043              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(29/*LocationPathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3044            }
3045          return CUP$XPathParser$result;
3046
3047          /*. . . . . . . . . . . . . . . . . . . .*/
3048          case 8: // LocationPathPattern ::= IdKeyPattern SLASH RelativePathPattern
3049            {
3050              Pattern RESULT = null;
3051                int ikpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
3052                int ikpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
3053                IdKeyPattern ikp = (IdKeyPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
3054                int rppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3055                int rppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3056                RelativePathPattern rpp = (RelativePathPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3057                 RESULT = new ParentPattern(ikp, rpp);
3058              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(29/*LocationPathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3059            }
3060          return CUP$XPathParser$result;
3061
3062          /*. . . . . . . . . . . . . . . . . . . .*/
3063          case 7: // LocationPathPattern ::= IdKeyPattern
3064            {
3065              Pattern RESULT = null;
3066                int ikpleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3067                int ikpright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3068                IdKeyPattern ikp = (IdKeyPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3069                 RESULT = ikp;
3070              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(29/*LocationPathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3071            }
3072          return CUP$XPathParser$result;
3073
3074          /*. . . . . . . . . . . . . . . . . . . .*/
3075          case 6: // LocationPathPattern ::= SLASH RelativePathPattern
3076            {
3077              Pattern RESULT = null;
3078                int rppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3079                int rppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3080                RelativePathPattern rpp = (RelativePathPattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3081                 RESULT = new AbsolutePathPattern(rpp);
3082              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(29/*LocationPathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3083            }
3084          return CUP$XPathParser$result;
3085
3086          /*. . . . . . . . . . . . . . . . . . . .*/
3087          case 5: // LocationPathPattern ::= SLASH
3088            {
3089              Pattern RESULT = null;
3090                 RESULT = new AbsolutePathPattern(null);
3091              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(29/*LocationPathPattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3092            }
3093          return CUP$XPathParser$result;
3094
3095          /*. . . . . . . . . . . . . . . . . . . .*/
3096          case 4: // Pattern ::= LocationPathPattern VBAR Pattern
3097            {
3098              Pattern RESULT = null;
3099                int lppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
3100                int lppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
3101                Pattern lpp = (Pattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
3102                int pleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3103                int pright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3104                Pattern p = (Pattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3105                 RESULT = new AlternativePattern(lpp, p);
3106              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(28/*Pattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3107            }
3108          return CUP$XPathParser$result;
3109
3110          /*. . . . . . . . . . . . . . . . . . . .*/
3111          case 3: // Pattern ::= LocationPathPattern
3112            {
3113              Pattern RESULT = null;
3114                int lppleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3115                int lppright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3116                Pattern lpp = (Pattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3117                 RESULT = lpp;
3118              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(28/*Pattern*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3119            }
3120          return CUP$XPathParser$result;
3121
3122          /*. . . . . . . . . . . . . . . . . . . .*/
3123          case 2: // TopLevel ::= EXPRESSION Expr
3124            {
3125              SyntaxTreeNode RESULT = null;
3126                int exprleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3127                int exprright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3128                Expression expr = (Expression)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3129                 RESULT = expr;
3130              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(1/*TopLevel*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3131            }
3132          return CUP$XPathParser$result;
3133
3134          /*. . . . . . . . . . . . . . . . . . . .*/
3135          case 1: // TopLevel ::= PATTERN Pattern
3136            {
3137              SyntaxTreeNode RESULT = null;
3138                int patternleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3139                int patternright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3140                Pattern pattern = (Pattern)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3141                 RESULT = pattern;
3142              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(1/*TopLevel*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3143            }
3144          return CUP$XPathParser$result;
3145
3146          /*. . . . . . . . . . . . . . . . . . . .*/
3147          case 0: // $START ::= TopLevel EOF
3148            {
3149              Object RESULT = null;
3150                int start_valleft = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
3151                int start_valright = ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
3152                SyntaxTreeNode start_val = (SyntaxTreeNode)((com.sun.java_cup.internal.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
3153                RESULT = start_val;
3154              CUP$XPathParser$result = new com.sun.java_cup.internal.runtime.Symbol(0/*$START*/, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((com.sun.java_cup.internal.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3155            }
3156          /* ACCEPT */
3157          CUP$XPathParser$parser.done_parsing();
3158          return CUP$XPathParser$result;
3159
3160          /* . . . . . .*/
3161          default:
3162            throw new Exception(
3163               "Invalid action number found in internal parse table");
3164
3165        }
3166    }
3167}
3168