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