in src/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XPathParser.java [1161:2779]
public final Symbol parser_do_action(
int parser_act_num,
lr_parser parser_parser,
Stack<Symbol> parser_stack,
int parser_top)
throws java.lang.Exception {
/* Symbol object for return from actions */
Symbol parser_result;
/* select the action based on the action number */
switch (parser_act_num) {
/*. . . . . . . . . . . . . . . . . . . .*/
case 0: // $START ::= TopLevel EOF
{
SyntaxTreeNode start_val = (SyntaxTreeNode) (parser_stack.get(parser_top - 1)).value;
parser_result = new Symbol(0, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, start_val);
}
/* ACCEPT */
parser_parser.done_parsing();
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 1: // TopLevel ::= PATTERN Pattern
{
Pattern pattern = (Pattern) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(1, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, pattern);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 2: // TopLevel ::= EXPRESSION Expr
{
Expression expr = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(1, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, expr);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 3: // Pattern ::= LocationPathPattern
{
Pattern lpp = (Pattern) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(28, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, lpp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 4: // Pattern ::= LocationPathPattern VBAR Pattern
{
Pattern lpp = (Pattern) (parser_stack.get(parser_top - 2)).value;
Pattern p = (Pattern) (parser_stack.get(parser_top - 0)).value;
Pattern result = new AlternativePattern(lpp, p);
parser_result = new Symbol(28, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 5: // LocationPathPattern ::= SLASH
{
Pattern result = new AbsolutePathPattern(null);
parser_result = new Symbol(29, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 6: // LocationPathPattern ::= SLASH RelativePathPattern
{
RelativePathPattern rpp = (RelativePathPattern) (parser_stack.get(parser_top - 0)).value;
Pattern result = new AbsolutePathPattern(rpp);
parser_result = new Symbol(29, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 7: // LocationPathPattern ::= IdKeyPattern
{
IdKeyPattern ikp = (IdKeyPattern) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(29, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, ikp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 8: // LocationPathPattern ::= IdKeyPattern SLASH RelativePathPattern
{
IdKeyPattern ikp = (IdKeyPattern) (parser_stack.get(parser_top - 2)).value;
RelativePathPattern rpp = (RelativePathPattern) (parser_stack.get(parser_top - 0)).value;
Pattern result = new ParentPattern(ikp, rpp);
parser_result = new Symbol(29, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 9: // LocationPathPattern ::= IdKeyPattern DSLASH RelativePathPattern
{
IdKeyPattern ikp = (IdKeyPattern) (parser_stack.get(parser_top - 2)).value;
RelativePathPattern rpp = (RelativePathPattern) (parser_stack.get(parser_top - 0)).value;
Pattern result = new AncestorPattern(ikp, rpp);
parser_result = new Symbol(29, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 10: // LocationPathPattern ::= DSLASH RelativePathPattern
{
RelativePathPattern rpp = (RelativePathPattern) (parser_stack.get(parser_top - 0)).value;
Pattern result = new AncestorPattern(rpp);
parser_result = new Symbol(29, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 11: // LocationPathPattern ::= RelativePathPattern
{
RelativePathPattern rpp = (RelativePathPattern) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(29, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, rpp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 12: // IdKeyPattern ::= ID LPAREN Literal RPAREN
{
String l = (String) (parser_stack.get(parser_top - 1)).value;
IdKeyPattern result = new IdPattern(l);
parser.setHasIdCall(true);
parser_result = new Symbol(27, (parser_stack.get(parser_top - 3)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 13: // IdKeyPattern ::= KEY LPAREN Literal COMMA Literal RPAREN
{
String l1 = (String) (parser_stack.get(parser_top - 3)).value;
String l2 = (String) (parser_stack.get(parser_top - 1)).value;
IdKeyPattern result = new KeyPattern(l1, l2);
parser_result = new Symbol(27, (parser_stack.get(parser_top - 5)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 14: // ProcessingInstructionPattern ::= PIPARAM LPAREN Literal RPAREN
{
String l = (String) (parser_stack.get(parser_top - 1)).value;
StepPattern result = new ProcessingInstructionPattern(l);
parser_result = new Symbol(30, (parser_stack.get(parser_top - 3)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 15: // RelativePathPattern ::= StepPattern
{
StepPattern sp = (StepPattern) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(31, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, sp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 16: // RelativePathPattern ::= StepPattern SLASH RelativePathPattern
{
StepPattern sp = (StepPattern) (parser_stack.get(parser_top - 2)).value;
RelativePathPattern rpp = (RelativePathPattern) (parser_stack.get(parser_top - 0)).value;
RelativePathPattern result = new ParentPattern(sp, rpp);
parser_result = new Symbol(31, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 17: // RelativePathPattern ::= StepPattern DSLASH RelativePathPattern
{
StepPattern sp = (StepPattern) (parser_stack.get(parser_top - 2)).value;
RelativePathPattern rpp = (RelativePathPattern) (parser_stack.get(parser_top - 0)).value;
RelativePathPattern result = new AncestorPattern(sp, rpp);
parser_result = new Symbol(31, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 18: // StepPattern ::= NodeTestPattern
{
Object nt = parser_stack.get(parser_top - 0).value;
StepPattern result = parser.createStepPattern(Axis.CHILD, nt, null);
parser_result = new Symbol(32, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 19: // StepPattern ::= NodeTestPattern Predicates
{
Object nt = parser_stack.get(parser_top - 1).value;
@SuppressWarnings("unchecked")
Vector pp = (Vector) (parser_stack.get(parser_top - 0)).value;
StepPattern result = parser.createStepPattern(Axis.CHILD, nt, pp);
parser_result = new Symbol(32, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 20: // StepPattern ::= ProcessingInstructionPattern
{
StepPattern pip = (StepPattern) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(32, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, pip);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 21: // StepPattern ::= ProcessingInstructionPattern Predicates
{
StepPattern pip = (StepPattern) (parser_stack.get(parser_top - 1)).value;
@SuppressWarnings("unchecked")
Vector pp = (Vector) (parser_stack.get(parser_top - 0)).value;
StepPattern result = (ProcessingInstructionPattern) pip.setPredicates(pp);
parser_result = new Symbol(32, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 22: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern
{
Integer axis = (Integer) (parser_stack.get(parser_top - 1)).value;
Object nt = parser_stack.get(parser_top - 0).value;
StepPattern result = parser.createStepPattern(axis, nt, null);
parser_result = new Symbol(32, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 23: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern Predicates
{
Integer axis = (Integer) (parser_stack.get(parser_top - 2)).value;
Object nt = parser_stack.get(parser_top - 1).value;
@SuppressWarnings("unchecked")
Vector pp = (Vector) (parser_stack.get(parser_top - 0)).value;
StepPattern result = parser.createStepPattern(axis, nt, pp);
parser_result = new Symbol(32, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 24: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern
{
StepPattern pip = (StepPattern) (parser_stack.get(parser_top - 0)).value;
StepPattern result = pip; // TODO: report error if axis is attribute
parser_result = new Symbol(32, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 25: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern Predicates
{
StepPattern pip = (StepPattern) (parser_stack.get(parser_top - 1)).value;
@SuppressWarnings("unchecked")
Vector pp = (Vector) (parser_stack.get(parser_top - 0)).value;
// TODO: report error if axis is attribute
StepPattern result = (ProcessingInstructionPattern) pip.setPredicates(pp);
parser_result = new Symbol(32, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 26: // NodeTestPattern ::= NameTestPattern
{
Object nt = parser_stack.get(parser_top - 0).value;
parser_result = new Symbol(33, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, nt);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 27: // NodeTestPattern ::= NODE
{
Object result = NodeTest.ANODE;
parser_result = new Symbol(33, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 28: // NodeTestPattern ::= TEXT
{
Object result = NodeTest.TEXT;
parser_result = new Symbol(33, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 29: // NodeTestPattern ::= COMMENT
{
Object result = NodeTest.COMMENT;
parser_result = new Symbol(33, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 30: // NodeTestPattern ::= PI
{
Object result = NodeTest.PI;
parser_result = new Symbol(33, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 31: // NameTestPattern ::= STAR
{
Object result = null;
parser_result = new Symbol(34, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 32: // NameTestPattern ::= QName
{
QName qn = (QName) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(34, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, qn);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 33: // ChildOrAttributeAxisSpecifier ::= ATSIGN
{
Integer result = Axis.ATTRIBUTE;
parser_result = new Symbol(42, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 34: // ChildOrAttributeAxisSpecifier ::= CHILD DCOLON
{
Integer result = Axis.CHILD;
parser_result = new Symbol(42, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 35: // ChildOrAttributeAxisSpecifier ::= ATTRIBUTE DCOLON
{
Integer result = Axis.ATTRIBUTE;
parser_result = new Symbol(42, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 36: // Predicates ::= Predicate
{
Expression p = (Expression) (parser_stack.get(parser_top - 0)).value;
Vector temp = new Vector();
temp.add(p);
parser_result = new Symbol(35, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, temp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 37: // Predicates ::= Predicate Predicates
{
Expression p = (Expression) (parser_stack.get(parser_top - 1)).value;
@SuppressWarnings("unchecked")
Vector pp = (Vector) (parser_stack.get(parser_top - 0)).value;
pp.add(0, p);
parser_result = new Symbol(35, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, pp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 38: // Predicate ::= LBRACK Expr RBRACK
{
Expression e = (Expression) (parser_stack.get(parser_top - 1)).value;
Expression result = new Predicate(e);
parser_result = new Symbol(5, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 39: // Expr ::= OrExpr
{
Expression ex = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(2, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, ex);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 40: // OrExpr ::= AndExpr
{
Expression ae = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(8, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, ae);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 41: // OrExpr ::= OrExpr OR AndExpr
{
Expression oe = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ae = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new LogicalExpr(LogicalExpr.OR, oe, ae);
parser_result = new Symbol(8, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 42: // AndExpr ::= EqualityExpr
{
Expression e = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(9, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, e);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 43: // AndExpr ::= AndExpr AND EqualityExpr
{
Expression ae = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ee = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new LogicalExpr(LogicalExpr.AND, ae, ee);
parser_result = new Symbol(9, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 44: // EqualityExpr ::= RelationalExpr
{
Expression re = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(10, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, re);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 45: // EqualityExpr ::= EqualityExpr EQ RelationalExpr
{
Expression ee = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression re = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new EqualityExpr(Operators.EQ, ee, re);
parser_result = new Symbol(10, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 46: // EqualityExpr ::= EqualityExpr NE RelationalExpr
{
Expression ee = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression re = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new EqualityExpr(Operators.NE, ee, re);
parser_result = new Symbol(10, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 47: // RelationalExpr ::= AdditiveExpr
{
Expression ae = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(11, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, ae);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 48: // RelationalExpr ::= RelationalExpr LT AdditiveExpr
{
Expression re = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ae = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new RelationalExpr(Operators.LT, re, ae);
parser_result = new Symbol(11, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 49: // RelationalExpr ::= RelationalExpr GT AdditiveExpr
{
Expression re = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ae = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new RelationalExpr(Operators.GT, re, ae);
parser_result = new Symbol(11, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 50: // RelationalExpr ::= RelationalExpr LE AdditiveExpr
{
Expression re = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ae = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new RelationalExpr(Operators.LE, re, ae);
parser_result = new Symbol(11, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 51: // RelationalExpr ::= RelationalExpr GE AdditiveExpr
{
Expression re = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ae = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new RelationalExpr(Operators.GE, re, ae);
parser_result = new Symbol(11, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 52: // AdditiveExpr ::= MultiplicativeExpr
{
Expression me = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(12, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, me);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 53: // AdditiveExpr ::= AdditiveExpr PLUS MultiplicativeExpr
{
Expression ae = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression me = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new BinOpExpr(BinOpExpr.PLUS, ae, me);
parser_result = new Symbol(12, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 54: // AdditiveExpr ::= AdditiveExpr MINUS MultiplicativeExpr
{
Expression ae = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression me = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new BinOpExpr(BinOpExpr.MINUS, ae, me);
parser_result = new Symbol(12, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 55: // MultiplicativeExpr ::= UnaryExpr
{
Expression ue = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(13, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, ue);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 56: // MultiplicativeExpr ::= MultiplicativeExpr STAR UnaryExpr
{
Expression me = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ue = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new BinOpExpr(BinOpExpr.TIMES, me, ue);
parser_result = new Symbol(13, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 57: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr
{
Expression me = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ue = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new BinOpExpr(BinOpExpr.DIV, me, ue);
parser_result = new Symbol(13, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 58: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr
{
Expression me = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression ue = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new BinOpExpr(BinOpExpr.MOD, me, ue);
parser_result = new Symbol(13, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 59: // UnaryExpr ::= UnionExpr
{
Expression ue = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(14, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, ue);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 60: // UnaryExpr ::= MINUS UnaryExpr
{
Expression ue = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new UnaryOpExpr(ue);
parser_result = new Symbol(14, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 61: // UnionExpr ::= PathExpr
{
Expression pe = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(18, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, pe);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 62: // UnionExpr ::= PathExpr VBAR UnionExpr
{
Expression pe = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression rest = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new UnionPathExpr(pe, rest);
parser_result = new Symbol(18, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 63: // PathExpr ::= LocationPath
{
Expression lp = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(19, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, lp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 64: // PathExpr ::= FilterExpr
{
Expression fexp = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(19, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, fexp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 65: // PathExpr ::= FilterExpr SLASH RelativeLocationPath
{
Expression fexp = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression rlp = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new FilterParentPath(fexp, rlp);
parser_result = new Symbol(19, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 66: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath
{
Expression fexp = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression rlp = (Expression) (parser_stack.get(parser_top - 0)).value;
//
// Expand '//' into '/descendant-or-self::node()/' or
// into /descendant-or-self::*/
//
int nodeType = DOM.NO_TYPE;
if (rlp instanceof Step
&& parser.isElementAxis(((Step) rlp).getAxis())) {
nodeType = DTM.ELEMENT_NODE;
}
final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
FilterParentPath fpp = new FilterParentPath(fexp, step);
fpp = new FilterParentPath(fpp, rlp);
if (fexp instanceof KeyCall == false) {
fpp.setDescendantAxis();
}
parser_result = new Symbol(19, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, fpp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 67: // LocationPath ::= RelativeLocationPath
{
Expression rlp = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(4, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, rlp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 68: // LocationPath ::= AbsoluteLocationPath
{
Expression alp = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(4, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, alp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 69: // RelativeLocationPath ::= Step
{
Expression step = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(21, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, step);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 70: // RelativeLocationPath ::= RelativeLocationPath SLASH Step
{
Expression result = null;
Expression rlp = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression step = (Expression) (parser_stack.get(parser_top - 0)).value;
if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) {
result = step; // Remove './' from the middle
} else if (((Step) step).isAbbreviatedDot()) {
result = rlp; // Remove '/.' from the end
} else {
result
= new ParentLocationPath((RelativeLocationPath) rlp, step);
}
parser_result = new Symbol(21, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 71: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath
{
Expression arlp = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(21, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, arlp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 72: // AbsoluteLocationPath ::= SLASH
{
Expression result = new AbsoluteLocationPath();
parser_result = new Symbol(23, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 73: // AbsoluteLocationPath ::= SLASH RelativeLocationPath
{
Expression rlp = (Expression) (parser_stack.get(parser_top - 0)).value;
Expression result = new AbsoluteLocationPath(rlp);
parser_result = new Symbol(23, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 74: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath
{
Expression aalp = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(23, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, aalp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 75: // AbbreviatedRelativeLocationPath ::= RelativeLocationPath DSLASH Step
{
Expression result = null;
Expression rlp = (Expression) (parser_stack.get(parser_top - 2)).value;
Expression step = (Expression) (parser_stack.get(parser_top - 0)).value;
final Step right = (Step) step;
final int axis = right.getAxis();
final int type = right.getNodeType();
final Vector predicates = right.getPredicates();
if ((axis == Axis.CHILD) && (type != NodeTest.ATTRIBUTE)) {
// Compress './/child:E' into 'descendant::E' - if possible
if (predicates == null) {
right.setAxis(Axis.DESCENDANT);
if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) {
result = right;
} else {
// Expand 'rlp//child::E' into 'rlp/descendant::E'
RelativeLocationPath left = (RelativeLocationPath) rlp;
result = new ParentLocationPath(left, right);
}
} else // Expand './/step' -> 'descendant-or-self::*/step'
if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) {
Step left = new Step(Axis.DESCENDANTORSELF,
DTM.ELEMENT_NODE, null);
result = new ParentLocationPath(left, right);
} else {
// Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step'
RelativeLocationPath left = (RelativeLocationPath) rlp;
Step mid = new Step(Axis.DESCENDANTORSELF,
DTM.ELEMENT_NODE, null);
ParentLocationPath ppl = new ParentLocationPath(mid, right);
result = new ParentLocationPath(left, ppl);
}
} else if ((axis == Axis.ATTRIBUTE) || (type == NodeTest.ATTRIBUTE)) {
// Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step'
RelativeLocationPath left = (RelativeLocationPath) rlp;
Step middle = new Step(Axis.DESCENDANTORSELF,
DTM.ELEMENT_NODE, null);
ParentLocationPath ppl = new ParentLocationPath(middle, right);
result = new ParentLocationPath(left, ppl);
} else {
// Expand 'rlp//step' -> 'rlp/descendant-or-self::node()/step'
RelativeLocationPath left = (RelativeLocationPath) rlp;
Step middle = new Step(Axis.DESCENDANTORSELF,
DOM.NO_TYPE, null);
ParentLocationPath ppl = new ParentLocationPath(middle, right);
result = new ParentLocationPath(left, ppl);
}
parser_result = new Symbol(22, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 76: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath
{
Expression rlp = (Expression) (parser_stack.get(parser_top - 0)).value;
//
// Expand '//' into '/descendant-or-self::node()/' or
// into /descendant-or-self::*/
//
int nodeType = DOM.NO_TYPE;
if (rlp instanceof Step
&& parser.isElementAxis(((Step) rlp).getAxis())) {
nodeType = DTM.ELEMENT_NODE;
}
final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
Expression result = new AbsoluteLocationPath(parser.insertStep(step,
(RelativeLocationPath) rlp));
parser_result = new Symbol(24, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 77: // Step ::= NodeTest
{
Expression result = null;
Object ntest = parser_stack.get(parser_top - 0).value;
if (ntest instanceof Step) {
result = (Step) ntest;
} else {
result = new Step(Axis.CHILD,
parser.findNodeType(Axis.CHILD, ntest),
null);
}
parser_result = new Symbol(7, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 78: // Step ::= NodeTest Predicates
{
Expression result = null;
Object ntest = parser_stack.get(parser_top - 1).value;
@SuppressWarnings("unchecked")
Vector pp = (Vector) (parser_stack.get(parser_top - 0)).value;
if (ntest instanceof Step) {
Step step = (Step) ntest;
step.addPredicates(pp);
result = (Step) ntest;
} else {
result = new Step(Axis.CHILD,
parser.findNodeType(Axis.CHILD, ntest), pp);
}
parser_result = new Symbol(7, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 79: // Step ::= AxisSpecifier NodeTest Predicates
{
Integer axis = (Integer) (parser_stack.get(parser_top - 2)).value;
Object ntest = parser_stack.get(parser_top - 1).value;
@SuppressWarnings("unchecked")
Vector pp = (Vector) (parser_stack.get(parser_top - 0)).value;
Expression result = new Step(axis, parser.findNodeType(axis, ntest), pp);
parser_result = new Symbol(7, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 80: // Step ::= AxisSpecifier NodeTest
{
Integer axis = (Integer) (parser_stack.get(parser_top - 1)).value;
Object ntest = parser_stack.get(parser_top - 0).value;
Expression result = new Step(axis, parser.findNodeType(axis, ntest), null);
parser_result = new Symbol(7, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 81: // Step ::= AbbreviatedStep
{
Expression abbrev = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(7, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, abbrev);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 82: // AxisSpecifier ::= AxisName DCOLON
{
Integer an = (Integer) (parser_stack.get(parser_top - 1)).value;
parser_result = new Symbol(41, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, an);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 83: // AxisSpecifier ::= ATSIGN
{
Integer result = Axis.ATTRIBUTE;
parser_result = new Symbol(41, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 84: // AxisName ::= ANCESTOR
{
Integer result = Axis.ANCESTOR;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 85: // AxisName ::= ANCESTORORSELF
{
Integer result = Axis.ANCESTORORSELF;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 86: // AxisName ::= ATTRIBUTE
{
Integer result = Axis.ATTRIBUTE;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 87: // AxisName ::= CHILD
{
Integer result = Axis.CHILD;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 88: // AxisName ::= DESCENDANT
{
Integer result = Axis.DESCENDANT;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 89: // AxisName ::= DESCENDANTORSELF
{
Integer result = Axis.DESCENDANTORSELF;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 90: // AxisName ::= FOLLOWING
{
Integer result = Axis.FOLLOWING;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 91: // AxisName ::= FOLLOWINGSIBLING
{
Integer result = Axis.FOLLOWINGSIBLING;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 92: // AxisName ::= NAMESPACE
{
Integer result = Axis.NAMESPACE;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 93: // AxisName ::= PARENT
{
Integer result = Axis.PARENT;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 94: // AxisName ::= PRECEDING
{
Integer result = Axis.PRECEDING;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 95: // AxisName ::= PRECEDINGSIBLING
{
Integer result = Axis.PRECEDINGSIBLING;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 96: // AxisName ::= SELF
{
Integer result = Axis.SELF;
parser_result = new Symbol(40, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 97: // AbbreviatedStep ::= DOT
{
Expression result = new Step(Axis.SELF, NodeTest.ANODE, null);
parser_result = new Symbol(20, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 98: // AbbreviatedStep ::= DDOT
{
Expression result = new Step(Axis.PARENT, NodeTest.ANODE, null);
parser_result = new Symbol(20, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 99: // FilterExpr ::= PrimaryExpr
{
Expression primary = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(6, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, primary);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 100: // FilterExpr ::= PrimaryExpr Predicates
{
Expression primary = (Expression) (parser_stack.get(parser_top - 1)).value;
@SuppressWarnings("unchecked")
Vector pp = (Vector) (parser_stack.get(parser_top - 0)).value;
Expression result = new FilterExpr(primary, pp);
parser_result = new Symbol(6, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 101: // PrimaryExpr ::= VariableReference
{
Expression vr = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(17, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, vr);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 102: // PrimaryExpr ::= LPAREN Expr RPAREN
{
Expression ex = (Expression) (parser_stack.get(parser_top - 1)).value;
parser_result = new Symbol(17, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, ex);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 103: // PrimaryExpr ::= Literal
{
String string = (String) (parser_stack.get(parser_top - 0)).value;
/*
* If the string appears to have the syntax of a QName, store
* namespace info in the literal expression. This is used for
* element-available and function-available functions, among
* others. Also, the default namespace must be ignored.
*/
String namespace = null;
final int index = string.lastIndexOf(':');
if (index > 0) {
final String prefix = string.substring(0, index);
namespace = parser._symbolTable.lookupNamespace(prefix);
}
Expression result = (namespace == null) ? new LiteralExpr(string)
: new LiteralExpr(string, namespace);
parser_result = new Symbol(17, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 104: // PrimaryExpr ::= INT
{
Expression result = null;
Long num = (Long) (parser_stack.get(parser_top - 0)).value;
if (num < Integer.MIN_VALUE || num > Integer.MAX_VALUE) {
result = new RealExpr(num);
} else if (num.doubleValue() == -0) {
result = new RealExpr(num.doubleValue());
} else if (num.intValue() == 0) {
result = new IntExpr(num.intValue());
} else if (num.doubleValue() == 0.0) {
result = new RealExpr(num.doubleValue());
} else {
result = new IntExpr(num.intValue());
}
parser_result = new Symbol(17, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 105: // PrimaryExpr ::= REAL
{
Double num = (Double) (parser_stack.get(parser_top - 0)).value;
Expression result = new RealExpr(num);
parser_result = new Symbol(17, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 106: // PrimaryExpr ::= FunctionCall
{
Expression fc = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(17, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, fc);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 107: // VariableReference ::= DOLLAR VariableName
{
Expression result = null;
QName varName = (QName) (parser_stack.get(parser_top - 0)).value;
// An empty qname prefix for a variable or parameter reference
// should map to the null namespace and not the default URI.
SyntaxTreeNode node = parser.lookupName(varName);
if (node != null) {
if (node instanceof Variable) {
result = new VariableRef((Variable) node);
} else if (node instanceof Param) {
result = new ParameterRef((Param) node);
} else {
result = new UnresolvedRef(varName);
}
}
if (node == null) {
result = new UnresolvedRef(varName);
}
parser_result = new Symbol(15, (parser_stack.get(parser_top - 1)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 108: // FunctionCall ::= FunctionName LPAREN RPAREN
{
Expression result = null;
QName fname = (QName) (parser_stack.get(parser_top - 2)).value;
if (fname == parser.getQNameIgnoreDefaultNs("current")) {
result = new CurrentCall(fname);
} else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
result = new NumberCall(fname, XPathParser.EmptyArgs);
} else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
result = new StringCall(fname, XPathParser.EmptyArgs);
} else if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
result = new ConcatCall(fname, XPathParser.EmptyArgs);
} else if (fname == parser.getQNameIgnoreDefaultNs("true")) {
result = new BooleanExpr(true);
} else if (fname == parser.getQNameIgnoreDefaultNs("false")) {
result = new BooleanExpr(false);
} else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
result = new NameCall(fname);
} else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
result = new GenerateIdCall(fname, XPathParser.EmptyArgs);
} else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) {
result = new StringLengthCall(fname, XPathParser.EmptyArgs);
} else if (fname == parser.getQNameIgnoreDefaultNs("position")) {
result = new PositionCall(fname);
} else if (fname == parser.getQNameIgnoreDefaultNs("last")) {
result = new LastCall(fname);
} else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
result = new LocalNameCall(fname);
} else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
result = new NamespaceUriCall(fname);
} else {
result = new FunctionCall(fname, XPathParser.EmptyArgs);
}
parser_result = new Symbol(16, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 109: // FunctionCall ::= FunctionName LPAREN NonemptyArgumentList RPAREN
{
Expression result = null;
QName fname = (QName) (parser_stack.get(parser_top - 3)).value;
@SuppressWarnings("unchecked")
Vector argl = (Vector) (parser_stack.get(parser_top - 1)).value;
if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
result = new ConcatCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
result = new NumberCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("document")) {
parser.setMultiDocument(true);
result = new DocumentCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
result = new StringCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("boolean")) {
result = new BooleanCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
result = new NameCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
result = new GenerateIdCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("not")) {
result = new NotCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("format-number")) {
result = new FormatNumberCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("unparsed-entity-uri")) {
result = new UnparsedEntityUriCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("key")) {
result = new KeyCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("id")) {
result = new KeyCall(fname, argl);
parser.setHasIdCall(true);
} else if (fname == parser.getQNameIgnoreDefaultNs("ceiling")) {
result = new CeilingCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("round")) {
result = new RoundCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("floor")) {
result = new FloorCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("contains")) {
result = new ContainsCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) {
result = new StringLengthCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("starts-with")) {
result = new StartsWithCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("function-available")) {
result = new FunctionAvailableCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("element-available")) {
result = new ElementAvailableCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
result = new LocalNameCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("lang")) {
result = new LangCall(fname, argl);
} else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
result = new NamespaceUriCall(fname, argl);
} else if (fname == parser.getQName(Constants.TRANSLET_URI, "xsltc", "cast")) {
result = new CastCall(fname, argl);
} // Special case for extension function nodeset()
else if (fname.getLocalPart().equals("nodeset") || fname.getLocalPart().equals("node-set")) {
parser.setCallsNodeset(true); // implies MultiDOM
result = new FunctionCall(fname, argl);
} else {
result = new FunctionCall(fname, argl);
}
parser_result = new Symbol(16, (parser_stack.get(parser_top - 3)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 110: // NonemptyArgumentList ::= Argument
{
Expression arg = (Expression) (parser_stack.get(parser_top - 0)).value;
Vector temp = new Vector();
temp.add(arg);
parser_result = new Symbol(36, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, temp);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 111: // NonemptyArgumentList ::= Argument COMMA NonemptyArgumentList
{
Expression arg = (Expression) (parser_stack.get(parser_top - 2)).value;
@SuppressWarnings("unchecked")
Vector argl = (Vector) (parser_stack.get(parser_top - 0)).value;
argl.add(0, arg);
parser_result = new Symbol(36, (parser_stack.get(parser_top - 2)).left,
(parser_stack.get(parser_top - 0)).right, argl);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 112: // FunctionName ::= QName
{
QName fname = (QName) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(38, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, fname);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 113: // VariableName ::= QName
{
QName vname = (QName) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(39, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, vname);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 114: // Argument ::= Expr
{
Expression ex = (Expression) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(3, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, ex);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 115: // NodeTest ::= NameTest
{
Object nt = parser_stack.get(parser_top - 0).value;
parser_result = new Symbol(25, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, nt);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 116: // NodeTest ::= NODE
{
Object result = NodeTest.ANODE;
parser_result = new Symbol(25, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 117: // NodeTest ::= TEXT
{
Object result = NodeTest.TEXT;
parser_result = new Symbol(25, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 118: // NodeTest ::= COMMENT
{
Object result = NodeTest.COMMENT;
parser_result = new Symbol(25, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 119: // NodeTest ::= PIPARAM LPAREN Literal RPAREN
{
String l = (String) (parser_stack.get(parser_top - 1)).value;
QName name = parser.getQNameIgnoreDefaultNs("name");
Expression exp = new EqualityExpr(Operators.EQ,
new NameCall(name),
new LiteralExpr(l));
Vector predicates = new Vector();
predicates.add(new Predicate(exp));
Object result = new Step(Axis.CHILD, NodeTest.PI, predicates);
parser_result = new Symbol(25, (parser_stack.get(parser_top - 3)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 120: // NodeTest ::= PI
{
Object result = NodeTest.PI;
parser_result = new Symbol(25, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 121: // NameTest ::= STAR
{
Object result = null;
parser_result = new Symbol(26, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 122: // NameTest ::= QName
{
QName qn = (QName) (parser_stack.get(parser_top - 0)).value;
parser_result = new Symbol(26, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, qn);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 123: // QName ::= QNAME
{
String qname = (String) (parser_stack.get(parser_top - 0)).value;
QName result = parser.getQNameIgnoreDefaultNs(qname);
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 124: // QName ::= DIV
{
QName result = parser.getQNameIgnoreDefaultNs("div");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 125: // QName ::= MOD
{
QName result = parser.getQNameIgnoreDefaultNs("mod");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 126: // QName ::= KEY
{
QName result = parser.getQNameIgnoreDefaultNs("key");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 127: // QName ::= ANCESTOR
{
QName result = parser.getQNameIgnoreDefaultNs("child");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 128: // QName ::= ANCESTORORSELF
{
QName result = parser.getQNameIgnoreDefaultNs("ancestor-or-self");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 129: // QName ::= ATTRIBUTE
{
QName result = parser.getQNameIgnoreDefaultNs("attribute");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 130: // QName ::= CHILD
{
QName result = parser.getQNameIgnoreDefaultNs("child");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 131: // QName ::= DESCENDANT
{
QName result = parser.getQNameIgnoreDefaultNs("decendant");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 132: // QName ::= DESCENDANTORSELF
{
QName result = parser.getQNameIgnoreDefaultNs("decendant-or-self");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 133: // QName ::= FOLLOWING
{
QName result = parser.getQNameIgnoreDefaultNs("following");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 134: // QName ::= FOLLOWINGSIBLING
{
QName result = parser.getQNameIgnoreDefaultNs("following-sibling");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 135: // QName ::= NAMESPACE
{
QName result = parser.getQNameIgnoreDefaultNs("namespace");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 136: // QName ::= PARENT
{
QName result = parser.getQNameIgnoreDefaultNs("parent");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 137: // QName ::= PRECEDING
{
QName result = parser.getQNameIgnoreDefaultNs("preceding");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 138: // QName ::= PRECEDINGSIBLING
{
QName result = parser.getQNameIgnoreDefaultNs("preceding-sibling");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 139: // QName ::= SELF
{
QName result = parser.getQNameIgnoreDefaultNs("self");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 140: // QName ::= ID
{
QName result = parser.getQNameIgnoreDefaultNs("id");
parser_result = new Symbol(37, (parser_stack.get(parser_top - 0)).left,
(parser_stack.get(parser_top - 0)).right, result);
}
return parser_result;
/* . . . . . .*/
default:
throw new Exception(
"Invalid action number found in internal parse table");
}
}