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 <[EMAIL PROTECTED]> * 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 <[EMAIL PROTECTED]> * xpath: Number parsing fixes. 2004-10-17 Chris Burdess <[EMAIL PROTECTED]> * xpath: XPath function calls. 2004-10-18 Dalibor Topic <[EMAIL PROTECTED]> * 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 <[EMAIL PROTECTED]> + + * 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 <[EMAIL PROTECTED]> + + * xpath: Number parsing fixes. + + 2004-10-17 Chris Burdess <[EMAIL PROTECTED]> + + * xpath: XPath function calls. + + 2004-10-18 Dalibor Topic <[EMAIL PROTECTED]> + + * sources/gnu/xml/xpath/Index.java: Added missing include. + (toString) Convert left and right hand side to strings + explicitely. + 2004-10-20 Guilhem Lavaux <[EMAIL PROTECTED]> * 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 *** _______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe