Package com.singularsys.extensions.rewrite
Allow expression rewriting to be created and applied. Rules must implement
RewriteRuleI providing methods
boolean test(ASTFunNode node,Node children[])
and Node apply(ASTFunNode node,Node children[]).
The set of rewriting rules can be applied using the
RewriteVisitor.
For example
Jep jep = new Jep();
jep.setComponent(new DeepCopyVisitor());
jep.setComponent(new TreeUtils());
jep.setComponent(new SimplificationVisitor());
RewriteVisitor ev = new RewriteVisitor();
jep.setComponent(ev);
RewriteRuleI expand = new ExpandBrackets();
ev.add(expand); // Add the rule
jep.reinitializeComponents(); // reinitialize Jep
Node node = jep.parse("(a+b)*(c+d)");
Node expanded = ev.rewrite(node,false); // perform the rewriting
jep.println(expanded);
- Since:
- Jep 3.5 / Extensions 2.0
- See Also:
- Rewrite documentation
-
Interface Summary Interface Description RewriteRuleI Defines a rule for symbolic rewriting of an expressionRewriteVisitor.ConstantRuleI RewriteVisitor.VariableRuleI Define a rule which may modify a variable node. -
Class Summary Class Description AbstractRewrite Basic implementation for a RewriteRule.CollectPowers Collect powers together so thatx*x -> x^2andx^n*x -> x^(n+1).ExpandBrackets A rule which expands brackets (a+b)*(c+d) -> a*c+a*d+b*c+b*dExpandPower Expands powers (a+b)^2 -> a^2+2*a*b+b^2RewriteVisitor A visitor which allows rewrite rules to be added and applied.SmallNumberRule A rule where numbers very close to zero are replaces by zero.VariableShifter Replaces a variable "x" by "x + d" where d is a double value.