package eu.aniketos.pdplib; import org.jdom.Element; import eu.aniketos.spec.AExp; import eu.aniketos.spec.RExp; import eu.aniketos.spec.ROp; import eu.aniketos.spec.RConst; import eu.aniketos.spec.RInvocation; import eu.aniketos.spec.RIdentifier; import security.iit.pdp.EnvException; import security.iit.pdp.VarEnvironment; public abstract class RExpPDP extends RExp { /* public abstract Element toElement(); public static AExp generateAExp(Element e) { return Exp.generateAExp(e); }*/ public static RExpPDP generateRExpPDP(RExp rexp) { if(rexp instanceof ROp){ return new RExpOpPDP(rexp); } if(rexp instanceof RConst){ return new RExpConstPDP(rexp); } if(rexp instanceof RInvocation){ return new RExpInvocationPDP(rexp); } if(rexp instanceof RIdentifier){ return new RExpIdentifierPDP(rexp); } else return null; } /** * evaluate the aritmetical expression * @param env: the Environment * @return the evaluation * @throws EnvException */ public abstract double eval(VarEnvironment env) throws EnvException; }