KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lsmp > djep > djep > diffRules > SubtractDiffRule


1 /* @author rich
2  * Created on 04-Jul-2003
3  *
4  * This code is covered by a Creative Commons
5  * Attribution, Non Commercial, Share Alike license
6  * <a HREF="http://creativecommons.org/licenses/by-nc-sa/1.0">License</a>
7  */

8 package org.lsmp.djep.djep.diffRules;
9
10 import org.lsmp.djep.djep.DJep;
11 import org.lsmp.djep.djep.DiffRulesI;
12 import org.nfunk.jep.ASTFunNode;
13 import org.nfunk.jep.Node;
14 import org.nfunk.jep.ParseException;
15
16
17 /**
18      * Diffrentiates a subtaction with respect to var.
19      * diff(y-z,x) -> diff(y,x)-diff(z,x)
20      */

21   public class SubtractDiffRule implements DiffRulesI
22   {
23     private String JavaDoc name;
24
25     private SubtractDiffRule() {}
26     public SubtractDiffRule(String JavaDoc inName)
27     {
28       name = inName;
29     }
30
31     public String JavaDoc toString()
32     { return name + " \t\tdiff(f-g,x) -> diff(f,x)-diff(g,x)"; }
33     public String JavaDoc getName() { return name; }
34     
35     public Node differentiate(ASTFunNode node,String JavaDoc var,Node [] children,Node [] dchildren,DJep djep) throws ParseException
36     {
37       int nchild = node.jjtGetNumChildren();
38       if(nchild==2)
39           return djep.getNodeFactory().buildOperatorNode(djep.getOperatorSet().getSubtract(),dchildren[0],dchildren[1]);
40       else if(nchild==1)
41           return djep.getNodeFactory().buildOperatorNode(djep.getOperatorSet().getUMinus(),dchildren[0]);
42       else
43           throw new ParseException("Too many children "+nchild+" for "+node+"\n");
44     }
45   } /* end SubtractDiffRule */
46
Popular Tags