KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > xalan > xsltc > compiler > XPathParser


1
2 //----------------------------------------------------
3
// The following code was generated by CUP v0.10k
4
// Fri Feb 27 09:33:43 EST 2004
5
//----------------------------------------------------
6

7 package org.apache.xalan.xsltc.compiler;
8
9 import java.util.Stack JavaDoc;
10 import java.util.Vector JavaDoc;
11 import java.io.StringReader JavaDoc;
12 import java_cup.runtime.*;
13 import org.apache.xml.dtm.DTM;
14 import org.apache.xalan.xsltc.DOM;
15 import org.apache.xalan.xsltc.dom.Axis;
16 import org.apache.xalan.xsltc.runtime.Operators;
17 import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
18
19 /** CUP v0.10k generated parser.
20   * @version Fri Feb 27 09:33:43 EST 2004
21   */

22 public class XPathParser extends java_cup.runtime.lr_parser {
23
24   /** Default constructor. */
25   public XPathParser() {super();}
26
27   /** Constructor which sets the default scanner. */
28   public XPathParser(java_cup.runtime.Scanner s) {super(s);}
29
30   /** Production table. */
31   protected static final short _production_table[][] =
32     unpackFromStrings(new String JavaDoc[] {
33     "\000\215\000\002\002\004\000\002\003\004\000\002\003" +
34     "\004\000\002\036\003\000\002\036\005\000\002\037\003" +
35     "\000\002\037\004\000\002\037\003\000\002\037\005\000" +
36     "\002\037\005\000\002\037\004\000\002\037\003\000\002" +
37     "\035\006\000\002\035\010\000\002\040\006\000\002\041" +
38     "\003\000\002\041\005\000\002\041\005\000\002\042\003" +
39     "\000\002\042\004\000\002\042\003\000\002\042\004\000" +
40     "\002\042\004\000\002\042\005\000\002\042\004\000\002" +
41     "\042\005\000\002\043\003\000\002\043\003\000\002\043" +
42     "\003\000\002\043\003\000\002\043\003\000\002\044\003" +
43     "\000\002\044\003\000\002\054\003\000\002\054\004\000" +
44     "\002\054\004\000\002\045\003\000\002\045\004\000\002" +
45     "\007\005\000\002\004\003\000\002\012\003\000\002\012" +
46     "\005\000\002\013\003\000\002\013\005\000\002\014\003" +
47     "\000\002\014\005\000\002\014\005\000\002\015\003\000" +
48     "\002\015\005\000\002\015\005\000\002\015\005\000\002" +
49     "\015\005\000\002\016\003\000\002\016\005\000\002\016" +
50     "\005\000\002\017\003\000\002\017\005\000\002\017\005" +
51     "\000\002\017\005\000\002\020\003\000\002\020\004\000" +
52     "\002\024\003\000\002\024\005\000\002\025\003\000\002" +
53     "\025\003\000\002\025\005\000\002\025\005\000\002\006" +
54     "\003\000\002\006\003\000\002\027\003\000\002\027\005" +
55     "\000\002\027\003\000\002\031\003\000\002\031\004\000" +
56     "\002\031\003\000\002\030\005\000\002\032\004\000\002" +
57     "\011\003\000\002\011\004\000\002\011\005\000\002\011" +
58     "\004\000\002\011\003\000\002\053\004\000\002\053\003" +
59     "\000\002\052\003\000\002\052\003\000\002\052\003\000" +
60     "\002\052\003\000\002\052\003\000\002\052\003\000\002" +
61     "\052\003\000\002\052\003\000\002\052\003\000\002\052" +
62     "\003\000\002\052\003\000\002\052\003\000\002\052\003" +
63     "\000\002\026\003\000\002\026\003\000\002\010\003\000" +
64     "\002\010\004\000\002\023\003\000\002\023\005\000\002" +
65     "\023\003\000\002\023\003\000\002\023\003\000\002\023" +
66     "\003\000\002\021\004\000\002\022\005\000\002\022\006" +
67     "\000\002\046\003\000\002\046\005\000\002\050\003\000" +
68     "\002\051\003\000\002\005\003\000\002\033\003\000\002" +
69     "\033\003\000\002\033\003\000\002\033\003\000\002\033" +
70     "\006\000\002\033\003\000\002\034\003\000\002\034\003" +
71     "\000\002\047\003\000\002\047\003\000\002\047\003\000" +
72     "\002\047\003\000\002\047\003\000\002\047\003\000\002" +
73     "\047\003\000\002\047\003\000\002\047\003\000\002\047" +
74     "\003\000\002\047\003\000\002\047\003\000\002\047\003" +
75     "\000\002\047\003\000\002\047\003\000\002\047\003\000" +
76     "\002\047\003\000\002\047\003" });
77
78   /** Access to production table. */
79   public short[][] production_table() {return _production_table;}
80
81   /** Parse-action table. */
82   protected static final short[][] _action_table =
83     unpackFromStrings(new String JavaDoc[] {
84     "\000\307\000\006\066\006\067\005\001\002\000\004\002" +
85     "\311\001\002\000\110\004\061\005\111\011\071\013\103" +
86     "\015\134\016\066\017\106\021\070\031\075\032\031\033" +
87     "\040\034\057\035\034\036\113\037\141\040\142\041\145" +
88     "\044\063\045\062\046\065\047\115\050\123\051\136\052" +
89     "\077\053\143\054\131\055\125\056\116\057\104\060\140" +
90     "\061\067\062\060\063\127\064\132\065\072\001\002\000" +
91     "\070\004\013\013\027\016\020\021\023\032\031\033\040" +
92     "\035\034\036\033\037\046\040\047\041\051\044\015\045" +
93     "\014\046\016\047\036\050\037\051\044\052\025\053\050" +
94     "\054\043\055\041\056\035\057\030\060\045\061\021\062" +
95     "\012\063\042\001\002\000\006\002\ufffe\010\306\001\002" +
96     "\000\004\002\000\001\002\000\014\002\uffe7\004\uffe7\006" +
97     "\uffe7\010\uffe7\021\uffe7\001\002\000\054\002\uff7a\004\uff7a" +
98     "\006\uff7a\007\uff7a\010\uff7a\012\uff7a\013\uff7a\014\uff7a\021" +
99     "\uff7a\022\uff7a\023\uff7a\024\uff7a\025\uff7a\026\uff7a\027\uff7a" +
100     "\030\uff7a\031\uff7a\032\uff7a\033\uff7a\042\uff7a\043\uff7a\001" +
101     "\002\000\070\002\ufffc\010\ufffc\013\027\016\020\032\031" +
102     "\033\040\035\034\036\113\037\141\040\047\041\051\044" +
103     "\015\045\014\046\016\047\036\050\037\051\044\052\025" +
104     "\053\050\054\043\055\041\056\035\057\030\060\045\061" +
105     "\021\062\012\063\042\001\002\000\014\002\uffe3\004\uffe3" +
106     "\006\uffe3\010\uffe3\021\uffe3\001\002\000\014\002\uffe4\004" +
107     "\uffe4\006\uffe4\010\uffe4\021\uffe4\001\002\000\004\011\302" +
108     "\001\002\000\012\002\ufffa\004\277\010\ufffa\021\276\001" +
109     "\002\000\062\013\uffe0\032\uffe0\033\uffe0\035\uffe0\036\uffe0" +
110     "\037\uffe0\040\uffe0\041\uffe0\044\uffe0\045\uffe0\046\uffe0\047" +
111     "\uffe0\050\uffe0\051\uffe0\052\uffe0\053\uffe0\054\uffe0\055\uffe0" +
112     "\056\uffe0\057\uffe0\060\uffe0\061\uffe0\062\uffe0\063\uffe0\001" +
113     "\002\000\054\002\uff7b\004\uff7b\006\uff7b\007\uff7b\010\uff7b" +
114     "\012\uff7b\013\uff7b\014\uff7b\021\uff7b\022\uff7b\023\uff7b\024" +
115     "\uff7b\025\uff7b\026\uff7b\027\uff7b\030\uff7b\031\uff7b\032\uff7b" +
116     "\033\uff7b\042\uff7b\043\uff7b\001\002\000\062\013\027\032" +
117     "\031\033\040\035\034\036\113\037\141\040\047\041\051" +
118     "\044\015\045\014\046\016\047\036\050\037\051\044\052" +
119     "\170\053\166\054\043\055\041\056\035\057\030\060\045" +
120     "\061\021\062\012\063\042\001\002\000\064\013\027\016" +
121     "\020\032\031\033\040\035\034\036\113\037\141\040\047" +
122     "\041\051\044\015\045\014\046\016\047\036\050\037\051" +
123     "\044\052\025\053\050\054\043\055\041\056\035\057\030" +
124     "\060\045\061\021\062\012\063\042\001\002\000\012\002" +
125     "\ufff2\004\266\010\ufff2\021\265\001\002\000\016\002\uff7f" +
126     "\004\uff7f\006\uff7f\010\uff7f\020\264\021\uff7f\001\002\000" +
127     "\006\002\ufff6\010\ufff6\001\002\000\014\002\uffe2\004\uffe2" +
128     "\006\uffe2\010\uffe2\021\uffe2\001\002\000\054\002\uff7d\004" +
129     "\uff7d\006\uff7d\007\uff7d\010\uff7d\012\uff7d\013\uff7d\014\uff7d" +
130     "\021\uff7d\022\uff7d\023\uff7d\024\uff7d\025\uff7d\026\uff7d\027" +
131     "\uff7d\030\uff7d\031\uff7d\032\uff7d\033\uff7d\042\uff7d\043\uff7d" +
132     "\001\002\000\056\002\uff85\004\uff85\006\uff85\007\uff85\010" +
133     "\uff85\011\uff85\012\uff85\013\uff85\014\uff85\021\uff85\022\uff85" +
134     "\023\uff85\024\uff85\025\uff85\026\uff85\027\uff85\030\uff85\031" +
135     "\uff85\032\uff85\033\uff85\042\uff85\043\uff85\001\002\000\014" +
136     "\002\uffed\004\uffed\006\055\010\uffed\021\uffed\001\002\000" +
137     "\016\002\uff75\004\uff75\006\uff75\010\uff75\011\260\021\uff75" +
138     "\001\002\000\056\002\uff86\004\uff86\006\uff86\007\uff86\010" +
139     "\uff86\011\uff86\012\uff86\013\uff86\014\uff86\021\uff86\022\uff86" +
140     "\023\uff86\024\uff86\025\uff86\026\uff86\027\uff86\030\uff86\031" +
141     "\uff86\032\uff86\033\uff86\042\uff86\043\uff86\001\002\000\054" +
142     "\002\uff7e\004\uff7e\006\uff7e\007\uff7e\010\uff7e\012\uff7e\013" +
143     "\uff7e\014\uff7e\021\uff7e\022\uff7e\023\uff7e\024\uff7e\025\uff7e" +
144     "\026\uff7e\027\uff7e\030\uff7e\031\uff7e\032\uff7e\033\uff7e\042" +
145     "\uff7e\043\uff7e\001\002\000\054\002\uff77\004\uff77\006\uff77" +
146     "\007\uff77\010\uff77\012\uff77\013\uff77\014\uff77\021\uff77\022" +
147     "\uff77\023\uff77\024\uff77\025\uff77\026\uff77\027\uff77\030\uff77" +
148     "\031\uff77\032\uff77\033\uff77\042\uff77\043\uff77\001\002\000" +
149     "\054\002\uff76\004\uff76\006\uff76\007\uff76\010\uff76\012\uff76" +
150     "\013\uff76\014\uff76\021\uff76\022\uff76\023\uff76\024\uff76\025" +
151     "\uff76\026\uff76\027\uff76\030\uff76\031\uff76\032\uff76\033\uff76" +
152     "\042\uff76\043\uff76\001\002\000\056\002\uff84\004\uff84\006" +
153     "\uff84\007\uff84\010\uff84\011\uff84\012\uff84\013\uff84\014\uff84" +
154     "\021\uff84\022\uff84\023\uff84\024\uff84\025\uff84\026\uff84\027" +
155     "\uff84\030\uff84\031\uff84\032\uff84\033\uff84\042\uff84\043\uff84" +
156     "\001\002\000\054\002\uff81\004\uff81\006\uff81\007\uff81\010" +
157     "\uff81\012\uff81\013\uff81\014\uff81\021\uff81\022\uff81\023\uff81" +
158     "\024\uff81\025\uff81\026\uff81\027\uff81\030\uff81\031\uff81\032" +
159     "\uff81\033\uff81\042\uff81\043\uff81\001\002\000\054\002\uff78" +
160     "\004\uff78\006\uff78\007\uff78\010\uff78\012\uff78\013\uff78\014" +
161     "\uff78\021\uff78\022\uff78\023\uff78\024\uff78\025\uff78\026\uff78" +
162     "\027\uff78\030\uff78\031\uff78\032\uff78\033\uff78\042\uff78\043" +
163     "\uff78\001\002\000\054\002\uff82\004\uff82\006\uff82\007\uff82" +
164     "\010\uff82\012\uff82\013\uff82\014\uff82\021\uff82\022\uff82\023" +
165     "\uff82\024\uff82\025\uff82\026\uff82\027\uff82\030\uff82\031\uff82" +
166     "\032\uff82\033\uff82\042\uff82\043\uff82\001\002\000\054\002" +
167     "\uff79\004\uff79\006\uff79\007\uff79\010\uff79\012\uff79\013\uff79" +
168     "\014\uff79\021\uff79\022\uff79\023\uff79\024\uff79\025\uff79\026" +
169     "\uff79\027\uff79\030\uff79\031\uff79\032\uff79\033\uff79\042\uff79" +
170     "\043\uff79\001\002\000\054\002\uff7c\004\uff7c\006\uff7c\007" +
171     "\uff7c\010\uff7c\012\uff7c\013\uff7c\014\uff7c\021\uff7c\022\uff7c" +
172     "\023\uff7c\024\uff7c\025\uff7c\026\uff7c\027\uff7c\030\uff7c\031" +
173     "\uff7c\032\uff7c\033\uff7c\042\uff7c\043\uff7c\001\002\000\016" +
174     "\002\uff83\004\uff83\006\uff83\010\uff83\011\253\021\uff83\001" +
175     "\002\000\014\002\uffe5\004\uffe5\006\uffe5\010\uffe5\021\uffe5" +
176     "\001\002\000\016\002\uff80\004\uff80\006\uff80\010\uff80\020" +
177     "\252\021\uff80\001\002\000\014\002\uffe6\004\uffe6\006\uffe6" +
178     "\010\uffe6\021\uffe6\001\002\000\014\002\uffe1\004\uffe1\006" +
179     "\uffe1\010\uffe1\021\uffe1\001\002\000\014\002\uffef\004\uffef" +
180     "\006\055\010\uffef\021\uffef\001\002\000\054\002\uffdd\004" +
181     "\uffdd\006\055\007\uffdd\010\uffdd\012\uffdd\013\uffdd\014\uffdd" +
182     "\021\uffdd\022\uffdd\023\uffdd\024\uffdd\025\uffdd\026\uffdd\027" +
183     "\uffdd\030\uffdd\031\uffdd\032\uffdd\033\uffdd\042\uffdd\043\uffdd" +
184     "\001\002\000\110\004\061\005\111\011\071\013\103\015" +
185     "\134\016\066\017\106\021\070\031\075\032\031\033\040" +
186     "\034\057\035\034\036\113\037\141\040\142\041\145\044" +
187     "\063\045\062\046\065\047\115\050\123\051\136\052\077" +
188     "\053\143\054\131\055\125\056\116\057\104\060\140\061" +
189     "\067\062\060\063\127\064\132\065\072\001\002\000\012" +
190     "\002\uffee\004\uffee\010\uffee\021\uffee\001\002\000\054\002" +
191     "\uff9a\004\uff9a\006\uff9a\007\uff9a\010\uff9a\012\uff9a\013\uff9a" +
192     "\014\uff9a\021\uff9a\022\uff9a\023\uff9a\024\uff9a\025\uff9a\026" +
193     "\uff9a\027\uff9a\030\uff9a\031\uff9a\032\uff9a\033\uff9a\042\uff9a" +
194     "\043\uff9a\001\002\000\060\002\uff7a\004\uff7a\006\uff7a\007" +
195     "\uff7a\010\uff7a\011\uff7a\012\uff7a\013\uff7a\014\uff7a\020\uffa5" +
196     "\021\uff7a\022\uff7a\023\uff7a\024\uff7a\025\uff7a\026\uff7a\027" +
197     "\uff7a\030\uff7a\031\uff7a\032\uff7a\033\uff7a\042\uff7a\043\uff7a" +
198     "\001\002\000\126\002\uffb9\005\111\007\uffb9\010\uffb9\012" +
199     "\uffb9\013\103\014\uffb9\016\066\017\106\022\uffb9\023\uffb9" +
200     "\024\uffb9\025\uffb9\026\uffb9\027\uffb9\030\uffb9\031\uffb9\032" +
201     "\031\033\040\035\034\036\113\037\141\040\142\041\145" +
202     "\042\uffb9\043\uffb9\044\063\045\062\046\065\047\115\050" +
203     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
204     "\057\104\060\140\061\067\062\060\063\127\001\002\000" +
205     "\054\002\uff89\004\uff89\006\uff89\007\uff89\010\uff89\012\uff89" +
206     "\013\uff89\014\uff89\021\uff89\022\uff89\023\uff89\024\uff89\025" +
207     "\uff89\026\uff89\027\uff89\030\uff89\031\uff89\032\uff89\033\uff89" +
208     "\042\uff89\043\uff89\001\002\000\054\002\uff8b\004\uff8b\006" +
209     "\uff8b\007\uff8b\010\uff8b\012\uff8b\013\uff8b\014\uff8b\021\uff8b" +
210     "\022\uff8b\023\uff8b\024\uff8b\025\uff8b\026\uff8b\027\uff8b\030" +
211     "\uff8b\031\uff8b\032\uff8b\033\uff8b\042\uff8b\043\uff8b\001\002" +
212     "\000\032\002\uffd5\007\uffd5\012\uffd5\014\uffd5\022\uffd5\023" +
213     "\uffd5\024\221\025\222\026\223\027\224\042\uffd5\043\uffd5" +
214     "\001\002\000\004\011\245\001\002\000\062\013\uffae\032" +
215     "\uffae\033\uffae\035\uffae\036\uffae\037\uffae\040\uffae\041\uffae" +
216     "\044\uffae\045\uffae\046\uffae\047\uffae\050\uffae\051\uffae\052" +
217     "\uffae\053\uffae\054\uffae\055\uffae\056\uffae\057\uffae\060\uffae" +
218     "\061\uffae\062\uffae\063\uffae\001\002\000\060\002\uff7b\004" +
219     "\uff7b\006\uff7b\007\uff7b\010\uff7b\011\uff7b\012\uff7b\013\uff7b" +
220     "\014\uff7b\020\uffa6\021\uff7b\022\uff7b\023\uff7b\024\uff7b\025" +
221     "\uff7b\026\uff7b\027\uff7b\030\uff7b\031\uff7b\032\uff7b\033\uff7b" +
222     "\042\uff7b\043\uff7b\001\002\000\070\005\111\013\103\016" +
223     "\066\017\106\032\031\033\040\035\034\036\113\037\141" +
224     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
225     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
226     "\057\104\060\140\061\067\062\060\063\127\001\002\000" +
227     "\110\004\061\005\111\011\071\013\103\015\134\016\066" +
228     "\017\106\021\070\031\075\032\031\033\040\034\057\035" +
229     "\034\036\113\037\141\040\142\041\145\044\063\045\062" +
230     "\046\065\047\115\050\123\051\136\052\077\053\143\054" +
231     "\131\055\125\056\116\057\104\060\140\061\067\062\060" +
232     "\063\127\064\132\065\072\001\002\000\054\002\uff99\004" +
233     "\uff99\006\uff99\007\uff99\010\uff99\012\uff99\013\uff99\014\uff99" +
234     "\021\uff99\022\uff99\023\uff99\024\uff99\025\uff99\026\uff99\027" +
235     "\uff99\030\uff99\031\uff99\032\uff99\033\uff99\042\uff99\043\uff99" +
236     "\001\002\000\046\002\uffb7\007\uffb7\010\uffb7\012\uffb7\013" +
237     "\uffb7\014\uffb7\022\uffb7\023\uffb7\024\uffb7\025\uffb7\026\uffb7" +
238     "\027\uffb7\030\uffb7\031\uffb7\032\uffb7\033\uffb7\042\uffb7\043" +
239     "\uffb7\001\002\000\054\002\uff97\004\uff97\006\uff97\007\uff97" +
240     "\010\uff97\012\uff97\013\uff97\014\uff97\021\uff97\022\uff97\023" +
241     "\uff97\024\uff97\025\uff97\026\uff97\027\uff97\030\uff97\031\uff97" +
242     "\032\uff97\033\uff97\042\uff97\043\uff97\001\002\000\110\004" +
243     "\061\005\111\011\071\013\103\015\134\016\066\017\106" +
244     "\021\070\031\075\032\031\033\040\034\057\035\034\036" +
245     "\113\037\141\040\142\041\145\044\063\045\062\046\065" +
246     "\047\115\050\123\051\136\052\077\053\143\054\131\055" +
247     "\125\056\116\057\104\060\140\061\067\062\060\063\127" +
248     "\064\132\065\072\001\002\000\016\002\uffd9\007\uffd9\012" +
249     "\uffd9\014\uffd9\042\uffd9\043\234\001\002\000\060\002\uff7f" +
250     "\004\uff7f\006\uff7f\007\uff7f\010\uff7f\011\uff7f\012\uff7f\013" +
251     "\uff7f\014\uff7f\020\uffaa\021\uff7f\022\uff7f\023\uff7f\024\uff7f" +
252     "\025\uff7f\026\uff7f\027\uff7f\030\uff7f\031\uff7f\032\uff7f\033" +
253     "\uff7f\042\uff7f\043\uff7f\001\002\000\062\013\103\032\031" +
254     "\033\040\035\034\036\113\037\141\040\142\041\145\044" +
255     "\063\045\062\046\065\047\036\050\037\051\044\052\170" +
256     "\053\166\054\043\055\041\056\035\057\030\060\045\061" +
257     "\021\062\012\063\042\001\002\000\004\020\236\001\002" +
258     "\000\014\002\uffda\007\uffda\012\uffda\014\uffda\042\232\001" +
259     "\002\000\054\002\uff88\004\uff88\006\uff88\007\uff88\010\uff88" +
260     "\012\uff88\013\uff88\014\uff88\021\uff88\022\uff88\023\uff88\024" +
261     "\uff88\025\uff88\026\uff88\027\uff88\030\uff88\031\uff88\032\uff88" +
262     "\033\uff88\042\uff88\043\uff88\001\002\000\060\002\uff7d\004" +
263     "\uff7d\006\uff7d\007\uff7d\010\uff7d\011\uff7d\012\uff7d\013\uff7d" +
264     "\014\uff7d\020\uffa8\021\uff7d\022\uff7d\023\uff7d\024\uff7d\025" +
265     "\uff7d\026\uff7d\027\uff7d\030\uff7d\031\uff7d\032\uff7d\033\uff7d" +
266     "\042\uff7d\043\uff7d\001\002\000\022\002\uffd7\007\uffd7\012" +
267     "\uffd7\014\uffd7\022\216\023\217\042\uffd7\043\uffd7\001\002" +
268     "\000\052\002\uff9f\004\uff9f\007\uff9f\010\uff9f\012\uff9f\013" +
269     "\uff9f\014\uff9f\021\uff9f\022\uff9f\023\uff9f\024\uff9f\025\uff9f" +
270     "\026\uff9f\027\uff9f\030\uff9f\031\uff9f\032\uff9f\033\uff9f\042" +
271     "\uff9f\043\uff9f\001\002\000\054\002\uffb4\004\uffb4\006\055" +
272     "\007\uffb4\010\uffb4\012\uffb4\013\uffb4\014\uffb4\021\uffb4\022" +
273     "\uffb4\023\uffb4\024\uffb4\025\uffb4\026\uffb4\027\uffb4\030\uffb4" +
274     "\031\uffb4\032\uffb4\033\uffb4\042\uffb4\043\uffb4\001\002\000" +
275     "\046\002\uffbd\007\uffbd\010\uffbd\012\uffbd\013\uffbd\014\uffbd" +
276     "\022\uffbd\023\uffbd\024\uffbd\025\uffbd\026\uffbd\027\uffbd\030" +
277     "\uffbd\031\uffbd\032\uffbd\033\uffbd\042\uffbd\043\uffbd\001\002" +
278     "\000\052\002\uffa0\004\uffa0\007\uffa0\010\uffa0\012\uffa0\013" +
279     "\uffa0\014\uffa0\021\uffa0\022\uffa0\023\uffa0\024\uffa0\025\uffa0" +
280     "\026\uffa0\027\uffa0\030\uffa0\031\uffa0\032\uffa0\033\uffa0\042" +
281     "\uffa0\043\uffa0\001\002\000\036\002\uffd2\007\uffd2\012\uffd2" +
282     "\014\uffd2\022\uffd2\023\uffd2\024\uffd2\025\uffd2\026\uffd2\027" +
283     "\uffd2\030\211\031\212\042\uffd2\043\uffd2\001\002\000\056" +
284     "\002\uff75\004\uff75\006\uff75\007\uff75\010\uff75\011\uff75\012" +
285     "\uff75\013\uff75\014\uff75\021\uff75\022\uff75\023\uff75\024\uff75" +
286     "\025\uff75\026\uff75\027\uff75\030\uff75\031\uff75\032\uff75\033" +
287     "\uff75\042\uff75\043\uff75\001\002\000\044\002\uffca\007\uffca" +
288     "\012\uffca\013\uffca\014\uffca\022\uffca\023\uffca\024\uffca\025" +
289     "\uffca\026\uffca\027\uffca\030\uffca\031\uffca\032\uffca\033\uffca" +
290     "\042\uffca\043\uffca\001\002\000\060\002\uff77\004\uff77\006" +
291     "\uff77\007\uff77\010\uff77\011\uff77\012\uff77\013\uff77\014\uff77" +
292     "\020\uffa2\021\uff77\022\uff77\023\uff77\024\uff77\025\uff77\026" +
293     "\uff77\027\uff77\030\uff77\031\uff77\032\uff77\033\uff77\042\uff77" +
294     "\043\uff77\001\002\000\060\002\uff7e\004\uff7e\006\uff7e\007" +
295     "\uff7e\010\uff7e\011\uff7e\012\uff7e\013\uff7e\014\uff7e\020\uffa9" +
296     "\021\uff7e\022\uff7e\023\uff7e\024\uff7e\025\uff7e\026\uff7e\027" +
297     "\uff7e\030\uff7e\031\uff7e\032\uff7e\033\uff7e\042\uff7e\043\uff7e" +
298     "\001\002\000\004\011\201\001\002\000\052\002\uffbc\004" +
299     "\uffbc\007\uffbc\010\uffbc\012\uffbc\013\uffbc\014\uffbc\021\uffbc" +
300     "\022\uffbc\023\uffbc\024\uffbc\025\uffbc\026\uffbc\027\uffbc\030" +
301     "\uffbc\031\uffbc\032\uffbc\033\uffbc\042\uffbc\043\uffbc\001\002" +
302     "\000\046\002\uffc2\007\uffc2\010\uffc2\012\uffc2\013\uffc2\014" +
303     "\uffc2\022\uffc2\023\uffc2\024\uffc2\025\uffc2\026\uffc2\027\uffc2" +
304     "\030\uffc2\031\uffc2\032\uffc2\033\uffc2\042\uffc2\043\uffc2\001" +
305     "\002\000\054\002\uff9e\004\uff9e\006\055\007\uff9e\010\uff9e" +
306     "\012\uff9e\013\uff9e\014\uff9e\021\uff9e\022\uff9e\023\uff9e\024" +
307     "\uff9e\025\uff9e\026\uff9e\027\uff9e\030\uff9e\031\uff9e\032\uff9e" +
308     "\033\uff9e\042\uff9e\043\uff9e\001\002\000\060\002\uff76\004" +
309     "\uff76\006\uff76\007\uff76\010\uff76\011\uff76\012\uff76\013\uff76" +
310     "\014\uff76\020\uffa1\021\uff76\022\uff76\023\uff76\024\uff76\025" +
311     "\uff76\026\uff76\027\uff76\030\uff76\031\uff76\032\uff76\033\uff76" +
312     "\042\uff76\043\uff76\001\002\000\046\002\uffc4\007\uffc4\010" +
313     "\176\012\uffc4\013\uffc4\014\uffc4\022\uffc4\023\uffc4\024\uffc4" +
314     "\025\uffc4\026\uffc4\027\uffc4\030\uffc4\031\uffc4\032\uffc4\033" +
315     "\uffc4\042\uffc4\043\uffc4\001\002\000\060\002\uff81\004\uff81" +
316     "\006\uff81\007\uff81\010\uff81\011\uff81\012\uff81\013\uff81\014" +
317     "\uff81\020\uffac\021\uff81\022\uff81\023\uff81\024\uff81\025\uff81" +
318     "\026\uff81\027\uff81\030\uff81\031\uff81\032\uff81\033\uff81\042" +
319     "\uff81\043\uff81\001\002\000\054\002\uff9c\004\uff9c\006\uff9c" +
320     "\007\uff9c\010\uff9c\012\uff9c\013\uff9c\014\uff9c\021\uff9c\022" +
321     "\uff9c\023\uff9c\024\uff9c\025\uff9c\026\uff9c\027\uff9c\030\uff9c" +
322     "\031\uff9c\032\uff9c\033\uff9c\042\uff9c\043\uff9c\001\002\000" +
323     "\060\002\uff78\004\uff78\006\uff78\007\uff78\010\uff78\011\uff78" +
324     "\012\uff78\013\uff78\014\uff78\020\uffa3\021\uff78\022\uff78\023" +
325     "\uff78\024\uff78\025\uff78\026\uff78\027\uff78\030\uff78\031\uff78" +
326     "\032\uff78\033\uff78\042\uff78\043\uff78\001\002\000\052\002" +
327     "\uffc1\004\173\007\uffc1\010\uffc1\012\uffc1\013\uffc1\014\uffc1" +
328     "\021\172\022\uffc1\023\uffc1\024\uffc1\025\uffc1\026\uffc1\027" +
329     "\uffc1\030\uffc1\031\uffc1\032\uffc1\033\uffc1\042\uffc1\043\uffc1" +
330     "\001\002\000\060\002\uff82\004\uff82\006\uff82\007\uff82\010" +
331     "\uff82\011\uff82\012\uff82\013\uff82\014\uff82\020\uffad\021\uff82" +
332     "\022\uff82\023\uff82\024\uff82\025\uff82\026\uff82\027\uff82\030" +
333     "\uff82\031\uff82\032\uff82\033\uff82\042\uff82\043\uff82\001\002" +
334     "\000\054\002\uff98\004\uff98\006\uff98\007\uff98\010\uff98\012" +
335     "\uff98\013\uff98\014\uff98\021\uff98\022\uff98\023\uff98\024\uff98" +
336     "\025\uff98\026\uff98\027\uff98\030\uff98\031\uff98\032\uff98\033" +
337     "\uff98\042\uff98\043\uff98\001\002\000\004\007\171\001\002" +
338     "\000\046\032\031\033\040\035\034\036\113\037\141\047" +
339     "\036\050\037\051\044\052\170\053\166\054\043\055\041" +
340     "\056\035\057\030\060\045\061\021\062\012\063\042\001" +
341     "\002\000\052\002\uffba\004\uffba\007\uffba\010\uffba\012\uffba" +
342     "\013\uffba\014\uffba\021\uffba\022\uffba\023\uffba\024\uffba\025" +
343     "\uffba\026\uffba\027\uffba\030\uffba\031\uffba\032\uffba\033\uffba" +
344     "\042\uffba\043\uffba\001\002\000\060\002\uff79\004\uff79\006" +
345     "\uff79\007\uff79\010\uff79\011\uff79\012\uff79\013\uff79\014\uff79" +
346     "\020\uffa4\021\uff79\022\uff79\023\uff79\024\uff79\025\uff79\026" +
347     "\uff79\027\uff79\030\uff79\031\uff79\032\uff79\033\uff79\042\uff79" +
348     "\043\uff79\001\002\000\052\002\uffb0\004\uffb0\007\uffb0\010" +
349     "\uffb0\012\uffb0\013\uffb0\014\uffb0\021\uffb0\022\uffb0\023\uffb0" +
350     "\024\uffb0\025\uffb0\026\uffb0\027\uffb0\030\uffb0\031\uffb0\032" +
351     "\uffb0\033\uffb0\042\uffb0\043\uffb0\001\002\000\060\002\uff7c" +
352     "\004\uff7c\006\uff7c\007\uff7c\010\uff7c\011\uff7c\012\uff7c\013" +
353     "\uff7c\014\uff7c\020\uffa7\021\uff7c\022\uff7c\023\uff7c\024\uff7c" +
354     "\025\uff7c\026\uff7c\027\uff7c\030\uff7c\031\uff7c\032\uff7c\033" +
355     "\uff7c\042\uff7c\043\uff7c\001\002\000\056\002\uff83\004\uff83" +
356     "\006\uff83\007\uff83\010\uff83\011\uff83\012\uff83\013\uff83\014" +
357     "\uff83\021\uff83\022\uff83\023\uff83\024\uff83\025\uff83\026\uff83" +
358     "\027\uff83\030\uff83\031\uff83\032\uff83\033\uff83\042\uff83\043" +
359     "\uff83\001\002\000\054\002\uff8c\004\uff8c\006\uff8c\007\uff8c" +
360     "\010\uff8c\012\uff8c\013\uff8c\014\uff8c\021\uff8c\022\uff8c\023" +
361     "\uff8c\024\uff8c\025\uff8c\026\uff8c\027\uff8c\030\uff8c\031\uff8c" +
362     "\032\uff8c\033\uff8c\042\uff8c\043\uff8c\001\002\000\060\002" +
363     "\uff80\004\uff80\006\uff80\007\uff80\010\uff80\011\uff80\012\uff80" +
364     "\013\uff80\014\uff80\020\uffab\021\uff80\022\uff80\023\uff80\024" +
365     "\uff80\025\uff80\026\uff80\027\uff80\030\uff80\031\uff80\032\uff80" +
366     "\033\uff80\042\uff80\043\uff80\001\002\000\044\002\uffc6\007" +
367     "\uffc6\012\uffc6\013\uffc6\014\uffc6\022\uffc6\023\uffc6\024\uffc6" +
368     "\025\uffc6\026\uffc6\027\uffc6\030\uffc6\031\uffc6\032\uffc6\033" +
369     "\uffc6\042\uffc6\043\uffc6\001\002\000\054\002\uff8d\004\uff8d" +
370     "\006\uff8d\007\uff8d\010\uff8d\012\uff8d\013\uff8d\014\uff8d\021" +
371     "\uff8d\022\uff8d\023\uff8d\024\uff8d\025\uff8d\026\uff8d\027\uff8d" +
372     "\030\uff8d\031\uff8d\032\uff8d\033\uff8d\042\uff8d\043\uff8d\001" +
373     "\002\000\044\002\uffcd\007\uffcd\012\uffcd\013\160\014\uffcd" +
374     "\022\uffcd\023\uffcd\024\uffcd\025\uffcd\026\uffcd\027\uffcd\030" +
375     "\uffcd\031\uffcd\032\161\033\157\042\uffcd\043\uffcd\001\002" +
376     "\000\052\002\uffbe\004\153\007\uffbe\010\uffbe\012\uffbe\013" +
377     "\uffbe\014\uffbe\021\152\022\uffbe\023\uffbe\024\uffbe\025\uffbe" +
378     "\026\uffbe\027\uffbe\030\uffbe\031\uffbe\032\uffbe\033\uffbe\042" +
379     "\uffbe\043\uffbe\001\002\000\054\002\uff8e\004\uff8e\006\uff8e" +
380     "\007\uff8e\010\uff8e\012\uff8e\013\uff8e\014\uff8e\021\uff8e\022" +
381     "\uff8e\023\uff8e\024\uff8e\025\uff8e\026\uff8e\027\uff8e\030\uff8e" +
382     "\031\uff8e\032\uff8e\033\uff8e\042\uff8e\043\uff8e\001\002\000" +
383     "\056\002\uff87\004\uff87\006\uff87\007\uff87\010\uff87\011\uff91" +
384     "\012\uff87\013\uff87\014\uff87\021\uff87\022\uff87\023\uff87\024" +
385     "\uff87\025\uff87\026\uff87\027\uff87\030\uff87\031\uff87\032\uff87" +
386     "\033\uff87\042\uff87\043\uff87\001\002\000\070\005\111\013" +
387     "\103\016\066\017\106\032\031\033\040\035\034\036\113" +
388     "\037\141\040\142\041\145\044\063\045\062\046\065\047" +
389     "\115\050\123\051\136\052\077\053\143\054\131\055\125" +
390     "\056\116\057\104\060\140\061\067\062\060\063\127\001" +
391     "\002\000\070\005\111\013\103\016\066\017\106\032\031" +
392     "\033\040\035\034\036\113\037\141\040\142\041\145\044" +
393     "\063\045\062\046\065\047\115\050\123\051\136\052\077" +
394     "\053\143\054\131\055\125\056\116\057\104\060\140\061" +
395     "\067\062\060\063\127\001\002\000\054\002\uff87\004\uff87" +
396     "\006\uff87\007\uff87\010\uff87\012\uff87\013\uff87\014\uff87\021" +
397     "\uff87\022\uff87\023\uff87\024\uff87\025\uff87\026\uff87\027\uff87" +
398     "\030\uff87\031\uff87\032\uff87\033\uff87\042\uff87\043\uff87\001" +
399     "\002\000\052\002\uffbb\004\uffbb\007\uffbb\010\uffbb\012\uffbb" +
400     "\013\uffbb\014\uffbb\021\uffbb\022\uffbb\023\uffbb\024\uffbb\025" +
401     "\uffbb\026\uffbb\027\uffbb\030\uffbb\031\uffbb\032\uffbb\033\uffbb" +
402     "\042\uffbb\043\uffbb\001\002\000\052\002\uffb6\004\uffb6\007" +
403     "\uffb6\010\uffb6\012\uffb6\013\uffb6\014\uffb6\021\uffb6\022\uffb6" +
404     "\023\uffb6\024\uffb6\025\uffb6\026\uffb6\027\uffb6\030\uffb6\031" +
405     "\uffb6\032\uffb6\033\uffb6\042\uffb6\043\uffb6\001\002\000\110" +
406     "\004\061\005\111\011\071\013\103\015\134\016\066\017" +
407     "\106\021\070\031\075\032\031\033\040\034\057\035\034" +
408     "\036\113\037\141\040\142\041\145\044\063\045\062\046" +
409     "\065\047\115\050\123\051\136\052\077\053\143\054\131" +
410     "\055\125\056\116\057\104\060\140\061\067\062\060\063" +
411     "\127\064\132\065\072\001\002\000\110\004\061\005\111" +
412     "\011\071\013\103\015\134\016\066\017\106\021\070\031" +
413     "\075\032\031\033\040\034\057\035\034\036\113\037\141" +
414     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
415     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
416     "\057\104\060\140\061\067\062\060\063\127\064\132\065" +
417     "\072\001\002\000\110\004\061\005\111\011\071\013\103" +
418     "\015\134\016\066\017\106\021\070\031\075\032\031\033" +
419     "\040\034\057\035\034\036\113\037\141\040\142\041\145" +
420     "\044\063\045\062\046\065\047\115\050\123\051\136\052" +
421     "\077\053\143\054\131\055\125\056\116\057\104\060\140" +
422     "\061\067\062\060\063\127\064\132\065\072\001\002\000" +
423     "\044\002\uffc8\007\uffc8\012\uffc8\013\uffc8\014\uffc8\022\uffc8" +
424     "\023\uffc8\024\uffc8\025\uffc8\026\uffc8\027\uffc8\030\uffc8\031" +
425     "\uffc8\032\uffc8\033\uffc8\042\uffc8\043\uffc8\001\002\000\044" +
426     "\002\uffc9\007\uffc9\012\uffc9\013\uffc9\014\uffc9\022\uffc9\023" +
427     "\uffc9\024\uffc9\025\uffc9\026\uffc9\027\uffc9\030\uffc9\031\uffc9" +
428     "\032\uffc9\033\uffc9\042\uffc9\043\uffc9\001\002\000\044\002" +
429     "\uffc7\007\uffc7\012\uffc7\013\uffc7\014\uffc7\022\uffc7\023\uffc7" +
430     "\024\uffc7\025\uffc7\026\uffc7\027\uffc7\030\uffc7\031\uffc7\032" +
431     "\uffc7\033\uffc7\042\uffc7\043\uffc7\001\002\000\054\002\uff90" +
432     "\004\uff90\006\uff90\007\uff90\010\uff90\012\uff90\013\uff90\014" +
433     "\uff90\021\uff90\022\uff90\023\uff90\024\uff90\025\uff90\026\uff90" +
434     "\027\uff90\030\uff90\031\uff90\032\uff90\033\uff90\042\uff90\043" +
435     "\uff90\001\002\000\054\002\uff80\004\uff80\006\uff80\007\uff80" +
436     "\010\uff80\012\uff80\013\uff80\014\uff80\021\uff80\022\uff80\023" +
437     "\uff80\024\uff80\025\uff80\026\uff80\027\uff80\030\uff80\031\uff80" +
438     "\032\uff80\033\uff80\042\uff80\043\uff80\001\002\000\054\002" +
439     "\uff96\004\uff96\006\uff96\007\uff96\010\uff96\012\uff96\013\uff96" +
440     "\014\uff96\021\uff96\022\uff96\023\uff96\024\uff96\025\uff96\026" +
441     "\uff96\027\uff96\030\uff96\031\uff96\032\uff96\033\uff96\042\uff96" +
442     "\043\uff96\001\002\000\054\002\uff7f\004\uff7f\006\uff7f\007" +
443     "\uff7f\010\uff7f\012\uff7f\013\uff7f\014\uff7f\021\uff7f\022\uff7f" +
444     "\023\uff7f\024\uff7f\025\uff7f\026\uff7f\027\uff7f\030\uff7f\031" +
445     "\uff7f\032\uff7f\033\uff7f\042\uff7f\043\uff7f\001\002\000\054" +
446     "\002\uffdb\004\uffdb\006\uffdb\007\uffdb\010\uffdb\012\uffdb\013" +
447     "\uffdb\014\uffdb\021\uffdb\022\uffdb\023\uffdb\024\uffdb\025\uffdb" +
448     "\026\uffdb\027\uffdb\030\uffdb\031\uffdb\032\uffdb\033\uffdb\042" +
449     "\uffdb\043\uffdb\001\002\000\070\005\111\013\103\016\066" +
450     "\017\106\032\031\033\040\035\034\036\113\037\141\040" +
451     "\142\041\145\044\063\045\062\046\065\047\115\050\123" +
452     "\051\136\052\077\053\143\054\131\055\125\056\116\057" +
453     "\104\060\140\061\067\062\060\063\127\001\002\000\070" +
454     "\005\111\013\103\016\066\017\106\032\031\033\040\035" +
455     "\034\036\113\037\141\040\142\041\145\044\063\045\062" +
456     "\046\065\047\115\050\123\051\136\052\077\053\143\054" +
457     "\131\055\125\056\116\057\104\060\140\061\067\062\060" +
458     "\063\127\001\002\000\052\002\uffc0\004\153\007\uffc0\010" +
459     "\uffc0\012\uffc0\013\uffc0\014\uffc0\021\152\022\uffc0\023\uffc0" +
460     "\024\uffc0\025\uffc0\026\uffc0\027\uffc0\030\uffc0\031\uffc0\032" +
461     "\uffc0\033\uffc0\042\uffc0\043\uffc0\001\002\000\052\002\uffbf" +
462     "\004\153\007\uffbf\010\uffbf\012\uffbf\013\uffbf\014\uffbf\021" +
463     "\152\022\uffbf\023\uffbf\024\uffbf\025\uffbf\026\uffbf\027\uffbf" +
464     "\030\uffbf\031\uffbf\032\uffbf\033\uffbf\042\uffbf\043\uffbf\001" +
465     "\002\000\106\004\061\005\111\011\071\013\103\015\134" +
466     "\016\066\017\106\021\070\032\031\033\040\034\057\035" +
467     "\034\036\113\037\141\040\142\041\145\044\063\045\062" +
468     "\046\065\047\115\050\123\051\136\052\077\053\143\054" +
469     "\131\055\125\056\116\057\104\060\140\061\067\062\060" +
470     "\063\127\064\132\065\072\001\002\000\044\002\uffc3\007" +
471     "\uffc3\012\uffc3\013\uffc3\014\uffc3\022\uffc3\023\uffc3\024\uffc3" +
472     "\025\uffc3\026\uffc3\027\uffc3\030\uffc3\031\uffc3\032\uffc3\033" +
473     "\uffc3\042\uffc3\043\uffc3\001\002\000\052\002\uff9d\004\uff9d" +
474     "\007\uff9d\010\uff9d\012\uff9d\013\uff9d\014\uff9d\021\uff9d\022" +
475     "\uff9d\023\uff9d\024\uff9d\025\uff9d\026\uff9d\027\uff9d\030\uff9d" +
476     "\031\uff9d\032\uff9d\033\uff9d\042\uff9d\043\uff9d\001\002\000" +
477     "\112\004\061\005\111\011\071\012\202\013\103\015\134" +
478     "\016\066\017\106\021\070\031\075\032\031\033\040\034" +
479     "\057\035\034\036\113\037\141\040\142\041\145\044\063" +
480     "\045\062\046\065\047\115\050\123\051\136\052\077\053" +
481     "\143\054\131\055\125\056\116\057\104\060\140\061\067" +
482     "\062\060\063\127\064\132\065\072\001\002\000\054\002" +
483     "\uff95\004\uff95\006\uff95\007\uff95\010\uff95\012\uff95\013\uff95" +
484     "\014\uff95\021\uff95\022\uff95\023\uff95\024\uff95\025\uff95\026" +
485     "\uff95\027\uff95\030\uff95\031\uff95\032\uff95\033\uff95\042\uff95" +
486     "\043\uff95\001\002\000\006\012\uff93\014\207\001\002\000" +
487     "\006\012\uff8f\014\uff8f\001\002\000\004\012\206\001\002" +
488     "\000\054\002\uff94\004\uff94\006\uff94\007\uff94\010\uff94\012" +
489     "\uff94\013\uff94\014\uff94\021\uff94\022\uff94\023\uff94\024\uff94" +
490     "\025\uff94\026\uff94\027\uff94\030\uff94\031\uff94\032\uff94\033" +
491     "\uff94\042\uff94\043\uff94\001\002\000\110\004\061\005\111" +
492     "\011\071\013\103\015\134\016\066\017\106\021\070\031" +
493     "\075\032\031\033\040\034\057\035\034\036\113\037\141" +
494     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
495     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
496     "\057\104\060\140\061\067\062\060\063\127\064\132\065" +
497     "\072\001\002\000\004\012\uff92\001\002\000\110\004\061" +
498     "\005\111\011\071\013\103\015\134\016\066\017\106\021" +
499     "\070\031\075\032\031\033\040\034\057\035\034\036\113" +
500     "\037\141\040\142\041\145\044\063\045\062\046\065\047" +
501     "\115\050\123\051\136\052\077\053\143\054\131\055\125" +
502     "\056\116\057\104\060\140\061\067\062\060\063\127\064" +
503     "\132\065\072\001\002\000\110\004\061\005\111\011\071" +
504     "\013\103\015\134\016\066\017\106\021\070\031\075\032" +
505     "\031\033\040\034\057\035\034\036\113\037\141\040\142" +
506     "\041\145\044\063\045\062\046\065\047\115\050\123\051" +
507     "\136\052\077\053\143\054\131\055\125\056\116\057\104" +
508     "\060\140\061\067\062\060\063\127\064\132\065\072\001" +
509     "\002\000\044\002\uffcb\007\uffcb\012\uffcb\013\160\014\uffcb" +
510     "\022\uffcb\023\uffcb\024\uffcb\025\uffcb\026\uffcb\027\uffcb\030" +
511     "\uffcb\031\uffcb\032\161\033\157\042\uffcb\043\uffcb\001\002" +
512     "\000\044\002\uffcc\007\uffcc\012\uffcc\013\160\014\uffcc\022" +
513     "\uffcc\023\uffcc\024\uffcc\025\uffcc\026\uffcc\027\uffcc\030\uffcc" +
514     "\031\uffcc\032\161\033\157\042\uffcc\043\uffcc\001\002\000" +
515     "\052\002\uffb3\004\uffb3\007\uffb3\010\uffb3\012\uffb3\013\uffb3" +
516     "\014\uffb3\021\uffb3\022\uffb3\023\uffb3\024\uffb3\025\uffb3\026" +
517     "\uffb3\027\uffb3\030\uffb3\031\uffb3\032\uffb3\033\uffb3\042\uffb3" +
518     "\043\uffb3\001\002\000\110\004\061\005\111\011\071\013" +
519     "\103\015\134\016\066\017\106\021\070\031\075\032\031" +
520     "\033\040\034\057\035\034\036\113\037\141\040\142\041" +
521     "\145\044\063\045\062\046\065\047\115\050\123\051\136" +
522     "\052\077\053\143\054\131\055\125\056\116\057\104\060" +
523     "\140\061\067\062\060\063\127\064\132\065\072\001\002" +
524     "\000\110\004\061\005\111\011\071\013\103\015\134\016" +
525     "\066\017\106\021\070\031\075\032\031\033\040\034\057" +
526     "\035\034\036\113\037\141\040\142\041\145\044\063\045" +
527     "\062\046\065\047\115\050\123\051\136\052\077\053\143" +
528     "\054\131\055\125\056\116\057\104\060\140\061\067\062" +
529     "\060\063\127\064\132\065\072\001\002\000\032\002\uffd3" +
530     "\007\uffd3\012\uffd3\014\uffd3\022\uffd3\023\uffd3\024\221\025" +
531     "\222\026\223\027\224\042\uffd3\043\uffd3\001\002\000\110" +
532     "\004\061\005\111\011\071\013\103\015\134\016\066\017" +
533     "\106\021\070\031\075\032\031\033\040\034\057\035\034" +
534     "\036\113\037\141\040\142\041\145\044\063\045\062\046" +
535     "\065\047\115\050\123\051\136\052\077\053\143\054\131" +
536     "\055\125\056\116\057\104\060\140\061\067\062\060\063" +
537     "\127\064\132\065\072\001\002\000\110\004\061\005\111" +
538     "\011\071\013\103\015\134\016\066\017\106\021\070\031" +
539     "\075\032\031\033\040\034\057\035\034\036\113\037\141" +
540     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
541     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
542     "\057\104\060\140\061\067\062\060\063\127\064\132\065" +
543     "\072\001\002\000\110\004\061\005\111\011\071\013\103" +
544     "\015\134\016\066\017\106\021\070\031\075\032\031\033" +
545     "\040\034\057\035\034\036\113\037\141\040\142\041\145" +
546     "\044\063\045\062\046\065\047\115\050\123\051\136\052" +
547     "\077\053\143\054\131\055\125\056\116\057\104\060\140" +
548     "\061\067\062\060\063\127\064\132\065\072\001\002\000" +
549     "\110\004\061\005\111\011\071\013\103\015\134\016\066" +
550     "\017\106\021\070\031\075\032\031\033\040\034\057\035" +
551     "\034\036\113\037\141\040\142\041\145\044\063\045\062" +
552     "\046\065\047\115\050\123\051\136\052\077\053\143\054" +
553     "\131\055\125\056\116\057\104\060\140\061\067\062\060" +
554     "\063\127\064\132\065\072\001\002\000\036\002\uffce\007" +
555     "\uffce\012\uffce\014\uffce\022\uffce\023\uffce\024\uffce\025\uffce" +
556     "\026\uffce\027\uffce\030\211\031\212\042\uffce\043\uffce\001" +
557     "\002\000\036\002\uffcf\007\uffcf\012\uffcf\014\uffcf\022\uffcf" +
558     "\023\uffcf\024\uffcf\025\uffcf\026\uffcf\027\uffcf\030\211\031" +
559     "\212\042\uffcf\043\uffcf\001\002\000\036\002\uffd0\007\uffd0" +
560     "\012\uffd0\014\uffd0\022\uffd0\023\uffd0\024\uffd0\025\uffd0\026" +
561     "\uffd0\027\uffd0\030\211\031\212\042\uffd0\043\uffd0\001\002" +
562     "\000\036\002\uffd1\007\uffd1\012\uffd1\014\uffd1\022\uffd1\023" +
563     "\uffd1\024\uffd1\025\uffd1\026\uffd1\027\uffd1\030\211\031\212" +
564     "\042\uffd1\043\uffd1\001\002\000\032\002\uffd4\007\uffd4\012" +
565     "\uffd4\014\uffd4\022\uffd4\023\uffd4\024\221\025\222\026\223" +
566     "\027\224\042\uffd4\043\uffd4\001\002\000\110\004\061\005" +
567     "\111\011\071\013\103\015\134\016\066\017\106\021\070" +
568     "\031\075\032\031\033\040\034\057\035\034\036\113\037" +
569     "\141\040\142\041\145\044\063\045\062\046\065\047\115" +
570     "\050\123\051\136\052\077\053\143\054\131\055\125\056" +
571     "\116\057\104\060\140\061\067\062\060\063\127\064\132" +
572     "\065\072\001\002\000\016\002\uffd8\007\uffd8\012\uffd8\014" +
573     "\uffd8\042\uffd8\043\234\001\002\000\110\004\061\005\111" +
574     "\011\071\013\103\015\134\016\066\017\106\021\070\031" +
575     "\075\032\031\033\040\034\057\035\034\036\113\037\141" +
576     "\040\142\041\145\044\063\045\062\046\065\047\115\050" +
577     "\123\051\136\052\077\053\143\054\131\055\125\056\116" +
578     "\057\104\060\140\061\067\062\060\063\127\064\132\065" +
579     "\072\001\002\000\022\002\uffd6\007\uffd6\012\uffd6\014\uffd6" +
580     "\022\216\023\217\042\uffd6\043\uffd6\001\002\000\062\013" +
581     "\uffaf\032\uffaf\033\uffaf\035\uffaf\036\uffaf\037\uffaf\040\uffaf" +
582     "\041\uffaf\044\uffaf\045\uffaf\046\uffaf\047\uffaf\050\uffaf\051" +
583     "\uffaf\052\uffaf\053\uffaf\054\uffaf\055\uffaf\056\uffaf\057\uffaf" +
584     "\060\uffaf\061\uffaf\062\uffaf\063\uffaf\001\002\000\054\002" +
585     "\uffb1\004\uffb1\006\055\007\uffb1\010\uffb1\012\uffb1\013\uffb1" +
586     "\014\uffb1\021\uffb1\022\uffb1\023\uffb1\024\uffb1\025\uffb1\026" +
587     "\uffb1\027\uffb1\030\uffb1\031\uffb1\032\uffb1\033\uffb1\042\uffb1" +
588     "\043\uffb1\001\002\000\052\002\uffb2\004\uffb2\007\uffb2\010" +
589     "\uffb2\012\uffb2\013\uffb2\014\uffb2\021\uffb2\022\uffb2\023\uffb2" +
590     "\024\uffb2\025\uffb2\026\uffb2\027\uffb2\030\uffb2\031\uffb2\032" +
591     "\uffb2\033\uffb2\042\uffb2\043\uffb2\001\002\000\044\002\uffc5" +
592     "\007\uffc5\012\uffc5\013\uffc5\014\uffc5\022\uffc5\023\uffc5\024" +
593     "\uffc5\025\uffc5\026\uffc5\027\uffc5\030\uffc5\031\uffc5\032\uffc5" +
594     "\033\uffc5\042\uffc5\043\uffc5\001\002\000\004\012\243\001" +
595     "\002\000\054\002\uff9b\004\uff9b\006\uff9b\007\uff9b\010\uff9b" +
596     "\012\uff9b\013\uff9b\014\uff9b\021\uff9b\022\uff9b\023\uff9b\024" +
597     "\uff9b\025\uff9b\026\uff9b\027\uff9b\030\uff9b\031\uff9b\032\uff9b" +
598     "\033\uff9b\042\uff9b\043\uff9b\001\002\000\052\002\uffb5\004" +
599     "\153\007\uffb5\010\uffb5\012\uffb5\013\uffb5\014\uffb5\021\152" +
600     "\022\uffb5\023\uffb5\024\uffb5\025\uffb5\026\uffb5\027\uffb5\030" +
601     "\uffb5\031\uffb5\032\uffb5\033\uffb5\042\uffb5\043\uffb5\001\002" +
602     "\000\004\034\246\001\002\000\004\012\247\001\002\000" +
603     "\054\002\uff8a\004\uff8a\006\uff8a\007\uff8a\010\uff8a\012\uff8a" +
604     "\013\uff8a\014\uff8a\021\uff8a\022\uff8a\023\uff8a\024\uff8a\025" +
605     "\uff8a\026\uff8a\027\uff8a\030\uff8a\031\uff8a\032\uff8a\033\uff8a" +
606     "\042\uff8a\043\uff8a\001\002\000\052\002\uffb8\004\153\007" +
607     "\uffb8\010\uffb8\012\uffb8\013\uffb8\014\uffb8\021\152\022\uffb8" +
608     "\023\uffb8\024\uffb8\025\uffb8\026\uffb8\027\uffb8\030\uffb8\031" +
609     "\uffb8\032\uffb8\033\uffb8\042\uffb8\043\uffb8\001\002\000\052" +
610     "\002\uffdc\004\uffdc\007\uffdc\010\uffdc\012\uffdc\013\uffdc\014" +
611     "\uffdc\021\uffdc\022\uffdc\023\uffdc\024\uffdc\025\uffdc\026\uffdc" +
612     "\027\uffdc\030\uffdc\031\uffdc\032\uffdc\033\uffdc\042\uffdc\043" +
613     "\uffdc\001\002\000\062\013\uffde\032\uffde\033\uffde\035\uffde" +
614     "\036\uffde\037\uffde\040\uffde\041\uffde\044\uffde\045\uffde\046" +
615     "\uffde\047\uffde\050\uffde\051\uffde\052\uffde\053\uffde\054\uffde" +
616     "\055\uffde\056\uffde\057\uffde\060\uffde\061\uffde\062\uffde\063" +
617     "\uffde\001\002\000\004\034\254\001\002\000\004\014\255" +
618     "\001\002\000\004\034\256\001\002\000\004\012\257\001" +
619     "\002\000\012\002\ufff4\004\ufff4\010\ufff4\021\ufff4\001\002" +
620     "\000\004\034\261\001\002\000\004\012\262\001\002\000" +
621     "\012\002\ufff5\004\ufff5\010\ufff5\021\ufff5\001\002\000\012" +
622     "\002\uffec\004\uffec\010\uffec\021\uffec\001\002\000\062\013" +
623     "\uffdf\032\uffdf\033\uffdf\035\uffdf\036\uffdf\037\uffdf\040\uffdf" +
624     "\041\uffdf\044\uffdf\045\uffdf\046\uffdf\047\uffdf\050\uffdf\051" +
625     "\uffdf\052\uffdf\053\uffdf\054\uffdf\055\uffdf\056\uffdf\057\uffdf" +
626     "\060\uffdf\061\uffdf\062\uffdf\063\uffdf\001\002\000\064\013" +
627     "\027\016\020\032\031\033\040\035\034\036\113\037\141" +
628     "\040\047\041\051\044\015\045\014\046\016\047\036\050" +
629     "\037\051\044\052\025\053\050\054\043\055\041\056\035" +
630     "\057\030\060\045\061\021\062\012\063\042\001\002\000" +
631     "\064\013\027\016\020\032\031\033\040\035\034\036\113" +
632     "\037\141\040\047\041\051\044\015\045\014\046\016\047" +
633     "\036\050\037\051\044\052\025\053\050\054\043\055\041" +
634     "\056\035\057\030\060\045\061\021\062\012\063\042\001" +
635     "\002\000\006\002\ufff1\010\ufff1\001\002\000\006\002\ufff0" +
636     "\010\ufff0\001\002\000\006\002\ufff7\010\ufff7\001\002\000" +
637     "\014\002\uffe9\004\uffe9\006\055\010\uffe9\021\uffe9\001\002" +
638     "\000\014\002\uffeb\004\uffeb\006\055\010\uffeb\021\uffeb\001" +
639     "\002\000\012\002\uffea\004\uffea\010\uffea\021\uffea\001\002" +
640     "\000\012\002\uffe8\004\uffe8\010\uffe8\021\uffe8\001\002\000" +
641     "\064\013\027\016\020\032\031\033\040\035\034\036\113" +
642     "\037\141\040\047\041\051\044\015\045\014\046\016\047" +
643     "\036\050\037\051\044\052\025\053\050\054\043\055\041" +
644     "\056\035\057\030\060\045\061\021\062\012\063\042\001" +
645     "\002\000\064\013\027\016\020\032\031\033\040\035\034" +
646     "\036\113\037\141\040\047\041\051\044\015\045\014\046" +
647     "\016\047\036\050\037\051\044\052\025\053\050\054\043" +
648     "\055\041\056\035\057\030\060\045\061\021\062\012\063" +
649     "\042\001\002\000\006\002\ufff9\010\ufff9\001\002\000\006" +
650     "\002\ufff8\010\ufff8\001\002\000\004\034\303\001\002\000" +
651     "\004\012\304\001\002\000\014\002\ufff3\004\ufff3\006\ufff3" +
652     "\010\ufff3\021\ufff3\001\002\000\006\002\ufffb\010\ufffb\001" +
653     "\002\000\070\004\013\013\027\016\020\021\023\032\031" +
654     "\033\040\035\034\036\033\037\046\040\047\041\051\044" +
655     "\015\045\014\046\016\047\036\050\037\051\044\052\025" +
656     "\053\050\054\043\055\041\056\035\057\030\060\045\061" +
657     "\021\062\012\063\042\001\002\000\004\002\ufffd\001\002" +
658     "\000\004\002\uffff\001\002\000\004\002\001\001\002" });
659
660   /** Access to parse-action table. */
661   public short[][] action_table() {return _action_table;}
662
663   /** <code>reduce_goto</code> table. */
664   protected static final short[][] _reduce_table =
665     unpackFromStrings(new String JavaDoc[] {
666     "\000\307\000\004\003\003\001\001\000\002\001\001\000" +
667     "\070\004\307\006\120\010\127\011\117\012\101\013\075" +
668     "\014\104\015\063\016\111\017\145\020\113\021\125\022" +
669     "\073\023\121\024\143\025\123\026\136\027\146\030\134" +
670     "\031\107\032\072\033\106\034\147\047\150\050\116\052" +
671     "\100\053\077\001\001\000\026\035\016\036\007\037\006" +
672     "\040\031\041\025\042\023\043\052\044\010\047\051\054" +
673     "\021\001\001\000\002\001\001\000\002\001\001\000\002" +
674     "\001\001\000\002\001\001\000\020\040\031\041\304\042" +
675     "\023\043\052\044\010\047\051\054\021\001\001\000\002" +
676     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
677     "\001\000\002\001\001\000\002\001\001\000\012\040\271" +
678     "\043\272\044\010\047\051\001\001\000\020\040\031\041" +
679     "\270\042\023\043\052\044\010\047\051\054\021\001\001" +
680     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
681     "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
682     "\007\053\045\262\001\001\000\002\001\001\000\002\001" +
683     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
684     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
685     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
686     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
687     "\001\000\002\001\001\000\006\007\053\045\055\001\001" +
688     "\000\006\007\053\045\250\001\001\000\070\004\132\006" +
689     "\120\010\127\011\117\012\101\013\075\014\104\015\063" +
690     "\016\111\017\145\020\113\021\125\022\073\023\121\024" +
691     "\143\025\123\026\136\027\146\030\134\031\107\032\072" +
692     "\033\106\034\147\047\150\050\116\052\100\053\077\001" +
693     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
694     "\000\024\011\117\026\136\027\247\030\134\033\106\034" +
695     "\147\047\153\052\100\053\077\001\001\000\002\001\001" +
696     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
697     "\002\001\001\000\002\001\001\000\024\011\117\026\136" +
698     "\027\243\030\134\033\106\034\147\047\153\052\100\053" +
699     "\077\001\001\000\070\004\241\006\120\010\127\011\117" +
700     "\012\101\013\075\014\104\015\063\016\111\017\145\020" +
701     "\113\021\125\022\073\023\121\024\143\025\123\026\136" +
702     "\027\146\030\134\031\107\032\072\033\106\034\147\047" +
703     "\150\050\116\052\100\053\077\001\001\000\002\001\001" +
704     "\000\002\001\001\000\002\001\001\000\052\006\120\010" +
705     "\127\011\117\020\240\021\125\022\073\023\121\024\143" +
706     "\025\123\026\136\027\146\030\134\031\107\032\072\033" +
707     "\106\034\147\047\150\050\116\052\100\053\077\001\001" +
708     "\000\002\001\001\000\002\001\001\000\010\033\236\034" +
709     "\147\047\153\001\001\000\002\001\001\000\002\001\001" +
710     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
711     "\002\001\001\000\006\007\053\045\214\001\001\000\002" +
712     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
713     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
714     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
715     "\006\007\053\045\177\001\001\000\002\001\001\000\002" +
716     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
717     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
718     "\000\002\001\001\000\006\047\164\051\166\001\001\000" +
719     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
720     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
721     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
722     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
723     "\020\011\155\026\136\033\106\034\147\047\153\052\100" +
724     "\053\077\001\001\000\020\011\154\026\136\033\106\034" +
725     "\147\047\153\052\100\053\077\001\001\000\002\001\001" +
726     "\000\002\001\001\000\002\001\001\000\052\006\120\010" +
727     "\127\011\117\020\163\021\125\022\073\023\121\024\143" +
728     "\025\123\026\136\027\146\030\134\031\107\032\072\033" +
729     "\106\034\147\047\150\050\116\052\100\053\077\001\001" +
730     "\000\052\006\120\010\127\011\117\020\162\021\125\022" +
731     "\073\023\121\024\143\025\123\026\136\027\146\030\134" +
732     "\031\107\032\072\033\106\034\147\047\150\050\116\052" +
733     "\100\053\077\001\001\000\052\006\120\010\127\011\117" +
734     "\020\161\021\125\022\073\023\121\024\143\025\123\026" +
735     "\136\027\146\030\134\031\107\032\072\033\106\034\147" +
736     "\047\150\050\116\052\100\053\077\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\002\001\001\000\002\001\001\000" +
739     "\002\001\001\000\024\011\117\026\136\027\174\030\134" +
740     "\033\106\034\147\047\153\052\100\053\077\001\001\000" +
741     "\024\011\117\026\136\027\173\030\134\033\106\034\147" +
742     "\047\153\052\100\053\077\001\001\000\002\001\001\000" +
743     "\002\001\001\000\050\006\120\010\127\011\117\021\125" +
744     "\022\073\023\121\024\176\025\123\026\136\027\146\030" +
745     "\134\031\107\032\072\033\106\034\147\047\150\050\116" +
746     "\052\100\053\077\001\001\000\002\001\001\000\002\001" +
747     "\001\000\074\004\203\005\202\006\120\010\127\011\117" +
748     "\012\101\013\075\014\104\015\063\016\111\017\145\020" +
749     "\113\021\125\022\073\023\121\024\143\025\123\026\136" +
750     "\027\146\030\134\031\107\032\072\033\106\034\147\046" +
751     "\204\047\150\050\116\052\100\053\077\001\001\000\002" +
752     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
753     "\001\000\002\001\001\000\074\004\203\005\202\006\120" +
754     "\010\127\011\117\012\101\013\075\014\104\015\063\016" +
755     "\111\017\145\020\113\021\125\022\073\023\121\024\143" +
756     "\025\123\026\136\027\146\030\134\031\107\032\072\033" +
757     "\106\034\147\046\207\047\150\050\116\052\100\053\077" +
758     "\001\001\000\002\001\001\000\054\006\120\010\127\011" +
759     "\117\017\213\020\113\021\125\022\073\023\121\024\143" +
760     "\025\123\026\136\027\146\030\134\031\107\032\072\033" +
761     "\106\034\147\047\150\050\116\052\100\053\077\001\001" +
762     "\000\054\006\120\010\127\011\117\017\212\020\113\021" +
763     "\125\022\073\023\121\024\143\025\123\026\136\027\146" +
764     "\030\134\031\107\032\072\033\106\034\147\047\150\050" +
765     "\116\052\100\053\077\001\001\000\002\001\001\000\002" +
766     "\001\001\000\002\001\001\000\060\006\120\010\127\011" +
767     "\117\015\230\016\111\017\145\020\113\021\125\022\073" +
768     "\023\121\024\143\025\123\026\136\027\146\030\134\031" +
769     "\107\032\072\033\106\034\147\047\150\050\116\052\100" +
770     "\053\077\001\001\000\060\006\120\010\127\011\117\015" +
771     "\217\016\111\017\145\020\113\021\125\022\073\023\121" +
772     "\024\143\025\123\026\136\027\146\030\134\031\107\032" +
773     "\072\033\106\034\147\047\150\050\116\052\100\053\077" +
774     "\001\001\000\002\001\001\000\056\006\120\010\127\011" +
775     "\117\016\227\017\145\020\113\021\125\022\073\023\121" +
776     "\024\143\025\123\026\136\027\146\030\134\031\107\032" +
777     "\072\033\106\034\147\047\150\050\116\052\100\053\077" +
778     "\001\001\000\056\006\120\010\127\011\117\016\226\017" +
779     "\145\020\113\021\125\022\073\023\121\024\143\025\123" +
780     "\026\136\027\146\030\134\031\107\032\072\033\106\034" +
781     "\147\047\150\050\116\052\100\053\077\001\001\000\056" +
782     "\006\120\010\127\011\117\016\225\017\145\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\056\006\120\010\127" +
786     "\011\117\016\224\017\145\020\113\021\125\022\073\023" +
787     "\121\024\143\025\123\026\136\027\146\030\134\031\107" +
788     "\032\072\033\106\034\147\047\150\050\116\052\100\053" +
789     "\077\001\001\000\002\001\001\000\002\001\001\000\002" +
790     "\001\001\000\002\001\001\000\002\001\001\000\064\006" +
791     "\120\010\127\011\117\013\232\014\104\015\063\016\111" +
792     "\017\145\020\113\021\125\022\073\023\121\024\143\025" +
793     "\123\026\136\027\146\030\134\031\107\032\072\033\106" +
794     "\034\147\047\150\050\116\052\100\053\077\001\001\000" +
795     "\002\001\001\000\062\006\120\010\127\011\117\014\234" +
796     "\015\063\016\111\017\145\020\113\021\125\022\073\023" +
797     "\121\024\143\025\123\026\136\027\146\030\134\031\107" +
798     "\032\072\033\106\034\147\047\150\050\116\052\100\053" +
799     "\077\001\001\000\002\001\001\000\002\001\001\000\006" +
800     "\007\053\045\237\001\001\000\002\001\001\000\002\001" +
801     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
802     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
803     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
804     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
805     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
806     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
807     "\020\040\031\041\267\042\023\043\052\044\010\047\051" +
808     "\054\021\001\001\000\020\040\031\041\266\042\023\043" +
809     "\052\044\010\047\051\054\021\001\001\000\002\001\001" +
810     "\000\002\001\001\000\002\001\001\000\006\007\053\045" +
811     "\274\001\001\000\006\007\053\045\273\001\001\000\002" +
812     "\001\001\000\002\001\001\000\020\040\031\041\300\042" +
813     "\023\043\052\044\010\047\051\054\021\001\001\000\020" +
814     "\040\031\041\277\042\023\043\052\044\010\047\051\054" +
815     "\021\001\001\000\002\001\001\000\002\001\001\000\002" +
816     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
817     "\001\000\026\035\016\036\306\037\006\040\031\041\025" +
818     "\042\023\043\052\044\010\047\051\054\021\001\001\000" +
819     "\002\001\001\000\002\001\001\000\002\001\001" });
820
821   /** Access to <code>reduce_goto</code> table. */
822   public short[][] reduce_table() {return _reduce_table;}
823
824   /** Instance of action encapsulation class. */
825   protected CUP$XPathParser$actions action_obj;
826
827   /** Action encapsulation object initializer. */
828   protected void init_actions()
829     {
830       action_obj = new CUP$XPathParser$actions(this);
831     }
832
833   /** Invoke a user supplied parse action. */
834   public java_cup.runtime.Symbol do_action(
835     int act_num,
836     java_cup.runtime.lr_parser parser,
837     java.util.Stack JavaDoc stack,
838     int top)
839     throws java.lang.Exception JavaDoc
840   {
841     /* call code in generated class */
842     return action_obj.CUP$XPathParser$do_action(act_num, parser, stack, top);
843   }
844
845   /** Indicates start state. */
846   public int start_state() {return 0;}
847   /** Indicates start production. */
848   public int start_production() {return 0;}
849
850   /** <code>EOF</code> Symbol index. */
851   public int EOF_sym() {return 0;}
852
853   /** <code>error</code> Symbol index. */
854   public int error_sym() {return 1;}
855
856
857
858     /**
859      * Used by function calls with no args.
860      */

861     static public final Vector JavaDoc EmptyArgs = new Vector JavaDoc(0);
862
863     /**
864      * Reference to non-existing variable.
865      */

866     static public final VariableRef DummyVarRef = null;
867
868     /**
869      * Reference to the Parser class.
870      */

871     private Parser _parser;
872     private XSLTC _xsltc;
873
874     /**
875      * String representation of the expression being parsed.
876      */

877     private String JavaDoc _expression;
878
879     /**
880      * Line number where this expression/pattern was declared.
881      */

882     private int _lineNumber = 0;
883
884     /**
885      * Reference to the symbol table.
886      */

887     public SymbolTable _symbolTable;
888
889     public XPathParser(Parser parser) {
890         _parser = parser;
891     _xsltc = parser.getXSLTC();
892         _symbolTable = parser.getSymbolTable();
893     }
894
895     public int getLineNumber() {
896         return _lineNumber;
897     }
898
899     public QName getQNameIgnoreDefaultNs(String JavaDoc name) {
900           return _parser.getQNameIgnoreDefaultNs(name);
901     }
902
903     public QName getQName(String JavaDoc namespace, String JavaDoc prefix, String JavaDoc localname) {
904         return _parser.getQName(namespace, prefix, localname);
905     }
906
907     public void setMultiDocument(boolean flag) {
908           _xsltc.setMultiDocument(flag);
909     }
910
911     public void setCallsNodeset(boolean flag) {
912           _xsltc.setCallsNodeset(flag);
913     }
914
915     public void setHasIdCall(boolean flag) {
916           _xsltc.setHasIdCall(flag);
917     }
918     
919
920     /**
921      * This method is similar to findNodeType(int, Object) except that it
922      * creates a StepPattern instead of just returning a node type. It also
923      * differs in the way it handles "{uri}:*" and "{uri}:@*". The last two
924      * patterns are expanded as "*[namespace-uri() = 'uri']" and
925      * "@*[namespace-uri() = 'uri']", respectively. This expansion considerably
926      * simplifies the grouping of patterns in the Mode class. For this
927      * expansion to be correct, the priority of the pattern/template must be
928      * set to -0.25 (when no other predicates are present).
929      */

930     public StepPattern createStepPattern(int axis, Object JavaDoc test, Vector JavaDoc predicates) {
931     int nodeType;
932
933     if (test == null) { // "*"
934
nodeType = (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE :
935         (axis == Axis.NAMESPACE) ? -1 : NodeTest.ELEMENT;
936
937         return new StepPattern(axis, nodeType, predicates);
938         }
939         else if (test instanceof Integer JavaDoc) {
940         nodeType = ((Integer JavaDoc) test).intValue();
941
942         return new StepPattern(axis, nodeType, predicates);
943         }
944         else {
945         QName name = (QName)test;
946         boolean setPriority = false;
947
948         if (axis == Axis.NAMESPACE) {
949         nodeType = (name.toString().equals("*")) ? -1
950                 : _xsltc.registerNamespacePrefix(name);;
951             }
952         else {
953         final String JavaDoc uri = name.getNamespace();
954         final String JavaDoc local = name.getLocalPart();
955         final QName namespace_uri =
956             _parser.getQNameIgnoreDefaultNs("namespace-uri");
957
958         // Expand {uri}:* to *[namespace-uri() = 'uri'] - same for @*
959
if (uri != null && (local.equals("*") || local.equals("@*"))) {
960             if (predicates == null) {
961             predicates = new Vector JavaDoc(2);
962             }
963
964             // Priority is set by hand if no other predicates exist
965
setPriority = (predicates.size() == 0);
966
967             predicates.add(
968             new Predicate(
969                 new EqualityExpr(Operators.EQ,
970                 new NamespaceUriCall(namespace_uri),
971                 new LiteralExpr(uri))));
972         }
973
974         if (local.equals("*")) {
975             nodeType = (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE
976             : NodeTest.ELEMENT;
977         }
978         else if (local.equals("@*")) {
979             nodeType = NodeTest.ATTRIBUTE;
980         }
981         else {
982             nodeType = (axis == Axis.ATTRIBUTE) ? _xsltc.registerAttribute(name)
983             : _xsltc.registerElement(name);
984         }
985         }
986
987         final StepPattern result = new StepPattern(axis, nodeType, predicates);
988
989         // Set priority for case prefix:* and prefix:@* (no predicates)
990
if (setPriority) {
991         result.setPriority(-0.25);
992         }
993
994         return result;
995     }
996     }
997
998     public int findNodeType(int axis, Object JavaDoc test) {
999     if (test == null) { // *
1000
return (axis == Axis.ATTRIBUTE) ?
1001        NodeTest.ATTRIBUTE :
1002        (axis == Axis.NAMESPACE) ? -1 : NodeTest.ELEMENT;
1003        }
1004        else if (test instanceof Integer JavaDoc) {
1005            return ((Integer JavaDoc)test).intValue();
1006        }
1007        else {
1008        QName name = (QName)test;
1009
1010        if (axis == Axis.NAMESPACE) {
1011        return (name.toString().equals("*")) ? -1
1012            : _xsltc.registerNamespacePrefix(name);
1013            }
1014
1015        if (name.getNamespace() == null) {
1016        final String JavaDoc local = name.getLocalPart();
1017
1018        if (local.equals("*")) {
1019            return (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE
1020            : NodeTest.ELEMENT;
1021        }
1022        else if (local.equals("@*")) {
1023            return NodeTest.ATTRIBUTE;
1024        }
1025        }
1026
1027        return (axis == Axis.ATTRIBUTE) ? _xsltc.registerAttribute(name)
1028        : _xsltc.registerElement(name);
1029        }
1030    }
1031
1032    /**
1033     * Parse the expression passed to the current scanner. If this
1034     * expression contains references to local variables and it will be
1035     * compiled in an external module (not in the main class) request
1036     * the current template to create a new variable stack frame.
1037     *
1038     * @param lineNumber Line where the current expression is defined.
1039     * @param external Set to <tt>true</tt> if this expression is
1040     * compiled in a separate module.
1041     *
1042     */

1043    public Symbol parse(String JavaDoc expression, int lineNumber) throws Exception JavaDoc {
1044        try {
1045        _expression = expression;
1046        _lineNumber = lineNumber;
1047        return super.parse();
1048        }
1049        catch (IllegalCharException e) {
1050            ErrorMsg err = new ErrorMsg(ErrorMsg.ILLEGAL_CHAR_ERR,
1051                                        lineNumber, e.getMessage());
1052            _parser.reportError(Constants.FATAL, err);
1053        }
1054        return null;
1055    }
1056
1057    /**
1058     * Lookup a variable or parameter in the symbol table given its name.
1059     *
1060     * @param name Name of the symbol being looked up.
1061     */

1062    final SyntaxTreeNode lookupName(QName name) {
1063        // Is it a local var or param ?
1064
final SyntaxTreeNode result = _parser.lookupVariable(name);
1065    if (result != null)
1066            return(result);
1067        else
1068        return(_symbolTable.lookupName(name));
1069    }
1070
1071    public final void addError(ErrorMsg error) {
1072    _parser.reportError(Constants.ERROR, error);
1073    }
1074           
1075    public void report_error(String JavaDoc message, Object JavaDoc info) {
1076    final ErrorMsg err = new ErrorMsg(ErrorMsg.SYNTAX_ERR, _lineNumber,
1077        _expression);
1078    _parser.reportError(Constants.FATAL, err);
1079    }
1080
1081    public void report_fatal_error(String JavaDoc message, Object JavaDoc info) {
1082        // empty
1083
}
1084    
1085    public RelativeLocationPath insertStep(Step step, RelativeLocationPath rlp) {
1086    if (rlp instanceof Step) {
1087        return new ParentLocationPath(step, (Step) rlp);
1088    }
1089    else if (rlp instanceof ParentLocationPath) {
1090        final ParentLocationPath plp = (ParentLocationPath) rlp;
1091        final RelativeLocationPath newrlp = insertStep(step, plp.getPath());
1092        return new ParentLocationPath(newrlp, plp.getStep());
1093    }
1094    else {
1095        addError(new ErrorMsg(ErrorMsg.INTERNAL_ERR, "XPathParser.insertStep"));
1096        return rlp;
1097    }
1098    }
1099
1100    /**
1101     * Returns true if the axis applies to elements only. The axes
1102     * child, attribute, namespace, descendant result in non-empty
1103     * nodesets only if the context node is of type element.
1104     */

1105    public boolean isElementAxis(int axis) {
1106    return (axis == Axis.CHILD || axis == Axis.ATTRIBUTE ||
1107        axis == Axis.NAMESPACE || axis == Axis.DESCENDANT);
1108    }
1109
1110}
1111
1112/** Cup generated class to encapsulate user supplied action code.*/
1113class CUP$XPathParser$actions {
1114  private final XPathParser parser;
1115
1116  /** Constructor */
1117  CUP$XPathParser$actions(XPathParser parser) {
1118    this.parser = parser;
1119  }
1120
1121  /** Method with the actual generated action code. */
1122  public final java_cup.runtime.Symbol CUP$XPathParser$do_action(
1123    int CUP$XPathParser$act_num,
1124    java_cup.runtime.lr_parser CUP$XPathParser$parser,
1125    java.util.Stack JavaDoc CUP$XPathParser$stack,
1126    int CUP$XPathParser$top)
1127    throws java.lang.Exception JavaDoc
1128    {
1129      /* Symbol object for return from actions */
1130      java_cup.runtime.Symbol CUP$XPathParser$result;
1131
1132      /* select the action based on the action number */
1133      switch (CUP$XPathParser$act_num)
1134        {
1135          /*. . . . . . . . . . . . . . . . . . . .*/
1136          case 140: // QName ::= ID
1137
{
1138              QName RESULT = null;
1139         RESULT = parser.getQNameIgnoreDefaultNs("id");
1140              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1141            }
1142          return CUP$XPathParser$result;
1143
1144          /*. . . . . . . . . . . . . . . . . . . .*/
1145          case 139: // QName ::= SELF
1146
{
1147              QName RESULT = null;
1148         RESULT = parser.getQNameIgnoreDefaultNs("self");
1149              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1150            }
1151          return CUP$XPathParser$result;
1152
1153          /*. . . . . . . . . . . . . . . . . . . .*/
1154          case 138: // QName ::= PRECEDINGSIBLING
1155
{
1156              QName RESULT = null;
1157         RESULT = parser.getQNameIgnoreDefaultNs("preceding-sibling");
1158              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1159            }
1160          return CUP$XPathParser$result;
1161
1162          /*. . . . . . . . . . . . . . . . . . . .*/
1163          case 137: // QName ::= PRECEDING
1164
{
1165              QName RESULT = null;
1166         RESULT = parser.getQNameIgnoreDefaultNs("preceding");
1167              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1168            }
1169          return CUP$XPathParser$result;
1170
1171          /*. . . . . . . . . . . . . . . . . . . .*/
1172          case 136: // QName ::= PARENT
1173
{
1174              QName RESULT = null;
1175         RESULT = parser.getQNameIgnoreDefaultNs("parent");
1176              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1177            }
1178          return CUP$XPathParser$result;
1179
1180          /*. . . . . . . . . . . . . . . . . . . .*/
1181          case 135: // QName ::= NAMESPACE
1182
{
1183              QName RESULT = null;
1184         RESULT = parser.getQNameIgnoreDefaultNs("namespace");
1185              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1186            }
1187          return CUP$XPathParser$result;
1188
1189          /*. . . . . . . . . . . . . . . . . . . .*/
1190          case 134: // QName ::= FOLLOWINGSIBLING
1191
{
1192              QName RESULT = null;
1193         RESULT = parser.getQNameIgnoreDefaultNs("following-sibling");
1194              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1195            }
1196          return CUP$XPathParser$result;
1197
1198          /*. . . . . . . . . . . . . . . . . . . .*/
1199          case 133: // QName ::= FOLLOWING
1200
{
1201              QName RESULT = null;
1202         RESULT = parser.getQNameIgnoreDefaultNs("following");
1203              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1204            }
1205          return CUP$XPathParser$result;
1206
1207          /*. . . . . . . . . . . . . . . . . . . .*/
1208          case 132: // QName ::= DESCENDANTORSELF
1209
{
1210              QName RESULT = null;
1211         RESULT = parser.getQNameIgnoreDefaultNs("decendant-or-self");
1212              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1213            }
1214          return CUP$XPathParser$result;
1215
1216          /*. . . . . . . . . . . . . . . . . . . .*/
1217          case 131: // QName ::= DESCENDANT
1218
{
1219              QName RESULT = null;
1220         RESULT = parser.getQNameIgnoreDefaultNs("decendant");
1221              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1222            }
1223          return CUP$XPathParser$result;
1224
1225          /*. . . . . . . . . . . . . . . . . . . .*/
1226          case 130: // QName ::= CHILD
1227
{
1228              QName RESULT = null;
1229         RESULT = parser.getQNameIgnoreDefaultNs("child");
1230              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1231            }
1232          return CUP$XPathParser$result;
1233
1234          /*. . . . . . . . . . . . . . . . . . . .*/
1235          case 129: // QName ::= ATTRIBUTE
1236
{
1237              QName RESULT = null;
1238         RESULT = parser.getQNameIgnoreDefaultNs("attribute");
1239              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1240            }
1241          return CUP$XPathParser$result;
1242
1243          /*. . . . . . . . . . . . . . . . . . . .*/
1244          case 128: // QName ::= ANCESTORORSELF
1245
{
1246              QName RESULT = null;
1247         RESULT = parser.getQNameIgnoreDefaultNs("ancestor-or-self");
1248              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1249            }
1250          return CUP$XPathParser$result;
1251
1252          /*. . . . . . . . . . . . . . . . . . . .*/
1253          case 127: // QName ::= ANCESTOR
1254
{
1255              QName RESULT = null;
1256         RESULT = parser.getQNameIgnoreDefaultNs("child");
1257              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1258            }
1259          return CUP$XPathParser$result;
1260
1261          /*. . . . . . . . . . . . . . . . . . . .*/
1262          case 126: // QName ::= KEY
1263
{
1264              QName RESULT = null;
1265         RESULT = parser.getQNameIgnoreDefaultNs("key");
1266              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1267            }
1268          return CUP$XPathParser$result;
1269
1270          /*. . . . . . . . . . . . . . . . . . . .*/
1271          case 125: // QName ::= MOD
1272
{
1273              QName RESULT = null;
1274         RESULT = parser.getQNameIgnoreDefaultNs("mod");
1275              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1276            }
1277          return CUP$XPathParser$result;
1278
1279          /*. . . . . . . . . . . . . . . . . . . .*/
1280          case 124: // QName ::= DIV
1281
{
1282              QName RESULT = null;
1283         RESULT = parser.getQNameIgnoreDefaultNs("div");
1284              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1285            }
1286          return CUP$XPathParser$result;
1287
1288          /*. . . . . . . . . . . . . . . . . . . .*/
1289          case 123: // QName ::= QNAME
1290
{
1291              QName RESULT = null;
1292        int qnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1293        int qnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1294        String JavaDoc qname = (String JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1295         RESULT = parser.getQNameIgnoreDefaultNs(qname);
1296              CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1297            }
1298          return CUP$XPathParser$result;
1299
1300          /*. . . . . . . . . . . . . . . . . . . .*/
1301          case 122: // NameTest ::= QName
1302
{
1303              Object JavaDoc RESULT = null;
1304        int qnleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1305        int qnright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1306        QName qn = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1307         RESULT = qn;
1308              CUP$XPathParser$result = new java_cup.runtime.Symbol(26/*NameTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1309            }
1310          return CUP$XPathParser$result;
1311
1312          /*. . . . . . . . . . . . . . . . . . . .*/
1313          case 121: // NameTest ::= STAR
1314
{
1315              Object JavaDoc RESULT = null;
1316         RESULT = null;
1317              CUP$XPathParser$result = new java_cup.runtime.Symbol(26/*NameTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1318            }
1319          return CUP$XPathParser$result;
1320
1321          /*. . . . . . . . . . . . . . . . . . . .*/
1322          case 120: // NodeTest ::= PI
1323
{
1324              Object JavaDoc RESULT = null;
1325         RESULT = new Integer JavaDoc(NodeTest.PI);
1326              CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1327            }
1328          return CUP$XPathParser$result;
1329
1330          /*. . . . . . . . . . . . . . . . . . . .*/
1331          case 119: // NodeTest ::= PIPARAM LPAREN Literal RPAREN
1332
{
1333              Object JavaDoc RESULT = null;
1334        int lleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1335        int lright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1336        String JavaDoc l = (String JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1337        
1338           QName name = parser.getQNameIgnoreDefaultNs("name");
1339           Expression exp = new EqualityExpr(Operators.EQ,
1340                                             new NameCall(name),
1341                                             new LiteralExpr(l));
1342           Vector JavaDoc predicates = new Vector JavaDoc();
1343           predicates.addElement(new Predicate(exp));
1344           RESULT = new Step(Axis.CHILD, NodeTest.PI, predicates);
1345        
1346              CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1347            }
1348          return CUP$XPathParser$result;
1349
1350          /*. . . . . . . . . . . . . . . . . . . .*/
1351          case 118: // NodeTest ::= COMMENT
1352
{
1353              Object JavaDoc RESULT = null;
1354         RESULT = new Integer JavaDoc(NodeTest.COMMENT);
1355              CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1356            }
1357          return CUP$XPathParser$result;
1358
1359          /*. . . . . . . . . . . . . . . . . . . .*/
1360          case 117: // NodeTest ::= TEXT
1361
{
1362              Object JavaDoc RESULT = null;
1363         RESULT = new Integer JavaDoc(NodeTest.TEXT);
1364              CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1365            }
1366          return CUP$XPathParser$result;
1367
1368          /*. . . . . . . . . . . . . . . . . . . .*/
1369          case 116: // NodeTest ::= NODE
1370
{
1371              Object JavaDoc RESULT = null;
1372         RESULT = new Integer JavaDoc(NodeTest.ANODE);
1373              CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1374            }
1375          return CUP$XPathParser$result;
1376
1377          /*. . . . . . . . . . . . . . . . . . . .*/
1378          case 115: // NodeTest ::= NameTest
1379
{
1380              Object JavaDoc RESULT = null;
1381        int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1382        int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1383        Object JavaDoc nt = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1384         RESULT = nt;
1385              CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1386            }
1387          return CUP$XPathParser$result;
1388
1389          /*. . . . . . . . . . . . . . . . . . . .*/
1390          case 114: // Argument ::= Expr
1391
{
1392              Expression RESULT = null;
1393        int exleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1394        int exright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1395        Expression ex = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1396         RESULT = ex;
1397              CUP$XPathParser$result = new java_cup.runtime.Symbol(3/*Argument*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1398            }
1399          return CUP$XPathParser$result;
1400
1401          /*. . . . . . . . . . . . . . . . . . . .*/
1402          case 113: // VariableName ::= QName
1403
{
1404              QName RESULT = null;
1405        int vnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1406        int vnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1407        QName vname = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1408         
1409        RESULT = vname;
1410    
1411              CUP$XPathParser$result = new java_cup.runtime.Symbol(39/*VariableName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1412            }
1413          return CUP$XPathParser$result;
1414
1415          /*. . . . . . . . . . . . . . . . . . . .*/
1416          case 112: // FunctionName ::= QName
1417
{
1418              QName RESULT = null;
1419        int fnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1420        int fnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1421        QName fname = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1422         
1423        RESULT = fname;
1424    
1425              CUP$XPathParser$result = new java_cup.runtime.Symbol(38/*FunctionName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1426            }
1427          return CUP$XPathParser$result;
1428
1429          /*. . . . . . . . . . . . . . . . . . . .*/
1430          case 111: // NonemptyArgumentList ::= Argument COMMA NonemptyArgumentList
1431
{
1432              Vector JavaDoc RESULT = null;
1433        int argleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
1434        int argright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
1435        Expression arg = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
1436        int arglleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1437        int arglright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1438        Vector JavaDoc argl = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1439         argl.insertElementAt(arg, 0); RESULT = argl;
1440              CUP$XPathParser$result = new java_cup.runtime.Symbol(36/*NonemptyArgumentList*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1441            }
1442          return CUP$XPathParser$result;
1443
1444          /*. . . . . . . . . . . . . . . . . . . .*/
1445          case 110: // NonemptyArgumentList ::= Argument
1446
{
1447              Vector JavaDoc RESULT = null;
1448        int argleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1449        int argright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1450        Expression arg = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1451         
1452            Vector JavaDoc temp = new Vector JavaDoc();
1453            temp.addElement(arg);
1454            RESULT = temp;
1455        
1456              CUP$XPathParser$result = new java_cup.runtime.Symbol(36/*NonemptyArgumentList*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1457            }
1458          return CUP$XPathParser$result;
1459
1460          /*. . . . . . . . . . . . . . . . . . . .*/
1461          case 109: // FunctionCall ::= FunctionName LPAREN NonemptyArgumentList RPAREN
1462
{
1463              Expression RESULT = null;
1464        int fnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left;
1465        int fnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).right;
1466        QName fname = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).value;
1467        int arglleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1468        int arglright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1469        Vector JavaDoc argl = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1470        
1471          if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1472            RESULT = new ConcatCall(fname, argl);
1473      }
1474          else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1475            RESULT = new NumberCall(fname, argl);
1476      }
1477          else if (fname == parser.getQNameIgnoreDefaultNs("document")) {
1478        parser.setMultiDocument(true);
1479            RESULT = new DocumentCall(fname, argl);
1480      }
1481          else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1482            RESULT = new StringCall(fname, argl);
1483      }
1484          else if (fname == parser.getQNameIgnoreDefaultNs("boolean")) {
1485            RESULT = new BooleanCall(fname, argl);
1486      }
1487          else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
1488            RESULT = new NameCall(fname, argl);
1489      }
1490          else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
1491            RESULT = new GenerateIdCall(fname, argl);
1492      }
1493          else if (fname == parser.getQNameIgnoreDefaultNs("not")) {
1494            RESULT = new NotCall(fname, argl);
1495      }
1496          else if (fname == parser.getQNameIgnoreDefaultNs("format-number")) {
1497            RESULT = new FormatNumberCall(fname, argl);
1498      }
1499          else if (fname == parser.getQNameIgnoreDefaultNs("unparsed-entity-uri")) {
1500            RESULT = new UnparsedEntityUriCall(fname, argl);
1501      }
1502          else if (fname == parser.getQNameIgnoreDefaultNs("key")) {
1503            RESULT = new KeyCall(fname, argl);
1504      }
1505          else if (fname == parser.getQNameIgnoreDefaultNs("id")) {
1506            RESULT = new KeyCall(fname, argl);
1507            parser.setHasIdCall(true);
1508      }
1509          else if (fname == parser.getQNameIgnoreDefaultNs("ceiling")) {
1510            RESULT = new CeilingCall(fname, argl);
1511      }
1512          else if (fname == parser.getQNameIgnoreDefaultNs("round")) {
1513            RESULT = new RoundCall(fname, argl);
1514      }
1515          else if (fname == parser.getQNameIgnoreDefaultNs("floor")) {
1516            RESULT = new FloorCall(fname, argl);
1517      }
1518          else if (fname == parser.getQNameIgnoreDefaultNs("contains")) {
1519            RESULT = new ContainsCall(fname, argl);
1520      }
1521          else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) {
1522            RESULT = new StringLengthCall(fname, argl);
1523      }
1524          else if (fname == parser.getQNameIgnoreDefaultNs("starts-with")) {
1525            RESULT = new StartsWithCall(fname, argl);
1526      }
1527          else if (fname == parser.getQNameIgnoreDefaultNs("function-available")) {
1528            RESULT = new FunctionAvailableCall(fname, argl);
1529      }
1530          else if (fname == parser.getQNameIgnoreDefaultNs("element-available")) {
1531            RESULT = new ElementAvailableCall(fname, argl);
1532      }
1533          else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
1534            RESULT = new LocalNameCall(fname, argl);
1535      }
1536          else if (fname == parser.getQNameIgnoreDefaultNs("lang")) {
1537            RESULT = new LangCall(fname, argl);
1538      }
1539          else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
1540            RESULT = new NamespaceUriCall(fname, argl);
1541      }
1542          else if (fname == parser.getQName(Constants.TRANSLET_URI, "xsltc", "cast")) {
1543            RESULT = new CastCall(fname, argl);
1544      }
1545      // Special case for extension function nodeset()
1546
else if (fname.getLocalPart().equals("nodeset") || fname.getLocalPart().equals("node-set")) {
1547        parser.setCallsNodeset(true); // implies MultiDOM
1548
RESULT = new FunctionCall(fname, argl);
1549      }
1550          else {
1551            RESULT = new FunctionCall(fname, argl);
1552      }
1553    
1554              CUP$XPathParser$result = new java_cup.runtime.Symbol(16/*FunctionCall*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1555            }
1556          return CUP$XPathParser$result;
1557
1558          /*. . . . . . . . . . . . . . . . . . . .*/
1559          case 108: // FunctionCall ::= FunctionName LPAREN RPAREN
1560
{
1561              Expression RESULT = null;
1562        int fnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
1563        int fnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
1564        QName fname = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
1565         
1566
1567          if (fname == parser.getQNameIgnoreDefaultNs("current")) {
1568            RESULT = new CurrentCall(fname);
1569      }
1570          else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1571            RESULT = new NumberCall(fname, parser.EmptyArgs);
1572      }
1573          else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1574            RESULT = new StringCall(fname, parser.EmptyArgs);
1575      }
1576          else if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1577            RESULT = new ConcatCall(fname, parser.EmptyArgs);
1578      }
1579          else if (fname == parser.getQNameIgnoreDefaultNs("true")) {
1580            RESULT = new BooleanExpr(true);
1581      }
1582          else if (fname == parser.getQNameIgnoreDefaultNs("false")) {
1583            RESULT = new BooleanExpr(false);
1584      }
1585          else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
1586            RESULT = new NameCall(fname);
1587      }
1588          else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
1589            RESULT = new GenerateIdCall(fname, parser.EmptyArgs);
1590      }
1591          else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) {
1592            RESULT = new StringLengthCall(fname, parser.EmptyArgs);
1593      }
1594          else if (fname == parser.getQNameIgnoreDefaultNs("position")) {
1595            RESULT = new PositionCall(fname);
1596      }
1597          else if (fname == parser.getQNameIgnoreDefaultNs("last")) {
1598            RESULT = new LastCall(fname);
1599      }
1600          else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
1601            RESULT = new LocalNameCall(fname);
1602      }
1603          else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
1604            RESULT = new NamespaceUriCall(fname);
1605      }
1606          else {
1607            RESULT = new FunctionCall(fname, parser.EmptyArgs);
1608      }
1609        
1610              CUP$XPathParser$result = new java_cup.runtime.Symbol(16/*FunctionCall*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1611            }
1612          return CUP$XPathParser$result;
1613
1614          /*. . . . . . . . . . . . . . . . . . . .*/
1615          case 107: // VariableReference ::= DOLLAR VariableName
1616
{
1617              Expression RESULT = null;
1618        int varNameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1619        int varNameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1620        QName varName = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1621         
1622            // An empty qname prefix for a variable or parameter reference
1623
// should map to the null namespace and not the default URI.
1624
SyntaxTreeNode node = parser.lookupName(varName);
1625
1626            if (node != null) {
1627                if (node instanceof Variable) {
1628                    RESULT = new VariableRef((Variable)node);
1629                }
1630                else if (node instanceof Param) {
1631                    RESULT = new ParameterRef((Param)node);
1632                }
1633                else {
1634                    RESULT = new UnresolvedRef(varName);
1635                }
1636            }
1637
1638            if (node == null) {
1639                RESULT = new UnresolvedRef(varName);
1640            }
1641        
1642              CUP$XPathParser$result = new java_cup.runtime.Symbol(15/*VariableReference*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1643            }
1644          return CUP$XPathParser$result;
1645
1646          /*. . . . . . . . . . . . . . . . . . . .*/
1647          case 106: // PrimaryExpr ::= FunctionCall
1648
{
1649              Expression RESULT = null;
1650        int fcleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1651        int fcright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1652        Expression fc = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1653         RESULT = fc;
1654              CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1655            }
1656          return CUP$XPathParser$result;
1657
1658          /*. . . . . . . . . . . . . . . . . . . .*/
1659          case 105: // PrimaryExpr ::= REAL
1660
{
1661              Expression RESULT = null;
1662        int numleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1663        int numright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1664        Double JavaDoc num = (Double JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1665         RESULT = new RealExpr(num.doubleValue());
1666              CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1667            }
1668          return CUP$XPathParser$result;
1669
1670          /*. . . . . . . . . . . . . . . . . . . .*/
1671          case 104: // PrimaryExpr ::= INT
1672
{
1673              Expression RESULT = null;
1674        int numleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1675        int numright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1676        Long JavaDoc num = (Long JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1677         
1678       long value = num.longValue();
1679       if (value < Integer.MIN_VALUE || value > Integer.MAX_VALUE) {
1680        RESULT = new RealExpr(value);
1681       }
1682       else {
1683               if (num.doubleValue() == -0)
1684                   RESULT = new RealExpr(num.doubleValue());
1685               else if (num.intValue() == 0)
1686                   RESULT = new IntExpr(num.intValue());
1687               else if (num.doubleValue() == 0.0)
1688                   RESULT = new RealExpr(num.doubleValue());
1689               else
1690                   RESULT = new IntExpr(num.intValue());
1691       }
1692        
1693              CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1694            }
1695          return CUP$XPathParser$result;
1696
1697          /*. . . . . . . . . . . . . . . . . . . .*/
1698          case 103: // PrimaryExpr ::= Literal
1699
{
1700              Expression RESULT = null;
1701        int stringleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1702        int stringright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1703        String JavaDoc string = (String JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1704         
1705    /*
1706    * If the string appears to have the syntax of a QName, store
1707    * namespace info in the literal expression. This is used for
1708    * element-available and function-available functions, among
1709    * others. Also, the default namespace must be ignored.
1710    */

1711    String JavaDoc namespace = null;
1712    final int index = string.lastIndexOf(':');
1713
1714    if (index > 0) {
1715        final String JavaDoc prefix = string.substring(0, index);
1716        namespace = parser._symbolTable.lookupNamespace(prefix);
1717    }
1718    RESULT = (namespace == null) ? new LiteralExpr(string)
1719             : new LiteralExpr(string, namespace);
1720    
1721              CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1722            }
1723          return CUP$XPathParser$result;
1724
1725          /*. . . . . . . . . . . . . . . . . . . .*/
1726          case 102: // PrimaryExpr ::= LPAREN Expr RPAREN
1727
{
1728              Expression RESULT = null;
1729        int exleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1730        int exright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1731        Expression ex = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1732         RESULT = ex;
1733              CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1734            }
1735          return CUP$XPathParser$result;
1736
1737          /*. . . . . . . . . . . . . . . . . . . .*/
1738          case 101: // PrimaryExpr ::= VariableReference
1739
{
1740              Expression RESULT = null;
1741        int vrleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1742        int vrright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1743        Expression vr = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1744         RESULT = vr;
1745              CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1746            }
1747          return CUP$XPathParser$result;
1748
1749          /*. . . . . . . . . . . . . . . . . . . .*/
1750          case 100: // FilterExpr ::= PrimaryExpr Predicates
1751
{
1752              Expression RESULT = null;
1753        int primaryleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1754        int primaryright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1755        Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1756        int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1757        int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1758        Vector JavaDoc pp = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1759         RESULT = new FilterExpr(primary, pp);
1760              CUP$XPathParser$result = new java_cup.runtime.Symbol(6/*FilterExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1761            }
1762          return CUP$XPathParser$result;
1763
1764          /*. . . . . . . . . . . . . . . . . . . .*/
1765          case 99: // FilterExpr ::= PrimaryExpr
1766
{
1767              Expression RESULT = null;
1768        int primaryleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1769        int primaryright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1770        Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1771         RESULT = primary;
1772              CUP$XPathParser$result = new java_cup.runtime.Symbol(6/*FilterExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1773            }
1774          return CUP$XPathParser$result;
1775
1776          /*. . . . . . . . . . . . . . . . . . . .*/
1777          case 98: // AbbreviatedStep ::= DDOT
1778
{
1779              Expression RESULT = null;
1780         RESULT = new Step(Axis.PARENT, NodeTest.ANODE, null);
1781              CUP$XPathParser$result = new java_cup.runtime.Symbol(20/*AbbreviatedStep*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1782            }
1783          return CUP$XPathParser$result;
1784
1785          /*. . . . . . . . . . . . . . . . . . . .*/
1786          case 97: // AbbreviatedStep ::= DOT
1787
{
1788              Expression RESULT = null;
1789         RESULT = new Step(Axis.SELF, NodeTest.ANODE, null);
1790              CUP$XPathParser$result = new java_cup.runtime.Symbol(20/*AbbreviatedStep*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1791            }
1792          return CUP$XPathParser$result;
1793
1794          /*. . . . . . . . . . . . . . . . . . . .*/
1795          case 96: // AxisName ::= SELF
1796
{
1797              Integer JavaDoc RESULT = null;
1798         RESULT = new Integer JavaDoc(Axis.SELF);
1799              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1800            }
1801          return CUP$XPathParser$result;
1802
1803          /*. . . . . . . . . . . . . . . . . . . .*/
1804          case 95: // AxisName ::= PRECEDINGSIBLING
1805
{
1806              Integer JavaDoc RESULT = null;
1807         RESULT = new Integer JavaDoc(Axis.PRECEDINGSIBLING);
1808              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1809            }
1810          return CUP$XPathParser$result;
1811
1812          /*. . . . . . . . . . . . . . . . . . . .*/
1813          case 94: // AxisName ::= PRECEDING
1814
{
1815              Integer JavaDoc RESULT = null;
1816         RESULT = new Integer JavaDoc(Axis.PRECEDING);
1817              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1818            }
1819          return CUP$XPathParser$result;
1820
1821          /*. . . . . . . . . . . . . . . . . . . .*/
1822          case 93: // AxisName ::= PARENT
1823
{
1824              Integer JavaDoc RESULT = null;
1825         RESULT = new Integer JavaDoc(Axis.PARENT);
1826              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1827            }
1828          return CUP$XPathParser$result;
1829
1830          /*. . . . . . . . . . . . . . . . . . . .*/
1831          case 92: // AxisName ::= NAMESPACE
1832
{
1833              Integer JavaDoc RESULT = null;
1834         RESULT = new Integer JavaDoc(Axis.NAMESPACE);
1835              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1836            }
1837          return CUP$XPathParser$result;
1838
1839          /*. . . . . . . . . . . . . . . . . . . .*/
1840          case 91: // AxisName ::= FOLLOWINGSIBLING
1841
{
1842              Integer JavaDoc RESULT = null;
1843         RESULT = new Integer JavaDoc(Axis.FOLLOWINGSIBLING);
1844              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1845            }
1846          return CUP$XPathParser$result;
1847
1848          /*. . . . . . . . . . . . . . . . . . . .*/
1849          case 90: // AxisName ::= FOLLOWING
1850
{
1851              Integer JavaDoc RESULT = null;
1852         RESULT = new Integer JavaDoc(Axis.FOLLOWING);
1853              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1854            }
1855          return CUP$XPathParser$result;
1856
1857          /*. . . . . . . . . . . . . . . . . . . .*/
1858          case 89: // AxisName ::= DESCENDANTORSELF
1859
{
1860              Integer JavaDoc RESULT = null;
1861         RESULT = new Integer JavaDoc(Axis.DESCENDANTORSELF);
1862              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1863            }
1864          return CUP$XPathParser$result;
1865
1866          /*. . . . . . . . . . . . . . . . . . . .*/
1867          case 88: // AxisName ::= DESCENDANT
1868
{
1869              Integer JavaDoc RESULT = null;
1870         RESULT = new Integer JavaDoc(Axis.DESCENDANT);
1871              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1872            }
1873          return CUP$XPathParser$result;
1874
1875          /*. . . . . . . . . . . . . . . . . . . .*/
1876          case 87: // AxisName ::= CHILD
1877
{
1878              Integer JavaDoc RESULT = null;
1879         RESULT = new Integer JavaDoc(Axis.CHILD);
1880              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1881            }
1882          return CUP$XPathParser$result;
1883
1884          /*. . . . . . . . . . . . . . . . . . . .*/
1885          case 86: // AxisName ::= ATTRIBUTE
1886
{
1887              Integer JavaDoc RESULT = null;
1888         RESULT = new Integer JavaDoc(Axis.ATTRIBUTE);
1889              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1890            }
1891          return CUP$XPathParser$result;
1892
1893          /*. . . . . . . . . . . . . . . . . . . .*/
1894          case 85: // AxisName ::= ANCESTORORSELF
1895
{
1896              Integer JavaDoc RESULT = null;
1897         RESULT = new Integer JavaDoc(Axis.ANCESTORORSELF);
1898              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1899            }
1900          return CUP$XPathParser$result;
1901
1902          /*. . . . . . . . . . . . . . . . . . . .*/
1903          case 84: // AxisName ::= ANCESTOR
1904
{
1905              Integer JavaDoc RESULT = null;
1906         RESULT = new Integer JavaDoc(Axis.ANCESTOR);
1907              CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1908            }
1909          return CUP$XPathParser$result;
1910
1911          /*. . . . . . . . . . . . . . . . . . . .*/
1912          case 83: // AxisSpecifier ::= ATSIGN
1913
{
1914              Integer JavaDoc RESULT = null;
1915         RESULT = new Integer JavaDoc(Axis.ATTRIBUTE);
1916              CUP$XPathParser$result = new java_cup.runtime.Symbol(41/*AxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1917            }
1918          return CUP$XPathParser$result;
1919
1920          /*. . . . . . . . . . . . . . . . . . . .*/
1921          case 82: // AxisSpecifier ::= AxisName DCOLON
1922
{
1923              Integer JavaDoc RESULT = null;
1924        int anleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1925        int anright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1926        Integer JavaDoc an = (Integer JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1927         RESULT = an;
1928              CUP$XPathParser$result = new java_cup.runtime.Symbol(41/*AxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1929            }
1930          return CUP$XPathParser$result;
1931
1932          /*. . . . . . . . . . . . . . . . . . . .*/
1933          case 81: // Step ::= AbbreviatedStep
1934
{
1935              Expression RESULT = null;
1936        int abbrevleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1937        int abbrevright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1938        Expression abbrev = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1939         RESULT = abbrev;
1940              CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1941            }
1942          return CUP$XPathParser$result;
1943
1944          /*. . . . . . . . . . . . . . . . . . . .*/
1945          case 80: // Step ::= AxisSpecifier NodeTest
1946
{
1947              Expression RESULT = null;
1948        int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1949        int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1950        Integer JavaDoc axis = (Integer JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1951        int ntestleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1952        int ntestright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1953        Object JavaDoc ntest = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1954         RESULT = new Step(axis.intValue(),
1955                             parser.findNodeType(axis.intValue(), ntest),
1956                             null);
1957        
1958              CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1959            }
1960          return CUP$XPathParser$result;
1961
1962          /*. . . . . . . . . . . . . . . . . . . .*/
1963          case 79: // Step ::= AxisSpecifier NodeTest Predicates
1964
{
1965              Expression RESULT = null;
1966        int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
1967        int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
1968        Integer JavaDoc axis = (Integer JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
1969        int ntestleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1970        int ntestright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1971        Object JavaDoc ntest = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1972        int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1973        int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1974        Vector JavaDoc pp = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1975         RESULT = new Step(axis.intValue(),
1976                             parser.findNodeType(axis.intValue(), ntest),
1977                             pp);
1978        
1979              CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
1980            }
1981          return CUP$XPathParser$result;
1982
1983          /*. . . . . . . . . . . . . . . . . . . .*/
1984          case 78: // Step ::= NodeTest Predicates
1985
{
1986              Expression RESULT = null;
1987        int ntestleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
1988        int ntestright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
1989        Object JavaDoc ntest = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
1990        int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
1991        int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
1992        Vector JavaDoc pp = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
1993         
1994            if (ntest instanceof Step) {
1995                Step step = (Step)ntest;
1996                step.addPredicates(pp);
1997                RESULT = (Step)ntest;
1998            }
1999            else {
2000                RESULT = new Step(Axis.CHILD,
2001                             parser.findNodeType(Axis.CHILD, ntest), pp);
2002            }
2003        
2004              CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2005            }
2006          return CUP$XPathParser$result;
2007
2008          /*. . . . . . . . . . . . . . . . . . . .*/
2009          case 77: // Step ::= NodeTest
2010
{
2011              Expression RESULT = null;
2012        int ntestleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2013        int ntestright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2014        Object JavaDoc ntest = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2015        
2016            if (ntest instanceof Step) {
2017                RESULT = (Step)ntest;
2018            }
2019            else {
2020        RESULT = new Step(Axis.CHILD,
2021                             parser.findNodeType(Axis.CHILD, ntest),
2022                             null);
2023            }
2024        
2025              CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2026            }
2027          return CUP$XPathParser$result;
2028
2029          /*. . . . . . . . . . . . . . . . . . . .*/
2030          case 76: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath
2031
{
2032              Expression RESULT = null;
2033        int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2034        int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2035        Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2036        
2037           //
2038
// Expand '//' into '/descendant-or-self::node()/' or
2039
// into /descendant-or-self::*/
2040
//
2041
int nodeType = DOM.NO_TYPE;
2042       if (rlp instanceof Step &&
2043           parser.isElementAxis(((Step) rlp).getAxis()))
2044       {
2045           nodeType = DTM.ELEMENT_NODE;
2046       }
2047       final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2048       RESULT = new AbsoluteLocationPath(parser.insertStep(step,
2049                (RelativeLocationPath) rlp));
2050    
2051              CUP$XPathParser$result = new java_cup.runtime.Symbol(24/*AbbreviatedAbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2052            }
2053          return CUP$XPathParser$result;
2054
2055          /*. . . . . . . . . . . . . . . . . . . .*/
2056          case 75: // AbbreviatedRelativeLocationPath ::= RelativeLocationPath DSLASH Step
2057
{
2058              Expression RESULT = null;
2059        int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2060        int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2061        Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2062        int stepleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2063        int stepright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2064        Expression step = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2065         
2066       final Step right = (Step)step;
2067           final int axis = right.getAxis();
2068           final int type = right.getNodeType();
2069           final Vector JavaDoc predicates = right.getPredicates();
2070
2071           if ((axis == Axis.CHILD) && (type != NodeTest.ATTRIBUTE)) {
2072               // Compress './/child:E' into 'descendant::E' - if possible
2073
if (predicates == null) {
2074                   right.setAxis(Axis.DESCENDANT);
2075                   if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) {
2076                   RESULT = right;
2077                   }
2078                   else {
2079                       // Expand 'rlp//child::E' into 'rlp/descendant::E'
2080
RelativeLocationPath left = (RelativeLocationPath)rlp;
2081                   RESULT = new ParentLocationPath(left, right);
2082                   }
2083               }
2084               else {
2085                   // Expand './/step' -> 'descendant-or-self::*/step'
2086
if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) {
2087                       Step left = new Step(Axis.DESCENDANTORSELF,
2088                DTM.ELEMENT_NODE, null);
2089                       RESULT = new ParentLocationPath(left, right);
2090                   }
2091                   else {
2092                       // Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step'
2093
RelativeLocationPath left = (RelativeLocationPath)rlp;
2094                       Step mid = new Step(Axis.DESCENDANTORSELF,
2095                DTM.ELEMENT_NODE, null);
2096                       ParentLocationPath ppl = new ParentLocationPath(mid, right);
2097                       RESULT = new ParentLocationPath(left, ppl);
2098                   }
2099               }
2100           }
2101           else if ((axis == Axis.ATTRIBUTE) || (type == NodeTest.ATTRIBUTE)) {
2102               // Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step'
2103
RelativeLocationPath left = (RelativeLocationPath)rlp;
2104               Step middle = new Step(Axis.DESCENDANTORSELF,
2105            DTM.ELEMENT_NODE, null);
2106               ParentLocationPath ppl = new ParentLocationPath(middle, right);
2107               RESULT = new ParentLocationPath(left, ppl);
2108       }
2109       else {
2110           // Expand 'rlp//step' -> 'rlp/descendant-or-self::node()/step'
2111
RelativeLocationPath left = (RelativeLocationPath)rlp;
2112           Step middle = new Step(Axis.DESCENDANTORSELF,
2113            DOM.NO_TYPE, null);
2114               ParentLocationPath ppl = new ParentLocationPath(middle, right);
2115           RESULT = new ParentLocationPath(left, ppl);
2116       }
2117        
2118              CUP$XPathParser$result = new java_cup.runtime.Symbol(22/*AbbreviatedRelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2119            }
2120          return CUP$XPathParser$result;
2121
2122          /*. . . . . . . . . . . . . . . . . . . .*/
2123          case 74: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath
2124
{
2125              Expression RESULT = null;
2126        int aalpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2127        int aalpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2128        Expression aalp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2129         RESULT = aalp;
2130              CUP$XPathParser$result = new java_cup.runtime.Symbol(23/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2131            }
2132          return CUP$XPathParser$result;
2133
2134          /*. . . . . . . . . . . . . . . . . . . .*/
2135          case 73: // AbsoluteLocationPath ::= SLASH RelativeLocationPath
2136
{
2137              Expression RESULT = null;
2138        int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2139        int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2140        Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2141         RESULT = new AbsoluteLocationPath(rlp);
2142              CUP$XPathParser$result = new java_cup.runtime.Symbol(23/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2143            }
2144          return CUP$XPathParser$result;
2145
2146          /*. . . . . . . . . . . . . . . . . . . .*/
2147          case 72: // AbsoluteLocationPath ::= SLASH
2148
{
2149              Expression RESULT = null;
2150         RESULT = new AbsoluteLocationPath();
2151              CUP$XPathParser$result = new java_cup.runtime.Symbol(23/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2152            }
2153          return CUP$XPathParser$result;
2154
2155          /*. . . . . . . . . . . . . . . . . . . .*/
2156          case 71: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath
2157
{
2158              Expression RESULT = null;
2159        int arlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2160        int arlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2161        Expression arlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2162         RESULT = arlp;
2163              CUP$XPathParser$result = new java_cup.runtime.Symbol(21/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2164            }
2165          return CUP$XPathParser$result;
2166
2167          /*. . . . . . . . . . . . . . . . . . . .*/
2168          case 70: // RelativeLocationPath ::= RelativeLocationPath SLASH Step
2169
{
2170              Expression RESULT = null;
2171        int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2172        int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2173        Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2174        int stepleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2175        int stepright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2176        Expression step = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2177             
2178        if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) {
2179              RESULT = step; // Remove './' from the middle
2180
}
2181        else if (((Step) step).isAbbreviatedDot()) {
2182              RESULT = rlp; // Remove '/.' from the end
2183
}
2184        else {
2185             RESULT =
2186                new ParentLocationPath((RelativeLocationPath) rlp, step);
2187           }
2188        
2189              CUP$XPathParser$result = new java_cup.runtime.Symbol(21/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2190            }
2191          return CUP$XPathParser$result;
2192
2193          /*. . . . . . . . . . . . . . . . . . . .*/
2194          case 69: // RelativeLocationPath ::= Step
2195
{
2196              Expression RESULT = null;
2197        int stepleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2198        int stepright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2199        Expression step = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2200         RESULT = step;
2201              CUP$XPathParser$result = new java_cup.runtime.Symbol(21/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2202            }
2203          return CUP$XPathParser$result;
2204
2205          /*. . . . . . . . . . . . . . . . . . . .*/
2206          case 68: // LocationPath ::= AbsoluteLocationPath
2207
{
2208              Expression RESULT = null;
2209        int alpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2210        int alpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2211        Expression alp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2212         RESULT = alp;
2213              CUP$XPathParser$result = new java_cup.runtime.Symbol(4/*LocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2214            }
2215          return CUP$XPathParser$result;
2216
2217          /*. . . . . . . . . . . . . . . . . . . .*/
2218          case 67: // LocationPath ::= RelativeLocationPath
2219
{
2220              Expression RESULT = null;
2221        int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2222        int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2223        Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2224         RESULT = rlp;
2225              CUP$XPathParser$result = new java_cup.runtime.Symbol(4/*LocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2226            }
2227          return CUP$XPathParser$result;
2228
2229          /*. . . . . . . . . . . . . . . . . . . .*/
2230          case 66: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath
2231
{
2232              Expression RESULT = null;
2233        int fexpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2234        int fexpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2235        Expression fexp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2236        int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2237        int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2238        Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2239        
2240           //
2241
// Expand '//' into '/descendant-or-self::node()/' or
2242
// into /descendant-or-self::*/
2243
//
2244
int nodeType = DOM.NO_TYPE;
2245       if (rlp instanceof Step &&
2246           parser.isElementAxis(((Step) rlp).getAxis()))
2247       {
2248           nodeType = DTM.ELEMENT_NODE;
2249       }
2250           final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2251           FilterParentPath fpp = new FilterParentPath(fexp, step);
2252           fpp = new FilterParentPath(fpp, rlp);
2253           if (fexp instanceof KeyCall == false) {
2254               fpp.setDescendantAxis();
2255       }
2256           RESULT = fpp;
2257        
2258              CUP$XPathParser$result = new java_cup.runtime.Symbol(19/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2259            }
2260          return CUP$XPathParser$result;
2261
2262          /*. . . . . . . . . . . . . . . . . . . .*/
2263          case 65: // PathExpr ::= FilterExpr SLASH RelativeLocationPath
2264
{
2265              Expression RESULT = null;
2266        int fexpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2267        int fexpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2268        Expression fexp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2269        int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2270        int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2271        Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2272         RESULT = new FilterParentPath(fexp, rlp);
2273              CUP$XPathParser$result = new java_cup.runtime.Symbol(19/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2274            }
2275          return CUP$XPathParser$result;
2276
2277          /*. . . . . . . . . . . . . . . . . . . .*/
2278          case 64: // PathExpr ::= FilterExpr
2279
{
2280              Expression RESULT = null;
2281        int fexpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2282        int fexpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2283        Expression fexp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2284         RESULT = fexp;
2285              CUP$XPathParser$result = new java_cup.runtime.Symbol(19/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2286            }
2287          return CUP$XPathParser$result;
2288
2289          /*. . . . . . . . . . . . . . . . . . . .*/
2290          case 63: // PathExpr ::= LocationPath
2291
{
2292              Expression RESULT = null;
2293        int lpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2294        int lpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2295        Expression lp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2296         RESULT = lp;
2297              CUP$XPathParser$result = new java_cup.runtime.Symbol(19/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2298            }
2299          return CUP$XPathParser$result;
2300
2301          /*. . . . . . . . . . . . . . . . . . . .*/
2302          case 62: // UnionExpr ::= PathExpr VBAR UnionExpr
2303
{
2304              Expression RESULT = null;
2305        int peleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2306        int peright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2307        Expression pe = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2308        int restleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2309        int restright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2310        Expression rest = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2311         RESULT = new UnionPathExpr(pe, rest);
2312              CUP$XPathParser$result = new java_cup.runtime.Symbol(18/*UnionExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2313            }
2314          return CUP$XPathParser$result;
2315
2316          /*. . . . . . . . . . . . . . . . . . . .*/
2317          case 61: // UnionExpr ::= PathExpr
2318
{
2319              Expression RESULT = null;
2320        int peleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2321        int peright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2322        Expression pe = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2323         RESULT = pe;
2324              CUP$XPathParser$result = new java_cup.runtime.Symbol(18/*UnionExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2325            }
2326          return CUP$XPathParser$result;
2327
2328          /*. . . . . . . . . . . . . . . . . . . .*/
2329          case 60: // UnaryExpr ::= MINUS UnaryExpr
2330
{
2331              Expression RESULT = null;
2332        int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2333        int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2334        Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2335         RESULT = new UnaryOpExpr(ue);
2336              CUP$XPathParser$result = new java_cup.runtime.Symbol(14/*UnaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2337            }
2338          return CUP$XPathParser$result;
2339
2340          /*. . . . . . . . . . . . . . . . . . . .*/
2341          case 59: // UnaryExpr ::= UnionExpr
2342
{
2343              Expression RESULT = null;
2344        int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2345        int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2346        Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2347         RESULT = ue;
2348              CUP$XPathParser$result = new java_cup.runtime.Symbol(14/*UnaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2349            }
2350          return CUP$XPathParser$result;
2351
2352          /*. . . . . . . . . . . . . . . . . . . .*/
2353          case 58: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr
2354
{
2355              Expression RESULT = null;
2356        int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2357        int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2358        Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2359        int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2360        int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2361        Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2362         RESULT = new BinOpExpr(BinOpExpr.MOD, me, ue);
2363              CUP$XPathParser$result = new java_cup.runtime.Symbol(13/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2364            }
2365          return CUP$XPathParser$result;
2366
2367          /*. . . . . . . . . . . . . . . . . . . .*/
2368          case 57: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr
2369
{
2370              Expression RESULT = null;
2371        int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2372        int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2373        Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2374        int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2375        int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2376        Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2377         RESULT = new BinOpExpr(BinOpExpr.DIV, me, ue);
2378              CUP$XPathParser$result = new java_cup.runtime.Symbol(13/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2379            }
2380          return CUP$XPathParser$result;
2381
2382          /*. . . . . . . . . . . . . . . . . . . .*/
2383          case 56: // MultiplicativeExpr ::= MultiplicativeExpr STAR UnaryExpr
2384
{
2385              Expression RESULT = null;
2386        int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2387        int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2388        Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2389        int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2390        int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2391        Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2392         RESULT = new BinOpExpr(BinOpExpr.TIMES, me, ue);
2393              CUP$XPathParser$result = new java_cup.runtime.Symbol(13/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2394            }
2395          return CUP$XPathParser$result;
2396
2397          /*. . . . . . . . . . . . . . . . . . . .*/
2398          case 55: // MultiplicativeExpr ::= UnaryExpr
2399
{
2400              Expression RESULT = null;
2401        int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2402        int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2403        Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2404         RESULT = ue;
2405              CUP$XPathParser$result = new java_cup.runtime.Symbol(13/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2406            }
2407          return CUP$XPathParser$result;
2408
2409          /*. . . . . . . . . . . . . . . . . . . .*/
2410          case 54: // AdditiveExpr ::= AdditiveExpr MINUS MultiplicativeExpr
2411
{
2412              Expression RESULT = null;
2413        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2414        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2415        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2416        int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2417        int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2418        Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2419         RESULT = new BinOpExpr(BinOpExpr.MINUS, ae, me);
2420              CUP$XPathParser$result = new java_cup.runtime.Symbol(12/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2421            }
2422          return CUP$XPathParser$result;
2423
2424          /*. . . . . . . . . . . . . . . . . . . .*/
2425          case 53: // AdditiveExpr ::= AdditiveExpr PLUS MultiplicativeExpr
2426
{
2427              Expression RESULT = null;
2428        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2429        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2430        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2431        int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2432        int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2433        Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2434         RESULT = new BinOpExpr(BinOpExpr.PLUS, ae, me);
2435              CUP$XPathParser$result = new java_cup.runtime.Symbol(12/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2436            }
2437          return CUP$XPathParser$result;
2438
2439          /*. . . . . . . . . . . . . . . . . . . .*/
2440          case 52: // AdditiveExpr ::= MultiplicativeExpr
2441
{
2442              Expression RESULT = null;
2443        int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2444        int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2445        Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2446         RESULT = me;
2447              CUP$XPathParser$result = new java_cup.runtime.Symbol(12/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2448            }
2449          return CUP$XPathParser$result;
2450
2451          /*. . . . . . . . . . . . . . . . . . . .*/
2452          case 51: // RelationalExpr ::= RelationalExpr GE AdditiveExpr
2453
{
2454              Expression RESULT = null;
2455        int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2456        int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2457        Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2458        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2459        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2460        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2461         RESULT = new RelationalExpr(Operators.GE, re, ae);
2462              CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2463            }
2464          return CUP$XPathParser$result;
2465
2466          /*. . . . . . . . . . . . . . . . . . . .*/
2467          case 50: // RelationalExpr ::= RelationalExpr LE AdditiveExpr
2468
{
2469              Expression RESULT = null;
2470        int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2471        int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2472        Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2473        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2474        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2475        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2476         RESULT = new RelationalExpr(Operators.LE, re, ae);
2477              CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2478            }
2479          return CUP$XPathParser$result;
2480
2481          /*. . . . . . . . . . . . . . . . . . . .*/
2482          case 49: // RelationalExpr ::= RelationalExpr GT AdditiveExpr
2483
{
2484              Expression RESULT = null;
2485        int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2486        int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2487        Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2488        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2489        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2490        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2491         RESULT = new RelationalExpr(Operators.GT, re, ae);
2492              CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2493            }
2494          return CUP$XPathParser$result;
2495
2496          /*. . . . . . . . . . . . . . . . . . . .*/
2497          case 48: // RelationalExpr ::= RelationalExpr LT AdditiveExpr
2498
{
2499              Expression RESULT = null;
2500        int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2501        int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2502        Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2503        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2504        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2505        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2506         RESULT = new RelationalExpr(Operators.LT, re, ae);
2507              CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2508            }
2509          return CUP$XPathParser$result;
2510
2511          /*. . . . . . . . . . . . . . . . . . . .*/
2512          case 47: // RelationalExpr ::= AdditiveExpr
2513
{
2514              Expression RESULT = null;
2515        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2516        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2517        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2518         RESULT = ae;
2519              CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2520            }
2521          return CUP$XPathParser$result;
2522
2523          /*. . . . . . . . . . . . . . . . . . . .*/
2524          case 46: // EqualityExpr ::= EqualityExpr NE RelationalExpr
2525
{
2526              Expression RESULT = null;
2527        int eeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2528        int eeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2529        Expression ee = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2530        int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2531        int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2532        Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2533         RESULT = new EqualityExpr(Operators.NE, ee, re);
2534              CUP$XPathParser$result = new java_cup.runtime.Symbol(10/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2535            }
2536          return CUP$XPathParser$result;
2537
2538          /*. . . . . . . . . . . . . . . . . . . .*/
2539          case 45: // EqualityExpr ::= EqualityExpr EQ RelationalExpr
2540
{
2541              Expression RESULT = null;
2542        int eeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2543        int eeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2544        Expression ee = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2545        int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2546        int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2547        Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2548         RESULT = new EqualityExpr(Operators.EQ, ee, re);
2549              CUP$XPathParser$result = new java_cup.runtime.Symbol(10/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2550            }
2551          return CUP$XPathParser$result;
2552
2553          /*. . . . . . . . . . . . . . . . . . . .*/
2554          case 44: // EqualityExpr ::= RelationalExpr
2555
{
2556              Expression RESULT = null;
2557        int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2558        int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2559        Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2560         RESULT = re;
2561              CUP$XPathParser$result = new java_cup.runtime.Symbol(10/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2562            }
2563          return CUP$XPathParser$result;
2564
2565          /*. . . . . . . . . . . . . . . . . . . .*/
2566          case 43: // AndExpr ::= AndExpr AND EqualityExpr
2567
{
2568              Expression RESULT = null;
2569        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2570        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2571        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2572        int eeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2573        int eeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2574        Expression ee = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2575         RESULT = new LogicalExpr(LogicalExpr.AND, ae, ee);
2576              CUP$XPathParser$result = new java_cup.runtime.Symbol(9/*AndExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2577            }
2578          return CUP$XPathParser$result;
2579
2580          /*. . . . . . . . . . . . . . . . . . . .*/
2581          case 42: // AndExpr ::= EqualityExpr
2582
{
2583              Expression RESULT = null;
2584        int eleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2585        int eright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2586        Expression e = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2587         RESULT = e;
2588              CUP$XPathParser$result = new java_cup.runtime.Symbol(9/*AndExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2589            }
2590          return CUP$XPathParser$result;
2591
2592          /*. . . . . . . . . . . . . . . . . . . .*/
2593          case 41: // OrExpr ::= OrExpr OR AndExpr
2594
{
2595              Expression RESULT = null;
2596        int oeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2597        int oeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2598        Expression oe = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2599        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2600        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2601        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2602         RESULT = new LogicalExpr(LogicalExpr.OR, oe, ae);
2603              CUP$XPathParser$result = new java_cup.runtime.Symbol(8/*OrExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2604            }
2605          return CUP$XPathParser$result;
2606
2607          /*. . . . . . . . . . . . . . . . . . . .*/
2608          case 40: // OrExpr ::= AndExpr
2609
{
2610              Expression RESULT = null;
2611        int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2612        int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2613        Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2614         RESULT = ae;
2615              CUP$XPathParser$result = new java_cup.runtime.Symbol(8/*OrExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2616            }
2617          return CUP$XPathParser$result;
2618
2619          /*. . . . . . . . . . . . . . . . . . . .*/
2620          case 39: // Expr ::= OrExpr
2621
{
2622              Expression RESULT = null;
2623        int exleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2624        int exright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2625        Expression ex = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2626         RESULT = ex;
2627              CUP$XPathParser$result = new java_cup.runtime.Symbol(2/*Expr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2628            }
2629          return CUP$XPathParser$result;
2630
2631          /*. . . . . . . . . . . . . . . . . . . .*/
2632          case 38: // Predicate ::= LBRACK Expr RBRACK
2633
{
2634              Expression RESULT = null;
2635        int eleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2636        int eright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2637        Expression e = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2638        
2639        RESULT = new Predicate(e);
2640        
2641              CUP$XPathParser$result = new java_cup.runtime.Symbol(5/*Predicate*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2642            }
2643          return CUP$XPathParser$result;
2644
2645          /*. . . . . . . . . . . . . . . . . . . .*/
2646          case 37: // Predicates ::= Predicate Predicates
2647
{
2648              Vector JavaDoc RESULT = null;
2649        int pleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2650        int pright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2651        Expression p = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2652        int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2653        int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2654        Vector JavaDoc pp = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2655         pp.insertElementAt(p, 0); RESULT = pp;
2656              CUP$XPathParser$result = new java_cup.runtime.Symbol(35/*Predicates*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2657            }
2658          return CUP$XPathParser$result;
2659
2660          /*. . . . . . . . . . . . . . . . . . . .*/
2661          case 36: // Predicates ::= Predicate
2662
{
2663              Vector JavaDoc RESULT = null;
2664        int pleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2665        int pright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2666        Expression p = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2667         
2668        Vector JavaDoc temp = new Vector JavaDoc();
2669        temp.addElement(p);
2670        RESULT = temp;
2671            
2672              CUP$XPathParser$result = new java_cup.runtime.Symbol(35/*Predicates*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2673            }
2674          return CUP$XPathParser$result;
2675
2676          /*. . . . . . . . . . . . . . . . . . . .*/
2677          case 35: // ChildOrAttributeAxisSpecifier ::= ATTRIBUTE DCOLON
2678
{
2679              Integer JavaDoc RESULT = null;
2680         RESULT = new Integer JavaDoc(Axis.ATTRIBUTE);
2681              CUP$XPathParser$result = new java_cup.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2682            }
2683          return CUP$XPathParser$result;
2684
2685          /*. . . . . . . . . . . . . . . . . . . .*/
2686          case 34: // ChildOrAttributeAxisSpecifier ::= CHILD DCOLON
2687
{
2688              Integer JavaDoc RESULT = null;
2689         RESULT = new Integer JavaDoc(Axis.CHILD);
2690              CUP$XPathParser$result = new java_cup.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2691            }
2692          return CUP$XPathParser$result;
2693
2694          /*. . . . . . . . . . . . . . . . . . . .*/
2695          case 33: // ChildOrAttributeAxisSpecifier ::= ATSIGN
2696
{
2697              Integer JavaDoc RESULT = null;
2698         RESULT = new Integer JavaDoc(Axis.ATTRIBUTE);
2699              CUP$XPathParser$result = new java_cup.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2700            }
2701          return CUP$XPathParser$result;
2702
2703          /*. . . . . . . . . . . . . . . . . . . .*/
2704          case 32: // NameTestPattern ::= QName
2705
{
2706              Object JavaDoc RESULT = null;
2707        int qnleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2708        int qnright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2709        QName qn = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2710         RESULT = qn;
2711              CUP$XPathParser$result = new java_cup.runtime.Symbol(34/*NameTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2712            }
2713          return CUP$XPathParser$result;
2714
2715          /*. . . . . . . . . . . . . . . . . . . .*/
2716          case 31: // NameTestPattern ::= STAR
2717
{
2718              Object JavaDoc RESULT = null;
2719         RESULT = null;
2720              CUP$XPathParser$result = new java_cup.runtime.Symbol(34/*NameTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2721            }
2722          return CUP$XPathParser$result;
2723
2724          /*. . . . . . . . . . . . . . . . . . . .*/
2725          case 30: // NodeTestPattern ::= PI
2726
{
2727              Object JavaDoc RESULT = null;
2728         RESULT = new Integer JavaDoc(NodeTest.PI);
2729              CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2730            }
2731          return CUP$XPathParser$result;
2732
2733          /*. . . . . . . . . . . . . . . . . . . .*/
2734          case 29: // NodeTestPattern ::= COMMENT
2735
{
2736              Object JavaDoc RESULT = null;
2737         RESULT = new Integer JavaDoc(NodeTest.COMMENT);
2738              CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2739            }
2740          return CUP$XPathParser$result;
2741
2742          /*. . . . . . . . . . . . . . . . . . . .*/
2743          case 28: // NodeTestPattern ::= TEXT
2744
{
2745              Object JavaDoc RESULT = null;
2746         RESULT = new Integer JavaDoc(NodeTest.TEXT);
2747              CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2748            }
2749          return CUP$XPathParser$result;
2750
2751          /*. . . . . . . . . . . . . . . . . . . .*/
2752          case 27: // NodeTestPattern ::= NODE
2753
{
2754              Object JavaDoc RESULT = null;
2755         RESULT = new Integer JavaDoc(NodeTest.ANODE);
2756              CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2757            }
2758          return CUP$XPathParser$result;
2759
2760          /*. . . . . . . . . . . . . . . . . . . .*/
2761          case 26: // NodeTestPattern ::= NameTestPattern
2762
{
2763              Object JavaDoc RESULT = null;
2764        int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2765        int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2766        Object JavaDoc nt = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2767         RESULT = nt;
2768              CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2769            }
2770          return CUP$XPathParser$result;
2771
2772          /*. . . . . . . . . . . . . . . . . . . .*/
2773          case 25: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern Predicates
2774
{
2775              StepPattern RESULT = null;
2776        int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2777        int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2778        Integer JavaDoc axis = (Integer JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2779        int pipleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2780        int pipright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2781        StepPattern pip = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2782        int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2783        int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2784        Vector JavaDoc pp = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2785         
2786           // TODO: report error if axis is attribute
2787
RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2788        
2789              CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2790            }
2791          return CUP$XPathParser$result;
2792
2793          /*. . . . . . . . . . . . . . . . . . . .*/
2794          case 24: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern
2795
{
2796              StepPattern RESULT = null;
2797        int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2798        int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2799        Integer JavaDoc axis = (Integer JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2800        int pipleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2801        int pipright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2802        StepPattern pip = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2803         
2804           RESULT = pip; // TODO: report error if axis is attribute
2805

2806              CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2807            }
2808          return CUP$XPathParser$result;
2809
2810          /*. . . . . . . . . . . . . . . . . . . .*/
2811          case 23: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern Predicates
2812
{
2813              StepPattern RESULT = null;
2814        int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2815        int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2816        Integer JavaDoc axis = (Integer JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2817        int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2818        int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2819        Object JavaDoc nt = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2820        int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2821        int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2822        Vector JavaDoc pp = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2823         
2824           RESULT = parser.createStepPattern(axis.intValue(), nt, pp);
2825            
2826              CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2827            }
2828          return CUP$XPathParser$result;
2829
2830          /*. . . . . . . . . . . . . . . . . . . .*/
2831          case 22: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern
2832
{
2833              StepPattern RESULT = null;
2834        int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2835        int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2836        Integer JavaDoc axis = (Integer JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2837        int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2838        int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2839        Object JavaDoc nt = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2840         
2841           RESULT = parser.createStepPattern(axis.intValue(), nt, null);
2842            
2843              CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2844            }
2845          return CUP$XPathParser$result;
2846
2847          /*. . . . . . . . . . . . . . . . . . . .*/
2848          case 21: // StepPattern ::= ProcessingInstructionPattern Predicates
2849
{
2850              StepPattern RESULT = null;
2851        int pipleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2852        int pipright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2853        StepPattern pip = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2854        int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2855        int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2856        Vector JavaDoc pp = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2857         RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2858              CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2859            }
2860          return CUP$XPathParser$result;
2861
2862          /*. . . . . . . . . . . . . . . . . . . .*/
2863          case 20: // StepPattern ::= ProcessingInstructionPattern
2864
{
2865              StepPattern RESULT = null;
2866        int pipleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2867        int pipright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2868        StepPattern pip = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2869         RESULT = pip;
2870              CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2871            }
2872          return CUP$XPathParser$result;
2873
2874          /*. . . . . . . . . . . . . . . . . . . .*/
2875          case 19: // StepPattern ::= NodeTestPattern Predicates
2876
{
2877              StepPattern RESULT = null;
2878        int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2879        int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2880        Object JavaDoc nt = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2881        int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2882        int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2883        Vector JavaDoc pp = (Vector JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2884         
2885        RESULT = parser.createStepPattern(Axis.CHILD, nt, pp);
2886            
2887              CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2888            }
2889          return CUP$XPathParser$result;
2890
2891          /*. . . . . . . . . . . . . . . . . . . .*/
2892          case 18: // StepPattern ::= NodeTestPattern
2893
{
2894              StepPattern RESULT = null;
2895        int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2896        int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2897        Object JavaDoc nt = (Object JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2898         
2899        RESULT = parser.createStepPattern(Axis.CHILD, nt, null);
2900            
2901              CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2902            }
2903          return CUP$XPathParser$result;
2904
2905          /*. . . . . . . . . . . . . . . . . . . .*/
2906          case 17: // RelativePathPattern ::= StepPattern DSLASH RelativePathPattern
2907
{
2908              RelativePathPattern RESULT = null;
2909        int spleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2910        int spright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2911        StepPattern sp = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2912        int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2913        int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2914        RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2915         RESULT = new AncestorPattern(sp, rpp);
2916              CUP$XPathParser$result = new java_cup.runtime.Symbol(31/*RelativePathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2917            }
2918          return CUP$XPathParser$result;
2919
2920          /*. . . . . . . . . . . . . . . . . . . .*/
2921          case 16: // RelativePathPattern ::= StepPattern SLASH RelativePathPattern
2922
{
2923              RelativePathPattern RESULT = null;
2924        int spleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
2925        int spright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
2926        StepPattern sp = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
2927        int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2928        int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2929        RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2930         RESULT = new ParentPattern(sp, rpp);
2931              CUP$XPathParser$result = new java_cup.runtime.Symbol(31/*RelativePathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2932            }
2933          return CUP$XPathParser$result;
2934
2935          /*. . . . . . . . . . . . . . . . . . . .*/
2936          case 15: // RelativePathPattern ::= StepPattern
2937
{
2938              RelativePathPattern RESULT = null;
2939        int spleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2940        int spright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2941        StepPattern sp = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2942         RESULT = sp;
2943              CUP$XPathParser$result = new java_cup.runtime.Symbol(31/*RelativePathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2944            }
2945          return CUP$XPathParser$result;
2946
2947          /*. . . . . . . . . . . . . . . . . . . .*/
2948          case 14: // ProcessingInstructionPattern ::= PIPARAM LPAREN Literal RPAREN
2949
{
2950              StepPattern RESULT = null;
2951        int lleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2952        int lright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2953        String JavaDoc l = (String JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2954         RESULT = new ProcessingInstructionPattern(l);
2955              CUP$XPathParser$result = new java_cup.runtime.Symbol(30/*ProcessingInstructionPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2956            }
2957          return CUP$XPathParser$result;
2958
2959          /*. . . . . . . . . . . . . . . . . . . .*/
2960          case 13: // IdKeyPattern ::= KEY LPAREN Literal COMMA Literal RPAREN
2961
{
2962              IdKeyPattern RESULT = null;
2963        int l1left = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left;
2964        int l1right = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).right;
2965        String JavaDoc l1 = (String JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).value;
2966        int l2left = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2967        int l2right = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2968        String JavaDoc l2 = (String JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2969         RESULT = new KeyPattern(l1, l2);
2970              CUP$XPathParser$result = new java_cup.runtime.Symbol(27/*IdKeyPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-5)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2971            }
2972          return CUP$XPathParser$result;
2973
2974          /*. . . . . . . . . . . . . . . . . . . .*/
2975          case 12: // IdKeyPattern ::= ID LPAREN Literal RPAREN
2976
{
2977              IdKeyPattern RESULT = null;
2978        int lleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
2979        int lright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
2980        String JavaDoc l = (String JavaDoc)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
2981         RESULT = new IdPattern(l);
2982               parser.setHasIdCall(true);
2983            
2984              CUP$XPathParser$result = new java_cup.runtime.Symbol(27/*IdKeyPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2985            }
2986          return CUP$XPathParser$result;
2987
2988          /*. . . . . . . . . . . . . . . . . . . .*/
2989          case 11: // LocationPathPattern ::= RelativePathPattern
2990
{
2991              Pattern RESULT = null;
2992        int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
2993        int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
2994        RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
2995         RESULT = rpp;
2996              CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
2997            }
2998          return CUP$XPathParser$result;
2999
3000          /*. . . . . . . . . . . . . . . . . . . .*/
3001          case 10: // LocationPathPattern ::= DSLASH RelativePathPattern
3002
{
3003              Pattern RESULT = null;
3004        int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3005        int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3006        RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3007         RESULT = new AncestorPattern(rpp);
3008              CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3009            }
3010          return CUP$XPathParser$result;
3011
3012          /*. . . . . . . . . . . . . . . . . . . .*/
3013          case 9: // LocationPathPattern ::= IdKeyPattern DSLASH RelativePathPattern
3014
{
3015              Pattern RESULT = null;
3016        int ikpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
3017        int ikpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
3018        IdKeyPattern ikp = (IdKeyPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
3019        int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3020        int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3021        RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3022         RESULT = new AncestorPattern(ikp, rpp);
3023              CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3024            }
3025          return CUP$XPathParser$result;
3026
3027          /*. . . . . . . . . . . . . . . . . . . .*/
3028          case 8: // LocationPathPattern ::= IdKeyPattern SLASH RelativePathPattern
3029
{
3030              Pattern RESULT = null;
3031        int ikpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
3032        int ikpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
3033        IdKeyPattern ikp = (IdKeyPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
3034        int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3035        int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3036        RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3037         RESULT = new ParentPattern(ikp, rpp);
3038              CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3039            }
3040          return CUP$XPathParser$result;
3041
3042          /*. . . . . . . . . . . . . . . . . . . .*/
3043          case 7: // LocationPathPattern ::= IdKeyPattern
3044
{
3045              Pattern RESULT = null;
3046        int ikpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3047        int ikpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3048        IdKeyPattern ikp = (IdKeyPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3049         RESULT = ikp;
3050              CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3051            }
3052          return CUP$XPathParser$result;
3053
3054          /*. . . . . . . . . . . . . . . . . . . .*/
3055          case 6: // LocationPathPattern ::= SLASH RelativePathPattern
3056
{
3057              Pattern RESULT = null;
3058        int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3059        int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3060        RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3061         RESULT = new AbsolutePathPattern(rpp);
3062              CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3063            }
3064          return CUP$XPathParser$result;
3065
3066          /*. . . . . . . . . . . . . . . . . . . .*/
3067          case 5: // LocationPathPattern ::= SLASH
3068
{
3069              Pattern RESULT = null;
3070         RESULT = new AbsolutePathPattern(null);
3071              CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3072            }
3073          return CUP$XPathParser$result;
3074
3075          /*. . . . . . . . . . . . . . . . . . . .*/
3076          case 4: // Pattern ::= LocationPathPattern VBAR Pattern
3077
{
3078              Pattern RESULT = null;
3079        int lppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left;
3080        int lppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right;
3081        Pattern lpp = (Pattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value;
3082        int pleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3083        int pright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3084        Pattern p = (Pattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3085         RESULT = new AlternativePattern(lpp, p);
3086              CUP$XPathParser$result = new java_cup.runtime.Symbol(28/*Pattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3087            }
3088          return CUP$XPathParser$result;
3089
3090          /*. . . . . . . . . . . . . . . . . . . .*/
3091          case 3: // Pattern ::= LocationPathPattern
3092
{
3093              Pattern RESULT = null;
3094        int lppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3095        int lppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3096        Pattern lpp = (Pattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3097         RESULT = lpp;
3098              CUP$XPathParser$result = new java_cup.runtime.Symbol(28/*Pattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3099            }
3100          return CUP$XPathParser$result;
3101
3102          /*. . . . . . . . . . . . . . . . . . . .*/
3103          case 2: // TopLevel ::= EXPRESSION Expr
3104
{
3105              SyntaxTreeNode RESULT = null;
3106        int exprleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3107        int exprright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3108        Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3109         RESULT = expr;
3110              CUP$XPathParser$result = new java_cup.runtime.Symbol(1/*TopLevel*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3111            }
3112          return CUP$XPathParser$result;
3113
3114          /*. . . . . . . . . . . . . . . . . . . .*/
3115          case 1: // TopLevel ::= PATTERN Pattern
3116
{
3117              SyntaxTreeNode RESULT = null;
3118        int patternleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left;
3119        int patternright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right;
3120        Pattern pattern = (Pattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value;
3121         RESULT = pattern;
3122              CUP$XPathParser$result = new java_cup.runtime.Symbol(1/*TopLevel*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3123            }
3124          return CUP$XPathParser$result;
3125
3126          /*. . . . . . . . . . . . . . . . . . . .*/
3127          case 0: // $START ::= TopLevel EOF
3128
{
3129              Object JavaDoc RESULT = null;
3130        int start_valleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left;
3131        int start_valright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right;
3132        SyntaxTreeNode start_val = (SyntaxTreeNode)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value;
3133        RESULT = start_val;
3134              CUP$XPathParser$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT);
3135            }
3136          /* ACCEPT */
3137          CUP$XPathParser$parser.done_parsing();
3138          return CUP$XPathParser$result;
3139
3140          /* . . . . . .*/
3141          default:
3142            throw new Exception JavaDoc(
3143               "Invalid action number found in internal parse table");
3144
3145        }
3146    }
3147}
3148
3149
Popular Tags