KickJava   Java API By Example, From Geeks To Geeks.

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


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    * Diffrentiates a addition with respect to var.
18    * diff(y+z,x) -> diff(y,x)+diff(z,x)
19    */

20 public class AdditionDiffRule implements DiffRulesI
21 {
22   private String JavaDoc name;
23
24   private AdditionDiffRule() {}
25   public AdditionDiffRule(String JavaDoc inName)
26   {
27     //dv = inDv;
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         throw new ParseException("Too many children "+nchild+" for "+node+"\n");
40     return djep.getNodeFactory().buildOperatorNode(djep.getOperatorSet().getAdd(),dchildren[0],dchildren[1]);
41   }
42 }
43
Popular Tags