[kaffe] CVS kaffe (robilad): Resynced with GNU JAXP: further XPath fixes
Kaffe CVS
cvs-commits at kaffe.org
Wed Oct 20 11:08:38 PDT 2004
PatchSet 5316
Date: 2004/10/20 18:04:43
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU JAXP: further XPath fixes
2004-10-20 Dalibor Topic <robilad at kaffe.org>
* libraries/javalib/gnu/xml/xpath/XPathParser.y:
New file taken from GNU JAXP.
* libraries/javalib/gnu/xml/dom/DomXPathExpression.java,
libraries/javalib/gnu/xml/dom/DomXPathResult.java,
libraries/javalib/gnu/xml/xpath/Expr.java,
libraries/javalib/gnu/xml/xpath/FunctionCall.java,
libraries/javalib/gnu/xml/xpath/Index.java,
libraries/javalib/gnu/xml/xpath/NameTest.java,
libraries/javalib/gnu/xml/xpath/XPathParser.java,
libraries/javalib/gnu/xml/xpath/XPathTokenizer.java:
Resynced with GNU JAXP.
2004-10-18 Chris Burdess <dog at gnu.org>
* xpath: Number parsing fixes.
2004-10-17 Chris Burdess <dog at gnu.org>
* xpath: XPath function calls.
2004-10-18 Dalibor Topic <robilad at kaffe.org>
* sources/gnu/xml/xpath/Index.java: Added missing include.
(toString) Convert left and right hand side to strings
explicitely.
Members:
ChangeLog:1.2868->1.2869
libraries/javalib/gnu/xml/dom/DomXPathExpression.java:1.2->1.3
libraries/javalib/gnu/xml/dom/DomXPathResult.java:1.1->1.2
libraries/javalib/gnu/xml/xpath/Expr.java:1.1->1.2
libraries/javalib/gnu/xml/xpath/FunctionCall.java:1.1->1.2
libraries/javalib/gnu/xml/xpath/Index.java:1.1->1.2
libraries/javalib/gnu/xml/xpath/NameTest.java:1.1->1.2
libraries/javalib/gnu/xml/xpath/XPathParser.java:1.1->1.2
libraries/javalib/gnu/xml/xpath/XPathParser.y:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/XPathTokenizer.java:1.1->1.2
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2868 kaffe/ChangeLog:1.2869
--- kaffe/ChangeLog:1.2868 Wed Oct 20 16:47:11 2004
+++ kaffe/ChangeLog Wed Oct 20 18:04:43 2004
@@ -1,3 +1,32 @@
+2004-10-20 Dalibor Topic <robilad at kaffe.org>
+
+ * libraries/javalib/gnu/xml/xpath/XPathParser.y:
+ New file taken from GNU JAXP.
+
+ * libraries/javalib/gnu/xml/dom/DomXPathExpression.java,
+ libraries/javalib/gnu/xml/dom/DomXPathResult.java,
+ libraries/javalib/gnu/xml/xpath/Expr.java,
+ libraries/javalib/gnu/xml/xpath/FunctionCall.java,
+ libraries/javalib/gnu/xml/xpath/Index.java,
+ libraries/javalib/gnu/xml/xpath/NameTest.java,
+ libraries/javalib/gnu/xml/xpath/XPathParser.java,
+ libraries/javalib/gnu/xml/xpath/XPathTokenizer.java:
+ Resynced with GNU JAXP.
+
+ 2004-10-18 Chris Burdess <dog at gnu.org>
+
+ * xpath: Number parsing fixes.
+
+ 2004-10-17 Chris Burdess <dog at gnu.org>
+
+ * xpath: XPath function calls.
+
+ 2004-10-18 Dalibor Topic <robilad at kaffe.org>
+
+ * sources/gnu/xml/xpath/Index.java: Added missing include.
+ (toString) Convert left and right hand side to strings
+ explicitely.
+
2004-10-20 Guilhem Lavaux <guilhem at kaffe.org>
* kaffe/kaffevm/gc.h
Index: kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java
diff -u kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java:1.2 kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java:1.3
--- kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java:1.2 Mon Oct 18 20:19:46 2004
+++ kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java Wed Oct 20 18:04:46 2004
@@ -86,7 +86,6 @@
throw new XPathException (XPathException.INVALID_EXPRESSION_ERR,
e.getMessage ());
}
- System.out.println("expression="+this.expression);
}
public Object evaluate (Node contextNode, short type, Object result)
@@ -128,6 +127,11 @@
throw new XPathException (XPathException.TYPE_ERR, null);
}
return new DomXPathResult (val, type);
+ }
+
+ public String toString ()
+ {
+ return getClass ().getName () + "[expression=" + expression + "]";
}
}
Index: kaffe/libraries/javalib/gnu/xml/dom/DomXPathResult.java
diff -u kaffe/libraries/javalib/gnu/xml/dom/DomXPathResult.java:1.1 kaffe/libraries/javalib/gnu/xml/dom/DomXPathResult.java:1.2
--- kaffe/libraries/javalib/gnu/xml/dom/DomXPathResult.java:1.1 Mon Oct 18 20:19:46 2004
+++ kaffe/libraries/javalib/gnu/xml/dom/DomXPathResult.java Wed Oct 20 18:04:46 2004
@@ -198,8 +198,29 @@
public String toString ()
{
- return getClass ().getName () + "[type=" + type + ",value=" +
+ return getClass ().getName () + "[type=" + typeName (type) + ",value=" +
value + ']';
+ }
+
+ private String typeName (short type)
+ {
+ switch (type)
+ {
+ case XPathResult.BOOLEAN_TYPE:
+ return "BOOLEAN_TYPE";
+ case XPathResult.NUMBER_TYPE:
+ return "NUMBER_TYPE";
+ case XPathResult.STRING_TYPE:
+ return "STRING_TYPE";
+ case XPathResult.FIRST_ORDERED_NODE_TYPE:
+ return "FIRST_ORDERED_NODE_TYPE";
+ case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
+ return "UNORDERED_NODE_ITERATOR_TYPE";
+ case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
+ return "UNORDERED_NODE_SNAPSHOT_TYPE";
+ default:
+ return "(unknown)";
+ }
}
}
Index: kaffe/libraries/javalib/gnu/xml/xpath/Expr.java
diff -u kaffe/libraries/javalib/gnu/xml/xpath/Expr.java:1.1 kaffe/libraries/javalib/gnu/xml/xpath/Expr.java:1.2
--- kaffe/libraries/javalib/gnu/xml/xpath/Expr.java:1.1 Mon Oct 18 20:19:46 2004
+++ kaffe/libraries/javalib/gnu/xml/xpath/Expr.java Wed Oct 20 18:04:46 2004
@@ -68,8 +68,9 @@
*/
final double _last (Node context)
{
- int ret = context.hasChildNodes () ? 0 :
- context.getChildNodes ().getLength ();
+ Node parent = context.getParentNode ();
+ int ret = (parent == null || !parent.hasChildNodes ()) ? 0 :
+ parent.getChildNodes ().getLength ();
if (ret > 0)
{
ret++;
@@ -127,7 +128,8 @@
}
else
{
- Document doc = context.getOwnerDocument ();
+ Document doc = (context instanceof Document) ? (Document) context :
+ context.getOwnerDocument ();
String string = _string (context, object);
StringTokenizer st = new StringTokenizer (string, " \t\r\n");
while (st.hasMoreTokens ())
@@ -155,7 +157,8 @@
{
return context.getLocalName ();
}
- Document doc = context.getOwnerDocument ();
+ Document doc = (context instanceof Document) ? (Document) context :
+ context.getOwnerDocument ();
Node node = firstNode (doc, nodeSet);
return (node == null ) ? null : node.getLocalName ();
}
@@ -174,7 +177,8 @@
{
return context.getNamespaceURI ();
}
- Document doc = context.getOwnerDocument ();
+ Document doc = (context instanceof Document) ? (Document) context :
+ context.getOwnerDocument ();
Node node = firstNode (doc, nodeSet);
return (node == null ) ? null : node.getNamespaceURI ();
}
@@ -201,7 +205,8 @@
{
return context.getNodeName ();
}
- Document doc = context.getOwnerDocument ();
+ Document doc = (context instanceof Document) ? (Document) context :
+ context.getOwnerDocument ();
Node node = firstNode (doc, nodeSet);
return (node == null ) ? null : node.getNodeName ();
}
@@ -266,7 +271,8 @@
{
return "";
}
- Document doc = context.getOwnerDocument ();
+ Document doc = (context instanceof Document) ? (Document) context :
+ context.getOwnerDocument ();
Node node = firstNode (doc, nodeSet);
return (node == null) ? "" : stringValue (node);
}
Index: kaffe/libraries/javalib/gnu/xml/xpath/FunctionCall.java
diff -u kaffe/libraries/javalib/gnu/xml/xpath/FunctionCall.java:1.1 kaffe/libraries/javalib/gnu/xml/xpath/FunctionCall.java:1.2
--- kaffe/libraries/javalib/gnu/xml/xpath/FunctionCall.java:1.1 Mon Oct 18 20:19:46 2004
+++ kaffe/libraries/javalib/gnu/xml/xpath/FunctionCall.java Wed Oct 20 18:04:46 2004
@@ -38,6 +38,7 @@
package gnu.xml.xpath;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.w3c.dom.Node;
@@ -67,8 +68,381 @@
public Object evaluate (Node context)
{
- // TODO
- return null;
+ if ("last".equals (name))
+ {
+ return new Double (_last (context));
+ }
+ else if ("position".equals (name))
+ {
+ return new Double (_position (context));
+ }
+ else if ("count".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Collection)
+ {
+ Collection ns = (Collection) val;
+ return new Double (_count (context, ns));
+ }
+ }
+ }
+ else if ("id".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ return _id (context, val);
+ }
+ }
+ else if ("local-name".equals (name))
+ {
+
+ switch (args.size ())
+ {
+ case 0:
+ return _local_name (context, null);
+ case 1:
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Collection)
+ {
+ Collection ns = (Collection) val;
+ return _local_name (context, ns);
+ }
+ }
+ }
+ else if ("namespace-uri".equals (name))
+ {
+ switch (args.size ())
+ {
+ case 0:
+ return _namespace_uri (context, null);
+ case 1:
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Collection)
+ {
+ Collection ns = (Collection) val;
+ return _namespace_uri (context, ns);
+ }
+ }
+ }
+ else if ("name".equals (name))
+ {
+ switch (args.size ())
+ {
+ case 0:
+ return _name (context, null);
+ case 1:
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Collection)
+ {
+ Collection ns = (Collection) val;
+ return _name (context, ns);
+ }
+ }
+ }
+ else if ("string".equals (name))
+ {
+ switch (args.size ())
+ {
+ case 0:
+ return _string (context, null);
+ case 1:
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ return _string (context, val);
+ }
+ }
+ else if ("concat".equals (name))
+ {
+ int len = args.size ();
+ if (len >= 2)
+ {
+ StringBuffer buf = new StringBuffer ();
+ for (int i = 0; i < len; i++)
+ {
+ Expr arg = (Expr) args.get (i);
+ Object val = arg.evaluate (context);
+ if (val instanceof String)
+ {
+ buf.append ((String) val);
+ }
+ }
+ return buf.toString ();
+ }
+ }
+ else if ("starts-with".equals (name))
+ {
+ if (args.size () == 2)
+ {
+ Expr arg1 = (Expr) args.get (0);
+ Expr arg2 = (Expr) args.get (1);
+ Object val1 = arg1.evaluate (context);
+ Object val2 = arg2.evaluate (context);
+ if (val1 instanceof String && val2 instanceof String)
+ {
+ return _starts_with (context, (String) val1, (String) val2) ?
+ Boolean.TRUE : Boolean.FALSE;
+ }
+ }
+ }
+ else if ("contains".equals (name))
+ {
+ if (args.size () == 2)
+ {
+ Expr arg1 = (Expr) args.get (0);
+ Expr arg2 = (Expr) args.get (1);
+ Object val1 = arg1.evaluate (context);
+ Object val2 = arg2.evaluate (context);
+ if (val1 instanceof String && val2 instanceof String)
+ {
+ return _contains (context, (String) val1, (String) val2) ?
+ Boolean.TRUE : Boolean.FALSE;
+ }
+ }
+ }
+ else if ("substring-before".equals (name))
+ {
+ if (args.size () == 2)
+ {
+ Expr arg1 = (Expr) args.get (0);
+ Expr arg2 = (Expr) args.get (1);
+ Object val1 = arg1.evaluate (context);
+ Object val2 = arg2.evaluate (context);
+ if (val1 instanceof String && val2 instanceof String)
+ {
+ return _substring_before (context, (String) val1, (String) val2);
+ }
+ }
+ }
+ else if ("substring-after".equals (name))
+ {
+ if (args.size () == 2)
+ {
+ Expr arg1 = (Expr) args.get (0);
+ Expr arg2 = (Expr) args.get (1);
+ Object val1 = arg1.evaluate (context);
+ Object val2 = arg2.evaluate (context);
+ if (val1 instanceof String && val2 instanceof String)
+ {
+ return _substring_after (context, (String) val1, (String) val2);
+ }
+ }
+ }
+ else if ("substring".equals (name))
+ {
+ int len = args.size ();
+ if (len == 2 || len == 3)
+ {
+ Expr arg1 = (Expr) args.get (0);
+ Expr arg2 = (Expr) args.get (1);
+ Object val1 = arg1.evaluate (context);
+ Object val2 = arg2.evaluate (context);
+ if (val1 instanceof String && val2 instanceof Double)
+ {
+ String s = (String) val1;
+ double p = ((Double) val2).doubleValue ();
+ double l = (double) (s.length () + 1);
+ if (len == 3)
+ {
+ Expr arg3 = (Expr) args.get (2);
+ Object val3 = arg3.evaluate (context);
+ if (val3 instanceof Double)
+ {
+ l = ((Double) val3).doubleValue ();
+ }
+ }
+ return _substring (context, s, p, l);
+ }
+ }
+ }
+ else if ("string-length".equals (name))
+ {
+ switch (args.size ())
+ {
+ case 0:
+ return new Double (_string_length (context, null));
+ case 1:
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof String)
+ {
+ return new Double (_string_length (context, (String) val));
+ }
+ }
+ }
+ else if ("normalize-space".equals (name))
+ {
+ switch (args.size ())
+ {
+ case 0:
+ return _normalize_space (context, null);
+ case 1:
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof String)
+ {
+ return _normalize_space (context, (String) val);
+ }
+ }
+ }
+ else if ("translate".equals (name))
+ {
+ if (args.size () == 3)
+ {
+ Expr arg1 = (Expr) args.get (0);
+ Expr arg2 = (Expr) args.get (1);
+ Expr arg3 = (Expr) args.get (2);
+ Object val1 = arg1.evaluate (context);
+ Object val2 = arg2.evaluate (context);
+ Object val3 = arg3.evaluate (context);
+ if (val1 instanceof String && val2 instanceof String &&
+ val3 instanceof String)
+ {
+ return _translate (context, (String) val1, (String) val2,
+ (String) val3);
+ }
+ }
+ }
+ else if ("boolean".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ return _boolean (context, val) ? Boolean.TRUE : Boolean.FALSE;
+ }
+ }
+ else if ("not".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Boolean)
+ {
+ return ((Boolean) val).booleanValue () ?
+ Boolean.FALSE : Boolean.TRUE;
+ }
+ }
+ }
+ else if ("true".equals (name))
+ {
+ if (args.size () == 0)
+ {
+ return Boolean.TRUE;
+ }
+ }
+ else if ("false".equals (name))
+ {
+ if (args.size () == 0)
+ {
+ return Boolean.FALSE;
+ }
+ }
+ else if ("lang".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof String)
+ {
+ return _lang (context, (String) val) ? Boolean.TRUE :
+ Boolean.FALSE;
+ }
+ }
+ }
+ else if ("number".equals (name))
+ {
+ switch (args.size ())
+ {
+ case 0:
+ return new Double (_number (context, null));
+ case 1:
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ return new Double (_number (context, val));
+ }
+ }
+ else if ("sum".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Collection)
+ {
+ Collection ns = (Collection) val;
+ return new Double (_sum (context, ns));
+ }
+ }
+ }
+ else if ("floor".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Double)
+ {
+ double n = ((Double) val).doubleValue ();
+ return new Double (_floor (context, n));
+ }
+ }
+ }
+ else if ("ceiling".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Double)
+ {
+ double n = ((Double) val).doubleValue ();
+ return new Double (_ceiling (context, n));
+ }
+ }
+ }
+ else if ("round".equals (name))
+ {
+ if (args.size () == 1)
+ {
+ Expr arg = (Expr) args.get (0);
+ Object val = arg.evaluate (context);
+ if (val instanceof Double)
+ {
+ double n = ((Double) val).doubleValue ();
+ return new Double (_round (context, n));
+ }
+ }
+ }
+ throw new IllegalArgumentException ("Invalid function call: " +
+ toString ());
+ }
+
+ public String toString ()
+ {
+ StringBuffer buf = new StringBuffer ();
+ buf.append (name);
+ buf.append ('(');
+ int len = args.size ();
+ for (int i = 0; i < len; i++)
+ {
+ if (i > 0)
+ {
+ buf.append (',');
+ }
+ buf.append (args.get (i));
+ }
+ buf.append (')');
+ return buf.toString ();
}
}
Index: kaffe/libraries/javalib/gnu/xml/xpath/Index.java
diff -u kaffe/libraries/javalib/gnu/xml/xpath/Index.java:1.1 kaffe/libraries/javalib/gnu/xml/xpath/Index.java:1.2
--- kaffe/libraries/javalib/gnu/xml/xpath/Index.java:1.1 Mon Oct 18 20:19:46 2004
+++ kaffe/libraries/javalib/gnu/xml/xpath/Index.java Wed Oct 20 18:04:46 2004
@@ -82,7 +82,7 @@
public String toString ()
{
- return lhs.toString() + '[' + rhs.toString() + ']';
+ return lhs.toString () + "[" + rhs.toString () + "]";
}
}
Index: kaffe/libraries/javalib/gnu/xml/xpath/NameTest.java
diff -u kaffe/libraries/javalib/gnu/xml/xpath/NameTest.java:1.1 kaffe/libraries/javalib/gnu/xml/xpath/NameTest.java:1.2
--- kaffe/libraries/javalib/gnu/xml/xpath/NameTest.java:1.1 Mon Oct 18 20:19:46 2004
+++ kaffe/libraries/javalib/gnu/xml/xpath/NameTest.java Wed Oct 20 18:04:46 2004
@@ -62,6 +62,15 @@
boolean matches (Node node)
{
+ switch (node.getNodeType ())
+ {
+ case Node.DOCUMENT_TYPE_NODE:
+ case Node.ENTITY_NODE:
+ case Node.ENTITY_REFERENCE_NODE:
+ case Node.NOTATION_NODE:
+ // XPath doesn't recognise these
+ return false;
+ }
if (any)
{
return true;
Index: kaffe/libraries/javalib/gnu/xml/xpath/XPathParser.java
diff -u kaffe/libraries/javalib/gnu/xml/xpath/XPathParser.java:1.1 kaffe/libraries/javalib/gnu/xml/xpath/XPathParser.java:1.2
--- kaffe/libraries/javalib/gnu/xml/xpath/XPathParser.java:1.1 Mon Oct 18 20:19:46 2004
+++ kaffe/libraries/javalib/gnu/xml/xpath/XPathParser.java Wed Oct 20 18:04:46 2004
@@ -496,55 +496,55 @@
}
break;
case 31:
- // line 279 "XPathParser.y"
+ // line 280 "XPathParser.y"
{
- yyVal = new NodeTypeTest (((Short) yyVals[-2+yyTop]).shortValue ());
+ yyVal = new NodeTypeTest (Node.PROCESSING_INSTRUCTION_NODE, (String) yyVals[-1+yyTop]);
}
break;
case 32:
- // line 283 "XPathParser.y"
+ // line 285 "XPathParser.y"
{
- yyVal = new NodeTypeTest (Node.PROCESSING_INSTRUCTION_NODE, (String) yyVals[-1+yyTop]);
+ yyVal = new NodeTypeTest (((Short) yyVals[-1+yyTop]).shortValue ());
}
break;
case 33:
- // line 290 "XPathParser.y"
+ // line 292 "XPathParser.y"
{
yyVal = new ExpressionTest ((Expr) yyVals[-1+yyTop]);
}
break;
case 35:
- // line 298 "XPathParser.y"
+ // line 300 "XPathParser.y"
{
yyVal = new ParenthesizedExpr ((Expr) yyVals[-1+yyTop]);
}
break;
case 36:
- // line 302 "XPathParser.y"
+ // line 304 "XPathParser.y"
{
yyVal = new Constant (yyVals[0+yyTop]);
}
break;
case 37:
- // line 306 "XPathParser.y"
+ // line 308 "XPathParser.y"
{
yyVal = new Constant (yyVals[0+yyTop]);
}
break;
case 39:
- // line 314 "XPathParser.y"
+ // line 316 "XPathParser.y"
{
yyVal = new FunctionCall ((String) yyVals[-2+yyTop]);
}
break;
case 40:
- // line 318 "XPathParser.y"
+ // line 320 "XPathParser.y"
{
yyVal = new FunctionCall ((String) yyVals[-3+yyTop], (List) yyVals[-1+yyTop]);
}
break;
case 41:
- // line 325 "XPathParser.y"
+ // line 327 "XPathParser.y"
{
List list = new ArrayList ();
list.add (yyVals[0+yyTop]);
@@ -552,7 +552,7 @@
}
break;
case 42:
- // line 331 "XPathParser.y"
+ // line 333 "XPathParser.y"
{
List list = (List) yyVals[0+yyTop];
list.add (0, yyVals[-2+yyTop]);
@@ -560,19 +560,19 @@
}
break;
case 44:
- // line 341 "XPathParser.y"
+ // line 343 "XPathParser.y"
{
yyVal = new UnionExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop]);
}
break;
case 47:
- // line 350 "XPathParser.y"
+ // line 352 "XPathParser.y"
{
yyVal = new Step ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop]);
}
break;
case 48:
- // line 354 "XPathParser.y"
+ // line 356 "XPathParser.y"
{
Test nt = new NodeTypeTest ((short) 0);
Selector s = new Selector (Selector.DESCENDANT_OR_SELF,
@@ -582,7 +582,7 @@
}
break;
case 50:
- // line 366 "XPathParser.y"
+ // line 368 "XPathParser.y"
{
Test test = (Test) yyVals[0+yyTop];
Selector s = new Selector (Selector.SELF,
@@ -591,164 +591,164 @@
}
break;
case 52:
- // line 377 "XPathParser.y"
+ // line 379 "XPathParser.y"
{
yyVal = new OrExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop]);
}
break;
case 54:
- // line 385 "XPathParser.y"
+ // line 387 "XPathParser.y"
{
yyVal = new AndExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop]);
}
break;
case 56:
- // line 393 "XPathParser.y"
+ // line 395 "XPathParser.y"
{
yyVal = new EqualityExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], false);
}
break;
case 57:
- // line 397 "XPathParser.y"
+ // line 399 "XPathParser.y"
{
yyVal = new EqualityExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], true);
}
break;
case 59:
- // line 405 "XPathParser.y"
+ // line 407 "XPathParser.y"
{
yyVal = new RelationalExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], true, false);
}
break;
case 60:
- // line 409 "XPathParser.y"
+ // line 411 "XPathParser.y"
{
yyVal = new RelationalExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], false, false);
}
break;
case 61:
- // line 413 "XPathParser.y"
+ // line 415 "XPathParser.y"
{
yyVal = new RelationalExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], true, true);
}
break;
case 62:
- // line 417 "XPathParser.y"
+ // line 419 "XPathParser.y"
{
yyVal = new RelationalExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], false, true);
}
break;
case 64:
- // line 425 "XPathParser.y"
+ // line 427 "XPathParser.y"
{
yyVal = new ArithmeticExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], ArithmeticExpr.ADD);
}
break;
case 65:
- // line 429 "XPathParser.y"
+ // line 431 "XPathParser.y"
{
yyVal = new ArithmeticExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], ArithmeticExpr.SUBTRACT);
}
break;
case 67:
- // line 437 "XPathParser.y"
+ // line 439 "XPathParser.y"
{
yyVal = new ArithmeticExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], ArithmeticExpr.MULTIPLY);
}
break;
case 68:
- // line 441 "XPathParser.y"
+ // line 443 "XPathParser.y"
{
yyVal = new ArithmeticExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], ArithmeticExpr.DIVIDE);
}
break;
case 69:
- // line 445 "XPathParser.y"
+ // line 447 "XPathParser.y"
{
yyVal = new ArithmeticExpr ((Expr) yyVals[-2+yyTop], (Expr) yyVals[0+yyTop], ArithmeticExpr.MODULO);
}
break;
case 71:
- // line 453 "XPathParser.y"
+ // line 455 "XPathParser.y"
{
yyVal = new NegativeExpr ((Expr) yyVals[0+yyTop]);
}
break;
case 72:
- // line 480 "XPathParser.y"
+ // line 462 "XPathParser.y"
{
- yyVal = new Integer ((String) yyVals[0+yyTop]);
+ yyVal = new Double ((String) yyVals[0+yyTop] + ".0");
}
break;
case 73:
- // line 484 "XPathParser.y"
+ // line 466 "XPathParser.y"
{
- yyVal = new Double ((String) yyVals[-1+yyTop]);
+ yyVal = new Double ((String) yyVals[-1+yyTop] + ".0");
}
break;
case 74:
- // line 488 "XPathParser.y"
+ // line 470 "XPathParser.y"
{
- yyVal = new Double ((String) yyVals[-2+yyTop] + '.' + (String) yyVals[0+yyTop]);
+ yyVal = new Double ((String) yyVals[-2+yyTop] + "." + (String) yyVals[0+yyTop]);
}
break;
case 75:
- // line 492 "XPathParser.y"
+ // line 474 "XPathParser.y"
{
- yyVal = new Double ('0' + '.' + (String) yyVals[0+yyTop]);
+ yyVal = new Double ("0." + (String) yyVals[0+yyTop]);
}
break;
case 77:
- // line 540 "XPathParser.y"
+ // line 503 "XPathParser.y"
{
Object value = bindings.get ((String) yyVals[0+yyTop]);
yyVal = new Constant (value);
}
break;
case 78:
- // line 548 "XPathParser.y"
+ // line 511 "XPathParser.y"
{
yyVal = new NameTest (null, true, true);
}
break;
case 79:
- // line 552 "XPathParser.y"
+ // line 515 "XPathParser.y"
{
yyVal = new NameTest ((String) yyVals[-2+yyTop], true, false);
}
break;
case 80:
- // line 556 "XPathParser.y"
+ // line 519 "XPathParser.y"
{
yyVal = new NameTest ((String) yyVals[0+yyTop], false, false);
}
break;
case 82:
- // line 564 "XPathParser.y"
+ // line 527 "XPathParser.y"
{
yyVal = (String) yyVals[-2+yyTop] + ':' + (String) yyVals[0+yyTop];
}
break;
case 83:
- // line 571 "XPathParser.y"
+ // line 534 "XPathParser.y"
{
yyVal = new Short (Node.COMMENT_NODE);
}
break;
case 84:
- // line 575 "XPathParser.y"
+ // line 538 "XPathParser.y"
{
yyVal = new Short (Node.TEXT_NODE);
}
break;
case 85:
- // line 579 "XPathParser.y"
+ // line 542 "XPathParser.y"
{
yyVal = new Short (Node.PROCESSING_INSTRUCTION_NODE);
}
break;
case 86:
- // line 583 "XPathParser.y"
+ // line 546 "XPathParser.y"
{
yyVal = new Short ((short) 0);
}
@@ -804,7 +804,7 @@
1, 1, 1, 1, 2, 2, 1, 3, 3, 1,
2, 3, 1, 1, 1, 2, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 4, 3, 1, 3, 1, 1, 1, 3, 4,
+ 3, 2, 3, 1, 3, 1, 1, 1, 3, 4,
1, 3, 1, 3, 1, 1, 3, 3, 1, 2,
1, 3, 1, 3, 1, 3, 3, 1, 3, 3,
3, 3, 1, 3, 3, 1, 3, 3, 3, 1,
@@ -823,20 +823,20 @@
49, 34, 37, 38, 0, 0, 43, 0, 0, 0,
0, 0, 0, 66, 0, 0, 0, 0, 13, 0,
80, 0, 71, 0, 0, 77, 75, 0, 0, 0,
- 0, 0, 16, 0, 0, 0, 0, 0, 0, 50,
+ 0, 0, 16, 0, 32, 0, 0, 0, 0, 50,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 74, 82, 79, 35, 0, 0, 0, 8,
- 9, 0, 0, 31, 39, 0, 0, 44, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
- 68, 69, 32, 33, 0, 40, 42,
+ 0, 0, 74, 82, 79, 35, 0, 31, 0, 8,
+ 9, 0, 0, 39, 0, 0, 44, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
+ 69, 33, 0, 40, 42,
};
} /* End of class YyDefRedClass */
protected static final class YyDgotoClass {
- public static final short yyDgoto [] = { 106,
+ public static final short yyDgoto [] = { 105,
31, 32, 33, 34, 35, 36, 37, 38, 73, 39,
- 40, 41, 42, 43, 44, 45, 107, 46, 47, 48,
+ 40, 41, 42, 43, 44, 45, 106, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55,
};
} /* End of class YyDgotoClass */
@@ -846,17 +846,17 @@
public static final short yySindex [] = { -97,
0, -271, -267, -97, -239, -239, -97, -199, 0, -236,
-222, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -221, 0, 0, 0,
- -257, 0, -241, 0, 0, -205, -213, 0, 0, -201,
+ 0, 0, 0, 0, 0, 0, -218, 0, 0, 0,
+ -257, 0, -241, 0, 0, -205, -221, 0, 0, -194,
0, 0, 0, 0, -190, -185, 0, -238, -211, -234,
-255, -209, -275, 0, 0, -169, -250, -168, 0, -241,
- 0, -241, 0, -205, -187, 0, 0, -163, -97, -239,
- -239, -97, 0, -199, -166, -151, -43, -239, -239, 0,
+ 0, -241, 0, -205, -187, 0, 0, -167, -97, -239,
+ -239, -97, 0, -199, 0, -151, -43, -239, -239, 0,
-97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
*** Patch too long, truncated ***
More information about the kaffe
mailing list