1 5 6 7 8 package com.hp.hpl.jena.rdql.parser; 9 10 11 import java.io.PrintWriter ; 12 import com.hp.hpl.jena.graph.query.IndexValues; 13 import com.hp.hpl.jena.graph.query.Expression ; 14 import com.hp.hpl.jena.rdql.*; 15 16 public class Q_UnaryMinus extends ExprNode implements ExprNumeric 17 { 18 Expr expr ; 19 private String printName = "unaryminus" ; 20 private String opSymbol = "-" ; 21 22 Q_UnaryMinus(int id) { super(id); } 23 24 Q_UnaryMinus(RDQLParser p, int id) { super(p, id); } 25 26 public NodeValue eval(Query q, IndexValues env) 27 { 28 NodeValue v = expr.eval(q, env) ; 29 30 if ( ! v.isNumber() ) 31 throw new EvalTypeException("Q_UnaryMinus: Wanted a number: got "+expr) ; 32 33 NodeValueSettable result ; 34 40 result = new WorkingVar() ; 41 42 if ( v.isInt() ) 43 result.setInt( - v.getInt() ) ; 44 else 45 result.setDouble( - v.getDouble() ) ; 46 47 return result ; 48 } 49 50 public void jjtClose() 51 { 52 int n = jjtGetNumChildren() ; 53 if ( n != 1 ) 54 throw new QueryException("Q_UnaryMinus: Wrong number of children: "+n) ; 55 expr = (Expr)jjtGetChild(0) ; 56 } 57 58 61 public boolean isApply() { return true ; } 62 public String getFun() { return super.constructURI(this.getClass().getName()) ; } 63 public int argCount() { return 1; } 64 public Expression getArg(int i) 65 { 66 if ( i == 0 && expr instanceof Expression ) 67 return (Expression)expr ; 68 return null; 69 } 70 71 public String asInfixString() { return QueryPrintUtils.asInfixString1(expr, printName, opSymbol) ; } 72 73 public String asPrefixString() { return QueryPrintUtils.asPrefixString(expr, null, printName, opSymbol) ; } 74 75 public void print(PrintWriter pw, int level) { QueryPrintUtils.print(pw, expr, null, printName, opSymbol, level) ; } 76 77 public String toString() { return asInfixString() ; } 78 } 79 80 106 | Popular Tags |